From a7981690ac9480ce932c9a9436e952022165e2a9 Mon Sep 17 00:00:00 2001
From: liaoxujun@qq.com <liaoxujun@qq.com>
Date: 星期五, 01 九月 2023 09:57:15 +0800
Subject: [PATCH] 加入权限认证,加入日志输出到文件

---
 DocumentServiceAPI.Web.Entry/DocServiceApiStartup.cs                              |    2 +
 DocumentServiceAPI.Application/UserAndLogin/Services/UserService.cs               |   62 ++++++++++++++++++++++++++++++-
 DocumentServiceAPI.Web.Entry/Properties/PublishProfiles/FolderProfile.pubxml.user |    2 
 DocumentServiceAPI.Application/UserAndLogin/LogInController.cs                    |    8 ++++
 DocumentServiceAPI.Web.Entry/DocumentServiceAPI.Web.Entry.csproj                  |    1 
 5 files changed, 71 insertions(+), 4 deletions(-)

diff --git a/DocumentServiceAPI.Application/UserAndLogin/LogInController.cs b/DocumentServiceAPI.Application/UserAndLogin/LogInController.cs
index b9c52fd..1b8bb16 100644
--- a/DocumentServiceAPI.Application/UserAndLogin/LogInController.cs
+++ b/DocumentServiceAPI.Application/UserAndLogin/LogInController.cs
@@ -173,6 +173,14 @@
                     if (!needtoken)
                         throw Oops.Oh($"璐︽埛鎴栬�呭瘑鐮侀敊璇�");
                 }
+
+                 var hasPermissions=   await _userService.TenderHasPermissions(Tender.TenderId);
+                if(!hasPermissions)
+                {
+                    throw Oops.Oh($"闆嗗洟鐢ㄨ处鍙凤細{Tender.ItCode}浣跨敤鏈熼檺宸茬粡杩囨湡鎴栬�呮病鏈変娇鐢ㄦ潈闄�");
+                }
+
+
                     var token = _tokenService.CreateToken(new Model.JwtInfo
                     {
                         EID = Tender.EmployeeID,
diff --git a/DocumentServiceAPI.Application/UserAndLogin/Services/UserService.cs b/DocumentServiceAPI.Application/UserAndLogin/Services/UserService.cs
index 0d9c2d1..6b67007 100644
--- a/DocumentServiceAPI.Application/UserAndLogin/Services/UserService.cs
+++ b/DocumentServiceAPI.Application/UserAndLogin/Services/UserService.cs
@@ -3,7 +3,9 @@
 using DocumentServiceAPI.Application.UserAndLogin.ViewMode;
 using DocumentServiceAPI.Model;
 using DocumentServiceAPI.Model.cyDocumentModel;
+using DocumentServiceAPI.Model.Permissions;
 using DocumentServiceAPI.Model.UserInfoModel;
+using DocumentServiceAPI.Services.IService;
 using DocumentServiceAPI.Utility;
 using Furion.Logging.Extensions;
 using MapsterMapper;
@@ -23,14 +25,21 @@
     /// </summary>
     public class UserService : IUserService, IScoped
     {
+        /// <summary>
+        /// TenantPermissions鍦≧edis涓殑閿��
+        /// </summary>
+        public const string TenantPermissions_RedisKey = "TenantPermissionsKen:";
         private ISqlSugarClient _db { get; set; }
         private EmployeeRepository  _employeeRepository{ get; set; }
         private IMapper _mapper {  get; set; }
-        public UserService(ISqlSugarClient db, EmployeeRepository employeeRepository, IMapper mapper)
+        private IRedisCacheService _cacheService { get; set; }
+
+        public UserService(ISqlSugarClient db, EmployeeRepository employeeRepository, IMapper mapper , IRedisCacheService cacheService)
         {
             _db = db;
-            _employeeRepository= employeeRepository;
+            _employeeRepository = employeeRepository;
             _mapper = mapper;
+            _cacheService = cacheService;
         }
         /// <summary>
         /// 鍛樺伐璇︽儏
@@ -379,6 +388,55 @@
 
         }
 
+        /// <summary>
+        /// 绉熸埛鏄惁宸茬粡瓒呮椂杩囨湡
+        /// </summary>
+        /// <param name="TenderID">绉熸埛ID</param>
+        /// <returns> true 浠h〃娌℃湁瓒呮椂鏈夋潈闄愪娇鐢紝false 浠h〃娌℃湁鏉冮檺浣跨敤浜�</returns>
+        public async Task<bool> TenderHasPermissions( int TenderID)
+        {
+            var Key = TenantPermissions_RedisKey + TenderID.ToString();
+          var tp=  _cacheService.Get<TenantPermissions>(TenantPermissions_RedisKey+ TenderID.ToString());
+            if(tp == null )
+            {
+               tp= await  _db.Queryable<TenantPermissions>().Where(x=>x.TenantId == TenderID).FirstAsync();
+                if (tp == null)
+                    _cacheService.Add<TenantPermissions>(Key, tp, 300);
+                else
+                    return false;
+            }
+            if (tp.OverTime > DateTime.Now)
+                return true;
+            return false;
+
+        }
+        /// <summary>
+        /// 绉熸埛鏄惁宸茬粡瓒呮椂杩囨湡 鏍规嵁token涓寘鍚殑TID 璇嗗埆鏄惁鏈夋潈闄�
+        /// </summary>       
+        /// <returns> true 浠h〃娌℃湁瓒呮椂鏈夋潈闄愪娇鐢紝false 浠h〃娌℃湁鏉冮檺浣跨敤浜�</returns>
+        public async Task<bool> TenderHasPermissions()
+        {
+            var jwtinfo= GetJwtInfo();
+            if(jwtinfo != null&&jwtinfo.TEID!=null )
+            {
+                var Key = TenantPermissions_RedisKey + jwtinfo.TEID.ToString();
+                var tp = _cacheService.Get<TenantPermissions>(TenantPermissions_RedisKey + jwtinfo.TEID.ToString());
+                if (tp == null)
+                {
+                    tp = await _db.Queryable<TenantPermissions>().Where(x => x.TenantId == jwtinfo.TEID).FirstAsync();
+                    if (tp == null)
+                        _cacheService.Add<TenantPermissions>(Key, tp, 300);
+                    else
+                        return false;
+                }
+                
+                if (tp.OverTime > DateTime.Now)
+                    return true;
+                return false;
+            }
+            return false;
+        }
+
     }
 
 
diff --git a/DocumentServiceAPI.Web.Entry/DocServiceApiStartup.cs b/DocumentServiceAPI.Web.Entry/DocServiceApiStartup.cs
index 52e10eb..e558054 100644
--- a/DocumentServiceAPI.Web.Entry/DocServiceApiStartup.cs
+++ b/DocumentServiceAPI.Web.Entry/DocServiceApiStartup.cs
@@ -26,6 +26,8 @@
                 //娉ㄥ叆鏈嶅姟
                 services.AddScoped<IRedisCacheService, RedisCacheScService>();
             }
+            services.AddFileLogging("Log/DocSericeApistatupLog.txt");
+         
          
         }
 
diff --git a/DocumentServiceAPI.Web.Entry/DocumentServiceAPI.Web.Entry.csproj b/DocumentServiceAPI.Web.Entry/DocumentServiceAPI.Web.Entry.csproj
index 70473c7..68cfc20 100644
--- a/DocumentServiceAPI.Web.Entry/DocumentServiceAPI.Web.Entry.csproj
+++ b/DocumentServiceAPI.Web.Entry/DocumentServiceAPI.Web.Entry.csproj
@@ -12,7 +12,6 @@
 
 
 	<ItemGroup>
-		<ProjectReference Include="..\DocumentFile.Service\DocumentFile.Service.csproj" />
 		<ProjectReference Include="..\DocumentServiceAPI.Application\DocumentServiceAPI.Application.csproj" />
 		<ProjectReference Include="..\DocumentServiceAPI.Core\DocumentServiceAPI.Core.csproj" />
 		<ProjectReference Include="..\DocumentServiceAPI.Enum\DocumentServiceAPI.Enum.csproj" />
diff --git a/DocumentServiceAPI.Web.Entry/Properties/PublishProfiles/FolderProfile.pubxml.user b/DocumentServiceAPI.Web.Entry/Properties/PublishProfiles/FolderProfile.pubxml.user
index deeaaa7..23097f9 100644
--- a/DocumentServiceAPI.Web.Entry/Properties/PublishProfiles/FolderProfile.pubxml.user
+++ b/DocumentServiceAPI.Web.Entry/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -5,7 +5,7 @@
 <Project>
   <PropertyGroup>
     <_PublishTargetUrl>D:\DocServiceAPI</_PublishTargetUrl>
-    <History>True|2023-08-25T08:28:37.8668025Z;True|2023-08-25T15:17:17.9212851+08:00;True|2023-08-25T11:21:18.2228201+08:00;True|2023-08-03T11:23:49.7155745+08:00;True|2023-08-03T10:57:12.3860490+08:00;True|2023-08-02T17:29:04.8984231+08:00;True|2023-08-02T14:24:54.6607875+08:00;True|2023-08-02T13:12:00.3228236+08:00;</History>
+    <History>True|2023-08-31T05:24:57.6027041Z;False|2023-08-31T13:21:45.8166199+08:00;False|2023-08-31T13:21:11.3863426+08:00;True|2023-08-25T16:28:37.8668025+08:00;True|2023-08-25T15:17:17.9212851+08:00;True|2023-08-25T11:21:18.2228201+08:00;True|2023-08-03T11:23:49.7155745+08:00;True|2023-08-03T10:57:12.3860490+08:00;True|2023-08-02T17:29:04.8984231+08:00;True|2023-08-02T14:24:54.6607875+08:00;True|2023-08-02T13:12:00.3228236+08:00;</History>
     <LastFailureDetails />
   </PropertyGroup>
 </Project>
\ No newline at end of file

--
Gitblit v1.9.1