|
@@ -11,7 +11,6 @@ import com.zanxiang.game.module.mybatis.entity.UserShare;
|
|
import com.zanxiang.game.module.sdk.enums.LoginTypeEnum;
|
|
import com.zanxiang.game.module.sdk.enums.LoginTypeEnum;
|
|
import com.zanxiang.game.module.sdk.enums.SmsTypeEnum;
|
|
import com.zanxiang.game.module.sdk.enums.SmsTypeEnum;
|
|
import com.zanxiang.game.module.sdk.pojo.dto.GameAppletDTO;
|
|
import com.zanxiang.game.module.sdk.pojo.dto.GameAppletDTO;
|
|
-import com.zanxiang.game.module.sdk.pojo.dto.UserDTO;
|
|
|
|
import com.zanxiang.game.module.sdk.pojo.param.LoginMobileParam;
|
|
import com.zanxiang.game.module.sdk.pojo.param.LoginMobileParam;
|
|
import com.zanxiang.game.module.sdk.pojo.param.LoginPasswordParam;
|
|
import com.zanxiang.game.module.sdk.pojo.param.LoginPasswordParam;
|
|
import com.zanxiang.game.module.sdk.pojo.param.LoginVxCodeParam;
|
|
import com.zanxiang.game.module.sdk.pojo.param.LoginVxCodeParam;
|
|
@@ -28,6 +27,7 @@ import org.apache.logging.log4j.util.Strings;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
+import reactor.util.function.Tuple2;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
@@ -105,12 +105,14 @@ public class LoginServiceImpl implements IRegisterLoginService {
|
|
//根据openId查询用户
|
|
//根据openId查询用户
|
|
User user = userService.getOne(new LambdaQueryWrapper<User>()
|
|
User user = userService.getOne(new LambdaQueryWrapper<User>()
|
|
.eq(User::getGameId, userData.getGameId()).eq(User::getOpenId, openId));
|
|
.eq(User::getGameId, userData.getGameId()).eq(User::getOpenId, openId));
|
|
- //用户已经注册
|
|
|
|
|
|
+ //已注册
|
|
if (user != null) {
|
|
if (user != null) {
|
|
//更新用户sessionKey
|
|
//更新用户sessionKey
|
|
userService.update(new LambdaUpdateWrapper<User>()
|
|
userService.update(new LambdaUpdateWrapper<User>()
|
|
.set(User::getSessionKey, sessionKey)
|
|
.set(User::getSessionKey, sessionKey)
|
|
.eq(User::getId, user.getId()));
|
|
.eq(User::getId, user.getId()));
|
|
|
|
+ //渠道更新和回传判断
|
|
|
|
+ agentService.userAgentUpdate(user, userData.getChannel());
|
|
//判断账号是否停用
|
|
//判断账号是否停用
|
|
if (Objects.equals(BanStatusEnum.BAN_STATUS.getStatus(), user.getStatus())) {
|
|
if (Objects.equals(BanStatusEnum.BAN_STATUS.getStatus(), user.getStatus())) {
|
|
return ResultVO.fail(HttpStatusEnum.ACCOUNT_HALT.getMsg());
|
|
return ResultVO.fail(HttpStatusEnum.ACCOUNT_HALT.getMsg());
|
|
@@ -118,37 +120,8 @@ public class LoginServiceImpl implements IRegisterLoginService {
|
|
//返回登录信息
|
|
//返回登录信息
|
|
return ResultVO.ok(this.createUserLoginVO(user, userData));
|
|
return ResultVO.ok(this.createUserLoginVO(user, userData));
|
|
}
|
|
}
|
|
- //渠道标识
|
|
|
|
- Long agentId;
|
|
|
|
- Long fromUserId = null;
|
|
|
|
- if (param.getShareUserId() == null) {
|
|
|
|
- agentId = agentService.getAgentIdByChannel(userData.getChannel());
|
|
|
|
- } else {
|
|
|
|
- UserDTO userDTO = userService.getUserByUserId(param.getShareUserId());
|
|
|
|
- agentId = userDTO.getLastAgentId();
|
|
|
|
- fromUserId = userDTO.getId();
|
|
|
|
- }
|
|
|
|
- //构造用户信息
|
|
|
|
- user = transform(userData, agentId, openId);
|
|
|
|
- user.setOpenId(openId);
|
|
|
|
- user.setSessionKey(sessionKey);
|
|
|
|
- //创建用户信息
|
|
|
|
- userService.save(user);
|
|
|
|
- gameUserService.createGameUser(user);
|
|
|
|
-// callBackService.userCallBack(user);
|
|
|
|
- //返回登录信息
|
|
|
|
- if (fromUserId == null) {
|
|
|
|
- return ResultVO.ok(this.createUserLoginVO(user, userData));
|
|
|
|
- }
|
|
|
|
- //记录分享信息
|
|
|
|
- UserShare userShare = UserShare.builder()
|
|
|
|
- .gameId(userData.getGameId())
|
|
|
|
- .fromUserId(fromUserId)
|
|
|
|
- .toUserId(user.getId())
|
|
|
|
- .createTime(LocalDateTime.now())
|
|
|
|
- .updateTime(LocalDateTime.now())
|
|
|
|
- .build();
|
|
|
|
- userShareService.save(userShare);
|
|
|
|
|
|
+ //用户注册
|
|
|
|
+ user = userCreateSave(userData, openId, null, null, openId, sessionKey, param.getShareUserId());
|
|
//返回登录信息
|
|
//返回登录信息
|
|
return ResultVO.ok(this.createUserLoginVO(user, userData));
|
|
return ResultVO.ok(this.createUserLoginVO(user, userData));
|
|
}
|
|
}
|
|
@@ -175,6 +148,8 @@ public class LoginServiceImpl implements IRegisterLoginService {
|
|
user = userService.getOne(new LambdaQueryWrapper<User>()
|
|
user = userService.getOne(new LambdaQueryWrapper<User>()
|
|
.eq(User::getGameId, userData.getGameId()).eq(User::getUsername, username));
|
|
.eq(User::getGameId, userData.getGameId()).eq(User::getUsername, username));
|
|
}
|
|
}
|
|
|
|
+ //渠道更新和回传判断
|
|
|
|
+ agentService.userAgentUpdate(user, userData.getChannel());
|
|
//用户信息不存在
|
|
//用户信息不存在
|
|
if (user == null) {
|
|
if (user == null) {
|
|
return ResultVO.fail(HttpStatusEnum.USERNAME_OR_PASSWORD_ERR.getMsg());
|
|
return ResultVO.fail(HttpStatusEnum.USERNAME_OR_PASSWORD_ERR.getMsg());
|
|
@@ -187,20 +162,16 @@ public class LoginServiceImpl implements IRegisterLoginService {
|
|
if (!Objects.equals(RegisterUtil.cmfPassword(password), user.getPassword())) {
|
|
if (!Objects.equals(RegisterUtil.cmfPassword(password), user.getPassword())) {
|
|
return ResultVO.fail(HttpStatusEnum.USERNAME_OR_PASSWORD_ERR.getMsg());
|
|
return ResultVO.fail(HttpStatusEnum.USERNAME_OR_PASSWORD_ERR.getMsg());
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- //注册, 用户名密码校验
|
|
|
|
- HttpStatusEnum checkRegisterEnum = this.checkRegister(username, password);
|
|
|
|
- if (!Objects.equals(checkRegisterEnum, HttpStatusEnum.SUCCESS)) {
|
|
|
|
- return ResultVO.fail(checkRegisterEnum.getMsg());
|
|
|
|
- }
|
|
|
|
- //创建用户信息
|
|
|
|
- Long agentId = agentService.getAgentIdByChannel(userData.getChannel());
|
|
|
|
- user = transform(userData, agentId, username);
|
|
|
|
- user.setPassword(password);
|
|
|
|
- userService.save(user);
|
|
|
|
- gameUserService.createGameUser(user);
|
|
|
|
-// callBackService.userCallBack(user);
|
|
|
|
|
|
+ //返回登录信息
|
|
|
|
+ return ResultVO.ok(this.createUserLoginVO(user, userData));
|
|
|
|
+ }
|
|
|
|
+ //用户注册, 用户名密码校验
|
|
|
|
+ HttpStatusEnum checkRegisterEnum = this.checkRegister(username, password);
|
|
|
|
+ if (!Objects.equals(checkRegisterEnum, HttpStatusEnum.SUCCESS)) {
|
|
|
|
+ return ResultVO.fail(checkRegisterEnum.getMsg());
|
|
}
|
|
}
|
|
|
|
+ //用户注册
|
|
|
|
+ user = userCreateSave(userData, username, password, null, null, null, null);
|
|
//返回登录信息
|
|
//返回登录信息
|
|
return ResultVO.ok(this.createUserLoginVO(user, userData));
|
|
return ResultVO.ok(this.createUserLoginVO(user, userData));
|
|
}
|
|
}
|
|
@@ -222,29 +193,72 @@ public class LoginServiceImpl implements IRegisterLoginService {
|
|
//获取用户信息
|
|
//获取用户信息
|
|
User user = userService.getOne(new LambdaQueryWrapper<User>()
|
|
User user = userService.getOne(new LambdaQueryWrapper<User>()
|
|
.eq(User::getGameId, userData.getGameId()).eq(User::getMobile, mobile));
|
|
.eq(User::getGameId, userData.getGameId()).eq(User::getMobile, mobile));
|
|
- //用户信息不存在, 直接注册
|
|
|
|
- if (user == null) {
|
|
|
|
- Long agentId = agentService.getAgentIdByChannel(userData.getChannel());
|
|
|
|
- user = transform(userData, agentId, mobile);
|
|
|
|
- user.setMobile(mobile);
|
|
|
|
- userService.save(user);
|
|
|
|
- gameUserService.createGameUser(user);
|
|
|
|
-// callBackService.userCallBack(user);
|
|
|
|
- } else {
|
|
|
|
|
|
+ //用户信息存在
|
|
|
|
+ if (user != null) {
|
|
|
|
+ //渠道更新和回传判断
|
|
|
|
+ agentService.userAgentUpdate(user, userData.getChannel());
|
|
//判断账号是否停用
|
|
//判断账号是否停用
|
|
if (Objects.equals(BanStatusEnum.BAN_STATUS.getStatus(), user.getStatus())) {
|
|
if (Objects.equals(BanStatusEnum.BAN_STATUS.getStatus(), user.getStatus())) {
|
|
return ResultVO.fail(HttpStatusEnum.ACCOUNT_HALT.getMsg());
|
|
return ResultVO.fail(HttpStatusEnum.ACCOUNT_HALT.getMsg());
|
|
}
|
|
}
|
|
|
|
+ //返回登录信息
|
|
|
|
+ return ResultVO.ok(this.createUserLoginVO(user, userData));
|
|
}
|
|
}
|
|
|
|
+ //用户注册
|
|
|
|
+ user = userCreateSave(userData, mobile, null, mobile, null, null, null);
|
|
//返回登录信息
|
|
//返回登录信息
|
|
return ResultVO.ok(this.createUserLoginVO(user, userData));
|
|
return ResultVO.ok(this.createUserLoginVO(user, userData));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private User userCreateSave(UserData userData, String userName, String password, String mobile, String openId,
|
|
|
|
+ String sessionKey, Long shareUserId) {
|
|
|
|
+ Tuple2<Long, Map<String, String>> tuple2 = agentService.getUserAgentId(userData.getChannel(), shareUserId);
|
|
|
|
+ User user = transform(userData, tuple2.getT1(), userName);
|
|
|
|
+ user.setPassword(password);
|
|
|
|
+ user.setMobile(mobile);
|
|
|
|
+ user.setOpenId(openId);
|
|
|
|
+ user.setSessionKey(sessionKey);
|
|
|
|
+ userService.save(user);
|
|
|
|
+ gameUserService.createGameUser(user);
|
|
|
|
+ callBackService.userCallBack(user, tuple2);
|
|
|
|
+ //记录分享信息
|
|
|
|
+ if (shareUserId != null) {
|
|
|
|
+ userShareService.save(UserShare.builder()
|
|
|
|
+ .gameId(userData.getGameId())
|
|
|
|
+ .fromUserId(shareUserId)
|
|
|
|
+ .toUserId(user.getId())
|
|
|
|
+ .createTime(LocalDateTime.now())
|
|
|
|
+ .updateTime(LocalDateTime.now())
|
|
|
|
+ .build());
|
|
|
|
+ }
|
|
|
|
+ return user;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private User transform(UserData userData, Long agentId, String userName) {
|
|
|
|
+ return User.builder()
|
|
|
|
+ .regAgentId(agentId)
|
|
|
|
+ .agentId(agentId)
|
|
|
|
+ .gameId(userData.getGameId())
|
|
|
|
+ .username(userName)
|
|
|
|
+ .nickname(RegisterUtil.randomNickName(userName))
|
|
|
|
+ .deviceType(userData.getDeviceType())
|
|
|
|
+ .status(BanStatusEnum.NORMAL_STATUS.getStatus())
|
|
|
|
+ .authentication(0)
|
|
|
|
+ .createTime(LocalDateTime.now())
|
|
|
|
+ .updateTime(LocalDateTime.now())
|
|
|
|
+ .deviceSystem(userData.getDeviceSystem())
|
|
|
|
+ .mac(userData.getMac())
|
|
|
|
+ .imei(userData.getImei())
|
|
|
|
+ .androidId(userData.getAndroidId())
|
|
|
|
+ .ip(userData.getIp())
|
|
|
|
+ .build();
|
|
|
|
+ }
|
|
|
|
+
|
|
private UserLoginVO createUserLoginVO(User user, UserData userData) {
|
|
private UserLoginVO createUserLoginVO(User user, UserData userData) {
|
|
//获取token
|
|
//获取token
|
|
String userToken = userTokenService.getUserToken(user.getId(), userData.getDeviceType());
|
|
String userToken = userTokenService.getUserToken(user.getId(), userData.getDeviceType());
|
|
//插入用户登录记录
|
|
//插入用户登录记录
|
|
- userLoginLogService.createUserLoginLog(user, LoginTypeEnum.LOGIN_IN.getLoginType());
|
|
|
|
|
|
+ userLoginLogService.createUserLoginLog(user, LoginTypeEnum.LOGIN_REG.getLoginType(), userData.getDeviceType());
|
|
//查询用户实名信息
|
|
//查询用户实名信息
|
|
UserCard userCard = userCardService.getOne(new LambdaQueryWrapper<UserCard>().eq(UserCard::getUserId, user.getId()));
|
|
UserCard userCard = userCardService.getOne(new LambdaQueryWrapper<UserCard>().eq(UserCard::getUserId, user.getId()));
|
|
//查询游戏
|
|
//查询游戏
|
|
@@ -271,7 +285,7 @@ public class LoginServiceImpl implements IRegisterLoginService {
|
|
public Boolean loginOut(UserData userData) {
|
|
public Boolean loginOut(UserData userData) {
|
|
User user = userService.getById(userData.getUserId());
|
|
User user = userService.getById(userData.getUserId());
|
|
//新增用户退出记录
|
|
//新增用户退出记录
|
|
- return userLoginLogService.createUserLoginLog(user, LoginTypeEnum.LOGIN_OUT.getLoginType());
|
|
|
|
|
|
+ return userLoginLogService.createUserLoginLog(user, LoginTypeEnum.LOGIN_OUT.getLoginType(), userData.getDeviceType());
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -299,25 +313,4 @@ public class LoginServiceImpl implements IRegisterLoginService {
|
|
//密码验证
|
|
//密码验证
|
|
return RegisterUtil.checkPassword(password);
|
|
return RegisterUtil.checkPassword(password);
|
|
}
|
|
}
|
|
-
|
|
|
|
- private User transform(UserData userData, Long agentId, String userName) {
|
|
|
|
- //构造用户信息
|
|
|
|
- return User.builder()
|
|
|
|
- .regAgentId(agentId)
|
|
|
|
- .agentId(agentId)
|
|
|
|
- .gameId(userData.getGameId())
|
|
|
|
- .username(userName)
|
|
|
|
- .nickname(RegisterUtil.randomNickName(userName))
|
|
|
|
- .deviceType(userData.getDeviceType())
|
|
|
|
- .status(BanStatusEnum.NORMAL_STATUS.getStatus())
|
|
|
|
- .authentication(0)
|
|
|
|
- .createTime(LocalDateTime.now())
|
|
|
|
- .updateTime(LocalDateTime.now())
|
|
|
|
- .deviceSystem(userData.getDeviceSystem())
|
|
|
|
- .mac(userData.getMac())
|
|
|
|
- .imei(userData.getImei())
|
|
|
|
- .androidId(userData.getAndroidId())
|
|
|
|
- .ip(userData.getIp())
|
|
|
|
- .build();
|
|
|
|
- }
|
|
|
|
}
|
|
}
|