huliguo
2025-06-09 20a192cecb7fca5dbccd98f6f6b258c652f218f8
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,31 @@
    @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 appUser1 = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getWxOpenid, openid).ne(AppUser::getStatus, AppUserStatusConstant.LOGOUT).eq(AppUser::getDelFlag,DelFlagConstant.UNDELETE));
        if (null != appUser1) {
            throw new ServiceException("此微信号已注册,请直接登录!");
        }
        AppUser appUser2 = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, registerDTO.getPhone()).ne(AppUser::getStatus, AppUserStatusConstant.LOGOUT).eq(AppUser::getDelFlag,DelFlagConstant.UNDELETE));
        if (null != appUser2) {
            throw new ServiceException("手机号已注册,请直接登录!");
        }
        //注册一个
        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());