From 22d290b86699f8f9f832ffe40f25e389cf62da83 Mon Sep 17 00:00:00 2001 From: huliguo <2023611923@qq.com> Date: 星期一, 09 六月 2025 10:15:10 +0800 Subject: [PATCH] 小程序登录逻辑修改 --- pt-errand/src/main/java/com/ruoyi/errand/service/impl/AppUserServiceImpl.java | 83 ++++++++++++++++++++--------------------- 1 files changed, 40 insertions(+), 43 deletions(-) diff --git a/pt-errand/src/main/java/com/ruoyi/errand/service/impl/AppUserServiceImpl.java b/pt-errand/src/main/java/com/ruoyi/errand/service/impl/AppUserServiceImpl.java index 98b186f..c730820 100644 --- a/pt-errand/src/main/java/com/ruoyi/errand/service/impl/AppUserServiceImpl.java +++ b/pt-errand/src/main/java/com/ruoyi/errand/service/impl/AppUserServiceImpl.java @@ -113,26 +113,16 @@ } } //查看用户是否存在 - AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, mobileLogin.getPhone())); - if (null == appUser || appUser.getDelFlag().equals(DelFlagConstant.DELETE)) { + AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, mobileLogin.getPhone()) + .ne(AppUser::getStatus,AppUserStatusConstant.LOGOUT) + .eq(AppUser::getDelFlag,DelFlagConstant.UNDELETE)); + if (null == appUser) { //用户不存在 - //使用jscode获取微信openid - Map<String, Object> map = weChatUtil.code2Session(mobileLogin.getJscode()); - Integer errcode = Integer.valueOf(map.get("errcode").toString()); - if(0 != errcode){ - throw new ServiceException(map.get("msg").toString()); - } - String openid = map.get("openid").toString(); - //注册一个 - appUser = new AppUser(); - appUser.setPhone(mobileLogin.getPhone()); - appUser.setDelFlag(DelFlagConstant.UNDELETE); - appUser.setStatus(AppUserStatusConstant.NORMAL); - appUser.setWxOpenid(openid); - appUser.setAvatar(DEFAULT_AVATAR_URL); - appUser.setFirstLogin(IsFirstLoginConstant.YES); - appUser.setFirstOrder(IsFirstOrder.YES); - this.save(appUser); + //跳转注册页面 + LoginVO loginVo = new LoginVO(); + loginVo.setSkipPage(2); + loginVo.setPhone(mobileLogin.getPhone()); + return R.ok(loginVo); } if (Objects.equals(appUser.getStatus(), AppUserStatusConstant.FREEZE)) { throw new ServiceException("该账户已被冻结"); @@ -167,29 +157,21 @@ } String openid = map.get("openid").toString(); String sessionKey = map.get("sessionKey").toString(); - //查询用户是否注册,没有注册则注册 - AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getWxOpenid, openid)); - if(null == appUser|| appUser.getDelFlag().equals(DelFlagConstant.DELETE)){ - appUser = new AppUser(); - //注册 - //获取手机号 - String decrypt = WXCore.decrypt(appletLogin.getEncryptedData_phone(), sessionKey, appletLogin.getIv_phone()); - if (StringUtils.isEmpty(decrypt)) { - return R.fail("获取手机信息失败"); - } - JSONObject phone = JSON.parseObject(decrypt); - String purePhoneNumber = phone.getString("phoneNumber"); - //新用户默认信息 - appUser = new AppUser(); - appUser.setPhone(purePhoneNumber); - appUser.setDelFlag(DelFlagConstant.UNDELETE); - appUser.setStatus(AppUserStatusConstant.NORMAL); - appUser.setWxOpenid(openid); - appUser.setAvatar(DEFAULT_AVATAR_URL); - appUser.setFirstLogin(IsFirstLoginConstant.YES); - appUser.setFirstOrder(IsFirstOrder.YES); - this.save(appUser); - + //获取手机号 + String decrypt = WXCore.decrypt(appletLogin.getEncryptedData_phone(), sessionKey, appletLogin.getIv_phone()); + if (StringUtils.isEmpty(decrypt)) { + return R.fail("获取手机信息失败"); + } + JSONObject phoneJson = JSON.parseObject(decrypt); + String phone = phoneJson.getString("phoneNumber"); + //查询用户是否存在 + AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, phone).ne(AppUser::getStatus, AppUserStatusConstant.LOGOUT).eq(AppUser::getDelFlag,DelFlagConstant.UNDELETE)); + if(null == appUser){ + //跳转到注册界面 + LoginVO loginVo = new LoginVO(); + loginVo.setSkipPage(2); + loginVo.setPhone(phone); + return R.ok(loginVo); } if (Objects.equals(appUser.getStatus(), AppUserStatusConstant.FREEZE)) { @@ -214,8 +196,23 @@ @Override public void register(RegisterDTO registerDTO) { + //使用jscode获取微信openid + Map<String, Object> map = weChatUtil.code2Session(registerDTO.getJscode()); + Integer errcode = Integer.valueOf(map.get("errcode").toString()); + if(0 != errcode){ + throw new ServiceException(map.get("msg").toString()); + } + String openid = map.get("openid").toString(); + //注册一个 + AppUser appUser = new AppUser(); + appUser.setPhone(registerDTO.getPhone()); + appUser.setDelFlag(DelFlagConstant.UNDELETE); + appUser.setStatus(AppUserStatusConstant.NORMAL); + appUser.setWxOpenid(openid); + appUser.setAvatar(DEFAULT_AVATAR_URL); + appUser.setFirstLogin(IsFirstLoginConstant.YES); + appUser.setFirstOrder(IsFirstOrder.YES); //注册 修改用户信息 - AppUser appUser = (AppUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); appUser.setName(registerDTO.getUsername()); appUser.setFirstLogin(IsFirstLoginConstant.NO); appUser.setCommunityId(registerDTO.getCommunityId()); -- Gitblit v1.7.1