GroupController.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package com.wechat.controller;
  2. import java.io.IOException;
  3. import javax.annotation.Resource;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. import org.springframework.beans.factory.annotation.Value;
  7. import org.springframework.stereotype.Controller;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.RequestMethod;
  10. import org.springframework.web.bind.annotation.RequestParam;
  11. import com.alibaba.fastjson.JSON;
  12. import com.wechat.common.Constants;
  13. import com.wechat.common.utils.MvcUtil;
  14. import com.wechat.common.utils.StringsUtils;
  15. import com.wechat.global.base.BaseController;
  16. import com.wechat.global.message.InfoMsg;
  17. import com.wechat.model.dto.WxUserInfoDto;
  18. import com.wechat.model.responseDto.JsonResp;
  19. import com.wechat.service.GroupService;
  20. import com.wechat.service.WeiXinService;
  21. /**
  22. * FAQ问答
  23. *
  24. */
  25. @Controller
  26. @RequestMapping("group")
  27. public class GroupController extends BaseController {
  28. //菜单设置
  29. @Value("#{configProperties['weixin.menu']}")
  30. private String wxMenuUrl;
  31. @Resource
  32. private WeiXinService wxService;
  33. @Resource
  34. private GroupService groupService;
  35. /**
  36. * 验证用户是否关注公众号
  37. *
  38. * @param userSentTextRequest 用户发送的信息
  39. */
  40. @RequestMapping(value = "isSubscribe", method = RequestMethod.POST)
  41. public void isSubscribe(@RequestParam String openId, HttpServletRequest request, HttpServletResponse response) throws Exception{
  42. JsonResp<String> ret = new JsonResp<String>();
  43. //通过openid,检索用户信息
  44. WxUserInfoDto userInfo= wxService.getUserInfo(openId);
  45. if(userInfo != null)
  46. {
  47. //token过期的情况
  48. if(StringsUtils.isEqual(userInfo.getErrorCode().toString(), Constants.STR_TOKEN_ERO))
  49. {
  50. //强制更新token
  51. wxService.updAccessTokenInfo();
  52. log.info("重取用户信息");
  53. //取得用户微信信息
  54. userInfo= wxService.getUserInfo(openId);
  55. }
  56. //取不到openid说明出错
  57. if(StringsUtils.isEmpty(userInfo.getOpenid()))
  58. {
  59. log.error("isSubscribe 拉取用户信息异常!");
  60. log.error("errcode:【" + userInfo.getErrorCode() + "】");
  61. log.error("errmsg:【" + userInfo.getErrorMsg() + "】");
  62. ret.setMsg(InfoMsg.ERROR_SYSTEM_ERROR);
  63. }
  64. else
  65. {
  66. //值为0时,代表此用户没有关注该公众号
  67. ret.setInfo(userInfo.getSubscribe());
  68. }
  69. }
  70. String json = JSON.toJSONString(ret, true);
  71. try {
  72. MvcUtil.writeJson(request, response, json);
  73. } catch (IOException e) {
  74. log.error(e);
  75. }
  76. }
  77. /**
  78. * 微信菜单设置
  79. *
  80. */
  81. /*@RequestMapping(value = "setWechatMenu", method = RequestMethod.GET)
  82. public void setWechatMenu(HttpServletRequest request, HttpServletResponse response) throws Exception{
  83. JsonResp<String> ret = new JsonResp<String>();
  84. JSONObject menuObj = groupService.getWechatMenu();
  85. //设置菜单
  86. BaseResponse resp = NetworkUtils.getRemoteResponseAsJson(MessageUtils.getText(wxMenuUrl, wxService.getAccessToken()), menuObj,BaseResponse.class);
  87. if (resp.getErrorCode() != 0) {
  88. log.error(InfoMsg.ERROR_WECHAT_MENU.getMsg());
  89. log.error("errcode:【" + resp.getErrorCode() + "】");
  90. log.error("errmsg:【" + resp.getErrorMsg() + "】");
  91. ret.setResult(Constants.RESULT_WARNING);
  92. ret.setMsg(InfoMsg.ERROR_WECHAT_MENU);
  93. }
  94. String json = JSON.toJSONString(ret, true);
  95. try {
  96. MvcUtil.writeJson(request, response, json);
  97. } catch (IOException e) {
  98. log.error(e);
  99. }
  100. }*/
  101. /**
  102. * 通过openid获取用户信息
  103. *
  104. * @param userSentTextRequest 用户发送的信息
  105. */
  106. @RequestMapping(value = "getUserInfoByOpenid", method = RequestMethod.GET)
  107. public void getUserInfoByOpenid(@RequestParam String openId, HttpServletRequest request,
  108. HttpServletResponse response) throws Exception {
  109. JsonResp<WxUserInfoDto> ret = new JsonResp<WxUserInfoDto>();
  110. WxUserInfoDto wxUserInfoDto = new WxUserInfoDto();
  111. // 通过开团id,检索参团用户
  112. if (!StringsUtils.isEmpty(openId)) {
  113. // 取得用户微信信息
  114. wxUserInfoDto = wxService.getUserInfo(openId);
  115. // token过期的情况
  116. if (StringsUtils.isEqual(wxUserInfoDto.getErrorCode().toString(), Constants.STR_TOKEN_ERO)) {
  117. // 强制更新token
  118. wxService.updAccessTokenInfo();
  119. log.info("重取用户头像列表");
  120. // 取得用户微信信息
  121. wxUserInfoDto = wxService.getUserInfo(openId);
  122. }
  123. }
  124. // 数据返回
  125. ret.setInfo(wxUserInfoDto);
  126. String json = JSON.toJSONString(ret, true);
  127. try {
  128. MvcUtil.writeJson(request, response, json);
  129. } catch (IOException e) {
  130. log.error(e);
  131. }
  132. }
  133. }