|
@@ -33,7 +33,9 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
import static cn.newfeifan.mall.framework.common.util.servlet.ServletUtils.getClientIP;
|
|
@@ -103,7 +105,7 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
|
|
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public AppAuthLoginRespVO socialLogin(AppAuthSocialLoginReqVO reqVO, String phone, Boolean isFirst, Boolean isRegister) {
|
|
|
+ public AppAuthLoginRespVO socialRegister(AppAuthSocialRegisterReqVO reqVO, String phone, Boolean isFirst, Boolean isRegister) {
|
|
|
|
|
|
|
|
|
// 使用 code 授权码,进行登录。然后,获得到绑定的用户编号
|
|
@@ -143,6 +145,52 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
|
|
return createTokenAfterLoginSuccess(user, user.getMobile(), LoginLogTypeEnum.LOGIN_SOCIAL, socialUser.getOpenid());
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public AppAuthLoginRespVO socialLogin(AppAuthSocialLoginReqVO reqVO) {
|
|
|
+ // 使用 code 授权码,进行登录。然后,获得到绑定的用户编号
|
|
|
+ SocialUserRespDTO socialUser = socialUserApi.getSocialUserByCode(UserTypeEnum.MEMBER.getValue(), reqVO.getType(),
|
|
|
+ reqVO.getCode(), reqVO.getState(), true, false);
|
|
|
+ if (socialUser == null) {
|
|
|
+ throw exception(AUTH_SOCIAL_USER_NOT_FOUND);
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果同一个微信绑定了多个用户就返回用户集 供用户选择登录
|
|
|
+ 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())
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ return AppAuthLoginRespVO.builder().socialUsers(memberUserRespVOS).build();
|
|
|
+ }else{
|
|
|
+ //如果只有一个账号那就直接登录
|
|
|
+ socialUser.setUserId(socialUser.getUserIds().get(0));
|
|
|
+ }
|
|
|
+
|
|
|
+ MemberUserDO user = userService.getUser(socialUser.getUserId());
|
|
|
+ if (user == null) {
|
|
|
+ throw exception(USER_NOT_EXISTS);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建 Token 令牌,记录登录日志
|
|
|
+ return createTokenAfterLoginSuccess(user, user.getMobile(), LoginLogTypeEnum.LOGIN_SOCIAL, socialUser.getOpenid());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AppAuthLoginRespVO selectUsernameLogin(AppAuthSelectUsernameLoginReqVO reqVO) {
|
|
|
+ MemberUserDO user = userService.selectByUsername(reqVO.getUsername());
|
|
|
+
|
|
|
+ //如果微信绑定的账号中没有此账号那就返回报错
|
|
|
+ Boolean flag = socialUserApi.wxIsBindByUserId(reqVO.getOpenId(), user.getId());
|
|
|
+ if(!flag){
|
|
|
+ throw exception(AUTH_SOCIAL_USER_BIND_USER_NOT_FOUND);
|
|
|
+ }
|
|
|
+
|
|
|
+ return createTokenAfterLoginSuccess(user, user.getMobile(), LoginLogTypeEnum.LOGIN_SOCIAL, reqVO.getOpenId());
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public AppAuthLoginRespVO weixinMiniAppLogin(AppAuthWeixinMiniAppLoginReqVO reqVO) {
|
|
|
// 获得对应的手机号信息
|