105 lines
2.5 KiB
Go
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
|
|
}
|