feat: tmp uc

This commit is contained in:
王性驊 2025-03-21 09:12:08 +00:00
parent f84f58a460
commit dba8d1deeb
1 changed files with 124 additions and 0 deletions

124
pkg/usecase/product.go Normal file
View File

@ -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")
}