Files
wechat_ipad_pro/api/service/welcomeService.go
2026-02-17 13:06:23 +08:00

245 lines
6.0 KiB
Go

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,
}, "获取成功")
}