package org.springblade.common.param; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.util.Strings; import org.apache.poi.hssf.record.DVALRecord; 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 java.util.Map; 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<>(); /** * */ private String str = null; public List getRegionChildCodesList() { return regionChildCodesList; } public Integer getIsAdministrator() { return isAdministrator; } public List getGridCodeList() { return gridCodeList; } public String getStr() { return str; } 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.getGridRegionChildCodesByDeptId(AuthUtil.getDeptId(),communityCode,roleName); } } // 获取网格编号集合 gridCodeList = new ArrayList<>(); if (!Strings.isBlank(roleName)) { // 设置角色别名 roleNameField.setAccessible(true); roleNameField.set(t, roleName); // 网格员角色 if (roleName.equals("wgy")) { gridCodeList = SysCache.getGridRegionChildCodesByDeptId(AuthUtil.getDeptId(),communityCode,roleName); } } // 特定账号设置 if (AuthUtil.getUserAccount().equals("18879306957")) { // 设置社区编号 communityCodeField.setAccessible(true); communityCodeField.set(t, "361102003027"); } } } catch (Exception e) { e.printStackTrace(); } return this; } /** * 设置对应的属性值 * @param clazz * @param t * @param list 字段属性集合 * @param pre 字段拼接 * @return */ public CommonParamSet setFieldValue(Class clazz, T t,List list,String pre) { //获取传入对象信息 U u = clazz.cast(t); try { StringBuilder builder = new StringBuilder(pre); for (String fieldName : list) { if (!fieldName.equals("tableName")) { if (fieldName.equals("tableId")) { fieldName = "id"; } Field field = u.getClass().getDeclaredField(fieldName); field.setAccessible(true); builder.append(field.get(t).toString()).append(","); } } String toString = builder.toString(); str = toString.substring(0,toString.length()-1); } catch (Exception e) { e.printStackTrace(); } return this; } /** * 设置对应的属性值 * @param clazz * @param t * @param list 字段属性集合 * @param map * @return */ public CommonParamSet setFieldValueByMap(Class clazz, T t, List list, Map map) { //获取传入对象信息 U u = clazz.cast(t); try { for (String fieldName : list) { if (!fieldName.equals("tableName")){ if (fieldName.equals("tableId")){ fieldName = "id"; } Field field = u.getClass().getDeclaredField(fieldName); field.setAccessible(true); String value = field.get(t).toString(); if (fieldName.equals("id")){ fieldName = "tableId"; } map.put(fieldName,value); } } } catch (Exception e) { e.printStackTrace(); } return this; } }