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 2c21087..f56ddd8 100644 --- a/src/main/java/com/knowledge/base/application/service/UserAppService.java +++ b/src/main/java/com/knowledge/base/application/service/UserAppService.java @@ -14,6 +14,8 @@ public interface UserAppService { // 用户注册 boolean registerUser(String username, String password, List roleIds); boolean verifyPassword(String username, String plainText); + boolean deleteUser(Long id); + boolean updateUser(Long id, UserDTO userDTO); // 用户资料 Optional findByUsername(String username); @@ -49,4 +51,5 @@ public interface UserAppService { List listAllRules(); 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 2344c66..768dee1 100644 --- a/src/main/java/com/knowledge/base/application/service/UserAppServiceImpl.java +++ b/src/main/java/com/knowledge/base/application/service/UserAppServiceImpl.java @@ -1,6 +1,7 @@ package com.knowledge.base.application.service; import com.google.common.collect.Lists; +import com.knowledge.base.application.exceptions.AppException; import com.knowledge.base.domain.user.model.UserDO; import com.knowledge.base.domain.user.service.iface.UserDomainService; import com.knowledge.base.infrastructure.converter.*; @@ -41,6 +42,28 @@ public class UserAppServiceImpl implements UserAppService { return userDomainService.verifyPassword(username, plainText); } + @Override + public boolean deleteUser(Long userId) { + return userDomainService.deleteUser(userId); + } + + @Override + public boolean updateUser(Long id, UserDTO userDTO) { + UserDO userDO = UserDtoConverter.toDO(userDTO); + try { + userDomainService.updateUser(userDO); + userDomainService.findRolesByUserId(id).forEach(role -> { + userDomainService.removeUserRole(id, role.getRoleId()); + }); + userDTO.getUserRoles().forEach(roleId -> { + userDomainService.addUserRole(id, roleId.longValue()); + }); + } catch (Exception e) { + throw new AppException("更新用户信息失败", e); + } + return true; + } + @Override public Optional findByUsername(String username) { return Optional.ofNullable(UserDtoConverter.toDTO(userDomainService.findByUsername(username).get())); 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 5739b98..e8f3052 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 @@ -11,6 +11,8 @@ public interface UserDomainService { Optional findById(Long id); List findAllUsers(); boolean registerUser(String username, String plainPassword); + boolean deleteUser(Long id); + boolean updateUser(UserDO user); // 认证/Token Optional findToken(String token); 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 f2664b6..c04d90f 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,7 +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; import org.springframework.stereotype.Service; @@ -42,6 +41,16 @@ public class UserDomainServiceImpl implements UserDomainService { return true; } + @Override + public boolean updateUser(UserDO userDO) { + return userProfileDomainSupport.updateUser(userDO); + } + + @Override + public boolean deleteUser(Long id) { + return userProfileDomainSupport.deleteUser(id); + } + // 认证/Token @Override public Optional findToken(String token) { diff --git a/src/main/java/com/knowledge/base/infrastructure/north/controller/UserWriteController.java b/src/main/java/com/knowledge/base/infrastructure/north/controller/UserWriteController.java index dc2bdca..c28d90e 100644 --- a/src/main/java/com/knowledge/base/infrastructure/north/controller/UserWriteController.java +++ b/src/main/java/com/knowledge/base/infrastructure/north/controller/UserWriteController.java @@ -15,6 +15,7 @@ import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; @@ -46,6 +47,22 @@ public class UserWriteController { return ResponseEntity.ok(Map.of("msg", "注册成功")); } + @DeleteMapping + public ResponseEntity deleteUser(@RequestParam Long id) { + if(Objects.isNull(id)) { + return ResponseEntity.badRequest().body(Map.of("msg", "userId 不能为空")); + } + return ResponseEntity.ok(userAppService.deleteUser(id)); + } + + @PutMapping("/{id}") + public ResponseEntity updateUser(@PathVariable Long id, @RequestBody UserDTO userDTO) { + if(Objects.isNull(id) || Objects.isNull(userDTO)) { + return ResponseEntity.badRequest().body(Map.of("msg", "参数错误:id或用户信息为空!")); + } + return ResponseEntity.ok(userAppService.updateUser(id, userDTO)); + } + @PostMapping("/login") public ResponseEntity login(@RequestBody Map body, HttpServletResponse response) { String username = body.getOrDefault("username", "").trim(); 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 index d9e254d..ff6fd05 100644 --- 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 @@ -2,6 +2,8 @@ package com.knowledge.base.infrastructure.north.dto.user; import lombok.Data; +import java.util.Set; + /** * @author Luke.ye * @date 2025/6/9 10:36 @@ -12,4 +14,5 @@ public class UserDTO { private Long id; private String username; private String addTime; + private Set userRoles; }