From 07de03ccae02d00be243911a003115fe9b24f863 Mon Sep 17 00:00:00 2001
From: huliguo <2023611923@qq.com>
Date: 星期二, 08 四月 2025 16:07:07 +0800
Subject: [PATCH] 订单部分+个人中心部分

---
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java |   61 ++++++++++++++++++++++++------
 1 files changed, 48 insertions(+), 13 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..eefa38c 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();
@@ -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);
 	}
 
-
+*/
 	
 
 

--
Gitblit v1.7.1