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

Commit 22507ddb authored by jiangxiulong's avatar jiangxiulong

share config

parent d7b0830d
...@@ -103,6 +103,9 @@ liquidnet: ...@@ -103,6 +103,9 @@ liquidnet:
secret: a1307fab0a5f2380086a7c636f7339ea secret: a1307fab0a5f2380086a7c636f7339ea
token: tftipg1427706847 token: tftipg1427706847
aeskey: LwVpmpuOcl7Mi3mtfQgBol11MsmMCATIqbPgHrEpDzx aeskey: LwVpmpuOcl7Mi3mtfQgBol11MsmMCATIqbPgHrEpDzx
modernsky:
appid: wx769aa9167bef9ce2
secret: bebccc204b9472ba41661372b197eb81
applet: applet:
zhengzai: zhengzai:
appid: wx4732efeaa2b08086 appid: wx4732efeaa2b08086
......
...@@ -104,6 +104,9 @@ liquidnet: ...@@ -104,6 +104,9 @@ liquidnet:
secret: a1307fab0a5f2380086a7c636f7339ea secret: a1307fab0a5f2380086a7c636f7339ea
token: tftipg1427706847 token: tftipg1427706847
aeskey: LwVpmpuOcl7Mi3mtfQgBol11MsmMCATIqbPgHrEpDzx aeskey: LwVpmpuOcl7Mi3mtfQgBol11MsmMCATIqbPgHrEpDzx
modernsky:
appid: wx769aa9167bef9ce2
secret: bebccc204b9472ba41661372b197eb81
applet: applet:
zhengzai: zhengzai:
appid: wx4732efeaa2b08086 appid: wx4732efeaa2b08086
......
...@@ -27,10 +27,5 @@ liquidnet: ...@@ -27,10 +27,5 @@ liquidnet:
endpoint: http://oss-cn-hangzhou.aliyuncs.com endpoint: http://oss-cn-hangzhou.aliyuncs.com
accessKeyId: LTAI4FxrURzMvvu9reFgwY5o accessKeyId: LTAI4FxrURzMvvu9reFgwY5o
accessKeySecret: Ym5tfAxOf2zX20MgjikLI3Wz3tlwVV accessKeySecret: Ym5tfAxOf2zX20MgjikLI3Wz3tlwVV
zhengzai-wechat:
appid: wx3498304dda39c5a1
secret: a1307fab0a5f2380086a7c636f7339ea
modernsky-wechat:
appid: wx769aa9167bef9ce2
secret: bebccc204b9472ba41661372b197eb81
#以下为spring各环境个性配置 #以下为spring各环境个性配置
...@@ -27,11 +27,5 @@ liquidnet: ...@@ -27,11 +27,5 @@ liquidnet:
endpoint: http://oss-cn-hangzhou.aliyuncs.com endpoint: http://oss-cn-hangzhou.aliyuncs.com
accessKeyId: LTAI4FxrURzMvvu9reFgwY5o accessKeyId: LTAI4FxrURzMvvu9reFgwY5o
accessKeySecret: Ym5tfAxOf2zX20MgjikLI3Wz3tlwVV accessKeySecret: Ym5tfAxOf2zX20MgjikLI3Wz3tlwVV
zhengzai-wechat:
appid: wx3498304dda39c5a1
secret: a1307fab0a5f2380086a7c636f7339ea
modernsky-wechat:
appid: wx769aa9167bef9ce2
secret: bebccc204b9472ba41661372b197eb81
#以下为spring各环境个性配置 #以下为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; 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.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.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.http.HttpEntity; import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpResponse; import me.chanjar.weixin.common.bean.WxJsapiSignature;
import org.apache.http.client.methods.HttpGet; import me.chanjar.weixin.common.enums.TicketType;
import org.apache.http.impl.client.CloseableHttpClient; import me.chanjar.weixin.mp.api.WxMpService;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*; 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> * <p>
* 阿里云上传 * 阿里云上传
...@@ -35,35 +21,34 @@ import java.util.UUID; ...@@ -35,35 +21,34 @@ import java.util.UUID;
* @author jiangxiulong * @author jiangxiulong
* @since 2021-07-09 * @since 2021-07-09
*/ */
@Slf4j
@Api(tags = "basicServices") @Api(tags = "basicServices")
@RestController @RestController
@RequestMapping("basicServices/wechatShareSign") @RequestMapping("basicServices/wechatShareSign")
public class WechatShareController { 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 @Autowired
private RedisUtil redisUtil; WechatMpConfigure wechatMpConfigure;
@GetMapping("/zhengzai") @GetMapping("/zhengzai")
@ApiOperation("正在微信分享sign") @ApiOperation("正在微信分享sign")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "url", value = "url地址 注意 URL 一定要动态获取,不能 hardcode", required = true), @ApiImplicitParam(type = "query", dataType = "String", name = "url", value = "url地址 注意 URL 一定要动态获取,不能 hardcode", required = true),
}) })
public ResponseDto<Map<String, String>> zhengzai(@RequestParam String url) { public ResponseDto<WxJsapiSignature> zhengzai(@RequestParam String url) {
String accessToken = accessToken(zhengzaiAppid, zhengzaiSecret); try {
String jsapiTicket = jsapiTicket(zhengzaiAppid, accessToken); WxMpService wxMpService = wechatMpConfigure.getWxMpService(1);
wxMpService.getWxMpConfigStorage().getAccessToken();
Map<String, String> ret = sign(jsapiTicket, url, zhengzaiAppid); log.info("zhengzaiShare-isAccessTokenExpired:[{}] ", wxMpService.getWxMpConfigStorage().isAccessTokenExpired());
return ResponseDto.success(ret); 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") @GetMapping("/modernsky")
...@@ -71,123 +56,20 @@ public class WechatShareController { ...@@ -71,123 +56,20 @@ public class WechatShareController {
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "url", value = "url地址 注意 URL 一定要动态获取,不能 hardcode", required = true), @ApiImplicitParam(type = "query", dataType = "String", name = "url", value = "url地址 注意 URL 一定要动态获取,不能 hardcode", required = true),
}) })
public ResponseDto<Map<String, String>> modernsky(@RequestParam String url) { public ResponseDto<WxJsapiSignature> 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 { try {
CloseableHttpClient client = HttpClients.createDefault(); WxMpService wxMpService = wechatMpConfigure.getWxMpService(2);
HttpGet httpGet = new HttpGet(ticketUrl); wxMpService.getWxMpConfigStorage().getAccessToken();
HttpResponse httpResponse = client.execute(httpGet); log.info("modernskyShare-isAccessTokenExpired:[{}] ", wxMpService.getWxMpConfigStorage().isAccessTokenExpired());
HttpEntity httpEntity = httpResponse.getEntity(); log.info("modernskyShare-getAccessToken:[{}] ", wxMpService.getWxMpConfigStorage().getAccessToken());
String tokens = EntityUtils.toString(httpEntity, "utf-8"); log.info("modernskyShare-isTicketExpired:[{}] ", wxMpService.getWxMpConfigStorage().isTicketExpired(TicketType.JSAPI));
Gson token_gson = new Gson(); log.info("modernskyShare-Ticket:[{}] ", wxMpService.getWxMpConfigStorage().getTicket(TicketType.JSAPI));
object = token_gson.fromJson(tokens, JsonObject.class); WxJsapiSignature jsapiSignature = wxMpService.createJsapiSignature(url);
jsapiTicket = object.get("ticket").toString().replaceAll("\"", ""); return ResponseDto.success(jsapiSignature);
redisUtil.set(jsapiTicketRedisKey, jsapiTicket, 7200);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); log.error("分享signModernskyException", e);
} return ResponseDto.failure();
} else {
jsapiTicket = (String) redisUtil.get(jsapiTicketRedisKey);
} }
return jsapiTicket;
} }
} }
...@@ -22,7 +22,6 @@ public class WechatMpConfigure { ...@@ -22,7 +22,6 @@ public class WechatMpConfigure {
public void setAppidZhengzai(String appidZhengzai) { public void setAppidZhengzai(String appidZhengzai) {
WechatMpConfigure.appidZhengzai = appidZhengzai; WechatMpConfigure.appidZhengzai = appidZhengzai;
} }
@Value("${liquidnet.wechat.service.zhengzai.secret}") @Value("${liquidnet.wechat.service.zhengzai.secret}")
public void setSecretZhengzai(String secretZhengzai) { public void setSecretZhengzai(String secretZhengzai) {
WechatMpConfigure.secretZhengzai = secretZhengzai; WechatMpConfigure.secretZhengzai = secretZhengzai;
......
package com.liquidnet.service.sweet.handler; 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.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil; import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator; import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.entity.SweetWechatUser; 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.service.impl.SweetWechatTemplateServiceImpl;
import com.liquidnet.service.sweet.utils.QueueUtils; import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.RedisDataUtils; import com.liquidnet.service.sweet.utils.RedisDataUtils;
...@@ -37,8 +35,6 @@ import java.util.Map; ...@@ -37,8 +35,6 @@ import java.util.Map;
@Component @Component
@Slf4j @Slf4j
public class SubscribeHandler implements WxMpMessageHandler { public class SubscribeHandler implements WxMpMessageHandler {
@Autowired
private SweetWechatUserMapper sweetWechatUserMapper;
@Autowired @Autowired
private RedisDataUtils redisDataUtils; private RedisDataUtils redisDataUtils;
@Autowired @Autowired
......
...@@ -4,7 +4,6 @@ import com.liquidnet.commons.lang.util.CollectionUtil; ...@@ -4,7 +4,6 @@ import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.entity.SweetWechatUser; 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.QueueUtils;
import com.liquidnet.service.sweet.utils.RedisDataUtils; import com.liquidnet.service.sweet.utils.RedisDataUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -34,8 +33,6 @@ import java.util.Map; ...@@ -34,8 +33,6 @@ import java.util.Map;
@Slf4j @Slf4j
public class UnsubscribeHandler implements WxMpMessageHandler { public class UnsubscribeHandler implements WxMpMessageHandler {
@Autowired
private SweetWechatUserMapper sweetWechatUserMapper;
@Autowired @Autowired
private RedisDataUtils redisDataUtils; private RedisDataUtils redisDataUtils;
@Autowired @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