|
|
@@ -0,0 +1,149 @@
|
|
|
+package com.template.controller;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
+import com.google.gson.Gson;
|
|
|
+import com.google.gson.reflect.TypeToken;
|
|
|
+import com.template.annotation.PassToken;
|
|
|
+import com.template.api.WxGzhControllerAPI;
|
|
|
+import com.template.common.utils.*;
|
|
|
+import com.template.model.pojo.SmartCodeOpenId;
|
|
|
+import com.template.model.pojo.SmartUser;
|
|
|
+import com.template.model.pojo.SmsCode;
|
|
|
+import com.template.model.result.CommonResult;
|
|
|
+import com.template.model.weixin.HttpParame;
|
|
|
+import com.template.services.SmartCodeOpenIdService;
|
|
|
+import com.template.services.SmartUserService;
|
|
|
+import com.template.services.SmsCodeService;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.apache.http.HttpResponse;
|
|
|
+import org.apache.http.client.HttpClient;
|
|
|
+import org.apache.http.client.methods.HttpGet;
|
|
|
+import org.apache.http.client.methods.HttpPost;
|
|
|
+import org.apache.http.entity.StringEntity;
|
|
|
+import org.apache.http.impl.client.HttpClientBuilder;
|
|
|
+import org.apache.http.util.EntityUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@RestController
|
|
|
+public class WxGzhController implements WxGzhControllerAPI {
|
|
|
+
|
|
|
+// 公众号的唯一标识
|
|
|
+ private static String appid="wxa46ef222053a1047";
|
|
|
+// 公众号的appsecret
|
|
|
+ private static String secret="16f74a1265c314fd79fdf90670173467";
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ SmartUserService smartUserService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ SmartCodeOpenIdService smartCodeOpenIdService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ SmsCodeService smsCodeService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @PassToken
|
|
|
+ public CommonResult getWxGzhOpenid(String code) throws Exception {
|
|
|
+
|
|
|
+ String url="https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appid+"&secret="+secret+"&code="+code+"&grant_type=authorization_code";
|
|
|
+ System.out.println("url = " + url);
|
|
|
+
|
|
|
+ String s = HttpsClient.httpsRequestReturnString(url, "GET", "");
|
|
|
+
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(s);
|
|
|
+
|
|
|
+ if (!jsonObject.containsKey("openid")) {
|
|
|
+ return CommonResult.fail("code有误");
|
|
|
+ }
|
|
|
+ String openid = jsonObject.getString("openid");
|
|
|
+
|
|
|
+// 判断openid是否已经存在
|
|
|
+ LambdaQueryWrapper<SmartUser> wrapper=new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(SmartUser::getGzhOpenId,openid);
|
|
|
+ SmartUser smartUser = smartUserService.getOne(wrapper);
|
|
|
+ JSONObject jsonObject1 = new JSONObject();
|
|
|
+
|
|
|
+ if (ObjectUtils.isNotEmpty(smartUser)) {
|
|
|
+ jsonObject1.put("phone",smartUser.getPhone());
|
|
|
+ return CommonResult.ok(jsonObject1);
|
|
|
+ }
|
|
|
+ SmartCodeOpenId smartCodeOpenId = new SmartCodeOpenId();
|
|
|
+ smartCodeOpenId.setCode(code);
|
|
|
+ smartCodeOpenId.setOpenId(openid);
|
|
|
+
|
|
|
+ smartCodeOpenIdService.save(smartCodeOpenId);
|
|
|
+
|
|
|
+ System.out.println("openid = " + openid);
|
|
|
+
|
|
|
+ jsonObject1.put("phone","");
|
|
|
+ return CommonResult.ok(jsonObject1);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @PassToken
|
|
|
+ public CommonResult vertifyMessage(String phone, String code,String wxGzhCode) {
|
|
|
+ QueryWrapper<SmsCode> queryWrapper1 = new QueryWrapper<>();
|
|
|
+ queryWrapper1.eq("deleted", 0);
|
|
|
+ queryWrapper1.eq("is_verify", 0);
|
|
|
+ queryWrapper1.eq("phone_number", phone);
|
|
|
+ queryWrapper1.eq("code", code);
|
|
|
+ queryWrapper1.ge("expiration_time", new Date());
|
|
|
+ List<SmsCode> listc = smsCodeService.getSmsCodeByKey(queryWrapper1);
|
|
|
+ if (listc.isEmpty()) {
|
|
|
+ return CommonResult.ok("验证码已失效");
|
|
|
+ }
|
|
|
+
|
|
|
+ for (SmsCode smsCode : listc) {
|
|
|
+ smsCode.setIsVerify("1");
|
|
|
+ smsCodeService.updateSmsCode(smsCode);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ QueryWrapper<SmartUser> queryWrapper2 = new QueryWrapper<>();
|
|
|
+ queryWrapper2.eq("deleted", 0);
|
|
|
+ queryWrapper2.eq("phone", phone);
|
|
|
+ SmartUser user = smartUserService.getOne(queryWrapper2);
|
|
|
+ if (ObjectUtils.isEmpty(user)) {
|
|
|
+ return CommonResult.fail("该用户不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ LambdaQueryWrapper<SmartCodeOpenId> wrapperCode=new LambdaQueryWrapper<>();
|
|
|
+ wrapperCode.eq(SmartCodeOpenId::getCode,wxGzhCode);
|
|
|
+ SmartCodeOpenId smartCodeOpenId = smartCodeOpenIdService.getOne(wrapperCode);
|
|
|
+
|
|
|
+ if (ObjectUtils.isNotEmpty(smartCodeOpenId)) {
|
|
|
+ user.setGzhOpenId(smartCodeOpenId.getOpenId());
|
|
|
+ smartUserService.updateSmartUser(user);
|
|
|
+ }
|
|
|
+
|
|
|
+ return CommonResult.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @PassToken
|
|
|
+ public CommonResult unbinding(String phone) {
|
|
|
+ QueryWrapper<SmartUser> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("deleted", 0);
|
|
|
+ queryWrapper.eq("phone", phone);
|
|
|
+ SmartUser user = smartUserService.getOne(queryWrapper);
|
|
|
+ if (ObjectUtils.isEmpty(user)) {
|
|
|
+ return CommonResult.fail("该用户不存在");
|
|
|
+ }
|
|
|
+ user.setGzhOpenId("");
|
|
|
+
|
|
|
+ smartUserService.updateById(user);
|
|
|
+
|
|
|
+ return CommonResult.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|