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 }