You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.5 KiB
Java

package com.jingcheng.template.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.jingcheng.template.mapper.WechatConfigMapper;
import com.jingcheng.template.model.WechatConfig;
import com.jingcheng.template.util.HttpRequestUtils;
import com.jingcheng.template.util.LogUtils;
import com.jingcheng.template.util.Sign;
import com.sun.org.apache.bcel.internal.generic.NEW;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.Map;
@Service
public class WeixinService{
@Value("${weixin.appId}")
private String appId;
@Value("${weixin.appSecret}")
private String appSecret;
@Value("${weixin.getAccessTokenUrl}")
private String getAccessTokenUrl;
@Value("${weixin.getTicketUrl}")
private String getTicketUrl;
@Resource
private WechatConfigMapper wechatConfigMapper;
Logger logger = LogUtils.getBussinessLogger();
/**
* 刷新accesstoken
* @return
*/
public void refreshAccessToken() {
String accessTokenUrl = getAccessTokenUrl + appId + "&secret=" + appSecret;
String result = HttpRequestUtils.sendGet(accessTokenUrl);
String accessToken = JSON.parseObject(result).getString("access_token");
WechatConfig wechatConfig = wechatConfigMapper.selectByPrimaryKey(1L);
wechatConfig.setAccessToken(accessToken);
wechatConfig.setUpdateDateTime(new Date());
wechatConfigMapper.updateByPrimaryKeySelective(wechatConfig);
}
/**
* 通过accessToken刷新ticket
*/
public String getTicket() {
WechatConfig wechatConfig = wechatConfigMapper.selectByPrimaryKey(1L);
String access_token = wechatConfig.getAccessToken();
String getTicketNewUrl = getTicketUrl + access_token + "&type=jsapi";
String ticketResult = HttpRequestUtils.sendGet(getTicketNewUrl);
JSONObject ticketJson = JSONObject.parseObject(ticketResult);
String jsapi_ticket = ticketJson.getString("ticket");
return jsapi_ticket;
}
public Map<String, String> getSign(String url) {
String jsapiTicket = getTicket();
logger.info("jsapiTicket:" + jsapiTicket);
Map<String, String> sign = Sign.sign(jsapiTicket, url);
sign.put("appId", appId);
logger.info("sign:" + sign);
return sign;
}
}