| 
					
				 | 
			
			
				@@ -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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |