package org.springblade.common.param; import org.apache.logging.log4j.util.Strings; import org.springblade.common.cache.SysCache; import org.springblade.common.utils.SpringUtils; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.SpringUtil; 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; public class CommonParamSet { /** * 区域编号集合 */ private List regionChildCodesList; /** * 是否为超级管理员 */ private Integer isAdministrator; /** * 网格编号集合 */ private List gridCodeList; 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 = Strings.isBlank(roleName) && (AuthUtil.isAdministrator() == true || AuthUtil.isAdmin() == true) ? 1 : 2; if (isAdministrator==2) { // 获取当前用户的所属行政区划编号() regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId()); // 获取网格编号集合 gridCodeList = new ArrayList<>(); if (!Strings.isBlank(roleName)) { // 设置角色别名 roleNameField.setAccessible(true); roleNameField.set(t, roleName); // 民警角色 if (roleName.equals("mj")) { regionChildCodesList = SpringUtil.getBean(IPoliceAffairsGridService.class).getCommunityCodeListByUserId(AuthUtil.getUserId()); } // 网格员角色 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; } }