记得上下班打卡 | git大法好,push需谨慎

Commit 22507ddb authored by jiangxiulong's avatar jiangxiulong

share config

parent d7b0830d
......@@ -103,6 +103,9 @@ liquidnet:
secret: a1307fab0a5f2380086a7c636f7339ea
token: tftipg1427706847
aeskey: LwVpmpuOcl7Mi3mtfQgBol11MsmMCATIqbPgHrEpDzx
modernsky:
appid: wx769aa9167bef9ce2
secret: bebccc204b9472ba41661372b197eb81
applet:
zhengzai:
appid: wx4732efeaa2b08086
......
......@@ -104,6 +104,9 @@ liquidnet:
secret: a1307fab0a5f2380086a7c636f7339ea
token: tftipg1427706847
aeskey: LwVpmpuOcl7Mi3mtfQgBol11MsmMCATIqbPgHrEpDzx
modernsky:
appid: wx769aa9167bef9ce2
secret: bebccc204b9472ba41661372b197eb81
applet:
zhengzai:
appid: wx4732efeaa2b08086
......
......@@ -27,10 +27,5 @@ liquidnet:
endpoint: http://oss-cn-hangzhou.aliyuncs.com
accessKeyId: LTAI4FxrURzMvvu9reFgwY5o
accessKeySecret: Ym5tfAxOf2zX20MgjikLI3Wz3tlwVV
zhengzai-wechat:
appid: wx3498304dda39c5a1
secret: a1307fab0a5f2380086a7c636f7339ea
modernsky-wechat:
appid: wx769aa9167bef9ce2
secret: bebccc204b9472ba41661372b197eb81
#以下为spring各环境个性配置
......@@ -27,11 +27,5 @@ liquidnet:
endpoint: http://oss-cn-hangzhou.aliyuncs.com
accessKeyId: LTAI4FxrURzMvvu9reFgwY5o
accessKeySecret: Ym5tfAxOf2zX20MgjikLI3Wz3tlwVV
zhengzai-wechat:
appid: wx3498304dda39c5a1
secret: a1307fab0a5f2380086a7c636f7339ea
modernsky-wechat:
appid: wx769aa9167bef9ce2
secret: bebccc204b9472ba41661372b197eb81
#以下为spring各环境个性配置
package com.liquidnet.service.platform.config;
import me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.StringRedisTemplate;
import javax.annotation.PostConstruct;
@Configuration
public class WechatMpConfigure {
private static String appidZhengzai;
private static String secretZhengzai;
private static String tokenZhengzai;
private static String aeskeyZhengzai;
private static String appidModernsky;
private static String secretModernsky;
@Value("${liquidnet.wechat.service.zhengzai.appid}")
public void setAppidZhengzai(String appidZhengzai) {
WechatMpConfigure.appidZhengzai = appidZhengzai;
}
@Value("${liquidnet.wechat.service.zhengzai.secret}")
public void setSecretZhengzai(String secretZhengzai) {
WechatMpConfigure.secretZhengzai = secretZhengzai;
}
@Value("${liquidnet.wechat.service.zhengzai.token}")
public void setTokenZhengzai(String tokenZhengzai) {
WechatMpConfigure.tokenZhengzai = tokenZhengzai;
}
@Value("${liquidnet.wechat.service.zhengzai.aeskey}")
public void setAeskeyZhengzai(String aeskeyZhengzai) {
WechatMpConfigure.aeskeyZhengzai = aeskeyZhengzai;
}
@Value("${liquidnet.wechat.service.modernsky.appid}")
public void setAppidModernsky(String appidModernsky) {
WechatMpConfigure.appidModernsky = appidModernsky;
}
@Value("${liquidnet.wechat.service.modernsky.secret}")
public void setSecretModernsky(String secretModernsky) {
WechatMpConfigure.secretModernsky = secretModernsky;
}
private WxMpService wxMpZhengzaiService;
private WxMpService wxMpModernskyService;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@PostConstruct
public void init() {
wxMpZhengzaiService = new WxMpServiceImpl() {
{
RedisTemplateWxRedisOps redisTemplateWxRedisOps = new RedisTemplateWxRedisOps(stringRedisTemplate);
WxMpRedisConfigImpl wxMpDefaultConfig = new WxMpRedisConfigImpl(redisTemplateWxRedisOps, "sweet:accessToken:service:zhengzai");
wxMpDefaultConfig.setAppId(appidZhengzai);
wxMpDefaultConfig.setSecret(secretZhengzai);
wxMpDefaultConfig.setToken(tokenZhengzai);
wxMpDefaultConfig.setAesKey(aeskeyZhengzai);
this.setWxMpConfigStorage(wxMpDefaultConfig);
}
};
wxMpModernskyService = new WxMpServiceImpl() {
{
RedisTemplateWxRedisOps redisTemplateWxRedisOps = new RedisTemplateWxRedisOps(stringRedisTemplate);
WxMpRedisConfigImpl wxMpDefaultConfig = new WxMpRedisConfigImpl(redisTemplateWxRedisOps, "sweet:accessToken:service:modernsky");
wxMpDefaultConfig.setAppId(appidModernsky);
wxMpDefaultConfig.setSecret(secretModernsky);
this.setWxMpConfigStorage(wxMpDefaultConfig);
}
};
}
public WxMpService getWxMpService(Integer pnum) {
switch (pnum) {
case 1:
return wxMpZhengzaiService;
case 2:
return wxMpModernskyService;
}
return null;
}
}
package com.liquidnet.service.platform.controller.basicServices;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.platform.config.WechatMpConfigure;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.bean.WxJsapiSignature;
import me.chanjar.weixin.common.enums.TicketType;
import me.chanjar.weixin.mp.api.WxMpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Formatter;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
* <p>
* 阿里云上传
......@@ -35,35 +21,34 @@ import java.util.UUID;
* @author jiangxiulong
* @since 2021-07-09
*/
@Slf4j
@Api(tags = "basicServices")
@RestController
@RequestMapping("basicServices/wechatShareSign")
public class WechatShareController {
@Value("${liquidnet.zhengzai-wechat.appid}")
private String zhengzaiAppid;
@Value("${liquidnet.zhengzai-wechat.secret}")
private String zhengzaiSecret;
@Value("${liquidnet.modernsky-wechat.appid}")
private String modernskyAppid;
@Value("${liquidnet.modernsky-wechat.secret}")
private String modernskySecret;
@Autowired
private RedisUtil redisUtil;
WechatMpConfigure wechatMpConfigure;
@GetMapping("/zhengzai")
@ApiOperation("正在微信分享sign")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "url", value = "url地址 注意 URL 一定要动态获取,不能 hardcode", required = true),
})
public ResponseDto<Map<String, String>> zhengzai(@RequestParam String url) {
String accessToken = accessToken(zhengzaiAppid, zhengzaiSecret);
String jsapiTicket = jsapiTicket(zhengzaiAppid, accessToken);
Map<String, String> ret = sign(jsapiTicket, url, zhengzaiAppid);
return ResponseDto.success(ret);
public ResponseDto<WxJsapiSignature> zhengzai(@RequestParam String url) {
try {
WxMpService wxMpService = wechatMpConfigure.getWxMpService(1);
wxMpService.getWxMpConfigStorage().getAccessToken();
log.info("zhengzaiShare-isAccessTokenExpired:[{}] ", wxMpService.getWxMpConfigStorage().isAccessTokenExpired());
log.info("zhengzaiShare-getAccessToken:[{}] ", wxMpService.getWxMpConfigStorage().getAccessToken());
log.info("zhengzaiShare-isTicketExpired:[{}] ", wxMpService.getWxMpConfigStorage().isTicketExpired(TicketType.JSAPI));
log.info("zhengzaiShare-Ticket:[{}] ", wxMpService.getWxMpConfigStorage().getTicket(TicketType.JSAPI));
WxJsapiSignature jsapiSignature = wxMpService.createJsapiSignature(url);
return ResponseDto.success(jsapiSignature);
} catch (Exception e) {
log.error("分享signZhengzaiException", e);
return ResponseDto.failure();
}
}
@GetMapping("/modernsky")
......@@ -71,123 +56,20 @@ public class WechatShareController {
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "url", value = "url地址 注意 URL 一定要动态获取,不能 hardcode", required = true),
})
public ResponseDto<Map<String, String>> modernsky(@RequestParam String url) {
String accessToken = accessToken(modernskyAppid, modernskySecret);
String jsapiTicket = jsapiTicket(modernskyAppid, accessToken);
Map<String, String> ret = sign(jsapiTicket, url, modernskyAppid);
return ResponseDto.success(ret);
}
public static Map<String, String> sign(String jsapi_ticket, String url, String appid) {
Map<String, String> ret = new HashMap();
String nonce_str = create_nonce_str();
String timestamp = create_timestamp();
String string1;
String signature = "";
//注意这里参数名必须全部小写,且必须有序
string1 = "jsapi_ticket=" + jsapi_ticket +
"&noncestr=" + nonce_str +
"&timestamp=" + timestamp +
"&url=" + url;
// System.out.println(string1);
try
{
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
crypt.reset();
crypt.update(string1.getBytes("UTF-8"));
signature = byteToHex(crypt.digest());
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
ret.put("url", url);
// ret.put("jsapi_ticket", jsapi_ticket);
ret.put("nonceStr", nonce_str);
ret.put("timestamp", timestamp);
ret.put("signature", signature);
ret.put("appid", appid);
return ret;
}
private static String byteToHex(final byte[] hash) {
Formatter formatter = new Formatter();
for (byte b : hash)
{
formatter.format("%02x", b);
}
String result = formatter.toString();
formatter.close();
return result;
}
private static String create_nonce_str() {
return UUID.randomUUID().toString();
}
private static String create_timestamp() {
return Long.toString(System.currentTimeMillis() / 1000);
}
private String accessToken(String appid, String secret) {
String accessTokenRedisKey = KylinRedisConst.WECHAT_SHARE_ACCESSTOKEN.concat(appid);
String accessToken = "";
if (!redisUtil.hasKey(accessTokenRedisKey)) {
// 请求微信获取 access_token
String accessTokenUrl = String.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", appid, secret);
JsonObject object = null;
try {
CloseableHttpClient client = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(accessTokenUrl);
HttpResponse httpResponse = client.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
String tokens = EntityUtils.toString(httpEntity, "utf-8");
Gson token_gson = new Gson();
object = token_gson.fromJson(tokens, JsonObject.class);
accessToken = object.get("access_token").toString().replaceAll("\"", "");
redisUtil.set(accessTokenRedisKey, accessToken, 7200);
} catch (Exception e) {
e.printStackTrace();
}
} else {
accessToken = (String) redisUtil.get(accessTokenRedisKey);
}
return accessToken;
}
private String jsapiTicket(String appid, String accessToken) {
String jsapiTicketRedisKey = KylinRedisConst.WECHAT_SHARE_JSAPI_TICKET.concat(appid);
String jsapiTicket = "";
if (!redisUtil.hasKey(jsapiTicketRedisKey)) {
// 获取 jsapi_ticket
String ticketUrl = String.format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=%s&type=jsapi", accessToken);
JsonObject object = null;
try {
CloseableHttpClient client = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(ticketUrl);
HttpResponse httpResponse = client.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
String tokens = EntityUtils.toString(httpEntity, "utf-8");
Gson token_gson = new Gson();
object = token_gson.fromJson(tokens, JsonObject.class);
jsapiTicket = object.get("ticket").toString().replaceAll("\"", "");
redisUtil.set(jsapiTicketRedisKey, jsapiTicket, 7200);
} catch (Exception e) {
e.printStackTrace();
}
} else {
jsapiTicket = (String) redisUtil.get(jsapiTicketRedisKey);
public ResponseDto<WxJsapiSignature> modernsky(@RequestParam String url) {
try {
WxMpService wxMpService = wechatMpConfigure.getWxMpService(2);
wxMpService.getWxMpConfigStorage().getAccessToken();
log.info("modernskyShare-isAccessTokenExpired:[{}] ", wxMpService.getWxMpConfigStorage().isAccessTokenExpired());
log.info("modernskyShare-getAccessToken:[{}] ", wxMpService.getWxMpConfigStorage().getAccessToken());
log.info("modernskyShare-isTicketExpired:[{}] ", wxMpService.getWxMpConfigStorage().isTicketExpired(TicketType.JSAPI));
log.info("modernskyShare-Ticket:[{}] ", wxMpService.getWxMpConfigStorage().getTicket(TicketType.JSAPI));
WxJsapiSignature jsapiSignature = wxMpService.createJsapiSignature(url);
return ResponseDto.success(jsapiSignature);
} catch (Exception e) {
log.error("分享signModernskyException", e);
return ResponseDto.failure();
}
return jsapiTicket;
}
}
......@@ -22,7 +22,6 @@ public class WechatMpConfigure {
public void setAppidZhengzai(String appidZhengzai) {
WechatMpConfigure.appidZhengzai = appidZhengzai;
}
@Value("${liquidnet.wechat.service.zhengzai.secret}")
public void setSecretZhengzai(String secretZhengzai) {
WechatMpConfigure.secretZhengzai = secretZhengzai;
......
package com.liquidnet.service.sweet.handler;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.entity.SweetWechatUser;
import com.liquidnet.service.sweet.mapper.SweetWechatUserMapper;
import com.liquidnet.service.sweet.service.impl.SweetWechatTemplateServiceImpl;
import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
......@@ -37,8 +35,6 @@ import java.util.Map;
@Component
@Slf4j
public class SubscribeHandler implements WxMpMessageHandler {
@Autowired
private SweetWechatUserMapper sweetWechatUserMapper;
@Autowired
private RedisDataUtils redisDataUtils;
@Autowired
......
......@@ -4,7 +4,6 @@ import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.entity.SweetWechatUser;
import com.liquidnet.service.sweet.mapper.SweetWechatUserMapper;
import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
import lombok.extern.slf4j.Slf4j;
......@@ -34,8 +33,6 @@ import java.util.Map;
@Slf4j
public class UnsubscribeHandler implements WxMpMessageHandler {
@Autowired
private SweetWechatUserMapper sweetWechatUserMapper;
@Autowired
private RedisDataUtils redisDataUtils;
@Autowired
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment