From dba8d1deebeda01eb9a68c3bef5016d82b1ed42b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=80=A7=E9=A9=8A?= Date: Fri, 21 Mar 2025 09:12:08 +0000 Subject: [PATCH] feat: tmp uc --- pkg/usecase/product.go | 124 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 pkg/usecase/product.go diff --git a/pkg/usecase/product.go b/pkg/usecase/product.go new file mode 100644 index 0000000..0aeec73 --- /dev/null +++ b/pkg/usecase/product.go @@ -0,0 +1,124 @@ +package usecase + +import ( + "code.30cm.net/digimon/app-cloudep-product-service/pkg/domain/entity" + "code.30cm.net/digimon/app-cloudep-product-service/pkg/domain/repository" + "code.30cm.net/digimon/app-cloudep-product-service/pkg/domain/usecase" + "context" + "google.golang.org/protobuf/proto" +) + +type ProductUseCaseParam struct { + ProductRepo repository.ProductRepository + TagRepo repository.TagRepo + TagBinding repository.TagBindingRepo + ProductStatisticsRepo repository.ProductStatisticsRepo +} + +type ProductUseCase struct { + ProductUseCaseParam +} + +func MustProductUseCase(param ProductUseCaseParam) usecase.ProductUseCase { + return &ProductUseCase{ + param, + } +} + +func (use *ProductUseCase) Create(ctx context.Context, product *usecase.Product) error { + //use.ProductRepo.Transaction() + insert := &entity.Product{ + UID: *product.UID, + Title: *product.Title, + ShortTitle: product.ShortTitle, + + } + + + UID string `bson:"uid"` // 專案擁有者 UID + Title string `bson:"title"` // 專案名稱 + ShortTitle *string `bson:"short_title,omitempty"` // 計畫簡短標題 -> 不一定要有 + Details *string `bson:"details"` // 詳細內容 + ShortDescription string `bson:"short_description,omitempty"` // 簡短描述 + Media []Media `bson:"media,omitempty"` // 專案動態內容(圖片或者影片) + Slug *string `bson:"slug,omitempty"` // URL 後綴(查詢用) + IsPublished bool `bson:"is_published" ` // 是否已上架 + Amount uint64 `bson:"amount,omitempty"` // 目標金額 + StartTime *int64 `bson:"start_time,omitempty"` // 專案開始時間 + EndTime *int64 `bson:"end_time,omitempty"` // 專案結束時間 + Category string `bson:"category"` // 類別 + CustomFields []CustomFields `bson:"custom_fields,omitempty"` // 自定義屬性 + + + err := use.ProductRepo.Insert(ctx, insert) + if err != nil { + return err + } + //TODO implement me + panic("implement me") +} + +func (use *ProductUseCase) Update(ctx context.Context, id string, product *usecase.Product) error { + //TODO implement me + panic("implement me") +} + +func (use *ProductUseCase) Delete(ctx context.Context, id string) error { + //TODO implement me + panic("implement me") +} + +func (use *ProductUseCase) Get(ctx context.Context, id string) (*usecase.ProductResp, error) { + //TODO implement me + panic("implement me") +} + +func (use *ProductUseCase) List(ctx context.Context, data usecase.ProductQueryParams) ([]*usecase.ProductResp, int64, error) { + //TODO implement me + panic("implement me") +} + +func (use *ProductUseCase) IncOrders(ctx context.Context, productID string, count int64) error { + //TODO implement me + panic("implement me") +} + +func (use *ProductUseCase) DecOrders(ctx context.Context, productID string, count int64) error { + //TODO implement me + panic("implement me") +} + +func (use *ProductUseCase) UpdateAverageRating(ctx context.Context, productID string, averageRating float64) error { + //TODO implement me + panic("implement me") +} + +func (use *ProductUseCase) IncFansCount(ctx context.Context, productID string, fansCount uint64) error { + //TODO implement me + panic("implement me") +} + +func (use *ProductUseCase) DecFansCount(ctx context.Context, productID string, fansCount uint64) error { + //TODO implement me + panic("implement me") +} + +func (use *ProductUseCase) BindTag(ctx context.Context, binding usecase.TagsBindingTable) error { + //TODO implement me + panic("implement me") +} + +func (use *ProductUseCase) UnbindTag(ctx context.Context, binding usecase.TagsBindingTable) error { + //TODO implement me + panic("implement me") +} + +func (use *ProductUseCase) GetBindingsByReference(ctx context.Context, referenceID string) ([]usecase.TagsBindingTableResp, error) { + //TODO implement me + panic("implement me") +} + +func (use *ProductUseCase) ListTagBinding(ctx context.Context, params usecase.TagBindingQueryParams) ([]usecase.TagsBindingTableResp, int64, error) { + //TODO implement me + panic("implement me") +}