diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/AuthAppController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/AuthAppController.java index 7931b17..8856325 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/AuthAppController.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/AuthAppController.java @@ -63,7 +63,9 @@ public class AuthAppController { if(loginBody.getLoginType() == 2){ token = loginManager.login(loginBody.getUsername(), loginBody.getPassword()); }else if(loginBody.getLoginType() == 1){ - token = loginManager.loginSms(loginBody.getUsername(), loginBody.getCode(), loginBody.getInviteCode()); + token = loginManager.loginSms(loginBody.getUsername(), loginBody.getCode(), loginBody.getInviteCode(), loginBody.getOpenId()); + }else if(loginBody.getLoginType() == 3){ + token = loginManager.loginWx(loginBody.getOpenId()); }else{ return R.fail(600,"登陆失败,参数异常"); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/auth/LoginUser.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/auth/LoginUser.java index 023c3c3..6b3de81 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/auth/LoginUser.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/auth/LoginUser.java @@ -9,8 +9,8 @@ import javax.validation.constraints.NotNull; @Data @Schema(description = "登陆入参模型") public class LoginUser { - @Schema(description = "登陆类型 1-手机验证码登陆 2-密码登陆") - @NotNull(message = "1-手机验证码登陆 2-密码登陆") + @Schema(description = "登陆类型 1-手机验证码登陆 2-密码登陆 3-微信登录") + @NotNull(message = "1-手机验证码登陆 2-密码登陆 3-微信登录") private Integer loginType = 1; @Schema(description = "登陆账号(手机号码)") @NotEmpty(message = "手机号不能为空") @@ -21,4 +21,6 @@ public class LoginUser { private String code; @Schema(description = "邀请码(手机验证码登陆的时候,如果用户未注册会自动注册,可以输入邀请码)") private String inviteCode; + @Schema(description = "微信openId") + private String openId; } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/LoginManager.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/LoginManager.java index 2e56e0d..8b19df0 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/LoginManager.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/LoginManager.java @@ -95,19 +95,19 @@ public class LoginManager { return login(user); } - public String loginSms(String mobile,String code,String inviteCode){ + public String loginSms(String mobile,String code,String inviteCode,String openId){ boolean check = smsVerifyService.check(CodeEnum.LOGIN, mobile, code); if(!check){ throw new ServiceException("验证码错误"); } User user = userService.getByUsername(mobile); if(user == null){ - user = this.register(mobile, inviteCode); + user = this.register(mobile, inviteCode,openId); } return login(user); } - public User register(String mobile,String inviteCode) { + public User register(String mobile,String inviteCode,String openId) { User user = userService.getByUsername(mobile); if(user != null){ return user; @@ -121,7 +121,7 @@ public class LoginManager { lock.lock(); try { LoginManager bean = SpringUtil.getBean(LoginManager.class); - user = bean.registerUser(mobile,inviteCode); + user = bean.registerUser(mobile,inviteCode,openId); }finally { lock.unlock(); } @@ -175,7 +175,7 @@ public class LoginManager { @Transactional(rollbackFor = Exception.class) - public User registerUser(String mobile,String inviteCode){ + public User registerUser(String mobile,String inviteCode,String openId){ String cos = systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN); String usercode = userCodeGenService.getCodeGen(); User user = new User(); @@ -188,6 +188,10 @@ public class LoginManager { user.setGender(UserGenderEnum.NONE.getCode()); user.setAvatar(cos + UserGenderEnum.NONE.getDefaultAvatar()); user.setImToken(IdUtil.simpleUUID()); + user.setOpenId(openId); + if(StringUtils.isNotEmpty(openId)){ + userService.removeOpenId(openId); + } userService.save(user); CreateUserReq req = new CreateUserReq(); req.setAccid(user.getId()+""); @@ -276,4 +280,12 @@ public class LoginManager { } userService.resetPassword(user.getId(),password); } + + public String loginWx(String openId) { + User user = userService.getByUsername(openId); + if(user == null){ + throw new ServiceException("微信登录失败"); + } + return login(user); + } } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserService.java index 391c11e..a4ba34e 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserService.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserService.java @@ -29,6 +29,8 @@ public interface UserService extends IService { User getByUsername(String username); + User getByOpenId(String openId); + void resetPassword(Long userId, String password); User getByUsercode(String usercode); @@ -60,4 +62,6 @@ public interface UserService extends IService { void updateBaseUser(UpdateUserReq updateUserReq); void checkFinishStatus(Long userId); + + void removeOpenId(String openId); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserServiceImpl.java index a76d059..2464f1e 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserServiceImpl.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserServiceImpl.java @@ -97,6 +97,19 @@ public class UserServiceImpl extends ServiceImpl implements Use .eq(User::getMobile,username)); } + @Override + public User getByOpenId(String openId) { + List list = this.list(Wrappers.lambdaQuery(User.class) + .eq(User::getOpenId, openId)); + if(list.size() > 1){ + return null; + } + if(list.size() == 1){ + return list.get(0); + } + return null; + } + @Override public void resetPassword(Long userId, String password) { if(userId == null || StringUtils.isEmpty(password)){ @@ -335,7 +348,7 @@ public class UserServiceImpl extends ServiceImpl implements Use if(user != null){ throw new ServiceException("手机号已存在!"); } - user = loginManager.registerUser(bo.getMobile(), null); + user = loginManager.registerUser(bo.getMobile(), null,null); UpdateUserReq updateUser = BeanConvertUtil.convertTo(bo, UpdateUserReq::new); updateUser.setId(user.getId()); UserService userService = SpringUtil.getBean(UserService.class); @@ -420,4 +433,11 @@ public class UserServiceImpl extends ServiceImpl implements Use .set(User::getFinishBaseStatus, 1)); } } + + @Override + public void removeOpenId(String openId) { + this.update(Wrappers.lambdaUpdate(User.class) + .eq(User::getOpenId,openId) + .set(User::getOpenId, null)); + } }