diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/CusWxController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/CusWxController.java index 30728d62a..d04cb42e2 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/CusWxController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/CusWxController.java @@ -2,14 +2,11 @@ package com.stdiet.web.controller.custom; import com.stdiet.common.core.controller.BaseController; import com.stdiet.common.core.domain.AjaxResult; -import com.stdiet.custom.domain.WxXmlData; import com.stdiet.custom.service.ISysWxService; -import com.thoughtworks.xstream.XStream; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; -import javax.xml.bind.annotation.XmlMimeType; @RestController @RequestMapping("/wx") @@ -24,8 +21,13 @@ public class CusWxController extends BaseController { } @PostMapping("/checkSign") - public String autoResonse(HttpServletRequest request){ + public String autoResponse(HttpServletRequest request) { return sysWxService.autoResponse(request); } + @GetMapping("/accessToken") + public AjaxResult getAccessToken() { + return sysWxService.getAccessToken(); + } + } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/wechat/WxAccessToken.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/wechat/WxAccessToken.java new file mode 100644 index 000000000..fcdf5fdc9 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/wechat/WxAccessToken.java @@ -0,0 +1,12 @@ +package com.stdiet.custom.domain.wechat; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class WxAccessToken implements Serializable { + private String accessToken; + + private Integer expiresIn; +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxService.java index 50a87eec6..d45fc3f63 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxService.java @@ -1,5 +1,6 @@ package com.stdiet.custom.service; +import com.stdiet.common.core.domain.AjaxResult; import com.stdiet.custom.domain.WxXmlData; import javax.servlet.http.HttpServletRequest; @@ -16,4 +17,6 @@ public interface ISysWxService { public String wxCheckAuth(String signature, String timestamp, String nonce, String echostr); public String autoResponse(HttpServletRequest request); + + public AjaxResult getAccessToken(); } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxServiceImpl.java index 382eea3e9..d860fdb79 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxServiceImpl.java @@ -1,5 +1,6 @@ package com.stdiet.custom.service.impl; +import com.stdiet.common.core.domain.AjaxResult; import com.stdiet.common.utils.StringUtils; import com.stdiet.custom.domain.WxXmlData; import com.stdiet.custom.service.ISysWxService; @@ -29,7 +30,7 @@ public class SysWxServiceImpl implements ISysWxService { WxXmlData resultXmlData = new WxXmlData(); resultXmlData.setToUserName(wxData.getFromUserName()); //收到的消息是谁发来的再发给谁 resultXmlData.setFromUserName(wxData.getToUserName()); // - if (!StringUtils.isEmpty(wxData.getEvent())) { + if (wxData.getMsgType().equals(WechatMessageUtil.MESSAGE_EVENT)) { if (wxData.getEvent().equals(WechatMessageUtil.MESSAGE_EVENT_SUBSCRIBE)) { resultXmlData.setMsgType("text"); resultXmlData.setCreateTime(System.currentTimeMillis()); @@ -37,7 +38,7 @@ public class SysWxServiceImpl implements ISysWxService { } else if (wxData.getEvent().equals(WechatMessageUtil.MESSAGE_EVENT_UNSUBSCRIBE)) { } - } else if (wxData.getContent().equalsIgnoreCase("vip")) { + } else if (wxData.getMsgType().equals(WechatMessageUtil.MESSAGE_TEXT)) { resultXmlData.setMsgType("text"); resultXmlData.setCreateTime(System.currentTimeMillis()); resultXmlData.setContent("点击该链接,获取博客解锁验证码"); @@ -55,4 +56,10 @@ public class SysWxServiceImpl implements ISysWxService { } } + @Override + public AjaxResult getAccessToken() { + return AjaxResult.success(WxTokenUtils.fetchAccessToken()); + } + + } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/utils/WxTokenUtils.java b/stdiet-custom/src/main/java/com/stdiet/custom/utils/WxTokenUtils.java index 8d1599e02..883c1e0e4 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/utils/WxTokenUtils.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/utils/WxTokenUtils.java @@ -1,6 +1,10 @@ package com.stdiet.custom.utils; +import com.alibaba.fastjson.JSONObject; +import com.stdiet.common.utils.StringUtils; +import com.stdiet.common.utils.http.HttpUtils; import com.stdiet.custom.domain.WxXmlData; +import com.stdiet.custom.domain.wechat.WxAccessToken; import com.thoughtworks.xstream.XStream; import org.apache.commons.io.IOUtils; @@ -13,6 +17,23 @@ public class WxTokenUtils { // 与接口配置信息中的Token要一致 private static String token = "shengtangdiet"; + private static String appId = "wx4a9c1fc9dba53202"; + private static String appSecret = "fff029ade5d3575df755f4cf9e52f8da"; + private static String tokenUrl = "https://api.weixin.qq.com/cgi-bin/token"; + + public static WxAccessToken fetchAccessToken() { + try { + String resStr = HttpUtils.sendGet(tokenUrl, "grant_type=client_credential&appid=" + appId + "secret=" + appSecret); + if (StringUtils.isEmpty(resStr)) { + return null; + } + JSONObject obj = JSONObject.parseObject(resStr); + WxAccessToken token = JSONObject.toJavaObject(obj, WxAccessToken.class); + return token; + } catch (Exception e) { + return null; + } + } /** * 验证签名