package com.moral.api.service.impl;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.moral.api.entity.Menu;
import com.moral.api.entity.User;
import com.moral.api.mapper.GroupMapper;
import com.moral.api.mapper.MenuMapper;
import com.moral.api.mapper.OrganizationMapper;
import com.moral.api.mapper.UserMapper;
import com.moral.api.service.UserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.util.AESUtils;
import com.moral.util.MD5Utils;
import com.moral.util.TokenUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
/**
*
* 用户表 服务实现类
*
*
* @author moral
* @since 2021-03-09
*/
@Service
public class UserServiceImpl extends ServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Autowired
private GroupMapper groupMapper;
@Autowired
private MenuMapper menuMapper;
@Autowired
private OrganizationMapper organizationMapper;
@Value("${AES.KEY}")
private String AESKey;
@Override
public Map login(Map parameters) {
Map 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 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 orgMap = organizationMapper.selectOrganizationById(user.getOrganizationId());
String locationCode = orgMap.get(orgMap.get("location_level").toString()).toString();
//封装用户信息
Map 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);
List