kaiyu
2021-03-15 5e23b5966d393f1eb94bca82498e09a67274e321
screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
@@ -2,6 +2,7 @@
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
@@ -20,6 +21,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.util.AESUtils;
import com.moral.util.MD5Utils;
import com.moral.util.RegexUtils;
import com.moral.util.TokenUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -59,8 +61,8 @@
        String account = parameters.get("account").toString();
        String password = parameters.get("password").toString();
        //解密
        account = AESUtils.decrypt(account, AESKey);
        password = AESUtils.decrypt(password, AESKey);
        /*account = AESUtils.decrypt(account, AESKey);
        password = AESUtils.decrypt(password, AESKey);*/
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        //校验账户
        queryWrapper.eq("account", account);
@@ -87,6 +89,8 @@
                userInfo.put("userName", user.getUserName());
                userInfo.put("organizationId", user.getOrganizationId());
                userInfo.put("locationCode", locationCode);
                userInfo.put("expireTime", user.getExpireTime());
                userInfo.put("isAdmin", user.getIsAdmin());
                List<Map<String, Object>> groups = groupMapper.selectUserGroup(userId);
                userInfo.put("groups", groups);
                userInfo.putAll(getMenus(userId));
@@ -155,87 +159,122 @@
    }
    @Override
    public Map<String, Object> addUser(User user, Integer userId) {
    public Map<String, Object> addUser(User user, String token) {
        Map<String, Object> resultMap = new HashMap<>();
        User currentUser = userMapper.selectById(userId);
        if (!currentUser.getIsAdmin()) {
            resultMap.put("flag", false);
            resultMap.put("msg", "添加失败,没有权限");
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        if (!(boolean) currentUserInfo.get("isAdmin")) {
            resultMap.put("msg", "没有权限");
            return resultMap;
        }
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("account", user.getAccount());
        userMapper.selectOne(queryWrapper);
        if (userMapper.selectOne(queryWrapper) == null) {
            user.setOrganizationId(currentUser.getOrganizationId());
            user.setExpireTime(currentUser.getExpireTime());
            userMapper.insert(user);
            resultMap.put("flag", true);
            resultMap.put("msg", "添加成功");
        } else {
            resultMap.put("flag", false);
            resultMap.put("msg", "添加失败,账户名已存在");
        if (userMapper.selectOne(queryWrapper) != null) {
            resultMap.put("msg", "账户名已存在");
            return resultMap;
        }
        //校验用户信息是否符合规则
        List<String> msgs = checkUserInfo(user);
        if (!msgs.isEmpty()) {
            resultMap.put("msg", msgs);
            return resultMap;
        }
        //密码加密
        String password = MD5Utils.saltMD5(user.getPassword());
        user.setPassword(password);
        user.setIsAdmin(false);
        user.setOrganizationId(Integer.parseInt(currentUserInfo.get("organizationId").toString()));
        //新增账户的过期时间
        Date userExpireTime = user.getExpireTime();
        //当前账户的过期时间
        Date expireTime = (Date) currentUserInfo.get("expireTime");
        if (userExpireTime == null || userExpireTime.getTime() > expireTime.getTime()) {
            user.setExpireTime(expireTime);
        }
        userMapper.insert(user);
        return resultMap;
    }
    @Override
    public Map<String, Object> deleteUser(Integer userId, Integer currentUserId) {
    public Map<String, Object> deleteUser(int userId, String token) {
        Map<String, Object> resultMap = new HashMap<>();
        User currentUser = userMapper.selectById(currentUserId);
        if (!currentUser.getIsAdmin()) {
            resultMap.put("flag", false);
            resultMap.put("msg", "删除失败,没有权限");
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        if (!(boolean) currentUserInfo.get("isAdmin")) {
            resultMap.put("msg", "没有权限");
        } else {
            User user = new User();
            user.setId(userId);
            user.setIsDelete("1");
            userMapper.updateById(user);
            resultMap.put("flag", true);
            resultMap.put("msg", "删除成功");
        }
        return resultMap;
    }
    @Override
    public Map<String, Object> updateUser(User user, Integer currentUserId) {
    public Map<String, Object> updateUser(User user, String token) {
        Map<String, Object> resultMap = new HashMap<>();
        User currentUser = userMapper.selectById(currentUserId);
        if (!currentUser.getIsAdmin()) {
            resultMap.put("flag", false);
            resultMap.put("msg", "修改失败,没有权限");
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
        if (!(boolean) currentUserInfo.get("isAdmin")) {
            resultMap.put("msg", "没有权限");
            return resultMap;
        }
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("account", user.getAccount());
        if (userMapper.selectOne(queryWrapper) == null) {
            userMapper.updateById(user);
            resultMap.put("flag", true);
            resultMap.put("msg", "修改成功");
        } else {
            resultMap.put("flag", false);
            resultMap.put("msg", "修改失败,账户已存在");
        if (userMapper.selectOne(queryWrapper) != null) {
            resultMap.put("msg", "账户已存在");
            return resultMap;
        }
        //校验用户信息是否符合规则
        List<String> msgs = checkUserInfo(user);
        if (!msgs.isEmpty()) {
            resultMap.put("msg", msgs);
            return resultMap;
        }
        //密码Md5加密
        user.setPassword(MD5Utils.saltMD5(user.getPassword()));
        userMapper.updateById(user);
        return resultMap;
    }
    @Override
    public List<User> getUsersByOrgId(Integer currentUserId) {
        User currentUser = userMapper.selectById(currentUserId);
        if (!currentUser.getIsAdmin()) {
            return null;
    public Map<String, Object> getUsers(Map<String, Object> parameters) {
        Map<String, Object> resultMap = new HashMap<>();
        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(parameters.get("token").toString());
        if (!(boolean) currentUserInfo.get("isAdmin")) {
            resultMap.put("msg", "没有权限");
            return resultMap;
        }
        Map<String, Object> queryMap = new HashMap<>();
        queryMap.put("organizationId", currentUser.getOrganizationId());
        return userMapper.selectByMap(queryMap);
        if (!parameters.containsKey("userId")) {
            parameters.put("orgId", currentUserInfo.get("organizationId"));
        }
        List<Map<String, Object>> users = userMapper.selectUsers(parameters);
        resultMap.put("users", users);
        return resultMap;
    }
    @Override
    public User getUserById(Integer userId, Integer currentUserId) {
        User currentUser = userMapper.selectById(currentUserId);
        if (!currentUser.getIsAdmin()) {
            return null;
    private List<String> checkUserInfo(User user) {
        List<String> msgs = new ArrayList<>();
        //验证账户
        if (!RegexUtils.checkAccount(user.getAccount())) {
            msgs.add("账户格式不正确");
        }
        return userMapper.selectById(userId);
        //验证密码
        if (!RegexUtils.checkPassword(user.getPassword())) {
            msgs.add("密码格式不正确");
        }
        //验证邮箱
        if (user.getEmail() != null) {
            if (!RegexUtils.checkEmail(user.getEmail())) {
                msgs.add("邮箱格式不正确");
            }
        }
        //验证手机号
        if (user.getMobile() != null) {
            if (!RegexUtils.checkMobile(user.getMobile())) {
                msgs.add("手机号格式不正确");
            }
        }
        return msgs;
    }
}