From be42500d2c21da97dfdfe908adebe30c2eb254fa Mon Sep 17 00:00:00 2001
From: hutongqing <hutongqing@hnkhzn.com>
Date: 星期五, 25 十月 2024 16:18:11 +0800
Subject: [PATCH] 更新字典获取

---
 /dev/null                                                                                           |    0 
 WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2e039f01-75fb-4752-a777-4084d6de71ac.vsidx |    0 
 WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_UserService.cs                                      |   14 ++++
 WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_RoleService.cs                                      |    2 
 WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_MenuService.cs                                    |    1 
 WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/Sys_DictionaryRepository.cs                           |   32 +++++-----
 WIDESEAWCS_Server/WIDESEAWCS_Tasks/WIDESEAWCS_Tasks.csproj                                          |    2 
 WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs                                |   97 ++++++++++++++++++++++++++------
 8 files changed, 111 insertions(+), 37 deletions(-)

diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2e039f01-75fb-4752-a777-4084d6de71ac.vsidx b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2e039f01-75fb-4752-a777-4084d6de71ac.vsidx
new file mode 100644
index 0000000..6ea196f
--- /dev/null
+++ b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/2e039f01-75fb-4752-a777-4084d6de71ac.vsidx
Binary files differ
diff --git a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/7dc1175d-35b9-490c-9810-66c8a03b0b35.vsidx b/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/7dc1175d-35b9-490c-9810-66c8a03b0b35.vsidx
deleted file mode 100644
index 041f50f..0000000
--- a/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/FileContentIndex/7dc1175d-35b9-490c-9810-66c8a03b0b35.vsidx
+++ /dev/null
Binary files differ
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_MenuService.cs b/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_MenuService.cs
index 7325119..1309279 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_MenuService.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_MenuService.cs
@@ -12,6 +12,7 @@
     public interface ISys_MenuService : IService<Sys_Menu>
     {
         object GetCurrentMenuActionList();
+        object GetMenuActionList(int roleId);
 
         List<Sys_Menu> GetUserMenuList(int roleId);
 
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/Sys_DictionaryRepository.cs b/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/Sys_DictionaryRepository.cs
index f90799d..970ffbc 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/Sys_DictionaryRepository.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_SystemRepository/Sys_DictionaryRepository.cs
@@ -23,22 +23,22 @@
         /// <param name="dicNos"></param>
         /// <param name="executeSql">鏄惁鎵ц鑷畾涔塻ql</param>
         /// <returns></returns>
-        public IEnumerable<Sys_Dictionary> GetDictionaries(IEnumerable<string> dicNos, bool executeSql = true)
+        public IEnumerable<Sys_Dictionary> GetDictionaries(IEnumerable<string> dicNos, bool executeSql = false)
         {
-            List<Sys_Dictionary> Dictionaries = GetAllDictionary();
+            List<Sys_Dictionary> Dictionaries = GetAllDictionary(dicNos);
 
-            foreach (var item in Dictionaries.Where(x => dicNos.Contains(x.DicNo)))
-            {
-                if (executeSql)
-                {
-                    //  2020.05.01澧炲姞鏍规嵁鐢ㄦ埛淇℃伅鍔犺浇瀛楀吀鏁版嵁婧恠ql
-                    string sql = item.DBSql;
-                    if (!string.IsNullOrEmpty(sql))
-                    {
-                        item.DicList = Query(sql);
-                    }
-                }
-            }
+            //foreach (var item in Dictionaries.Where(x => dicNos.Contains(x.DicNo)))
+            //{
+            //    if (executeSql)
+            //    {
+            //        //  2020.05.01澧炲姞鏍规嵁鐢ㄦ埛淇℃伅鍔犺浇瀛楀吀鏁版嵁婧恠ql
+            //        string sql = item.DBSql;
+            //        if (!string.IsNullOrEmpty(sql))
+            //        {
+            //            item.DicList = Query(sql);
+            //        }
+            //    }
+            //}
 
             return Dictionaries;
         }
@@ -59,10 +59,10 @@
             }
         }
 
-        private List<Sys_Dictionary> GetAllDictionary()
+        private List<Sys_Dictionary> GetAllDictionary(IEnumerable<string> dicNos)
         {
             //base.QueryData().ToList();
-            List<Sys_Dictionary> _dictionaries = Db.Queryable<Sys_Dictionary>().Includes(x => x.DicList).Where(x => x.Enable == 1).ToList();
+            List<Sys_Dictionary> _dictionaries = Db.Queryable<Sys_Dictionary>().Includes(x => x.DicList).Where(x => x.Enable == 1 && dicNos.Contains(x.DicNo)).ToList();
             return _dictionaries;
         }
     }
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs b/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs
index cbf757b..e04fe7a 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs
@@ -1,12 +1,18 @@
 锘縰sing Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
 using System;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Linq;
+using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEAWCS_Common.TaskEnum;
 using WIDESEAWCS_Core.BaseRepository;
 using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Caches;
 using WIDESEAWCS_Core.DB;
+using WIDESEAWCS_Core.Enums;
 using WIDESEAWCS_Core.Helper;
 using WIDESEAWCS_DTO.System;
 using WIDESEAWCS_ISystemRepository;
@@ -18,37 +24,92 @@
     public class Sys_DictionaryService : ServiceBase<Sys_Dictionary, ISys_DictionaryRepository>, ISys_DictionaryService
     {
         private readonly IUnitOfWorkManage _unitOfWorkManage;
-        public Sys_DictionaryService(ISys_DictionaryRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        private readonly ICacheService _cacheService;
+
+        public Sys_DictionaryService(ISys_DictionaryRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService) : base(BaseDal)
         {
             _unitOfWorkManage = unitOfWorkManage;
+            _cacheService = cacheService;
         }
 
         public List<VueDictionaryDTO> GetVueDictionary(string[] dicNos)
         {
             if (dicNos == null || dicNos.Count() == 0) return new List<VueDictionaryDTO>();
+            List<VueDictionaryDTO> vueDictionaryDTOs = new List<VueDictionaryDTO>();
 
-            var dicConfig = BaseDal.GetDictionaries(dicNos, false).Select(s => new
+            List<string> cacheDicNos = new List<string>();
+            foreach (string n in dicNos)
             {
-                dicNo = s.DicNo,
-                config = s.Config,
-                dbSql = s.DBSql,
-                list = s.DicList.OrderByDescending(o => o.OrderNo).Select(list => new { key = list.DicValue, value = list.DicName })
-            }).ToList();
-
-            object GetSourceData(string dicNo, string dbSql, object data)
-            {
-                if (string.IsNullOrEmpty(dbSql))
+                string str = _cacheService.Get(n);
+                if (!string.IsNullOrEmpty(str))
                 {
-                    return data;
+                    VueDictionaryDTO? vueDictionary = JsonConvert.DeserializeObject<VueDictionaryDTO>(str);
+
+                    if (vueDictionary != null)
+                    {
+                        vueDictionaryDTOs.Add(vueDictionary);
+                        cacheDicNos.Add(n);
+                    }
                 }
-                return BaseDal.QueryObjectDataBySql(dbSql, null);
             }
-            return dicConfig.Select(item => new VueDictionaryDTO
+            if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0)
             {
-                DicNo = item.dicNo,
-                Config = item.config,
-                Data = GetSourceData(item.dicNo, item.dbSql, item.list)
-            }).ToList();
+                List<string> list = dicNos.Where(x => !cacheDicNos.Contains(x)).ToList();
+                List<Sys_Dictionary> dictionaries = BaseDal.GetDictionaries(list).ToList();
+
+                List<VueDictionaryDTO> selectDics = dictionaries.Select(s => new VueDictionaryDTO
+                {
+                    DicNo = s.DicNo,
+                    Config = s.Config,
+                    //dbSql = s.Sql,
+                    Data = s.DicList.OrderByDescending(o => o.OrderNo).Select(list => new { key = list.DicValue, value = list.DicName })
+                }).ToList();
+
+                foreach (var v in dictionaries)
+                {
+                    if (!string.IsNullOrEmpty(v.DBSql))
+                    {
+                        VueDictionaryDTO? temp = selectDics.FirstOrDefault(x => x.DicNo == v.DicNo);
+                        if (temp != null)
+                            selectDics.Remove(temp);
+                        selectDics.Add(new VueDictionaryDTO
+                        {
+                            Config = v.Config,
+                            DicNo = v.DicNo,
+                            Data = BaseDal.QueryDynamicDataBySql(v.DBSql)
+                        });
+                    }
+                }
+
+                foreach (var item in selectDics)
+                {
+                    if (!_cacheService.Exists(item.DicNo))
+                    {
+                        _cacheService.Add(item.DicNo, item.Serialize());
+                    }
+                }
+                vueDictionaryDTOs.AddRange(selectDics);
+            }
+
+            //object GetSourceData(string dicNo, string dbSql, object data)
+            //{
+            //    if (string.IsNullOrEmpty(dbSql))
+            //    {
+            //        return data;
+            //    }
+            //    return BaseDal.QueryObjectDataBySql(dbSql, null);
+            //}
+            //List<VueDictionaryDTO> vueDictionaryDTOs = dicConfig.Select(item => new VueDictionaryDTO
+            //{
+            //    DicNo = item.dicNo,
+            //    Config = item.config,
+            //    Data = GetSourceData(item.dicNo, item.dbSql, item.list)
+            //}).ToList();
+
+
+            return vueDictionaryDTOs;
         }
+
+
     }
 }
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_RoleService.cs b/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_RoleService.cs
index c75161f..88811c2 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_RoleService.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_RoleService.cs
@@ -192,7 +192,7 @@
                     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();
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_UserService.cs b/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_UserService.cs
index 874ff8f..2c740c4 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_UserService.cs
+++ b/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_UserService.cs
@@ -18,10 +18,12 @@
     {
         private readonly IUnitOfWorkManage _unitOfWorkManage;
         private readonly ICacheService _cacheService;
-        public Sys_UserService(ISys_UserRepository repository, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService) : base(repository)
+        private readonly ISys_MenuService _menuService;
+        public Sys_UserService(ISys_UserRepository repository, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService, ISys_MenuService menuService) : base(repository)
         {
             _unitOfWorkManage = unitOfWorkManage;
             _cacheService = cacheService;
+            _menuService = menuService;
         }
 
         public WebResponseContent Login(LoginInfo loginInfo)
@@ -47,6 +49,16 @@
                 UserInfo user = BaseDal.GetUserInfo(loginInfo.UserName, loginInfo.Password);
                 if (user != null)
                 {
+                    object obj = _menuService.GetMenuActionList(user.RoleId);
+                    if (obj is not IEnumerable<object> list)
+                    {
+                        return WebResponseContent.Instance.Error("鏃犵櫥褰曟潈闄�");
+                    }
+                    if (!list.Any())
+                    {
+                        return WebResponseContent.Instance.Error("鏃犵櫥褰曟潈闄�");
+                    }
+
                     string token = JwtHelper.IssueJwt(new TokenModelJwt()
                     {
                         UserId = user.UserId,
diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Tasks/WIDESEAWCS_Tasks.csproj b/WIDESEAWCS_Server/WIDESEAWCS_Tasks/WIDESEAWCS_Tasks.csproj
index fd5b6b6..d7b9760 100644
--- a/WIDESEAWCS_Server/WIDESEAWCS_Tasks/WIDESEAWCS_Tasks.csproj
+++ b/WIDESEAWCS_Server/WIDESEAWCS_Tasks/WIDESEAWCS_Tasks.csproj
@@ -7,7 +7,7 @@
 	</PropertyGroup>
 
 	<ItemGroup>
-	  <PackageReference Include="WIDESEAWCS_QuartzJob" Version="1.0.0" />
+	  <PackageReference Include="WIDESEAWCS_QuartzJob" Version="2.0.3" />
 	</ItemGroup>
 
 	<ItemGroup>

--
Gitblit v1.9.3