From 1a7ab235cb961e4d0978b494ee1ce8f7d4c7c4a0 Mon Sep 17 00:00:00 2001 From: fengruixiang <474182370@qq.com> Date: Thu, 23 Jul 2026 13:55:49 +0800 Subject: [PATCH] fix: update SalesAdminID for local development and add seed script for agent plans --- .../appsettings.local.json | 6 +- docker-compose-local-dev/seed-agent-plans.sql | 75 +++++++++++++++++++ 2 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 docker-compose-local-dev/seed-agent-plans.sql diff --git a/docker-compose-local-dev/appsettings.local.json b/docker-compose-local-dev/appsettings.local.json index d0d25e2..429e044 100644 --- a/docker-compose-local-dev/appsettings.local.json +++ b/docker-compose-local-dev/appsettings.local.json @@ -429,7 +429,11 @@ { "EditionId": "root", "OUIDs": [ "3a0971b1-75b7-c43a-f39d-3ced32e0df30" ], - "SalesAdminID": "3A0B4686-4473-DEC8-16EA-209135326E40" + // 无推薦人下单时的兜底归属 agent(OrderService.CreateOrder:AgentorId 为空 → 取此值)。 + // 原值 3A0B4686-… 来自 Nacos 改造前的 dev 环境,在恢复的 AML-local-dev.bak 里不存在该用户, + // 会给订单挂上悬空的 AgentorId —— 付款后 SendEmailToAgentOnTenantCreated 找不到人而静默失败。 + // 改为本地库里真实的 SalesAdmin(UserCode 000000)。 + "SalesAdminID": "3A09CD95-460F-C67A-9146-41121C5DFDE9" } ], "EditionFeatureMappings": [ diff --git a/docker-compose-local-dev/seed-agent-plans.sql b/docker-compose-local-dev/seed-agent-plans.sql new file mode 100644 index 0000000..622e65d --- /dev/null +++ b/docker-compose-local-dev/seed-agent-plans.sql @@ -0,0 +1,75 @@ +-- 本地测试数据:给「可选推薦人」配可售方案(AMLPortal_AgentUserPlans) +-- +-- 背景 —— 恢复的 AML-local-dev.bak 里存在一处数据断层: +-- · AMLPortal_AgentUserSettings 决定下单页「推薦人」下拉里出现谁(本地为 agent_A/U7D191·HKG、 +-- agentTest3/C87654·HKG、agentTest2/D6Y6U0·JPN); +-- · AMLPortal_AgentUserPlans 决定该推薦人能卖哪些方案(后端 GetPlanList 按 AgentCode 裁剪)。 +-- 两张表零交集:有关联的只有 SalesAdmin / XiaoJunlong,且它们关联的方案全部 IsDeleted=1 +-- (上一代旧方案,无 PlanDetail)。结果是**任选一个推薦人,任何行業都买不到东西** +-- (BFF 严格模式返回 agentNoPlans,前端红字阻断下单)。 +-- +-- 本脚本按「不同推薦人可售范围不同」的业务语义补齐关联,供本地验证推薦人过滤链路: +-- agent_A (U7D191, HKG) → Standard 12/24(HKG)+ Add Login + jQuota 50/200 +-- agentTest3(C87654, HKG) → Starter 12 / NGO 12 / CPA 24(HKG)+ Add Login + jQuota 50 +-- agentTest2(D6Y6U0, JPN) → Standard 12(JPN)+ Add Login + jQuota 50 +-- +-- 幂等:先软删该 agent 已有关联,再插入。仅用于本地开发库,勿用于 dev/stag/prod。 +-- +-- 执行: +-- docker exec -i aml-mssql /opt/mssql-tools18/bin/sqlcmd \ +-- -S localhost -U sa -P "Aml@Local2026" -C -d AbpAML -i /dev/stdin < seed-agent-plans.sql + +SET NOCOUNT ON; + +DECLARE @agentA uniqueidentifier = (SELECT Id FROM AbpUsers WHERE UserCode = 'U7D191'); +DECLARE @agentT3 uniqueidentifier = (SELECT Id FROM AbpUsers WHERE UserCode = 'C87654'); +DECLARE @agentT2 uniqueidentifier = (SELECT Id FROM AbpUsers WHERE UserCode = 'D6Y6U0'); + +IF @agentA IS NULL OR @agentT3 IS NULL OR @agentT2 IS NULL +BEGIN + RAISERROR('找不到预期的推薦人(U7D191 / C87654 / D6Y6U0),请确认已恢复 AML-local-dev.bak', 16, 1); + RETURN; +END + +-- 目标关联:(AgentUserId, PlanId)。PlanDetailId 取该方案当前有效的第一条明细。 +DECLARE @want TABLE (AgentUserId uniqueidentifier, PlanId uniqueidentifier); + +INSERT INTO @want (AgentUserId, PlanId) VALUES + -- agent_A · HKG:只卖 Standard 系 + (@agentA, '00000000-0000-0000-0051-000000000001'), -- Standard 12 Months (HKG) + (@agentA, '00000000-0000-0000-0051-000000000002'), -- Standard 24 Months (HKG) + (@agentA, '00000000-0000-0000-0051-000000000013'), -- Add Login (HKG) + (@agentA, '00000000-0000-0000-0051-000000000007'), -- jQuota 50 (HKG) + (@agentA, '00000000-0000-0000-0051-000000000008'), -- jQuota 200 (HKG) + -- agentTest3 · HKG:只卖入门 / NGO / CPA 系(与 agent_A 完全不重叠的基础方案) + (@agentT3, '00000000-0000-0000-0051-000000000003'), -- Starter 12 Months (HKG) + (@agentT3, '00000000-0000-0000-0051-000000000005'), -- NGO 12 Months (HKG) + (@agentT3, '00000000-0000-0000-0051-000000000006'), -- CPA 24 Months (HKG) + (@agentT3, '00000000-0000-0000-0051-000000000013'), -- Add Login (HKG) + (@agentT3, '00000000-0000-0000-0051-000000000007'), -- jQuota 50 (HKG) + -- agentTest2 · JPN:只卖 Standard 12 + (@agentT2, '00000000-0000-0000-0051-000000000017'), -- Standard 12 Months (JPN) + (@agentT2, '00000000-0000-0000-0051-000000000026'), -- Add Login (JPN) + (@agentT2, '00000000-0000-0000-0051-000000000021'); -- jQuota 50 (JPN) + +-- 幂等:先清掉这三个 agent 的现有关联(软删,保留审计痕迹) +UPDATE AMLPortal_AgentUserPlans +SET IsDeleted = 1, DeletionTime = SYSUTCDATETIME() +WHERE IsDeleted = 0 AND AgentUserId IN (@agentA, @agentT3, @agentT2); + +INSERT INTO AMLPortal_AgentUserPlans (Id, AgentUserId, PlanId, PlanDetailId, CreationTime, IsDeleted) +SELECT NEWID(), w.AgentUserId, w.PlanId, d.Id, SYSUTCDATETIME(), 0 +FROM @want w +CROSS APPLY ( + SELECT TOP 1 pd.Id + FROM AMLPortal_PlanDetails pd + WHERE pd.PlanId = w.PlanId AND pd.IsDeleted = 0 + ORDER BY pd.CreationTime +) d; + +SELECT u.UserCode, u.UserName, p.NameEN, p.Tag1Code, p.CountryCode +FROM AMLPortal_AgentUserPlans a +JOIN AbpUsers u ON u.Id = a.AgentUserId +JOIN AMLPortal_Plans p ON p.Id = a.PlanId +WHERE a.IsDeleted = 0 AND a.AgentUserId IN (@agentA, @agentT3, @agentT2) +ORDER BY u.UserCode, p.Tag1Code, p.NameEN;