|
@@ -27,7 +27,6 @@ import cn.newfeifan.mall.module.system.enums.logger.LoginResultEnum;
|
|
|
import cn.newfeifan.mall.module.system.enums.oauth2.OAuth2ClientConstants;
|
|
|
import cn.newfeifan.mall.module.system.enums.sms.SmsSceneEnum;
|
|
|
import cn.newfeifan.mall.module.system.enums.social.SocialTypeEnum;
|
|
|
-import jodd.util.StringUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -115,32 +114,21 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
|
|
throw exception(AUTH_SOCIAL_USER_NOT_FOUND);
|
|
|
}
|
|
|
|
|
|
- // 情况一:已绑定,直接读取用户信息
|
|
|
- MemberUserDO user;
|
|
|
- if (socialUser.getUserId() != null) {
|
|
|
- user = userService.getUser(socialUser.getUserId());
|
|
|
- // 情况二:未绑定,注册用户 + 绑定用户
|
|
|
- } else {
|
|
|
-
|
|
|
- //通过微信 + 手机号首次登录
|
|
|
- if (!StringUtil.isEmpty(phone)) {
|
|
|
- //如果会员表中有记录
|
|
|
- user = userService.getUserByMobile(phone);
|
|
|
- if (user == null) {
|
|
|
- //加入手机号
|
|
|
- user = userService.createUser(phone, socialUser.getNickname(), socialUser.getAvatar(), getClientIP(), getTerminal(), reqVO.getLinkId(),null);
|
|
|
- }
|
|
|
- } else {
|
|
|
- user = userService.createUser(null, socialUser.getNickname(), socialUser.getAvatar(), getClientIP(), getTerminal(), reqVO.getLinkId(),null);
|
|
|
- }
|
|
|
-
|
|
|
- socialUserApi.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
|
|
|
- reqVO.getType(), reqVO.getCode(), reqVO.getState()));
|
|
|
+ //重名校验
|
|
|
+ if (userService.selectCountByUsername(reqVO.getUsername()) > 0) {
|
|
|
+ throw exception(AUTH_USERNAME_EXISTS);
|
|
|
}
|
|
|
- if (user == null) {
|
|
|
- throw exception(USER_NOT_EXISTS);
|
|
|
+
|
|
|
+ //微信能绑定的账号上限校验
|
|
|
+ if(socialUserApi.wxBindIsMax(socialUser.getId())){
|
|
|
+ throw exception(AUTH_SOCIAL_USER_BIND_MAX);
|
|
|
}
|
|
|
|
|
|
+ MemberUserDO user = userService.createUser(phone, socialUser.getNickname(), socialUser.getAvatar(), getClientIP(), getTerminal(), reqVO.getLinkId(), reqVO.getUsername());
|
|
|
+
|
|
|
+ socialUserApi.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(),
|
|
|
+ reqVO.getType(), reqVO.getCode(), reqVO.getState()));
|
|
|
+
|
|
|
// 创建 Token 令牌,记录登录日志
|
|
|
return createTokenAfterLoginSuccess(user, user.getMobile(), LoginLogTypeEnum.LOGIN_SOCIAL, socialUser.getOpenid());
|
|
|
}
|
|
@@ -155,16 +143,16 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
|
|
}
|
|
|
|
|
|
//如果同一个微信绑定了多个用户就返回用户集 供用户选择登录
|
|
|
- if(socialUser.getUserIds().size() != 1){
|
|
|
+ if (socialUser.getUserIds().size() != 1) {
|
|
|
List<MemberUserDO> users = userService.getUserList(socialUser.getUserIds());
|
|
|
List<AppAuthMemberUserRespVO> memberUserRespVOS = users.stream().map(user -> AppAuthMemberUserRespVO
|
|
|
- .builder()
|
|
|
- .username(user.getUsername())
|
|
|
- .avatar(user.getAvatar())
|
|
|
- .build())
|
|
|
+ .builder()
|
|
|
+ .username(user.getUsername())
|
|
|
+ .avatar(user.getAvatar())
|
|
|
+ .build())
|
|
|
.collect(Collectors.toList());
|
|
|
- return AppAuthLoginRespVO.builder().socialUsers(memberUserRespVOS).build();
|
|
|
- }else{
|
|
|
+ return AppAuthLoginRespVO.builder().openid(socialUser.getOpenid()).socialUsers(memberUserRespVOS).build();
|
|
|
+ } else {
|
|
|
//如果只有一个账号那就直接登录
|
|
|
socialUser.setUserId(socialUser.getUserIds().get(0));
|
|
|
}
|
|
@@ -184,7 +172,7 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
|
|
|
|
|
//如果微信绑定的账号中没有此账号那就返回报错
|
|
|
Boolean flag = socialUserApi.wxIsBindByUserId(reqVO.getOpenId(), user.getId());
|
|
|
- if(!flag){
|
|
|
+ if (!flag) {
|
|
|
throw exception(AUTH_SOCIAL_USER_BIND_USER_NOT_FOUND);
|
|
|
}
|
|
|
|
|
@@ -199,7 +187,7 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
|
|
Assert.notNull(phoneNumberInfo, "获得手机信息失败,结果为空");
|
|
|
|
|
|
// 获得获得注册用户
|
|
|
- MemberUserDO user = userService.createUserIfAbsent(phoneNumberInfo.getPurePhoneNumber(),null,
|
|
|
+ MemberUserDO user = userService.createUserIfAbsent(phoneNumberInfo.getPurePhoneNumber(), null,
|
|
|
getClientIP(), TerminalEnum.WECHAT_MINI_PROGRAM.getTerminal());
|
|
|
Assert.notNull(user, "获取用户失败,结果为空");
|
|
|
|
|
@@ -336,6 +324,7 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
|
|
|
|
|
/**
|
|
|
* 校验手机号是否达到上限
|
|
|
+ *
|
|
|
* @param mobile 手机号
|
|
|
*/
|
|
|
private void verifyMobileIsMaximize(String mobile) {
|
|
@@ -347,9 +336,10 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
|
|
|
|
|
/**
|
|
|
* 校验用户名
|
|
|
+ *
|
|
|
* @param username 用户名
|
|
|
*/
|
|
|
- private void verifyUsername(String username){
|
|
|
+ private void verifyUsername(String username) {
|
|
|
if (userService.selectCountByUsername(username) > 0) {
|
|
|
throw exception(AUTH_USERNAME_EXISTS);
|
|
|
}
|