WxGzhController.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. package com.template.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.Wrapper;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
  7. import com.google.gson.Gson;
  8. import com.google.gson.reflect.TypeToken;
  9. import com.template.annotation.PassToken;
  10. import com.template.api.WxGzhControllerAPI;
  11. import com.template.common.utils.*;
  12. import com.template.model.pojo.SmartCodeOpenId;
  13. import com.template.model.pojo.SmartUser;
  14. import com.template.model.pojo.SmsCode;
  15. import com.template.model.result.CommonResult;
  16. import com.template.model.weixin.HttpParame;
  17. import com.template.services.SmartCodeOpenIdService;
  18. import com.template.services.SmartUserService;
  19. import com.template.services.SmsCodeService;
  20. import org.apache.commons.lang3.StringUtils;
  21. import org.apache.http.HttpResponse;
  22. import org.apache.http.client.HttpClient;
  23. import org.apache.http.client.methods.HttpGet;
  24. import org.apache.http.client.methods.HttpPost;
  25. import org.apache.http.entity.StringEntity;
  26. import org.apache.http.impl.client.HttpClientBuilder;
  27. import org.apache.http.util.EntityUtils;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.web.bind.annotation.RestController;
  30. import java.util.Date;
  31. import java.util.HashMap;
  32. import java.util.List;
  33. @RestController
  34. public class WxGzhController implements WxGzhControllerAPI {
  35. // 公众号的唯一标识
  36. private static String appid="wxa46ef222053a1047";
  37. // 公众号的appsecret
  38. private static String secret="16f74a1265c314fd79fdf90670173467";
  39. @Autowired
  40. SmartUserService smartUserService;
  41. @Autowired
  42. SmartCodeOpenIdService smartCodeOpenIdService;
  43. @Autowired
  44. SmsCodeService smsCodeService;
  45. @Override
  46. @PassToken
  47. public CommonResult getWxGzhOpenid(String code) throws Exception {
  48. String url="https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appid+"&secret="+secret+"&code="+code+"&grant_type=authorization_code";
  49. System.out.println("url = " + url);
  50. String s = HttpsClient.httpsRequestReturnString(url, "GET", "");
  51. JSONObject jsonObject = JSONObject.parseObject(s);
  52. if (!jsonObject.containsKey("openid")) {
  53. return CommonResult.fail("code有误");
  54. }
  55. String openid = jsonObject.getString("openid");
  56. // 判断openid是否已经存在
  57. LambdaQueryWrapper<SmartUser> wrapper=new LambdaQueryWrapper<>();
  58. wrapper.eq(SmartUser::getGzhOpenId,openid);
  59. SmartUser smartUser = smartUserService.getOne(wrapper);
  60. JSONObject jsonObject1 = new JSONObject();
  61. if (ObjectUtils.isNotEmpty(smartUser)) {
  62. jsonObject1.put("phone",smartUser.getPhone());
  63. return CommonResult.ok(jsonObject1);
  64. }
  65. SmartCodeOpenId smartCodeOpenId = new SmartCodeOpenId();
  66. smartCodeOpenId.setCode(code);
  67. smartCodeOpenId.setOpenId(openid);
  68. smartCodeOpenIdService.save(smartCodeOpenId);
  69. System.out.println("openid = " + openid);
  70. jsonObject1.put("phone","");
  71. return CommonResult.ok(jsonObject1);
  72. }
  73. @Override
  74. @PassToken
  75. public CommonResult vertifyMessage(String phone, String code,String wxGzhCode) {
  76. QueryWrapper<SmsCode> queryWrapper1 = new QueryWrapper<>();
  77. queryWrapper1.eq("deleted", 0);
  78. queryWrapper1.eq("is_verify", 0);
  79. queryWrapper1.eq("phone_number", phone);
  80. queryWrapper1.eq("code", code);
  81. queryWrapper1.ge("expiration_time", new Date());
  82. List<SmsCode> listc = smsCodeService.getSmsCodeByKey(queryWrapper1);
  83. if (listc.isEmpty()) {
  84. return CommonResult.ok("验证码已失效");
  85. }
  86. for (SmsCode smsCode : listc) {
  87. smsCode.setIsVerify("1");
  88. smsCodeService.updateSmsCode(smsCode);
  89. }
  90. QueryWrapper<SmartUser> queryWrapper2 = new QueryWrapper<>();
  91. queryWrapper2.eq("deleted", 0);
  92. queryWrapper2.eq("phone", phone);
  93. SmartUser user = smartUserService.getOne(queryWrapper2);
  94. if (ObjectUtils.isEmpty(user)) {
  95. return CommonResult.fail("该用户不存在");
  96. }
  97. LambdaQueryWrapper<SmartCodeOpenId> wrapperCode=new LambdaQueryWrapper<>();
  98. wrapperCode.eq(SmartCodeOpenId::getCode,wxGzhCode);
  99. SmartCodeOpenId smartCodeOpenId = smartCodeOpenIdService.getOne(wrapperCode);
  100. if (ObjectUtils.isNotEmpty(smartCodeOpenId)) {
  101. user.setGzhOpenId(smartCodeOpenId.getOpenId());
  102. smartUserService.updateSmartUser(user);
  103. }
  104. return CommonResult.ok();
  105. }
  106. @Override
  107. public CommonResult unbinding(String phone) {
  108. QueryWrapper<SmartUser> queryWrapper = new QueryWrapper<>();
  109. queryWrapper.eq("deleted", 0);
  110. queryWrapper.eq("phone", phone);
  111. SmartUser user = smartUserService.getOne(queryWrapper);
  112. if (ObjectUtils.isEmpty(user)) {
  113. return CommonResult.fail("该用户不存在");
  114. }
  115. user.setGzhOpenId("");
  116. smartUserService.updateById(user);
  117. return CommonResult.ok();
  118. }
  119. }