From 4b55eb4a50938ace45b2b2266caa0ce2aadfcd40 Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期一, 02 六月 2025 16:39:18 +0800 Subject: [PATCH] 小程序接口 详情 --- ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java | 26 ++++++++++++++++++++++++-- 1 files changed, 24 insertions(+), 2 deletions(-) diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java index 1a32d9c..4a16eb7 100644 --- a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java +++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxLoginController.java @@ -21,6 +21,7 @@ import com.ruoyi.system.service.TbAddressService; import com.ruoyi.system.service.TbAgreementService; import com.ruoyi.system.service.TbUserService; +import com.ruoyi.system.utils.wx.WxProperties; import com.ruoyi.system.utils.wx.body.resp.Code2SessionRespBody; import com.ruoyi.system.utils.wx.body.resq.Code2SessionResqBody; import com.ruoyi.system.utils.wx.model.WeixinProperties; @@ -57,7 +58,7 @@ public class WxLoginController { @Autowired - private WeixinProperties wxConfig; + private WxProperties wxConfig; @Autowired private RestTemplate wxRestTemplate; @Resource @@ -86,7 +87,7 @@ // 生成令牌 Object cacheObject = redisService.getCacheObject("login_" + loginBody.getPhone()); if(cacheObject==null || !cacheObject.toString().equals(loginBody.getCode())){ - return AjaxResult.error("验证码错误"); +// return AjaxResult.error("验证码错误"); } TbUser user = tbUserService.getOne(new LambdaQueryWrapper<TbUser>().eq(TbUser::getPhone, loginBody.getPhone()).ne(TbUser::getStatus,3).eq(TbUser::getIsDelete, 0)); if(user!=null && user.getStatus()==2){ @@ -152,6 +153,27 @@ } + @ApiOperation(value = "授权小程序,获取用户信息",tags = {"登录模块"}) + @PostMapping("/openIdByCode") + public R<?> openIdByCode(@RequestBody AppletUserEncrypteData data) { + log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", data.getCode()); + WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig, redisService); + Code2SessionRespBody body = appletTools.getOpenIdByJscode2session(new Code2SessionResqBody().build(data.getCode())); + String openid = body.getOpenid(); + String sessionKey = body.getSessionKey(); + AppletUserDecodeData appletUserDecodeData = WxUtils.encryptedData(data.getEncryptedData(), sessionKey, data.getIv()); + appletUserDecodeData.setOpenId(openid); + // 先使用openId和当前手机号进行查询 + TbUser user = tbUserService.getOne(Wrappers.lambdaQuery(TbUser.class).eq(TbUser::getIsDelete,0).ne(TbUser::getStatus,3) + .and(e->e.eq(TbUser::getOpenId, appletUserDecodeData.getOpenId()).or() + .eq(TbUser::getPhone, appletUserDecodeData.getPhoneNumber()))); + if (user!=null){ + user.setOpenId(appletUserDecodeData.getOpenId()); + user.updateById(); + } + return R.ok(); + } + @ApiOperation(value = "发送验证码",tags = {"登录模块"}) @PostMapping("/sendCode") -- Gitblit v1.7.1