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

128 lines
3.4 KiB
Go

package feedbackmod
import (
"fmt"
"time"
"91porn-server/common"
"91porn-server/common/db"
"91porn-server/common/log"
"91porn-server/common/stderr"
"91porn-server/models"
"91porn-server/models/commod"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
)
var mdb *db.MongoDB
const table = models.FeedBack
func coll(t *db.MongoTool) *db.MongoTool {
if t == nil {
return mdb.Coll(table)
}
return t.Coll(table)
}
func initIndex() {
many := []mongo.IndexModel{ //batch set indexes //value is the type 1 or -1
{
Keys: bson.D{{Key: "uid", Value: 1}},
},
{
Keys: bson.D{{Key: "createdAt", Value: 1}},
},
}
if _, err := coll(nil).CreateIndex(many); err != nil {
panic(fmt.Sprintf("%s model set index err ==>[%+v]", table, err))
}
}
// FeedBackInsert 新增反馈意见
func FeedBackInsert(f FeedBack) (code stderr.Code, err error) {
f.CreatedAt = time.Now()
f.UpdatedAt = time.Now()
if _, err = coll(nil).InsertOne(f); err != nil {
code = stderr.ErrDbInsertError
log.Error(fmt.Sprintf("[METHOD-%s]==> Model %s %s fail error:%+v:", "FeedBackInsert", table, "InsertOne", err))
return
}
return stderr.Success, nil
}
// FeedBackUpdate 修改反馈意见
func FeedBackUpdate(id primitive.ObjectID, doc FeedBackUpdateDoc) (err error) {
doc.UpdatedAt = time.Now()
if _, err = coll(nil).UpdateOne(bson.M{"_id": id}, bson.M{
"$set": doc,
}); err != nil {
log.Error(fmt.Sprintf("[METHOD-%s]==> Model %s %s fail error:%+v:", "FeedBackUpdate", table, "UpdateOne", err))
return
}
return
}
// FeedBackDelete 批量删除反馈意见
func FeedBackDelete(ids []primitive.ObjectID) (err error) {
if _, err = coll(nil).DeleteMany(bson.M{"_id": bson.M{"$in": ids}}); err != nil {
log.ZapLog.Error(fmt.Sprintf("[METHOD-%s]==> Model %s %s fail error:%+v:", "FeedBackDelete", table, "DeleteMany", err))
return
}
return
}
func GetFeedBackList(size, page uint64, uid uint64) (data []FeedBack, hasNext bool, err error) {
var feedBack []FeedBack
std := commod.StdQuery{
Page: &commod.PageBy{
CheckNext: true,
Num: page,
Size: size,
},
Order: &[]commod.OrderBy{{Key: "_id", Desc: true}},
}
if err = coll(nil).Find(&feedBack, bson.M{"uid": uid}, commod.ConvertToListQuery(std)); err != nil {
log.Error(fmt.Sprintf("[METHOD-%s]==> Model %s %s fail error:%+v:", "List", table, "Find", err))
return
}
if uint64(len(feedBack)) > size {
hasNext = true
feedBack = feedBack[:size]
}
return feedBack, hasNext, nil
}
// FeedBackList 根据类别条件 获反馈列表
func FeedBackList(param ListParam) (data WebResp, err error) {
var feedBack []FeedBack
std := commod.StdQuery{
Page: &commod.PageBy{
CheckNext: false,
Num: param.PageNumber,
Size: param.PageSize,
},
Order: &[]commod.OrderBy{{Key: "updatedAt", Desc: true}},
}
query, _ := common.ToBsonM(param.ListFilter)
if param.Content != "" {
query["content"] = bson.M{"$regex": param.Content, "$options": "i"}
}
total, err := coll(nil).Count(query)
if err != nil {
log.Error(fmt.Sprintf("[METHOD-%s]==> Model %s %s fail error:%+v:", "List", table, "Count", err))
return
}
if err = coll(nil).Find(&feedBack, query, commod.ConvertToListQuery(std)); err != nil {
log.Error(fmt.Sprintf("[METHOD-%s]==> Model %s %s fail error:%+v:", "List", table, "Find", err))
return
}
data.List = feedBack
data.Total = total
return data, nil
}