diff --git a/src/main/java/github/benjamin/equipreservebackend/service/impl/UserServiceImpl.java b/src/main/java/github/benjamin/equipreservebackend/service/impl/UserServiceImpl.java index 77e7d7f..4c9130a 100644 --- a/src/main/java/github/benjamin/equipreservebackend/service/impl/UserServiceImpl.java +++ b/src/main/java/github/benjamin/equipreservebackend/service/impl/UserServiceImpl.java @@ -72,17 +72,38 @@ public class UserServiceImpl implements UserService { @Override public void updateUser(Long id, UserDTO dto) { + boolean hasUpdate = false; LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper() - .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() + .eq(UserRole::getUserId, id) + .set(UserRole::getRoleId, dto.getRoleId())); } - userMapper.update(wrapper); } @Override diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml index 29ca210..381dfa4 100644 --- a/src/main/resources/mapper/DeviceMapper.xml +++ b/src/main/resources/mapper/DeviceMapper.xml @@ -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')