From 2d04b2f19d201ff10ed76c1773235488e9ab7628 Mon Sep 17 00:00:00 2001
From: liaoxujun@qq.com <liaoxujun@qq.com>
Date: 星期三, 20 九月 2023 09:50:48 +0800
Subject: [PATCH] 修改权限开通逻辑

---
 DocumentServiceApi.InitQMessage/MessageReceive.cs |  336 ++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 268 insertions(+), 68 deletions(-)

diff --git a/DocumentServiceApi.InitQMessage/MessageReceive.cs b/DocumentServiceApi.InitQMessage/MessageReceive.cs
index f250681..eb8f76a 100644
--- a/DocumentServiceApi.InitQMessage/MessageReceive.cs
+++ b/DocumentServiceApi.InitQMessage/MessageReceive.cs
@@ -8,6 +8,7 @@
 using Furion.Schedule;
 using InitQ.Abstractions;
 using InitQ.Attributes;
+using InitQ.Cache;
 using Microsoft.Extensions.Options;
 using SqlSugar;
 using System;
@@ -23,8 +24,12 @@
     /// </summary>
     public class MessageReceive: IRedisSubscribe
     {
-
-         
+        private InitQ.Cache.ICacheService _cacheService;
+      public    MessageReceive(InitQ.Cache.ICacheService cacheService)
+        {
+            _cacheService = cacheService;
+        }
+       
         /// <summary>
         /// 鍒濆鍖栬鍗曞鐞�
         /// </summary>
@@ -55,8 +60,20 @@
                 PayTime = obj.PayTime,
                 ZcUserID = obj.ZcUserID,
                 ITCode = obj.ITCode,
+                 HasDocumentPermission=obj.HasDocumentPermission,
+                HasManagePermission=  obj.HasManagePermission,
+                 TenantId= obj.TenantId,
+                 
+                 
+                 
             };
-            TenantInfo? Tinfo = await _db.Queryable<TenantInfo>().Where(x=>x.ZcUserID==obj.ZcUserID).SingleAsync();
+            TenantInfo? Tinfo = null;
+            if (obj.TenantId!=null)
+                        Tinfo = await _db.Queryable<TenantInfo>().Where(x => x.Id == obj.TenantId).SingleAsync();
+           // 濡傛灉娌℃湁tengdeid 瑙嗕负鏂板缓tenggdeid
+         //   else
+                    
+         //Tinfo= await _db.Queryable<TenantInfo>().Where(x=>x.ZcUserID==obj.ZcUserID).SingleAsync();
             if(Tinfo==null)
             {
                 Tinfo = new TenantInfo
@@ -66,23 +83,47 @@
                     CreatBy = "娑堟伅闃熷垪 InitTenantOder",
                     CreatTime = DateTime.Now,
                     Description = obj.Description,
-                    Name = obj.Name??obj.ITCode+"闆嗗洟璐﹀彿",
+                    Name =obj.TenantName ,
                     PsW = obj.ITCode.Substring(obj.ITCode.Length - 4),
 
 
                 };
-                TenantPermissions permissions = new TenantPermissions()
+                TenantPermissions ? Mangerpermissions = null;
+                if (oder.HasManagePermission)
                 {
-                    CreatBy = "娑堟伅闃熷垪 InitTenantOder",
-                    CreatTime = DateTime.Now,
-                    Description = obj.Description,
-                    EmployeeMaxCount = obj.EmployeeCount ?? 0,
-                    UnitMaxCount = obj.UnitCount ?? 0,
-                    OverTime = DateTime.Now.AddMonths(obj.MonthCount ?? 0),
+                    Mangerpermissions = new TenantPermissions()
+                    {
+                        CreatBy = "娑堟伅闃熷垪 InitTenantOder",
+                        CreatTime = DateTime.Now,
+                        Description = obj.Description,
+                        EmployeeMaxCount = obj.EmployeeCount ?? 0,
+                        UnitMaxCount = obj.UnitCount ?? 0,
+
+                        PermissionsType = TenantPermissionsType.Manage,
+                        OverTime = DateTime.Now.AddMonths(obj.MonthCount ?? 0),
 
 
 
-                };
+                    };
+                }
+                TenantPermissions? DocumentPermissions = null;
+                if (oder.HasDocumentPermission == true)
+                {
+                    DocumentPermissions = new TenantPermissions()
+                    {
+                        CreatBy = "娑堟伅闃熷垪 InitTenantOder",
+                        CreatTime = DateTime.Now,
+                        Description = obj.Description,
+                        EmployeeMaxCount = obj.EmployeeCount ?? 0,
+                        UnitMaxCount = obj.UnitCount ?? 0,
+
+                        PermissionsType = TenantPermissionsType.Document,
+                        OverTime = DateTime.Now.AddMonths(obj.MonthCount ?? 0),
+
+
+
+                    };
+                }
 
                 //鏂板缓绉熸埛鍛樺伐
                 Document_EmployeeInfo employeeInfo = new Document_EmployeeInfo()
@@ -107,7 +148,7 @@
 
                 Document_TenderUnit tenderUnit = new Document_TenderUnit()
                 {
-                    UnitName = obj.Name ?? "闆嗗洟鍏徃",
+                    UnitName = obj.TenantName ?? "闆嗗洟鍏徃",
                     AdviseFlag = 2,
                     UserId = 0,
                     CreatTime = DateTime.Now.ToString("yyyy MM dd"),
@@ -125,13 +166,22 @@
 
                   var id=  await _db.Insertable(Tinfo).ExecuteReturnIdentityAsync();
                     var eid = await _db.Insertable(employeeInfo).ExecuteReturnIdentityAsync();
-                    permissions.TenantId = id;
+                    if (Mangerpermissions != null)
+                    {
+                        Mangerpermissions.TenantId = id;
+                        await _db.Insertable(Mangerpermissions).ExecuteCommandAsync();
+                    }
+                    if (DocumentPermissions != null)
+                    {
+                        DocumentPermissions.TenantId = id;
+                        await _db.Insertable(DocumentPermissions).ExecuteCommandAsync();
+                    }
                     employeeAtTenant.TenantID = id;
                     employeeAtTenant.EmployeeID = eid;
                     tenderUnit.TenantId = id;
                     await _db.Insertable(tenderUnit).ExecuteCommandAsync();
                     await _db.Insertable(employeeAtTenant).ExecuteCommandAsync();
-                    await _db.Insertable(permissions).ExecuteCommandAsync ();
+                   
                     await _db.Insertable(oder).ExecuteCommandAsync();
                     await _db.AsTenant().CommitTranAsync();
                 }
@@ -156,72 +206,208 @@
                 Tinfo.UpdataTime = DateTime.Now;
                 Tinfo.IsDel = false;
                 Tinfo.IsEn = true;
-          
-              var tp= await _db.Queryable<TenantPermissions>().Where(x=>x.TenantId==Tinfo.Id).FirstAsync();
-
-                try
+                if (oder.HasManagePermission == true)
                 {
-                    await _db.AsTenant().BeginTranAsync();
-                    if (Tinfo.ItCode != obj.ITCode)
+                    var tp = await _db.Queryable<TenantPermissions>().Where(x => x.TenantId == Tinfo.Id&&x.PermissionsType== TenantPermissionsType.Manage && x.IsEn == true && x.IsDel == false).FirstAsync();
+
+                    try
                     {
-                     
-                       await _db.Updateable(Tinfo).ExecuteCommandAsync();
-                    };
-                    if (tp == null)
-                    {
-                        tp = new TenantPermissions()
+                        await _db.AsTenant().BeginTranAsync();
+                        if (Tinfo.ItCode != obj.ITCode)
                         {
-                            CreatBy = "娑堟伅闃熷垪 InitTenantOder",
-                             CreatTime = DateTime.Now,
-                              IsDel = false,
-                               IsEn = true,
-                                EmployeeMaxCount=obj.EmployeeCount??0,
-                                 UnitMaxCount=obj.UnitCount??0,
-                                  OverTime=DateTime.Now.AddMinutes(obj.MonthCount??0),
-                                   TenantId= Tinfo.Id,
-                                   
+
+                            await _db.Updateable(Tinfo).ExecuteCommandAsync();
                         };
-                        await _db.Insertable(tp).ExecuteCommandAsync();
+                        if (tp == null)
+                        {
+                            tp = new TenantPermissions()
+                            {
+                                CreatBy = "娑堟伅闃熷垪 InitTenantOder",
+                                CreatTime = DateTime.Now,
+                                IsDel = false,
+                                IsEn = true,
+                                EmployeeMaxCount = obj.EmployeeCount ?? 0,
+                                UnitMaxCount = obj.UnitCount ?? 0,
+                                OverTime = DateTime.Now.AddMinutes(obj.MonthCount ?? 0),
+                                TenantId = Tinfo.Id,
+                                 PermissionsType= TenantPermissionsType.Manage,
 
-                        
+                            };
+                            await _db.Insertable(tp).ExecuteCommandAsync();
+
+
+                        }
+                        else
+                        {
+                            tp.IsDel = false;
+                            tp.IsEn = true;
+                            tp.UnitMaxCount = obj.UnitCount ?? tp.UnitMaxCount;
+                            tp.EmployeeMaxCount = obj.EmployeeCount ?? tp.EmployeeMaxCount;
+                            tp.OverTime = tp.OverTime.AddMonths(obj.MonthCount ?? 0);
+                            tp.UpdataBy = "娑堟伅闃熷垪 InitTenantOder";
+                            tp.UpdataTime = DateTime.Now;
+
+                            await _db.Updateable(tp).ExecuteCommandAsync();
+
+                        }
+                        if (obj.ITCode != Employee.UserName)
+                        {
+                            //濡傛灉鍙戠幇鐢ㄦ埛鍚嶅凡缁忔洿鏀癸紝鍒欒闆嗗洟鍛樺伐鐢ㄦ埛鍚嶈窡闅忔洿鏀�
+                            Employee.UserName = obj.ITCode;
+                            Employee.LastUpdateName = "娑堟伅闃熷垪 InitTenantOder";
+                            Employee.LastUpdateTime = DateTime.Now;
+                            await _db.Updateable(Employee).ExecuteCommandAsync();
+                        }
+                        await _db.Insertable(oder).ExecuteCommandAsync();
+                        await _db.AsTenant().CommitTranAsync();
+
+
+
+
+
                     }
-                    else
+                    catch (Exception e)
                     {
-                        tp.IsDel = false;
-                        tp.IsEn = true;
-                        tp.UnitMaxCount = obj.UnitCount ?? tp.UnitMaxCount;
-                        tp.EmployeeMaxCount = obj.EmployeeCount ?? tp.EmployeeMaxCount;
-                        tp.OverTime = tp.OverTime.AddMonths(obj.MonthCount??0);
-                        tp.UpdataBy = "娑堟伅闃熷垪 InitTenantOder";
-                        tp.UpdataTime = DateTime.Now;
 
-                        await _db.Updateable(tp).ExecuteCommandAsync();
-
+                        await _db.AsTenant().RollbackTranAsync();
+                        $"淇敼绉熸埛鏉冮檺澶辫触 msg:{msg},e:{e.ToString()}  By锛氭秷鎭槦鍒� InitTenantOder".LogInformation<MessageReceive>();
+                        return;
                     }
-                    if (obj.ITCode != Employee.UserName)
-                    {
-                        //濡傛灉鍙戠幇鐢ㄦ埛鍚嶅凡缁忔洿鏀癸紝鍒欒闆嗗洟鍛樺伐鐢ㄦ埛鍚嶈窡闅忔洿鏀�
-                        Employee.UserName = obj.ITCode;
-                        Employee.LastUpdateName= "娑堟伅闃熷垪 InitTenantOder";
-                        Employee.LastUpdateTime = DateTime.Now;
-                        await _db.Updateable(Employee).ExecuteCommandAsync();
-                    }
-                    await _db.Insertable(oder).ExecuteCommandAsync();
-                    await _db.AsTenant().CommitTranAsync();
-                
-
-
-
-
                 }
-                catch (Exception e)
+
+
+                if (oder.HasDocumentPermission == true)
                 {
+                    var tp = await _db.Queryable<TenantPermissions>().Where(x => x.TenantId == Tinfo.Id && x.PermissionsType == TenantPermissionsType.Document && x.IsEn == true && x.IsDel == false).FirstAsync();
 
-                    await _db.AsTenant().RollbackTranAsync();
-                    $"淇敼绉熸埛鏉冮檺澶辫触 msg:{msg},e:{e.ToString()}  By锛氭秷鎭槦鍒� InitTenantOder".LogInformation<MessageReceive>();
-                    return;
+                    try
+                    {
+                        await _db.AsTenant().BeginTranAsync();
+                        if (Tinfo.ItCode != obj.ITCode)
+                        {
+
+                            await _db.Updateable(Tinfo).ExecuteCommandAsync();
+                        };
+                        if (tp == null)
+                        {
+                            tp = new TenantPermissions()
+                            {
+                                CreatBy = "娑堟伅闃熷垪 InitTenantOder",
+                                CreatTime = DateTime.Now,
+                                IsDel = false,
+                                IsEn = true,
+                                EmployeeMaxCount = obj.EmployeeCount ?? 0,
+                                UnitMaxCount = obj.UnitCount ?? 0,
+                                OverTime = DateTime.Now.AddMinutes(obj.MonthCount ?? 0),
+                                TenantId = Tinfo.Id,
+                                PermissionsType = TenantPermissionsType.Document,
+
+                            };
+                            await _db.Insertable(tp).ExecuteCommandAsync();
+
+
+                        }
+                        else
+                        {
+                            tp.IsDel = false;
+                            tp.IsEn = true;
+                            tp.UnitMaxCount = obj.UnitCount ?? tp.UnitMaxCount;
+                            tp.EmployeeMaxCount = obj.EmployeeCount ?? tp.EmployeeMaxCount;
+                            tp.OverTime = tp.OverTime.AddMonths(obj.MonthCount ?? 0);
+                            tp.UpdataBy = "娑堟伅闃熷垪 InitTenantOder";
+                            tp.UpdataTime = DateTime.Now;
+
+                            await _db.Updateable(tp).ExecuteCommandAsync();
+
+                        }
+                        if (obj.ITCode != Employee.UserName)
+                        {
+                            //濡傛灉鍙戠幇鐢ㄦ埛鍚嶅凡缁忔洿鏀癸紝鍒欒闆嗗洟鍛樺伐鐢ㄦ埛鍚嶈窡闅忔洿鏀�
+                            Employee.UserName = obj.ITCode;
+                            Employee.LastUpdateName = "娑堟伅闃熷垪 InitTenantOder";
+                            Employee.LastUpdateTime = DateTime.Now;
+                            await _db.Updateable(Employee).ExecuteCommandAsync();
+                        }
+                        await _db.Insertable(oder).ExecuteCommandAsync();
+                        await _db.AsTenant().CommitTranAsync();
+
+
+
+
+
+                    }
+                    catch (Exception e)
+                    {
+
+                        await _db.AsTenant().RollbackTranAsync();
+                        $"淇敼绉熸埛鏉冮檺澶辫触 msg:{msg},e:{e.ToString()}  By锛氭秷鎭槦鍒� InitTenantOder".LogInformation<MessageReceive>();
+                        return;
+                    }
                 }
-            
+
+                if(oder.HasDocumentPermission!=true&&oder.HasManagePermission!=true)
+                {
+                    //濡傛灉涓や釜閮戒笉鏄紝name灏辨槸澧炲姞浜烘暟鎴栬�呭鍔犲叕鍙告暟閲忥紝鍙湁鍦ㄧ鐞嗙郴缁熶腑浜х敓
+
+                    var tp = await _db.Queryable<TenantPermissions>().Where(x => x.TenantId == Tinfo.Id && x.PermissionsType == TenantPermissionsType.Manage&&x.IsEn==true&&x.IsDel==false).FirstAsync();
+
+                    try
+                    {
+                        await _db.AsTenant().BeginTranAsync();
+                        if (Tinfo.ItCode != obj.ITCode)
+                        {
+
+                            await _db.Updateable(Tinfo).ExecuteCommandAsync();
+                        };
+                        if (tp == null)
+                        {
+                            //娌℃湁TP 鍒欎笉鐩存帴澧炲姞 鎶ラ敊
+
+
+                            await _db.AsTenant().RollbackTranAsync();
+                            $"淇敼鍛樺伐浜烘暟锛屽叕鍙稿憳宸ユ潈闄愬け璐� 宸蹭涪寮冨鐞� msg:{msg}  By锛氭秷鎭槦鍒� InitTenantOder".LogInformation<MessageReceive>();
+                            return;
+
+                        }
+                        else
+                        {
+                            tp.IsDel = false;
+                            tp.IsEn = true;
+                            tp.UnitMaxCount = tp.UnitMaxCount+=(obj.UnitCount??0);
+                            tp.EmployeeMaxCount = tp.UnitMaxCount += (obj.UnitCount ?? 0);
+                            tp.OverTime = tp.OverTime.AddMonths(obj.MonthCount ?? 0);
+                            tp.UpdataBy = "娑堟伅闃熷垪 InitTenantOder";
+                            tp.UpdataTime = DateTime.Now;
+
+                            await _db.Updateable(tp).ExecuteCommandAsync();
+
+                        }
+                        if (obj.ITCode != Employee.UserName)
+                        {
+                            //濡傛灉鍙戠幇鐢ㄦ埛鍚嶅凡缁忔洿鏀癸紝鍒欒闆嗗洟鍛樺伐鐢ㄦ埛鍚嶈窡闅忔洿鏀�
+                            Employee.UserName = obj.ITCode;
+                            Employee.LastUpdateName = "娑堟伅闃熷垪 InitTenantOder";
+                            Employee.LastUpdateTime = DateTime.Now;
+                            await _db.Updateable(Employee).ExecuteCommandAsync();
+                        }
+                        await _db.Insertable(oder).ExecuteCommandAsync();
+                        await _db.AsTenant().CommitTranAsync();
+
+                        return;
+
+
+
+                    }
+                    catch (Exception e)
+                    {
+
+                        await _db.AsTenant().RollbackTranAsync();
+                        $"淇敼绉熸埛鏉冮檺澶辫触 msg:{msg},e:{e.ToString()}  By锛氭秷鎭槦鍒� InitTenantOder".LogInformation<MessageReceive>();
+                        return;
+                    }
+
+                }
+
             }
         
 
@@ -235,5 +421,19 @@
 
         }
 
+        /// <summary>
+        /// 鍙戦�佹秷鎭粰鐢ㄦ埛涓紝鐢ㄦ埛涓績浼氬搷搴旇繖涓秷鎭�
+        /// </summary>
+        /// <param name="msg"></param>
+        /// <returns></returns>
+        [SubscribeDelay(INITQMessageDefine.DTSendMessage)]
+        private async Task  SendMessage(string msg)
+        {
+            
+          await  _cacheService.ListRightPushAsync(INITQMessageDefine.DTSendMessage, msg);
+        }
+
     }
+
+
 }

--
Gitblit v1.9.1