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){
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,"登陆失败,参数异常");
}

View File

@@ -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;
}

View File

@@ -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);
}
}

View File

@@ -29,6 +29,8 @@ public interface UserService extends IService<User> {
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<User> {
void updateBaseUser(UpdateUserReq updateUserReq);
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));
}
@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
public void resetPassword(Long userId, String password) {
if(userId == null || StringUtils.isEmpty(password)){
@@ -335,7 +348,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> 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<UserMapper,User> 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));
}
}