From 5ca511582fec57e162e1783777a032e8e1ff4f77 Mon Sep 17 00:00:00 2001 From: wzx <2271174149@qq.com> Date: 星期五, 21 三月 2025 12:00:34 +0800 Subject: [PATCH] 小程序登录接口修改 --- ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/SysLoginService.java | 44 ++++++++++++++++++++++++-------------------- ruoyi-admin/src/main/java/org/ruoyi/controller/AuthController.java | 15 ++++++++++++++- 2 files changed, 38 insertions(+), 21 deletions(-) diff --git a/ruoyi-admin/src/main/java/org/ruoyi/controller/AuthController.java b/ruoyi-admin/src/main/java/org/ruoyi/controller/AuthController.java index e78d09c..9fdc93a 100644 --- a/ruoyi-admin/src/main/java/org/ruoyi/controller/AuthController.java +++ b/ruoyi-admin/src/main/java/org/ruoyi/controller/AuthController.java @@ -2,6 +2,9 @@ import cn.dev33.satoken.annotation.SaIgnore; import cn.hutool.core.collection.CollUtil; +import cn.hutool.json.JSONUtil; +import cn.hutool.json.ObjectMapper; +import me.chanjar.weixin.common.error.WxErrorException; import org.ruoyi.common.core.constant.Constants; import org.ruoyi.common.core.domain.R; import org.ruoyi.common.core.domain.model.EmailLoginBody; @@ -48,6 +51,15 @@ private final SysRegisterService registerService; private final ISysTenantService tenantService; + + @PostMapping("/xcxLogin") + public R<LoginVo> login(@Validated @RequestBody String xcxCode) throws WxErrorException { + + String openidFromCode = loginService.getOpenidFromCode((String) JSONUtil.parseObj(xcxCode).get("xcxCode")); + LoginVo loginVo = loginService.mpLogin(openidFromCode); + return R.ok(loginVo); + } + /** * 鐧诲綍鏂规硶 * @@ -85,6 +97,7 @@ /** * 璁垮鐧诲綍 + * * @param loginBody 鐧诲綍淇℃伅 * @return token淇℃伅 */ @@ -123,7 +136,7 @@ */ @PostMapping("/register") public R<Void> register(@Validated @RequestBody RegisterBody user, HttpServletRequest request) { - String domainName = request.getServerName(); + String domainName = request.getServerName(); user.setDomainName(domainName); registerService.register(user); return R.ok(); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/SysLoginService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/SysLoginService.java index 29f9616..639feaf 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/SysLoginService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/SysLoginService.java @@ -1,6 +1,7 @@ package org.ruoyi.system.service; import cn.binarywang.wx.miniapp.api.WxMaService; +import cn.binarywang.wx.miniapp.api.WxMaUserService; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.util.WxMaConfigHolder; import cn.dev33.satoken.exception.NotLoginException; @@ -69,6 +70,19 @@ private Integer lockTime; /** + * 鑾峰彇寰俊 + * @param xcxCode 鑾峰彇xcxCode + */ + public String getOpenidFromCode(String xcxCode) { + try { + WxMaJscode2SessionResult sessionInfo = wxMaService.getUserService().getSessionInfo(xcxCode); + return sessionInfo.getOpenid(); + } catch (WxErrorException e) { + e.printStackTrace(); + return null; + } + } + /** * 鐧诲綍楠岃瘉 * * @param username 鐢ㄦ埛鍚� @@ -135,15 +149,14 @@ public void visitorLogin(VisitorLoginBody loginBody) { String openid = ""; // PC绔父瀹㈢櫥褰� - if(LoginUserType.PC.getCode().equals(loginBody.getType())){ + if (LoginUserType.PC.getCode().equals(loginBody.getType())) { openid = loginBody.getCode(); - }else { + } else { // 灏忕▼搴忓尶鍚嶇櫥褰� try { WxMaJscode2SessionResult session = wxMaService.getUserService().getSessionInfo(loginBody.getCode()); openid = session.getOpenid(); - } catch ( - WxErrorException e) { + } catch (WxErrorException e) { log.error(e.getMessage(), e); } finally { // 娓呯悊ThreadLocal @@ -159,7 +172,8 @@ if (ObjectUtil.isNull(user)) { SysUserBo sysUser = new SysUserBo(); // 鏀逛负鑷 - String name = "鐢ㄦ埛" + UUIDShortUtil.generateShortUuid();; + String name = "鐢ㄦ埛" + UUIDShortUtil.generateShortUuid(); + ; // 璁剧疆榛樿鐢ㄦ埛鍚� sysUser.setUserName(name); // 璁剧疆榛樿鏄电О @@ -170,7 +184,7 @@ sysUser.setOpenId(openid); String configValue = configService.getConfigValue("mail", "amount"); // 璁剧疆榛樿浣欓 - sysUser.setUserBalance(NumberUtils.toDouble(configValue,1)); + sysUser.setUserBalance(NumberUtils.toDouble(configValue, 1)); // 娉ㄥ唽鐢ㄦ埛,璁剧疆榛樿绉熸埛涓�0 SysUser registerUser = userService.registerUser(sysUser, "0"); @@ -284,10 +298,7 @@ private SysUserVo loadUserByUsername(String tenantId, String username) { - SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() - .select(SysUser::getUserName, SysUser::getStatus) - .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId) - .eq(SysUser::getUserName, username)); + SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>().select(SysUser::getUserName, SysUser::getStatus).eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId).eq(SysUser::getUserName, username)); if (ObjectUtil.isNull(user)) { log.info("鐧诲綍鐢ㄦ埛锛歿} 涓嶅瓨鍦�.", username); throw new UserException("user.not.exists", username); @@ -302,10 +313,7 @@ } private SysUserVo loadUserByPhonenumber(String tenantId, String phonenumber) { - SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() - .select(SysUser::getPhonenumber, SysUser::getStatus) - .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId) - .eq(SysUser::getPhonenumber, phonenumber)); + SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>().select(SysUser::getPhonenumber, SysUser::getStatus).eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId).eq(SysUser::getPhonenumber, phonenumber)); if (ObjectUtil.isNull(user)) { log.info("鐧诲綍鐢ㄦ埛锛歿} 涓嶅瓨鍦�.", phonenumber); throw new UserException("user.not.exists", phonenumber); @@ -320,10 +328,7 @@ } private SysUserVo loadUserByEmail(String tenantId, String email) { - SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() - .select(SysUser::getPhonenumber, SysUser::getStatus) - .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId) - .eq(SysUser::getEmail, email)); + SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>().select(SysUser::getPhonenumber, SysUser::getStatus).eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId).eq(SysUser::getEmail, email)); if (ObjectUtil.isNull(user)) { log.info("鐧诲綍鐢ㄦ埛锛歿} 涓嶅瓨鍦�.", email); throw new UserException("user.not.exists", email); @@ -419,8 +424,7 @@ } else if (TenantStatus.DISABLE.getCode().equals(tenant.getStatus())) { log.info("鐧诲綍绉熸埛锛歿} 宸茶鍋滅敤.", tenantId); throw new TenantException("tenant.blocked"); - } else if (ObjectUtil.isNotNull(tenant.getExpireTime()) - && new Date().after(tenant.getExpireTime())) { + } else if (ObjectUtil.isNotNull(tenant.getExpireTime()) && new Date().after(tenant.getExpireTime())) { log.info("鐧诲綍绉熸埛锛歿} 宸茶秴杩囨湁鏁堟湡.", tenantId); throw new TenantException("tenant.expired"); } -- Gitblit v1.9.3