feat: 注册登录缓存用户信息
This commit is contained in:
@@ -3,14 +3,22 @@ package com.schisandra.auth.application.controller;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.gson.Gson;
|
||||
import com.schisandra.auth.application.convert.SchisandraAuthUserDTOConverter;
|
||||
import com.schisandra.auth.application.dto.SchisandraAuthUserDTO;
|
||||
import com.schisandra.auth.application.utils.CheckRouteCaptcha;
|
||||
import com.schisandra.auth.common.entity.CaptchaResult;
|
||||
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.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.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 lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
@@ -18,7 +26,10 @@ import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Classname SchisandraAuthUserController
|
||||
@@ -41,7 +52,20 @@ public class SchisandraAuthUserController {
|
||||
private final String AUTH_PHONE_PREFIX = "auth.phone";
|
||||
|
||||
@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: 注册
|
||||
@@ -75,6 +99,7 @@ public class SchisandraAuthUserController {
|
||||
try {
|
||||
SchisandraAuthUserBO authUserBO = SchisandraAuthUserDTOConverter.INSTANCE.convertDTOToBO(schisandraAuthUserDTO);
|
||||
if (schisandraAuthUserDomainService.register(authUserBO)) {
|
||||
userInfoPersistence(authUserBO.getId());
|
||||
return CaptchaResult.ok("注册成功");
|
||||
} else {
|
||||
return CaptchaResult.failWithCode("注册失败");
|
||||
@@ -120,9 +145,11 @@ public class SchisandraAuthUserController {
|
||||
StpUtil.login(result.getId());
|
||||
String userToken = StpUtil.getTokenValueByLoginId(result.getId());
|
||||
map.put("token", userToken);
|
||||
userInfoPersistence(result.getId());
|
||||
return CaptchaResult.ok(map);
|
||||
} else {
|
||||
StpUtil.login(result.getId());
|
||||
userInfoPersistence(result.getId());
|
||||
return CaptchaResult.ok(result);
|
||||
}
|
||||
} else {
|
||||
@@ -151,5 +178,31 @@ public class SchisandraAuthUserController {
|
||||
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.infra.basic.entity.SchisandraAuthPermission;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public interface SchisandraAuthPermissionDomainService {
|
||||
int update(SchisandraAuthPermissionBO schisandraAuthPermissionBO);
|
||||
@@ -10,4 +12,5 @@ public interface SchisandraAuthPermissionDomainService {
|
||||
Object insert(SchisandraAuthPermissionBO schisandraAuthPermissionBO);
|
||||
SchisandraAuthPermissionBO select(SchisandraAuthPermissionBO schisandraAuthPermissionBO);
|
||||
|
||||
List<SchisandraAuthPermission> queryListByIds(List<Long> permissionIdList);
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package com.schisandra.auth.domain.service;
|
||||
|
||||
import com.schisandra.auth.domain.bo.SchisandraAuthRoleBO;
|
||||
import com.schisandra.auth.infra.basic.entity.SchisandraAuthRole;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
@@ -48,4 +49,6 @@ public interface SchisandraAuthRoleDomainService {
|
||||
*/
|
||||
|
||||
Object select(SchisandraAuthRoleBO schisandraAuthRoleBO);
|
||||
|
||||
SchisandraAuthRole queryByRoleId(Long code);
|
||||
}
|
||||
|
@@ -1,6 +1,9 @@
|
||||
package com.schisandra.auth.domain.service;
|
||||
|
||||
import com.schisandra.auth.domain.bo.SchisandraAuthRolePermissionBO;
|
||||
import com.schisandra.auth.infra.basic.entity.SchisandraAuthRolePermission;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 领域service
|
||||
@@ -25,4 +28,5 @@ public interface SchisandraAuthRolePermissionDomainService {
|
||||
*/
|
||||
Boolean delete(SchisandraAuthRolePermissionBO schisandraAuthRolePermissionBO);
|
||||
|
||||
List<SchisandraAuthRolePermission> queryByRoleId(SchisandraAuthRolePermission schisandraAuthRolePermission);
|
||||
}
|
||||
|
@@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
@@ -69,4 +70,9 @@ public class SchisandraAuthPermissionDomainServiceImpl implements SchisandraAuth
|
||||
SchisandraAuthPermissionBO schisandraAuthPermissionBO1 = SchisandraAuthPermissionBOConverter.INSTANCE.convertEntityToBO(schisandraAuthPermission1);
|
||||
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;
|
||||
}
|
||||
|
||||
@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 javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 领域service实现了
|
||||
@@ -46,4 +47,9 @@ public class SchisandraAuthRolePermissionDomainServiceImpl implements Schisandra
|
||||
return schisandraAuthRolePermissionService.update(schisandraAuthRolePermission) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchisandraAuthRolePermission> queryByRoleId(SchisandraAuthRolePermission schisandraAuthRolePermission) {
|
||||
return schisandraAuthRolePermissionService.queryByRoleId(schisandraAuthRolePermission);
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user