init: web_hgdjc_server

This commit is contained in:
2026-11-07 10:44:09 +08:00
commit 71a4f4e175
713 changed files with 147749 additions and 0 deletions
+113
View File
@@ -0,0 +1,113 @@
package playlettopicgroupmod
import (
"context"
"fmt"
"time"
"videoweb/pub/common/log"
"videoweb/pub/common/srvdef"
"videoweb/pub/mongos"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
var coll *mongos.Collection
// Init 初始化专题区块集合
func Init(ctx context.Context) {
coll = mongos.Shop.Coll("playlet_topic_group")
_, err := coll.CreateIndex(ctx, []mongo.IndexModel{{Keys: bson.D{
{Key: "status", Value: 1}, {Key: "rank", Value: -1}, {Key: "_id", Value: -1},
}}})
if err != nil {
panic(fmt.Sprintf("playlettopicgroupmod.Init index failed: %v", err))
}
}
// Insert 新增专题区块
func Insert(ctx context.Context, doc *PlayletTopicGroup) *srvdef.SrvErr {
doc.Id = mongos.Lid.PlayletTopicGroup.Get()
now := time.Now()
doc.CreatedAt, doc.UpdatedAt = now, now
if _, err := coll.InsertOne(ctx, doc); err != nil {
log.Warn("playlettopicgroupmod.Insert failed", log.E(err))
return srvdef.New(srvdef.ErrDbInsertError, "", "")
}
return nil
}
// FindOne 按ID查询专题区块
func FindOne(ctx context.Context, id int64) (*PlayletTopicGroup, *srvdef.SrvErr) {
var doc PlayletTopicGroup
if err := coll.FindOneEx(ctx, &doc, bson.M{"_id": id}); err != nil {
if err == mongo.ErrNoDocuments {
return nil, srvdef.New(srvdef.ErrNoData, "专题区块不存在", "")
}
log.Warn("playlettopicgroupmod.FindOne failed", log.E(err))
return nil, srvdef.New(srvdef.ErrDbQueryError, "", "")
}
return &doc, nil
}
// FindMany 查询专题区块列表
func FindMany(ctx context.Context, filter bson.M, opts ...*options.FindOptions) (PlayletTopicGroupList, *srvdef.SrvErr) {
list := make(PlayletTopicGroupList, 0)
opt := options.Find().SetSort(bson.D{
{Key: "rank", Value: -1}, {Key: "_id", Value: -1},
})
for _, extra := range opts {
if extra == nil {
continue
}
if extra.Skip != nil {
opt.SetSkip(*extra.Skip)
}
if extra.Limit != nil {
opt.SetLimit(*extra.Limit)
}
}
if err := coll.Find(ctx, &list, filter, opt); err != nil {
log.Warn("playlettopicgroupmod.FindMany failed", log.E(err))
return nil, srvdef.New(srvdef.ErrDbQueryError, "", "")
}
return list, nil
}
// Count 统计符合条件的专题区块数量
func Count(ctx context.Context, filter bson.M) (int64, *srvdef.SrvErr) {
count, err := coll.Count(ctx, filter)
if err != nil {
log.Warn("playlettopicgroupmod.Count failed", log.E(err))
return 0, srvdef.New(srvdef.ErrDbQueryError, "", "")
}
return count, nil
}
// Update 更新专题区块
func Update(ctx context.Context, id int64, set bson.M) *srvdef.SrvErr {
set["updatedAt"] = time.Now()
result, err := coll.UpdateOne(ctx, bson.M{"_id": id}, bson.M{"$set": set})
if err != nil {
log.Warn("playlettopicgroupmod.Update failed", log.E(err))
return srvdef.New(srvdef.ErrDbUpdateError, "", "")
}
if result.MatchedCount == 0 {
return srvdef.New(srvdef.ErrNoData, "专题区块不存在", "")
}
return nil
}
// Delete 删除专题区块
func Delete(ctx context.Context, id int64) *srvdef.SrvErr {
count, err := coll.DeleteOne(ctx, bson.M{"_id": id})
if err != nil {
log.Warn("playlettopicgroupmod.Delete failed", log.E(err))
return srvdef.New(srvdef.ErrDbDeleteError, "", "")
}
if count == 0 {
return srvdef.New(srvdef.ErrNoData, "专题区块不存在", "")
}
return nil
}
+17
View File
@@ -0,0 +1,17 @@
package playlettopicgroupmod
import "time"
// PlayletTopicGroup 专题页区块
type PlayletTopicGroup struct {
Id int64 `json:"id" bson:"_id,omitempty"` // 专题区块ID
Name string `json:"name" bson:"name"` // 专题区块名称
Desc string `json:"desc" bson:"desc"` // 专题区块描述
TopicIds []int64 `json:"topicIds" bson:"topicIds"` // 关联专题ID,数组顺序即展示顺序
Rank int64 `json:"rank" bson:"rank"` // 区块排序,越大越靠前
Status bool `json:"status" bson:"status"` // 是否启用
CreatedAt time.Time `json:"createdAt" bson:"createdAt"` // 创建时间
UpdatedAt time.Time `json:"updatedAt" bson:"updatedAt"` // 更新时间
}
type PlayletTopicGroupList []*PlayletTopicGroup