Skip to content

Commit

Permalink
Merge pull request #262 from ArtisanCloud/dev/michaelhu
Browse files Browse the repository at this point in the history
MGM列表和删除,更新接口
  • Loading branch information
Matrix-X committed Oct 8, 2023
2 parents c137962 + 9a0e256 commit d1002df
Show file tree
Hide file tree
Showing 9 changed files with 182 additions and 25 deletions.
2 changes: 1 addition & 1 deletion api/admin/crm/market/mgm.api
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,11 @@ type (
MGMRule struct {
Id int64 `json:"id,optional"`

Name string `json:"name,optional"`
CommissionRate1 float32 `json:"commissionRate1,optional"`
CommissionRate2 float32 `json:"commissionRate2,optional"`
Scene int `json:"scene,optional"`
Description string `json:"description,optional"`

}

ListMGMRulesPageReply struct {
Expand Down
11 changes: 0 additions & 11 deletions api/admin/crm/product/product.api
Original file line number Diff line number Diff line change
Expand Up @@ -54,17 +54,6 @@ service PowerX {
}

type (
// ProductImage {
// Id int64 `json:"id,optional"`
// Filename string `json:"filename,optional"`
// Size int64 `json:"size,optional"`
// Url string `json:"url,optional"`
// BucketName string `json:"bucketName,optional"`
// IsLocalStored bool `json:"isLocalStored,optional"`
// ContentType string `json:"contentType,optional"`
// ResourceType string `json:"resourceType,optional"`
// }


PivotDataDictionaryToObject {
DataDictionaryType string `json:"dataDictionaryType,optional"`
Expand Down
9 changes: 6 additions & 3 deletions api/admin/crm/product/productstatistics.api
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,12 @@ type (
ProductStatistics {
Id int64 `json:"id,optional"`
ProductId int64 `json:"productId"`
SoldAmount int64 `json:"SoldAmount,optional"`
InventoryQuantity int64 `json:"InventoryQuantity,optional"`
ViewCount int64 `json:"ViewCount,optional"`
SoldAmount int64 `json:"soldAmount,optional"`
InventoryQuantity int64 `json:"inventoryQuantity,optional"`
ViewCount int64 `json:"viewCount,optional"`
BaseSoldAmount int64 `json:"baseSoldAmount,optional"`
BaseInventoryQuantity int64 `json:"baseInventoryQuantity,optional"`
BaseViewCount int64 `json:"baseViewCount,optional"`
}
)

Expand Down
2 changes: 1 addition & 1 deletion cmd/ctl/database/migrate/powerx.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ func (m *PowerMigrator) AutoMigrate() {
)
// product
_ = m.db.AutoMigrate(&product.Product{}, &product.ProductCategory{})
_ = m.db.AutoMigrate(&product.ProductSpecific{}, &product.SpecificOption{})
_ = m.db.AutoMigrate(&product.ProductSpecific{}, &product.SpecificOption{}, &product.ProductStatistics{})
_ = m.db.AutoMigrate(&product.SKU{}, &product.PivotSkuToSpecificOption{})
_ = m.db.AutoMigrate(&product.PriceBook{}, &product.PriceBookEntry{}, &product.PriceConfig{})
_ = m.db.AutoMigrate(&market.Store{}, &product.Artisan{}, &product.PivotStoreToArtisan{})
Expand Down
1 change: 1 addition & 0 deletions internal/logic/admin/crm/market/mgm/createmgmrulelogic.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ func TransformRequestToMGMRule(mediaRequest *types.MGMRule) (mdlMGMRule *market.

return &market.MGMRule{

Name: mediaRequest.Name,
CommissionRate1: mediaRequest.CommissionRate1,
CommissionRate2: mediaRequest.CommissionRate2,
Scene: mediaRequest.Scene,
Expand Down
1 change: 1 addition & 0 deletions internal/logic/admin/crm/market/mgm/getmgmrulelogic.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ func (l *GetMGMRuleLogic) GetMGMRule(req *types.GetMGMRuleRequest) (resp *types.
func TransformMGMRuleToReply(mdlMGMRule *market.MGMRule) (mediaReply *types.MGMRule) {
return &types.MGMRule{
Id: mdlMGMRule.Id,
Name: mdlMGMRule.Name,
CommissionRate1: mdlMGMRule.CommissionRate1,
CommissionRate2: mdlMGMRule.CommissionRate2,
Scene: mdlMGMRule.Scene,
Expand Down
11 changes: 7 additions & 4 deletions internal/model/crm/product/productstatistics.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@ import "PowerX/internal/model/powermodel"
type ProductStatistics struct {
powermodel.PowerModel

ProductId int64 `gorm:"comment:产品Id" json:"productId"`
SoldAmount int64 `gorm:"comment:销量" json:"soldAmount"`
InventoryQuantity int64 `gorm:"comment:库存;" json:"inventoryQuantity"`
ViewCount int64 `gorm:"comment:浏览量;" json:"viewCount"`
ProductId int64 `gorm:"comment:产品Id" json:"productId"`
SoldAmount int64 `gorm:"comment:销量" json:"soldAmount"`
InventoryQuantity int64 `gorm:"comment:库存;" json:"inventoryQuantity"`
ViewCount int64 `gorm:"comment:浏览量;" json:"viewCount"`
BaseSoldAmount int64 `gorm:"comment:销量" json:"baseSoldAmount"`
BaseInventoryQuantity int64 `gorm:"comment:库存;" json:"baseInventoryQuantity"`
BaseViewCount int64 `gorm:"comment:浏览量;" json:"baseViewCount"`
}

const ProductStatisticsUniqueId = powermodel.UniqueId
14 changes: 9 additions & 5 deletions internal/types/types.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

156 changes: 156 additions & 0 deletions internal/uc/powerx/crm/product/productstatistics.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
package product

import (
"PowerX/internal/model/crm/product"
"PowerX/internal/model/powermodel"
"PowerX/internal/types"
"PowerX/internal/types/errorx"
"context"
"github.com/pkg/errors"
"gorm.io/gorm"
"strings"
)

type ProductStatisticsUseCase struct {
db *gorm.DB
}

func NewProductStatisticsUseCase(db *gorm.DB) *ProductStatisticsUseCase {
return &ProductStatisticsUseCase{
db: db,
}
}

type FindProductStatisticsOption struct {
OrderBy string
Ids []int64
ProductId int64
types.PageEmbedOption
}

func (uc *ProductStatisticsUseCase) buildFindQueryNoPage(query *gorm.DB, opt *FindProductStatisticsOption) *gorm.DB {
if len(opt.Ids) > 0 {
query.Where("id in ?", opt.Ids)
}

if opt.ProductId > 0 {
query.Where("product_id = ?", opt.ProductId)

}

orderBy := "id desc"
if opt.OrderBy != "" {
orderBy = opt.OrderBy + "," + orderBy
}
query.Order(orderBy)

return query
}

func (uc *ProductStatisticsUseCase) PreloadItems(db *gorm.DB) *gorm.DB {
db = db.
Preload("Options")
return db
}

func (uc *ProductStatisticsUseCase) FindManyProductStatistics(ctx context.Context, opt *FindProductStatisticsOption) types.Page[*product.ProductStatistics] {
var ProductStatistics []*product.ProductStatistics
var count int64
query := uc.db.WithContext(ctx).Model(&product.ProductStatistics{})

query = uc.buildFindQueryNoPage(query, opt)
if err := query.Count(&count).Error; err != nil {
panic(errors.Wrap(err, "find many ProductStatistics failed"))
}

opt.DefaultPageIfNotSet()
if opt.PageIndex != 0 && opt.PageSize != 0 {
query.Offset((opt.PageIndex - 1) * opt.PageSize).Limit(opt.PageSize)
}

query = uc.PreloadItems(query)
if err := query.
//Debug().
Find(&ProductStatistics).Error; err != nil {
panic(errors.Wrap(err, "find many ProductStatistics failed"))
}
return types.Page[*product.ProductStatistics]{
List: ProductStatistics,
PageIndex: opt.PageIndex,
PageSize: opt.PageSize,
Total: count,
}

}

func (uc *ProductStatisticsUseCase) FindOneProductStatistics(ctx context.Context, opt *FindProductStatisticsOption) (*product.ProductStatistics, error) {
var mpCustomer *product.ProductStatistics
query := uc.db.WithContext(ctx).Model(&product.ProductStatistics{})

query = uc.buildFindQueryNoPage(query, opt)
if err := query.First(&mpCustomer).Error; err != nil {
return nil, errorx.ErrRecordNotFound
}
return mpCustomer, nil
}

func (uc *ProductStatisticsUseCase) CreateProductStatistics(ctx context.Context, ProductStatistics *product.ProductStatistics) error {
if err := uc.db.WithContext(ctx).Create(&ProductStatistics).Error; err != nil {
if strings.Contains(err.Error(), "duplicate key value violates unique constraint") {
return errorx.WithCause(errorx.ErrDuplicatedInsert, "该对象不能重复创建")
}
panic(err)
}
return nil
}

func (uc *ProductStatisticsUseCase) UpsertProductStatistics(ctx context.Context, productStatistics *product.ProductStatistics) (*product.ProductStatistics, error) {

productStatisticses := []*product.ProductStatistics{productStatistics}

_, err := uc.UpsertProductStatisticses(ctx, productStatisticses)
if err != nil {
panic(errors.Wrap(err, "upsert productStatistics failed"))
}

return productStatistics, err
}

func (uc *ProductStatisticsUseCase) UpsertProductStatisticses(ctx context.Context, productStatisticses []*product.ProductStatistics) ([]*product.ProductStatistics, error) {

err := powermodel.UpsertModelsOnUniqueID(uc.db.WithContext(ctx), &product.ProductStatistics{}, product.ProductStatisticsUniqueId, productStatisticses, nil, true)

if err != nil {
panic(errors.Wrap(err, "batch upsert productStatistics failed"))
}

return productStatisticses, err
}

func (uc *ProductStatisticsUseCase) PatchProductStatistics(ctx context.Context, id int64, ProductStatistics *product.ProductStatistics) {
if err := uc.db.WithContext(ctx).Model(&product.ProductStatistics{}).Where(id).Updates(&ProductStatistics).Error; err != nil {
panic(err)
}
}

func (uc *ProductStatisticsUseCase) GetProductStatistics(ctx context.Context, id int64) (*product.ProductStatistics, error) {
var ProductStatistics product.ProductStatistics
if err := uc.db.WithContext(ctx).First(&ProductStatistics, id).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, errorx.WithCause(errorx.ErrBadRequest, "未找到价格手册")
}
panic(err)
}
return &ProductStatistics, nil
}

func (uc *ProductStatisticsUseCase) DeleteProductStatistics(ctx context.Context, id int64) error {
result := uc.db.WithContext(ctx).Delete(&product.ProductStatistics{}, id)
if err := result.Error; err != nil {
panic(err)
}
if result.RowsAffected == 0 {
return errorx.WithCause(errorx.ErrDeleteObjectNotFound, "未找到价格手册")
}
return nil
}

0 comments on commit d1002df

Please sign in to comment.