UserServiceImpl.java 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. package space.anyi.petServiceManagementSystem.server.service.impl;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.stereotype.Service;
  4. import org.springframework.transaction.annotation.Transactional;
  5. import space.anyi.petServiceManagementSystem.server.common.BusinessException;
  6. import space.anyi.petServiceManagementSystem.server.common.PageVo;
  7. import space.anyi.petServiceManagementSystem.server.config.PasswordConfig;
  8. import space.anyi.petServiceManagementSystem.server.dto.room.QueryByPageParams;
  9. import space.anyi.petServiceManagementSystem.server.dto.user.UpdateUserAvatarDto;
  10. import space.anyi.petServiceManagementSystem.server.dto.user.UpdateUserPasswordDto;
  11. import space.anyi.petServiceManagementSystem.server.dto.user.UpdateUserStatusDto;
  12. import space.anyi.petServiceManagementSystem.server.dto.user.UserDto;
  13. import space.anyi.petServiceManagementSystem.server.entity.DewormingRecord;
  14. import space.anyi.petServiceManagementSystem.server.entity.Pet;
  15. import space.anyi.petServiceManagementSystem.server.entity.User;
  16. import space.anyi.petServiceManagementSystem.server.entity.VaccinationRecord;
  17. import space.anyi.petServiceManagementSystem.server.mapper.UserMapper;
  18. import space.anyi.petServiceManagementSystem.server.service.UserService;
  19. import space.anyi.petServiceManagementSystem.server.mapper.DewormingRecordMapper;
  20. import space.anyi.petServiceManagementSystem.server.mapper.PetMapper;
  21. import space.anyi.petServiceManagementSystem.server.mapper.VaccinationRecordMapper;
  22. import space.anyi.petServiceManagementSystem.server.util.PageUtil;
  23. import space.anyi.petServiceManagementSystem.server.vo.pet.DewormingVo;
  24. import space.anyi.petServiceManagementSystem.server.vo.pet.PetVo;
  25. import space.anyi.petServiceManagementSystem.server.vo.pet.VaccinationVo;
  26. import space.anyi.petServiceManagementSystem.server.vo.user.AdminUserDetailVo;
  27. import space.anyi.petServiceManagementSystem.server.vo.user.UserVo;
  28. import java.util.List;
  29. import java.util.stream.Collectors;
  30. @Service
  31. public class UserServiceImpl implements UserService {
  32. @Autowired
  33. private UserMapper userMapper;
  34. @Autowired
  35. private PasswordConfig passwordConfig;
  36. @Autowired
  37. private PetMapper petMapper;
  38. @Autowired
  39. private VaccinationRecordMapper vaccinationRecordMapper;
  40. @Autowired
  41. private DewormingRecordMapper dewormingRecordMapper;
  42. @Override
  43. public PageVo<UserVo> queryByPage(QueryByPageParams params) {
  44. int offset = (params.getPageNum() - 1) * params.getPageSize();
  45. return PageUtil.page(params.getPageNum(), params.getPageSize(),
  46. () -> userMapper.selectByPage(offset, params.getPageSize(),
  47. params.getUsername(), params.getAccount(),
  48. params.getRole(), params.getEnable())
  49. .stream().map(this::toUserVo).collect(Collectors.toList()),
  50. () -> userMapper.countByCondition(params.getUsername(), params.getAccount(),
  51. params.getRole(), params.getEnable()));
  52. }
  53. @Override
  54. public UserVo queryById(Long id) {
  55. User user = userMapper.selectById(id);
  56. return user != null ? toUserVo(user) : null;
  57. }
  58. @Override
  59. @Transactional(rollbackFor = Exception.class)
  60. public Boolean add(UserDto dto) {
  61. User exist = userMapper.selectByAccount(dto.getAccount());
  62. if (exist != null) {
  63. throw new BusinessException("账号已存在");
  64. }
  65. User user = new User();
  66. user.setAccount(dto.getAccount());
  67. user.setUsername(dto.getUsername());
  68. user.setPassword(passwordConfig.encrypt(dto.getPassword()));
  69. user.setEmail(dto.getEmail());
  70. user.setPhone(dto.getPhone());
  71. user.setAvatar(dto.getAvatar());
  72. user.setRole(dto.getRole() != null ? dto.getRole() : "user");
  73. user.setEnable(dto.getEnable() != null ? dto.getEnable() : 1);
  74. return userMapper.insert(user) > 0;
  75. }
  76. @Override
  77. @Transactional(rollbackFor = Exception.class)
  78. public Boolean edit(UserDto dto) {
  79. User user = new User();
  80. user.setId(dto.getId());
  81. user.setUsername(dto.getUsername());
  82. if (dto.getPassword() != null && !dto.getPassword().isEmpty()) {
  83. user.setPassword(passwordConfig.encrypt(dto.getPassword()));
  84. }
  85. user.setEmail(dto.getEmail());
  86. user.setPhone(dto.getPhone());
  87. user.setAvatar(dto.getAvatar());
  88. user.setRole(dto.getRole());
  89. user.setEnable(dto.getEnable());
  90. return userMapper.update(user) > 0;
  91. }
  92. @Override
  93. @Transactional(rollbackFor = Exception.class)
  94. public Boolean deleteByIds(List<Long> ids) {
  95. return userMapper.deleteByIds(ids) > 0;
  96. }
  97. @Override
  98. @Transactional(rollbackFor = Exception.class)
  99. public void updateStatus(UpdateUserStatusDto dto) {
  100. userMapper.updateStatus(dto.getId(), dto.getEnable());
  101. }
  102. @Override
  103. @Transactional(rollbackFor = Exception.class)
  104. public void updatePassword(UpdateUserPasswordDto dto) {
  105. User user = userMapper.selectById(dto.getId());
  106. if (user == null) {
  107. throw new BusinessException("用户不存在");
  108. }
  109. if (!passwordConfig.matches(dto.getOldPassword(), user.getPassword())) {
  110. throw new BusinessException("旧密码错误");
  111. }
  112. userMapper.updatePassword(dto.getId(), passwordConfig.encrypt(dto.getNewPassword()));
  113. }
  114. @Override
  115. @Transactional(rollbackFor = Exception.class)
  116. public void updateAvatar(UpdateUserAvatarDto dto) {
  117. userMapper.updateAvatar(dto.getId(), dto.getAvatar());
  118. }
  119. @Override
  120. public AdminUserDetailVo getAdminDetail(Long id) {
  121. User user = userMapper.selectById(id);
  122. if (user == null) {
  123. throw new BusinessException("用户不存在");
  124. }
  125. List<Pet> pets = petMapper.selectByUserId(id);
  126. List<PetVo> petVos = pets.stream().map(pet -> {
  127. PetVo petVo = toPetVo(pet);
  128. petVo.setVaccinations(vaccinationRecordMapper.selectByPetId(pet.getId()).stream()
  129. .map(this::toVaccinationVo).collect(Collectors.toList()));
  130. petVo.setDewormings(dewormingRecordMapper.selectByPetId(pet.getId()).stream()
  131. .map(this::toDewormingVo).collect(Collectors.toList()));
  132. return petVo;
  133. }).collect(Collectors.toList());
  134. AdminUserDetailVo detail = new AdminUserDetailVo();
  135. detail.setUser(toUserVo(user));
  136. detail.setPets(petVos);
  137. return detail;
  138. }
  139. private PetVo toPetVo(Pet pet) {
  140. PetVo vo = new PetVo();
  141. vo.setId(pet.getId());
  142. vo.setUserId(pet.getUserId());
  143. vo.setName(pet.getName());
  144. vo.setSpecies(pet.getSpecies());
  145. vo.setBreed(pet.getBreed());
  146. vo.setGender(pet.getGender());
  147. vo.setBirthDate(pet.getBirthDate());
  148. vo.setWeight(pet.getWeight());
  149. vo.setAvatar(pet.getAvatar());
  150. vo.setRemark(pet.getRemark());
  151. vo.setCreatedAt(pet.getCreatedAt());
  152. return vo;
  153. }
  154. private VaccinationVo toVaccinationVo(VaccinationRecord r) {
  155. VaccinationVo vo = new VaccinationVo();
  156. vo.setId(r.getId());
  157. vo.setPetId(r.getPetId());
  158. vo.setVaccineName(r.getVaccineName());
  159. vo.setVaccineDate(r.getVaccineDate());
  160. vo.setHospital(r.getHospital());
  161. vo.setDoctor(r.getDoctor());
  162. vo.setRemark(r.getRemark());
  163. vo.setCreatedAt(r.getCreatedAt());
  164. return vo;
  165. }
  166. private DewormingVo toDewormingVo(DewormingRecord r) {
  167. DewormingVo vo = new DewormingVo();
  168. vo.setId(r.getId());
  169. vo.setPetId(r.getPetId());
  170. vo.setDewormingName(r.getDewormingName());
  171. vo.setDewormingDate(r.getDewormingDate());
  172. vo.setHospital(r.getHospital());
  173. vo.setDoctor(r.getDoctor());
  174. vo.setRemark(r.getRemark());
  175. vo.setCreatedAt(r.getCreatedAt());
  176. return vo;
  177. }
  178. private UserVo toUserVo(User user) {
  179. UserVo vo = new UserVo();
  180. vo.setId(user.getId());
  181. vo.setUsername(user.getUsername());
  182. vo.setAccount(user.getAccount());
  183. vo.setEmail(user.getEmail());
  184. vo.setPhone(user.getPhone());
  185. vo.setAvatar(user.getAvatar());
  186. vo.setRole(user.getRole());
  187. vo.setEnable(user.getEnable());
  188. return vo;
  189. }
  190. }