From 36fe71cc6f93197aec868fd57e39e7dc63aef367 Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Wed, 17 Jul 2024 17:27:20 +0800
Subject: [PATCH] 代码优化

---
 src/main/java/org/springblade/common/param/CommonParamSet.java |  132 ++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 115 insertions(+), 17 deletions(-)

diff --git a/src/main/java/org/springblade/common/param/CommonParamSet.java b/src/main/java/org/springblade/common/param/CommonParamSet.java
index 55448d5..1b0448f 100644
--- a/src/main/java/org/springblade/common/param/CommonParamSet.java
+++ b/src/main/java/org/springblade/common/param/CommonParamSet.java
@@ -1,31 +1,42 @@
 package org.springblade.common.param;
 
+import lombok.Data;
+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.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;
+@Data
 public class CommonParamSet<T> {
 	/**
 	 * 区域编号集合
 	 */
-	private List<String> regionChildCodesList;
+	private List<String> regionChildCodesList = new ArrayList<>();
 	/**
 	 * 是否为超级管理员
 	 */
 	private Integer isAdministrator;
+
+	/**
+	 * 社区编号
+	 */
+	private String communityCode;
 	/**
 	 * 网格编号集合
 	 */
-	private List<String> gridCodeList;
+	private List<String> gridCodeList = new ArrayList<>();
+
+	/**
+	 *
+	 */
+	private String str = null;
 
 	public List<String> getRegionChildCodesList() {
 		return regionChildCodesList;
@@ -39,6 +50,14 @@
 		return gridCodeList;
 	}
 
+	public String getStr() {
+		return str;
+	}
+
+	public String getCommunityCode() {
+		return communityCode;
+	}
+
 	public <U> CommonParamSet invoke(Class<U> clazz, T t) {
 		//获取传入对象信息
 		U u = clazz.cast(t);
@@ -48,32 +67,46 @@
 			// 获取请求头中的角色别名
 			String roleName = SpringUtils.getRequestParam("roleName");
 			// 获取请求头中的社区编号
-			String communityCode = SpringUtils.getRequestParam("communityCode");
+			communityCode = SpringUtils.getRequestParam("communityCode");
 			if (!Strings.isBlank(communityCode)) {
 				// 校验社区编号是否合规
 				if (null != SpringUtils.getBean(IRegionService.class).getById(communityCode)) {
 					// 设置社区编号
 					communityCodeField.setAccessible(true);
-					communityCodeField.set(t,communityCode);
+					communityCodeField.set(t, communityCode);
 				}
 			}
-			isAdministrator = Strings.isBlank(roleName) && (AuthUtil.isAdministrator() == true || AuthUtil.isAdmin() == true) ? 1 : 2;
-			if (isAdministrator==2) {
-				// 获取当前用户的所属行政区划编号
-				regionChildCodesList = SysCache.getRegionChildCodesByDeptId(AuthUtil.getDeptId());
+			// 超级管理员、系统管理员、公安管理员不过滤数据
+//			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.isNotBlank(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("mj")) {
-						regionChildCodesList = SpringUtil.getBean(IPoliceAffairsGridService.class).getCommunityCodeListByUserId(AuthUtil.getUserId());
-					}
 					// 网格员角色
 					if (roleName.equals("wgy")) {
-						gridCodeList = SpringUtil.getBean(IGridService.class).getGridListByUserId(AuthUtil.getUserId());
+						gridCodeList = SysCache.getGridRegionChildCodesByDeptId(AuthUtil.getDeptId(),communityCode,roleName);
 					}
 				}
 				// 特定账号设置
@@ -88,4 +121,69 @@
 		}
 		return this;
 	}
+
+	/**
+	 * 设置对应的属性值
+	 * @param clazz
+	 * @param t
+	 * @param list 字段属性集合
+	 * @param pre 字段拼接
+	 * @return
+	 */
+	public <U> CommonParamSet setFieldValue(Class<U> clazz, T t,List<String> 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 <U> CommonParamSet setFieldValueByMap(Class<U> clazz, T t, List<String> list, Map<String,Object> 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;
+	}
+
+
 }

--
Gitblit v1.9.3