优化发布群配置与二维码池界面
This commit is contained in:
@@ -37,6 +37,7 @@ var defaultConfigs = []defaultConfig{
|
||||
{Key: postRentalNoticeConfigKey, Value: defaultPostRentalNoticeConfigValue(), Description: "租后须知配置 JSON"},
|
||||
{Key: "chat.default_support_admin_id", Value: "2", Description: "默认客服 ID(必须是启用状态的客服角色)"},
|
||||
{Key: "chat.auto_welcome_message", Value: "欢迎加入订单群聊!如有任何问题,请随时沟通。", Description: "建群后自动发送的欢迎话术"},
|
||||
{Key: "chat.listing_group_welcome", Value: "欢迎加入账号群!请号主扫描下方二维码加入企业微信群,方便客服与您及时联系。", Description: "发布群创建后自动发送的欢迎语"},
|
||||
{Key: homeAnnouncementsConfigKey, Value: defaultHomeAnnouncementsConfigValue(), Description: "移动端首页公告 JSON 数组"},
|
||||
{Key: homeBannersConfigKey, Value: defaultHomeBannersConfigValue(), Description: "移动端首页轮播图 JSON 数组"},
|
||||
{Key: publishOptionsConfigKey, Value: defaultPublishOptionsConfigValue(), Description: "发布页选项配置 JSON"},
|
||||
@@ -46,6 +47,7 @@ var defaultConfigs = []defaultConfig{
|
||||
var adminVisibleConfigKeys = []string{
|
||||
"chat.auto_welcome_message",
|
||||
"chat.default_support_admin_id",
|
||||
"chat.listing_group_welcome",
|
||||
"handoff.owner_return_confirm_timeout_minutes",
|
||||
"handoff.owner_submit_timeout_minutes",
|
||||
"handoff.renter_confirm_timeout_minutes",
|
||||
@@ -155,6 +157,11 @@ func (r *Repository) ensureDefaults(ctx context.Context) error {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if item.Key == "chat.listing_group_welcome" {
|
||||
if err := updateLegacyListingGroupWelcome(tx, item); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if item.Key == publishOptionsConfigKey {
|
||||
if err := updateLegacyPublishOptions(tx, item); err != nil {
|
||||
return err
|
||||
@@ -165,6 +172,26 @@ func (r *Repository) ensureDefaults(ctx context.Context) error {
|
||||
})
|
||||
}
|
||||
|
||||
func updateLegacyListingGroupWelcome(tx *gorm.DB, item defaultConfig) error {
|
||||
var row model.SystemConfig
|
||||
if err := tx.Where("`key` = ?", item.Key).First(&row).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
changed := false
|
||||
if isMojibakeText(row.Value) {
|
||||
row.Value = item.Value
|
||||
changed = true
|
||||
}
|
||||
if row.Description != item.Description {
|
||||
row.Description = item.Description
|
||||
changed = true
|
||||
}
|
||||
if !changed {
|
||||
return nil
|
||||
}
|
||||
return tx.Save(&row).Error
|
||||
}
|
||||
|
||||
func updateDefaultSupportConfig(tx *gorm.DB, item defaultConfig) error {
|
||||
var row model.SystemConfig
|
||||
if err := tx.Where("`key` = ?", item.Key).First(&row).Error; err != nil {
|
||||
@@ -260,6 +287,16 @@ func isLegacyPublishOptionsValue(value string) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func isMojibakeText(value string) bool {
|
||||
mojibakeMarkers := []string{"å", "æ", "ç", "è", "é", "ä", "ï¼", "ã€", "â"}
|
||||
for _, marker := range mojibakeMarkers {
|
||||
if strings.Contains(value, marker) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func appendAuditLog(tx *gorm.DB, actorID uint64, action string, bizID uint64, meta AuditMeta, detail map[string]any) error {
|
||||
return auditlog.Append(tx, auditlog.Entry{
|
||||
ActorType: "admin",
|
||||
|
||||
Reference in New Issue
Block a user