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