UserServiceImpl.java 4.7 KB
Newer Older
1 2
package me.zhengjie.modules.system.service.impl;

3
import me.zhengjie.modules.monitor.service.RedisService;
4 5 6 7 8 9 10 11
import me.zhengjie.modules.system.domain.User;
import me.zhengjie.exception.EntityExistException;
import me.zhengjie.exception.EntityNotFoundException;
import me.zhengjie.modules.system.repository.UserRepository;
import me.zhengjie.modules.system.service.UserService;
import me.zhengjie.modules.system.service.dto.UserDTO;
import me.zhengjie.modules.system.service.mapper.UserMapper;
import me.zhengjie.utils.ValidationUtil;
郑杰 已提交
12 13 14 15
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
16
import java.util.Date;
郑杰 已提交
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
import java.util.Optional;

/**
 * @author jie
 * @date 2018-11-23
 */
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class UserServiceImpl implements UserService {

    @Autowired
    private UserRepository userRepository;

    @Autowired
    private UserMapper userMapper;

33 34 35
    @Autowired
    private RedisService redisService;

郑杰 已提交
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
    @Override
    public UserDTO findById(long id) {
        Optional<User> user = userRepository.findById(id);
        ValidationUtil.isNull(user,"User","id",id);
        return userMapper.toDto(user.get());
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public UserDTO create(User resources) {

        if(userRepository.findByUsername(resources.getUsername())!=null){
            throw new EntityExistException(User.class,"username",resources.getUsername());
        }

        if(userRepository.findByEmail(resources.getEmail())!=null){
            throw new EntityExistException(User.class,"email",resources.getEmail());
        }

55 56
        // 默认密码 123456,此密码是加密后的字符
        resources.setPassword("e10adc3949ba59abbe56e057f20f883e");
57
        resources.setAvatar("https://i.loli.net/2019/04/04/5ca5b971e1548.jpeg");
郑杰 已提交
58 59 60 61 62 63
        return userMapper.toDto(userRepository.save(resources));
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void update(User resources) {
64 65 66 67 68
        Optional<User> userOptional = userRepository.findById(resources.getId());
        ValidationUtil.isNull(userOptional,"User","id",resources.getId());

        User user = userOptional.get();

郑杰 已提交
69 70 71 72 73 74 75 76 77 78 79
        User user1 = userRepository.findByUsername(user.getUsername());
        User user2 = userRepository.findByEmail(user.getEmail());

        if(user1 !=null&&!user.getId().equals(user1.getId())){
            throw new EntityExistException(User.class,"username",resources.getUsername());
        }

        if(user2!=null&&!user.getId().equals(user2.getId())){
            throw new EntityExistException(User.class,"email",resources.getEmail());
        }

80 81 82 83 84 85 86 87
        // 如果用户的角色改变了,需要手动清理下缓存
        if (!resources.getRoles().equals(user.getRoles())) {
            String key = "role::loadPermissionByUser:" + user.getUsername();
            redisService.delete(key);
            key = "role::findByUsers_Id:" + user.getId();
            redisService.delete(key);
        }

郑杰 已提交
88 89 90 91
        user.setUsername(resources.getUsername());
        user.setEmail(resources.getEmail());
        user.setEnabled(resources.getEnabled());
        user.setRoles(resources.getRoles());
92 93 94
        user.setDept(resources.getDept());
        user.setJob(resources.getJob());
        user.setPhone(resources.getPhone());
郑杰 已提交
95 96 97 98 99 100 101 102 103 104
        userRepository.save(user);
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void delete(Long id) {
        userRepository.deleteById(id);
    }

    @Override
105
    public UserDTO findByName(String userName) {
郑杰 已提交
106 107 108 109 110 111 112 113 114
        User user = null;
        if(ValidationUtil.isEmail(userName)){
            user = userRepository.findByEmail(userName);
        } else {
            user = userRepository.findByUsername(userName);
        }
        if (user == null) {
            throw new EntityNotFoundException(User.class, "name", userName);
        } else {
115
            return userMapper.toDto(user);
郑杰 已提交
116 117
        }
    }
118 119 120

    @Override
    @Transactional(rollbackFor = Exception.class)
121 122
    public void updatePass(String username, String pass) {
        userRepository.updatePass(username,pass,new Date());
123 124 125 126
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
127 128
    public void updateAvatar(String username, String url) {
        userRepository.updateAvatar(username,url);
129 130 131 132
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
133 134
    public void updateEmail(String username, String email) {
        userRepository.updateEmail(username,email);
135
    }
郑杰 已提交
136
}