package com.moral.api.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.moral.api.entity.ManageAccount; import com.moral.api.entity.ManageMenu; import com.moral.api.entity.ManageRole; import com.moral.api.mapper.ManageAccountMapper; import com.moral.api.mapper.ManageMenuMapper; import com.moral.api.mapper.ManageRoleMapper; import com.moral.api.service.ManageAccountService; 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.Value; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import javax.annotation.Resource; import java.util.*; /** *

* 后台账户表 服务实现类 *

* * @author moral * @since 2021-03-09 */ @Service public class ManageAccountServiceImpl extends ServiceImpl implements ManageAccountService { @Value("${AES.KEY}") private String AESKey; @Resource ManageAccountMapper accountMapper; @Resource ManageRoleMapper roleMapper; @Resource ManageMenuMapper manageMenuMapper; public Map login(Map paramters) { Map result = new HashMap<>(); //接收参数 String cyrpAccount = (String) paramters.get("account"); String cyrpPassword = (String) paramters.get("password"); //解密 String account = AESUtils.decrypt(cyrpAccount, AESKey); String password = AESUtils.decrypt(cyrpPassword, AESKey); //查询是否存在 QueryWrapper 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; } //查询是否逻辑删除 if(manageAccount.getIsDelete().equals("1")){ result.put("accountId",-1); result.put("msg","用户已被封禁"); return result; } //校验密码 if(!MD5Utils.saltMD5Verify(password,manageAccount.getPassword())){ result.put("accountId",-1); result.put("msg","用户名密码错误"); return result; } //查询角色 List roles = roleMapper.getManageRoleByAccountId(manageAccount.getId()); if(ObjectUtils.isEmpty(roles)){ result.put("accountId",-1); result.put("msg","用户尚未分配角色"); return result; } //查询菜单 List menus = manageMenuMapper.getParentChildrenMenusByRoles(roles); if(ObjectUtils.isEmpty(menus)){ result.put("accountId",-1); result.put("msg","用户尚未分配菜单"); return result; } //获取用户token,并且将基本信息存入缓存 Map userInfo = new HashMap<>();//需要保存在缓存中用户的数据 userInfo.put("accountId",manageAccount.getId());//用户Id userInfo.put("userName",manageAccount.getUserName());//用户名称 userInfo.put("roles",roles);//用户角色 userInfo.put("menus",menus);//用户菜单 Map tokenResult = TokenUtils.getToken(String.valueOf(manageAccount.getId()), userInfo); if(tokenResult.get("code").equals(TokenUtils.error)){ result.put("accountId",-1); result.put("msg","生成token错误"); return result; } //打包返回信息 result.put("accountId",manageAccount.getId());//用户Id result.put("userName",manageAccount.getUserName());//用户名称 result.put("roles",roles);//用户角色 result.put("menus",menus);//用户菜单 result.put("token",tokenResult.get("token")); return result; } }