package org.springblade.common.param;
|
|
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<T> {
|
/**
|
* 区域编号集合
|
*/
|
private List<String> regionChildCodesList;
|
/**
|
* 是否为超级管理员
|
*/
|
private Integer isAdministrator;
|
/**
|
* 网格编号集合
|
*/
|
private List<String> gridCodeList;
|
|
public List<String> getRegionChildCodesList() {
|
return regionChildCodesList;
|
}
|
|
public Integer getIsAdministrator() {
|
return isAdministrator;
|
}
|
|
public List<String> getGridCodeList() {
|
return gridCodeList;
|
}
|
|
public <U> CommonParamSet invoke(Class<U> 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 (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;
|
}
|
|
|
}
|