1.0
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
package events
|
||||
|
||||
import (
|
||||
"awesomeProject/internal/config"
|
||||
"log"
|
||||
"sync"
|
||||
)
|
||||
|
||||
// ConfigEventManager 配置事件管理器
|
||||
type ConfigEventManager struct {
|
||||
handlers map[string][]config.ConfigEventHandler // key: config_key, value: handlers
|
||||
mutex sync.RWMutex
|
||||
}
|
||||
|
||||
var (
|
||||
configEventManager *ConfigEventManager
|
||||
once sync.Once
|
||||
)
|
||||
|
||||
// GetConfigEventManager 获取配置事件管理器单例
|
||||
func GetConfigEventManager() *ConfigEventManager {
|
||||
once.Do(func() {
|
||||
configEventManager = &ConfigEventManager{
|
||||
handlers: make(map[string][]config.ConfigEventHandler),
|
||||
}
|
||||
})
|
||||
return configEventManager
|
||||
}
|
||||
|
||||
// RegisterHandler 注册配置事件处理器
|
||||
func (cem *ConfigEventManager) RegisterHandler(handler config.ConfigEventHandler) {
|
||||
cem.mutex.Lock()
|
||||
defer cem.mutex.Unlock()
|
||||
|
||||
configKeys := handler.GetConfigKeys()
|
||||
for _, key := range configKeys {
|
||||
if cem.handlers[key] == nil {
|
||||
cem.handlers[key] = []config.ConfigEventHandler{}
|
||||
}
|
||||
cem.handlers[key] = append(cem.handlers[key], handler)
|
||||
}
|
||||
|
||||
log.Printf("注册配置事件处理器,监听配置: %v", configKeys)
|
||||
}
|
||||
|
||||
// TriggerEvent 触发配置变更事件
|
||||
func (cem *ConfigEventManager) TriggerEvent(event config.ConfigEvent) {
|
||||
cem.mutex.RLock()
|
||||
handlers := cem.handlers[event.ConfigKey]
|
||||
cem.mutex.RUnlock()
|
||||
|
||||
if len(handlers) == 0 {
|
||||
log.Printf("配置 %s 无对应的事件处理器", event.ConfigKey)
|
||||
return
|
||||
}
|
||||
|
||||
log.Printf("触发配置变更事件: %s, 旧值: %v, 新值: %v", event.ConfigKey, event.OldValue, event.NewValue)
|
||||
|
||||
// 并发处理事件,避免阻塞
|
||||
for _, handler := range handlers {
|
||||
go func(h config.ConfigEventHandler) {
|
||||
if err := h.Handle(event); err != nil {
|
||||
log.Printf("处理配置事件失败: %s, 错误: %v", event.ConfigKey, err)
|
||||
}
|
||||
}(handler)
|
||||
}
|
||||
}
|
||||
|
||||
// ListRegisteredHandlers 列出已注册的处理器(用于调试)
|
||||
func (cem *ConfigEventManager) ListRegisteredHandlers() map[string]int {
|
||||
cem.mutex.RLock()
|
||||
defer cem.mutex.RUnlock()
|
||||
|
||||
result := make(map[string]int)
|
||||
for key, handlers := range cem.handlers {
|
||||
result[key] = len(handlers)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,168 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"awesomeProject/internal/common"
|
||||
"awesomeProject/internal/config"
|
||||
"awesomeProject/internal/models"
|
||||
"fmt"
|
||||
"gorm.io/gorm"
|
||||
"log"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// PriceConfigHandler 价格配置变更处理器
|
||||
type PriceConfigHandler struct{}
|
||||
|
||||
// GetConfigKeys 返回该处理器关心的配置键
|
||||
func (h *PriceConfigHandler) GetConfigKeys() []string {
|
||||
return []string{
|
||||
config.ConfigPriceIncreaseRate,
|
||||
config.ConfigMinSalePrice,
|
||||
}
|
||||
}
|
||||
|
||||
// Handle 处理配置变更事件
|
||||
func (h *PriceConfigHandler) Handle(event config.ConfigEvent) error {
|
||||
switch event.ConfigKey {
|
||||
case config.ConfigPriceIncreaseRate:
|
||||
return h.handlePriceIncreaseRateChange(event)
|
||||
case config.ConfigMinSalePrice:
|
||||
return h.handleMinSalePriceChange(event)
|
||||
default:
|
||||
return fmt.Errorf("未知的配置键: %s", event.ConfigKey)
|
||||
}
|
||||
}
|
||||
|
||||
// handlePriceIncreaseRateChange 处理价格增长率变更
|
||||
func (h *PriceConfigHandler) handlePriceIncreaseRateChange(event config.ConfigEvent) error {
|
||||
log.Printf("价格增长率配置变更: %v -> %v", event.OldValue, event.NewValue)
|
||||
|
||||
// 解析新的增长率
|
||||
newRateStr, ok := event.NewValue.(string)
|
||||
if !ok {
|
||||
return fmt.Errorf("价格增长率配置值类型错误")
|
||||
}
|
||||
|
||||
newRate, err := strconv.ParseFloat(newRateStr, 64)
|
||||
if err != nil {
|
||||
return fmt.Errorf("价格增长率配置值格式错误: %v", err)
|
||||
}
|
||||
|
||||
db := common.GetDB()
|
||||
|
||||
var secondList []models.SecondaryProduct
|
||||
result := db.Where("status = ? AND quantity > ?", 1, 0).Find(&secondList) // 修正:传递切片指针而不是值
|
||||
if result.Error != nil {
|
||||
log.Printf("查询失败: %v", result.Error)
|
||||
return result.Error
|
||||
}
|
||||
|
||||
// 如果没有找到符合条件的记录,直接返回
|
||||
if len(secondList) == 0 {
|
||||
log.Printf("没有找到需要更新的二级商品")
|
||||
return nil
|
||||
}
|
||||
tx := db.Begin()
|
||||
|
||||
for _, product := range secondList {
|
||||
// 检查商品是否有关联的仓库记录
|
||||
if product.UserWarehouseID == 0 {
|
||||
log.Printf("二级商品 ID: %d 没有关联的仓库记录,跳过", product.ID)
|
||||
continue
|
||||
}
|
||||
|
||||
var warehouse models.UserWarehouse
|
||||
if err := tx.Where("id = ?", product.UserWarehouseID).First(&warehouse).Error; err != nil {
|
||||
tx.Rollback()
|
||||
log.Printf("查询仓库记录失败,ID: %d, 错误: %v", product.UserWarehouseID, err)
|
||||
return err
|
||||
}
|
||||
|
||||
newWarehousePrice := warehouse.PurchasePrice + newRate
|
||||
if err := tx.Model(&models.UserWarehouse{}).Where("id = ?", product.UserWarehouseID).
|
||||
Update("quantity", product.Quantity+warehouse.Quantity).Error; err != nil {
|
||||
tx.Rollback()
|
||||
log.Printf("更新仓库价格失败,ID: %d, 错误: %v", product.UserWarehouseID, err)
|
||||
return err
|
||||
}
|
||||
|
||||
log.Printf("已更新仓库商品 ID: %d 的价格,新价格: %.2f", product.UserWarehouseID, newWarehousePrice)
|
||||
|
||||
tx.Model(&models.SecondaryProduct{}).Where("id = ?", product.ID).Update("status", 0)
|
||||
}
|
||||
|
||||
tx.Model(&models.UserWarehouse{}).Where("quantity>?", 0).Update("status", 1).
|
||||
Update("warehouse_price", gorm.Expr("purchase_price + ?", newRate))
|
||||
tx.Commit()
|
||||
if err := tx.Commit().Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Printf("价格增长率已更新为: %.2f%%", newRate)
|
||||
return nil
|
||||
}
|
||||
|
||||
// handleMinSalePriceChange 处理最低销售价格变更
|
||||
func (h *PriceConfigHandler) handleMinSalePriceChange(event config.ConfigEvent) error {
|
||||
log.Printf("最低销售价格配置变更: %v -> %v", event.OldValue, event.NewValue)
|
||||
|
||||
// 解析新的最低价格
|
||||
newPriceStr, ok := event.NewValue.(string)
|
||||
if !ok {
|
||||
return fmt.Errorf("最低销售价格配置值类型错误")
|
||||
}
|
||||
|
||||
newPrice, err := strconv.ParseFloat(newPriceStr, 64)
|
||||
if err != nil {
|
||||
return fmt.Errorf("最低销售价格配置值格式错误: %v", err)
|
||||
}
|
||||
|
||||
// 验证价格范围
|
||||
if newPrice < 0 {
|
||||
return fmt.Errorf("最低销售价格不能为负数")
|
||||
}
|
||||
|
||||
// 业务逻辑:检查并更新现有的低于最低价格的商品
|
||||
if err := h.updateLowPriceProducts(newPrice); err != nil {
|
||||
log.Printf("更新低价商品失败: %v", err)
|
||||
// 不返回错误,避免阻塞其他处理器
|
||||
}
|
||||
|
||||
log.Printf("最低销售价格已更新为: %.2f", newPrice)
|
||||
return nil
|
||||
}
|
||||
|
||||
// updateLowPriceProducts 更新低于最低价格的商品
|
||||
func (h *PriceConfigHandler) updateLowPriceProducts(minPrice float64) error {
|
||||
db := common.GetDB()
|
||||
|
||||
// 查找低于最低价格的二级商品
|
||||
var lowPriceProducts []models.SecondaryProduct
|
||||
err := db.Where("sale_price < ? AND status = 1", minPrice).Find(&lowPriceProducts).Error
|
||||
if err != nil {
|
||||
return fmt.Errorf("查询低价商品失败: %v", err)
|
||||
}
|
||||
|
||||
if len(lowPriceProducts) == 0 {
|
||||
log.Printf("没有发现低于最低价格(%.2f)的商品", minPrice)
|
||||
return nil
|
||||
}
|
||||
|
||||
// 批量更新这些商品的状态为下架
|
||||
result := db.Model(&models.SecondaryProduct{}).
|
||||
Where("sale_price < ? AND status = 1", minPrice).
|
||||
Update("status", 0)
|
||||
|
||||
if result.Error != nil {
|
||||
return fmt.Errorf("批量下架低价商品失败: %v", result.Error)
|
||||
}
|
||||
|
||||
log.Printf("已下架 %d 个低于最低价格的商品", result.RowsAffected)
|
||||
|
||||
// 这里可以添加更多逻辑,比如:
|
||||
// 1. 发送通知给商品卖家
|
||||
// 2. 记录下架日志
|
||||
// 3. 更新相关统计数据
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"awesomeProject/internal/config"
|
||||
"fmt"
|
||||
"log"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// SystemConfigHandler 系统配置变更处理器
|
||||
type SystemConfigHandler struct{}
|
||||
|
||||
// GetConfigKeys 返回该处理器关心的配置键
|
||||
func (h *SystemConfigHandler) GetConfigKeys() []string {
|
||||
return []string{
|
||||
config.ConfigEnableRegistration,
|
||||
config.ConfigMaintenanceMode,
|
||||
config.ConfigSiteName,
|
||||
config.ConfigSiteUrl,
|
||||
}
|
||||
}
|
||||
|
||||
// Handle 处理配置变更事件
|
||||
func (h *SystemConfigHandler) Handle(event config.ConfigEvent) error {
|
||||
switch event.ConfigKey {
|
||||
case config.ConfigEnableRegistration:
|
||||
return h.handleRegistrationToggle(event)
|
||||
case config.ConfigMaintenanceMode:
|
||||
return h.handleMaintenanceModeToggle(event)
|
||||
case config.ConfigSiteName:
|
||||
return h.handleSiteNameChange(event)
|
||||
case config.ConfigSiteUrl:
|
||||
return h.handleSiteUrlChange(event)
|
||||
default:
|
||||
return fmt.Errorf("未知的配置键: %s", event.ConfigKey)
|
||||
}
|
||||
}
|
||||
|
||||
// handleRegistrationToggle 处理注册开关变更
|
||||
func (h *SystemConfigHandler) handleRegistrationToggle(event config.ConfigEvent) error {
|
||||
newValueStr, ok := event.NewValue.(string)
|
||||
if !ok {
|
||||
return fmt.Errorf("注册开关配置值类型错误")
|
||||
}
|
||||
|
||||
enabled, err := strconv.ParseBool(newValueStr)
|
||||
if err != nil {
|
||||
return fmt.Errorf("注册开关配置值格式错误: %v", err)
|
||||
}
|
||||
|
||||
if enabled {
|
||||
log.Printf("用户注册已开启")
|
||||
// 这里可以添加逻辑,比如:
|
||||
// 1. 清理注册限制缓存
|
||||
// 2. 发送系统通知
|
||||
// 3. 更新前端配置缓存
|
||||
} else {
|
||||
log.Printf("用户注册已关闭")
|
||||
// 这里可以添加逻辑,比如:
|
||||
// 1. 设置注册限制
|
||||
// 2. 通知管理员
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// handleMaintenanceModeToggle 处理维护模式开关
|
||||
func (h *SystemConfigHandler) handleMaintenanceModeToggle(event config.ConfigEvent) error {
|
||||
newValueStr, ok := event.NewValue.(string)
|
||||
if !ok {
|
||||
return fmt.Errorf("维护模式配置值类型错误")
|
||||
}
|
||||
|
||||
enabled, err := strconv.ParseBool(newValueStr)
|
||||
if err != nil {
|
||||
return fmt.Errorf("维护模式配置值格式错误: %v", err)
|
||||
}
|
||||
|
||||
if enabled {
|
||||
log.Printf("系统进入维护模式")
|
||||
// 这里可以添加逻辑,比如:
|
||||
// 1. 断开非管理员用户连接
|
||||
// 2. 停止定时任务
|
||||
// 3. 发送维护通知
|
||||
// 4. 设置维护页面
|
||||
} else {
|
||||
log.Printf("系统退出维护模式")
|
||||
// 这里可以添加逻辑,比如:
|
||||
// 1. 恢复正常服务
|
||||
// 2. 重启定时任务
|
||||
// 3. 发送恢复通知
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// handleSiteNameChange 处理网站名称变更
|
||||
func (h *SystemConfigHandler) handleSiteNameChange(event config.ConfigEvent) error {
|
||||
newName, ok := event.NewValue.(string)
|
||||
if !ok {
|
||||
return fmt.Errorf("网站名称配置值类型错误")
|
||||
}
|
||||
|
||||
if len(newName) == 0 {
|
||||
return fmt.Errorf("网站名称不能为空")
|
||||
}
|
||||
|
||||
log.Printf("网站名称已更新: %s -> %s", event.OldValue, newName)
|
||||
|
||||
// 这里可以添加逻辑,比如:
|
||||
// 1. 更新邮件模板中的网站名称
|
||||
// 2. 刷新前端缓存
|
||||
// 3. 更新SEO相关配置
|
||||
// 4. 发送更新通知
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// handleSiteUrlChange 处理网站地址变更
|
||||
func (h *SystemConfigHandler) handleSiteUrlChange(event config.ConfigEvent) error {
|
||||
newUrl, ok := event.NewValue.(string)
|
||||
if !ok {
|
||||
return fmt.Errorf("网站地址配置值类型错误")
|
||||
}
|
||||
|
||||
if len(newUrl) == 0 {
|
||||
return fmt.Errorf("网站地址不能为空")
|
||||
}
|
||||
|
||||
// 简单的URL格式验证
|
||||
if len(newUrl) < 7 || (newUrl[:7] != "http://" && newUrl[:8] != "https://") {
|
||||
return fmt.Errorf("网站地址格式不正确,必须以http://或https://开头")
|
||||
}
|
||||
|
||||
log.Printf("网站地址已更新: %s -> %s", event.OldValue, newUrl)
|
||||
|
||||
// 这里可以添加逻辑,比如:
|
||||
// 1. 更新CORS配置
|
||||
// 2. 更新回调URL
|
||||
// 3. 刷新API文档
|
||||
// 4. 更新第三方服务配置
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,182 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"awesomeProject/internal/common"
|
||||
"awesomeProject/internal/config"
|
||||
"awesomeProject/internal/models"
|
||||
"fmt"
|
||||
"log"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// UserConfigHandler 用户配置变更处理器
|
||||
type UserConfigHandler struct{}
|
||||
|
||||
// GetConfigKeys 返回该处理器关心的配置键
|
||||
func (h *UserConfigHandler) GetConfigKeys() []string {
|
||||
return []string{
|
||||
config.ConfigDefaultUserScore,
|
||||
config.ConfigReferralBonus,
|
||||
config.ConfigMaxUserLevel,
|
||||
config.ConfigEnableRegistration,
|
||||
}
|
||||
}
|
||||
|
||||
// Handle 处理配置变更事件
|
||||
func (h *UserConfigHandler) Handle(event config.ConfigEvent) error {
|
||||
switch event.ConfigKey {
|
||||
case config.ConfigDefaultUserScore:
|
||||
return h.handleDefaultUserScoreChange(event)
|
||||
case config.ConfigReferralBonus:
|
||||
return h.handleReferralBonusChange(event)
|
||||
case config.ConfigMaxUserLevel:
|
||||
return h.handleMaxUserLevelChange(event)
|
||||
case config.ConfigEnableRegistration:
|
||||
return h.handleRegistrationToggle(event)
|
||||
default:
|
||||
return fmt.Errorf("未知的配置键: %s", event.ConfigKey)
|
||||
}
|
||||
}
|
||||
|
||||
// handleDefaultUserScoreChange 处理默认用户积分变更
|
||||
func (h *UserConfigHandler) handleDefaultUserScoreChange(event config.ConfigEvent) error {
|
||||
newScoreStr, ok := event.NewValue.(string)
|
||||
if !ok {
|
||||
return fmt.Errorf("默认用户积分配置值类型错误")
|
||||
}
|
||||
|
||||
newScore, err := strconv.ParseFloat(newScoreStr, 64)
|
||||
if err != nil {
|
||||
return fmt.Errorf("默认用户积分配置值格式错误: %v", err)
|
||||
}
|
||||
|
||||
if newScore < 0 {
|
||||
return fmt.Errorf("默认用户积分不能为负数")
|
||||
}
|
||||
|
||||
log.Printf("默认用户积分已更新: %v -> %.2f", event.OldValue, newScore)
|
||||
|
||||
// 这里可以添加业务逻辑,比如:
|
||||
// 1. 更新新注册用户的积分计算逻辑
|
||||
// 2. 发送通知给管理员
|
||||
// 3. 更新缓存中的默认积分值
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// handleReferralBonusChange 处理推荐奖励变更
|
||||
func (h *UserConfigHandler) handleReferralBonusChange(event config.ConfigEvent) error {
|
||||
newBonusStr, ok := event.NewValue.(string)
|
||||
if !ok {
|
||||
return fmt.Errorf("推荐奖励配置值类型错误")
|
||||
}
|
||||
|
||||
newBonus, err := strconv.ParseFloat(newBonusStr, 64)
|
||||
if err != nil {
|
||||
return fmt.Errorf("推荐奖励配置值格式错误: %v", err)
|
||||
}
|
||||
|
||||
if newBonus < 0 {
|
||||
return fmt.Errorf("推荐奖励不能为负数")
|
||||
}
|
||||
|
||||
log.Printf("推荐奖励已更新: %v -> %.2f", event.OldValue, newBonus)
|
||||
|
||||
// 这里可以添加业务逻辑,比如:
|
||||
// 1. 重新计算推荐奖励策略
|
||||
// 2. 发送通知给有推荐关系的用户
|
||||
// 3. 更新推荐系统的计算规则
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// handleMaxUserLevelChange 处理最大用户等级变更
|
||||
func (h *UserConfigHandler) handleMaxUserLevelChange(event config.ConfigEvent) error {
|
||||
newLevelStr, ok := event.NewValue.(string)
|
||||
if !ok {
|
||||
return fmt.Errorf("最大用户等级配置值类型错误")
|
||||
}
|
||||
|
||||
newLevel, err := strconv.Atoi(newLevelStr)
|
||||
if err != nil {
|
||||
return fmt.Errorf("最大用户等级配置值格式错误: %v", err)
|
||||
}
|
||||
|
||||
if newLevel < 1 {
|
||||
return fmt.Errorf("最大用户等级不能小于1")
|
||||
}
|
||||
|
||||
log.Printf("最大用户等级已更新: %v -> %d", event.OldValue, newLevel)
|
||||
|
||||
// 检查是否有用户等级超过新的最大等级
|
||||
if err := h.checkAndAdjustUserLevels(newLevel); err != nil {
|
||||
log.Printf("调整用户等级失败: %v", err)
|
||||
// 不返回错误,避免阻塞其他处理器
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// handleRegistrationToggle 处理注册开关变更
|
||||
func (h *UserConfigHandler) handleRegistrationToggle(event config.ConfigEvent) error {
|
||||
newValueStr, ok := event.NewValue.(string)
|
||||
if !ok {
|
||||
return fmt.Errorf("注册开关配置值类型错误")
|
||||
}
|
||||
|
||||
enabled, err := strconv.ParseBool(newValueStr)
|
||||
if err != nil {
|
||||
return fmt.Errorf("注册开关配置值格式错误: %v", err)
|
||||
}
|
||||
|
||||
if enabled {
|
||||
log.Printf("用户注册已开启")
|
||||
// 这里可以添加逻辑,比如:
|
||||
// 1. 清理注册限制缓存
|
||||
// 2. 发送开放注册通知
|
||||
// 3. 更新前端注册页面状态
|
||||
} else {
|
||||
log.Printf("用户注册已关闭")
|
||||
// 这里可以添加逻辑,比如:
|
||||
// 1. 设置注册限制
|
||||
// 2. 显示注册关闭页面
|
||||
// 3. 通知相关管理员
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// checkAndAdjustUserLevels 检查并调整超过最大等级的用户
|
||||
func (h *UserConfigHandler) checkAndAdjustUserLevels(maxLevel int) error {
|
||||
db := common.GetDB()
|
||||
|
||||
// 查找等级超过最大等级的用户
|
||||
var highLevelUsers []models.User
|
||||
err := db.Where("user_level > ?", maxLevel).Find(&highLevelUsers).Error
|
||||
if err != nil {
|
||||
return fmt.Errorf("查询高等级用户失败: %v", err)
|
||||
}
|
||||
|
||||
if len(highLevelUsers) == 0 {
|
||||
log.Printf("没有发现超过最大等级(%d)的用户", maxLevel)
|
||||
return nil
|
||||
}
|
||||
|
||||
// 批量调整这些用户的等级
|
||||
result := db.Model(&models.User{}).
|
||||
Where("user_level > ?", maxLevel).
|
||||
Update("user_level", maxLevel)
|
||||
|
||||
if result.Error != nil {
|
||||
return fmt.Errorf("批量调整用户等级失败: %v", result.Error)
|
||||
}
|
||||
|
||||
log.Printf("已调整 %d 个用户的等级到最大等级: %d", result.RowsAffected, maxLevel)
|
||||
|
||||
// 这里可以添加更多逻辑,比如:
|
||||
// 1. 发送等级调整通知给用户
|
||||
// 2. 记录等级变更日志
|
||||
// 3. 重新计算相关权益
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package events
|
||||
|
||||
import (
|
||||
"awesomeProject/internal/events/handlers"
|
||||
"log"
|
||||
)
|
||||
|
||||
// InitEventSystem 初始化事件系统
|
||||
func InitEventSystem() {
|
||||
log.Println("初始化配置事件系统...")
|
||||
|
||||
eventManager := GetConfigEventManager()
|
||||
|
||||
// 注册价格配置处理器
|
||||
priceHandler := &handlers.PriceConfigHandler{}
|
||||
eventManager.RegisterHandler(priceHandler)
|
||||
|
||||
// 注册系统配置处理器
|
||||
systemHandler := &handlers.SystemConfigHandler{}
|
||||
eventManager.RegisterHandler(systemHandler)
|
||||
|
||||
// 注册用户配置处理器
|
||||
userHandler := &handlers.UserConfigHandler{}
|
||||
eventManager.RegisterHandler(userHandler)
|
||||
|
||||
// 可以继续注册更多处理器...
|
||||
// 例如:
|
||||
// orderHandler := &handlers.OrderConfigHandler{}
|
||||
// eventManager.RegisterHandler(orderHandler)
|
||||
|
||||
log.Printf("配置事件系统初始化完成,已注册处理器数量: %v", eventManager.ListRegisteredHandlers())
|
||||
}
|
||||
Reference in New Issue
Block a user