From 2ed8aad0f1707a167d544d9238ce00d8b5aca4f3 Mon Sep 17 00:00:00 2001 From: zxc <954985706@qq.com> Date: Tue, 7 Jul 2020 14:55:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=AC=AC=E4=B8=89=E6=96=B9?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- epmet-gateway/pom.xml | 2 +- .../epmet/constant/ThirdPlatformConstant.java | 17 +++ .../form/ComponentVerifyTicketFormDTO.java | 35 +++++ .../form/WeChatPlatformAuthCodeFormDTO.java | 25 +++ .../epmet-third-platform-server/pom.xml | 12 +- .../com/epmet/constant/ModuleConstant.java | 24 ++- .../ComponentVerifyTicketController.java | 44 ++++-- .../main/java/com/epmet/redis/RedisThird.java | 45 ++++++ .../service/ComponentVerifyTicketService.java | 46 ++++++ .../epmet/service/DbyWechatExtService.java | 24 --- .../ComponentVerifyTicketServiceImpl.java | 144 ++++++++++++++++++ .../service/impl/DbyWechatExtServiceImpl.java | 59 ------- .../src/main/resources/bootstrap.yml | 17 +-- 13 files changed, 381 insertions(+), 113 deletions(-) create mode 100644 epmet-module/epmet-third-platform/epmet-third-platform-client/src/main/java/com/epmet/dto/form/ComponentVerifyTicketFormDTO.java create mode 100644 epmet-module/epmet-third-platform/epmet-third-platform-client/src/main/java/com/epmet/dto/form/WeChatPlatformAuthCodeFormDTO.java create mode 100644 epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/redis/RedisThird.java create mode 100644 epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/ComponentVerifyTicketService.java delete mode 100644 epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/DbyWechatExtService.java create mode 100644 epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java delete mode 100644 epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/impl/DbyWechatExtServiceImpl.java diff --git a/epmet-gateway/pom.xml b/epmet-gateway/pom.xml index 387ded533e..eec27085ba 100644 --- a/epmet-gateway/pom.xml +++ b/epmet-gateway/pom.xml @@ -187,7 +187,7 @@ - http://localhost:8109 + http://localhost:8110 diff --git a/epmet-module/epmet-third-platform/epmet-third-platform-client/src/main/java/com/epmet/constant/ThirdPlatformConstant.java b/epmet-module/epmet-third-platform/epmet-third-platform-client/src/main/java/com/epmet/constant/ThirdPlatformConstant.java index 09f8af7681..e047538a40 100644 --- a/epmet-module/epmet-third-platform/epmet-third-platform-client/src/main/java/com/epmet/constant/ThirdPlatformConstant.java +++ b/epmet-module/epmet-third-platform/epmet-third-platform-client/src/main/java/com/epmet/constant/ThirdPlatformConstant.java @@ -26,4 +26,21 @@ public interface ThirdPlatformConstant { */ String PLATFORM_COMPONENT_TOKEN = "****************"; + /** + * + */ + String API_COMPONENT_TOKEN_URl = "**************"; + + /** + * + */ + String API_CREATE_PREAUTHCODE_URL = "***************"; + + /** + * + */ + String API_QUERY_AUTH_URL = "**********"; + + + } diff --git a/epmet-module/epmet-third-platform/epmet-third-platform-client/src/main/java/com/epmet/dto/form/ComponentVerifyTicketFormDTO.java b/epmet-module/epmet-third-platform/epmet-third-platform-client/src/main/java/com/epmet/dto/form/ComponentVerifyTicketFormDTO.java new file mode 100644 index 0000000000..6093755bea --- /dev/null +++ b/epmet-module/epmet-third-platform/epmet-third-platform-client/src/main/java/com/epmet/dto/form/ComponentVerifyTicketFormDTO.java @@ -0,0 +1,35 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @CreateTime 2020/7/7 11:12 + */ +@Data +public class ComponentVerifyTicketFormDTO implements Serializable { + + private static final long serialVersionUID = -6547893374373422628L; + + /** + * 第三方平台 appid + */ + private String appId; + + /** + * 时间戳,单位:s + */ + private Integer CreateTime; + + /** + * 固定为:"component_verify_ticket" + */ + private String InfoType = "component_verify_ticket"; + + /** + * Ticket 内容 + */ + private String componentVerifyTicket; +} diff --git a/epmet-module/epmet-third-platform/epmet-third-platform-client/src/main/java/com/epmet/dto/form/WeChatPlatformAuthCodeFormDTO.java b/epmet-module/epmet-third-platform/epmet-third-platform-client/src/main/java/com/epmet/dto/form/WeChatPlatformAuthCodeFormDTO.java new file mode 100644 index 0000000000..1cd006b004 --- /dev/null +++ b/epmet-module/epmet-third-platform/epmet-third-platform-client/src/main/java/com/epmet/dto/form/WeChatPlatformAuthCodeFormDTO.java @@ -0,0 +1,25 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @CreateTime 2020/7/7 10:28 + */ +@Data +public class WeChatPlatformAuthCodeFormDTO implements Serializable { + + private static final long serialVersionUID = -9047434066325122697L; + + /** + * 预授权码 + */ + private String authCode; + + /** + * 有效期,单位:秒 + */ + private Integer expiresIn; +} diff --git a/epmet-module/epmet-third-platform/epmet-third-platform-server/pom.xml b/epmet-module/epmet-third-platform/epmet-third-platform-server/pom.xml index ecda6c12df..2ca9cbae36 100644 --- a/epmet-module/epmet-third-platform/epmet-third-platform-server/pom.xml +++ b/epmet-module/epmet-third-platform/epmet-third-platform-server/pom.xml @@ -93,6 +93,14 @@ + + + com.squareup.okhttp3 + okhttp + 4.3.1 + + + org.springframework.boot spring-boot-starter-test @@ -148,7 +156,7 @@ true - 8109 + 8110 dev @@ -180,7 +188,7 @@ true --> - 8109 + 8110 test diff --git a/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/constant/ModuleConstant.java b/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/constant/ModuleConstant.java index 79582996cf..4e220ae7d7 100644 --- a/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/constant/ModuleConstant.java +++ b/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/constant/ModuleConstant.java @@ -6,19 +6,29 @@ package com.epmet.constant; */ public interface ModuleConstant { - String START_RECEIVE = "==============================开始授权事件接收URL================================="; - String TICKET_KEY = "ComponentVerifyTicket"; String TICKET_UNDERLINE_KEY = "component_verify_ticket"; + String SUCCESS = "success"; + + String COMPONENT_APPID = "component_appid"; + + String COMPONENT_APPSECRET = "component_appsecret"; + + String COMPONENT_ACCESS_TOKEN = "component_access_token"; + + String PRE_AUTH_CODE = "pre_auth_code"; + + String AUTHORIZATION_CODE = "authorization_code"; + String AUTH_TICKET = "====================授权票据【ComponentVerifyTicket】:【%s】===================="; String ERROR_TICKET = "微信开放平台,第三方平台获取【验证票据】失败"; String END_TICKET = "==============================结束授权事件接收URL================================="; - String SUCCESS = "success"; + String START_RECEIVE = "==============================开始授权事件接收URL================================="; String URL_TICKET = "授权事件接收URL,验证票据"; @@ -26,4 +36,12 @@ public interface ModuleConstant { String ERROR_URL_TICKET = "第三方平台授权事件接收URL,验证票据异常"; + String SUCCESS_ACCESS_TOKEN = "====================结束执行定时任务获取令牌【component_access_token】===================="; + + String FAILURE_ACCESS_TOKEN = "微信开放平台,第三方平台获取【令牌】失败"; + + String TICKET_REDIS_KEY = "epmet:wechartthird:componentverifyticket"; + + + } diff --git a/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/controller/ComponentVerifyTicketController.java b/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/controller/ComponentVerifyTicketController.java index 290e7a1489..3de7de9d66 100644 --- a/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/controller/ComponentVerifyTicketController.java +++ b/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/controller/ComponentVerifyTicketController.java @@ -1,15 +1,16 @@ package com.epmet.controller; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.ThirdPlatformEventFormDTO; +import com.epmet.dto.form.WeChatPlatformAuthCodeFormDTO; import com.epmet.dto.result.ResultBean; -import com.epmet.service.DbyWechatExtService; -import com.epmet.constant.ModuleConstant; +import com.epmet.service.ComponentVerifyTicketService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @@ -23,16 +24,37 @@ import org.springframework.web.bind.annotation.RestController; public class ComponentVerifyTicketController { @Autowired - private DbyWechatExtService dbyWechatExtService; + private ComponentVerifyTicketService componentVerifyTicketService; @PostMapping(value = "/event") - public Result wechatPlatformEvent(@RequestBody ThirdPlatformEventFormDTO formDTO) { + public Result weChatPlatformEvent(@RequestBody ThirdPlatformEventFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, ThirdPlatformEventFormDTO.ThirdPlatForm.class); - ResultBean resultBean = new ResultBean(); - log.info(ModuleConstant.URL_TICKET); - resultBean.setData(dbyWechatExtService.parseRequest(formDTO)); - log.info(ModuleConstant.SUCCESS_TICKET); - return new Result().ok(resultBean); + componentVerifyTicketService.parseRequest(formDTO); + return new Result(); + } + + @PostMapping("ticketjob") + public Result ticketJob() { + componentVerifyTicketService.ticketJob(); + return new Result(); + } + + @PostMapping("preauthcode") + public Result preAuthCode(){ + componentVerifyTicketService.preAuthCode(); + return new Result(); + } + + /** + * @Description + * @param formDTO + * @author zxc + */ + @PostMapping(value = "/authcode") + public Result weChatPlatformAuthCode(@RequestBody WeChatPlatformAuthCodeFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); + componentVerifyTicketService.weChatPlatformAuthCode(formDTO); + return new Result(); } diff --git a/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/redis/RedisThird.java b/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/redis/RedisThird.java new file mode 100644 index 0000000000..9ba6820911 --- /dev/null +++ b/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/redis/RedisThird.java @@ -0,0 +1,45 @@ +package com.epmet.redis; + +import com.epmet.commons.tools.redis.RedisUtils; +import com.epmet.constant.ModuleConstant; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; + +import java.util.concurrent.TimeUnit; + +/** + * @Author zxc + * @CreateTime 2020/7/7 9:33 + */ +@Slf4j +@Component +public class RedisThird { + + @Autowired + private RedisUtils redisUtils; + @Autowired + private RedisTemplate redisTemplate; + + public void setComponentAccessToken (String accessToken){ + redisTemplate.opsForValue().set(ModuleConstant.COMPONENT_ACCESS_TOKEN, accessToken, 60 * 60 * 2, TimeUnit.SECONDS); + } + + public String getComponentAccessToken(String key){ + return redisTemplate.opsForValue().get(key).toString(); + } + + public String getComponentVerifyTicket(String key){ + return redisTemplate.opsForValue().get(key).toString(); + } + + public void setComponentVerifyTicket(String verifyTicket){ + redisTemplate.opsForValue().set(ModuleConstant.TICKET_REDIS_KEY+ModuleConstant.TICKET_UNDERLINE_KEY, verifyTicket, 60 * 10, TimeUnit.SECONDS); + } + + public void setPreAuthCode(String authCode){ + redisTemplate.opsForValue().set(ModuleConstant.PRE_AUTH_CODE, authCode, 60 * 10, TimeUnit.SECONDS); + } + +} diff --git a/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/ComponentVerifyTicketService.java b/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/ComponentVerifyTicketService.java new file mode 100644 index 0000000000..b1bbb6fb4d --- /dev/null +++ b/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/ComponentVerifyTicketService.java @@ -0,0 +1,46 @@ +package com.epmet.service; + +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.dto.form.ThirdPlatformEventFormDTO; +import com.epmet.dto.form.WeChatPlatformAuthCodeFormDTO; +import com.epmet.dto.result.ResultBean; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * @Author zxc + * @CreateTime 2020/7/6 11:19 + */ +public interface ComponentVerifyTicketService { + + /** + * 获得授权事件的票据 + * + * @param timestamp 时间戳 + * @param nonce 随机数 + * @param msgSignature 消息体签名 + * @param postData 消息体 + * @return 如果获得只需要返回 SUCCESS + * @Author zxc + */ + void parseRequest(ThirdPlatformEventFormDTO formDTO); + + /** + * @Description 定时获取 ticket + * @author zxc + */ + void ticketJob(); + + /** + * @Description 每个预授权码有效期为 10 分钟。需要先获取令牌才能调用 获取预授权码 + * @author zxc + */ + void preAuthCode(); + + /** + * @Description + * @param formDTO + * @author zxc + */ + void weChatPlatformAuthCode(WeChatPlatformAuthCodeFormDTO formDTO); + +} diff --git a/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/DbyWechatExtService.java b/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/DbyWechatExtService.java deleted file mode 100644 index d8cdef3e1c..0000000000 --- a/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/DbyWechatExtService.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.epmet.service; - -import com.epmet.dto.form.ThirdPlatformEventFormDTO; - -/** - * @Author zxc - * @CreateTime 2020/7/6 9:12 - */ -public interface DbyWechatExtService { - - /** - * 获得授权事件的票据 - * - * @param timestamp 时间戳 - * @param nonce 随机数 - * @param msgSignature 消息体签名 - * @param postData 消息体 - * @return 如果获得只需要返回 SUCCESS - * @Author zxc - */ - String parseRequest(ThirdPlatformEventFormDTO formDTO); - - -} diff --git a/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java b/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java new file mode 100644 index 0000000000..62ef4bef35 --- /dev/null +++ b/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java @@ -0,0 +1,144 @@ +package com.epmet.service.impl; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.constant.ModuleConstant; +import com.epmet.constant.ThirdPlatformConstant; +import com.epmet.dto.form.ThirdPlatformEventFormDTO; +import com.epmet.dto.form.WeChatPlatformAuthCodeFormDTO; +import com.epmet.exception.AesException; +import com.epmet.redis.RedisThird; +import com.epmet.service.ComponentVerifyTicketService; +import com.epmet.util.WXBizMsgCrypt; +import com.epmet.util.WXXmlToMapUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +import static com.epmet.constant.ThirdPlatformConstant.*; + +/** + * @Author zxc + * @CreateTime 2020/7/6 11:21 + */ +@Slf4j +@Service +public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketService { + + @Autowired + private RedisThird redisThird; + + /** + * @Description 获得授权事件的票据 + * @param formDTO + * @author zxc + */ + @Override + public void parseRequest(ThirdPlatformEventFormDTO formDTO) { + String msgSignature = formDTO.getMsgSignature(); + String nonce = formDTO.getNonce(); + String postData = formDTO.getPostData(); + String timeStamp = formDTO.getTimeStamp(); + log.info(ModuleConstant.START_RECEIVE); + try { + //这个类是微信官网提供的解密类,需要用到消息校验Token 消息加密Key和服务平台appid + WXBizMsgCrypt pc = new WXBizMsgCrypt(ThirdPlatformConstant.PLATFORM_COMPONENT_TOKEN, ThirdPlatformConstant.PLATFORM_AES_KEY, ThirdPlatformConstant.PLATFORM_APP_ID); + String xml = pc.decryptMsg(msgSignature, timeStamp, nonce, postData); + // 将xml转为map + Map result = WXXmlToMapUtil.xmlToMap(xml); + String componentVerifyTicket = MapUtils.getString(result,ModuleConstant.TICKET_KEY); + if (StringUtils.isNotEmpty(componentVerifyTicket)) { + // 存储平台授权票据,保存ticket + redisThird.setComponentVerifyTicket(componentVerifyTicket); + } else { + throw new RuntimeException(ModuleConstant.ERROR_TICKET); + } + } catch (AesException e) { + e.printStackTrace(); + } + log.info(ModuleConstant.END_TICKET); + } + + /** + * @Description 定时获取票据 + * @param + * @author zxc + */ + @Override + public void ticketJob() { + log.info("====================开始执行定时任务获取令牌【component_access_token】===================="); + Map reMap; + try { + // 核心定时器,每一个小时执行一次 + String componentVerifyTicket = redisThird.getComponentVerifyTicket(ModuleConstant.TICKET_UNDERLINE_KEY); + JSONObject jsonObject = new JSONObject(); + jsonObject.put(ModuleConstant.COMPONENT_APPID, PLATFORM_APP_ID); + jsonObject.put(ModuleConstant.COMPONENT_APPSECRET, PLATFORM_APP_SECRET); + jsonObject.put(ModuleConstant.TICKET_UNDERLINE_KEY, componentVerifyTicket); +// String post = OkHttpHelper.post(API_COMPONENT_TOKEN_URl, JSON.toJSONString(jsonObject)); + String post = null; + log.info("====================返回post结果:" + post); + HashMap hashMap = JSON.parseObject(post, HashMap.class); + String componentAccessToken = hashMap.get(ModuleConstant.COMPONENT_ACCESS_TOKEN); + if (StringUtils.isNotEmpty(componentAccessToken)) { + redisThird.setComponentAccessToken(componentAccessToken); + } else { + throw new RuntimeException(ModuleConstant.FAILURE_ACCESS_TOKEN); + } + } catch (Exception e) { + e.printStackTrace(); + } + log.info(ModuleConstant.SUCCESS_ACCESS_TOKEN); + } + + /** + * @Description 定时获取预授权码 + * @param + * @author zxc + */ + @Override + public void preAuthCode() { + log.info("====================开始执行定时任务获取预授权码【pre_auth_code】===================="); + try { +// String accessToken = redisTemplate.opsForValue().get(ModuleConstant.COMPONENT_ACCESS_TOKEN).toString(); + String accessToken = redisThird.getComponentAccessToken(ModuleConstant.COMPONENT_ACCESS_TOKEN); + JSONObject jsonObject = new JSONObject(); + jsonObject.put(ModuleConstant.COMPONENT_APPID, PLATFORM_APP_ID); +// String post = OkHttpHelper.post(API_CREATE_PREAUTHCODE_URL + accessToken, JSON.toJSONString(jsonObject)); + String post = null; + log.info("====================返回post结果:" + post); + HashMap hashMap = JSON.parseObject(post, HashMap.class); + String authCode = hashMap.get("pre_auth_code"); + if (StringUtils.isNotEmpty(authCode)) { + redisThird.setPreAuthCode(authCode); +// redisTemplate.opsForValue().set("pre_auth_code", authCode, 60 * 10, TimeUnit.SECONDS); + } else { + throw new RuntimeException("微信开放平台,第三方平台获取【预授权码】失败"); + } + } catch (Exception e) { + e.printStackTrace(); + } + log.info("====================结束执行定时任务获取预授权码【pre_auth_code】===================="); + } + + @Override + public void weChatPlatformAuthCode(WeChatPlatformAuthCodeFormDTO formDTO) { + String authCode = formDTO.getAuthCode(); + Integer expiresIn = formDTO.getExpiresIn(); + // 获取令牌【component_access_token】 + String accessToken = redisThird.getComponentAccessToken(ModuleConstant.COMPONENT_ACCESS_TOKEN); + // 使用授权码获取授权信息 + JSONObject jsonObject = new JSONObject(); + jsonObject.put(ModuleConstant.COMPONENT_APPID, PLATFORM_APP_ID); + jsonObject.put(ModuleConstant.AUTHORIZATION_CODE, authCode); +// String post = OkHttpHelper.post(API_QUERY_AUTH_URL + accessToken, JSON.toJSONString(jsonObject)); + // 重定向地址 +// response.sendRedirect("/wechat/authcode"); + } +} diff --git a/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/impl/DbyWechatExtServiceImpl.java b/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/impl/DbyWechatExtServiceImpl.java deleted file mode 100644 index 3a6b4c17dc..0000000000 --- a/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/impl/DbyWechatExtServiceImpl.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.epmet.service.impl; - -import com.epmet.constant.ThirdPlatformConstant; -import com.epmet.dto.form.ThirdPlatformEventFormDTO; -import com.epmet.exception.AesException; -import com.epmet.service.DbyWechatExtService; -import com.epmet.constant.ModuleConstant; -import com.epmet.util.WXBizMsgCrypt; -import com.epmet.util.WXXmlToMapUtil; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.stereotype.Service; - -import java.util.Map; -import java.util.concurrent.TimeUnit; - -/** - * @Author zxc - * @CreateTime 2020/7/6 9:13 - */ -@Slf4j -@Service -public class DbyWechatExtServiceImpl implements DbyWechatExtService { - - @Autowired - private RedisTemplate redisTemplate; - - @Override - public String parseRequest(ThirdPlatformEventFormDTO formDTO) { - String msgSignature = formDTO.getMsgSignature(); - String nonce = formDTO.getNonce(); - String postData = formDTO.getPostData(); - String timeStamp = formDTO.getTimeStamp(); - log.info(ModuleConstant.START_RECEIVE); - try { - //这个类是微信官网提供的解密类,需要用到消息校验Token 消息加密Key和服务平台appid - WXBizMsgCrypt pc = new WXBizMsgCrypt(ThirdPlatformConstant.PLATFORM_COMPONENT_TOKEN, ThirdPlatformConstant.PLATFORM_AES_KEY, ThirdPlatformConstant.PLATFORM_APP_ID); - String xml = pc.decryptMsg(msgSignature, timeStamp, nonce, postData); - // 将xml转为map - Map result = WXXmlToMapUtil.xmlToMap(xml); - String componentVerifyTicket = MapUtils.getString(result,ModuleConstant.TICKET_KEY); - if (StringUtils.isNotEmpty(componentVerifyTicket)) { - // 存储平台授权票据,保存ticket - redisTemplate.opsForValue().set(ModuleConstant.TICKET_UNDERLINE_KEY, componentVerifyTicket, 60 * 10, TimeUnit.SECONDS); - String verifyTicket = redisTemplate.opsForValue().get(ModuleConstant.TICKET_UNDERLINE_KEY).toString(); - log.info(String.format(ModuleConstant.AUTH_TICKET,verifyTicket)); - } else { - throw new RuntimeException(ModuleConstant.ERROR_TICKET); - } - } catch (AesException e) { - e.printStackTrace(); - } - log.info(ModuleConstant.END_TICKET); - return ModuleConstant.SUCCESS; - } -} diff --git a/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/resources/bootstrap.yml b/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/resources/bootstrap.yml index 6c385f79f8..5e2f47ba4a 100644 --- a/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/resources/bootstrap.yml +++ b/epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/resources/bootstrap.yml @@ -8,7 +8,7 @@ spring: allow-bean-definition-overriding: true application: name: epmet-third-platform-server - # dev|test|prod + # dev|test|prod profiles: active: dev jackson: @@ -31,9 +31,7 @@ spring: nacos: discovery: server-addr: @nacos.server-addr@ - #nacosռIDĬpublic namespace: @nacos.discovery.namespace@ - #Լעᵽעĵĵַ register-enabled: @nacos.register-enabled@ ip: @nacos.ip@ config: @@ -42,7 +40,6 @@ spring: namespace: @nacos.config.namespace@ group: @nacos.config.group@ file-extension: yaml - # Ǩƹflyway flyway: enabled: @spring.flyway.enabled@ locations: classpath:db/migration @@ -62,19 +59,14 @@ management: mybatis-plus: mapper-locations: classpath:/mapper/**/*.xml - #ʵɨ裬packageöŻ߷ֺŷָ typeAliasesPackage: com.epmet.entity global-config: - #ݿ db-config: - # AUTO:"ݿID", INPUT:"ûID", ID_WORKER:"ȫΨһID (ΨһID)", UUID:"ȫΨһID UUID"; id-type: ID_WORKER - #ֶβ IGNORED:"ж",NOT_NULL:" NULL ж"),NOT_EMPTY:"ǿж" field-strategy: NOT_NULL - #շ»ת column-underline: true banner: false - #ԭ + configuration: map-underscore-to-camel-case: true cache-enabled: false @@ -97,13 +89,12 @@ hystrix: execution: isolation: thread: - timeoutInMilliseconds: 60000 #ȱʡΪ1000 + timeoutInMilliseconds: 60000 ribbon: ReadTimeout: 300000 ConnectTimeout: 300000 -#pageHelperҳ pagehelper: helper-dialect: mysql - reasonable: false #ҳãҳΪ-1ԶתΪСҳ1 \ No newline at end of file + reasonable: false \ No newline at end of file