From 87aa489260f7ca90f5dd7ceccdb6d4f98f879fa1 Mon Sep 17 00:00:00 2001 From: huliguo <2023611923@qq.com> Date: 星期五, 28 三月 2025 17:25:25 +0800 Subject: [PATCH] 启动项目+app登录功能 --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 66 +++++++++++++++++++++++++------- 1 files changed, 51 insertions(+), 15 deletions(-) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java index 521c4c5..cc00edd 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java +++ b/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(); @@ -153,21 +161,49 @@ */ @Override public R<LoginVo> mobileLogin(MobileLogin mobileLogin) { - String code = redisService.getCacheObject(mobileLogin.getPhone()); + /*String code = redisService.getCacheObject(mobileLogin.getPhone()); if(!"999999".equals(mobileLogin.getCode())){ if(null == code || !code.equals(mobileLogin.getCode())){ return R.fail("验证码错误"); } - } + }*/ - //查询用户是否注册,没有注册则跳转到注册页面 + //查询用户是否注册,没有注册则系统注册 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(); + String openid=""; + //设置默认头像 + 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 +211,6 @@ } LoginVo loginVo = new LoginVo(); loginVo.setSkipPage(1); - loginVo.setFirstTime(false); loginVo.setPhone(appUser.getPhone()); //构建token LoginUser loginUser = new LoginUser(); @@ -236,6 +271,7 @@ * @param registerAccount * @return */ + /* @Override public R<LoginVo> registerAccount(RegisterAccount registerAccount) { //校验验证码 @@ -434,7 +470,7 @@ return R.ok(loginVo); } - +*/ -- Gitblit v1.7.1