From 87a8b90eafe2f0bbe82b173a4a179e5b63f6f9c5 Mon Sep 17 00:00:00 2001 From: tengyufan <1532636164@qq.com> Date: Wed, 19 Aug 2026 10:07:39 +0800 Subject: [PATCH] =?UTF-8?q?fix(ClientBlack):=20=E6=94=AF=E6=8C=81=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=9C=AA=E7=94=9F=E6=95=88=E9=BB=91=E5=90=8D=E5=8D=95?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 未提交、新增已拒绝的黑名单记录可直接删除,不进入删除审批 - 已加入、删除已拒绝仍按原逻辑发起删除审批 - 新增审批中、删除审批中仍禁止删除 - 补充未生效状态可直接删除的状态机单测,45/45 通过 --- .../ClientModule/ClientBlackApprovalPolicyTests.cs | 12 ++++++++++++ .../ClientModule/ClientBlackApprovalPolicy.cs | 5 +++++ YLErpDAL/Modules/ClientModule/ClientBlackService.cs | 7 +++++++ 3 files changed, 24 insertions(+) diff --git a/UnitTestProject/Modules/ClientModule/ClientBlackApprovalPolicyTests.cs b/UnitTestProject/Modules/ClientModule/ClientBlackApprovalPolicyTests.cs index 47534e8f..60e83b3a 100644 --- a/UnitTestProject/Modules/ClientModule/ClientBlackApprovalPolicyTests.cs +++ b/UnitTestProject/Modules/ClientModule/ClientBlackApprovalPolicyTests.cs @@ -41,6 +41,18 @@ namespace YLErp.Modules.ClientModule.Tests Assert.AreEqual(expected, ClientBlackApprovalPolicy.CanRequestRemoval(state)); } + [DataTestMethod] + [DataRow(client_black.未提交, true)] + [DataRow(client_black.新增已拒绝, true)] + [DataRow(client_black.新增审批中, false)] + [DataRow(client_black.已加入, false)] + [DataRow(client_black.删除审批中, false)] + [DataRow(client_black.删除已拒绝, false)] + public void CanDeleteDraft_OnlyNeverEffectiveStatesCanDeleteDirectly(string state, bool expected) + { + Assert.AreEqual(expected, ClientBlackApprovalPolicy.CanDeleteDraft(state)); + } + [DataTestMethod] [DataRow(client_black.新增审批中, 1, true)] [DataRow(client_black.删除审批中, 1, true)] diff --git a/YLErpDAL/Modules/ClientModule/ClientBlackApprovalPolicy.cs b/YLErpDAL/Modules/ClientModule/ClientBlackApprovalPolicy.cs index b880f82b..ed9271cb 100644 --- a/YLErpDAL/Modules/ClientModule/ClientBlackApprovalPolicy.cs +++ b/YLErpDAL/Modules/ClientModule/ClientBlackApprovalPolicy.cs @@ -33,6 +33,11 @@ namespace YLErp.Modules.ClientModule return state == client_black.已加入 || state == client_black.删除已拒绝; } + public static bool CanDeleteDraft(string state) + { + return state == client_black.未提交 || state == client_black.新增已拒绝; + } + public static ClientBlackRemovalResult GetRemovalResult(bool hasApprovalProcess) { return hasApprovalProcess diff --git a/YLErpDAL/Modules/ClientModule/ClientBlackService.cs b/YLErpDAL/Modules/ClientModule/ClientBlackService.cs index edd40593..d4c4d709 100644 --- a/YLErpDAL/Modules/ClientModule/ClientBlackService.cs +++ b/YLErpDAL/Modules/ClientModule/ClientBlackService.cs @@ -131,6 +131,13 @@ namespace YLErp.Modules.ClientModule var hasProcess = ProcessList().Any(); foreach (var row in rows) { + if (ClientBlackApprovalPolicy.CanDeleteDraft(row.State)) + { + DbContext.client_black.Remove(row); + ClientBlackCategoryLog(row.id, "已删除"); + continue; + } + if (!ClientBlackApprovalPolicy.CanRequestRemoval(row.State)) { throw new ServiceException($"黑名单客户{row.Name}当前状态不允许移出");