feat: 注册登录缓存用户信息

This commit is contained in:
landaiqing
2024-06-06 21:46:53 +08:00
parent fa35779dc2
commit 5eb78cbdb7
7 changed files with 81 additions and 1 deletions

View File

@@ -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));
}
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -53,4 +53,9 @@ public class SchisandraAuthRoleDomainServiceImpl implements SchisandraAuthRoleDo
}
return null;
}
@Override
public SchisandraAuthRole queryByRoleId(Long code) {
return schisandraAuthRoleService.queryByRoleId(code);
}
}

View File

@@ -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);
}
}