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

View File

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

View File

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

View File

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

View File

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

View File

@@ -53,4 +53,9 @@ public class SchisandraAuthRoleDomainServiceImpl implements SchisandraAuthRoleDo
} }
return null; 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 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);
}
} }