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
public void updateUser(Long id, UserDTO dto) {
boolean hasUpdate = false;
LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<User>()
.eq(User::getId, id)
.set(StringUtils.hasText(dto.getName()), User::getName, dto.getName())
.set(StringUtils.hasText(dto.getPhone()), User::getPhone, dto.getPhone())
.set(StringUtils.hasText(dto.getUsername()),User::getUsername, dto.getUsername())
.set(Objects.nonNull(dto.getTeamId()), User::getTeamId, dto.getTeamId());
.eq(User::getId, id);
if (StringUtils.hasText(dto.getUsername())) {
wrapper.set(User::getUsername, dto.getUsername());
hasUpdate = true;
}
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())) {
String encoded = PasswordUtil.encode(dto.getPassword());
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

View File

@ -9,7 +9,7 @@
d.id AS deviceId,
d.name AS deviceName,
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
JOIN devices d ON r.device_id = d.id
WHERE r.status IN ('APPROVED', 'APPROVED_ASSIST')