新增修改代码逻辑

This commit is contained in:
luke 2025-06-12 18:12:36 +08:00
parent 089da5da2a
commit 58c75ce332
7 changed files with 45 additions and 0 deletions

View File

@ -14,6 +14,7 @@ public interface UserAppService {
// 用户注册
boolean registerUser(String username, String password, List<Long> roleIds);
boolean verifyPassword(String username, String plainText);
boolean changePassword(Long userId, String oldPassword, String newPassword);
boolean deleteUser(Long id);
boolean updateUser(Long id, UserDTO userDTO);

View File

@ -45,6 +45,11 @@ public class UserAppServiceImpl implements UserAppService {
return userDomainService.verifyPassword(username, plainText);
}
@Override
public boolean changePassword(Long userId, String oldPassword, String newPassword) {
return userDomainService.changePassword(userId, oldPassword, newPassword);
}
@Override
public boolean deleteUser(Long userId) {
return userDomainService.deleteUser(userId);

View File

@ -7,8 +7,11 @@ import java.util.Optional;
public interface UserAuthDomainSupport {
boolean verifyPassword(String username, String plainText);
boolean changePassword(Long userId, String oldPassword, String newPassword);
UserTokenDO createToken(Long userId, long expireMs);
boolean isValidToken(String token);
void removeToken(String token);
Optional<UserTokenDO> findToken(String token);
}

View File

@ -18,6 +18,7 @@ public interface UserDomainService {
// 认证/Token
Optional<UserTokenDO> findToken(String token);
boolean verifyPassword(String username, String plainText);
boolean changePassword(Long userId, String oldPassword, String newPassword);
UserTokenDO createToken(Long userId, long expireMs);
boolean isValidToken(String token);
void removeToken(String token);
@ -48,4 +49,5 @@ public interface UserDomainService {
List<UserFileDO> findUserFiles(Long userId);
boolean addUserFileAuth(Long userId, Long fileId);
boolean removeUserFileAuth(Long userId, Long fileId);
}

View File

@ -1,5 +1,6 @@
package com.knowledge.base.domain.user.service.impl;
import com.knowledge.base.domain.common.exception.DomainException;
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;
@ -30,6 +31,21 @@ public class UserAuthDomainSupportImpl implements UserAuthDomainSupport {
return inputHash.equals(user.getPassword());
}
@Override
public boolean changePassword(Long userId, String oldPassword, String newPassword) {
Optional<User> userOpt = userRepository.findById(userId);
if(userOpt.isEmpty()) return false;
User user = userOpt.get();
String oldInputHash = SM3Util.digest(oldPassword);
String newInputHash = SM3Util.digest(newPassword);
if(!oldInputHash.equals(user.getPassword())) {
throw new DomainException("旧密码错误!");
}
user.setPassword(newInputHash);
userRepository.save(user);
return true;
}
@Override
public UserTokenDO createToken(Long userId, long expireMs) {
String token = UUID.randomUUID().toString().replace("-", "");

View File

@ -64,6 +64,12 @@ public class UserDomainServiceImpl implements UserDomainService {
public boolean verifyPassword(String username, String plainText) {
return userAuthDomainSupport.verifyPassword(username, plainText);
}
@Override
public boolean changePassword(Long userId, String oldPassword, String newPassword) {
return userAuthDomainSupport.changePassword(userId, oldPassword, newPassword);
}
@Override
public UserTokenDO createToken(Long userId, long expireMs) {
return userAuthDomainSupport.createToken(userId, expireMs);

View File

@ -1,5 +1,6 @@
package com.knowledge.base.infrastructure.north.controller;
import cn.hutool.core.map.MapUtil;
import com.knowledge.base.application.service.UserAppService;
import com.knowledge.base.infrastructure.config.ConstantConfig;
import com.knowledge.base.infrastructure.config.DynamicConfig;
@ -63,6 +64,17 @@ public class UserWriteController {
return ResponseEntity.ok(userAppService.updateUser(userId, userDTO));
}
@PostMapping("/change-pwd")
public ResponseEntity<?> changeUserPassword(@RequestBody Map<String, String> body) {
if(MapUtil.isEmpty(body)) {
return ResponseEntity.badRequest().body(Map.of("msg", "参数错误body为空"));
}
body.getOrDefault("userId", "");
body.getOrDefault("oldPassword", "");
body.getOrDefault("newPassword", "");
return ResponseEntity.ok(userAppService.changePassword(Long.parseLong(body.get("userId")), body.get("oldPassword"), body.get("newPassword")));
}
@PostMapping("/login")
public ResponseEntity<?> login(@RequestBody Map<String, String> body, HttpServletResponse response) {
String username = body.getOrDefault("username", "").trim();