diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraAuthUserController.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraAuthUserController.java index cf6c679..c9b04d0 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraAuthUserController.java +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-application/schisandra-cloud-storage-auth-application-controller/src/main/java/com/schisandra/auth/application/controller/SchisandraAuthUserController.java @@ -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 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 rolePermissionList = schisandraAuthRolePermissionDomainService.queryByRoleId(schisandraAuthRolePermission); + List permissionIdList = rolePermissionList.stream() + .map(SchisandraAuthRolePermission::getPermissionId).collect(Collectors.toList()); + List permissionList = schisandraAuthPermissionDomainService.queryListByIds(permissionIdList); + String permissionKey = redisUtil.buildKey(AUTH_PERMISSION_PREFIX, String.valueOf(authUserId)); + redisUtil.set(permissionKey, new Gson().toJson(permissionList)); + } + } diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthPermissionDomainService.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthPermissionDomainService.java index fa70ea2..96bdc6a 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthPermissionDomainService.java +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthPermissionDomainService.java @@ -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 queryListByIds(List permissionIdList); } diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthRoleDomainService.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthRoleDomainService.java index 37447b5..d25fe41 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthRoleDomainService.java +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthRoleDomainService.java @@ -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); } diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthRolePermissionDomainService.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthRolePermissionDomainService.java index 9aa0d1d..9976732 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthRolePermissionDomainService.java +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/SchisandraAuthRolePermissionDomainService.java @@ -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 queryByRoleId(SchisandraAuthRolePermission schisandraAuthRolePermission); } diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthPermissionDomainServiceImpl.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthPermissionDomainServiceImpl.java index 5352de1..30ed9e7 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthPermissionDomainServiceImpl.java +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthPermissionDomainServiceImpl.java @@ -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 queryListByIds(List permissionIdList) { + return schisandraAuthPermissionService.queryListByIds(permissionIdList); + } } diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthRoleDomainServiceImpl.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthRoleDomainServiceImpl.java index fb2af23..2e5daa1 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthRoleDomainServiceImpl.java +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthRoleDomainServiceImpl.java @@ -53,4 +53,9 @@ public class SchisandraAuthRoleDomainServiceImpl implements SchisandraAuthRoleDo } return null; } + + @Override + public SchisandraAuthRole queryByRoleId(Long code) { + return schisandraAuthRoleService.queryByRoleId(code); + } } diff --git a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthRolePermissionDomainServiceImpl.java b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthRolePermissionDomainServiceImpl.java index 40d4062..eb7c409 100644 --- a/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthRolePermissionDomainServiceImpl.java +++ b/schisandra-cloud-storage-auth/schisandra-cloud-storage-auth-domain/src/main/java/com/schisandra/auth/domain/service/impl/SchisandraAuthRolePermissionDomainServiceImpl.java @@ -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 queryByRoleId(SchisandraAuthRolePermission schisandraAuthRolePermission) { + return schisandraAuthRolePermissionService.queryByRoleId(schisandraAuthRolePermission); + } + }