|
@@ -0,0 +1,158 @@
|
|
|
+
|
|
|
+package com.anjiplus.template.gaea.business.modules.accessuser.service.impl;
|
|
|
+
|
|
|
+import com.anji.plus.gaea.bean.TreeNode;
|
|
|
+import com.anji.plus.gaea.cache.CacheHelper;
|
|
|
+import com.anji.plus.gaea.exception.BusinessExceptionBuilder;
|
|
|
+import com.anji.plus.gaea.utils.GaeaBeanUtils;
|
|
|
+import com.anji.plus.gaea.curd.mapper.GaeaBaseMapper;
|
|
|
+import com.anji.plus.gaea.utils.GaeaUtils;
|
|
|
+import com.anji.plus.gaea.utils.JwtBean;
|
|
|
+import com.anjiplus.template.gaea.business.code.ResponseCode;
|
|
|
+import com.anjiplus.template.gaea.business.modules.accessrole.dao.AccessRoleMapper;
|
|
|
+import com.anjiplus.template.gaea.business.modules.accessrole.dao.entity.AccessRole;
|
|
|
+import com.anjiplus.template.gaea.business.modules.accessuser.controller.dto.AccessUserDto;
|
|
|
+import com.anjiplus.template.gaea.business.modules.accessuser.controller.dto.GaeaUserDto;
|
|
|
+import com.anjiplus.template.gaea.business.modules.accessuser.dao.AccessUserRoleMapper;
|
|
|
+import com.anjiplus.template.gaea.business.modules.accessuser.dao.entity.AccessUser;
|
|
|
+import com.anjiplus.template.gaea.business.modules.accessuser.dao.entity.AccessUserRole;
|
|
|
+import com.anjiplus.template.gaea.business.modules.accessuser.service.AccessUserService;
|
|
|
+import com.anjiplus.template.gaea.business.modules.accessuser.dao.AccessUserMapper;
|
|
|
+import com.anjiplus.template.gaea.business.util.MD5Util;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.google.common.collect.Maps;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+* @desc AccessUser 用户管理服务实现
|
|
|
+* @author 木子李·De <lide1202@hotmail.com>
|
|
|
+* @date 2019-02-17 08:50:11.902
|
|
|
+**/
|
|
|
+@Service
|
|
|
+public class AccessUserServiceImpl implements AccessUserService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AccessRoleMapper accessRoleMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AccessUserMapper accessUserMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AccessUserRoleMapper accessUserRoleMapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public GaeaBaseMapper<AccessUser> getMapper() {
|
|
|
+ return accessUserMapper;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private JwtBean jwtBean;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CacheHelper cacheHelper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map getRoleTree(String loginName, String operator) {
|
|
|
+ Map<String, Object> result = new HashMap<String, Object>();
|
|
|
+ List<TreeNode> treeData = new ArrayList<>();
|
|
|
+ List checkedKeys = new ArrayList();
|
|
|
+
|
|
|
+ // 角色树
|
|
|
+ LambdaQueryWrapper<AccessRole> roleQuery = Wrappers.lambdaQuery();
|
|
|
+ roleQuery.select(AccessRole::getRoleCode, AccessRole::getRoleName);
|
|
|
+ // 按operator去筛选role 后面再加where
|
|
|
+ List<AccessRole> roleList = accessRoleMapper.selectList(roleQuery);
|
|
|
+ if(roleList == null || roleList.isEmpty()){
|
|
|
+ result.put("treeData", treeData);
|
|
|
+ result.put("checkedKeys", checkedKeys);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ treeData = roleList.stream().map(role -> {
|
|
|
+ TreeNode treeNode = new TreeNode();
|
|
|
+ treeNode.setId(role.getRoleCode());
|
|
|
+ treeNode.setLabel(role.getRoleName());
|
|
|
+ return treeNode;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 该用户已保存的角色
|
|
|
+ LambdaQueryWrapper<AccessUserRole> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper.select(AccessUserRole::getRoleCode)
|
|
|
+ .eq(AccessUserRole::getLoginName, loginName);
|
|
|
+ checkedKeys = accessUserRoleMapper.selectObjs(queryWrapper);
|
|
|
+
|
|
|
+ result.put("treeData", treeData);
|
|
|
+ result.put("checkedKeys", checkedKeys);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Boolean saveRoleTree(AccessUserDto accessUserDto) {
|
|
|
+ // 校验
|
|
|
+ String loginName = accessUserDto.getLoginName();
|
|
|
+ List<String> roleCodeList = accessUserDto.getRoleCodeList();
|
|
|
+ if(StringUtils.isBlank(loginName)){
|
|
|
+ throw BusinessExceptionBuilder.build(ResponseCode.Not_Empty, loginName);
|
|
|
+ }
|
|
|
+ if(roleCodeList == null || roleCodeList.isEmpty()){
|
|
|
+ throw BusinessExceptionBuilder.build(ResponseCode.Not_Empty, roleCodeList);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 先清除该用户已保存的角色
|
|
|
+ LambdaQueryWrapper<AccessUserRole> wrapper = Wrappers.lambdaQuery();
|
|
|
+ wrapper.eq(AccessUserRole::getLoginName, loginName);
|
|
|
+ accessUserRoleMapper.delete(wrapper);
|
|
|
+
|
|
|
+ // 保存勾选的角色
|
|
|
+ roleCodeList.stream().forEach(roleCode -> {
|
|
|
+ AccessUserRole accessUserRole = new AccessUserRole();
|
|
|
+ accessUserRole.setLoginName(loginName);
|
|
|
+ accessUserRole.setRoleCode(roleCode);
|
|
|
+ accessUserRoleMapper.insert(accessUserRole);
|
|
|
+ });
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Boolean resetPassword(GaeaUserDto gaeaUserDto) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map login(GaeaUserDto gaeaUserDto) {
|
|
|
+
|
|
|
+ String loginName = gaeaUserDto.getLoginName();
|
|
|
+ String password = gaeaUserDto.getPassword();
|
|
|
+ //1.判断用户是否存在
|
|
|
+ LambdaQueryWrapper<AccessUser> wrapper = Wrappers.lambdaQuery();
|
|
|
+ wrapper.eq(AccessUser::getLoginName, loginName);
|
|
|
+ AccessUser accessUser = accessUserMapper.selectOne(wrapper);
|
|
|
+ if (null == accessUser || !accessUser.getPassword().equals(MD5Util.encrypt(password))) {
|
|
|
+ throw BusinessExceptionBuilder.build(ResponseCode.LOGIN_ERROR);
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, String> map = Maps.newHashMap();
|
|
|
+
|
|
|
+ //将登录信息缓存,默认一小时
|
|
|
+ if (cacheHelper.exist(loginName)) {
|
|
|
+ map.put("token", cacheHelper.stringGet(loginName));
|
|
|
+ map.put("loginName", loginName);
|
|
|
+ } else {
|
|
|
+ String uuid = GaeaUtils.UUID();
|
|
|
+ String token = jwtBean.createToken(loginName, uuid);
|
|
|
+ cacheHelper.stringSetExpire(loginName, token, 3600);
|
|
|
+ map.put("token", token);
|
|
|
+ map.put("loginName", loginName);
|
|
|
+ }
|
|
|
+
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+}
|