From 90858c80d9921b555119f41060c1f883f6e6ffc5 Mon Sep 17 00:00:00 2001
From: username@email.com <yzy2002yzy@163.com>
Date: 星期四, 26 十二月 2024 12:49:35 +0800
Subject: [PATCH] 提交
---
DocumentServiceApi.InitQMessage/MessageReceive.cs | 418 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 414 insertions(+), 4 deletions(-)
diff --git a/DocumentServiceApi.InitQMessage/MessageReceive.cs b/DocumentServiceApi.InitQMessage/MessageReceive.cs
index 0d5dcf5..eb8f76a 100644
--- a/DocumentServiceApi.InitQMessage/MessageReceive.cs
+++ b/DocumentServiceApi.InitQMessage/MessageReceive.cs
@@ -1,5 +1,16 @@
-锘縰sing InitQ.Abstractions;
+锘縰sing DocumentServiceAPI.Model.cyDocumentModel;
+using DocumentServiceAPI.Model.Oder;
+using DocumentServiceAPI.Model.Permissions;
+using DocumentServiceAPI.Model.UserInfoModel;
+using Furion;
+using Furion.JsonSerialization;
+using Furion.Logging.Extensions;
+using Furion.Schedule;
+using InitQ.Abstractions;
using InitQ.Attributes;
+using InitQ.Cache;
+using Microsoft.Extensions.Options;
+using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -13,17 +24,416 @@
/// </summary>
public class MessageReceive: IRedisSubscribe
{
+ private InitQ.Cache.ICacheService _cacheService;
+ public MessageReceive(InitQ.Cache.ICacheService cacheService)
+ {
+ _cacheService = cacheService;
+ }
+
/// <summary>
/// 鍒濆鍖栬鍗曞鐞�
/// </summary>
/// <param name="msg"></param>
- /// <returns></returns>
-
- [Subscribe(INITQMessageDefine.InitTentOder)]
+ /// <returns></returns>
+ [Subscribe(INITQMessageDefine.InitTenantOder)]
private async Task InitTenantOder(string msg)
{
+ TenantOderInfo? obj = JSON.Deserialize<TenantOderInfo>(msg);
+ if(obj==null)
+ {
+ $"InitTenantOder 鍒濆鍖� msg 瀵硅薄閿欒 ,msg涓簕msg}".LogInformation<MessageReceive>();
+ return;
+ }
+ var _db= App.GetService<ISqlSugarClient>();
+
+
+ Oder oder = new Oder()
+ {
+ Amount = obj.Amount,
+ CreatBy = "娑堟伅闃熷垪 InitTenantOder",
+ CreatTime = DateTime.Now,
+ Description = obj.Description,
+ EmployeeCount = obj.EmployeeCount,
+ MonthCount = obj.MonthCount,
+ UnitCount = obj.UnitCount,
+ PayType = obj.PayType,
+ PayTime = obj.PayTime,
+ ZcUserID = obj.ZcUserID,
+ ITCode = obj.ITCode,
+ HasDocumentPermission=obj.HasDocumentPermission,
+ HasManagePermission= obj.HasManagePermission,
+ TenantId= obj.TenantId,
+
+
+
+ };
+ 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
+ {
+ ZcUserID = obj.ZcUserID,
+ ItCode = obj.ITCode,
+ CreatBy = "娑堟伅闃熷垪 InitTenantOder",
+ CreatTime = DateTime.Now,
+ Description = obj.Description,
+ Name =obj.TenantName ,
+ PsW = obj.ITCode.Substring(obj.ITCode.Length - 4),
+
+
+ };
+ TenantPermissions ? Mangerpermissions = null;
+ if (oder.HasManagePermission)
+ {
+ 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()
+ {
+ EmployeeName = "闆嗗洟璐﹀彿",
+ UserName = Tinfo.ItCode,
+ AdviseFlag = 2,
+ UserId = 0,
+ IsWork = 1,
+ UserPassWord = Tinfo.ItCode.Substring(Tinfo.ItCode.Length - 6),
+ Job = "闆嗗洟鐢ㄦ埛",
+ IsLogin = true,
+ LastUpdateName = "娑堟伅闃熷垪 InitTenantOder",
+ LastUpdateTime = DateTime.Now,
+ };
+ EmployeeAtTenant employeeAtTenant = new EmployeeAtTenant()
+ {
+ CreatBy = "娑堟伅闃熷垪 InitTenantOder",
+ CreatTime = DateTime.Now,
+
+ };
+
+ Document_TenderUnit tenderUnit = new Document_TenderUnit()
+ {
+ UnitName = obj.TenantName ?? "闆嗗洟鍏徃",
+ AdviseFlag = 2,
+ UserId = 0,
+ CreatTime = DateTime.Now.ToString("yyyy MM dd"),
+ LastUpdateName = "娑堟伅闃熷垪 InitTenantOder",
+ LastUpdateTime = DateTime.Now,
+ IsDeled = false,
+ IsEn = true,
+
+
+ };
+
+ try
+ {
+ await _db.AsTenant().BeginTranAsync();
+
+ var id= await _db.Insertable(Tinfo).ExecuteReturnIdentityAsync();
+ var eid = await _db.Insertable(employeeInfo).ExecuteReturnIdentityAsync();
+ 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(oder).ExecuteCommandAsync();
+ await _db.AsTenant().CommitTranAsync();
+ }
+ catch (Exception e)
+ {
+ await _db.AsTenant().RollbackTranAsync();
+ $"鏂板缓绉熸埛澶勭悊澶辫触 msg:{msg},e:{e.ToString()} BY锛氭秷鎭槦鍒� InitTenantOder".LogInformation<MessageReceive>();
+ return;
+ }
+
+
+ }
+ else
+ {
+ var Employee = await _db.Queryable<EmployeeAtTenant,Document_EmployeeInfo>((EAT, E) => new JoinQueryInfos(
+
+ JoinType.Left, EAT.EmployeeID == E.EmployeeId
+)).Where((EAT, E) => EAT.TenantID==Tinfo.Id).Select((EAT,E)=>E).FirstAsync();
+
+ Tinfo.ItCode = obj.ITCode;
+ Tinfo.UpdataBy = "娑堟伅闃熷垪 InitTenantOder";
+ Tinfo.UpdataTime = DateTime.Now;
+ Tinfo.IsDel = false;
+ Tinfo.IsEn = true;
+ if (oder.HasManagePermission == true)
+ {
+ 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 = 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();
+
+
+
+
+
+ }
+ catch (Exception e)
+ {
+
+ await _db.AsTenant().RollbackTranAsync();
+ $"淇敼绉熸埛鏉冮檺澶辫触 msg:{msg},e:{e.ToString()} By锛氭秷鎭槦鍒� InitTenantOder".LogInformation<MessageReceive>();
+ return;
+ }
+ }
+
+
+ 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();
+
+ 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;
+ }
+
+ }
+
+ }
+
+
+
+
+
+
+
+
+
}
+ /// <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