From d638a36b0ff64fdbe34e4787c40535fdc5ed20e3 Mon Sep 17 00:00:00 2001 From: luke Date: Mon, 9 Jun 2025 12:50:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96controller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/{ => es}/01-创建es索引.http | 0 config/{ => es}/99-常用es语句.http | 0 .../application/service/UserAppService.java | 38 +++++----- .../service/UserAppServiceImpl.java | 75 ++++++++++++------- .../base/domain/doc/model/FileDO.java | 18 +++++ .../converter/FileDomainConverter.java | 20 +++++ .../base/domain/user/model/RoleDO.java | 11 +++ .../domain/user/model/RoleFileRuleDO.java | 15 ++++ .../base/domain/user/model/UserDO.java | 16 ++++ .../base/domain/user/model/UserFileDO.java | 14 ++++ .../base/domain/user/model/UserRoleDO.java | 14 ++++ .../base/domain/user/model/UserTokenDO.java | 18 +++++ .../converter/RoleDomainConverter.java | 20 +++++ .../RoleFileRuleDomainConverter.java | 20 +++++ .../converter/UserDomainConverter.java | 20 +++++ .../converter/UserFileDomainConverter.java | 20 +++++ .../converter/UserRoleDomainConverter.java | 20 +++++ .../converter/UserTokenDomainConverter.java | 20 +++++ .../user/service/iface/RoleDomainSupport.java | 9 ++- .../iface/RoleFileRuleDomainSupport.java | 5 +- .../service/iface/UserAuthDomainSupport.java | 5 +- .../user/service/iface/UserDomainService.java | 27 +++---- .../service/iface/UserFileDomainSupport.java | 3 +- .../iface/UserProfileDomainSupport.java | 9 ++- .../service/iface/UserRoleDomainSupport.java | 3 +- .../service/impl/RoleDomainSupportImpl.java | 25 ++++--- .../impl/RoleFileRuleDomainSupportImpl.java | 16 ++-- .../impl/UserAuthDomainSupportImpl.java | 10 ++- .../service/impl/UserDomainServiceImpl.java | 27 +++---- .../impl/UserFileDomainSupportImpl.java | 11 ++- .../impl/UserProfileDomainSupportImpl.java | 28 ++++--- .../impl/UserRoleDomainSupportImpl.java | 11 ++- .../converter/FileDtoConverter.java | 30 ++++++++ .../converter/RoleDtoConverter.java | 20 +++++ .../converter/RoleFileRuleDtoConverter.java | 20 +++++ .../converter/UserDtoConverter.java | 25 +++++++ .../converter/UserFileDtoConverter.java | 20 +++++ .../converter/UserRoleDtoConverter.java | 20 +++++ .../converter/UserTokenDtoConverter.java | 30 ++++++++ ...ntroller.java => FileQueryController.java} | 37 ++++----- ...ntroller.java => FileWriteController.java} | 38 +++++++++- .../north/controller/ImportController.java | 31 -------- .../north/controller/RoleQueryController.java | 37 +++++++++ .../north/controller/RoleWriteController.java | 41 ++++++++++ .../north/controller/UserQueryController.java | 56 ++++++++++++++ ...ntroller.java => UserWriteController.java} | 44 ++++------- .../infrastructure/north/dto/doc/FileDTO.java | 16 ++++ .../north/dto/role/RoleDTO.java | 14 ++++ .../north/dto/role/RoleFileRuleDTO.java | 15 ++++ .../north/dto/role/UserRoleDTO.java | 15 ++++ .../north/dto/user/UserDTO.java | 14 ++++ .../north/dto/user/UserFileDTO.java | 14 ++++ .../north/dto/user/UserTokenDTO.java | 16 ++++ .../resources/application-dev-mac.properties | 3 + .../resources/application-dev-mac.properties | 3 + 55 files changed, 904 insertions(+), 203 deletions(-) rename config/{ => es}/01-创建es索引.http (100%) rename config/{ => es}/99-常用es语句.http (100%) create mode 100644 src/main/java/com/knowledge/base/domain/doc/model/FileDO.java create mode 100644 src/main/java/com/knowledge/base/domain/doc/repository/converter/FileDomainConverter.java create mode 100644 src/main/java/com/knowledge/base/domain/user/model/RoleDO.java create mode 100644 src/main/java/com/knowledge/base/domain/user/model/RoleFileRuleDO.java create mode 100644 src/main/java/com/knowledge/base/domain/user/model/UserDO.java create mode 100644 src/main/java/com/knowledge/base/domain/user/model/UserFileDO.java create mode 100644 src/main/java/com/knowledge/base/domain/user/model/UserRoleDO.java create mode 100644 src/main/java/com/knowledge/base/domain/user/model/UserTokenDO.java create mode 100644 src/main/java/com/knowledge/base/domain/user/repository/converter/RoleDomainConverter.java create mode 100644 src/main/java/com/knowledge/base/domain/user/repository/converter/RoleFileRuleDomainConverter.java create mode 100644 src/main/java/com/knowledge/base/domain/user/repository/converter/UserDomainConverter.java create mode 100644 src/main/java/com/knowledge/base/domain/user/repository/converter/UserFileDomainConverter.java create mode 100644 src/main/java/com/knowledge/base/domain/user/repository/converter/UserRoleDomainConverter.java create mode 100644 src/main/java/com/knowledge/base/domain/user/repository/converter/UserTokenDomainConverter.java create mode 100644 src/main/java/com/knowledge/base/infrastructure/converter/FileDtoConverter.java create mode 100644 src/main/java/com/knowledge/base/infrastructure/converter/RoleDtoConverter.java create mode 100644 src/main/java/com/knowledge/base/infrastructure/converter/RoleFileRuleDtoConverter.java create mode 100644 src/main/java/com/knowledge/base/infrastructure/converter/UserDtoConverter.java create mode 100644 src/main/java/com/knowledge/base/infrastructure/converter/UserFileDtoConverter.java create mode 100644 src/main/java/com/knowledge/base/infrastructure/converter/UserRoleDtoConverter.java create mode 100644 src/main/java/com/knowledge/base/infrastructure/converter/UserTokenDtoConverter.java rename src/main/java/com/knowledge/base/infrastructure/north/controller/{SearchController.java => FileQueryController.java} (89%) rename src/main/java/com/knowledge/base/infrastructure/north/controller/{DocMaintenanceController.java => FileWriteController.java} (71%) delete mode 100644 src/main/java/com/knowledge/base/infrastructure/north/controller/ImportController.java create mode 100644 src/main/java/com/knowledge/base/infrastructure/north/controller/RoleQueryController.java create mode 100644 src/main/java/com/knowledge/base/infrastructure/north/controller/RoleWriteController.java create mode 100644 src/main/java/com/knowledge/base/infrastructure/north/controller/UserQueryController.java rename src/main/java/com/knowledge/base/infrastructure/north/controller/{UserController.java => UserWriteController.java} (59%) create mode 100644 src/main/java/com/knowledge/base/infrastructure/north/dto/doc/FileDTO.java create mode 100644 src/main/java/com/knowledge/base/infrastructure/north/dto/role/RoleDTO.java create mode 100644 src/main/java/com/knowledge/base/infrastructure/north/dto/role/RoleFileRuleDTO.java create mode 100644 src/main/java/com/knowledge/base/infrastructure/north/dto/role/UserRoleDTO.java create mode 100644 src/main/java/com/knowledge/base/infrastructure/north/dto/user/UserDTO.java create mode 100644 src/main/java/com/knowledge/base/infrastructure/north/dto/user/UserFileDTO.java create mode 100644 src/main/java/com/knowledge/base/infrastructure/north/dto/user/UserTokenDTO.java diff --git a/config/01-创建es索引.http b/config/es/01-创建es索引.http similarity index 100% rename from config/01-创建es索引.http rename to config/es/01-创建es索引.http diff --git a/config/99-常用es语句.http b/config/es/99-常用es语句.http similarity index 100% rename from config/99-常用es语句.http rename to config/es/99-常用es语句.http diff --git a/src/main/java/com/knowledge/base/application/service/UserAppService.java b/src/main/java/com/knowledge/base/application/service/UserAppService.java index 506f1e3..2b90f7e 100644 --- a/src/main/java/com/knowledge/base/application/service/UserAppService.java +++ b/src/main/java/com/knowledge/base/application/service/UserAppService.java @@ -1,11 +1,11 @@ package com.knowledge.base.application.service; -import com.knowledge.base.domain.user.repository.po.User; -import com.knowledge.base.domain.user.repository.po.UserToken; -import com.knowledge.base.domain.user.repository.po.UserRole; -import com.knowledge.base.domain.user.repository.po.UserFile; -import com.knowledge.base.domain.user.repository.po.Role; -import com.knowledge.base.domain.user.repository.po.RoleFileRule; +import com.knowledge.base.infrastructure.north.dto.role.RoleDTO; +import com.knowledge.base.infrastructure.north.dto.role.RoleFileRuleDTO; +import com.knowledge.base.infrastructure.north.dto.role.UserRoleDTO; +import com.knowledge.base.infrastructure.north.dto.user.UserDTO; +import com.knowledge.base.infrastructure.north.dto.user.UserFileDTO; +import com.knowledge.base.infrastructure.north.dto.user.UserTokenDTO; import java.util.List; import java.util.Optional; @@ -16,35 +16,35 @@ public interface UserAppService { boolean verifyPassword(String username, String plainText); // 用户资料 - Optional findByUsername(String username); - Optional findById(Long id); - List findAll(); + Optional findByUsername(String username); + Optional findById(Long id); + List findAll(); // Token 相关 - UserToken createToken(Long userId, long expireMs); + UserTokenDTO createToken(Long userId, long expireMs); void removeToken(String token); boolean isValidToken(String token); - Optional findToken(String token); + Optional findToken(String token); // 用户角色 - List listUserRoles(Long userId); + List listUserRoles(Long userId); boolean addUserRole(Long userId, Long roleId); boolean removeUserRole(Long userId, Long roleId); // 用户特殊授权 - List listUserFiles(Long userId); + List listUserFiles(Long userId); boolean addUserFileAuth(Long userId, Long fileId); boolean removeUserFileAuth(Long userId, Long fileId); // 角色 - List listRoles(); - Optional getRoleById(Long roleId); - boolean addRole(Role role); - boolean updateRole(Role role); + List listRoles(); + Optional getRoleById(Long roleId); + boolean addRole(RoleDTO role); + boolean updateRole(RoleDTO role); boolean deleteRole(Long id); // 角色授权信息 - List listRoleFileRules(Long roleId); - boolean addRoleFileRule(RoleFileRule rule); + List listRoleFileRules(Long roleId); + boolean addRoleFileRule(RoleFileRuleDTO rule); boolean removeRoleFileRule(Long id); } diff --git a/src/main/java/com/knowledge/base/application/service/UserAppServiceImpl.java b/src/main/java/com/knowledge/base/application/service/UserAppServiceImpl.java index 246ec78..639ea20 100644 --- a/src/main/java/com/knowledge/base/application/service/UserAppServiceImpl.java +++ b/src/main/java/com/knowledge/base/application/service/UserAppServiceImpl.java @@ -1,12 +1,21 @@ package com.knowledge.base.application.service; -import com.knowledge.base.domain.user.repository.po.*; +import com.google.common.collect.Lists; +import com.knowledge.base.domain.user.model.UserDO; import com.knowledge.base.domain.user.service.iface.UserDomainService; +import com.knowledge.base.infrastructure.converter.*; +import com.knowledge.base.infrastructure.north.dto.role.RoleDTO; +import com.knowledge.base.infrastructure.north.dto.role.RoleFileRuleDTO; +import com.knowledge.base.infrastructure.north.dto.role.UserRoleDTO; +import com.knowledge.base.infrastructure.north.dto.user.UserDTO; +import com.knowledge.base.infrastructure.north.dto.user.UserFileDTO; +import com.knowledge.base.infrastructure.north.dto.user.UserTokenDTO; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -18,7 +27,7 @@ public class UserAppServiceImpl implements UserAppService { public boolean registerUser(String username, String password, List roleIds) { boolean ok = userDomainService.registerUser(username, password); if (!ok) return false; - Optional userOpt = userDomainService.findByUsername(username); + Optional userOpt = userDomainService.findByUsername(username); if (userOpt.isEmpty()) return false; Long userId = userOpt.get().getId(); for (Long roleId : roleIds) { @@ -33,23 +42,25 @@ public class UserAppServiceImpl implements UserAppService { } @Override - public Optional findByUsername(String username) { - return userDomainService.findByUsername(username); + public Optional findByUsername(String username) { + return Optional.ofNullable(UserDtoConverter.toDTO(userDomainService.findByUsername(username).get())); } @Override - public Optional findById(Long id) { - return userDomainService.findById(id); + public Optional findById(Long id) { + return Optional.ofNullable(UserDtoConverter.toDTO(userDomainService.findById(id).get())); } @Override - public List findAll() { - return userDomainService.findAllUsers(); + public List findAll() { + return Optional.ofNullable(userDomainService.findAllUsers()).orElse(Lists.newArrayList()).stream() + .map(e -> UserDtoConverter.toDTO(e)) + .collect(Collectors.toList()); } @Override - public UserToken createToken(Long userId, long expireMs) { - return userDomainService.createToken(userId, expireMs); + public UserTokenDTO createToken(Long userId, long expireMs) { + return UserTokenDtoConverter.toDTO(userDomainService.createToken(userId, expireMs)); } @Override @@ -63,13 +74,15 @@ public class UserAppServiceImpl implements UserAppService { } @Override - public Optional findToken(String token) { - return userDomainService.findToken(token); + public Optional findToken(String token) { + return Optional.ofNullable(UserTokenDtoConverter.toDTO(userDomainService.findToken(token).get())); } @Override - public List listUserRoles(Long userId) { - return userDomainService.findRolesByUserId(userId); + public List listUserRoles(Long userId) { + return Optional.ofNullable(userDomainService.findRolesByUserId(userId)).orElse(Lists.newArrayList()).stream() + .map(e -> UserRoleDtoConverter.toDTO(e)) + .collect(Collectors.toList()); } @Override @@ -83,8 +96,10 @@ public class UserAppServiceImpl implements UserAppService { } @Override - public List listUserFiles(Long userId) { - return userDomainService.findUserFiles(userId); + public List listUserFiles(Long userId) { + return Optional.ofNullable(userDomainService.findUserFiles(userId)).orElse(Lists.newArrayList()).stream() + .map(e -> UserFileDtoConverter.toDTO(e)) + .collect(Collectors.toList()); } @Override @@ -98,23 +113,25 @@ public class UserAppServiceImpl implements UserAppService { } @Override - public List listRoles() { - return userDomainService.findAllRoles(); + public List listRoles() { + return Optional.ofNullable(userDomainService.findAllRoles()).orElse(Lists.newArrayList()).stream() + .map(e -> RoleDtoConverter.toDTO(e)) + .collect(Collectors.toList()); } @Override - public Optional getRoleById(Long roleId) { - return userDomainService.findRoleById(roleId); + public Optional getRoleById(Long roleId) { + return Optional.ofNullable(RoleDtoConverter.toDTO(userDomainService.findRoleById(roleId).get())); } @Override - public boolean addRole(Role role) { - return userDomainService.addRole(role); + public boolean addRole(RoleDTO role) { + return userDomainService.addRole(RoleDtoConverter.toDO(role)); } @Override - public boolean updateRole(Role role) { - return userDomainService.updateRole(role); + public boolean updateRole(RoleDTO role) { + return userDomainService.updateRole(RoleDtoConverter.toDO(role)); } @Override @@ -123,13 +140,15 @@ public class UserAppServiceImpl implements UserAppService { } @Override - public List listRoleFileRules(Long roleId) { - return userDomainService.findRoleFileRules(roleId); + public List listRoleFileRules(Long roleId) { + return Optional.ofNullable(userDomainService.findRoleFileRules(roleId)).orElse(Lists.newArrayList()).stream() + .map(e -> RoleFileRuleDtoConverter.toDTO(e)) + .collect(Collectors.toList()); } @Override - public boolean addRoleFileRule(RoleFileRule rule) { - return userDomainService.addRoleFileRule(rule); + public boolean addRoleFileRule(RoleFileRuleDTO rule) { + return userDomainService.addRoleFileRule(RoleFileRuleDtoConverter.toDO(rule)); } @Override diff --git a/src/main/java/com/knowledge/base/domain/doc/model/FileDO.java b/src/main/java/com/knowledge/base/domain/doc/model/FileDO.java new file mode 100644 index 0000000..3375e8d --- /dev/null +++ b/src/main/java/com/knowledge/base/domain/doc/model/FileDO.java @@ -0,0 +1,18 @@ +package com.knowledge.base.domain.doc.model; + +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author Luke.ye + * @date 2025/6/9 10:51 + */ +@Data +public class FileDO { + public Long id; + public String fileName; + public String filePath; + public LocalDateTime addTime; + public LocalDateTime updateTime; +} diff --git a/src/main/java/com/knowledge/base/domain/doc/repository/converter/FileDomainConverter.java b/src/main/java/com/knowledge/base/domain/doc/repository/converter/FileDomainConverter.java new file mode 100644 index 0000000..cd6aa49 --- /dev/null +++ b/src/main/java/com/knowledge/base/domain/doc/repository/converter/FileDomainConverter.java @@ -0,0 +1,20 @@ +package com.knowledge.base.domain.doc.repository.converter; + +import com.knowledge.base.domain.doc.repository.po.File; +import com.knowledge.base.domain.doc.model.FileDO; +import org.springframework.beans.BeanUtils; + +public class FileDomainConverter { + public static FileDO toDO(File po) { + if (po == null) return null; + FileDO doObj = new FileDO(); + BeanUtils.copyProperties(po, doObj); + return doObj; + } + public static File toPO(FileDO doObj) { + if (doObj == null) return null; + File po = new File(); + BeanUtils.copyProperties(doObj, po); + return po; + } +} diff --git a/src/main/java/com/knowledge/base/domain/user/model/RoleDO.java b/src/main/java/com/knowledge/base/domain/user/model/RoleDO.java new file mode 100644 index 0000000..3c546b1 --- /dev/null +++ b/src/main/java/com/knowledge/base/domain/user/model/RoleDO.java @@ -0,0 +1,11 @@ +package com.knowledge.base.domain.user.model; + +/** + * @author Luke.ye + * @date 2025/6/9 10:37 + */ +public class RoleDO { + public Long id; + public String roleCode; + public String roleName; +} diff --git a/src/main/java/com/knowledge/base/domain/user/model/RoleFileRuleDO.java b/src/main/java/com/knowledge/base/domain/user/model/RoleFileRuleDO.java new file mode 100644 index 0000000..0d622fb --- /dev/null +++ b/src/main/java/com/knowledge/base/domain/user/model/RoleFileRuleDO.java @@ -0,0 +1,15 @@ +package com.knowledge.base.domain.user.model; + +import lombok.Data; + +/** + * @author Luke.ye + * @date 2025/6/9 10:39 + */ +@Data +public class RoleFileRuleDO { + public Long id; + public Long roleId; + public String filePattern; + public String remark; +} diff --git a/src/main/java/com/knowledge/base/domain/user/model/UserDO.java b/src/main/java/com/knowledge/base/domain/user/model/UserDO.java new file mode 100644 index 0000000..c655c58 --- /dev/null +++ b/src/main/java/com/knowledge/base/domain/user/model/UserDO.java @@ -0,0 +1,16 @@ +package com.knowledge.base.domain.user.model; + +import lombok.Data; + +/** + * @author Luke.ye + * @date 2025/6/9 10:36 + */ + +@Data +public class UserDO { + public Long id; + public String username; + public String password; + // 领域层需要的字段,可适当扩展 +} diff --git a/src/main/java/com/knowledge/base/domain/user/model/UserFileDO.java b/src/main/java/com/knowledge/base/domain/user/model/UserFileDO.java new file mode 100644 index 0000000..e06dddd --- /dev/null +++ b/src/main/java/com/knowledge/base/domain/user/model/UserFileDO.java @@ -0,0 +1,14 @@ +package com.knowledge.base.domain.user.model; + +import lombok.Data; + +/** + * @author Luke.ye + * @date 2025/6/9 10:38 + */ +@Data +public class UserFileDO { + public Long id; + public Long userId; + public Long fileId; +} diff --git a/src/main/java/com/knowledge/base/domain/user/model/UserRoleDO.java b/src/main/java/com/knowledge/base/domain/user/model/UserRoleDO.java new file mode 100644 index 0000000..31af8d1 --- /dev/null +++ b/src/main/java/com/knowledge/base/domain/user/model/UserRoleDO.java @@ -0,0 +1,14 @@ +package com.knowledge.base.domain.user.model; + +import lombok.Data; + +/** + * @author Luke.ye + * @date 2025/6/9 10:38 + */ +@Data +public class UserRoleDO { + public Long id; + public Long userId; + public Long roleId; +} diff --git a/src/main/java/com/knowledge/base/domain/user/model/UserTokenDO.java b/src/main/java/com/knowledge/base/domain/user/model/UserTokenDO.java new file mode 100644 index 0000000..4232a1f --- /dev/null +++ b/src/main/java/com/knowledge/base/domain/user/model/UserTokenDO.java @@ -0,0 +1,18 @@ +package com.knowledge.base.domain.user.model; + +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author Luke.ye + * @date 2025/6/9 10:40 + */ +@Data +public class UserTokenDO { + public Long id; + public Long userId; + public String token; + public LocalDateTime loginAt; + public LocalDateTime expiredAt; +} diff --git a/src/main/java/com/knowledge/base/domain/user/repository/converter/RoleDomainConverter.java b/src/main/java/com/knowledge/base/domain/user/repository/converter/RoleDomainConverter.java new file mode 100644 index 0000000..cda95f8 --- /dev/null +++ b/src/main/java/com/knowledge/base/domain/user/repository/converter/RoleDomainConverter.java @@ -0,0 +1,20 @@ +package com.knowledge.base.domain.user.repository.converter; + +import com.knowledge.base.domain.user.repository.po.Role; +import com.knowledge.base.domain.user.model.RoleDO; +import org.springframework.beans.BeanUtils; + +public class RoleDomainConverter { + public static RoleDO toDO(Role po) { + if (po == null) return null; + RoleDO doObj = new RoleDO(); + BeanUtils.copyProperties(po, doObj); + return doObj; + } + public static Role toPO(RoleDO doObj) { + if (doObj == null) return null; + Role po = new Role(); + BeanUtils.copyProperties(doObj, po); + return po; + } +} diff --git a/src/main/java/com/knowledge/base/domain/user/repository/converter/RoleFileRuleDomainConverter.java b/src/main/java/com/knowledge/base/domain/user/repository/converter/RoleFileRuleDomainConverter.java new file mode 100644 index 0000000..0b2a447 --- /dev/null +++ b/src/main/java/com/knowledge/base/domain/user/repository/converter/RoleFileRuleDomainConverter.java @@ -0,0 +1,20 @@ +package com.knowledge.base.domain.user.repository.converter; + +import com.knowledge.base.domain.user.repository.po.RoleFileRule; +import com.knowledge.base.domain.user.model.RoleFileRuleDO; +import org.springframework.beans.BeanUtils; + +public class RoleFileRuleDomainConverter { + public static RoleFileRuleDO toDO(RoleFileRule po) { + if (po == null) return null; + RoleFileRuleDO doObj = new RoleFileRuleDO(); + BeanUtils.copyProperties(po, doObj); + return doObj; + } + public static RoleFileRule toPO(RoleFileRuleDO doObj) { + if (doObj == null) return null; + RoleFileRule po = new RoleFileRule(); + BeanUtils.copyProperties(doObj, po); + return po; + } +} diff --git a/src/main/java/com/knowledge/base/domain/user/repository/converter/UserDomainConverter.java b/src/main/java/com/knowledge/base/domain/user/repository/converter/UserDomainConverter.java new file mode 100644 index 0000000..7f2b5f0 --- /dev/null +++ b/src/main/java/com/knowledge/base/domain/user/repository/converter/UserDomainConverter.java @@ -0,0 +1,20 @@ +package com.knowledge.base.domain.user.repository.converter; + +import com.knowledge.base.domain.user.repository.po.User; +import com.knowledge.base.domain.user.model.UserDO; +import org.springframework.beans.BeanUtils; + +public class UserDomainConverter { + public static UserDO toDO(User po) { + if (po == null) return null; + UserDO doObj = new UserDO(); + BeanUtils.copyProperties(po, doObj); + return doObj; + } + public static User toPO(UserDO doObj) { + if (doObj == null) return null; + User po = new User(); + BeanUtils.copyProperties(doObj, po); + return po; + } +} diff --git a/src/main/java/com/knowledge/base/domain/user/repository/converter/UserFileDomainConverter.java b/src/main/java/com/knowledge/base/domain/user/repository/converter/UserFileDomainConverter.java new file mode 100644 index 0000000..b3090f8 --- /dev/null +++ b/src/main/java/com/knowledge/base/domain/user/repository/converter/UserFileDomainConverter.java @@ -0,0 +1,20 @@ +package com.knowledge.base.domain.user.repository.converter; + +import com.knowledge.base.domain.user.repository.po.UserFile; +import com.knowledge.base.domain.user.model.UserFileDO; +import org.springframework.beans.BeanUtils; + +public class UserFileDomainConverter { + public static UserFileDO toDO(UserFile po) { + if (po == null) return null; + UserFileDO doObj = new UserFileDO(); + BeanUtils.copyProperties(po, doObj); + return doObj; + } + public static UserFile toPO(UserFileDO doObj) { + if (doObj == null) return null; + UserFile po = new UserFile(); + BeanUtils.copyProperties(doObj, po); + return po; + } +} diff --git a/src/main/java/com/knowledge/base/domain/user/repository/converter/UserRoleDomainConverter.java b/src/main/java/com/knowledge/base/domain/user/repository/converter/UserRoleDomainConverter.java new file mode 100644 index 0000000..527559e --- /dev/null +++ b/src/main/java/com/knowledge/base/domain/user/repository/converter/UserRoleDomainConverter.java @@ -0,0 +1,20 @@ +package com.knowledge.base.domain.user.repository.converter; + +import com.knowledge.base.domain.user.repository.po.UserRole; +import com.knowledge.base.domain.user.model.UserRoleDO; +import org.springframework.beans.BeanUtils; + +public class UserRoleDomainConverter { + public static UserRoleDO toDO(UserRole po) { + if (po == null) return null; + UserRoleDO doObj = new UserRoleDO(); + BeanUtils.copyProperties(po, doObj); + return doObj; + } + public static UserRole toPO(UserRoleDO doObj) { + if (doObj == null) return null; + UserRole po = new UserRole(); + BeanUtils.copyProperties(doObj, po); + return po; + } +} diff --git a/src/main/java/com/knowledge/base/domain/user/repository/converter/UserTokenDomainConverter.java b/src/main/java/com/knowledge/base/domain/user/repository/converter/UserTokenDomainConverter.java new file mode 100644 index 0000000..3c9de8d --- /dev/null +++ b/src/main/java/com/knowledge/base/domain/user/repository/converter/UserTokenDomainConverter.java @@ -0,0 +1,20 @@ +package com.knowledge.base.domain.user.repository.converter; + +import com.knowledge.base.domain.user.repository.po.UserToken; +import com.knowledge.base.domain.user.model.UserTokenDO; +import org.springframework.beans.BeanUtils; + +public class UserTokenDomainConverter { + public static UserTokenDO toDO(UserToken po) { + if (po == null) return null; + UserTokenDO doObj = new UserTokenDO(); + BeanUtils.copyProperties(po, doObj); + return doObj; + } + public static UserToken toPO(UserTokenDO doObj) { + if (doObj == null) return null; + UserToken po = new UserToken(); + BeanUtils.copyProperties(doObj, po); + return po; + } +} diff --git a/src/main/java/com/knowledge/base/domain/user/service/iface/RoleDomainSupport.java b/src/main/java/com/knowledge/base/domain/user/service/iface/RoleDomainSupport.java index 7936cd4..632abd1 100644 --- a/src/main/java/com/knowledge/base/domain/user/service/iface/RoleDomainSupport.java +++ b/src/main/java/com/knowledge/base/domain/user/service/iface/RoleDomainSupport.java @@ -1,14 +1,15 @@ package com.knowledge.base.domain.user.service.iface; +import com.knowledge.base.domain.user.model.RoleDO; import com.knowledge.base.domain.user.repository.po.Role; import java.util.List; import java.util.Optional; public interface RoleDomainSupport { - Optional findById(Long id); - List findAll(); - boolean addRole(Role role); - boolean updateRole(Role role); + Optional findById(Long id); + List findAll(); + boolean addRole(RoleDO role); + boolean updateRole(RoleDO role); boolean deleteRole(Long id); } diff --git a/src/main/java/com/knowledge/base/domain/user/service/iface/RoleFileRuleDomainSupport.java b/src/main/java/com/knowledge/base/domain/user/service/iface/RoleFileRuleDomainSupport.java index 0cd1d41..cc2ada0 100644 --- a/src/main/java/com/knowledge/base/domain/user/service/iface/RoleFileRuleDomainSupport.java +++ b/src/main/java/com/knowledge/base/domain/user/service/iface/RoleFileRuleDomainSupport.java @@ -1,11 +1,12 @@ package com.knowledge.base.domain.user.service.iface; +import com.knowledge.base.domain.user.model.RoleFileRuleDO; import com.knowledge.base.domain.user.repository.po.RoleFileRule; import java.util.List; public interface RoleFileRuleDomainSupport { - List findByRoleId(Long roleId); - boolean addRoleFileRule(RoleFileRule rule); + List findByRoleId(Long roleId); + boolean addRoleFileRule(RoleFileRuleDO rule); boolean removeRoleFileRule(Long ruleId); } diff --git a/src/main/java/com/knowledge/base/domain/user/service/iface/UserAuthDomainSupport.java b/src/main/java/com/knowledge/base/domain/user/service/iface/UserAuthDomainSupport.java index 43a8857..f202dda 100644 --- a/src/main/java/com/knowledge/base/domain/user/service/iface/UserAuthDomainSupport.java +++ b/src/main/java/com/knowledge/base/domain/user/service/iface/UserAuthDomainSupport.java @@ -1,13 +1,14 @@ package com.knowledge.base.domain.user.service.iface; +import com.knowledge.base.domain.user.model.UserTokenDO; import com.knowledge.base.domain.user.repository.po.UserToken; import java.util.Optional; public interface UserAuthDomainSupport { boolean verifyPassword(String username, String plainText); - UserToken createToken(Long userId, long expireMs); + UserTokenDO createToken(Long userId, long expireMs); boolean isValidToken(String token); void removeToken(String token); - Optional findToken(String token); + Optional findToken(String token); } diff --git a/src/main/java/com/knowledge/base/domain/user/service/iface/UserDomainService.java b/src/main/java/com/knowledge/base/domain/user/service/iface/UserDomainService.java index 4ff9d6b..27699cc 100644 --- a/src/main/java/com/knowledge/base/domain/user/service/iface/UserDomainService.java +++ b/src/main/java/com/knowledge/base/domain/user/service/iface/UserDomainService.java @@ -1,5 +1,6 @@ package com.knowledge.base.domain.user.service.iface; +import com.knowledge.base.domain.user.model.*; import com.knowledge.base.domain.user.repository.po.*; import java.util.List; @@ -7,37 +8,37 @@ import java.util.Optional; public interface UserDomainService { // 用户资料 - Optional findByUsername(String username); - Optional findById(Long id); - List findAllUsers(); + Optional findByUsername(String username); + Optional findById(Long id); + List findAllUsers(); boolean registerUser(String username, String plainPassword); // 认证/Token - Optional findToken(String token); + Optional findToken(String token); boolean verifyPassword(String username, String plainText); - UserToken createToken(Long userId, long expireMs); + UserTokenDO createToken(Long userId, long expireMs); boolean isValidToken(String token); void removeToken(String token); // 角色 - List findAllRoles(); - Optional findRoleById(Long id); - boolean addRole(Role role); - boolean updateRole(Role role); + List findAllRoles(); + Optional findRoleById(Long id); + boolean addRole(RoleDO role); + boolean updateRole(RoleDO role); boolean deleteRole(Long id); // 用户-角色 - List findRolesByUserId(Long userId); + List findRolesByUserId(Long userId); boolean addUserRole(Long userId, Long roleId); boolean removeUserRole(Long userId, Long roleId); // 角色-文件规则 - List findRoleFileRules(Long roleId); - boolean addRoleFileRule(RoleFileRule rule); + List findRoleFileRules(Long roleId); + boolean addRoleFileRule(RoleFileRuleDO rule); boolean removeRoleFileRule(Long ruleId); // 用户特殊授权 - List findUserFiles(Long userId); + List findUserFiles(Long userId); boolean addUserFileAuth(Long userId, Long fileId); boolean removeUserFileAuth(Long userId, Long fileId); } diff --git a/src/main/java/com/knowledge/base/domain/user/service/iface/UserFileDomainSupport.java b/src/main/java/com/knowledge/base/domain/user/service/iface/UserFileDomainSupport.java index 4200932..1a1f98b 100644 --- a/src/main/java/com/knowledge/base/domain/user/service/iface/UserFileDomainSupport.java +++ b/src/main/java/com/knowledge/base/domain/user/service/iface/UserFileDomainSupport.java @@ -1,11 +1,12 @@ package com.knowledge.base.domain.user.service.iface; +import com.knowledge.base.domain.user.model.UserFileDO; import com.knowledge.base.domain.user.repository.po.UserFile; import java.util.List; public interface UserFileDomainSupport { - List findByUserId(Long userId); + List findByUserId(Long userId); boolean addUserFileAuth(Long userId, Long fileId); boolean removeUserFileAuth(Long userId, Long fileId); } diff --git a/src/main/java/com/knowledge/base/domain/user/service/iface/UserProfileDomainSupport.java b/src/main/java/com/knowledge/base/domain/user/service/iface/UserProfileDomainSupport.java index f205b02..d5ecc03 100644 --- a/src/main/java/com/knowledge/base/domain/user/service/iface/UserProfileDomainSupport.java +++ b/src/main/java/com/knowledge/base/domain/user/service/iface/UserProfileDomainSupport.java @@ -1,15 +1,16 @@ package com.knowledge.base.domain.user.service.iface; +import com.knowledge.base.domain.user.model.UserDO; import com.knowledge.base.domain.user.repository.po.User; import java.util.Optional; import java.util.List; public interface UserProfileDomainSupport { - Optional findByUsername(String username); - Optional findById(Long id); - List findAll(); + Optional findByUsername(String username); + Optional findById(Long id); + List findAll(); boolean registerUser(String username, String plainPassword); - boolean updateUser(User user); + boolean updateUser(UserDO user); boolean deleteUser(Long id); } diff --git a/src/main/java/com/knowledge/base/domain/user/service/iface/UserRoleDomainSupport.java b/src/main/java/com/knowledge/base/domain/user/service/iface/UserRoleDomainSupport.java index ac847b2..ece3146 100644 --- a/src/main/java/com/knowledge/base/domain/user/service/iface/UserRoleDomainSupport.java +++ b/src/main/java/com/knowledge/base/domain/user/service/iface/UserRoleDomainSupport.java @@ -1,11 +1,12 @@ package com.knowledge.base.domain.user.service.iface; +import com.knowledge.base.domain.user.model.UserRoleDO; import com.knowledge.base.domain.user.repository.po.UserRole; import java.util.List; public interface UserRoleDomainSupport { - List findByUserId(Long userId); + List findByUserId(Long userId); boolean addUserRole(Long userId, Long roleId); boolean removeUserRole(Long userId, Long roleId); } diff --git a/src/main/java/com/knowledge/base/domain/user/service/impl/RoleDomainSupportImpl.java b/src/main/java/com/knowledge/base/domain/user/service/impl/RoleDomainSupportImpl.java index e3db652..6ea059c 100644 --- a/src/main/java/com/knowledge/base/domain/user/service/impl/RoleDomainSupportImpl.java +++ b/src/main/java/com/knowledge/base/domain/user/service/impl/RoleDomainSupportImpl.java @@ -1,13 +1,16 @@ package com.knowledge.base.domain.user.service.impl; +import com.google.common.collect.Lists; +import com.knowledge.base.domain.user.model.RoleDO; +import com.knowledge.base.domain.user.repository.converter.RoleDomainConverter; import com.knowledge.base.domain.user.repository.iface.RoleRepository; -import com.knowledge.base.domain.user.repository.po.Role; import com.knowledge.base.domain.user.service.iface.RoleDomainSupport; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -16,23 +19,27 @@ public class RoleDomainSupportImpl implements RoleDomainSupport { private final RoleRepository roleRepository; @Override - public Optional findById(Long id) { - return Optional.ofNullable(roleRepository.findById(id)); + public Optional findById(Long id) { + return Optional.ofNullable( + RoleDomainConverter.toDO(roleRepository.findById(id)) + ); } @Override - public List findAll() { - return roleRepository.findAll(); + public List findAll() { + return Optional.ofNullable(roleRepository.findAll()).orElse(Lists.newArrayList()).stream() + .map(e -> RoleDomainConverter.toDO(e)) + .collect(Collectors.toList()); } @Override - public boolean addRole(Role role) { - return roleRepository.save(role); + public boolean addRole(RoleDO role) { + return roleRepository.save(RoleDomainConverter.toPO(role)); } @Override - public boolean updateRole(Role role) { - return roleRepository.update(role); + public boolean updateRole(RoleDO role) { + return roleRepository.update(RoleDomainConverter.toPO(role)); } @Override diff --git a/src/main/java/com/knowledge/base/domain/user/service/impl/RoleFileRuleDomainSupportImpl.java b/src/main/java/com/knowledge/base/domain/user/service/impl/RoleFileRuleDomainSupportImpl.java index 73180e0..1d12058 100644 --- a/src/main/java/com/knowledge/base/domain/user/service/impl/RoleFileRuleDomainSupportImpl.java +++ b/src/main/java/com/knowledge/base/domain/user/service/impl/RoleFileRuleDomainSupportImpl.java @@ -1,12 +1,16 @@ package com.knowledge.base.domain.user.service.impl; +import com.google.common.collect.Lists; +import com.knowledge.base.domain.user.model.RoleFileRuleDO; +import com.knowledge.base.domain.user.repository.converter.RoleFileRuleDomainConverter; import com.knowledge.base.domain.user.repository.iface.RoleFileRuleRepository; -import com.knowledge.base.domain.user.repository.po.RoleFileRule; import com.knowledge.base.domain.user.service.iface.RoleFileRuleDomainSupport; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -15,13 +19,15 @@ public class RoleFileRuleDomainSupportImpl implements RoleFileRuleDomainSupport private final RoleFileRuleRepository roleFileRuleRepository; @Override - public List findByRoleId(Long roleId) { - return roleFileRuleRepository.findByRoleId(roleId); + public List findByRoleId(Long roleId) { + return Optional.ofNullable(roleFileRuleRepository.findByRoleId(roleId)).orElse(Lists.newArrayList()).stream() + .map(e -> RoleFileRuleDomainConverter.toDO(e)) + .collect(Collectors.toList()); } @Override - public boolean addRoleFileRule(RoleFileRule rule) { - return roleFileRuleRepository.save(rule); + public boolean addRoleFileRule(RoleFileRuleDO rule) { + return roleFileRuleRepository.save(RoleFileRuleDomainConverter.toPO(rule)); } @Override diff --git a/src/main/java/com/knowledge/base/domain/user/service/impl/UserAuthDomainSupportImpl.java b/src/main/java/com/knowledge/base/domain/user/service/impl/UserAuthDomainSupportImpl.java index e5659f3..5d44ca3 100644 --- a/src/main/java/com/knowledge/base/domain/user/service/impl/UserAuthDomainSupportImpl.java +++ b/src/main/java/com/knowledge/base/domain/user/service/impl/UserAuthDomainSupportImpl.java @@ -1,5 +1,7 @@ package com.knowledge.base.domain.user.service.impl; +import com.knowledge.base.domain.user.model.UserTokenDO; +import com.knowledge.base.domain.user.repository.converter.UserTokenDomainConverter; import com.knowledge.base.domain.user.repository.iface.UserRepository; import com.knowledge.base.domain.user.repository.iface.UserTokenRepository; import com.knowledge.base.domain.user.repository.po.User; @@ -29,7 +31,7 @@ public class UserAuthDomainSupportImpl implements UserAuthDomainSupport { } @Override - public UserToken createToken(Long userId, long expireMs) { + public UserTokenDO createToken(Long userId, long expireMs) { String token = UUID.randomUUID().toString().replace("-", ""); UserToken userToken = new UserToken(); userToken.setUserId(userId); @@ -37,7 +39,7 @@ public class UserAuthDomainSupportImpl implements UserAuthDomainSupport { userToken.setLoginAt(LocalDateTime.now()); userToken.setExpiredAt(LocalDateTime.now().plusSeconds(expireMs / 1000)); userTokenRepository.save(userToken); - return userToken; + return UserTokenDomainConverter.toDO(userToken); } @Override @@ -52,7 +54,7 @@ public class UserAuthDomainSupportImpl implements UserAuthDomainSupport { } @Override - public Optional findToken(String token) { - return userTokenRepository.findByToken(token); + public Optional findToken(String token) { + return Optional.ofNullable(UserTokenDomainConverter.toDO(userTokenRepository.findByToken(token).get())); } } diff --git a/src/main/java/com/knowledge/base/domain/user/service/impl/UserDomainServiceImpl.java b/src/main/java/com/knowledge/base/domain/user/service/impl/UserDomainServiceImpl.java index fd79eca..2c7ac15 100644 --- a/src/main/java/com/knowledge/base/domain/user/service/impl/UserDomainServiceImpl.java +++ b/src/main/java/com/knowledge/base/domain/user/service/impl/UserDomainServiceImpl.java @@ -1,5 +1,6 @@ package com.knowledge.base.domain.user.service.impl; +import com.knowledge.base.domain.user.model.*; import com.knowledge.base.domain.user.repository.po.*; import com.knowledge.base.domain.user.service.iface.*; import lombok.RequiredArgsConstructor; @@ -21,17 +22,17 @@ public class UserDomainServiceImpl implements UserDomainService { // 用户资料 @Override - public Optional findByUsername(String username) { + public Optional findByUsername(String username) { return userProfileDomainSupport.findByUsername(username); } @Override - public Optional findById(Long id) { + public Optional findById(Long id) { return userProfileDomainSupport.findById(id); } @Override - public List findAllUsers() { + public List findAllUsers() { return userProfileDomainSupport.findAll(); } @@ -43,7 +44,7 @@ public class UserDomainServiceImpl implements UserDomainService { // 认证/Token @Override - public Optional findToken(String token) { + public Optional findToken(String token) { return userAuthDomainSupport.findToken(token); } @@ -52,7 +53,7 @@ public class UserDomainServiceImpl implements UserDomainService { return userAuthDomainSupport.verifyPassword(username, plainText); } @Override - public UserToken createToken(Long userId, long expireMs) { + public UserTokenDO createToken(Long userId, long expireMs) { return userAuthDomainSupport.createToken(userId, expireMs); } @Override @@ -66,21 +67,21 @@ public class UserDomainServiceImpl implements UserDomainService { // 角色 @Override - public List findAllRoles() { + public List findAllRoles() { return roleDomainSupport.findAll(); } @Override - public Optional findRoleById(Long id) { + public Optional findRoleById(Long id) { return roleDomainSupport.findById(id); } @Override - public boolean addRole(Role role) { + public boolean addRole(RoleDO role) { return roleDomainSupport.addRole(role); } @Override - public boolean updateRole(Role role) { + public boolean updateRole(RoleDO role) { return roleDomainSupport.updateRole(role); } @@ -91,7 +92,7 @@ public class UserDomainServiceImpl implements UserDomainService { // 用户-角色 @Override - public List findRolesByUserId(Long userId) { + public List findRolesByUserId(Long userId) { return userRoleDomainSupport.findByUserId(userId); } @Override @@ -105,11 +106,11 @@ public class UserDomainServiceImpl implements UserDomainService { // 角色-文件规则 @Override - public List findRoleFileRules(Long roleId) { + public List findRoleFileRules(Long roleId) { return roleFileRuleDomainSupport.findByRoleId(roleId); } @Override - public boolean addRoleFileRule(RoleFileRule rule) { + public boolean addRoleFileRule(RoleFileRuleDO rule) { return roleFileRuleDomainSupport.addRoleFileRule(rule); } @Override @@ -119,7 +120,7 @@ public class UserDomainServiceImpl implements UserDomainService { // 用户特殊授权 @Override - public List findUserFiles(Long userId) { + public List findUserFiles(Long userId) { return userFileDomainSupport.findByUserId(userId); } @Override diff --git a/src/main/java/com/knowledge/base/domain/user/service/impl/UserFileDomainSupportImpl.java b/src/main/java/com/knowledge/base/domain/user/service/impl/UserFileDomainSupportImpl.java index 759b829..aba09ee 100644 --- a/src/main/java/com/knowledge/base/domain/user/service/impl/UserFileDomainSupportImpl.java +++ b/src/main/java/com/knowledge/base/domain/user/service/impl/UserFileDomainSupportImpl.java @@ -1,5 +1,8 @@ package com.knowledge.base.domain.user.service.impl; +import com.google.common.collect.Lists; +import com.knowledge.base.domain.user.model.UserFileDO; +import com.knowledge.base.domain.user.repository.converter.UserFileDomainConverter; import com.knowledge.base.domain.user.repository.iface.UserFileRepository; import com.knowledge.base.domain.user.repository.po.UserFile; import com.knowledge.base.domain.user.service.iface.UserFileDomainSupport; @@ -7,6 +10,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -15,8 +20,10 @@ public class UserFileDomainSupportImpl implements UserFileDomainSupport { private final UserFileRepository userFileRepository; @Override - public List findByUserId(Long userId) { - return userFileRepository.findByUserId(userId); + public List findByUserId(Long userId) { + return Optional.ofNullable(userFileRepository.findByUserId(userId)).orElse(Lists.newArrayList()).stream() + .map(e -> UserFileDomainConverter.toDO(e)) + .collect(Collectors.toList()); } @Override diff --git a/src/main/java/com/knowledge/base/domain/user/service/impl/UserProfileDomainSupportImpl.java b/src/main/java/com/knowledge/base/domain/user/service/impl/UserProfileDomainSupportImpl.java index 45a78f0..d4c0dbe 100644 --- a/src/main/java/com/knowledge/base/domain/user/service/impl/UserProfileDomainSupportImpl.java +++ b/src/main/java/com/knowledge/base/domain/user/service/impl/UserProfileDomainSupportImpl.java @@ -1,15 +1,17 @@ package com.knowledge.base.domain.user.service.impl; +import com.google.common.collect.Lists; +import com.knowledge.base.domain.user.model.UserDO; +import com.knowledge.base.domain.user.repository.converter.UserDomainConverter; import com.knowledge.base.domain.user.repository.iface.UserRepository; import com.knowledge.base.domain.user.repository.po.User; import com.knowledge.base.domain.user.service.iface.UserProfileDomainSupport; +import com.knowledge.base.infrastructure.util.crypto.SM3Util; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import org.springframework.util.DigestUtils; - -import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -18,18 +20,20 @@ public class UserProfileDomainSupportImpl implements UserProfileDomainSupport { private final UserRepository userRepository; @Override - public Optional findByUsername(String username) { - return userRepository.findByUsername(username); + public Optional findByUsername(String username) { + return Optional.ofNullable(UserDomainConverter.toDO(userRepository.findByUsername(username).get())); } @Override - public Optional findById(Long id) { - return userRepository.findById(id); + public Optional findById(Long id) { + return Optional.ofNullable(UserDomainConverter.toDO(userRepository.findById(id).get())); } @Override - public List findAll() { - return userRepository.findAll(); + public List findAll() { + return Optional.ofNullable(userRepository.findAll()).orElse(Lists.newArrayList()).stream() + .map(e -> UserDomainConverter.toDO(e)) + .collect(Collectors.toList()); } @Override @@ -37,13 +41,13 @@ public class UserProfileDomainSupportImpl implements UserProfileDomainSupport { if (userRepository.findByUsername(username).isPresent()) return false; User user = new User(); user.setUsername(username); - user.setPassword(DigestUtils.md5DigestAsHex(plainPassword.getBytes(StandardCharsets.UTF_8))); + user.setPassword(SM3Util.digest(plainPassword)); return userRepository.save(user); } @Override - public boolean updateUser(User user) { - return userRepository.update(user); + public boolean updateUser(UserDO user) { + return userRepository.update(UserDomainConverter.toPO(user)); } @Override diff --git a/src/main/java/com/knowledge/base/domain/user/service/impl/UserRoleDomainSupportImpl.java b/src/main/java/com/knowledge/base/domain/user/service/impl/UserRoleDomainSupportImpl.java index 557f314..531022d 100644 --- a/src/main/java/com/knowledge/base/domain/user/service/impl/UserRoleDomainSupportImpl.java +++ b/src/main/java/com/knowledge/base/domain/user/service/impl/UserRoleDomainSupportImpl.java @@ -1,5 +1,8 @@ package com.knowledge.base.domain.user.service.impl; +import com.google.common.collect.Lists; +import com.knowledge.base.domain.user.model.UserRoleDO; +import com.knowledge.base.domain.user.repository.converter.UserRoleDomainConverter; import com.knowledge.base.domain.user.repository.iface.UserRoleRepository; import com.knowledge.base.domain.user.repository.po.UserRole; import com.knowledge.base.domain.user.service.iface.UserRoleDomainSupport; @@ -7,6 +10,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -15,8 +20,10 @@ public class UserRoleDomainSupportImpl implements UserRoleDomainSupport { private final UserRoleRepository userRoleRepository; @Override - public List findByUserId(Long userId) { - return userRoleRepository.findByUserId(userId); + public List findByUserId(Long userId) { + return Optional.ofNullable(userRoleRepository.findByUserId(userId)).orElse(Lists.newArrayList()).stream() + .map(e -> UserRoleDomainConverter.toDO(e)) + .collect(Collectors.toList()); } @Override diff --git a/src/main/java/com/knowledge/base/infrastructure/converter/FileDtoConverter.java b/src/main/java/com/knowledge/base/infrastructure/converter/FileDtoConverter.java new file mode 100644 index 0000000..4343bed --- /dev/null +++ b/src/main/java/com/knowledge/base/infrastructure/converter/FileDtoConverter.java @@ -0,0 +1,30 @@ +package com.knowledge.base.infrastructure.converter; + +import com.knowledge.base.domain.doc.model.FileDO; +import com.knowledge.base.infrastructure.north.dto.doc.FileDTO; +import org.springframework.beans.BeanUtils; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public class FileDtoConverter { + private static final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + public static FileDO toDO(FileDTO dto) { + if (dto == null) return null; + FileDO doObj = new FileDO(); + BeanUtils.copyProperties(dto, doObj); + if (dto.addTime != null) doObj.addTime = LocalDateTime.parse(dto.addTime, dtf); + if (dto.updateTime != null) doObj.updateTime = LocalDateTime.parse(dto.updateTime, dtf); + return doObj; + } + + public static FileDTO toDTO(FileDO doObj) { + if (doObj == null) return null; + FileDTO dto = new FileDTO(); + BeanUtils.copyProperties(doObj, dto); + dto.addTime = doObj.addTime == null ? null : dtf.format(doObj.addTime); + dto.updateTime = doObj.updateTime == null ? null : dtf.format(doObj.updateTime); + return dto; + } +} diff --git a/src/main/java/com/knowledge/base/infrastructure/converter/RoleDtoConverter.java b/src/main/java/com/knowledge/base/infrastructure/converter/RoleDtoConverter.java new file mode 100644 index 0000000..f0931cb --- /dev/null +++ b/src/main/java/com/knowledge/base/infrastructure/converter/RoleDtoConverter.java @@ -0,0 +1,20 @@ +package com.knowledge.base.infrastructure.converter; + +import com.knowledge.base.domain.user.model.RoleDO; +import com.knowledge.base.infrastructure.north.dto.role.RoleDTO; +import org.springframework.beans.BeanUtils; + +public class RoleDtoConverter { + public static RoleDO toDO(RoleDTO dto) { + if (dto == null) return null; + RoleDO doObj = new RoleDO(); + BeanUtils.copyProperties(dto, doObj); + return doObj; + } + public static RoleDTO toDTO(RoleDO doObj) { + if (doObj == null) return null; + RoleDTO dto = new RoleDTO(); + BeanUtils.copyProperties(doObj, dto); + return dto; + } +} diff --git a/src/main/java/com/knowledge/base/infrastructure/converter/RoleFileRuleDtoConverter.java b/src/main/java/com/knowledge/base/infrastructure/converter/RoleFileRuleDtoConverter.java new file mode 100644 index 0000000..f036935 --- /dev/null +++ b/src/main/java/com/knowledge/base/infrastructure/converter/RoleFileRuleDtoConverter.java @@ -0,0 +1,20 @@ +package com.knowledge.base.infrastructure.converter; + +import com.knowledge.base.domain.user.model.RoleFileRuleDO; +import com.knowledge.base.infrastructure.north.dto.role.RoleFileRuleDTO; +import org.springframework.beans.BeanUtils; + +public class RoleFileRuleDtoConverter { + public static RoleFileRuleDO toDO(RoleFileRuleDTO dto) { + if (dto == null) return null; + RoleFileRuleDO doObj = new RoleFileRuleDO(); + BeanUtils.copyProperties(dto, doObj); + return doObj; + } + public static RoleFileRuleDTO toDTO(RoleFileRuleDO doObj) { + if (doObj == null) return null; + RoleFileRuleDTO dto = new RoleFileRuleDTO(); + BeanUtils.copyProperties(doObj, dto); + return dto; + } +} diff --git a/src/main/java/com/knowledge/base/infrastructure/converter/UserDtoConverter.java b/src/main/java/com/knowledge/base/infrastructure/converter/UserDtoConverter.java new file mode 100644 index 0000000..a619413 --- /dev/null +++ b/src/main/java/com/knowledge/base/infrastructure/converter/UserDtoConverter.java @@ -0,0 +1,25 @@ +package com.knowledge.base.infrastructure.converter; + +import com.knowledge.base.domain.user.model.UserDO; +import com.knowledge.base.infrastructure.north.dto.user.UserDTO; +import org.springframework.beans.BeanUtils; + +/** + * @author Luke.ye + * @date 2025/6/9 09:44 + */ +public class UserDtoConverter { + public static UserDO toDO(UserDTO dto) { + if (dto == null) return null; + UserDO doObj = new UserDO(); + BeanUtils.copyProperties(dto, doObj); + return doObj; + } + public static UserDTO toDTO(UserDO doObj) { + if (doObj == null) return null; + UserDTO dto = new UserDTO(); + BeanUtils.copyProperties(doObj, dto); + return dto; + } +} + diff --git a/src/main/java/com/knowledge/base/infrastructure/converter/UserFileDtoConverter.java b/src/main/java/com/knowledge/base/infrastructure/converter/UserFileDtoConverter.java new file mode 100644 index 0000000..728661b --- /dev/null +++ b/src/main/java/com/knowledge/base/infrastructure/converter/UserFileDtoConverter.java @@ -0,0 +1,20 @@ +package com.knowledge.base.infrastructure.converter; + +import com.knowledge.base.domain.user.model.UserFileDO; +import com.knowledge.base.infrastructure.north.dto.user.UserFileDTO; +import org.springframework.beans.BeanUtils; + +public class UserFileDtoConverter { + public static UserFileDO toDO(UserFileDTO dto) { + if (dto == null) return null; + UserFileDO doObj = new UserFileDO(); + BeanUtils.copyProperties(dto, doObj); + return doObj; + } + public static UserFileDTO toDTO(UserFileDO doObj) { + if (doObj == null) return null; + UserFileDTO dto = new UserFileDTO(); + BeanUtils.copyProperties(doObj, dto); + return dto; + } +} diff --git a/src/main/java/com/knowledge/base/infrastructure/converter/UserRoleDtoConverter.java b/src/main/java/com/knowledge/base/infrastructure/converter/UserRoleDtoConverter.java new file mode 100644 index 0000000..746e3db --- /dev/null +++ b/src/main/java/com/knowledge/base/infrastructure/converter/UserRoleDtoConverter.java @@ -0,0 +1,20 @@ +package com.knowledge.base.infrastructure.converter; + +import com.knowledge.base.domain.user.model.UserRoleDO; +import com.knowledge.base.infrastructure.north.dto.role.UserRoleDTO; +import org.springframework.beans.BeanUtils; + +public class UserRoleDtoConverter { + public static UserRoleDO toDO(UserRoleDTO dto) { + if (dto == null) return null; + UserRoleDO doObj = new UserRoleDO(); + BeanUtils.copyProperties(dto, doObj); + return doObj; + } + public static UserRoleDTO toDTO(UserRoleDO doObj) { + if (doObj == null) return null; + UserRoleDTO dto = new UserRoleDTO(); + BeanUtils.copyProperties(doObj, dto); + return dto; + } +} diff --git a/src/main/java/com/knowledge/base/infrastructure/converter/UserTokenDtoConverter.java b/src/main/java/com/knowledge/base/infrastructure/converter/UserTokenDtoConverter.java new file mode 100644 index 0000000..a277091 --- /dev/null +++ b/src/main/java/com/knowledge/base/infrastructure/converter/UserTokenDtoConverter.java @@ -0,0 +1,30 @@ +package com.knowledge.base.infrastructure.converter; + +import com.knowledge.base.domain.user.model.UserTokenDO; +import com.knowledge.base.infrastructure.north.dto.user.UserTokenDTO; +import org.springframework.beans.BeanUtils; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public class UserTokenDtoConverter { + private static final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + public static UserTokenDO toDO(UserTokenDTO dto) { + if (dto == null) return null; + UserTokenDO doObj = new UserTokenDO(); + BeanUtils.copyProperties(dto, doObj); + if (dto.loginAt != null) doObj.loginAt = LocalDateTime.parse(dto.loginAt, dtf); + if (dto.expiredAt != null) doObj.expiredAt = LocalDateTime.parse(dto.expiredAt, dtf); + return doObj; + } + + public static UserTokenDTO toDTO(UserTokenDO doObj) { + if (doObj == null) return null; + UserTokenDTO dto = new UserTokenDTO(); + BeanUtils.copyProperties(doObj, dto); + dto.loginAt = doObj.loginAt == null ? null : dtf.format(doObj.loginAt); + dto.expiredAt = doObj.expiredAt == null ? null : dtf.format(doObj.expiredAt); + return dto; + } +} diff --git a/src/main/java/com/knowledge/base/infrastructure/north/controller/SearchController.java b/src/main/java/com/knowledge/base/infrastructure/north/controller/FileQueryController.java similarity index 89% rename from src/main/java/com/knowledge/base/infrastructure/north/controller/SearchController.java rename to src/main/java/com/knowledge/base/infrastructure/north/controller/FileQueryController.java index 14148e0..8da6c86 100644 --- a/src/main/java/com/knowledge/base/infrastructure/north/controller/SearchController.java +++ b/src/main/java/com/knowledge/base/infrastructure/north/controller/FileQueryController.java @@ -2,38 +2,41 @@ package com.knowledge.base.infrastructure.north.controller; import cn.hutool.core.map.MapUtil; import cn.hutool.json.JSONUtil; +import com.google.common.collect.Maps; +import com.knowledge.base.application.service.UserAppService; import com.knowledge.base.infrastructure.cache.FileCacheService; import com.knowledge.base.infrastructure.north.dto.SearchReq; -import com.google.common.collect.Maps; +import com.knowledge.base.infrastructure.north.dto.user.UserFileDTO; +import lombok.RequiredArgsConstructor; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; -import org.elasticsearch.client.*; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.MultiMatchQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.SearchHit; +import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.sort.SortOrder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.io.IOException; import java.util.*; import java.util.regex.Pattern; -/** - * @author Luke.ye - * @date 2025/5/20 16:56 - */ @RestController -@RequestMapping("/search") -public class SearchController { +@RequestMapping("/api/v1/file") +@RequiredArgsConstructor +public class FileQueryController { + private static final Logger LOGGER = LoggerFactory.getLogger(FileQueryController.class); - private static final Logger LOGGER = LoggerFactory.getLogger(SearchController.class); + private final UserAppService userAppService; private final RestHighLevelClient esClient; @@ -43,11 +46,7 @@ public class SearchController { @Value("${search.default-page-size:10}") private int defaultPageSize; - public SearchController(RestHighLevelClient esClient) { - this.esClient = esClient; - } - - @PostMapping + @PostMapping("/search") public Map search(@RequestBody SearchReq requestBody) throws IOException { int page = requestBody.getPage() != null && requestBody.getPage() > 0 ? requestBody.getPage() : 1; int size = requestBody.getSize() != null && requestBody.getSize() > 0 ? requestBody.getSize() : defaultPageSize; @@ -174,7 +173,9 @@ public class SearchController { } - + // 查询指定用户被授权文件 + @GetMapping("/listUserFiles") + public ResponseEntity> listUserFiles(@RequestParam Long userId) { + return ResponseEntity.ok(userAppService.listUserFiles(userId)); + } } - - diff --git a/src/main/java/com/knowledge/base/infrastructure/north/controller/DocMaintenanceController.java b/src/main/java/com/knowledge/base/infrastructure/north/controller/FileWriteController.java similarity index 71% rename from src/main/java/com/knowledge/base/infrastructure/north/controller/DocMaintenanceController.java rename to src/main/java/com/knowledge/base/infrastructure/north/controller/FileWriteController.java index e04e23f..3d14422 100644 --- a/src/main/java/com/knowledge/base/infrastructure/north/controller/DocMaintenanceController.java +++ b/src/main/java/com/knowledge/base/infrastructure/north/controller/FileWriteController.java @@ -1,5 +1,7 @@ package com.knowledge.base.infrastructure.north.controller; +import com.knowledge.base.application.service.UserAppService; +import com.knowledge.base.domain.doc.service.iface.DocumentImporter; import com.knowledge.base.infrastructure.cache.FileCacheService; import com.knowledge.base.infrastructure.util.SafeIdUtil; import lombok.RequiredArgsConstructor; @@ -13,18 +15,50 @@ import org.slf4j.LoggerFactory; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.List; import java.util.Map; import java.util.Optional; @RestController @RequestMapping("/api/v1/doc") @RequiredArgsConstructor -public class DocMaintenanceController { +public class FileWriteController { + private static final Logger logger = LoggerFactory.getLogger(FileWriteController.class); private final RestHighLevelClient esClient; + private final FileCacheService fileCacheService; private static final String INDEX_NAME = "documents"; - private static final Logger logger = LoggerFactory.getLogger(DocMaintenanceController.class); + + private final UserAppService userAppService; + + private List importers; + + @PostMapping("/addUserFileAuth") + public ResponseEntity addUserFileAuth(@RequestParam Long userId, @RequestParam Long fileId) { + return ResponseEntity.ok(userAppService.addUserFileAuth(userId, fileId)); + } + + @PostMapping("/removeUserFileAuth") + public ResponseEntity removeUserFileAuth(@RequestParam Long userId, @RequestParam Long fileId) { + return ResponseEntity.ok(userAppService.removeUserFileAuth(userId, fileId)); + } + + @GetMapping("/import/{type}") + public ResponseEntity importByType(@PathVariable String type) { + for (DocumentImporter importer : importers) { + if (importer.getType().equalsIgnoreCase(type)) { + try { + importer.importDocuments(); + return ResponseEntity.ok(type + " 文件导入成功"); + } catch (Exception e) { + return ResponseEntity.internalServerError().body("导入失败: " + e.getMessage()); + } + } + } + return ResponseEntity.badRequest().body("不支持的类型: " + type); + } + /** * 1. 根据文件名同时删除 ES 和缓存(Redis/本地)的记录 diff --git a/src/main/java/com/knowledge/base/infrastructure/north/controller/ImportController.java b/src/main/java/com/knowledge/base/infrastructure/north/controller/ImportController.java deleted file mode 100644 index a2c7e4f..0000000 --- a/src/main/java/com/knowledge/base/infrastructure/north/controller/ImportController.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.knowledge.base.infrastructure.north.controller; - -import com.knowledge.base.domain.doc.service.iface.DocumentImporter; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@RestController -@RequestMapping("/import") -public class ImportController { - - @Autowired - private List importers; - - @GetMapping("/{type}") - public ResponseEntity importByType(@PathVariable String type) { - for (DocumentImporter importer : importers) { - if (importer.getType().equalsIgnoreCase(type)) { - try { - importer.importDocuments(); - return ResponseEntity.ok(type + " 文件导入成功"); - } catch (Exception e) { - return ResponseEntity.internalServerError().body("导入失败: " + e.getMessage()); - } - } - } - return ResponseEntity.badRequest().body("不支持的类型: " + type); - } -} \ No newline at end of file diff --git a/src/main/java/com/knowledge/base/infrastructure/north/controller/RoleQueryController.java b/src/main/java/com/knowledge/base/infrastructure/north/controller/RoleQueryController.java new file mode 100644 index 0000000..d16865e --- /dev/null +++ b/src/main/java/com/knowledge/base/infrastructure/north/controller/RoleQueryController.java @@ -0,0 +1,37 @@ +package com.knowledge.base.infrastructure.north.controller; + +import com.knowledge.base.application.service.UserAppService; +import com.knowledge.base.infrastructure.north.dto.role.RoleDTO; +import com.knowledge.base.infrastructure.north.dto.role.RoleFileRuleDTO; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Optional; + +@RestController +@RequestMapping("/api/v1/role") +@RequiredArgsConstructor +public class RoleQueryController { + + private final UserAppService userAppService; + + @GetMapping("/list-roles") + public ResponseEntity> listAllRoles() { + return ResponseEntity.ok(userAppService.listRoles()); + } + + @GetMapping("/get") + public ResponseEntity getRoleById(@RequestParam Long id) { + Optional roleOpt = userAppService.getRoleById(id); + return roleOpt.>map(ResponseEntity::ok) + .orElseGet(() -> ResponseEntity.notFound().build()); + } + + @GetMapping("/list-role-file-rules") + public ResponseEntity> listRoleFileRules(@RequestParam Long roleId) { + return ResponseEntity.ok(userAppService.listRoleFileRules(roleId)); + } + +} diff --git a/src/main/java/com/knowledge/base/infrastructure/north/controller/RoleWriteController.java b/src/main/java/com/knowledge/base/infrastructure/north/controller/RoleWriteController.java new file mode 100644 index 0000000..32faf19 --- /dev/null +++ b/src/main/java/com/knowledge/base/infrastructure/north/controller/RoleWriteController.java @@ -0,0 +1,41 @@ +package com.knowledge.base.infrastructure.north.controller; + +import com.knowledge.base.application.service.UserAppService; +import com.knowledge.base.infrastructure.north.dto.role.RoleDTO; +import com.knowledge.base.infrastructure.north.dto.role.RoleFileRuleDTO; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/api/v1/role") +@RequiredArgsConstructor +public class RoleWriteController { + + private final UserAppService userAppService; + + @PostMapping("/add") + public ResponseEntity addRole(@RequestBody RoleDTO role) { + return ResponseEntity.ok(userAppService.addRole(role)); + } + + @PostMapping("/update") + public ResponseEntity updateRole(@RequestBody RoleDTO role) { + return ResponseEntity.ok(userAppService.updateRole(role)); + } + + @PostMapping("/delete") + public ResponseEntity deleteRole(@RequestParam Long id) { + return ResponseEntity.ok(userAppService.deleteRole(id)); + } + + @PostMapping("/add-role-file-rule") + public ResponseEntity addRoleFileRule(@RequestBody RoleFileRuleDTO rule) { + return ResponseEntity.ok(userAppService.addRoleFileRule(rule)); + } + + @PostMapping("/remove-role-file-rule") + public ResponseEntity removeRoleFileRule(@RequestParam Long id) { + return ResponseEntity.ok(userAppService.removeRoleFileRule(id)); + } +} diff --git a/src/main/java/com/knowledge/base/infrastructure/north/controller/UserQueryController.java b/src/main/java/com/knowledge/base/infrastructure/north/controller/UserQueryController.java new file mode 100644 index 0000000..56d5d83 --- /dev/null +++ b/src/main/java/com/knowledge/base/infrastructure/north/controller/UserQueryController.java @@ -0,0 +1,56 @@ +package com.knowledge.base.infrastructure.north.controller; + +import com.knowledge.base.application.service.UserAppService; +import com.knowledge.base.infrastructure.north.dto.role.UserRoleDTO; +import com.knowledge.base.infrastructure.north.dto.user.UserDTO; +import com.knowledge.base.infrastructure.north.dto.user.UserTokenDTO; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; +import java.util.Optional; + +@RestController +@RequestMapping("/api/v1/user") +@RequiredArgsConstructor +public class UserQueryController { + + private final UserAppService userAppService; + + @GetMapping("/check") + public ResponseEntity check( + @CookieValue(value = "token", required = false) String cookieToken, + @RequestHeader(value = "Authorization", required = false) String headerToken + ) { + String token = headerToken != null ? headerToken : cookieToken; + if (userAppService.isValidToken(token)) { + return ResponseEntity.ok(Map.of("code", 0, "msg", "校验成功")); + } + return ResponseEntity.status(401).body(Map.of("code", 401, "msg", "未授权")); + } + + @GetMapping("/username") + public ResponseEntity getUsernameByToken( + @CookieValue(value = "token", required = false) String cookieToken, + @RequestHeader(value = "Authorization", required = false) String headerToken + ) { + String token = headerToken != null ? headerToken : cookieToken; + Optional userTokenOpt = userAppService.findToken(token); + if (userTokenOpt.isPresent()) { + Long userId = userTokenOpt.get().getUserId(); + Optional userOpt = userAppService.findById(userId); + if (userOpt.isPresent()) { + return ResponseEntity.ok(Map.of("username", userOpt.get().getUsername())); + } + } + return ResponseEntity.status(401).body(Map.of("msg", "无效token")); + } + + + @GetMapping("/list-user-roles") + public ResponseEntity> listUserRoles(@RequestParam Long userId) { + return ResponseEntity.ok(userAppService.listUserRoles(userId)); + } +} diff --git a/src/main/java/com/knowledge/base/infrastructure/north/controller/UserController.java b/src/main/java/com/knowledge/base/infrastructure/north/controller/UserWriteController.java similarity index 59% rename from src/main/java/com/knowledge/base/infrastructure/north/controller/UserController.java rename to src/main/java/com/knowledge/base/infrastructure/north/controller/UserWriteController.java index b0945bb..fe15ab8 100644 --- a/src/main/java/com/knowledge/base/infrastructure/north/controller/UserController.java +++ b/src/main/java/com/knowledge/base/infrastructure/north/controller/UserWriteController.java @@ -1,10 +1,10 @@ package com.knowledge.base.infrastructure.north.controller; import com.knowledge.base.application.service.UserAppService; -import com.knowledge.base.domain.user.repository.po.User; -import com.knowledge.base.domain.user.repository.po.UserToken; import com.knowledge.base.infrastructure.config.ConstantConfig; import com.knowledge.base.infrastructure.config.DynamicConfig; +import com.knowledge.base.infrastructure.north.dto.user.UserDTO; +import com.knowledge.base.infrastructure.north.dto.user.UserTokenDTO; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -17,7 +17,7 @@ import java.util.Optional; @RestController @RequestMapping("/api/v1/user") @RequiredArgsConstructor -public class UserController { +public class UserWriteController { private final UserAppService userAppService; private final DynamicConfig dynamicConfig; @@ -27,14 +27,14 @@ public class UserController { String username = body.getOrDefault("username", "").trim(); String password = body.getOrDefault("password", "").trim(); - Optional userOpt = userAppService.findByUsername(username); + Optional userOpt = userAppService.findByUsername(username); if (userOpt.isEmpty() || !userAppService.verifyPassword(userOpt.get().getUsername(), password)) { return ResponseEntity.status(401).body(Map.of("message", "用户名或密码错误")); } - User user = userOpt.get(); + UserDTO user = userOpt.get(); long expireMs = dynamicConfig.getTokenExpireTime(); - UserToken token = userAppService.createToken(user.getId(), expireMs); + UserTokenDTO token = userAppService.createToken(user.getId(), expireMs); Cookie cookie = new Cookie(ConstantConfig.COOKIE_KEY, token.getToken()); cookie.setPath("/"); @@ -70,32 +70,14 @@ public class UserController { return ResponseEntity.ok(Map.of("msg", "已登出")); } - @GetMapping("/check") - public ResponseEntity check( - @CookieValue(value = ConstantConfig.COOKIE_KEY, required = false) String cookieToken, - @RequestHeader(value = "Authorization", required = false) String headerToken - ) { - String token = headerToken != null ? headerToken : cookieToken; - if (userAppService.isValidToken(token)) { - return ResponseEntity.ok(Map.of("code", 0, "msg", "校验成功")); - } - return ResponseEntity.status(401).body(Map.of("code", 401, "msg", "未授权")); + + @PostMapping("/add-user-role") + public ResponseEntity addUserRole(@RequestParam Long userId, @RequestParam Long roleId) { + return ResponseEntity.ok(userAppService.addUserRole(userId, roleId)); } - @GetMapping("/username") - public ResponseEntity getUsernameByToken( - @CookieValue(value = ConstantConfig.COOKIE_KEY, required = false) String cookieToken, - @RequestHeader(value = "Authorization", required = false) String headerToken - ) { - String token = headerToken != null ? headerToken : cookieToken; - Optional userTokenOpt = userAppService.findToken(token); - if (userTokenOpt.isPresent()) { - Long userId = userTokenOpt.get().getUserId(); - Optional userOpt = userAppService.findById(userId); - if (userOpt.isPresent()) { - return ResponseEntity.ok(Map.of("username", userOpt.get().getUsername())); - } - } - return ResponseEntity.status(401).body(Map.of("msg", "无效token")); + @PostMapping("/remove-user-role") + public ResponseEntity removeUserRole(@RequestParam Long userId, @RequestParam Long roleId) { + return ResponseEntity.ok(userAppService.removeUserRole(userId, roleId)); } } diff --git a/src/main/java/com/knowledge/base/infrastructure/north/dto/doc/FileDTO.java b/src/main/java/com/knowledge/base/infrastructure/north/dto/doc/FileDTO.java new file mode 100644 index 0000000..fac4af5 --- /dev/null +++ b/src/main/java/com/knowledge/base/infrastructure/north/dto/doc/FileDTO.java @@ -0,0 +1,16 @@ +package com.knowledge.base.infrastructure.north.dto.doc; + +import lombok.Data; + +/** + * @author Luke.ye + * @date 2025/6/9 10:50 + */ +@Data +public class FileDTO { + public Long id; + public String fileName; + public String filePath; + public String addTime; // 建议前端用字符串格式 + public String updateTime; +} diff --git a/src/main/java/com/knowledge/base/infrastructure/north/dto/role/RoleDTO.java b/src/main/java/com/knowledge/base/infrastructure/north/dto/role/RoleDTO.java new file mode 100644 index 0000000..18f5271 --- /dev/null +++ b/src/main/java/com/knowledge/base/infrastructure/north/dto/role/RoleDTO.java @@ -0,0 +1,14 @@ +package com.knowledge.base.infrastructure.north.dto.role; + +import lombok.Data; + +/** + * @author Luke.ye + * @date 2025/6/9 10:37 + */ +@Data +public class RoleDTO { + public Long id; + public String roleCode; + public String roleName; +} diff --git a/src/main/java/com/knowledge/base/infrastructure/north/dto/role/RoleFileRuleDTO.java b/src/main/java/com/knowledge/base/infrastructure/north/dto/role/RoleFileRuleDTO.java new file mode 100644 index 0000000..01dc4a0 --- /dev/null +++ b/src/main/java/com/knowledge/base/infrastructure/north/dto/role/RoleFileRuleDTO.java @@ -0,0 +1,15 @@ +package com.knowledge.base.infrastructure.north.dto.role; + +import lombok.Data; + +/** + * @author Luke.ye + * @date 2025/6/9 10:39 + */ +@Data +public class RoleFileRuleDTO { + public Long id; + public Long roleId; + public String filePattern; + public String remark; +} diff --git a/src/main/java/com/knowledge/base/infrastructure/north/dto/role/UserRoleDTO.java b/src/main/java/com/knowledge/base/infrastructure/north/dto/role/UserRoleDTO.java new file mode 100644 index 0000000..047c415 --- /dev/null +++ b/src/main/java/com/knowledge/base/infrastructure/north/dto/role/UserRoleDTO.java @@ -0,0 +1,15 @@ +package com.knowledge.base.infrastructure.north.dto.role; + +import lombok.Data; + +/** + * @author Luke.ye + * @date 2025/6/9 10:37 + */ + +@Data +public class UserRoleDTO { + public Long id; + public Long userId; + public Long roleId; +} diff --git a/src/main/java/com/knowledge/base/infrastructure/north/dto/user/UserDTO.java b/src/main/java/com/knowledge/base/infrastructure/north/dto/user/UserDTO.java new file mode 100644 index 0000000..f52685f --- /dev/null +++ b/src/main/java/com/knowledge/base/infrastructure/north/dto/user/UserDTO.java @@ -0,0 +1,14 @@ +package com.knowledge.base.infrastructure.north.dto.user; + +import lombok.Data; + +/** + * @author Luke.ye + * @date 2025/6/9 10:36 + */ + +@Data +public class UserDTO { + public Long id; + public String username; +} diff --git a/src/main/java/com/knowledge/base/infrastructure/north/dto/user/UserFileDTO.java b/src/main/java/com/knowledge/base/infrastructure/north/dto/user/UserFileDTO.java new file mode 100644 index 0000000..6351d99 --- /dev/null +++ b/src/main/java/com/knowledge/base/infrastructure/north/dto/user/UserFileDTO.java @@ -0,0 +1,14 @@ +package com.knowledge.base.infrastructure.north.dto.user; + +import lombok.Data; + +/** + * @author Luke.ye + * @date 2025/6/9 10:38 + */ +@Data +public class UserFileDTO { + public Long id; + public Long userId; + public Long fileId; +} diff --git a/src/main/java/com/knowledge/base/infrastructure/north/dto/user/UserTokenDTO.java b/src/main/java/com/knowledge/base/infrastructure/north/dto/user/UserTokenDTO.java new file mode 100644 index 0000000..c3cedb5 --- /dev/null +++ b/src/main/java/com/knowledge/base/infrastructure/north/dto/user/UserTokenDTO.java @@ -0,0 +1,16 @@ +package com.knowledge.base.infrastructure.north.dto.user; + +import lombok.Data; + +/** + * @author Luke.ye + * @date 2025/6/9 10:40 + */ +@Data +public class UserTokenDTO { + public Long id; + public Long userId; + public String token; + public String loginAt; // 建议用字符串时间,方便前端展示 + public String expiredAt; +} diff --git a/src/main/resources/application-dev-mac.properties b/src/main/resources/application-dev-mac.properties index cec4bfe..67a117a 100644 --- a/src/main/resources/application-dev-mac.properties +++ b/src/main/resources/application-dev-mac.properties @@ -37,3 +37,6 @@ spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl mybatis-plus.global-config.db-config.logic-delete-field=deleted mybatis-plus.global-config.db-config.id-type=auto + +# Redis 开关控制 +knowledge.base.redis.enable=false \ No newline at end of file diff --git a/src/test/resources/application-dev-mac.properties b/src/test/resources/application-dev-mac.properties index cec4bfe..67a117a 100644 --- a/src/test/resources/application-dev-mac.properties +++ b/src/test/resources/application-dev-mac.properties @@ -37,3 +37,6 @@ spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl mybatis-plus.global-config.db-config.logic-delete-field=deleted mybatis-plus.global-config.db-config.id-type=auto + +# Redis 开关控制 +knowledge.base.redis.enable=false \ No newline at end of file