feat: add ExternalType to customer identity model and update related services and enums

This commit is contained in:
mlogclub
2026-04-27 18:07:56 +08:00
parent 1bb4608051
commit feecbdf1d0
4 changed files with 31 additions and 0 deletions
+1
View File
@@ -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。
+20
View File
@@ -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
@@ -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,
+9
View File
@@ -82,6 +82,15 @@ export const ExternalSourceLabels: Record<ExternalSource, string> = {
[ExternalSource.WxWorkKF]: "企业微信客服",
}
export enum ExternalType {
Guest = "guest",
User = "user",
}
export const ExternalTypeLabels: Record<ExternalType, string> = {
[ExternalType.Guest]: "访客",
[ExternalType.User]: "用户",
}
export enum Gender {
Unknown = 0,
Male = 1,