feat: 注册登录缓存用户信息
This commit is contained in:
@@ -3,14 +3,22 @@ package com.schisandra.auth.application.controller;
|
|||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
|
import com.google.gson.Gson;
|
||||||
import com.schisandra.auth.application.convert.SchisandraAuthUserDTOConverter;
|
import com.schisandra.auth.application.convert.SchisandraAuthUserDTOConverter;
|
||||||
import com.schisandra.auth.application.dto.SchisandraAuthUserDTO;
|
import com.schisandra.auth.application.dto.SchisandraAuthUserDTO;
|
||||||
import com.schisandra.auth.application.utils.CheckRouteCaptcha;
|
import com.schisandra.auth.application.utils.CheckRouteCaptcha;
|
||||||
import com.schisandra.auth.common.entity.CaptchaResult;
|
import com.schisandra.auth.common.entity.CaptchaResult;
|
||||||
import com.schisandra.auth.common.entity.Result;
|
import com.schisandra.auth.common.entity.Result;
|
||||||
|
import com.schisandra.auth.common.enums.UserRoleEnum;
|
||||||
import com.schisandra.auth.common.redis.RedisUtil;
|
import com.schisandra.auth.common.redis.RedisUtil;
|
||||||
import com.schisandra.auth.domain.bo.SchisandraAuthUserBO;
|
import com.schisandra.auth.domain.bo.SchisandraAuthUserBO;
|
||||||
|
import com.schisandra.auth.domain.service.SchisandraAuthPermissionDomainService;
|
||||||
|
import com.schisandra.auth.domain.service.SchisandraAuthRoleDomainService;
|
||||||
|
import com.schisandra.auth.domain.service.SchisandraAuthRolePermissionDomainService;
|
||||||
import com.schisandra.auth.domain.service.SchisandraAuthUserDomainService;
|
import com.schisandra.auth.domain.service.SchisandraAuthUserDomainService;
|
||||||
|
import com.schisandra.auth.infra.basic.entity.SchisandraAuthPermission;
|
||||||
|
import com.schisandra.auth.infra.basic.entity.SchisandraAuthRole;
|
||||||
|
import com.schisandra.auth.infra.basic.entity.SchisandraAuthRolePermission;
|
||||||
import com.schisandra.auth.infra.basic.entity.SchisandraAuthUser;
|
import com.schisandra.auth.infra.basic.entity.SchisandraAuthUser;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
@@ -18,7 +26,10 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Classname SchisandraAuthUserController
|
* @Classname SchisandraAuthUserController
|
||||||
@@ -41,7 +52,20 @@ public class SchisandraAuthUserController {
|
|||||||
private final String AUTH_PHONE_PREFIX = "auth.phone";
|
private final String AUTH_PHONE_PREFIX = "auth.phone";
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
CheckRouteCaptcha checkRouteCaptcha;
|
private CheckRouteCaptcha checkRouteCaptcha;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SchisandraAuthRoleDomainService schisandraAuthRoleDomainService;
|
||||||
|
|
||||||
|
private final String AUTH_PERMISSION_PREFIX = "auth.permission";
|
||||||
|
|
||||||
|
private final String AUTH_ROLE_PREFIX = "auth.role";
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SchisandraAuthRolePermissionDomainService schisandraAuthRolePermissionDomainService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SchisandraAuthPermissionDomainService schisandraAuthPermissionDomainService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 注册
|
* @description: 注册
|
||||||
@@ -75,6 +99,7 @@ public class SchisandraAuthUserController {
|
|||||||
try {
|
try {
|
||||||
SchisandraAuthUserBO authUserBO = SchisandraAuthUserDTOConverter.INSTANCE.convertDTOToBO(schisandraAuthUserDTO);
|
SchisandraAuthUserBO authUserBO = SchisandraAuthUserDTOConverter.INSTANCE.convertDTOToBO(schisandraAuthUserDTO);
|
||||||
if (schisandraAuthUserDomainService.register(authUserBO)) {
|
if (schisandraAuthUserDomainService.register(authUserBO)) {
|
||||||
|
userInfoPersistence(authUserBO.getId());
|
||||||
return CaptchaResult.ok("注册成功");
|
return CaptchaResult.ok("注册成功");
|
||||||
} else {
|
} else {
|
||||||
return CaptchaResult.failWithCode("注册失败");
|
return CaptchaResult.failWithCode("注册失败");
|
||||||
@@ -120,9 +145,11 @@ public class SchisandraAuthUserController {
|
|||||||
StpUtil.login(result.getId());
|
StpUtil.login(result.getId());
|
||||||
String userToken = StpUtil.getTokenValueByLoginId(result.getId());
|
String userToken = StpUtil.getTokenValueByLoginId(result.getId());
|
||||||
map.put("token", userToken);
|
map.put("token", userToken);
|
||||||
|
userInfoPersistence(result.getId());
|
||||||
return CaptchaResult.ok(map);
|
return CaptchaResult.ok(map);
|
||||||
} else {
|
} else {
|
||||||
StpUtil.login(result.getId());
|
StpUtil.login(result.getId());
|
||||||
|
userInfoPersistence(result.getId());
|
||||||
return CaptchaResult.ok(result);
|
return CaptchaResult.ok(result);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -151,5 +178,31 @@ public class SchisandraAuthUserController {
|
|||||||
return Result.fail("该手机号已注册,请直接登录");
|
return Result.fail("该手机号已注册,请直接登录");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 用户信息持久化
|
||||||
|
* @param: [authUserId]
|
||||||
|
* @return: void
|
||||||
|
* @author: landaiqing
|
||||||
|
* @date: 2024/6/2 0:37
|
||||||
|
*/
|
||||||
|
private void userInfoPersistence(Long authUserId) {
|
||||||
|
// 查询用户角色并存入redis
|
||||||
|
SchisandraAuthRole schisandraAuthRole = schisandraAuthRoleDomainService.queryByRoleId(UserRoleEnum.NORMAL_USER.getCode());
|
||||||
|
String roleKey = redisUtil.buildKey(AUTH_ROLE_PREFIX, String.valueOf(authUserId));
|
||||||
|
List<SchisandraAuthRole> roleList = new LinkedList<>();
|
||||||
|
roleList.add(schisandraAuthRole);
|
||||||
|
redisUtil.set(roleKey, new Gson().toJson(roleList));
|
||||||
|
|
||||||
|
// 查询用户权限并存入redis
|
||||||
|
SchisandraAuthRolePermission schisandraAuthRolePermission = new SchisandraAuthRolePermission();
|
||||||
|
schisandraAuthRolePermission.setRoleId(UserRoleEnum.NORMAL_USER.getCode());
|
||||||
|
List<SchisandraAuthRolePermission> rolePermissionList = schisandraAuthRolePermissionDomainService.queryByRoleId(schisandraAuthRolePermission);
|
||||||
|
List<Long> permissionIdList = rolePermissionList.stream()
|
||||||
|
.map(SchisandraAuthRolePermission::getPermissionId).collect(Collectors.toList());
|
||||||
|
List<SchisandraAuthPermission> permissionList = schisandraAuthPermissionDomainService.queryListByIds(permissionIdList);
|
||||||
|
String permissionKey = redisUtil.buildKey(AUTH_PERMISSION_PREFIX, String.valueOf(authUserId));
|
||||||
|
redisUtil.set(permissionKey, new Gson().toJson(permissionList));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -3,6 +3,8 @@ package com.schisandra.auth.domain.service;
|
|||||||
import com.schisandra.auth.domain.bo.SchisandraAuthPermissionBO;
|
import com.schisandra.auth.domain.bo.SchisandraAuthPermissionBO;
|
||||||
import com.schisandra.auth.infra.basic.entity.SchisandraAuthPermission;
|
import com.schisandra.auth.infra.basic.entity.SchisandraAuthPermission;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
public interface SchisandraAuthPermissionDomainService {
|
public interface SchisandraAuthPermissionDomainService {
|
||||||
int update(SchisandraAuthPermissionBO schisandraAuthPermissionBO);
|
int update(SchisandraAuthPermissionBO schisandraAuthPermissionBO);
|
||||||
@@ -10,4 +12,5 @@ public interface SchisandraAuthPermissionDomainService {
|
|||||||
Object insert(SchisandraAuthPermissionBO schisandraAuthPermissionBO);
|
Object insert(SchisandraAuthPermissionBO schisandraAuthPermissionBO);
|
||||||
SchisandraAuthPermissionBO select(SchisandraAuthPermissionBO schisandraAuthPermissionBO);
|
SchisandraAuthPermissionBO select(SchisandraAuthPermissionBO schisandraAuthPermissionBO);
|
||||||
|
|
||||||
|
List<SchisandraAuthPermission> queryListByIds(List<Long> permissionIdList);
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package com.schisandra.auth.domain.service;
|
package com.schisandra.auth.domain.service;
|
||||||
|
|
||||||
import com.schisandra.auth.domain.bo.SchisandraAuthRoleBO;
|
import com.schisandra.auth.domain.bo.SchisandraAuthRoleBO;
|
||||||
|
import com.schisandra.auth.infra.basic.entity.SchisandraAuthRole;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -48,4 +49,6 @@ public interface SchisandraAuthRoleDomainService {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
Object select(SchisandraAuthRoleBO schisandraAuthRoleBO);
|
Object select(SchisandraAuthRoleBO schisandraAuthRoleBO);
|
||||||
|
|
||||||
|
SchisandraAuthRole queryByRoleId(Long code);
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,9 @@
|
|||||||
package com.schisandra.auth.domain.service;
|
package com.schisandra.auth.domain.service;
|
||||||
|
|
||||||
import com.schisandra.auth.domain.bo.SchisandraAuthRolePermissionBO;
|
import com.schisandra.auth.domain.bo.SchisandraAuthRolePermissionBO;
|
||||||
|
import com.schisandra.auth.infra.basic.entity.SchisandraAuthRolePermission;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 领域service
|
* 领域service
|
||||||
@@ -25,4 +28,5 @@ public interface SchisandraAuthRolePermissionDomainService {
|
|||||||
*/
|
*/
|
||||||
Boolean delete(SchisandraAuthRolePermissionBO schisandraAuthRolePermissionBO);
|
Boolean delete(SchisandraAuthRolePermissionBO schisandraAuthRolePermissionBO);
|
||||||
|
|
||||||
|
List<SchisandraAuthRolePermission> queryByRoleId(SchisandraAuthRolePermission schisandraAuthRolePermission);
|
||||||
}
|
}
|
||||||
|
@@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -69,4 +70,9 @@ public class SchisandraAuthPermissionDomainServiceImpl implements SchisandraAuth
|
|||||||
SchisandraAuthPermissionBO schisandraAuthPermissionBO1 = SchisandraAuthPermissionBOConverter.INSTANCE.convertEntityToBO(schisandraAuthPermission1);
|
SchisandraAuthPermissionBO schisandraAuthPermissionBO1 = SchisandraAuthPermissionBOConverter.INSTANCE.convertEntityToBO(schisandraAuthPermission1);
|
||||||
return schisandraAuthPermissionBO1;
|
return schisandraAuthPermissionBO1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SchisandraAuthPermission> queryListByIds(List<Long> permissionIdList) {
|
||||||
|
return schisandraAuthPermissionService.queryListByIds(permissionIdList);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -53,4 +53,9 @@ public class SchisandraAuthRoleDomainServiceImpl implements SchisandraAuthRoleDo
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SchisandraAuthRole queryByRoleId(Long code) {
|
||||||
|
return schisandraAuthRoleService.queryByRoleId(code);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 领域service实现了
|
* 领域service实现了
|
||||||
@@ -46,4 +47,9 @@ public class SchisandraAuthRolePermissionDomainServiceImpl implements Schisandra
|
|||||||
return schisandraAuthRolePermissionService.update(schisandraAuthRolePermission) > 0;
|
return schisandraAuthRolePermissionService.update(schisandraAuthRolePermission) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SchisandraAuthRolePermission> queryByRoleId(SchisandraAuthRolePermission schisandraAuthRolePermission) {
|
||||||
|
return schisandraAuthRolePermissionService.queryByRoleId(schisandraAuthRolePermission);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user