From e49266d3325281046a4e2a7049d68a071c6d41e4 Mon Sep 17 00:00:00 2001 From: "B.E.N.S.O.N" Date: Wed, 31 Dec 2025 13:29:57 +0800 Subject: [PATCH] Update for the user function --- .../fpsms/modules/user/service/UserService.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/java/com/ffii/fpsms/modules/user/service/UserService.java b/src/main/java/com/ffii/fpsms/modules/user/service/UserService.java index 7ea1c09..a96c5e5 100644 --- a/src/main/java/com/ffii/fpsms/modules/user/service/UserService.java +++ b/src/main/java/com/ffii/fpsms/modules/user/service/UserService.java @@ -17,6 +17,7 @@ import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.Assert; import com.ffii.core.exception.NotFoundException; import com.ffii.core.exception.UnprocessableEntityException; @@ -275,4 +276,16 @@ public class UserService extends AbstractBaseEntityService getEscalationCombo() { return userRepository.findUserComboByTitleNotNullAndDepartmentNotNullAndNameNotNullAndDeletedFalse(); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void markDelete(User entity) { + Assert.notNull(entity, "entity must not be null"); + // Use direct SQL update to bypass JPA validation during soft delete + // This prevents ConstraintViolationException when password field has @NotBlank constraint + jdbcDao.executeUpdate( + "UPDATE `user` SET deleted = 1 WHERE id = :id", + Map.of("id", entity.getId()) + ); + } } \ No newline at end of file