From 1e12c140c041c0cb52306a0db9ff0ba18354d0d8 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期四, 03 四月 2025 18:01:52 +0800
Subject: [PATCH] 优化WMS前端首页,货位查询column数据库关键字处理
---
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleService.cs | 180 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 175 insertions(+), 5 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleService.cs"
index 3372776..6f7fa98 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_RoleService.cs"
@@ -15,6 +15,7 @@
using WIDESEA_Model.Models;
using WIDESEA_Model.Models.System;
using WIDESEA_SystemRepository;
+using WIDESEA_Core.Helper;
namespace WIDESEA_SystemService
{
@@ -45,7 +46,7 @@
return list;
}
- public List<RoleNodes> GetAllRoleId()
+ public List<RoleNodes> GetAllRoleId()
{
List<RoleNodes> roles = BaseDal.QueryData().Select(s => new RoleNodes() { Id = s.RoleId, ParentId = s.ParentId, RoleName = s.RoleName }).ToList();
@@ -92,7 +93,42 @@
{
return GetUserTreePermission(App.User.RoleId);
}
+ public override WebResponseContent UpdateData(SaveModel saveModel)
+ {
+ var ParentId = saveModel.MainData[nameof(Sys_Role.ParentId).FirstLetterToLower()].ObjToInt();//鐖剁骇ID
+ var RoleId = saveModel.MainData[nameof(Sys_Role.RoleId).FirstLetterToLower()].ObjToInt();//瑙掕壊ID
+ if (RoleId == ParentId) return WebResponseContent.Instance.Error("鐖剁骇ID涓嶈兘涓鸿嚜宸�");
+ if (App.User.RoleId == RoleId) return WebResponseContent.Instance.Error("鏃犳搷浣滄潈闄�");
+ return base.UpdateData(saveModel);
+ }
+ public override PageGridData<Sys_Role> GetPageData(PageDataOptions options)
+ {
+ PageGridData<Sys_Role> pageGridData = new PageGridData<Sys_Role>();
+ if (App.User.IsSuperAdmin)
+ {
+ var GridData = base.GetPageData(options);
+ pageGridData = new PageGridData<Sys_Role>()
+ {
+ Rows = options.Order?.ToLower() == OrderByType.Asc.ToString().ToLower() ? GridData.Rows.OrderBy(x => x.RoleId).ToList() : GridData.Rows,
+ Total = GridData.Total
+ };
+ return pageGridData;
+ }
+
+ var roleIds = GetAllChildren(App.User.RoleId).Select(x => x.Id);
+ //鏍戝舰鑿滃崟浼犳煡璇㈣鑹蹭笅鎵�鏈夌敤鎴�
+ string where = ValidatePageOptions(options);
+
+ int total = 0;
+ pageGridData = new PageGridData<Sys_Role>()
+ {
+ Rows = BaseDal.Db.Queryable<Sys_Role>().Where(x => roleIds.Contains(x.RoleId)).Where(where).OrderBy(x => x.RoleId).ToPageList(options.Page, options.Rows),
+ Total = total
+ };
+
+ return pageGridData;
+ }
/// <summary>
/// 缂栬緫鏉冮檺鏃讹紝鑾峰彇鎸囧畾瑙掕壊鐨勬墍鏈夎彍鍗曟潈闄�
/// </summary>
@@ -110,7 +146,7 @@
//鑾峰彇鐢ㄦ埛鏉冮檺
List<Permissions> permissions = _MenuRepository.GetPermissions(roleId);
//鏉冮檺鐢ㄦ埛鏉冮檺鏌ヨ鎵�鏈夌殑鑿滃崟淇℃伅
- List<MenuDTO> menus = _MenuService.GetUserMenuList(roleId);
+ List<MenuDTO> menus = _MenuService.GetUserMenuList(roleId);
//鑾峰彇褰撳墠鐢ㄦ埛鏉冮檺濡�:(Add,Search)瀵瑰簲鐨勬樉绀烘枃鏈俊鎭:Add锛氭坊鍔狅紝Search:鏌ヨ
var data = menus.Select(x => new
{
@@ -135,7 +171,9 @@
string message = "";
try
{
- if (!GetAllChildren(App.User.RoleId).Exists(x => x.Id == roleId))
+ var RoleNodes = GetAllChildren(App.User.RoleId);
+ RoleNodes = RoleNodes.Where(x => x.Id != App.User.RoleId).ToList();
+ if (!RoleNodes.Exists(x => x.Id == roleId) /*&& !App.User.IsRoleIdSuperAdmin(App.User.RoleId)*/)
return WebResponseContent.Instance.Error("娌℃湁鏉冮檺淇敼姝よ鑹茬殑鏉冮檺淇℃伅");
//褰撳墠鐢ㄦ埛鐨勬潈闄�
List<Permissions> permissions = _MenuRepository.GetPermissions(App.User.RoleId);
@@ -143,6 +181,138 @@
List<int> originalMeunIds = new List<int>();
//琚垎閰嶈鑹茬殑鏉冮檺
List<Sys_RoleAuth> roleAuths = _RoleAuthRepository.QueryData(x => x.RoleId == roleId);
+ List<Sys_RoleAuth> updateAuths = new List<Sys_RoleAuth>();
+ foreach (UserPermissionDTO x in userPermissions)
+ {
+ Permissions per = permissions.FirstOrDefault(p => p.MenuId == x.Id);
+ //涓嶈兘鍒嗛厤瓒呰繃褰撳墠鐢ㄦ埛鐨勬潈闄�
+ if (per == null) continue;
+ //per.UserAuthArr.Contains(a.Value)鏍¢獙鏉冮檺鑼冨洿
+ string[] arr = x.Actions == null || x.Actions.Count == 0
+ ? new string[0]
+ : x.Actions.Where(a => per.UserAuthArr.Contains(a.Value))
+ .Select(s => s.Value).ToArray();
+
+ //濡傛灉褰撳墠鏉冮檺娌℃湁鍒嗛厤杩囷紝璁剧疆Auth_Id榛樿涓�0锛岃〃绀烘柊澧炵殑鏉冮檺
+ var auth = roleAuths.Where(r => r.MenuId == x.Id).Select(s => new { s.AuthId, s.AuthValue, s.MenuId }).FirstOrDefault();
+ string newAuthValue = string.Join(",", arr);
+ //鏉冮檺娌℃湁鍙戠敓鍙樺寲鍒欎笉澶勭悊
+ if (auth == null || auth.AuthValue != newAuthValue)
+ {
+ updateAuths.Add(new Sys_RoleAuth()
+ {
+ RoleId = roleId,
+ MenuId = x.Id,
+ AuthValue = string.Join(",", arr),
+ AuthId = auth == null ? 0 : auth.AuthId,
+ ModifyDate = DateTime.Now,
+ Modifier = App.User.UserName,
+ CreateDate = DateTime.Now,
+ Creater = App.User.UserName
+ });
+ }
+ else
+ {
+ originalMeunIds.Add(auth.MenuId);
+ }
+
+ }
+ //鏇存柊鏉冮檺
+ _RoleAuthRepository.UpdateData(updateAuths.Where(x => x.AuthId > 0).ToList());
+ //鏂板鐨勬潈闄�
+ _RoleAuthRepository.AddData(updateAuths.Where(x => x.AuthId <= 0).ToList());
+
+ //鑾峰彇鏉冮檺鍙栨秷鐨勬潈闄�
+ int[] authIds = roleAuths.Where(x => userPermissions.Select(u => u.Id)
+ .ToList().Contains(x.MenuId) || originalMeunIds.Contains(x.MenuId))
+ .Select(s => s.AuthId)
+ .ToArray();
+ List<Sys_RoleAuth> delAuths = roleAuths.Where(x => x.AuthValue != "" && !authIds.Contains(x.AuthId)).ToList();
+ delAuths.ForEach(x =>
+ {
+ x.AuthValue = "";
+ });
+ //灏嗗彇娑堢殑鏉冮檺璁剧疆涓�""
+ _RoleAuthRepository.DeleteData(delAuths);
+
+ int addCount = updateAuths.Where(x => x.AuthId <= 0).Count();
+ int updateCount = updateAuths.Where(x => x.AuthId > 0).Count();
+
+ string _version = DateTime.Now.ToString("yyyyMMddHHMMssfff");
+
+
+ content.OK($"淇濆瓨鎴愬姛锛氭柊澧炲姞閰嶈彍鍗曟潈闄恵addCount}鏉�,鏇存柊鑿滃崟{updateCount}鏉�,鍒犻櫎鏉冮檺{delAuths.Count}鏉�");
+ }
+ catch (Exception ex)
+ {
+ message = "寮傚父淇℃伅锛�" + ex.Message + ex.StackTrace + ",";
+ }
+
+ return content;
+ }
+ /// <summary>
+ /// 缂栬緫鏉冮檺鏃讹紝鑾峰彇褰撳墠鐢ㄦ埛鐨勬墍鏈夎彍鍗曟潈闄�
+ /// </summary>
+ /// <returns></returns>
+ public WebResponseContent GetCurrentUserTreePermissionPDA()
+ {
+ return GetUserTreePermissionPDA(App.User.RoleId);
+ }
+
+ public WebResponseContent GetCurrentTreePermissionPDA()
+ {
+ WebResponseContent content = GetCurrentUserTreePermissionPDA();
+ int roleId = App.User.RoleId;
+ return WebResponseContent.Instance.OK(null, new
+ {
+ tree = content.Data,
+ roles = GetAllChildren(roleId)
+ });
+ }
+
+ public WebResponseContent GetUserTreePermissionPDA(int roleId)
+ {
+ if (!App.User.IsRoleIdSuperAdmin(roleId) && App.User.RoleId != roleId)
+ {
+ if (!(GetAllChildren(App.User.RoleId)).Exists(x => x.Id == roleId))
+ {
+ return WebResponseContent.Instance.Error("娌℃湁鏉冮檺鑾峰彇姝よ鑹茬殑鏉冮檺淇℃伅");
+ }
+ }
+ //鑾峰彇鐢ㄦ埛鏉冮檺
+ List<Permissions> permissions = _MenuRepository.GetPermissions(roleId);
+ //鏉冮檺鐢ㄦ埛鏉冮檺鏌ヨ鎵�鏈夌殑鑿滃崟淇℃伅
+ List<MenuDTO> menus = _MenuService.GetUserMenuListPDA(roleId);
+
+ //鑾峰彇褰撳墠鐢ㄦ埛鏉冮檺濡�:(Add,Search)瀵瑰簲鐨勬樉绀烘枃鏈俊鎭:Add锛氭坊鍔狅紝Search:鏌ヨ
+ var data = menus.Where(x => x.MenuType == 1).Select(x => new
+ {
+ Id = x.MenuId,
+ Pid = x.ParentId,
+ Text = x.MenuName,
+ IsApp = x.MenuType == 1,
+ Actions = _MenuService.GetActions(x.MenuId, x.Actions, permissions, roleId)
+ });
+ return WebResponseContent.Instance.OK(null, data);
+ }
+
+ public WebResponseContent SavePermissionPDA(List<UserPermissionDTO> userPermissions, int roleId)
+ {
+ WebResponseContent content = new WebResponseContent();
+ string message = "";
+ try
+ {
+ if (!GetAllChildren(App.User.RoleId).Exists(x => x.Id == roleId))
+ return WebResponseContent.Instance.Error("娌℃湁鏉冮檺淇敼姝よ鑹茬殑鏉冮檺淇℃伅");
+ //褰撳墠鐢ㄦ埛鐨勬潈闄�
+ List<Permissions> permissions = _MenuRepository.GetPermissions(App.User.RoleId);
+
+ List<int> originalMeunIds = new List<int>();
+
+ List<int> menuIds = _MenuRepository.QueryData(x => x.MenuId, x => x.MenuType == 1);
+
+ //琚垎閰嶈鑹茬殑鏉冮檺
+ List<Sys_RoleAuth> roleAuths = _RoleAuthRepository.QueryData(x => x.RoleId == roleId && menuIds.Contains(x.MenuId));
List<Sys_RoleAuth> updateAuths = new List<Sys_RoleAuth>();
foreach (UserPermissionDTO x in userPermissions)
{
@@ -195,11 +365,11 @@
x.AuthValue = "";
});
//灏嗗彇娑堢殑鏉冮檺璁剧疆涓�""
- _RoleAuthRepository.UpdateData(delAuths);
+ _RoleAuthRepository.DeleteData(delAuths);
int addCount = updateAuths.Where(x => x.AuthId <= 0).Count();
int updateCount = updateAuths.Where(x => x.AuthId > 0).Count();
-
+
string _version = DateTime.Now.ToString("yyyyMMddHHMMssfff");
--
Gitblit v1.9.3