From d4f6d9632d5405a0153b124c5047b82efbd26649 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期三, 24 五月 2023 11:21:20 +0800
Subject: [PATCH] 用户重构
---
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java | 195 ++++++++++++++++++++++--------------------------
1 files changed, 91 insertions(+), 104 deletions(-)
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
index 6225e26..f78db0a 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -7,10 +7,10 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.common.core.utils.uuid.IdUtils;
+import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.member.domain.dto.*;
import com.ruoyi.member.domain.pojo.member.MemberNurse;
@@ -19,6 +19,8 @@
import com.ruoyi.member.service.member.MemberNurseService;
import com.ruoyi.member.service.member.MemberService;
import com.ruoyi.member.util.HttpUtils;
+import com.ruoyi.system.api.domain.dto.AppMiniRegisterDto;
+import com.ruoyi.system.api.domain.vo.AppMiniRegisterVo;
import com.ruoyi.system.api.service.RemoteConfigService;
import com.ruoyi.system.api.service.RemoteOrderService;
import com.ruoyi.system.api.service.RemoteShopService;
@@ -91,6 +93,9 @@
@Resource
private RemoteConfigService remoteConfigService;
+ @Resource
+ private RedisService redisService;
+
/**
* @description: TODO
* @author jqs34
@@ -129,48 +134,15 @@
sessionKey = session.getSessionKey();
//获取用户
Member member = memberMapper.getOneByMiniOpenid(openid);
- SysUser sysUser;
- if(member==null){
- //创建新用户
- String memberId = IdUtils.simpleUUID();
- sysUser = new SysUser();
- sysUser.setUserName(memberId);
- sysUser.setUserType("03");
- sysUser.setNickName("鸿瑞堂用户");
- sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
- String password = "hongruitang";
- sysUser.setPassword(SecurityUtils.encryptPassword(password));
- sysUser = sysUserService.registerUser(sysUser).getData();
- log.info("sysUser1-----------------"+sysUser.toString());
- member = new Member();
- member.setUserId(sysUser.getUserId());
- member.setDelFlag(0);
- member.setNickName("鸿瑞堂用户");
- member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
- member.setMemberId(memberId);
- member.setRelationShopId(1L);
- member.setWxUnionid(unionid);
- member.setMiniOpenid(openid);
- member.setBindingFlag(0);
- member.setCreateTime(new Date());
- log.info("member-----------------"+member.toString());
- this.saveOrUpdate(member);
-
- }else{
- log.info("member2"+member.toString());
- R<SysUser> sysUser1 = sysUserService.getSysUser(member.getUserId());
- log.info("sysUser1"+ sysUser1.getCode() + " : " + sysUser1.getMsg());
- sysUser = sysUser1.getData();
- log.info("sysUser"+sysUser.toString());
+ SysUser sysUser = null;
+ if(member!=null){
+ sysUser = sysUserService.getSysUser(member.getUserId()).getData();
}
appMiniLoginVo.setMiniOpenid(openid);
appMiniLoginVo.setWxUnionid(unionid);
appMiniLoginVo.setSysUser(sysUser);
appMiniLoginVo.setSessionKey(sessionKey);
- stringRedisTemplate.opsForValue().set(SecurityConstant.SESSION_KEY+openid,sessionKey);
- }else{
- log.info("null");
- return null;
+ redisService.setCacheObject(SecurityConstant.SESSION_KEY+openid,sessionKey,1L,TimeUnit.DAYS);
}
log.info("appMiniLoginVo"+appMiniLoginVo.toString());
return appMiniLoginVo;
@@ -178,77 +150,92 @@
/**
* 获取授权信息
- * @param appUserAuthorizeDto
+ * @param appUserRegisterDto
* @return
*/
@Override
- public AppUserAuthorizeVo getAppUserAuthorize(AppUserAuthorizeDto appUserAuthorizeDto){
- Member member = this.getById(appUserAuthorizeDto.getUserId());
- AppUserAuthorizeVo appUserAuthorizeVo = new AppUserAuthorizeVo();
+ public AppMiniRegisterVo miniRegister(AppMiniRegisterDto appUserRegisterDto){
+ AppMiniRegisterVo appUserRegisterVo = new AppMiniRegisterVo();
String mobile = null;
- if(StringUtils.isBlank(member.getMobile())){
- //获取code接口在redis里存放的sessionkey用于解密
- String sessionkey = stringRedisTemplate.opsForValue().get(SecurityConstant.SESSION_KEY+ member.getMiniOpenid());
- if(StringUtils.isBlank(sessionkey)){
- throw new ServiceException(AppErrorConstant.USER_NOT_LOGIN);
- }
- try {
- String accessToken = stringRedisTemplate.opsForValue().get("wx_access_token");
- if (StringUtils.isBlank(accessToken)) {
- String responseAccessToken = getAccessTokenByWX();
- JSONObject jsonAccessToken = JSONObject.parseObject(responseAccessToken);
- accessToken = jsonAccessToken.getString("access_token");
- String errmsg = jsonAccessToken.getString("errmsg");
- Long expiresIn = jsonAccessToken.getLong("expires_in");
- if (StringUtils.isBlank(accessToken)) {
- throw new ServiceException(errmsg);
- } else {
- expiresIn = expiresIn - 100;
- stringRedisTemplate.opsForValue().set("wx_access_token", accessToken, expiresIn.intValue(), TimeUnit.SECONDS);
- }
- }
- String responseUserPhoneNumber = getMobileByWX(accessToken, appUserAuthorizeDto.getMobileCode());
- JSONObject jsonUserPhoneNumber = JSONObject.parseObject(responseUserPhoneNumber);
- String errcode = jsonUserPhoneNumber.getString("errcode");
- String errmsg = jsonUserPhoneNumber.getString("errmsg");
- if (!errcode.equals("0")) {
- throw new ServiceException(errmsg);
- }
- String phoneInfo = jsonUserPhoneNumber.getString("phone_info");
- JSONObject jsonUserPhoneInfo = JSONObject.parseObject(phoneInfo);
- mobile = jsonUserPhoneInfo.getString("purePhoneNumber");
- } catch (Exception e) {
- e.printStackTrace();
- }
- Member oldMember = this.getByMobile(mobile);
- if(oldMember!=null){
- member.setNickName(oldMember.getNickName());
- member.setGender(oldMember.getGender());
- member.setReferrer(oldMember.getReferrer());
- member.setBirthday(oldMember.getBirthday());
- member.setBindingFlag(1);
- member.setRelationShopId(oldMember.getRelationShopId());
- oldMember.setDelFlag(1);
- oldMember.setMiniOpenid(oldMember.getMiniOpenid()+"已删除");
- this.saveOrUpdate(oldMember);
- }else{
- //更新用户手机信息
- SysUser sysUser = new SysUser();
- sysUser.setUserId(appUserAuthorizeDto.getUserId());
- sysUser.setPhonenumber(mobile);
- sysUserService.updateUserMobile(sysUser);
- member.setNickName(sysUser.getNickName());
- }
- member.setMobile(mobile);
- this.saveOrUpdate(member);
- }else{
- mobile = member.getMobile();
+ //获取code接口在redis里存放的sessionkey用于解密
+ String sessionkey = redisService.getCacheObject(SecurityConstant.SESSION_KEY+ appUserRegisterDto.getMiniOpenid());
+ if(StringUtils.isBlank(sessionkey)){
+ throw new ServiceException(AppErrorConstant.USER_NOT_LOGIN);
}
- appUserAuthorizeVo.setMobile(mobile);
- appUserAuthorizeVo.setNickName(member.getNickName());
- appUserAuthorizeVo.setOpenid(member.getMiniOpenid());
- appUserAuthorizeVo.setUnionid(member.getWxUnionid());
- return appUserAuthorizeVo;
+ try {
+ //获取微信token用于解密手机
+ String accessToken = redisService.getCacheObject(SecurityConstant.WX_TOKEN);
+ if (StringUtils.isBlank(accessToken)) {
+ String responseAccessToken = getAccessTokenByWX();
+ JSONObject jsonAccessToken = JSONObject.parseObject(responseAccessToken);
+ accessToken = jsonAccessToken.getString("access_token");
+ String errmsg = jsonAccessToken.getString("errmsg");
+ Long expiresIn = jsonAccessToken.getLong("expires_in");
+ if (StringUtils.isBlank(accessToken)) {
+ throw new ServiceException(errmsg);
+ } else {
+ expiresIn = expiresIn - 100;
+ redisService.setCacheObject(SecurityConstant.WX_TOKEN, accessToken, Long.valueOf(expiresIn), TimeUnit.SECONDS);
+ }
+ }
+ //解密手机
+ String responseUserPhoneNumber = getMobileByWX(accessToken, appUserRegisterDto.getMobileCode());
+ JSONObject jsonUserPhoneNumber = JSONObject.parseObject(responseUserPhoneNumber);
+ String errcode = jsonUserPhoneNumber.getString("errcode");
+ String errmsg = jsonUserPhoneNumber.getString("errmsg");
+ if (!errcode.equals("0")) {
+ throw new ServiceException(errmsg);
+ }
+ String phoneInfo = jsonUserPhoneNumber.getString("phone_info");
+ JSONObject jsonUserPhoneInfo = JSONObject.parseObject(phoneInfo);
+ mobile = jsonUserPhoneInfo.getString("purePhoneNumber");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ if(StringUtils.isBlank(mobile)){
+ return null;
+ }
+ //判断openid是否被其他手机号占用
+ Member checkMember = memberMapper.getOneByMiniOpenid(appUserRegisterDto.getMiniOpenid());
+ if(checkMember!=null&&!checkMember.getMobile().equals(mobile)){
+ throw new ServiceException("微信号换绑手机需联系客服");
+ }
+ Member member = memberMapper.selectMemberByMobile(mobile);
+ SysUser sysUser;
+ //获取用户为空则新建
+ if(member == null){
+ //创建新用户
+ sysUser = new SysUser();
+ sysUser.setUserName(mobile+"-3");
+ sysUser.setUserType("03");
+ sysUser.setNickName("鸿瑞堂用户");
+ sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
+ String password = "hongruitang";
+ sysUser.setPassword(SecurityUtils.encryptPassword(password));
+ sysUser = sysUserService.registerUser(sysUser).getData();
+ member = new Member();
+ String memberId = IdUtils.simpleUUID();
+ member.setUserId(sysUser.getUserId());
+ member.setDelFlag(0);
+ member.setNickName("鸿瑞堂用户");
+ member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
+ member.setMemberId(memberId);
+ member.setRelationShopId(1L);
+ member.setBindingFlag(0);
+ member.setCreateTime(new Date());
+ }else{
+ sysUser = sysUserService.getSysUser(member.getUserId()).getData();
+ }
+ member.setWxUnionid(appUserRegisterDto.getWxUnionid());
+ member.setMiniOpenid(appUserRegisterDto.getMiniOpenid());
+ log.info("member-----------------"+member.toString());
+ this.saveOrUpdate(member);
+ appUserRegisterVo.setMobile(mobile);
+ appUserRegisterVo.setNickName(member.getNickName());
+ appUserRegisterVo.setOpenid(member.getMiniOpenid());
+ appUserRegisterVo.setUnionid(member.getWxUnionid());
+ appUserRegisterVo.setSysUser(sysUser);
+ return appUserRegisterVo;
}
public static String getAccessTokenByWX() throws Exception {
--
Gitblit v1.7.1