package service import ( "encoding/json" "xiawan/wx/api/req" "xiawan/wx/api/vo" "xiawan/wx/db" "github.com/gin-gonic/gin" ) // SetWelcomeService 设置欢迎词配置 func SetWelcomeService(queryKey string, m req.SetWelcomeModel) vo.DTO { // 获取现有配置,保留群聊列表 existingConfig := req.WelcomeConfig{ ChatRooms: []string{}, } command, err := db.QueryCommand(queryKey) if err == nil && command.B003Str != "" { err = json.Unmarshal([]byte(command.B003Str), &existingConfig) if err != nil { // 解析失败,使用空列表 existingConfig.ChatRooms = []string{} } } // 保留现有群聊列表 m.Config.ChatRooms = existingConfig.ChatRooms // 将欢迎词配置转换为JSON字符串 configJSON, err := json.Marshal(m.Config) if err != nil { return vo.NewFail("序列化欢迎词配置失败") } // 更新B003和B003Str enable := 0 if m.Config.Enable { enable = 1 } _, err = db.UpdateCommand(queryKey, "B003", enable, "") if err != nil { return vo.NewFail("更新欢迎词状态失败") } _, err = db.UpdateCommand(queryKey, "B003Str", 0, string(configJSON)) if err != nil { return vo.NewFail("更新欢迎词配置失败") } return vo.NewSuccess(nil, "设置成功") } // GetWelcomeService 获取欢迎词配置 func GetWelcomeService(queryKey string) vo.DTO { command, err := db.QueryCommand(queryKey) if err != nil { return vo.NewFail("查询欢迎词配置失败") } var config req.WelcomeConfig if command.B003Str != "" { err = json.Unmarshal([]byte(command.B003Str), &config) if err != nil { return vo.NewFail("解析欢迎词配置失败") } } // 设置启用状态 config.Enable = command.B003 == 1 return vo.NewSuccess(gin.H{ "config": config, }, "获取成功") } // SetAdminKeywordService 设置管理员关键词配置 func SetAdminKeywordService(queryKey string, m req.SetAdminKeywordModel) vo.DTO { // 将管理员关键词配置转换为JSON字符串 configJSON, err := json.Marshal(m.Config) if err != nil { return vo.NewFail("序列化管理员关键词配置失败") } // 更新B004和B004Str enable := 0 if m.Config.Enable { enable = 1 } _, err = db.UpdateCommand(queryKey, "B004", enable, "") if err != nil { return vo.NewFail("更新管理员关键词状态失败") } _, err = db.UpdateCommand(queryKey, "B004Str", 0, string(configJSON)) if err != nil { return vo.NewFail("更新管理员关键词配置失败") } return vo.NewSuccess(nil, "设置成功") } // GetAdminKeywordService 获取管理员关键词配置 func GetAdminKeywordService(queryKey string) vo.DTO { command, err := db.QueryCommand(queryKey) if err != nil { return vo.NewFail("查询管理员关键词配置失败") } var config req.AdminKeywordConfig if command.B004Str != "" { err = json.Unmarshal([]byte(command.B004Str), &config) if err != nil { return vo.NewFail("解析管理员关键词配置失败") } } // 设置启用状态 config.Enable = command.B004 == 1 return vo.NewSuccess(gin.H{ "config": config, }, "获取成功") } // SetKickKeywordService 设置踢人关键词配置 func SetKickKeywordService(queryKey string, m req.SetKickKeywordModel) vo.DTO { // 将踢人关键词配置转换为JSON字符串 configJSON, err := json.Marshal(m.Config) if err != nil { return vo.NewFail("序列化踢人关键词配置失败") } // 更新B006和B006Str enable := 0 if m.Config.Enable { enable = 1 } _, err = db.UpdateCommand(queryKey, "B006", enable, "") if err != nil { return vo.NewFail("更新踢人关键词状态失败") } _, err = db.UpdateCommand(queryKey, "B006Str", 0, string(configJSON)) if err != nil { return vo.NewFail("更新踢人关键词配置失败") } return vo.NewSuccess(nil, "设置成功") } // GetKickKeywordService 获取踢人关键词配置 func GetKickKeywordService(queryKey string) vo.DTO { command, err := db.QueryCommand(queryKey) if err != nil { return vo.NewFail("查询踢人关键词配置失败") } var config req.KickKeywordConfig if command.B006Str != "" { err = json.Unmarshal([]byte(command.B006Str), &config) if err != nil { return vo.NewFail("解析踢人关键词配置失败") } } // 设置启用状态 config.Enable = command.B006 == 1 return vo.NewSuccess(gin.H{ "config": config, }, "获取成功") } // SetInviteKeywordService 设置关键词邀请入群配置 func SetInviteKeywordService(queryKey string, m req.SetInviteKeywordModel) vo.DTO { // 获取现有配置,保留已设置的关键词对 existingConfig := req.InviteKeywordConfig{ Pairs: []req.InviteKeywordPair{}, } command, err := db.QueryCommand(queryKey) if err == nil && command.B005Str != "" { err = json.Unmarshal([]byte(command.B005Str), &existingConfig) if err != nil { // 解析失败,使用空列表 existingConfig.Pairs = []req.InviteKeywordPair{} } } // 保留现有关键词对列表 m.Config.Pairs = existingConfig.Pairs // 将关键词邀请入群配置转换为JSON字符串 configJSON, err := json.Marshal(m.Config) if err != nil { return vo.NewFail("序列化关键词邀请入群配置失败") } // 更新B005和B005Str enable := 0 if m.Config.Enable { enable = 1 } _, err = db.UpdateCommand(queryKey, "B005", enable, "") if err != nil { return vo.NewFail("更新关键词邀请入群状态失败") } _, err = db.UpdateCommand(queryKey, "B005Str", 0, string(configJSON)) if err != nil { return vo.NewFail("更新关键词邀请入群配置失败") } return vo.NewSuccess(nil, "设置成功") } // GetInviteKeywordService 获取关键词邀请入群配置 func GetInviteKeywordService(queryKey string) vo.DTO { command, err := db.QueryCommand(queryKey) if err != nil { return vo.NewFail("查询关键词邀请入群配置失败") } var config req.InviteKeywordConfig if command.B005Str != "" { err = json.Unmarshal([]byte(command.B005Str), &config) if err != nil { return vo.NewFail("解析关键词邀请入群配置失败") } } // 设置启用状态 config.Enable = command.B005 == 1 return vo.NewSuccess(gin.H{ "config": config, }, "获取成功") }