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 }