package api import ( "cs-agent/internal/pkg/dto/response" "cs-agent/internal/pkg/enums" "cs-agent/internal/pkg/errorsx" "cs-agent/internal/services" "github.com/kataras/iris/v12" "github.com/mlogclub/simple/web" ) type ChannelController struct { Ctx iris.Context } func (c *ChannelController) AnyConfig() *web.JsonResult { channel := services.ChannelService.GetEnabledChannel(c.Ctx) if channel == nil { return web.JsonErrorMsg("接入渠道未初始化") } cfg, err := resolveWidgetConfig(channel.ChannelType, channel.ConfigJSON) if err != nil { return web.JsonError(err) } ret := response.WidgetConfigResponse{ ChannelID: channel.ChannelID, ChannelType: channel.ChannelType, Title: cfg.Title, Subtitle: cfg.Subtitle, ThemeColor: cfg.ThemeColor, Position: cfg.Position, Width: cfg.Width, } return web.JsonData(ret) } type webLikeWidgetConfig struct { Title string Subtitle string ThemeColor string Position string Width string } func resolveWidgetConfig(channelType, rawConfig string) (*webLikeWidgetConfig, error) { switch channelType { case enums.ChannelTypeWeb: cfg, err := services.ChannelService.ParseWebChannelConfig(rawConfig) if err != nil { return nil, err } return &webLikeWidgetConfig{ Title: cfg.Title, Subtitle: cfg.Subtitle, ThemeColor: cfg.ThemeColor, Position: cfg.Position, Width: cfg.Width, }, nil case enums.ChannelTypeWechatMP: cfg, err := services.ChannelService.ParseWechatMPChannelConfig(rawConfig) if err != nil { return nil, err } return &webLikeWidgetConfig{ Title: cfg.Title, Subtitle: cfg.Subtitle, ThemeColor: cfg.ThemeColor, Position: "right", Width: "100%", }, nil default: return nil, errorsx.InvalidParam("该渠道不支持开放客服配置") } }