package org.springblade.common.param; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.util.Strings; import org.springblade.common.cache.SysCache; import org.springblade.common.utils.AuthUtils; import org.springblade.common.utils.SpringUtils; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.SpringUtil; import org.springblade.core.tool.utils.StringUtil; import org.springblade.modules.grid.service.IGridService; import org.springblade.modules.police.service.IPoliceAffairsGridService; import org.springblade.modules.system.service.IRegionService; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import static org.springblade.core.secure.utils.AuthUtil.getUserRole; public class CommonParamSet { /** * 区域编号集合 */ private List regionChildCodesList = new ArrayList<>(); /** * 是否为超级管理员 */ private Integer isAdministrator; /** * 网格编号集合 */ private List gridCodeList = new ArrayList<>(); public List getRegionChildCodesList() { return regionChildCodesList; } public Integer getIsAdministrator() { return isAdministrator; } public List getGridCodeList() { return gridCodeList; } public CommonParamSet invoke(Class clazz, T t) { //获取传入对象信息 U u = clazz.cast(t); try { Field roleNameField = u.getClass().getDeclaredField("roleName"); Field communityCodeField = u.getClass().getDeclaredField("communityCode"); // 获取请求头中的角色别名 String roleName = SpringUtils.getRequestParam("roleName"); // 获取请求头中的社区编号 String communityCode = SpringUtils.getRequestParam("communityCode"); if (!Strings.isBlank(communityCode)) { // 校验社区编号是否合规 if (null != SpringUtils.getBean(IRegionService.class).getById(communityCode)) { // 设置社区编号 communityCodeField.setAccessible(true); communityCodeField.set(t, communityCode); } } // 超级管理员、系统管理员、公安管理员不过滤数据 // isAdministrator = AuthUtils.isAdmin(roleName) || AuthUtils.isAdmin() || // AuthUtils.isAdministrator() || AuthUtils.isGaAdmin() ? 1 : 2; if (StringUtils.isNotBlank(roleName)) { isAdministrator = AuthUtils.isAdmin(roleName) ? 1 : 2; } else { isAdministrator = AuthUtils.isAdmin() || AuthUtils.isAdministrator() || AuthUtils.isGaAdmin() ? 1 : 2; } if (isAdministrator == 2) { if (!Strings.isBlank(communityCode)) { // 请求头带了后直接使用过滤 regionChildCodesList.add(communityCode); }else { // 获取当前用户的所属行政区划编号() regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId(), communityCode); // 民警角色 if (!Strings.isBlank(roleName) && roleName.equals("mj")) { regionChildCodesList = SysCache.getPoliceRegionChildCodesByDeptId(AuthUtil.getDeptId(),communityCode); } } // 获取网格编号集合 gridCodeList = new ArrayList<>(); if (!Strings.isBlank(roleName)) { // 设置角色别名 roleNameField.setAccessible(true); roleNameField.set(t, roleName); // 网格员角色 if (roleName.equals("wgy")) { gridCodeList = SpringUtil.getBean(IGridService.class).getGridListByUserId(AuthUtil.getUserId()); } } // 特定账号设置 if (AuthUtil.getUserAccount().equals("18879306957")) { // 设置社区编号 communityCodeField.setAccessible(true); communityCodeField.set(t, "361102003027"); } } } catch (Exception e) { e.printStackTrace(); } return this; } }