lizijie
2021-03-18 f1c3c5f0b840df7fa5fe08a69186c9f2b52ce243
screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
@@ -10,7 +10,9 @@
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.moral.api.entity.Group;
import com.moral.api.entity.Menu;
import com.moral.api.entity.Organization;
import com.moral.api.entity.User;
import com.moral.api.mapper.GroupMapper;
@@ -19,6 +21,7 @@
import com.moral.api.mapper.UserMapper;
import com.moral.api.service.UserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.constant.Constants;
import com.moral.util.AESUtils;
import com.moral.util.MD5Utils;
import com.moral.util.RegexUtils;
@@ -43,65 +46,44 @@
    private UserMapper userMapper;
    @Autowired
    private GroupMapper groupMapper;
    @Autowired
    private MenuMapper menuMapper;
    @Autowired
    private OrganizationMapper organizationMapper;
    @Value("${AES.KEY}")
    private String AESKey;
    @Override
    public User selectUserInfo(Map<String, Object> parameters) {
        return userMapper.selectUserInfo(parameters);
    }
    @Override
    public Map<String, Object> login(Map<String, Object> parameters) {
    public Map<String, Object> login(User user) {
        Map<String, Object> resultMap = new LinkedHashMap<>();
        //接收参数
        String account = parameters.get("account").toString();
        String password = parameters.get("password").toString();
        //解密
        /*account = AESUtils.decrypt(account, AESKey);
        password = AESUtils.decrypt(password, AESKey);*/
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        //校验账户
        queryWrapper.eq("account", account);
        User user = userMapper.selectOne(queryWrapper);
        String msg;
        if (user == null) {
            msg = "用户名不存在";
        } else {
            if (!MD5Utils.saltMD5Verify(password, user.getPassword())) {//校验密码
                msg = "密码错误";
            } else if ("1".equals(user.getIsDelete())) {
                msg = "账户已被删除";
            } else if (user.getExpireTime() != null && user.getExpireTime().getTime() < System.currentTimeMillis()) {
                msg = "你的账户已过期";
            } else {
                int userId = user.getId();
                //查询地图等级
                Map<String, Object> orgMap = organizationMapper.selectOrganizationById(user.getOrganizationId());
                String locationCode = orgMap.get(orgMap.get("location_level").toString()).toString();
                //封装用户信息
                Map<String, Object> userInfo = new LinkedHashMap<>();
                userInfo.put("userId", userId);
                userInfo.put("account", user.getAccount());
                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));
                //生成token,并存入redis
                String token = TokenUtils.getToken(user.getId().toString(), userInfo);
                resultMap.put("token", token);
                resultMap.putAll(userInfo);
                return resultMap;
            }
        //封装用户信息
        Map<String, Object> userInfo = new LinkedHashMap<>();
        List<Map<String, Object>> groups = new ArrayList<>();
        for (Group group : user.getGroups()) {
            HashMap<String, Object> groupMap = new HashMap<>();
            groupMap.put("groupId", group.getId());
            groupMap.put("groupName", group.getGroupName());
            groups.add(groupMap);
        }
        resultMap.put("msg", msg);
        Organization organization = user.getOrganization();
        userInfo.put("userId", user.getId());
        userInfo.put("account", user.getAccount());
        userInfo.put("userName", user.getUserName());
        userInfo.put("expireTime", user.getExpireTime());
        userInfo.put("isAdmin", user.getIsAdmin());
        userInfo.put("organizationId", user.getOrganizationId());
        userInfo.put("organizationName", organization.getName());
        userInfo.put("locationLevel", organization.getLocationLevel());
        userInfo.put("groups", groups);
        userInfo.putAll(getMenus(user.getId()));
        try {
            //生成token,并存入redis
            String token = TokenUtils.getToken(user.getId().toString(), userInfo);
            resultMap.put("token", token);
        } catch (Exception e) {
            log.error("token生成异常:"+e.getMessage());
        }
        resultMap.putAll(userInfo);
        return resultMap;
    }
@@ -163,13 +145,8 @@
        Map<String, Object> resultMap = new HashMap<>();
        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) {
            resultMap.put("msg", "账户名已存在");
            return resultMap;
@@ -205,7 +182,7 @@
        } else {
            User user = new User();
            user.setId(userId);
            user.setIsDelete("1");
            user.setIsDelete(Constants.DELETE);
            userMapper.updateById(user);
        }
        return resultMap;
@@ -277,4 +254,6 @@
        }
        return msgs;
    }
}