screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java
@@ -7,6 +7,8 @@
import com.moral.api.mapper.ManageAccountMapper;
import com.moral.api.mapper.ManageMenuMapper;
import com.moral.api.mapper.ManageRoleMapper;
import com.moral.api.pojo.dto.AccountInfoDTO;
import com.moral.api.pojo.dto.LoginDTO;
import com.moral.api.service.ManageAccountService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.util.AESUtils;
@@ -41,86 +43,99 @@
    /**
     * @Description: 登陆
     * @Param: [paramters]
     * @Param: [parameters]
     * @return: java.util.Map<java.lang.String   ,   java.lang.Object>
     * @Author: 陈凯裕
     * @Date: 2021/3/11
     */
    @Override
    public Map<String, Object> login(Map<String, Object> paramters) {
        Map<String, Object> result = new HashMap<>();
        //接收参数
        String cyrpAccount = (String) paramters.get("account");
        String cyrpPassword = (String) paramters.get("password");
    public LoginDTO login(String AESAccount,String AESPassword) {
        LoginDTO loginDTO = new LoginDTO();
        //解密
        String account = AESUtils.decrypt(cyrpAccount, AESKey);
        String password = AESUtils.decrypt(cyrpPassword, AESKey);
        String account = AESUtils.decrypt(AESAccount, AESKey);
        String password = AESUtils.decrypt(AESPassword, AESKey);
        //查询是否存在
        QueryWrapper<ManageAccount> wrapper = new QueryWrapper<>();
        wrapper.eq("account", account);
        ManageAccount manageAccount = accountMapper.selectOne(wrapper);
        if (ObjectUtils.isEmpty(manageAccount)) {
            result.put("accountId", -1);
            result.put("msg", "用户不存在");
            return result;
            loginDTO.setCode(LoginDTO.NOT_EXIST);
            return loginDTO;
        }
        //查询是否逻辑删除
        if (manageAccount.getIsDelete().equals("1")) {
            result.put("accountId", -2);
            result.put("msg", "用户已被封禁");
            return result;
            loginDTO.setCode(LoginDTO.IS_DELETE);
            return loginDTO;
        }
        //校验密码
        if (!MD5Utils.saltMD5Verify(password, manageAccount.getPassword())) {
            result.put("accountId", -3);
            result.put("msg", "用户名密码错误");
            return result;
            loginDTO.setCode(LoginDTO.PASSWORD_ERROR);
            return loginDTO;
        }
        //查询角色
        List<ManageRole> roles = roleMapper.getManageRoleByAccountId(manageAccount.getId());
        if (ObjectUtils.isEmpty(roles)) {
            result.put("accountId", -4);
            result.put("msg", "用户尚未分配角色");
            return result;
        if (ObjectUtils.isEmpty(roles)) {//判断账号是否存在角色
            loginDTO.setCode(LoginDTO.ROLE_EMPTY);
            return loginDTO;
        }
        //查询菜单
        List<ManageMenu> menus = manageMenuMapper.getParentChildrenMenusByRoles(roles);
        if (ObjectUtils.isEmpty(menus)) {
            result.put("accountId", -5);
            result.put("msg", "用户尚未分配菜单");
            return result;
        if (ObjectUtils.isEmpty(menus)) {//判断账号是否存在菜单
            loginDTO.setCode(LoginDTO.MENU_EMPTY);
            return loginDTO;
        }
        //获取用户token,并且将基本信息存入缓存
        Map<String, Object> userInfo = new HashMap<>();//需要保存在缓存中用户的数据
        userInfo.put("accountId", manageAccount.getId());//用户Id
        userInfo.put("userName", manageAccount.getUserName());//用户名称
        userInfo.put("roles", roles);//用户角色
        userInfo.put("menus", menus);//用户菜单
        String token = TokenUtils.getToken(String.valueOf(manageAccount.getId()), userInfo);
        //封装用户信息
        AccountInfoDTO accountInfoDTO = new AccountInfoDTO();
        /*获取角色名称集合*/
        ArrayList<String> roleNames = new ArrayList<>();
        roles.forEach(role->roleNames.add(role.getName()));
        /*过滤menu无用属性*/
        for (ManageMenu menu : menus) {
            menu.setCreateTime(null);
            menu.setIsDelete(null);
            menu.setUpdateTime(null);
            menu.setParentId(null);
            List<ManageMenu> children = menu.getChildren();
            for (ManageMenu child : children) {
                child.setCreateTime(null);
                child.setIsDelete(null);
                child.setUpdateTime(null);
                child.setParentId(null);
            }
        }
        accountInfoDTO.setAccountId(String.valueOf(manageAccount.getId()));
        accountInfoDTO.setAccountName(manageAccount.getUserName());
        accountInfoDTO.setMenus(menus);
        accountInfoDTO.setRoles(roleNames);
        //打包返回信息
        result.put("accountId", manageAccount.getId());//用户Id
        result.put("userName", manageAccount.getUserName());//用户名称
        result.put("roles", roles);//用户角色
        result.put("menus", menus);//用户菜单
        result.put("token", token);
        return result;
        //获取token 并且存入缓存
        String token = TokenUtils.getToken(String.valueOf(manageAccount.getId()), accountInfoDTO);
        //封装返回结果
        loginDTO.setCode(LoginDTO.SUCCESS);
        loginDTO.setAccountInfo(accountInfoDTO);
        loginDTO.setToken(token);
        return loginDTO;
    }
    /**
     * @Description: 注销
     * @Param: [paramters]
     * @Param: [parameters]
     * @return: java.util.Map<java.lang.String   ,   java.lang.Object>
     * @Author: 陈凯裕
     * @Date: 2021/3/11
     */
    @Override
    public Map<String, Object> logout(Map<String, Object> paramters) {
        return null;
    public boolean logout(String accountId,String token) {
        TokenUtils.destoryToken(accountId,token);
        return true;
    }
}