128 lines
3.4 KiB
Go
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
|
|
}
|