From a9bfc98a7e670f350529fc3e91d6cde453115a38 Mon Sep 17 00:00:00 2001
From: 移动系统liao <liaoxujun@qq.com>
Date: 星期三, 18 六月 2025 13:37:27 +0800
Subject: [PATCH] no message

---
 Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_RoleMenu.cs                                                 |   40 ++
 Admin.NET/Plugins/Admin.NET.Plugin.K3Cloud/Admin.NET.Plugin.K3Cloud.csproj                       |    2 
 Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_ExRoleMenu.cs                                               |   34 ++
 Admin.NET/Admin.NET.Core/Const/ClaimConst.cs                                                     |   12 
 Admin.NET/Admin.NET.Web.Core/Startup.cs                                                          |    2 
 Admin.NET/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj                                         |    1 
 Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Role.cs                                                     |   63 ++++
 Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Admin.NET.Plugin.WorkWeixin.csproj                 |    2 
 Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintOutput.cs |   11 
 Admin.NET/Plugins/Admin.NET.Plugin.ReZero/Admin.NET.Plugin.ReZero.csproj                         |    2 
 Admin.NET/Admin.NET.Web.Core/Admin.NET.Web.Core.csproj                                           |    1 
 Admin.NET/FZCZTB.NET.MD/ProcurementComplaint.cs                                                  |    6 
 Admin.NET/Plugins/Admin.NET.Plugin.ApprovalFlow/Admin.NET.Plugin.ApprovalFlow.csproj             |    2 
 Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_ExRole.cs                                                   |   65 ++++
 Admin.NET/Plugins/Admin.NET.Plugin.GoView/Admin.NET.Plugin.GoView.csproj                         |    2 
 Admin.NET/Admin.NET.Application/Configuration/Database.json                                      |    4 
 Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Customer.cs                                                 |  357 +++++++++++++++++++++++++
 Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Menu.cs                                                     |  142 ++++++++++
 Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintInput.cs  |    7 
 Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/ProcurementComplaintService.cs    |   21 +
 Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_CustomerRole.cs                                             |   45 +++
 Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Admin.NET.Plugin.DingTalk.csproj                     |    2 
 22 files changed, 804 insertions(+), 19 deletions(-)

diff --git a/Admin.NET/Admin.NET.Application/Configuration/Database.json b/Admin.NET/Admin.NET.Application/Configuration/Database.json
index 21fe2e4..e431736 100644
--- a/Admin.NET/Admin.NET.Application/Configuration/Database.json
+++ b/Admin.NET/Admin.NET.Application/Configuration/Database.json
@@ -27,14 +27,14 @@
         //	}
         //],
         "DbSettings": {
-          "EnableInitDb": false, // 鍚敤搴撳垵濮嬪寲锛堣嫢瀹炰綋娌℃湁鍙樺寲寤鸿鍏抽棴锛�
+          "EnableInitDb": true, // 鍚敤搴撳垵濮嬪寲锛堣嫢瀹炰綋娌℃湁鍙樺寲寤鸿鍏抽棴锛�
           "EnableInitView": false, // 鍚敤瑙嗗浘鍒濆鍖栵紙鑻ュ疄浣撳拰瑙嗗浘娌℃湁鍙樺寲寤鸿鍏抽棴锛�
           "EnableDiffLog": false, // 鍚敤搴撹〃宸紓鏃ュ織
           "EnableUnderLine": false, // 鍚敤椹煎嘲杞笅鍒掔嚎
           "EnableConnEncrypt": false // 鍚敤鏁版嵁搴撹繛鎺ヤ覆鍔犲瘑锛堝浗瀵哠M2鍔犺В瀵嗭級
         },
         "TableSettings": {
-          "EnableInitTable": false, // 鍚敤琛ㄥ垵濮嬪寲锛堣嫢瀹炰綋娌℃湁鍙樺寲寤鸿鍏抽棴锛�
+          "EnableInitTable": true, // 鍚敤琛ㄥ垵濮嬪寲锛堣嫢瀹炰綋娌℃湁鍙樺寲寤鸿鍏抽棴锛�
           "EnableIncreTable": true // 鍚敤琛ㄥ閲忔洿鏂帮紙鍙洿鏂拌创浜嗙壒鎬IncreTable]鐨勫疄浣撹〃锛�
         },
         "SeedSettings": {
diff --git a/Admin.NET/Admin.NET.Core/Const/ClaimConst.cs b/Admin.NET/Admin.NET.Core/Const/ClaimConst.cs
index 7fdf85f..18f48bb 100644
--- a/Admin.NET/Admin.NET.Core/Const/ClaimConst.cs
+++ b/Admin.NET/Admin.NET.Core/Const/ClaimConst.cs
@@ -65,4 +65,16 @@
     /// 鐧诲綍妯″紡PC銆丄PP
     /// </summary>
     public const string LoginMode = "LoginMode";
+
+
+    /// <summary>
+    /// 鐢ㄦ埛绫诲瀷
+    /// </summary>
+    public const string UserType = "UserType";
+
+
+    /// <summary>
+    /// 瀹㈡埛鐧诲綍绫诲瀷
+    /// </summary>
+    public const string CustomerLogoinType = "CustomerLogoinType";
 }
\ No newline at end of file
diff --git a/Admin.NET/Admin.NET.Web.Core/Admin.NET.Web.Core.csproj b/Admin.NET/Admin.NET.Web.Core/Admin.NET.Web.Core.csproj
index f193e56..4f58699 100644
--- a/Admin.NET/Admin.NET.Web.Core/Admin.NET.Web.Core.csproj
+++ b/Admin.NET/Admin.NET.Web.Core/Admin.NET.Web.Core.csproj
@@ -16,6 +16,7 @@
 
   <ItemGroup>
     <ProjectReference Include="..\Admin.NET.Application\Admin.NET.Application.csproj" />
+    <ProjectReference Include="..\FZCZTB.TSCL.Application\FZCZTB.TSCL.Application.csproj" />
   </ItemGroup>
 
 </Project>
diff --git a/Admin.NET/Admin.NET.Web.Core/Startup.cs b/Admin.NET/Admin.NET.Web.Core/Startup.cs
index 78d0277..75e7aac 100644
--- a/Admin.NET/Admin.NET.Web.Core/Startup.cs
+++ b/Admin.NET/Admin.NET.Web.Core/Startup.cs
@@ -351,7 +351,7 @@
         {
             foreach (var groupInfo in SpecificationDocumentBuilder.GetOpenApiGroups())
             {
-                groupInfo.Description += "<br/><u><b><font color='FF0000'> 馃懏涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛�</font></b></u>";
+                groupInfo.Description += "<br/><u><b><font color='FF0000'> 娆㈣繋娆㈣繋</font></b></u>";
             }
         });
 
diff --git a/Admin.NET/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj b/Admin.NET/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj
index c5397c8..568511b 100644
--- a/Admin.NET/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj
+++ b/Admin.NET/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj
@@ -62,7 +62,6 @@
 
   <ItemGroup>
     <ProjectReference Include="..\Admin.NET.Web.Core\Admin.NET.Web.Core.csproj" />
-    <ProjectReference Include="..\FZCZTB.TSCL.Application\FZCZTB.TSCL.Application.csproj" />
   </ItemGroup>
 
 </Project>
diff --git a/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Customer.cs b/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Customer.cs
new file mode 100644
index 0000000..1df95cf
--- /dev/null
+++ b/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Customer.cs
@@ -0,0 +1,357 @@
+锘�// Admin.NET 椤圭洰鐨勭増鏉冦�佸晢鏍囥�佷笓鍒╁拰鍏朵粬鐩稿叧鏉冨埄鍧囧彈鐩稿簲娉曞緥娉曡鐨勪繚鎶ゃ�備娇鐢ㄦ湰椤圭洰搴旈伒瀹堢浉鍏虫硶寰嬫硶瑙勫拰璁稿彲璇佺殑瑕佹眰銆�
+//
+// 鏈」鐩富瑕侀伒寰� MIT 璁稿彲璇佸拰 Apache 璁稿彲璇侊紙鐗堟湰 2.0锛夎繘琛屽垎鍙戝拰浣跨敤銆傝鍙瘉浣嶄簬婧愪唬鐮佹爲鏍圭洰褰曚腑鐨� LICENSE-MIT 鍜� LICENSE-APACHE 鏂囦欢銆�
+//
+// 涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛�
+
+using Admin.NET.Core;
+using Furion.FriendlyException;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FZCZTB.NET.MD.CutomerMd;
+/// <summary>
+/// 瀹㈡埛琛�
+/// </summary>
+[SugarTable("FB_Customer", "瀹㈡埛琛�")]
+[SugarIndex("index_{table}_A", nameof(Account), OrderByType.Asc)]
+[SugarIndex("index_{table}_P", nameof(Phone), OrderByType.Asc)]
+[IncreTable]
+public partial class FB_Customer : EntityBaseTenant
+{
+    /// <summary>
+    /// 璐﹀彿
+    /// </summary>
+    [SugarColumn(ColumnDescription = "璐﹀彿", Length = 32)]
+    [Required, MaxLength(32)]
+    public virtual string Account { get; set; }
+
+    /// <summary>
+    /// 瀵嗙爜
+    /// </summary>
+    [SugarColumn(ColumnDescription = "瀵嗙爜", Length = 512)]
+    [MaxLength(512)]
+    [Newtonsoft.Json.JsonIgnore]
+    [System.Text.Json.Serialization.JsonIgnore]
+    public virtual string Password { get; set; }
+
+    /// <summary>
+    /// 鐪熷疄濮撳悕
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鐪熷疄濮撳悕", Length = 32)]
+    [MaxLength(32)]
+    public virtual string RealName { get; set; }
+
+    /// <summary>
+    /// 鏄电О
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鏄电О", Length = 32)]
+    [MaxLength(32)]
+    public string? NickName { get; set; }
+
+    /// <summary>
+    /// 澶村儚
+    /// </summary>
+    [SugarColumn(ColumnDescription = "澶村儚", Length = 512)]
+    [MaxLength(512)]
+    public string? Avatar { get; set; }
+
+    /// <summary>
+    /// 鎬у埆-鐢穇1銆佸コ_2
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鎬у埆")]
+    public GenderEnum Sex { get; set; } = GenderEnum.Male;
+
+    /// <summary>
+    /// 骞撮緞
+    /// </summary>
+    [SugarColumn(ColumnDescription = "骞撮緞")]
+    public int Age { get; set; }
+
+    /// <summary>
+    /// 鍑虹敓鏃ユ湡
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鍑虹敓鏃ユ湡")]
+    public DateTime? Birthday { get; set; }
+
+    /// <summary>
+    /// 姘戞棌
+    /// </summary>
+    [SugarColumn(ColumnDescription = "姘戞棌", Length = 32)]
+    [MaxLength(32)]
+    public string? Nation { get; set; }
+
+    /// <summary>
+    /// 鎵嬫満鍙风爜
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鎵嬫満鍙风爜", Length = 16)]
+    [MaxLength(16)]
+    public string? Phone { get; set; }
+
+    /// <summary>
+    /// 璇佷欢绫诲瀷
+    /// </summary>
+    [SugarColumn(ColumnDescription = "璇佷欢绫诲瀷")]
+    public CardTypeEnum CardType { get; set; }
+
+    /// <summary>
+    /// 韬唤璇佸彿
+    /// </summary>
+    [SugarColumn(ColumnDescription = "韬唤璇佸彿", Length = 32)]
+    [MaxLength(32)]
+    public string? IdCardNum { get; set; }
+
+
+    /// <summary>
+    /// 韬唤璇佸彿
+    /// </summary>
+    [SugarColumn(ColumnDescription = "韬唤璇�", Length = 512)]
+    [MaxLength(512)]
+    public string? IdCardPath { get; set; }
+
+    /// <summary>
+    /// 閭
+    /// </summary>
+    [SugarColumn(ColumnDescription = "閭", Length = 64)]
+    [MaxLength(64)]
+    public string? Email { get; set; }
+
+    /// <summary>
+    /// 鍦板潃
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鍦板潃", Length = 256)]
+    [MaxLength(256)]
+    public string? Address { get; set; }
+
+    /// <summary>
+    /// 鏂囧寲绋嬪害
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鏂囧寲绋嬪害")]
+    public CultureLevelEnum CultureLevel { get; set; }
+
+    /// <summary>
+    /// 鏀挎不闈㈣矊
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鏀挎不闈㈣矊", Length = 16)]
+    [MaxLength(16)]
+    public string? PoliticalOutlook { get; set; }
+
+    /// <summary>
+    /// 姣曚笟闄㈡牎
+    /// </summary>COLLEGE
+    [SugarColumn(ColumnDescription = "姣曚笟闄㈡牎", Length = 128)]
+    [MaxLength(128)]
+    public string? College { get; set; }
+
+    /// <summary>
+    /// 鍔炲叕鐢佃瘽
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鍔炲叕鐢佃瘽", Length = 16)]
+    [MaxLength(16)]
+    public string? OfficePhone { get; set; }
+
+    /// <summary>
+    /// 绱ф�ヨ仈绯讳汉
+    /// </summary>
+    [SugarColumn(ColumnDescription = "绱ф�ヨ仈绯讳汉", Length = 32)]
+    [MaxLength(32)]
+    public string? EmergencyContact { get; set; }
+
+    /// <summary>
+    /// 绱ф�ヨ仈绯讳汉鐢佃瘽
+    /// </summary>
+    [SugarColumn(ColumnDescription = "绱ф�ヨ仈绯讳汉鐢佃瘽", Length = 16)]
+    [MaxLength(16)]
+    public string? EmergencyPhone { get; set; }
+
+    /// <summary>
+    /// 绱ф�ヨ仈绯讳汉鍦板潃
+    /// </summary>
+    [SugarColumn(ColumnDescription = "绱ф�ヨ仈绯讳汉鍦板潃", Length = 256)]
+    [MaxLength(256)]
+    public string? EmergencyAddress { get; set; }
+
+    /// <summary>
+    /// 涓汉绠�浠�
+    /// </summary>
+    [SugarColumn(ColumnDescription = "涓汉绠�浠�", Length = 512)]
+    [MaxLength(512)]
+    public string? Introduction { get; set; }
+
+    /// <summary>
+    /// 鎺掑簭
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鎺掑簭")]
+    public int OrderNo { get; set; } = 100;
+
+    /// <summary>
+    /// 鐘舵��
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鐘舵��")]
+    public StatusEnum Status { get; set; } = StatusEnum.Enable;
+
+    /// <summary>
+    /// 澶囨敞
+    /// </summary>
+    [SugarColumn(ColumnDescription = "澶囨敞", Length = 256)]
+    [MaxLength(256)]
+    public string? Remark { get; set; }
+
+    ///// <summary>
+    ///// 璐﹀彿绫诲瀷
+    ///// </summary>
+    //[SugarColumn(ColumnDescription = "璐﹀彿绫诲瀷")]
+    //public AccountTypeEnum AccountType { get; set; } = AccountTypeEnum.NormalUser;
+
+    ///// <summary>
+    ///// 鐩村睘鏈烘瀯Id
+    ///// </summary>
+    //[SugarColumn(ColumnDescription = "鐩村睘鏈烘瀯Id")]
+    //public long OrgId { get; set; }
+
+    /// <summary>
+    /// 鐩村睘鏈烘瀯
+    /// </summary>
+    //[Navigate(NavigateType.OneToOne, nameof(OrgId))]
+    //public SysOrg SysOrg { get; set; }
+
+    /// <summary>
+    /// 鐩村睘涓荤Id
+    /// </summary>
+    //[SugarColumn(ColumnDescription = "鐩村睘涓荤Id")]
+    //public long? ManagerUserId { get; set; }
+
+    /// <summary>
+    /// 鐩村睘涓荤
+    /// </summary>
+    //[Newtonsoft.Json.JsonIgnore]
+    //[System.Text.Json.Serialization.JsonIgnore]
+    //[Navigate(NavigateType.OneToOne, nameof(ManagerUserId))]
+    //public SysUser ManagerUser { get; set; }
+
+    ///// <summary>
+    ///// 鑱屼綅Id
+    ///// </summary>
+    //[SugarColumn(ColumnDescription = "鑱屼綅Id")]
+    //public long PosId { get; set; }
+
+    ///// <summary>
+    ///// 鑱屼綅
+    ///// </summary>
+    //[Newtonsoft.Json.JsonIgnore]
+    //[System.Text.Json.Serialization.JsonIgnore]
+    //[Navigate(NavigateType.OneToOne, nameof(PosId))]
+    //public SysPos SysPos { get; set; }
+
+    ///// <summary>
+    ///// 宸ュ彿
+    ///// </summary>
+    //[SugarColumn(ColumnDescription = "宸ュ彿", Length = 32)]
+    //[MaxLength(32)]
+    //public string? JobNum { get; set; }
+
+    /// <summary>
+    /// 鑱岀骇
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鑱岀骇", Length = 32)]
+    [MaxLength(32)]
+    public string? PosLevel { get; set; }
+
+    /// <summary>
+    /// 鑱岀О
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鑱岀О", Length = 32)]
+    [MaxLength(32)]
+    public string? PosTitle { get; set; }
+
+    /// <summary>
+    /// 鎿呴暱棰嗗煙
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鎿呴暱棰嗗煙", Length = 32)]
+    [MaxLength(32)]
+    public string? Expertise { get; set; }
+
+    /// <summary>
+    /// 鍔炲叕鍖哄煙
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鍔炲叕鍖哄煙", Length = 32)]
+    [MaxLength(32)]
+    public string? OfficeZone { get; set; }
+
+    /// <summary>
+    /// 鍔炲叕瀹�
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鍔炲叕瀹�", Length = 32)]
+    [MaxLength(32)]
+    public string? Office { get; set; }
+
+    /// <summary>
+    /// 鍏ヨ亴鏃ユ湡
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鍏ヨ亴鏃ユ湡")]
+    public DateTime? JoinDate { get; set; }
+
+    /// <summary>
+    /// 鏈�鏂扮櫥褰旾p
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鏈�鏂扮櫥褰旾p", Length = 256)]
+    [MaxLength(256)]
+    public string? LastLoginIp { get; set; }
+
+    /// <summary>
+    /// 鏈�鏂扮櫥褰曞湴鐐�
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鏈�鏂扮櫥褰曞湴鐐�", Length = 128)]
+    [MaxLength(128)]
+    public string? LastLoginAddress { get; set; }
+
+    /// <summary>
+    /// 鏈�鏂扮櫥褰曟椂闂�
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鏈�鏂扮櫥褰曟椂闂�")]
+    public DateTime? LastLoginTime { get; set; }
+
+    /// <summary>
+    /// 鏈�鏂扮櫥褰曡澶�
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鏈�鏂扮櫥褰曡澶�", Length = 128)]
+    [MaxLength(128)]
+    public string? LastLoginDevice { get; set; }
+
+    /// <summary>
+    /// 鐢靛瓙绛惧悕
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鐢靛瓙绛惧悕", Length = 512)]
+    [MaxLength(512)]
+    public string? Signature { get; set; }
+
+    ///// <summary>
+    ///// 楠岃瘉瓒呯骇绠$悊鍛樼被鍨嬶紝鑻ヨ处鍙风被鍨嬩负瓒呯骇绠$悊鍛樺垯鎶ラ敊
+    ///// </summary>
+    ///// <param name="errorMsg">鑷畾涔夐敊璇秷鎭�</param>
+    //public void ValidateIsSuperAdminAccountType(ErrorCodeEnum? errorMsg = ErrorCodeEnum.D1014)
+    //{
+    //    if (AccountType == AccountTypeEnum.SuperAdmin)
+    //    {
+    //        throw Oops.Oh(errorMsg);
+    //    }
+    //}
+
+    /// <summary>
+    /// 楠岃瘉鐢ㄦ埛Id鏄惁鐩稿悓锛岃嫢鐢ㄦ埛Id鐩稿悓鍒欐姤閿�
+    /// </summary>
+    /// <param name="userId">鐢ㄦ埛Id</param>
+    /// <param name="errorMsg">鑷畾涔夐敊璇秷鎭�</param>
+    public void ValidateIsUserId(long userId, ErrorCodeEnum? errorMsg = ErrorCodeEnum.D1001)
+    {
+        if (Id == userId)
+        {
+            throw Oops.Oh(errorMsg);
+        }
+    }
+}
\ No newline at end of file
diff --git a/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_CustomerRole.cs b/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_CustomerRole.cs
new file mode 100644
index 0000000..dfee1f9
--- /dev/null
+++ b/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_CustomerRole.cs
@@ -0,0 +1,45 @@
+锘�// Admin.NET 椤圭洰鐨勭増鏉冦�佸晢鏍囥�佷笓鍒╁拰鍏朵粬鐩稿叧鏉冨埄鍧囧彈鐩稿簲娉曞緥娉曡鐨勪繚鎶ゃ�備娇鐢ㄦ湰椤圭洰搴旈伒瀹堢浉鍏虫硶寰嬫硶瑙勫拰璁稿彲璇佺殑瑕佹眰銆�
+//
+// 鏈」鐩富瑕侀伒寰� MIT 璁稿彲璇佸拰 Apache 璁稿彲璇侊紙鐗堟湰 2.0锛夎繘琛屽垎鍙戝拰浣跨敤銆傝鍙瘉浣嶄簬婧愪唬鐮佹爲鏍圭洰褰曚腑鐨� LICENSE-MIT 鍜� LICENSE-APACHE 鏂囦欢銆�
+//
+// 涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛�
+
+using Admin.NET.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FZCZTB.NET.MD.CutomerMd;
+[SugarTable("FB_CustomerRole", "瀹㈡埛鑿滃崟琛�")]
+[IncreTable]
+public class FB_CustomerRole : EntityBaseId
+{
+    /// <summary>
+    /// 鐢ㄦ埛Id
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鐢ㄦ埛Id")]
+    public long CutomerId { get; set; }
+
+    /// <summary>
+    /// 鐢ㄦ埛
+    /// </summary>
+    [Newtonsoft.Json.JsonIgnore]
+    [System.Text.Json.Serialization.JsonIgnore]
+    [Navigate(NavigateType.OneToOne, nameof(CutomerId))]
+    public SysUser SysUser { get; set; }
+
+    /// <summary>
+    /// 瑙掕壊Id
+    /// </summary>
+    [SugarColumn(ColumnDescription = "瑙掕壊Id")]
+    public long RoleId { get; set; }
+
+    /// <summary>
+    /// 瑙掕壊
+    /// </summary>
+    [Navigate(NavigateType.OneToOne, nameof(RoleId))]
+    public SysRole SysRole { get; set; }
+}
diff --git a/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_ExRole.cs b/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_ExRole.cs
new file mode 100644
index 0000000..cf5c52f
--- /dev/null
+++ b/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_ExRole.cs
@@ -0,0 +1,65 @@
+锘�// Admin.NET 椤圭洰鐨勭増鏉冦�佸晢鏍囥�佷笓鍒╁拰鍏朵粬鐩稿叧鏉冨埄鍧囧彈鐩稿簲娉曞緥娉曡鐨勪繚鎶ゃ�備娇鐢ㄦ湰椤圭洰搴旈伒瀹堢浉鍏虫硶寰嬫硶瑙勫拰璁稿彲璇佺殑瑕佹眰銆�
+//
+// 鏈」鐩富瑕侀伒寰� MIT 璁稿彲璇佸拰 Apache 璁稿彲璇侊紙鐗堟湰 2.0锛夎繘琛屽垎鍙戝拰浣跨敤銆傝鍙瘉浣嶄簬婧愪唬鐮佹爲鏍圭洰褰曚腑鐨� LICENSE-MIT 鍜� LICENSE-APACHE 鏂囦欢銆�
+//
+// 涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛�
+
+using Admin.NET.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FZCZTB.NET.MD.CutomerMd;
+/// <summary>
+/// 鐧诲綍鍗宠閫夋嫨鐨勬牎鑹�
+/// </summary>
+
+[SugarTable("FB_TenantMenu", "瀹㈡埛涓诲垎绫昏鑹�")]
+[SugarIndex("index_{table}_N", nameof(Name), OrderByType.Asc)]
+[SugarIndex("index_{table}_C", nameof(Code), OrderByType.Asc)]
+[IncreTable]
+public class FB_ExRole: EntityBaseTenantId
+{
+    /// <summary>
+    /// 鍚嶇О
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鍚嶇О", Length = 64)]
+    [Required, MaxLength(64)]
+    public virtual string Name { get; set; }
+
+    /// <summary>
+    /// 缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnDescription = "缂栫爜", Length = 64)]
+    [MaxLength(64)]
+    public string? Code { get; set; }
+
+    /// <summary>
+    /// 鎺掑簭
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鎺掑簭")]
+    public int OrderNo { get; set; } = 100;
+
+    /// <summary>
+    /// 鏁版嵁鑼冨洿锛�1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鏁版嵁鑼冨洿")]
+    public DataScopeEnum DataScope { get; set; } = DataScopeEnum.All;
+
+    /// <summary>
+    /// 澶囨敞
+    /// </summary>
+    [SugarColumn(ColumnDescription = "澶囨敞", Length = 128)]
+    [MaxLength(128)]
+    public string? Remark { get; set; }
+
+    /// <summary>
+    /// 鐘舵��
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鐘舵��")]
+    public StatusEnum Status { get; set; } = StatusEnum.Enable;
+}
diff --git a/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_ExRoleMenu.cs b/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_ExRoleMenu.cs
new file mode 100644
index 0000000..45a2856
--- /dev/null
+++ b/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_ExRoleMenu.cs
@@ -0,0 +1,34 @@
+锘�// Admin.NET 椤圭洰鐨勭増鏉冦�佸晢鏍囥�佷笓鍒╁拰鍏朵粬鐩稿叧鏉冨埄鍧囧彈鐩稿簲娉曞緥娉曡鐨勪繚鎶ゃ�備娇鐢ㄦ湰椤圭洰搴旈伒瀹堢浉鍏虫硶寰嬫硶瑙勫拰璁稿彲璇佺殑瑕佹眰銆�
+//
+// 鏈」鐩富瑕侀伒寰� MIT 璁稿彲璇佸拰 Apache 璁稿彲璇侊紙鐗堟湰 2.0锛夎繘琛屽垎鍙戝拰浣跨敤銆傝鍙瘉浣嶄簬婧愪唬鐮佹爲鏍圭洰褰曚腑鐨� LICENSE-MIT 鍜� LICENSE-APACHE 鏂囦欢銆�
+//
+// 涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛�
+
+using Admin.NET.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FZCZTB.NET.MD.CutomerMd;
+/// <summary>
+/// 绯荤粺绉熸埛鑿滃崟琛�
+/// </summary>
+[SugarTable("FB_TenantMenu", "绯荤粺绉熸埛鑿滃崟琛�")]
+[IncreTable]
+class FB_ExRoleMenu: EntityBaseId
+{
+    /// <summary>
+    /// 绉熸埛Id
+    /// </summary>
+    [SugarColumn(ColumnDescription = "绉熸埛Id")]
+    public long ExRoleId { get; set; }
+
+    /// <summary>
+    /// 鑿滃崟Id
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鑿滃崟Id")]
+    public long MenuId { get; set; }
+}
diff --git a/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Menu.cs b/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Menu.cs
new file mode 100644
index 0000000..9e2a79f
--- /dev/null
+++ b/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Menu.cs
@@ -0,0 +1,142 @@
+锘�// Admin.NET 椤圭洰鐨勭増鏉冦�佸晢鏍囥�佷笓鍒╁拰鍏朵粬鐩稿叧鏉冨埄鍧囧彈鐩稿簲娉曞緥娉曡鐨勪繚鎶ゃ�備娇鐢ㄦ湰椤圭洰搴旈伒瀹堢浉鍏虫硶寰嬫硶瑙勫拰璁稿彲璇佺殑瑕佹眰銆�
+//
+// 鏈」鐩富瑕侀伒寰� MIT 璁稿彲璇佸拰 Apache 璁稿彲璇侊紙鐗堟湰 2.0锛夎繘琛屽垎鍙戝拰浣跨敤銆傝鍙瘉浣嶄簬婧愪唬鐮佹爲鏍圭洰褰曚腑鐨� LICENSE-MIT 鍜� LICENSE-APACHE 鏂囦欢銆�
+//
+// 涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛�
+
+using Admin.NET.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FZCZTB.NET.MD.CutomerMd;
+/// <summary>
+/// 
+/// </summary>
+[SugarTable("FB_Menu", "瀹㈡埛绯荤粺鑿滃崟琛�")]
+[SugarIndex("index_{table}_T", nameof(Title), OrderByType.Asc)]
+[SugarIndex("index_{table}_T2", nameof(Type), OrderByType.Asc)]
+[IncreTable]
+public class FB_Menu: EntityBaseTenantId
+{
+    /// <summary>
+    /// 鐖禝d
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鐖禝d")]
+    public long Pid { get; set; }
+
+    /// <summary>
+    /// 鑿滃崟绫诲瀷锛�1鐩綍 2鑿滃崟 3鎸夐挳锛�
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鑿滃崟绫诲瀷")]
+    public MenuTypeEnum Type { get; set; }
+
+    /// <summary>
+    /// 璺敱鍚嶇О
+    /// </summary>
+    [SugarColumn(ColumnDescription = "璺敱鍚嶇О", Length = 64)]
+    [MaxLength(64)]
+    public string? Name { get; set; }
+
+    /// <summary>
+    /// 璺敱鍦板潃
+    /// </summary>
+    [SugarColumn(ColumnDescription = "璺敱鍦板潃", Length = 128)]
+    [MaxLength(128)]
+    public string? Path { get; set; }
+
+    /// <summary>
+    /// 缁勪欢璺緞
+    /// </summary>
+    [SugarColumn(ColumnDescription = "缁勪欢璺緞", Length = 128)]
+    [MaxLength(128)]
+    public string? Component { get; set; }
+
+    /// <summary>
+    /// 閲嶅畾鍚�
+    /// </summary>
+    [SugarColumn(ColumnDescription = "閲嶅畾鍚�", Length = 128)]
+    [MaxLength(128)]
+    public string? Redirect { get; set; }
+
+    /// <summary>
+    /// 鏉冮檺鏍囪瘑
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鏉冮檺鏍囪瘑", Length = 128)]
+    [MaxLength(128)]
+    public string? Permission { get; set; }
+
+    /// <summary>
+    /// 鑿滃崟鍚嶇О
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鑿滃崟鍚嶇О", Length = 64)]
+    [Required, MaxLength(64)]
+    public virtual string Title { get; set; }
+
+    /// <summary>
+    /// 鍥炬爣
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鍥炬爣", Length = 128)]
+    [MaxLength(128)]
+    public string? Icon { get; set; } = "ele-Menu";
+
+    /// <summary>
+    /// 鏄惁鍐呭祵
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鏄惁鍐呭祵")]
+    public bool IsIframe { get; set; }
+
+    /// <summary>
+    /// 澶栭摼閾炬帴
+    /// </summary>
+    [SugarColumn(ColumnDescription = "澶栭摼閾炬帴", Length = 256)]
+    [MaxLength(256)]
+    public string? OutLink { get; set; }
+
+    /// <summary>
+    /// 鏄惁闅愯棌
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鏄惁闅愯棌")]
+    public bool IsHide { get; set; }
+
+    /// <summary>
+    /// 鏄惁缂撳瓨
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鏄惁缂撳瓨")]
+    public bool IsKeepAlive { get; set; } = true;
+
+    /// <summary>
+    /// 鏄惁鍥哄畾
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鏄惁鍥哄畾")]
+    public bool IsAffix { get; set; }
+
+    /// <summary>
+    /// 鎺掑簭
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鎺掑簭")]
+    public int OrderNo { get; set; } = 100;
+
+    /// <summary>
+    /// 鐘舵��
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鐘舵��")]
+    public StatusEnum Status { get; set; } = StatusEnum.Enable;
+
+    /// <summary>
+    /// 澶囨敞
+    /// </summary>
+    [SugarColumn(ColumnDescription = "澶囨敞", Length = 256)]
+    [MaxLength(256)]
+    public string? Remark { get; set; }
+
+    /// <summary>
+    /// 鑿滃崟瀛愰」
+    /// </summary>
+    [SugarColumn(IsIgnore = true)]
+    public List<SysMenu> Children { get; set; } = new();
+}
diff --git a/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Role.cs b/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Role.cs
new file mode 100644
index 0000000..90485b8
--- /dev/null
+++ b/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Role.cs
@@ -0,0 +1,63 @@
+锘�// Admin.NET 椤圭洰鐨勭増鏉冦�佸晢鏍囥�佷笓鍒╁拰鍏朵粬鐩稿叧鏉冨埄鍧囧彈鐩稿簲娉曞緥娉曡鐨勪繚鎶ゃ�備娇鐢ㄦ湰椤圭洰搴旈伒瀹堢浉鍏虫硶寰嬫硶瑙勫拰璁稿彲璇佺殑瑕佹眰銆�
+//
+// 鏈」鐩富瑕侀伒寰� MIT 璁稿彲璇佸拰 Apache 璁稿彲璇侊紙鐗堟湰 2.0锛夎繘琛屽垎鍙戝拰浣跨敤銆傝鍙瘉浣嶄簬婧愪唬鐮佹爲鏍圭洰褰曚腑鐨� LICENSE-MIT 鍜� LICENSE-APACHE 鏂囦欢銆�
+//
+// 涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛�
+
+using Admin.NET.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using static SKIT.FlurlHttpClient.Wechat.Api.Models.ComponentTCBBatchCreateContainerServiceVersionRequest.Types;
+
+namespace FZCZTB.NET.MD.CutomerMd;
+
+[SugarTable("FB_Role", "瀹㈡埛涓�у寲瑙掕壊")]
+[SugarIndex("index_{table}_N", nameof(Name), OrderByType.Asc)]
+[SugarIndex("index_{table}_C", nameof(Code), OrderByType.Asc)]
+[IncreTable]
+public class FB_Role : EntityBaseTenant
+{
+    /// <summary>
+    /// 鍚嶇О
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鍚嶇О", Length = 64)]
+    [Required, MaxLength(64)]
+    public virtual string Name { get; set; }
+
+    /// <summary>
+    /// 缂栫爜
+    /// </summary>
+    [SugarColumn(ColumnDescription = "缂栫爜", Length = 64)]
+    [MaxLength(64)]
+    public string? Code { get; set; }
+
+    /// <summary>
+    /// 鎺掑簭
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鎺掑簭")]
+    public int OrderNo { get; set; } = 100;
+
+    /// <summary>
+    /// 鏁版嵁鑼冨洿锛�1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鏁版嵁鑼冨洿")]
+    public DataScopeEnum DataScope { get; set; } = DataScopeEnum.Self;
+
+    /// <summary>
+    /// 澶囨敞
+    /// </summary>
+    [SugarColumn(ColumnDescription = "澶囨敞", Length = 128)]
+    [MaxLength(128)]
+    public string? Remark { get; set; }
+
+    /// <summary>
+    /// 鐘舵��
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鐘舵��")]
+    public StatusEnum Status { get; set; } = StatusEnum.Enable;
+}
diff --git a/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_RoleMenu.cs b/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_RoleMenu.cs
new file mode 100644
index 0000000..feb0c07
--- /dev/null
+++ b/Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_RoleMenu.cs
@@ -0,0 +1,40 @@
+锘�// Admin.NET 椤圭洰鐨勭増鏉冦�佸晢鏍囥�佷笓鍒╁拰鍏朵粬鐩稿叧鏉冨埄鍧囧彈鐩稿簲娉曞緥娉曡鐨勪繚鎶ゃ�備娇鐢ㄦ湰椤圭洰搴旈伒瀹堢浉鍏虫硶寰嬫硶瑙勫拰璁稿彲璇佺殑瑕佹眰銆�
+//
+// 鏈」鐩富瑕侀伒寰� MIT 璁稿彲璇佸拰 Apache 璁稿彲璇侊紙鐗堟湰 2.0锛夎繘琛屽垎鍙戝拰浣跨敤銆傝鍙瘉浣嶄簬婧愪唬鐮佹爲鏍圭洰褰曚腑鐨� LICENSE-MIT 鍜� LICENSE-APACHE 鏂囦欢銆�
+//
+// 涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛�
+
+using Admin.NET.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FZCZTB.NET.MD.CutomerMd;
+[IncreTable]
+[SugarTable("FB_Role", "涓�у寲鏍¤壊鑿滃崟")]
+public class FB_RoleMenu: EntityBaseId
+{
+
+    /// <summary>
+    /// 瑙掕壊Id
+    /// </summary>
+    [SugarColumn(ColumnDescription = "瑙掕壊Id")]
+    public long RoleId { get; set; }
+
+    /// <summary>
+    /// 鑿滃崟Id
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鑿滃崟Id")]
+    public long MenuId { get; set; }
+
+    /// <summary>
+    /// 鑿滃崟
+    /// </summary>
+    [Newtonsoft.Json.JsonIgnore]
+    [System.Text.Json.Serialization.JsonIgnore]
+    [Navigate(NavigateType.OneToOne, nameof(MenuId))]
+    public SysMenu SysMenu { get; set; }
+}
diff --git a/Admin.NET/FZCZTB.NET.MD/ProcurementComplaint.cs b/Admin.NET/FZCZTB.NET.MD/ProcurementComplaint.cs
index c566b19..e47e76c 100644
--- a/Admin.NET/FZCZTB.NET.MD/ProcurementComplaint.cs
+++ b/Admin.NET/FZCZTB.NET.MD/ProcurementComplaint.cs
@@ -76,7 +76,7 @@
         /// <summary>
         /// 鎶曡瘔浜嬮」
         /// </summary>
-        [Navigate(NavigateType.OneToMany,nameof(ProcurementComplaintItems.ComplaintId), nameof(ProcurementComplaint.Id))]
+        [Navigate(NavigateType.OneToMany,nameof(ProcurementComplaintItems.ComplaintId))]
         public  List<ProcurementComplaintItems>? Complaints { get; set; }
     }
 
@@ -109,7 +109,7 @@
             /// 澶勭悊缁撴灉
             /// </summary>
             [SugarColumn(IsNullable = true, ColumnDescription = "澶勭悊缁撴灉")]
-            public PComplaintStatus HandlingStatus { get; set; }
+            public PComplaintStatus? HandlingStatus { get; set; }
         /// <summary>
         /// 澶勭悊鎻忚堪
         /// </summary>
@@ -148,7 +148,7 @@
         [Description("閮ㄥ垎鎴愮珛")]
         PartiallyValid = 3
 
-     
+
     }
 
     public class basemodelNoId
diff --git a/Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintInput.cs b/Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintInput.cs
index 750251b..30fdd6a 100644
--- a/Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintInput.cs
+++ b/Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintInput.cs
@@ -122,6 +122,13 @@
     /// 閫変腑涓婚敭鍒楄〃
     /// </summary>
     public List<Guid> SelectKeyList { get; set; }
+
+    /// <summary>
+    /// 鏄惁鎴愮珛
+    /// </summary>
+    public PComplaintStatus? Status { get; set; }
+
+
 }
 
 /// <summary>
diff --git a/Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintOutput.cs b/Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintOutput.cs
index 956dbe8..9bcc917 100644
--- a/Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintOutput.cs
+++ b/Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintOutput.cs
@@ -3,6 +3,7 @@
 // 鏈」鐩富瑕侀伒寰� MIT 璁稿彲璇佸拰 Apache 璁稿彲璇侊紙鐗堟湰 2.0锛夎繘琛屽垎鍙戝拰浣跨敤銆傝鍙瘉浣嶄簬婧愪唬鐮佹爲鏍圭洰褰曚腑鐨� LICENSE-MIT 鍜� LICENSE-APACHE 鏂囦欢銆�
 //
 // 涓嶅緱鍒╃敤鏈」鐩粠浜嬪嵄瀹冲浗瀹跺畨鍏ㄣ�佹壈涔辩ぞ浼氱З搴忋�佷镜鐘粬浜哄悎娉曟潈鐩婄瓑娉曞緥娉曡绂佹鐨勬椿鍔紒浠讳綍鍩轰簬鏈」鐩簩娆″紑鍙戣�屼骇鐢熺殑涓�鍒囨硶寰嬬籂绾峰拰璐d换锛屾垜浠笉鎵挎媴浠讳綍璐d换锛�
+using FZCZTB.NET.MD;
 using Magicodes.ExporterAndImporter.Core;
 namespace FZCZTB.TSCL.Application;
 
@@ -84,10 +85,14 @@
     /// <summary>
     /// 淇敼鑰呭鍚�
     /// </summary>
-    public string? UpdateUserName { get; set; }    
+    public string? UpdateUserName { get; set; }
 
-    
-    
+    public List<ProcurementComplaintItems>? Complaints { get; set; }
+
+    /// <summary>
+    /// 鏄惁鎴愮珛
+    /// </summary>
+    public PComplaintStatus Status { get; set; }
 }
 
 /// <summary>
diff --git a/Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/ProcurementComplaintService.cs b/Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/ProcurementComplaintService.cs
index a9dec84..4d107d0 100644
--- a/Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/ProcurementComplaintService.cs
+++ b/Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/ProcurementComplaintService.cs
@@ -23,6 +23,7 @@
 using System.Linq;
 using NewLife.Xml;
 using AngleSharp.Dom;
+using static Elastic.Clients.Elasticsearch.JoinField;
 namespace FZCZTB.TSCL.Application;
 
 /// <summary>
@@ -50,8 +51,8 @@
     public async Task<SqlSugarPagedList<ProcurementComplaintOutput>> Page(PageProcurementComplaintInput input)
     {
         input.Keyword = input.Keyword?.Trim();
-        var query = _procurementComplaintRep.AsQueryable().Includes(x=>x.Complaints)
-            .WhereIF(!string.IsNullOrWhiteSpace(input.Keyword), u => u.Complaints.Any(uu=>uu.ItemDescription.Contains(input.Keyword)))
+        var query = _procurementComplaintRep.AsQueryable().Includes(u => u.Complaints)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.Keyword), u => u.Complaints.Any(uu => uu.ItemDescription.Contains(input.Keyword)))
             .WhereIF(!string.IsNullOrWhiteSpace(input.ProjectCode), u => u.ProjectCode.Contains(input.ProjectCode.Trim()))
             .WhereIF(!string.IsNullOrWhiteSpace(input.ProjectName), u => u.ProjectName.Contains(input.ProjectName.Trim()))
             .WhereIF(!string.IsNullOrWhiteSpace(input.Purchaser), u => u.Purchaser.Contains(input.Purchaser.Trim()))
@@ -60,7 +61,21 @@
             .WhereIF(!string.IsNullOrWhiteSpace(input.ProcurementSupervisionDepartment), u => u.ProcurementSupervisionDepartment.Contains(input.ProcurementSupervisionDepartment.Trim()))
             .WhereIF(!string.IsNullOrWhiteSpace(input.Url), u => u.Url.Contains(input.Url.Trim()))
             .WhereIF(input.DecisionDateRange?.Length == 2, u => u.DecisionDate >= input.DecisionDateRange[0] && u.DecisionDate <= input.DecisionDateRange[1])
-            .Select<ProcurementComplaintOutput>();
+            .WhereIF(input.Status != null && input.Status == PComplaintStatus.Valid, u =>( u.Complaints.Any(uu => uu.HandlingStatus == PComplaintStatus.Valid)))
+            .WhereIF(input.Status != null && input.Status == PComplaintStatus.Rejected, u => ( !u.Complaints.Any(uu=>uu.HandlingStatus== PComplaintStatus.Other||uu.HandlingStatus== PComplaintStatus.Valid||uu.HandlingStatus==null)))
+            .WhereIF(input.Status != null && input.Status == PComplaintStatus.Other, u =>!( u.Complaints.Any(uu=>uu.HandlingStatus== PComplaintStatus.Valid)|| (!u.Complaints.Any(uu => uu.HandlingStatus == PComplaintStatus.Other || uu.HandlingStatus == PComplaintStatus.Valid || uu.HandlingStatus == null))))
+            .Select(n => new ProcurementComplaintOutput
+            {
+                Complaints = n.Complaints
+            },true)
+            .Mapper(n =>
+             {
+                 n.Status =n.Complaints==null?  PComplaintStatus.Other:n.Complaints.Any(x => x.HandlingStatus == PComplaintStatus.Valid) ? PComplaintStatus.Valid :
+                 n.Complaints.All(x => x.HandlingStatus == PComplaintStatus.Rejected) ? PComplaintStatus.Rejected : PComplaintStatus.Other ;
+                 n.Complaints = null;
+            }
+            );
+          
 		return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize);
     }
 
diff --git a/Admin.NET/Plugins/Admin.NET.Plugin.ApprovalFlow/Admin.NET.Plugin.ApprovalFlow.csproj b/Admin.NET/Plugins/Admin.NET.Plugin.ApprovalFlow/Admin.NET.Plugin.ApprovalFlow.csproj
index 95ed3af..5524a31 100644
--- a/Admin.NET/Plugins/Admin.NET.Plugin.ApprovalFlow/Admin.NET.Plugin.ApprovalFlow.csproj
+++ b/Admin.NET/Plugins/Admin.NET.Plugin.ApprovalFlow/Admin.NET.Plugin.ApprovalFlow.csproj
@@ -1,7 +1,7 @@
 锘�<Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFrameworks>net8.0;net9.0</TargetFrameworks>
+    <TargetFrameworks>net8.0</TargetFrameworks>
     <NoWarn>1701;1702;1591;8632</NoWarn>
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>disable</Nullable>
diff --git a/Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Admin.NET.Plugin.DingTalk.csproj b/Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Admin.NET.Plugin.DingTalk.csproj
index ff2c7ba..a73595f 100644
--- a/Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Admin.NET.Plugin.DingTalk.csproj
+++ b/Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Admin.NET.Plugin.DingTalk.csproj
@@ -1,7 +1,7 @@
 锘�<Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFrameworks>net8.0;net9.0</TargetFrameworks>
+    <TargetFrameworks>net8.0</TargetFrameworks>
     <NoWarn>1701;1702;1591;8632</NoWarn>
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>disable</Nullable>
diff --git a/Admin.NET/Plugins/Admin.NET.Plugin.GoView/Admin.NET.Plugin.GoView.csproj b/Admin.NET/Plugins/Admin.NET.Plugin.GoView/Admin.NET.Plugin.GoView.csproj
index ff2c7ba..a73595f 100644
--- a/Admin.NET/Plugins/Admin.NET.Plugin.GoView/Admin.NET.Plugin.GoView.csproj
+++ b/Admin.NET/Plugins/Admin.NET.Plugin.GoView/Admin.NET.Plugin.GoView.csproj
@@ -1,7 +1,7 @@
 锘�<Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFrameworks>net8.0;net9.0</TargetFrameworks>
+    <TargetFrameworks>net8.0</TargetFrameworks>
     <NoWarn>1701;1702;1591;8632</NoWarn>
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>disable</Nullable>
diff --git a/Admin.NET/Plugins/Admin.NET.Plugin.K3Cloud/Admin.NET.Plugin.K3Cloud.csproj b/Admin.NET/Plugins/Admin.NET.Plugin.K3Cloud/Admin.NET.Plugin.K3Cloud.csproj
index 238c651..9e739ba 100644
--- a/Admin.NET/Plugins/Admin.NET.Plugin.K3Cloud/Admin.NET.Plugin.K3Cloud.csproj
+++ b/Admin.NET/Plugins/Admin.NET.Plugin.K3Cloud/Admin.NET.Plugin.K3Cloud.csproj
@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFrameworks>net8.0;net9.0</TargetFrameworks>
+    <TargetFrameworks>net8.0</TargetFrameworks>
     <NoWarn>1701;1702;1591;8632</NoWarn>
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>disable</Nullable>
diff --git a/Admin.NET/Plugins/Admin.NET.Plugin.ReZero/Admin.NET.Plugin.ReZero.csproj b/Admin.NET/Plugins/Admin.NET.Plugin.ReZero/Admin.NET.Plugin.ReZero.csproj
index b0912b6..2fb4dd9 100644
--- a/Admin.NET/Plugins/Admin.NET.Plugin.ReZero/Admin.NET.Plugin.ReZero.csproj
+++ b/Admin.NET/Plugins/Admin.NET.Plugin.ReZero/Admin.NET.Plugin.ReZero.csproj
@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFrameworks>net8.0;net9.0</TargetFrameworks>
+    <TargetFrameworks>net8.0</TargetFrameworks>
     <NoWarn>1701;1702;1591;8632</NoWarn>
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>disable</Nullable>
diff --git a/Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Admin.NET.Plugin.WorkWeixin.csproj b/Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Admin.NET.Plugin.WorkWeixin.csproj
index ff2c7ba..a73595f 100644
--- a/Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Admin.NET.Plugin.WorkWeixin.csproj
+++ b/Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Admin.NET.Plugin.WorkWeixin.csproj
@@ -1,7 +1,7 @@
 锘�<Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
-    <TargetFrameworks>net8.0;net9.0</TargetFrameworks>
+    <TargetFrameworks>net8.0</TargetFrameworks>
     <NoWarn>1701;1702;1591;8632</NoWarn>
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>disable</Nullable>

--
Gitblit v1.9.1