|
|
@@ -144,16 +144,20 @@ public class LifeUserService extends ServiceImpl<LifeUserGatewayMapper, LifeUser
|
|
|
}
|
|
|
|
|
|
public LifeUserVo userLogin(String phoneNum, String inviteCode, String macIp) {
|
|
|
- LifeUser user = getUserByPhone(phoneNum);
|
|
|
+ LifeUser user = getUserByPhoneNew(phoneNum);
|
|
|
if (user == null) {
|
|
|
LifeUser lifeUser = new LifeUser();
|
|
|
lifeUser.setUserPhone(phoneNum);
|
|
|
lifeUser.setUserName(phoneNum);
|
|
|
lifeUser.setRealName(phoneNum);
|
|
|
+ lifeUser.setLogoutFlag(LifeUser.LOGOUT_FLAG_NORMAL);
|
|
|
lifeUser.setCreatedTime(new Date());
|
|
|
int ret = lifeUserMapper.insert(lifeUser);
|
|
|
if (ret == 1) {
|
|
|
- LifeUser user2 = getUserByPhone(phoneNum);
|
|
|
+ LifeUser user2 = lifeUser.getId() != null ? lifeUser : getUserByPhoneNew(phoneNum);
|
|
|
+ if (user2 == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
LifeUserVo userVo = new LifeUserVo();
|
|
|
BeanUtils.copyProperties(user2, userVo);
|
|
|
Map<String, String> tokenMap = new HashMap<>();
|
|
|
@@ -235,9 +239,26 @@ public class LifeUserService extends ServiceImpl<LifeUserGatewayMapper, LifeUser
|
|
|
}
|
|
|
|
|
|
public LifeUser getUserByPhone(String phoneNum) {
|
|
|
- LambdaQueryWrapper<LifeUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- lambdaQueryWrapper.eq(LifeUser::getUserPhone, phoneNum);
|
|
|
- return this.getOne(lambdaQueryWrapper);
|
|
|
+ return findLatestActiveUserByPhone(phoneNum);
|
|
|
+ }
|
|
|
+
|
|
|
+ public LifeUser getUserByPhoneNew(String phoneNum) {
|
|
|
+ return findLatestActiveUserByPhone(phoneNum);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 按手机号取最新可用用户:未注销或冷静期;logout_flag 为空视为未注销(历史数据)
|
|
|
+ */
|
|
|
+ private LifeUser findLatestActiveUserByPhone(String phoneNum) {
|
|
|
+ LambdaQueryWrapper<LifeUser> w = new LambdaQueryWrapper<>();
|
|
|
+ w.eq(LifeUser::getUserPhone, phoneNum);
|
|
|
+ w.and(x -> x.isNull(LifeUser::getLogoutFlag)
|
|
|
+ .or().eq(LifeUser::getLogoutFlag, LifeUser.LOGOUT_FLAG_NORMAL)
|
|
|
+ .or().eq(LifeUser::getLogoutFlag, LifeUser.LOGOUT_FLAG_COOLING));
|
|
|
+ w.orderByDesc(LifeUser::getCreatedTime).orderByDesc(LifeUser::getId);
|
|
|
+ w.last("LIMIT 1");
|
|
|
+ List<LifeUser> list = this.list(w);
|
|
|
+ return list.isEmpty() ? null : list.get(0);
|
|
|
}
|
|
|
|
|
|
public LifeUser getUserByPhoneDelete(String phoneNum) {
|