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