bugfix: 修复修改用户信息时若没有修改用户表内列内容执行update报错、修改用户角色时没有执行user_role的更新

This commit is contained in:
BenjaminNH 2025-07-03 16:51:40 +08:00
parent 91492960f7
commit 0be8abfaaa
2 changed files with 28 additions and 7 deletions

View File

@ -72,17 +72,38 @@ public class UserServiceImpl implements UserService {
@Override @Override
public void updateUser(Long id, UserDTO dto) { public void updateUser(Long id, UserDTO dto) {
boolean hasUpdate = false;
LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<User>() LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<User>()
.eq(User::getId, id) .eq(User::getId, id);
.set(StringUtils.hasText(dto.getName()), User::getName, dto.getName()) if (StringUtils.hasText(dto.getUsername())) {
.set(StringUtils.hasText(dto.getPhone()), User::getPhone, dto.getPhone()) wrapper.set(User::getUsername, dto.getUsername());
.set(StringUtils.hasText(dto.getUsername()),User::getUsername, dto.getUsername()) hasUpdate = true;
.set(Objects.nonNull(dto.getTeamId()), User::getTeamId, dto.getTeamId()); }
if (StringUtils.hasText(dto.getName())) {
wrapper.set(User::getName, dto.getName());
hasUpdate = true;
}
if (StringUtils.hasText(dto.getPhone())) {
wrapper.set(User::getPhone, dto.getPhone());
hasUpdate = true;
}
if (Objects.nonNull(dto.getTeamId())) {
wrapper.set(User::getTeamId, dto.getTeamId());
hasUpdate = true;
}
if (StringUtils.hasText(dto.getPassword())) { if (StringUtils.hasText(dto.getPassword())) {
String encoded = PasswordUtil.encode(dto.getPassword()); String encoded = PasswordUtil.encode(dto.getPassword());
wrapper.set(User::getPassword, encoded); wrapper.set(User::getPassword, encoded);
hasUpdate = true;
}
if (hasUpdate) {
userMapper.update(wrapper);
}
if (Objects.nonNull(dto.getRoleId())) {
userRoleMapper.update(new LambdaUpdateWrapper<UserRole>()
.eq(UserRole::getUserId, id)
.set(UserRole::getRoleId, dto.getRoleId()));
} }
userMapper.update(wrapper);
} }
@Override @Override

View File

@ -9,7 +9,7 @@
d.id AS deviceId, d.id AS deviceId,
d.name AS deviceName, d.name AS deviceName,
COUNT(*) AS usageCount, COUNT(*) AS usageCount,
SUM(TIMESTAMPDIFF(DAY, r.start_time, r.end_time)) AS totalUsageDays SUM(TIMESTAMPDIFF(DAY, r.start_time, r.end_time) + 1) AS totalUsageDays
FROM reservations r FROM reservations r
JOIN devices d ON r.device_id = d.id JOIN devices d ON r.device_id = d.id
WHERE r.status IN ('APPROVED', 'APPROVED_ASSIST') WHERE r.status IN ('APPROVED', 'APPROVED_ASSIST')