Files
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

105 lines
2.5 KiB
Go

package contentlibser
import (
"time"
"91porn-server/common/stderr"
"91porn-server/models/commod"
"91porn-server/models/v/chatrobotmod"
"91porn-server/models/v/contentlibmod"
"91porn-server/web/webg"
"go.mongodb.org/mongo-driver/bson/primitive"
)
type ObjectID = primitive.ObjectID
const RobotContentSet = "robot_content" // 机器人聊天内容集合
// 获取内容列表
func GetContentList(param contentlibmod.ReqContentList) (code stderr.Code, data interface{}, err error) {
var skip = int64((param.PageNumber - 1) * param.PageSize)
var limit = int64(param.PageSize)
total, cList, err := contentlibmod.GetContentList(param.RobotType, skip, limit)
if err != nil {
code = stderr.Failure
return
}
if cList == nil {
data = commod.ListResp{List: []contentlibmod.RespList{}}
} else {
list := make([]contentlibmod.RespList, len(cList))
for i, v := range cList {
list[i] = contentlibmod.RespList(v)
}
data = commod.ListResp{List: list, Total: total}
}
code = stderr.Success
return
}
// 增加机器人聊天内容
func AddChatContent(param contentlibmod.ReqContentAdd) (code stderr.Code, data interface{}, err error) {
// 检查类型是否有效
switch param.RobotType {
case chatrobotmod.Comment:
default:
code = stderr.RobotTypeInvalid
return
}
// 内容不能为空
if param.Content == "" {
code = stderr.RobotContentIsNull
return
}
var doc = contentlibmod.ContentLibrary{
RobotType: param.RobotType,
Content: param.Content,
CreatedAt: time.Now(),
}
// 添加到redis
if _, err = webg.Redis.SAdd(RobotContentSet, param.Content); err != nil {
code = stderr.Failure
return
}
if err = contentlibmod.Insert(doc); err != nil {
code = stderr.Failure
return
}
code = stderr.Success
return
}
// 删除内容
func DeleteChatContent(param contentlibmod.ReqContentDel) (code stderr.Code, data interface{}, err error) {
if param.IDS == nil || len(param.IDS) == 0 {
code = stderr.RobotContentDelParamIsNull
return
}
// 获取内容
cList, err := contentlibmod.GetContentListByIDS(param.IDS)
if err != nil {
code = stderr.Failure
return
}
if len(cList) == 0 {
code = stderr.Failure
return
}
contents := make([]string, len(cList))
for i, v := range cList {
contents[i] = v.Content
}
// 从redis中移除
if _, err = webg.Redis.SRem(RobotContentSet, contents); err != nil {
code = stderr.Failure
return
}
if err = contentlibmod.DeleteByIDS(param.IDS); err != nil {
code = stderr.Failure
return
}
code = stderr.Success
return
}