From a2415e07be8e3752474bf15849c20db985cf971a Mon Sep 17 00:00:00 2001 From: "MSI\\derek" Date: Fri, 26 Apr 2024 16:12:58 +0800 Subject: [PATCH] update user related apis --- .../modules/user/entity/UserRepository.java | 1 + .../modules/user/service/UserService.java | 45 ++++++++++++++++++- .../tsms/modules/user/web/UserController.java | 2 +- 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ffii/tsms/modules/user/entity/UserRepository.java b/src/main/java/com/ffii/tsms/modules/user/entity/UserRepository.java index 1abe93e..40214d3 100644 --- a/src/main/java/com/ffii/tsms/modules/user/entity/UserRepository.java +++ b/src/main/java/com/ffii/tsms/modules/user/entity/UserRepository.java @@ -10,6 +10,7 @@ import com.ffii.core.support.AbstractRepository; public interface UserRepository extends AbstractRepository { List findByName(@Param("name") String name); + List findAllByAndDeletedFalse(); Optional findByUsernameAndDeletedFalse(String username); } diff --git a/src/main/java/com/ffii/tsms/modules/user/service/UserService.java b/src/main/java/com/ffii/tsms/modules/user/service/UserService.java index 3bb0e39..2ad8ff5 100644 --- a/src/main/java/com/ffii/tsms/modules/user/service/UserService.java +++ b/src/main/java/com/ffii/tsms/modules/user/service/UserService.java @@ -7,8 +7,10 @@ import java.util.Locale; import java.util.Map; import java.util.Optional; import java.util.Set; +import java.util.Date; import java.util.stream.Collectors; +import com.ffii.tsms.modules.common.service.AuditLogService; import org.apache.commons.lang3.LocaleUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; @@ -35,6 +37,9 @@ import com.ffii.tsms.modules.user.req.NewUserReq; import com.ffii.tsms.modules.user.req.SearchUserReq; import com.ffii.tsms.modules.user.req.UpdateUserReq; import com.ffii.tsms.modules.user.service.pojo.UserRecord; +import jakarta.persistence.Table; +import com.ffii.core.utils.JsonUtils; +import com.ffii.tsms.modules.common.SecurityUtils; import jakarta.mail.internet.InternetAddress; @@ -63,7 +68,8 @@ public class UserService extends AbstractBaseEntityService softDelete(User user) { + + // =====GET OLD AUDIT LOG=====// + String tableName = user.getClass().getAnnotation(Table.class).name(); + StringBuilder sql = new StringBuilder("SELECT * FROM " + tableName + " WHERE id = :id"); + String oldValueJson = null; + String newValueJson = null; + + StringBuilder sql2 = new StringBuilder("SELECT authId FROM user_authority WHERE userId = :id"); + + StringBuilder sql3 = new StringBuilder("SELECT groupId FROM user_group WHERE userId = :id"); + + if (user.getId() != null && user.getId() > 0) { + Map input = Map.of("id", user.getId()); + Map logData = jdbcDao.queryForMap(sql.toString(), input) + .orElseThrow(NotFoundException::new); + logData.put("user_auth", jdbcDao.queryForList(sql2.toString(), input).toArray()); + logData.put("user_group", jdbcDao.queryForList(sql3.toString(), input).toArray()); + oldValueJson = JsonUtils.toJsonString(logData); + } + // =====GET OLD AUDIT LOG=====// + this.markDelete(user); + + // =====GET NEW AUDIT LOG=====// + auditLogService.save( + tableName, + user.getId(), + SecurityUtils.getUser().isPresent() ? SecurityUtils.getUser().get().getId() : null, + new Date(), + oldValueJson, + newValueJson); + // =====GET NEW AUDIT LOG=====// + + return Map.of( + "id", user.getId()); + } + // @Transactional(rollbackFor = Exception.class) public List search(SearchUserReq req) { StringBuilder sql = new StringBuilder("SELECT" diff --git a/src/main/java/com/ffii/tsms/modules/user/web/UserController.java b/src/main/java/com/ffii/tsms/modules/user/web/UserController.java index 8ab3cdf..12a05fe 100644 --- a/src/main/java/com/ffii/tsms/modules/user/web/UserController.java +++ b/src/main/java/com/ffii/tsms/modules/user/web/UserController.java @@ -87,7 +87,7 @@ public class UserController{ @ResponseStatus(HttpStatus.NO_CONTENT) @PreAuthorize("hasAuthority('MAINTAIN_USER')") public void delete(@PathVariable long id) { - userService.markDelete(userService.find(id).orElseThrow(NotFoundException::new)); + userService.softDelete(userService.find(id).orElseThrow(NotFoundException::new)); } // @Operation(summary = "new user")