245 lines
6.0 KiB
Go
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,
|
|
}, "获取成功")
|
|
}
|