package com.goafanti.permission.service.impl; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.UUID; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.goafanti.common.bo.Error; import com.goafanti.common.dao.ContractTaskLogMapper; import com.goafanti.common.dao.RoleMapper; import com.goafanti.common.dao.RolePermissionMapper; import com.goafanti.common.dao.RoleResourcesMapper; import com.goafanti.common.dao.UserMapper; import com.goafanti.common.dao.UserRoleMapper; import com.goafanti.common.enums.roleResources; import com.goafanti.common.error.BusinessException; import com.goafanti.common.model.ContractTaskLog; import com.goafanti.common.model.Role; import com.goafanti.common.model.RolePermission; import com.goafanti.common.model.RoleResources; import com.goafanti.common.model.UserRole; import com.goafanti.common.utils.StringUtils; import com.goafanti.core.mybatis.BaseMybatisDao; import com.goafanti.core.mybatis.page.Pagination; import com.goafanti.core.shiro.token.TokenManager; import com.goafanti.permission.bo.RoleBo; import com.goafanti.permission.bo.RolePermissionBo; import com.goafanti.permission.service.NewRoleService; @Service public class NewRoleServiceImpl extends BaseMybatisDao implements NewRoleService { @Autowired RoleMapper roleMapper; @Autowired UserMapper userMapper; @Autowired UserRoleMapper userRoleMapper; @Autowired RolePermissionMapper rolePermissionMapper; @Autowired RoleResourcesMapper roleResourcesMapper; @Autowired ContractTaskLogMapper contractTaskLogMapper; @Override public Pagination findRoles(RoleBo role, Integer pageNo, Integer pageSize) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Map params =disposeParams(role); @SuppressWarnings("unchecked") Pagination p=(Pagination)findPage("selectRoleList","selectRoleCount",params,pageNo,pageSize); @SuppressWarnings("unchecked") List list=(List) p.getList(); for(RoleBo i:list){ if(i.getCreateTime()!=null){ i.setCreateTimez(sdf.format(i.getCreateTime())); } } return p; } private Map disposeParams(RoleBo role){ Map params = new HashMap(); if(StringUtils.isNotBlank(role.getRoleName())) params.put("roleName", role.getRoleName()); return params; } @Override public Set findRoleByUserId(String userId) { return roleMapper.findRoleByUserId(userId); } @Override public int insert(List records) { return roleMapper.insertBatch(records); } @Override public int deleteByPrimaryKeys(List records) { rolePermissionMapper.deleteByRoleId(records); userRoleMapper.deleteByRoleId(records); List data= userRoleMapper.findUserIdByRoleIds(records); TokenManager.clearUserAuthByUserId(data.toArray(new String[]{})); return roleMapper.deleteByPrimaryKeys(records); } @Override public int bindPermission(String rid, String pid) { TokenManager.clearUserAuthByUserId((String[]) userRoleMapper.findUserIdByRoleId(rid).toArray()); return rolePermissionMapper.insert(new RolePermission(rid, pid)); } @Override public int bindUser(String rid, String uid) { TokenManager.clearUserAuthByUserId(new String[] { uid }); return userRoleMapper.insert(new UserRole(uid, rid)); } @Override public int unbindPermission(String roleId, String permissionId) { Map params = new HashMap<>(); params.put("rid", roleId); params.put("pid", permissionId); TokenManager.clearUserAuthByUserId((String[]) userRoleMapper.findUserIdByRoleId(roleId).toArray()); return rolePermissionMapper.deleteByPrimaryKey(params); } @Override public int unbindUser(String roleId, String userId) { Map params = new HashMap<>(); params.put("rid", roleId); params.put("uid", userId); TokenManager.clearUserAuthByUserId(new String[] { userId }); return userRoleMapper.deleteByUserRole(params); } @Override public int insert(Role record, List permissions) { Date now = new Date(); if (record.getId() != null) { List rps = new ArrayList<>(); rolePermissionMapper.deleteByRid(record.getId()); for (String pid : permissions) { rps.add(new RolePermission(record.getId(), pid)); } if (!rps.isEmpty()) { rolePermissionMapper.insertBatch(rps); } List ids = userRoleMapper.findUserIdByRoleId(record.getId()); TokenManager.clearUserAuthByUserId(ids.toArray(new String[ids.size()])); } record.getId(); record.setCreater("管理员"); record.setCreateTime(now); return roleMapper.insert(record); } @Override public List selectRolePList(String id) { List list=roleMapper.selectRolePList(id); return list; } @Override public int addResources(String rid, String resources) { List list = Arrays.asList(resources.split(",")); RoleResources rr=new RoleResources(); if (roleResourcesMapper.checkRid(rid)>0) { roleResourcesMapper.deleteResources(rid); } for (String s : list) { rr.setId(UUID.randomUUID().toString()); rr.setRoleId(rid); rr.setCreateTime(new Date()); try { rr.setResources(Integer.parseInt(s)); } catch (NumberFormatException e) { e.printStackTrace(); } roleResourcesMapper.insert(rr); } return 1; } @Override public int updatedimission(String aid, String transferId) { List list=roleResourcesMapper.selectAdminRoleResources(aid); if (list.size()<1||list.get(0)==null) { throw new BusinessException(new Error("","用户角色资源不存在")); } for (Integer s : list) { System.out.println(s); if (s==roleResources.YXKH.getCode()) { roleResourcesMapper.updateLockRelease("0",aid,transferId);//将用户锁转给指定人 } if (s==roleResources.QDYW.getCode()) { roleResourcesMapper.updateLockRelease("1",aid,transferId);//将业务锁转给指定人 } if (s==roleResources.XMRW.getCode()) { contractTaskLogMapper.updateDimissionTransfer(aid,transferId); } if (s!=roleResources.QDYW.getCode()) { roleResourcesMapper.updateDimissionTransfer(s,aid,transferId); } } return 1; } @Override public List ResourcesDetail(String rid) { return roleResourcesMapper.selectByRid(rid); } }