This commit is contained in:
77
2024-04-28 00:53:38 +08:00
parent 5904eab465
commit 9d8f7ee8ad
5 changed files with 49 additions and 9 deletions

View File

@@ -63,7 +63,9 @@ public class AuthAppController {
if(loginBody.getLoginType() == 2){ if(loginBody.getLoginType() == 2){
token = loginManager.login(loginBody.getUsername(), loginBody.getPassword()); token = loginManager.login(loginBody.getUsername(), loginBody.getPassword());
}else if(loginBody.getLoginType() == 1){ }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{ }else{
return R.fail(600,"登陆失败,参数异常"); return R.fail(600,"登陆失败,参数异常");
} }

View File

@@ -9,8 +9,8 @@ import javax.validation.constraints.NotNull;
@Data @Data
@Schema(description = "登陆入参模型") @Schema(description = "登陆入参模型")
public class LoginUser { public class LoginUser {
@Schema(description = "登陆类型 1-手机验证码登陆 2-密码登陆") @Schema(description = "登陆类型 1-手机验证码登陆 2-密码登陆 3-微信登录")
@NotNull(message = "1-手机验证码登陆 2-密码登陆") @NotNull(message = "1-手机验证码登陆 2-密码登陆 3-微信登录")
private Integer loginType = 1; private Integer loginType = 1;
@Schema(description = "登陆账号(手机号码)") @Schema(description = "登陆账号(手机号码)")
@NotEmpty(message = "手机号不能为空") @NotEmpty(message = "手机号不能为空")
@@ -21,4 +21,6 @@ public class LoginUser {
private String code; private String code;
@Schema(description = "邀请码(手机验证码登陆的时候,如果用户未注册会自动注册,可以输入邀请码)") @Schema(description = "邀请码(手机验证码登陆的时候,如果用户未注册会自动注册,可以输入邀请码)")
private String inviteCode; private String inviteCode;
@Schema(description = "微信openId")
private String openId;
} }

View File

@@ -95,19 +95,19 @@ public class LoginManager {
return login(user); 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); boolean check = smsVerifyService.check(CodeEnum.LOGIN, mobile, code);
if(!check){ if(!check){
throw new ServiceException("验证码错误"); throw new ServiceException("验证码错误");
} }
User user = userService.getByUsername(mobile); User user = userService.getByUsername(mobile);
if(user == null){ if(user == null){
user = this.register(mobile, inviteCode); user = this.register(mobile, inviteCode,openId);
} }
return login(user); return login(user);
} }
public User register(String mobile,String inviteCode) { public User register(String mobile,String inviteCode,String openId) {
User user = userService.getByUsername(mobile); User user = userService.getByUsername(mobile);
if(user != null){ if(user != null){
return user; return user;
@@ -121,7 +121,7 @@ public class LoginManager {
lock.lock(); lock.lock();
try { try {
LoginManager bean = SpringUtil.getBean(LoginManager.class); LoginManager bean = SpringUtil.getBean(LoginManager.class);
user = bean.registerUser(mobile,inviteCode); user = bean.registerUser(mobile,inviteCode,openId);
}finally { }finally {
lock.unlock(); lock.unlock();
} }
@@ -175,7 +175,7 @@ public class LoginManager {
@Transactional(rollbackFor = Exception.class) @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 cos = systemConfigManager.getSystemConfig(SystemConfigEnum.COS_DOMAIN);
String usercode = userCodeGenService.getCodeGen(); String usercode = userCodeGenService.getCodeGen();
User user = new User(); User user = new User();
@@ -188,6 +188,10 @@ public class LoginManager {
user.setGender(UserGenderEnum.NONE.getCode()); user.setGender(UserGenderEnum.NONE.getCode());
user.setAvatar(cos + UserGenderEnum.NONE.getDefaultAvatar()); user.setAvatar(cos + UserGenderEnum.NONE.getDefaultAvatar());
user.setImToken(IdUtil.simpleUUID()); user.setImToken(IdUtil.simpleUUID());
user.setOpenId(openId);
if(StringUtils.isNotEmpty(openId)){
userService.removeOpenId(openId);
}
userService.save(user); userService.save(user);
CreateUserReq req = new CreateUserReq(); CreateUserReq req = new CreateUserReq();
req.setAccid(user.getId()+""); req.setAccid(user.getId()+"");
@@ -276,4 +280,12 @@ public class LoginManager {
} }
userService.resetPassword(user.getId(),password); userService.resetPassword(user.getId(),password);
} }
public String loginWx(String openId) {
User user = userService.getByUsername(openId);
if(user == null){
throw new ServiceException("微信登录失败");
}
return login(user);
}
} }

View File

@@ -29,6 +29,8 @@ public interface UserService extends IService<User> {
User getByUsername(String username); User getByUsername(String username);
User getByOpenId(String openId);
void resetPassword(Long userId, String password); void resetPassword(Long userId, String password);
User getByUsercode(String usercode); User getByUsercode(String usercode);
@@ -60,4 +62,6 @@ public interface UserService extends IService<User> {
void updateBaseUser(UpdateUserReq updateUserReq); void updateBaseUser(UpdateUserReq updateUserReq);
void checkFinishStatus(Long userId); void checkFinishStatus(Long userId);
void removeOpenId(String openId);
} }

View File

@@ -97,6 +97,19 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
.eq(User::getMobile,username)); .eq(User::getMobile,username));
} }
@Override
public User getByOpenId(String openId) {
List<User> 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 @Override
public void resetPassword(Long userId, String password) { public void resetPassword(Long userId, String password) {
if(userId == null || StringUtils.isEmpty(password)){ if(userId == null || StringUtils.isEmpty(password)){
@@ -335,7 +348,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
if(user != null){ if(user != null){
throw new ServiceException("手机号已存在!"); throw new ServiceException("手机号已存在!");
} }
user = loginManager.registerUser(bo.getMobile(), null); user = loginManager.registerUser(bo.getMobile(), null,null);
UpdateUserReq updateUser = BeanConvertUtil.convertTo(bo, UpdateUserReq::new); UpdateUserReq updateUser = BeanConvertUtil.convertTo(bo, UpdateUserReq::new);
updateUser.setId(user.getId()); updateUser.setId(user.getId());
UserService userService = SpringUtil.getBean(UserService.class); UserService userService = SpringUtil.getBean(UserService.class);
@@ -420,4 +433,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
.set(User::getFinishBaseStatus, 1)); .set(User::getFinishBaseStatus, 1));
} }
} }
@Override
public void removeOpenId(String openId) {
this.update(Wrappers.lambdaUpdate(User.class)
.eq(User::getOpenId,openId)
.set(User::getOpenId, null));
}
} }