| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- package space.anyi.petServiceManagementSystem.server.service.impl;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import space.anyi.petServiceManagementSystem.server.common.BusinessException;
- import space.anyi.petServiceManagementSystem.server.common.PageVo;
- import space.anyi.petServiceManagementSystem.server.config.PasswordConfig;
- import space.anyi.petServiceManagementSystem.server.dto.room.QueryByPageParams;
- import space.anyi.petServiceManagementSystem.server.dto.user.UpdateUserAvatarDto;
- import space.anyi.petServiceManagementSystem.server.dto.user.UpdateUserPasswordDto;
- import space.anyi.petServiceManagementSystem.server.dto.user.UpdateUserStatusDto;
- import space.anyi.petServiceManagementSystem.server.dto.user.UserDto;
- import space.anyi.petServiceManagementSystem.server.entity.DewormingRecord;
- import space.anyi.petServiceManagementSystem.server.entity.Pet;
- import space.anyi.petServiceManagementSystem.server.entity.User;
- import space.anyi.petServiceManagementSystem.server.entity.VaccinationRecord;
- import space.anyi.petServiceManagementSystem.server.mapper.UserMapper;
- import space.anyi.petServiceManagementSystem.server.service.UserService;
- import space.anyi.petServiceManagementSystem.server.mapper.DewormingRecordMapper;
- import space.anyi.petServiceManagementSystem.server.mapper.PetMapper;
- import space.anyi.petServiceManagementSystem.server.mapper.VaccinationRecordMapper;
- import space.anyi.petServiceManagementSystem.server.util.PageUtil;
- import space.anyi.petServiceManagementSystem.server.vo.pet.DewormingVo;
- import space.anyi.petServiceManagementSystem.server.vo.pet.PetVo;
- import space.anyi.petServiceManagementSystem.server.vo.pet.VaccinationVo;
- import space.anyi.petServiceManagementSystem.server.vo.user.AdminUserDetailVo;
- import space.anyi.petServiceManagementSystem.server.vo.user.UserVo;
- import java.util.List;
- import java.util.stream.Collectors;
- @Service
- public class UserServiceImpl implements UserService {
- @Autowired
- private UserMapper userMapper;
- @Autowired
- private PasswordConfig passwordConfig;
- @Autowired
- private PetMapper petMapper;
- @Autowired
- private VaccinationRecordMapper vaccinationRecordMapper;
- @Autowired
- private DewormingRecordMapper dewormingRecordMapper;
- @Override
- public PageVo<UserVo> queryByPage(QueryByPageParams params) {
- int offset = (params.getPageNum() - 1) * params.getPageSize();
- return PageUtil.page(params.getPageNum(), params.getPageSize(),
- () -> userMapper.selectByPage(offset, params.getPageSize(),
- params.getUsername(), params.getAccount(),
- params.getRole(), params.getEnable())
- .stream().map(this::toUserVo).collect(Collectors.toList()),
- () -> userMapper.countByCondition(params.getUsername(), params.getAccount(),
- params.getRole(), params.getEnable()));
- }
- @Override
- public UserVo queryById(Long id) {
- User user = userMapper.selectById(id);
- return user != null ? toUserVo(user) : null;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Boolean add(UserDto dto) {
- User exist = userMapper.selectByAccount(dto.getAccount());
- if (exist != null) {
- throw new BusinessException("账号已存在");
- }
- User user = new User();
- user.setAccount(dto.getAccount());
- user.setUsername(dto.getUsername());
- user.setPassword(passwordConfig.encrypt(dto.getPassword()));
- user.setEmail(dto.getEmail());
- user.setPhone(dto.getPhone());
- user.setAvatar(dto.getAvatar());
- user.setRole(dto.getRole() != null ? dto.getRole() : "user");
- user.setEnable(dto.getEnable() != null ? dto.getEnable() : 1);
- return userMapper.insert(user) > 0;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Boolean edit(UserDto dto) {
- User user = new User();
- user.setId(dto.getId());
- user.setUsername(dto.getUsername());
- if (dto.getPassword() != null && !dto.getPassword().isEmpty()) {
- user.setPassword(passwordConfig.encrypt(dto.getPassword()));
- }
- user.setEmail(dto.getEmail());
- user.setPhone(dto.getPhone());
- user.setAvatar(dto.getAvatar());
- user.setRole(dto.getRole());
- user.setEnable(dto.getEnable());
- return userMapper.update(user) > 0;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Boolean deleteByIds(List<Long> ids) {
- return userMapper.deleteByIds(ids) > 0;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void updateStatus(UpdateUserStatusDto dto) {
- userMapper.updateStatus(dto.getId(), dto.getEnable());
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void updatePassword(UpdateUserPasswordDto dto) {
- User user = userMapper.selectById(dto.getId());
- if (user == null) {
- throw new BusinessException("用户不存在");
- }
- if (!passwordConfig.matches(dto.getOldPassword(), user.getPassword())) {
- throw new BusinessException("旧密码错误");
- }
- userMapper.updatePassword(dto.getId(), passwordConfig.encrypt(dto.getNewPassword()));
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void updateAvatar(UpdateUserAvatarDto dto) {
- userMapper.updateAvatar(dto.getId(), dto.getAvatar());
- }
- @Override
- public AdminUserDetailVo getAdminDetail(Long id) {
- User user = userMapper.selectById(id);
- if (user == null) {
- throw new BusinessException("用户不存在");
- }
- List<Pet> pets = petMapper.selectByUserId(id);
- List<PetVo> petVos = pets.stream().map(pet -> {
- PetVo petVo = toPetVo(pet);
- petVo.setVaccinations(vaccinationRecordMapper.selectByPetId(pet.getId()).stream()
- .map(this::toVaccinationVo).collect(Collectors.toList()));
- petVo.setDewormings(dewormingRecordMapper.selectByPetId(pet.getId()).stream()
- .map(this::toDewormingVo).collect(Collectors.toList()));
- return petVo;
- }).collect(Collectors.toList());
- AdminUserDetailVo detail = new AdminUserDetailVo();
- detail.setUser(toUserVo(user));
- detail.setPets(petVos);
- return detail;
- }
- private PetVo toPetVo(Pet pet) {
- PetVo vo = new PetVo();
- vo.setId(pet.getId());
- vo.setUserId(pet.getUserId());
- vo.setName(pet.getName());
- vo.setSpecies(pet.getSpecies());
- vo.setBreed(pet.getBreed());
- vo.setGender(pet.getGender());
- vo.setBirthDate(pet.getBirthDate());
- vo.setWeight(pet.getWeight());
- vo.setAvatar(pet.getAvatar());
- vo.setRemark(pet.getRemark());
- vo.setCreatedAt(pet.getCreatedAt());
- return vo;
- }
- private VaccinationVo toVaccinationVo(VaccinationRecord r) {
- VaccinationVo vo = new VaccinationVo();
- vo.setId(r.getId());
- vo.setPetId(r.getPetId());
- vo.setVaccineName(r.getVaccineName());
- vo.setVaccineDate(r.getVaccineDate());
- vo.setHospital(r.getHospital());
- vo.setDoctor(r.getDoctor());
- vo.setRemark(r.getRemark());
- vo.setCreatedAt(r.getCreatedAt());
- return vo;
- }
- private DewormingVo toDewormingVo(DewormingRecord r) {
- DewormingVo vo = new DewormingVo();
- vo.setId(r.getId());
- vo.setPetId(r.getPetId());
- vo.setDewormingName(r.getDewormingName());
- vo.setDewormingDate(r.getDewormingDate());
- vo.setHospital(r.getHospital());
- vo.setDoctor(r.getDoctor());
- vo.setRemark(r.getRemark());
- vo.setCreatedAt(r.getCreatedAt());
- return vo;
- }
- private UserVo toUserVo(User user) {
- UserVo vo = new UserVo();
- vo.setId(user.getId());
- vo.setUsername(user.getUsername());
- vo.setAccount(user.getAccount());
- vo.setEmail(user.getEmail());
- vo.setPhone(user.getPhone());
- vo.setAvatar(user.getAvatar());
- vo.setRole(user.getRole());
- vo.setEnable(user.getEnable());
- return vo;
- }
- }
|