|
@@ -7,8 +7,10 @@ import java.util.Locale; |
|
|
import java.util.Map; |
|
|
import java.util.Map; |
|
|
import java.util.Optional; |
|
|
import java.util.Optional; |
|
|
import java.util.Set; |
|
|
import java.util.Set; |
|
|
|
|
|
import java.util.Date; |
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
|
|
import com.ffii.tsms.modules.common.service.AuditLogService; |
|
|
import org.apache.commons.lang3.LocaleUtils; |
|
|
import org.apache.commons.lang3.LocaleUtils; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.springframework.beans.BeanUtils; |
|
|
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.SearchUserReq; |
|
|
import com.ffii.tsms.modules.user.req.UpdateUserReq; |
|
|
import com.ffii.tsms.modules.user.req.UpdateUserReq; |
|
|
import com.ffii.tsms.modules.user.service.pojo.UserRecord; |
|
|
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; |
|
|
import jakarta.mail.internet.InternetAddress; |
|
|
|
|
|
|
|
@@ -63,7 +68,8 @@ public class UserService extends AbstractBaseEntityService<User, Long, UserRepos |
|
|
|
|
|
|
|
|
@Autowired |
|
|
@Autowired |
|
|
UserRepository userRepository; |
|
|
UserRepository userRepository; |
|
|
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
|
private AuditLogService auditLogService; |
|
|
public UserService(JdbcDao jdbcDao, UserRepository userRepository) { |
|
|
public UserService(JdbcDao jdbcDao, UserRepository userRepository) { |
|
|
super(jdbcDao, userRepository); |
|
|
super(jdbcDao, userRepository); |
|
|
} |
|
|
} |
|
@@ -85,6 +91,43 @@ public class UserService extends AbstractBaseEntityService<User, Long, UserRepos |
|
|
return userRepository.findByUsernameAndDeletedFalse(username); |
|
|
return userRepository.findByUsernameAndDeletedFalse(username); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public Map<String, Object> 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<String, Object> input = Map.of("id", user.getId()); |
|
|
|
|
|
Map<String, Object> 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) |
|
|
// @Transactional(rollbackFor = Exception.class) |
|
|
public List<UserRecord> search(SearchUserReq req) { |
|
|
public List<UserRecord> search(SearchUserReq req) { |
|
|
StringBuilder sql = new StringBuilder("SELECT" |
|
|
StringBuilder sql = new StringBuilder("SELECT" |
|
|