From feecbdf1d08595786f8b9f7830b9ca1540803816 Mon Sep 17 00:00:00 2001 From: mlogclub Date: Mon, 27 Apr 2026 18:07:56 +0800 Subject: [PATCH] feat: add ExternalType to customer identity model and update related services and enums --- internal/models/models.go | 1 + internal/pkg/enums/customer.go | 20 ++++++++++++++++++++ internal/services/conversation_service.go | 1 + web/lib/generated/enums.ts | 9 +++++++++ 4 files changed, 31 insertions(+) diff --git a/internal/models/models.go b/internal/models/models.go index 79e6aa9..d318b79 100644 --- a/internal/models/models.go +++ b/internal/models/models.go @@ -188,6 +188,7 @@ type Customer struct { type CustomerIdentity struct { ID int64 `gorm:"primaryKey;autoIncrement"` CustomerID int64 `gorm:"type:bigint;not null;uniqueIndex:uk_customer_external"` // 为所属客户ID。 + ExternalType enums.ExternalType `gorm:"type:varchar(30);not null;default:'guest';index"` // ExternalType 为外部身份类型:guest访客,user主动设置的用户信息。 ExternalSource enums.ExternalSource `gorm:"type:varchar(30);uniqueIndex:uk_customer_external"` // 为外部身份来源 ExternalID string `gorm:"type:varchar(128);index:idx_external_id;uniqueIndex:uk_customer_external"` // 为平台侧用户唯一ID,与访客 ExternalID 对齐。 RawProfile string `gorm:"type:text"` // 为第三方原始资料JSON。 diff --git a/internal/pkg/enums/customer.go b/internal/pkg/enums/customer.go index 2a7d153..ad1930a 100644 --- a/internal/pkg/enums/customer.go +++ b/internal/pkg/enums/customer.go @@ -6,6 +6,26 @@ func GetCustomerSourceTypeLabel(sourceType ExternalSource) string { return GetExternalSourceLabel(ExternalSource(sourceType)) } +// ExternalType 客户外部身份类型。 +type ExternalType string + +const ( + ExternalTypeGuest ExternalType = "guest" + ExternalTypeUser ExternalType = "user" +) + +var externalTypeLabelMap = map[ExternalType]string{ + ExternalTypeGuest: "访客", + ExternalTypeUser: "用户", +} + +func GetExternalTypeLabel(externalType ExternalType) string { + if s, ok := externalTypeLabelMap[externalType]; ok { + return s + } + return string(externalType) +} + // 联系方式类型 type ContactType string diff --git a/internal/services/conversation_service.go b/internal/services/conversation_service.go index 888ab21..e2df8ab 100644 --- a/internal/services/conversation_service.go +++ b/internal/services/conversation_service.go @@ -744,6 +744,7 @@ func (s *conversationService) LinkConversationCustomer(conversationID, customerI } else { idRow := &models.CustomerIdentity{ CustomerID: customerID, + ExternalType: enums.ExternalTypeGuest, ExternalSource: enums.ExternalSource(extSrc), ExternalID: extID, Status: enums.StatusOk, diff --git a/web/lib/generated/enums.ts b/web/lib/generated/enums.ts index 03de15e..c303f1e 100644 --- a/web/lib/generated/enums.ts +++ b/web/lib/generated/enums.ts @@ -82,6 +82,15 @@ export const ExternalSourceLabels: Record = { [ExternalSource.WxWorkKF]: "企业微信客服", } +export enum ExternalType { + Guest = "guest", + User = "user", +} +export const ExternalTypeLabels: Record = { + [ExternalType.Guest]: "访客", + [ExternalType.User]: "用户", +} + export enum Gender { Unknown = 0, Male = 1,