From 18a2573769517256d9fd68f604ee6774cdd52bb3 Mon Sep 17 00:00:00 2001 From: howell <2827207845@qq.com> Date: Wed, 2 Mar 2022 12:45:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E6=89=B9=E5=8F=91?= =?UTF-8?q?=E9=94=80=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/api/mobile/goods/common_list.go | 25 ++------ internal/api/mobile/goods/detail.go | 63 ++++--------------- internal/api/mobile/order/cancel.go | 3 + internal/api/mobile/order/submit.go | 18 ++++-- internal/model/goods/sku.go | 2 + internal/v2/logic/pay/public.go | 5 +- .../v2/model/recook/goods/recookGoodsSku.go | 2 + 7 files changed, 41 insertions(+), 77 deletions(-) diff --git a/internal/api/mobile/goods/common_list.go b/internal/api/mobile/goods/common_list.go index bd7d9bd..23ed842 100755 --- a/internal/api/mobile/goods/common_list.go +++ b/internal/api/mobile/goods/common_list.go @@ -227,6 +227,8 @@ func GetGoodsRespByInfoList(goodsList []goods.Information, userID uint, isSale b "SUM(inventory) AS inventory, "+ "SUM(sales_volume) AS sales_volume, "+ "SUM(sales_volume_inc) AS sales_volume_inc, "+ + "SUM(sale_volume1) AS sale_volume1, "+ + "SUM(sale_volume_inc1) AS sale_volume_inc1, "+ "MIN(purchase_price) AS purchase_price,"+ "MIN(original_price) AS original_price, "+ "MIN(discount_price) AS discount_price, "+ @@ -271,28 +273,11 @@ func GetGoodsRespByInfoList(goodsList []goods.Information, userID uint, isSale b inventory := ss.Inventory salesVolume := ss.SalesVolume + ss.SalesVolumeInc + if isSale { + salesVolume = ss.SaleVolume2 + ss.SaleVolumeInc2 + } commission := ss.GetSelfProfit(u.Level) tags := make([]string, 0) - //rate1 := decimal.Zero - //rate2 := decimal.Zero - //rate3 := decimal.Zero - //if u.Level == 1 { - // rate1 = decimal.NewFromFloat32(0.4) - // rate2 = decimal.NewFromFloat32(0.1) - //} - //if u.Level == 2 { - // rate1 = decimal.NewFromFloat32(0.4) - // rate2 = decimal.NewFromFloat32(0.1) - // rate3 = decimal.NewFromFloat(0.2) - //} - //base := ss.GetBase() - //commission1 := base.Mul(rate1).Round(2) - //commission2 := base.Mul(rate2).Round(2) - //commission3 := base.Mul(rate3).Round(2) - //commission = commission1.Add(commission2).Add(commission3) - //if u.Level == 10 { - // commission = ss.DiscountPrice.Sub(ss.PurchasePrice.Mul(decimal.NewFromFloat(1.03))).Mul(decimal.NewFromFloat(define.Coefficient)) - //} recookGoodsInfoModel := &goods2.RecookGoodsInfoModel{} space := " " diff --git a/internal/api/mobile/goods/detail.go b/internal/api/mobile/goods/detail.go index 048ade7..7719f5a 100644 --- a/internal/api/mobile/goods/detail.go +++ b/internal/api/mobile/goods/detail.go @@ -125,6 +125,8 @@ type salesInventory struct { SalesVolume uint `gorm:"column:sales_volume" json:"salesVolume"` SaleInventory uint `gorm:"column:sale_inventory" json:"sale_inventory"` SalesVolumeInc uint `gorm:"column:sales_volume_inc" json:"sales_volume_inc"` + SaleVolume2 uint `gorm:"column:sale_volume2" json:"salesVolume2"` + SaleVolumeInc2 uint `gorm:"column:sale_volume_inc2" json:"sales_volume_inc2"` } type Goods struct { @@ -279,27 +281,17 @@ func QueryGoodsDetailNew(c *gin.Context) { } var u1 user.RecookUserInfoModel mysql2.Db.Find(&u1, "id = ?", p.UserID) - //rate1 := decimal.Zero - //rate2 := decimal.Zero - //rate3 := decimal.Zero - // - //if u1.Level == 1 { - // rate1 = decimal.NewFromFloat32(0.4) - // rate2 = decimal.NewFromFloat32(0.1) - //} - //if u1.Level == 2 { - // rate1 = decimal.NewFromFloat32(0.4) - // rate2 = decimal.NewFromFloat32(0.1) - // rate3 = decimal.NewFromFloat(0.2) - //} var summary summaryResponseNew dbc.DB.Table((&goods.Information{}).TableName()).First(&summary, p.GoodsID) var sv salesInventory - dbc.DB.Table((&goods.Sku{}).TableName()).Select("SUM(inventory) AS inventory, SUM(sales_volume) AS sales_volume, SUM(sales_volume_inc) AS sales_volume_inc,SUM(sale_inventory) AS sale_inventory"). + dbc.DB.Table((&goods.Sku{}).TableName()).Select("SUM(inventory) AS inventory, SUM(sales_volume) AS sales_volume, SUM(sale_volume2) AS sale_volume2, SUM(sale_volume_inc2) AS sale_volume_inc2, SUM(sales_volume_inc) AS sales_volume_inc,SUM(sale_inventory) AS sale_inventory"). First(&sv, "goods_id = ?", p.GoodsID) summary.SalesVolume = sv.SalesVolume + sv.SalesVolumeInc + if p.IsSale { + summary.SalesVolume = sv.SaleVolume2 + sv.SaleVolumeInc2 + } summary.Inventory = sv.Inventory summary.SaleInventory = sv.SaleInventory @@ -325,26 +317,6 @@ func QueryGoodsDetailNew(c *gin.Context) { dbc.DB.Table((&goods.Sku{}).TableName()).Select(selectMaxPriceStr).First(&maxAllPrice, "goods_id = ?", p.GoodsID) maxAllPrice.SalePrice = maxAllPrice.GetSalePrice(u1.Level) - // minCost := minAllPrice.PurchasePrice.Mul(decimal.NewFromFloat(1.03)) - // minBase := minAllPrice.DiscountPrice.Sub(minCost).Mul(decimal.NewFromFloat(define.Coefficient)).Round(2) - //minBase := minAllPrice.Commission - // - //minCommission1 := minBase.Mul(rate1).Round(2) - //minCommission2 := minBase.Mul(rate2).Round(2) - //minCommission3 := minBase.Mul(rate3).Round(2) - - // maxBase := maxAllPrice.DiscountPrice.Sub(minCost).Mul(decimal.NewFromFloat(define.Coefficient)).Round(2) - //maxBase := maxAllPrice.Commission - //maxCommission1 := maxBase.Mul(rate1).Round(2) - //maxCommission2 := maxBase.Mul(rate2).Round(2) - //maxCommission3 := maxBase.Mul(rate3).Round(2) - //minCommission := minAllPrice.GetSelfProfit(u1.Level) - //maxCommission := maxAllPrice.GetSelfProfit(u1.Level) - //if u1.Level == 10 { - // minCommission = minAllPrice.DiscountPrice.Sub(minAllPrice.PurchasePrice.Mul(decimal.NewFromFloat(1.03))).Mul(decimal.NewFromFloat(define.Coefficient)).Round(2) - // maxCommission = maxAllPrice.DiscountPrice.Sub(maxAllPrice.PurchasePrice.Mul(decimal.NewFromFloat(1.03))).Mul(decimal.NewFromFloat(define.Coefficient)).Round(2) - //} - minCommission := minAllPrice.GetSelfProfit(u1.Level) maxCommission := maxAllPrice.GetSelfProfit(u1.Level) @@ -366,10 +338,7 @@ func QueryGoodsDetailNew(c *gin.Context) { Limit: minAllPrice.Limit, }, } - //if summary.IsFerme == goods2.RecookGoodsInfoIsFermeTrue { - // summary.Price.Min.Ferme = minAllPrice.PurchasePrice.Mul(decimal.NewFromFloat(1.2)).Mul(decimal.NewFromFloat(0.091)).Truncate(2) - // summary.Price.Max.Ferme = maxAllPrice.PurchasePrice.Mul(decimal.NewFromFloat(1.2)).Mul(decimal.NewFromFloat(0.091)).Truncate(2) - //} + if !p.IsSale { summary.Recommends = fetchRecommends(p.GoodsID, summary.BrandID) } @@ -384,23 +353,15 @@ func QueryGoodsDetailNew(c *gin.Context) { dbc.DB.Table((&goods.Sku{}).TableName()).Find(&(summary.Sku), "goods_id = ?", p.GoodsID) for index, v := range summary.Sku { - //skb := v.GetBase() - //sc1 := skb.Mul(rate1).Round(2) - //sc2 := skb.Mul(rate2).Round(2) - //sc3 := skb.Mul(rate3).Round(2) summary.Sku[index].Commission = v.GetSelfProfit(u1.Level) - //if u1.Level == 10 { - // commission := v.DiscountPrice.Sub(v.PurchasePrice.Mul(decimal.NewFromFloat(1.03))).Mul(decimal.NewFromFloat(define.Coefficient)).Round(2) - // summary.Sku[index].Commission = commission - //} summary.Sku[index].SalePrice = v.GetSalePrice(u1.Level) } now := time.Now() - var promotionGoods promotion.Goods - dbc.DB.First(&promotionGoods, "goods_id = ? AND start_time <= ? AND end_time >= ?", p.GoodsID, now, now) - if promotionGoods.ID == 0 { // - dbc.DB.First(&promotionGoods, "goods_id = ? AND start_time >= ?", p.GoodsID, now) - } + //var promotionGoods promotion.Goods + //dbc.DB.First(&promotionGoods, "goods_id = ? AND start_time <= ? AND end_time >= ?", p.GoodsID, now, now) + //if promotionGoods.ID == 0 { // + // dbc.DB.First(&promotionGoods, "goods_id = ? AND start_time >= ?", p.GoodsID, now) + //} var gc goods.Category dbc.DB.Table(gc.TableName()).First(&gc, "id = ?", summary.SecondCategoryID) diff --git a/internal/api/mobile/order/cancel.go b/internal/api/mobile/order/cancel.go index 4ea1633..983f91a 100755 --- a/internal/api/mobile/order/cancel.go +++ b/internal/api/mobile/order/cancel.go @@ -120,6 +120,9 @@ func CancelOrExpireOrder(orderInfo *order.Information, cancel bool) error { var sku goods.Sku tx.First(&sku, v.SkuID) salesVolume := sku.SalesVolume - v.Quantity + if orderInfo.OrderType == 2 { + salesVolume = sku.SaleVolume2 - v.Quantity + } if sku.SalesVolume < v.Quantity { salesVolume = 0 } diff --git a/internal/api/mobile/order/submit.go b/internal/api/mobile/order/submit.go index 3e81c0b..0c5c477 100755 --- a/internal/api/mobile/order/submit.go +++ b/internal/api/mobile/order/submit.go @@ -278,14 +278,22 @@ func SubmitOrder(c *gin.Context) { // return // } } + if orderInfo.OrderType == 1 { + if err = tx.Model(sku).UpdateColumn("sales_volume", gorm.Expr("sales_volume + ?", v.Quantity)).Error; err != nil { + back.Err(c, err.Error()) + tx.Rollback() + return + } + } - if err = tx.Model(sku).UpdateColumn("sales_volume", gorm.Expr("sales_volume + ?", v.Quantity)).Error; err != nil { - back.Err(c, err.Error()) - tx.Rollback() - return + if orderInfo.OrderType == 2 { + if err = tx.Model(sku).UpdateColumn("sale_volume", gorm.Expr("sale_volume + ?", v.Quantity)).Error; err != nil { + back.Err(c, err.Error()) + tx.Rollback() + return + } } } - } // 如果是购物车下单 则要清除一下购物车 diff --git a/internal/model/goods/sku.go b/internal/model/goods/sku.go index 0f9a992..1d4fbeb 100755 --- a/internal/model/goods/sku.go +++ b/internal/model/goods/sku.go @@ -33,6 +33,8 @@ type Sku struct { Limit uint `json:"limit" gorm:"column:limit_num"` Min uint `json:"min" gorm:"column:min_num"` SalePurchasePrice decimal.Decimal `json:"sale_purchase_price" gorm:"column:sale_purchase_price"` // 批发供货价 + SaleVolume2 uint `json:"sale_volume2" gorm:"column:sale_volume2"` + SaleVolumeInc2 uint `json:"sale_volume_inc2" gorm:"column:sale_volume_inc2"` } // TableName sets the insert table name for this struct type diff --git a/internal/v2/logic/pay/public.go b/internal/v2/logic/pay/public.go index 876d216..7f3ef30 100644 --- a/internal/v2/logic/pay/public.go +++ b/internal/v2/logic/pay/public.go @@ -71,6 +71,9 @@ func privateRefund(tx *gorm.DB, asGoods *after.RecookAfterSalesGoodsModel) error var sku goods.RecookGoodsSkuModel tx.First(&sku, orderGoods.SkuId) var salesVolume = sku.SalesVolume - orderGoods.Quantity + if orderInfo.OrderType == 2 { + salesVolume = sku.SaleVolume2 - orderGoods.Quantity + } if sku.SalesVolume == 0 { salesVolume = 0 } @@ -83,7 +86,7 @@ func privateRefund(tx *gorm.DB, asGoods *after.RecookAfterSalesGoodsModel) error } } else { if err := tx.Model(&sku).Updates(map[string]interface{}{ - "sales_volume": salesVolume, + "sale_volume": salesVolume, "sale_inventory": sku.SaleInventory + orderGoods.Quantity, }).Error; err != nil { return err diff --git a/internal/v2/model/recook/goods/recookGoodsSku.go b/internal/v2/model/recook/goods/recookGoodsSku.go index a77a6c2..ae87fcf 100644 --- a/internal/v2/model/recook/goods/recookGoodsSku.go +++ b/internal/v2/model/recook/goods/recookGoodsSku.go @@ -52,6 +52,8 @@ type RecookGoodsSkuModel struct { SaleInventory uint `json:"sale_inventory"` GoodsInfo *RecookGoodsInfoModel `json:"-" gorm:"foreignKey:goods_id"` SalePurchasePrice decimal.Decimal `json:"sale_purchase_price" gorm:"column:sale_purchase_price"` + SaleVolume2 uint `json:"sale_volume2" gorm:"column:sale_volume2"` + SaleVolumeInc2 uint `json:"sale_volume_inc2" gorm:"column:sale_volume_inc2"` } func (r *RecookGoodsSkuModel) GetSalePrice(level int) decimal.Decimal {