|
|
|
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;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|