Initial commit

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-23 11:07:42 +08:00
co-authored by Claude Opus 5.5
commit 7974a42301
633 changed files with 120248 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
package srv_detailnav
import (
"videoweb/pub/models/detailnavmod"
"videoweb/pub/pubdef"
)
type GetDetailNavListReq struct {
pubdef.Page
}
type GetDetailNavListResp struct {
Total int64 `json:"total"`
List detailnavmod.DetailNavModelList `json:"list"`
}
type AddDetailNavReq struct {
Name string `json:"name" binding:"required"` // 导航名称
Url string `json:"url" binding:"required"` // 导航链接
Sort int64 `json:"sort"` // 排序
Status *bool `json:"status"` // 是否启用
}
type UpdateDetailNavReq struct {
Id string `json:"id" binding:"required"`
Param UpdateDetailNavParam `json:"param"`
}
type UpdateDetailNavParam struct {
Name *string `json:"name" bson:"name,omitempty"`
Url *string `json:"url" bson:"url,omitempty"`
Sort *int64 `json:"sort" bson:"sort,omitempty"`
Status *bool `json:"status" bson:"status,omitempty"`
}
type DelDetailNavReq struct {
Id string `json:"id" binding:"required"`
}
+110
View File
@@ -0,0 +1,110 @@
package srv_detailnav
import (
"context"
"time"
"videoweb/pub/common/srvdef"
"videoweb/pub/models/detailnavmod"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo/options"
)
// GetDetailNavList 获取详情页导航列表
func GetDetailNavList(ctx context.Context, req *GetDetailNavListReq) (*GetDetailNavListResp, *srvdef.SrvErr) {
filter := bson.M{}
count, serr := detailnavmod.CountDetailNav(ctx, filter)
if serr != nil {
return nil, serr
}
if count == 0 {
return &GetDetailNavListResp{
Total: 0,
List: make(detailnavmod.DetailNavModelList, 0),
}, nil
}
opts := options.FindOptions{}
opts.SetSort(bson.D{
{Key: detailnavmod.FN.DetailNavModel.Sort, Value: 1},
{Key: detailnavmod.FN.DetailNavModel.CreatedAt, Value: -1},
})
opts.SetLimit(req.PageSize)
opts.SetSkip((req.PageNum - 1) * req.PageSize)
list, serr := detailnavmod.FindManyDetailNav(ctx, filter, &opts)
if serr != nil {
return nil, serr
}
return &GetDetailNavListResp{
Total: count,
List: list,
}, nil
}
// AddDetailNav 添加详情页导航
func AddDetailNav(ctx context.Context, req *AddDetailNavReq) *srvdef.SrvErr {
now := time.Now()
status := true
if req.Status != nil {
status = *req.Status
}
doc := &detailnavmod.DetailNavModel{
ID: primitive.NewObjectID(),
Name: req.Name,
Url: req.Url,
Sort: req.Sort,
Status: status,
CreatedAt: now,
UpdatedAt: now,
}
return detailnavmod.InsertOneDetailNav(ctx, doc)
}
// UpdateDetailNav 更新详情页导航
func UpdateDetailNav(ctx context.Context, req *UpdateDetailNavReq) *srvdef.SrvErr {
objId, err := primitive.ObjectIDFromHex(req.Id)
if err != nil {
return srvdef.New(srvdef.ErrParamError, "", "")
}
filter := bson.M{detailnavmod.FN.DetailNavModel.ID: objId}
updateFields := bson.M{
detailnavmod.FN.DetailNavModel.UpdatedAt: time.Now(),
}
if req.Param.Name != nil {
updateFields[detailnavmod.FN.DetailNavModel.Name] = *req.Param.Name
}
if req.Param.Url != nil {
updateFields[detailnavmod.FN.DetailNavModel.Url] = *req.Param.Url
}
if req.Param.Sort != nil {
updateFields[detailnavmod.FN.DetailNavModel.Sort] = *req.Param.Sort
}
if req.Param.Status != nil {
updateFields[detailnavmod.FN.DetailNavModel.Status] = *req.Param.Status
}
return detailnavmod.UpdateOneDetailNav(ctx, filter, bson.M{"$set": updateFields})
}
// DelDetailNav 删除详情页导航
func DelDetailNav(ctx context.Context, req *DelDetailNavReq) *srvdef.SrvErr {
objId, err := primitive.ObjectIDFromHex(req.Id)
if err != nil {
return srvdef.New(srvdef.ErrParamError, "", "")
}
filter := bson.M{detailnavmod.FN.DetailNavModel.ID: objId}
count, serr := detailnavmod.DelOneDetailNav(ctx, filter)
if serr != nil {
return serr
}
if count == 0 {
return srvdef.New(srvdef.ErrNoData, "", "")
}
return nil
}