From fe888f92780bac02a29d154cd95b7a7d2fcd710e Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Mon, 14 Sep 2026 15:38:29 +0800 Subject: [PATCH] fix(iam): scope customer nickname to customer management --- deploy/sql/头程数据库统一增量-MySQL8.sql | 6 +++--- iam/src/main/java/com/baiyue/iam/dto/TenantDtos.java | 4 ++-- .../main/java/com/baiyue/iam/service/TenantService.java | 2 +- iam/src/main/resources/db/iam.sql | 2 +- iam/src/main/resources/openapi/iam-v1.yaml | 7 +++---- .../java/com/baiyue/iam/service/TenantServiceTest.java | 2 +- 6 files changed, 11 insertions(+), 12 deletions(-) diff --git a/deploy/sql/头程数据库统一增量-MySQL8.sql b/deploy/sql/头程数据库统一增量-MySQL8.sql index f9f3ad1b0..978490ac5 100644 --- a/deploy/sql/头程数据库统一增量-MySQL8.sql +++ b/deploy/sql/头程数据库统一增量-MySQL8.sql @@ -331,7 +331,7 @@ CREATE TABLE IF NOT EXISTS iam_tenant ( id BIGINT NOT NULL COMMENT '客户主档ID(雪花ID);0保留为平台技术作用域', tenant_code VARCHAR(8) NOT NULL COMMENT '客户编号:企业客户固定五位数字,平台技术主体为PLATFORM', tenant_name VARCHAR(128) NOT NULL COMMENT '客户企业名称', - customer_nickname VARCHAR(32) NOT NULL COMMENT '客户昵称:非法定展示及打印使用,创建时默认取公司名称中文拼音大写首字母', + customer_nickname VARCHAR(32) NOT NULL COMMENT '客户昵称:创建时默认取公司名称中文拼音大写首字母,可修改', tenant_type VARCHAR(20) NOT NULL DEFAULT 'MERCHANT' COMMENT '主体类型:MERCHANT企业客户', status VARCHAR(20) NOT NULL DEFAULT 'PROFILE_REQUIRED' COMMENT '客户状态:PROFILE_REQUIRED待完善资料、PENDING待审核、ACTIVE正常、REJECTED已驳回、DISABLED已停用', legal_name VARCHAR(128) NULL COMMENT '企业法定名称', @@ -1250,7 +1250,7 @@ SET @customer_nickname_ddl = (SELECT IF( EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='iam_tenant' AND column_name='customer_nickname'), 'SELECT 1', - 'ALTER TABLE iam_tenant ADD COLUMN customer_nickname VARCHAR(32) NULL COMMENT ''客户昵称:非法定展示及打印使用,创建时默认取公司名称中文拼音大写首字母'' AFTER tenant_name')); + 'ALTER TABLE iam_tenant ADD COLUMN customer_nickname VARCHAR(32) NULL COMMENT ''客户昵称:创建时默认取公司名称中文拼音大写首字母,可修改'' AFTER tenant_name')); PREPARE customer_nickname_stmt FROM @customer_nickname_ddl; EXECUTE customer_nickname_stmt; DEALLOCATE PREPARE customer_nickname_stmt; @@ -15266,7 +15266,7 @@ CALL queue_column_comment('baiyue_iam', 'iam_tenant', 'service_package', '客户 CALL queue_column_comment('baiyue_iam', 'iam_tenant', 'status', '客户状态:PROFILE_REQUIRED待完善资料、PENDING待审核、ACTIVE正常、REJECTED已驳回、DISABLED已停用'); CALL queue_column_comment('baiyue_iam', 'iam_tenant', 'tenant_code', '客户编号:企业客户固定五位数字,平台技术主体为PLATFORM'); CALL queue_column_comment('baiyue_iam', 'iam_tenant', 'tenant_name', '客户企业名称'); -CALL queue_column_comment('baiyue_iam', 'iam_tenant', 'customer_nickname', '客户昵称:非法定展示及打印使用,创建时默认取公司名称中文拼音大写首字母'); +CALL queue_column_comment('baiyue_iam', 'iam_tenant', 'customer_nickname', '客户昵称:创建时默认取公司名称中文拼音大写首字母,可修改'); CALL queue_column_comment('baiyue_iam', 'iam_tenant', 'tenant_type', '主体类型:MERCHANT企业客户'); CALL queue_column_comment('baiyue_iam', 'iam_tenant', 'unified_social_credit_code', '统一社会信用代码'); CALL queue_column_comment('baiyue_iam', 'iam_tenant', 'updated_at', '更新时间'); diff --git a/iam/src/main/java/com/baiyue/iam/dto/TenantDtos.java b/iam/src/main/java/com/baiyue/iam/dto/TenantDtos.java index 1ab9de92a..ae732b1b1 100644 --- a/iam/src/main/java/com/baiyue/iam/dto/TenantDtos.java +++ b/iam/src/main/java/com/baiyue/iam/dto/TenantDtos.java @@ -58,7 +58,7 @@ public final class TenantDtos { @Schema(name = "PlatformTenantUpdateRequest", description = "Platform maintained merchant tenant profile") public record UpdateTenantRequest( @NotBlank String tenantName, - @Schema(description = "Customer nickname used by non-legal displays and printing / 非法定展示及打印使用的客户昵称") @NotBlank @Size(max = 32) String customerNickname, + @Schema(description = "Customer nickname / 客户昵称") @NotBlank @Size(max = 32) String customerNickname, @NotBlank String legalName, @Size(max = 64) String legalRepresentative, @NotBlank String contactName, @@ -146,6 +146,6 @@ public final class TenantDtos { String internalRemark, LocalDateTime createdAt, LocalDateTime approvedAt) { } /** Full customer contact summary for trusted internal finance read models. */ - public record FinanceCustomerSummary(Long id, String tenantCode, String tenantName, String customerNickname, String status, + public record FinanceCustomerSummary(Long id, String tenantCode, String tenantName, String status, String contactName, String contactPhone) { } } diff --git a/iam/src/main/java/com/baiyue/iam/service/TenantService.java b/iam/src/main/java/com/baiyue/iam/service/TenantService.java index f4c4abecd..0f0a7809a 100644 --- a/iam/src/main/java/com/baiyue/iam/service/TenantService.java +++ b/iam/src/main/java/com/baiyue/iam/service/TenantService.java @@ -224,7 +224,7 @@ public class TenantService { public PageResult pageFinanceCustomers(long page, long size, String keyword, String status, Long customerId) { PageResult source = repository.pageFinanceCustomers(page, size, keyword, status, customerId); return new PageResult<>(source.records().stream().map(tenant -> new FinanceCustomerSummary( - tenant.getId(), tenant.getTenantCode(), tenant.getTenantName(), tenant.getCustomerNickname(), tenant.getStatus(), + tenant.getId(), tenant.getTenantCode(), tenant.getTenantName(), tenant.getStatus(), tenant.getContactName(), tenant.getContactPhone())).toList(), source.page(), source.size(), source.total(), source.pages()); } diff --git a/iam/src/main/resources/db/iam.sql b/iam/src/main/resources/db/iam.sql index 5adbae391..333c94552 100644 --- a/iam/src/main/resources/db/iam.sql +++ b/iam/src/main/resources/db/iam.sql @@ -9,7 +9,7 @@ CREATE TABLE IF NOT EXISTS iam_tenant ( id BIGINT NOT NULL COMMENT '客户主档ID(雪花ID);0保留为平台技术作用域', tenant_code VARCHAR(8) NOT NULL COMMENT '客户编号:企业客户固定五位数字,平台技术主体为PLATFORM', tenant_name VARCHAR(128) NOT NULL COMMENT '客户企业名称', - customer_nickname VARCHAR(32) NOT NULL COMMENT '客户昵称:非法定展示及打印使用,创建时默认取公司名称中文拼音大写首字母', + customer_nickname VARCHAR(32) NOT NULL COMMENT '客户昵称:创建时默认取公司名称中文拼音大写首字母,可修改', tenant_type VARCHAR(20) NOT NULL DEFAULT 'MERCHANT' COMMENT '主体类型:MERCHANT企业客户', status VARCHAR(20) NOT NULL DEFAULT 'PROFILE_REQUIRED' COMMENT '客户状态:PROFILE_REQUIRED待完善资料、PENDING待审核、ACTIVE正常、REJECTED已驳回、DISABLED已停用、ARCHIVED已归档', dimension_initialization_status VARCHAR(16) NOT NULL DEFAULT 'READY' COMMENT '默认尺寸初始化状态:PENDING待处理、READY已就绪、FAILED失败', diff --git a/iam/src/main/resources/openapi/iam-v1.yaml b/iam/src/main/resources/openapi/iam-v1.yaml index eb7c7d831..dd8fce05a 100644 --- a/iam/src/main/resources/openapi/iam-v1.yaml +++ b/iam/src/main/resources/openapi/iam-v1.yaml @@ -1311,7 +1311,7 @@ components: id: {type: string, pattern: '^\d+$', example: '190000000000000001'} tenantCode: {type: string, pattern: '^\d{5}$', example: '00001'} tenantName: {type: string} - customerNickname: {type: string, maxLength: 32, description: 客户昵称;非法定展示及打印使用} + customerNickname: {type: string, maxLength: 32, description: 客户昵称} status: {type: string, enum: [PROFILE_REQUIRED, PENDING, ACTIVE, REJECTED, DISABLED, ARCHIVED]} dimensionInitializationStatus: {type: string, enum: [PENDING, READY, FAILED], description: 客户默认尺寸初始化状态;未 READY 时依赖该配置的业务失败关闭} legalName: {type: string} @@ -1345,12 +1345,11 @@ components: updatedAt: {type: string, format: date-time} FinanceCustomerSummary: type: object - required: [id, tenantCode, tenantName, customerNickname, status] + required: [id, tenantCode, tenantName, status] properties: id: {type: string, pattern: '^\d+$'} tenantCode: {type: string, pattern: '^\d{5}$', example: '00001'} tenantName: {type: string} - customerNickname: {type: string, maxLength: 32, description: 非法定展示及打印使用的客户昵称} status: {type: string, enum: [ACTIVE, DISABLED]} contactName: {type: string, nullable: true} contactPhone: {type: string, nullable: true} @@ -1492,7 +1491,7 @@ components: required: [tenantName, customerNickname, legalName, contactName, contactPhone] properties: tenantName: {type: string} - customerNickname: {type: string, maxLength: 32, description: 客户昵称;非法定展示及打印使用} + customerNickname: {type: string, maxLength: 32, description: 客户昵称} legalName: {type: string} legalRepresentative: {type: string, maxLength: 64, nullable: true, description: 选填} contactName: {type: string} diff --git a/iam/src/test/java/com/baiyue/iam/service/TenantServiceTest.java b/iam/src/test/java/com/baiyue/iam/service/TenantServiceTest.java index d6582f012..4b8e6074e 100644 --- a/iam/src/test/java/com/baiyue/iam/service/TenantServiceTest.java +++ b/iam/src/test/java/com/baiyue/iam/service/TenantServiceTest.java @@ -339,7 +339,7 @@ class TenantServiceTest { } @Test - void customerNicknameDefaultsToFirstChineseCharacterAndAcceptsManualValue() { + void customerNicknameDefaultsToUppercasePinyinInitialsAndAcceptsManualValue() { assertEquals("SZWLYXGS", TenantService.resolveCustomerNickname(null, "ABC 深圳物流有限公司")); assertEquals("SZWL", TenantService.resolveCustomerNickname(null, "深圳物流")); assertEquals("A", TenantService.resolveCustomerNickname(" ", "ABC Logistics"));