huliguo
2025-04-08 07de03ccae02d00be243911a003115fe9b24f863
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java
@@ -94,6 +94,8 @@
   @Resource
   private OrderClient orderClient;
   private static final String DEFAULT_AVATAR_URL = "http://qijishenghuiyuan.obs.cn-southwest-2.myhuaweicloud.com/admin/aedfbbb41280471f8d9fa7905298b65f.png";
   /**
    * 小程序一键登录
@@ -110,27 +112,33 @@
      }
      String openid = map.get("openid").toString();
      String sessionKey = map.get("sessionKey").toString();
      //查询用户是否注册,没有注册则跳转到注册页面
      //查询用户是否注册,没有注册则注册
      AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getWxOpenid, openid).ne(AppUser::getStatus, 3).eq(AppUser::getDelFlag, 0));
      if(null == 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("purePhoneNumber");
         LoginVo loginVo = new LoginVo();
         loginVo.setSkipPage(2);
         loginVo.setPhone(purePhoneNumber);
         return R.ok(loginVo);
         //新用户默认信息
         appUser.setName(purePhoneNumber.substring(0, 3) + "****" + purePhoneNumber.substring(7));
         appUser.setPhone(purePhoneNumber);
         appUser.setAvatar( DEFAULT_AVATAR_URL);
         appUser.setWxOpenid(openid);
         appUser.setStatus(1);
         appUser.setDelFlag(false);
         this.save(appUser);
      }
      //账户被冻结,给出提示
      if(2 == appUser.getStatus()){
         return R.fail("账户已被冻结,请联系管理员!");
      }
      LoginVo loginVo = new LoginVo();
      loginVo.setSkipPage(1);
      loginVo.setFirstTime(false);
      loginVo.setPhone(appUser.getPhone());
      //构建token
      LoginUser loginUser = new LoginUser();
@@ -160,14 +168,41 @@
         }
      }
      
      //查询用户是否注册,没有注册则跳转到注册页面
      //查询用户是否注册,没有注册则系统注册
      AppUser appUser = this.getOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, mobileLogin.getPhone())
            .ne(AppUser::getStatus, 3).eq(AppUser::getDelFlag, 0));
      if(null == appUser){
         LoginVo loginVo = new LoginVo();
         loginVo.setSkipPage(2);
         loginVo.setPhone(mobileLogin.getPhone());
         return R.ok(loginVo);
         appUser=new AppUser();
         //注册
         //使用jscode获取微信openid
         Map<String, Object> map = weChatUtil.code2Session(mobileLogin.getJscode());
         Integer errcode = Integer.valueOf(map.get("errcode").toString());
         if(0 != errcode){
            return R.fail(map.get("msg").toString());
         }
         String openid = map.get("openid").toString();
         //设置默认信息
         appUser.setName(mobileLogin.getPhone().substring(0, 3) + "****" + mobileLogin.getPhone().substring(7));
         appUser.setPhone(mobileLogin.getPhone());
         appUser.setAvatar( DEFAULT_AVATAR_URL);
         appUser.setWxOpenid(openid);
         appUser.setStatus(1);
         appUser.setDelFlag(false);
         //调用地图获取省市区数据
         String citycode = TencentMapUtil.inverseGeographicalAnalysis(mobileLogin.getLongitude(), mobileLogin.getLatitude(), false);
         if(null != citycode){
            Region region = regionClient.getRegionBiCode(citycode).getData();
            appUser.setDistrict(region.getName());
            appUser.setDistrictCode(citycode);
            region = regionClient.getRegionBiCode(citycode.substring(0, 4) + "00").getData();
            appUser.setCity(region.getName());
            appUser.setCityCode(region.getCode());
            region = regionClient.getRegionBiCode(citycode.substring(0, 2) + "0000").getData();
            appUser.setProvince(region.getName());
            appUser.setProvinceCode(region.getCode());
         }
         this.save(appUser);
      }
      //账户被冻结,给出提示
      if(2 == appUser.getStatus()){
@@ -175,7 +210,6 @@
      }
      LoginVo loginVo = new LoginVo();
      loginVo.setSkipPage(1);
      loginVo.setFirstTime(false);
      loginVo.setPhone(appUser.getPhone());
      //构建token
      LoginUser loginUser = new LoginUser();
@@ -236,6 +270,7 @@
    * @param registerAccount
    * @return
    */
   /*
   @Override
   public R<LoginVo> registerAccount(RegisterAccount registerAccount) {
      //校验验证码
@@ -434,7 +469,7 @@
      return R.ok(loginVo);
   }
*/