From d8d63c6f2e73bf64f2c9ee50d08126f02c51590f Mon Sep 17 00:00:00 2001 From: howell <2827207845@qq.com> Date: Fri, 18 Feb 2022 11:55:28 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E4=BE=9B=E8=B4=A7=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/api/mobile/goods/detail.go | 27 +++--- internal/model/goods/sku.go | 57 +++++++------ internal/v2/logic/app/jyy/jyy.go | 6 +- .../v2/model/recook/goods/recookGoodsSku.go | 85 ++++++++++--------- 4 files changed, 92 insertions(+), 83 deletions(-) diff --git a/internal/api/mobile/goods/detail.go b/internal/api/mobile/goods/detail.go index f8ee2c5..948aaf6 100644 --- a/internal/api/mobile/goods/detail.go +++ b/internal/api/mobile/goods/detail.go @@ -65,21 +65,22 @@ type priceSub struct { } type allPrice struct { - OriginalPrice decimal.Decimal `gorm:"column:original_price" json:"originalPrice"` // 重新计算折扣价 - DiscountPrice decimal.Decimal `gorm:"column:discount_price" json:"discountPrice"` - Commission decimal.Decimal `gorm:"column:commission" json:"commission"` - PurchasePrice decimal.Decimal `gorm:"column:purchase_price" json:"purchasePrice"` - Min uint `gorm:"column:min_num" json:"min"` - Limit uint `gorm:"column:limit_num" json:"limit"` - SalePrice decimal.Decimal `gorm:"column:sale_price" json:"sale_price"` + OriginalPrice decimal.Decimal `gorm:"column:original_price" json:"originalPrice"` // 重新计算折扣价 + DiscountPrice decimal.Decimal `gorm:"column:discount_price" json:"discountPrice"` + Commission decimal.Decimal `gorm:"column:commission" json:"commission"` + PurchasePrice decimal.Decimal `gorm:"column:purchase_price" json:"purchasePrice"` + Min uint `gorm:"column:min_num" json:"min"` + Limit uint `gorm:"column:limit_num" json:"limit"` + SalePrice decimal.Decimal `gorm:"column:sale_price" json:"sale_price"` + SalePurchasePrice decimal.Decimal `gorm:"column:sale_purchase_price" json:"-"` } func (o allPrice) GetSalePrice(level int) decimal.Decimal { if level == 10 { - return o.PurchasePrice.Mul(decimal.NewFromFloat(1.03)).Round(2) + return o.SalePurchasePrice.Mul(decimal.NewFromFloat(1.03)).Round(2) } - s1 := o.PurchasePrice.Mul(decimal.NewFromFloat(1.03)).Round(2) - s1 = s1.Add(o.DiscountPrice.Sub(o.PurchasePrice).Mul(decimal.NewFromFloat(0.2)).Round(2)) + s1 := o.SalePurchasePrice.Mul(decimal.NewFromFloat(1.03)).Round(2) + s1 = s1.Add(o.DiscountPrice.Sub(o.SalePurchasePrice).Mul(decimal.NewFromFloat(0.2)).Round(2)) return s1.Round(2) } @@ -328,7 +329,8 @@ func QueryGoodsDetailNew(c *gin.Context) { "MIN(commission) AS commission, " + "MIN(purchase_price) AS purchase_price, " + "MIN(min_num) AS min_num, " + - "MIN(limit_num) AS limit_num " + "MIN(limit_num) AS limit_num, " + + "MIN(sale_purchase_price) as sale_purchase_price" dbc.DB.Table((&goods.Sku{}).TableName()).Select(selectMinPriceStr).First(&minAllPrice, "goods_id = ?", p.GoodsID) minAllPrice.SalePrice = minAllPrice.GetSalePrice(u1.Level) @@ -338,7 +340,8 @@ func QueryGoodsDetailNew(c *gin.Context) { "MAX(commission) AS commission, " + "MAX(purchase_price) AS purchase_price, " + "MAX(min_num) AS min_num, " + - "MAX(limit_num) AS limit_num " + "MAX(limit_num) AS limit_num, " + + "MAX(sale_purchase_price) as sale_purchase_price" dbc.DB.Table((&goods.Sku{}).TableName()).Select(selectMaxPriceStr).First(&maxAllPrice, "goods_id = ?", p.GoodsID) maxAllPrice.SalePrice = maxAllPrice.GetSalePrice(u1.Level) diff --git a/internal/model/goods/sku.go b/internal/model/goods/sku.go index 125568b..3764798 100755 --- a/internal/model/goods/sku.go +++ b/internal/model/goods/sku.go @@ -7,31 +7,32 @@ import ( ) type Sku struct { - ID uint `gorm:"column:id;primary_key" json:"id"` - GoodsID uint `gorm:"column:goods_id" json:"goodsId"` - Name string `gorm:"column:name" json:"name"` - CombineID string `gorm:"column:combine_id" json:"combineId"` - PicURL string `gorm:"column:pic_url" json:"picUrl"` - Code string `gorm:"column:code" json:"code"` - PurchasePrice decimal.Decimal `gorm:"column:purchase_price" json:"purchasePrice"` - OriginalPrice decimal.Decimal `gorm:"column:original_price" json:"originalPrice"` // 原价 - DiscountPrice decimal.Decimal `gorm:"column:discount_price" json:"discountPrice"` // 折扣价 - CommissionRate decimal.Decimal `gorm:"column:commission_rate" json:"commissionRate"` // 佣金比 - Commission decimal.Decimal `gorm:"column:commission" json:"commission"` // 佣金 - SalePrice decimal.Decimal `json:"sale_price" gorm:"-"` - ControlPrice decimal.Decimal `gorm:"column:control_price" json:"controlPrice"` // 供应商最低控价 - SalesVolume uint `gorm:"column:sales_volume" json:"salesVolume"` // 销售量 销售量只简单累加 - Inventory uint `gorm:"column:inventory" json:"inventory"` // 库存量 可以直接补货 - SalesVolumeInc uint `gorm:"column:sales_volume_inc" json:"salesVolumeInc"` // 销售量的增量 - Coupon decimal.Decimal `gorm:"coupon" json:"coupon"` - GoodsNum string `gorm:"goods_num" json:"goodsNum"` //商品货号 - BmSkuId string `gorm:"bm_sku_id" json:"bm_sku_id"` //舶茂的skuid - BmShopId string `gorm:"bm_shop_id" json:"bm_shop_id"` //舶茂的商家id - ThirdPartySkuId string `gorm:"column:third_party_sku_id" json:"thirdPartySkuId"` //第三方skuid - ThirdPartyType int `gorm:"column:third_party_type" json:"thirdPartySkuType"` //第三方类型 - SaleInventory uint `json:"sale_inventory" gorm:"column:sale_inventory"` - Limit uint `json:"limit" gorm:"column:limit_num"` - Min uint `json:"min" gorm:"column:min_num"` + ID uint `gorm:"column:id;primary_key" json:"id"` + GoodsID uint `gorm:"column:goods_id" json:"goodsId"` + Name string `gorm:"column:name" json:"name"` + CombineID string `gorm:"column:combine_id" json:"combineId"` + PicURL string `gorm:"column:pic_url" json:"picUrl"` + Code string `gorm:"column:code" json:"code"` + PurchasePrice decimal.Decimal `gorm:"column:purchase_price" json:"purchasePrice"` + OriginalPrice decimal.Decimal `gorm:"column:original_price" json:"originalPrice"` // 原价 + DiscountPrice decimal.Decimal `gorm:"column:discount_price" json:"discountPrice"` // 折扣价 + CommissionRate decimal.Decimal `gorm:"column:commission_rate" json:"commissionRate"` // 佣金比 + Commission decimal.Decimal `gorm:"column:commission" json:"commission"` // 佣金 + SalePrice decimal.Decimal `json:"sale_price" gorm:"-"` + ControlPrice decimal.Decimal `gorm:"column:control_price" json:"controlPrice"` // 供应商最低控价 + SalesVolume uint `gorm:"column:sales_volume" json:"salesVolume"` // 销售量 销售量只简单累加 + Inventory uint `gorm:"column:inventory" json:"inventory"` // 库存量 可以直接补货 + SalesVolumeInc uint `gorm:"column:sales_volume_inc" json:"salesVolumeInc"` // 销售量的增量 + Coupon decimal.Decimal `gorm:"coupon" json:"coupon"` + GoodsNum string `gorm:"goods_num" json:"goodsNum"` //商品货号 + BmSkuId string `gorm:"bm_sku_id" json:"bm_sku_id"` //舶茂的skuid + BmShopId string `gorm:"bm_shop_id" json:"bm_shop_id"` //舶茂的商家id + ThirdPartySkuId string `gorm:"column:third_party_sku_id" json:"thirdPartySkuId"` //第三方skuid + ThirdPartyType int `gorm:"column:third_party_type" json:"thirdPartySkuType"` //第三方类型 + SaleInventory uint `json:"sale_inventory" gorm:"column:sale_inventory"` + 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"` // 批发供货价 } // TableName sets the insert table name for this struct type @@ -47,9 +48,9 @@ func (r *Sku) GetBase() decimal.Decimal { func (o *Sku) GetSalePrice(level int) decimal.Decimal { if level == 10 { - return o.PurchasePrice.Mul(decimal.NewFromFloat(1.03)).Round(2) + return o.SalePurchasePrice.Mul(decimal.NewFromFloat(1.03)).Round(2) } - s1 := o.PurchasePrice.Mul(decimal.NewFromFloat(1.03)).Round(2) - s1 = s1.Add(o.DiscountPrice.Sub(o.PurchasePrice).Mul(decimal.NewFromFloat(0.2)).Round(2)) + s1 := o.SalePurchasePrice.Mul(decimal.NewFromFloat(1.03)).Round(2) + s1 = s1.Add(o.DiscountPrice.Sub(o.SalePurchasePrice).Mul(decimal.NewFromFloat(0.2)).Round(2)) return s1.Round(2) } diff --git a/internal/v2/logic/app/jyy/jyy.go b/internal/v2/logic/app/jyy/jyy.go index 4c10c4a..f0430d4 100644 --- a/internal/v2/logic/app/jyy/jyy.go +++ b/internal/v2/logic/app/jyy/jyy.go @@ -270,6 +270,10 @@ func (o logic) OrderPreview(args OrderPreview) (err error, res OrderPreviewInfo) sl := make([]ShopCartSku, 0) for _, v := range skuList { + if v.SalePurchasePrice.IsZero() { + err = errors.New("价格异常") + return + } qu := decimal.NewFromInt(int64(idMap[v.Id])) goodsInfo := v.GoodsInfo one := order_preview.GoodsDetail{ @@ -293,7 +297,7 @@ func (o logic) OrderPreview(args OrderPreview) (err error, res OrderPreviewInfo) PromotionGoodsId: 0, PromotionName: "", UnitPrice: v.GetSalePrice(u1.Level), - PurchasePrice: v.PurchasePrice, + PurchasePrice: v.SalePurchasePrice, TotalCommission: decimal.Zero, GoodsAmount: v.GetSalePrice(u1.Level).Mul(qu), IsImport: goodsInfo.IsImport, diff --git a/internal/v2/model/recook/goods/recookGoodsSku.go b/internal/v2/model/recook/goods/recookGoodsSku.go index 3fa0069..e32e8b4 100644 --- a/internal/v2/model/recook/goods/recookGoodsSku.go +++ b/internal/v2/model/recook/goods/recookGoodsSku.go @@ -12,53 +12,54 @@ import ( type RecookGoodsSkuModel struct { db.BaseModel - Id uint `gorm:"column:id;primary_key" json:"id"` - GoodsId uint `gorm:"column:goods_id" json:"goodsId"` - Name string `gorm:"column:name" json:"name"` - CombineId string `gorm:"column:combine_id" json:"combineId"` - PicURL string `gorm:"column:pic_url" json:"picUrl"` - Code string `gorm:"column:code" json:"code"` - PurchasePrice decimal.Decimal `gorm:"column:purchase_price" json:"purchasePrice"` - OriginalPrice decimal.Decimal `gorm:"column:original_price" json:"originalPrice"` // 原价 - DiscountPrice decimal.Decimal `gorm:"column:discount_price" json:"discountPrice"` // 折扣价 - CommissionRate decimal.Decimal `gorm:"column:commission_rate" json:"commissionRate"` // 佣金比 - Commission decimal.Decimal `gorm:"column:commission" json:"commission"` // 佣金 - ControlPrice decimal.Decimal `gorm:"column:control_price" json:"controlPrice"` // 供应商最低控价 - SalesVolume uint `gorm:"column:sales_volume" json:"salesVolume"` // 销售量 销售量只简单累加 - Inventory uint `gorm:"column:inventory" json:"inventory"` // 库存量 可以直接补货 - SalesVolumeInc uint `gorm:"column:sales_volume_inc" json:"salesVolumeInc"` // 销售量的增量 - Coupon decimal.Decimal `gorm:"column:coupon" json:"coupon"` - GoodsNum string `gorm:"column:goods_num" json:"goodsNum"` //商品货号 - BmSkuId string `gorm:"column:bm_sku_id" json:"bm_sku_id"` //舶茂的skuid - BmShopId string `gorm:"column:bm_shop_id" json:"bm_shop_id"` //舶茂的商家id - ThirdPartySkuId string `gorm:"column:third_party_sku_id" json:"thirdPartySkuId"` //第三方skuid - ThirdPartyType int `gorm:"column:third_party_type" json:"thirdPartySkuType"` //第三方类型 - TMallPrice string `gorm:"column:tmall_price" json:"tmallPrice"` - TMallUrl string `gorm:"column:tmall_url" json:"tmallUrl"` - JdPrice string `gorm:"column:jd_price" json:"jdPrice"` - JdUrl string `gorm:"column:jd_url" json:"jdUrl"` - GysSkuID uint `gorm:"gys_sku_id" json:"gys_sku_id"` - Invoice RecookSkuInvoiceModel `gorm:"foreignKey:SkuId" json:"invoice"` - DetailPhoto []RecookGoodsDetailPhotoModel `gorm:"foreignKey:GoodsID;references:GoodsId"` - Goods RecookGoodsInfoModel `gorm:"foreignKey:GoodsId"` - SecKill flashsale.RecookSecKillGoodsModel `gorm:"foreignKey:Id;references:GoodsSkuId"` - SecKillTemp flashsale.RecookSecKillGoodsModelTemp `gorm:"foreignKey:Id;references:GoodsSkuId"` - Length float64 `json:"length"` - Width float64 `json:"width"` - Height float64 `json:"height"` - Weight float64 `json:"weight"` - Limit int `json:"limit" gorm:"column:limit_num"` - Min int `json:"min" gorm:"column:min_num"` - SaleInventory uint `json:"sale_inventory"` - GoodsInfo *RecookGoodsInfoModel `json:"-" gorm:"foreignKey:goods_id"` + Id uint `gorm:"column:id;primary_key" json:"id"` + GoodsId uint `gorm:"column:goods_id" json:"goodsId"` + Name string `gorm:"column:name" json:"name"` + CombineId string `gorm:"column:combine_id" json:"combineId"` + PicURL string `gorm:"column:pic_url" json:"picUrl"` + Code string `gorm:"column:code" json:"code"` + PurchasePrice decimal.Decimal `gorm:"column:purchase_price" json:"purchasePrice"` + OriginalPrice decimal.Decimal `gorm:"column:original_price" json:"originalPrice"` // 原价 + DiscountPrice decimal.Decimal `gorm:"column:discount_price" json:"discountPrice"` // 折扣价 + CommissionRate decimal.Decimal `gorm:"column:commission_rate" json:"commissionRate"` // 佣金比 + Commission decimal.Decimal `gorm:"column:commission" json:"commission"` // 佣金 + ControlPrice decimal.Decimal `gorm:"column:control_price" json:"controlPrice"` // 供应商最低控价 + SalesVolume uint `gorm:"column:sales_volume" json:"salesVolume"` // 销售量 销售量只简单累加 + Inventory uint `gorm:"column:inventory" json:"inventory"` // 库存量 可以直接补货 + SalesVolumeInc uint `gorm:"column:sales_volume_inc" json:"salesVolumeInc"` // 销售量的增量 + Coupon decimal.Decimal `gorm:"column:coupon" json:"coupon"` + GoodsNum string `gorm:"column:goods_num" json:"goodsNum"` //商品货号 + BmSkuId string `gorm:"column:bm_sku_id" json:"bm_sku_id"` //舶茂的skuid + BmShopId string `gorm:"column:bm_shop_id" json:"bm_shop_id"` //舶茂的商家id + ThirdPartySkuId string `gorm:"column:third_party_sku_id" json:"thirdPartySkuId"` //第三方skuid + ThirdPartyType int `gorm:"column:third_party_type" json:"thirdPartySkuType"` //第三方类型 + TMallPrice string `gorm:"column:tmall_price" json:"tmallPrice"` + TMallUrl string `gorm:"column:tmall_url" json:"tmallUrl"` + JdPrice string `gorm:"column:jd_price" json:"jdPrice"` + JdUrl string `gorm:"column:jd_url" json:"jdUrl"` + GysSkuID uint `gorm:"gys_sku_id" json:"gys_sku_id"` + Invoice RecookSkuInvoiceModel `gorm:"foreignKey:SkuId" json:"invoice"` + DetailPhoto []RecookGoodsDetailPhotoModel `gorm:"foreignKey:GoodsID;references:GoodsId"` + Goods RecookGoodsInfoModel `gorm:"foreignKey:GoodsId"` + SecKill flashsale.RecookSecKillGoodsModel `gorm:"foreignKey:Id;references:GoodsSkuId"` + SecKillTemp flashsale.RecookSecKillGoodsModelTemp `gorm:"foreignKey:Id;references:GoodsSkuId"` + Length float64 `json:"length"` + Width float64 `json:"width"` + Height float64 `json:"height"` + Weight float64 `json:"weight"` + Limit int `json:"limit" gorm:"column:limit_num"` + Min int `json:"min" gorm:"column:min_num"` + SaleInventory uint `json:"sale_inventory"` + GoodsInfo *RecookGoodsInfoModel `json:"-" gorm:"foreignKey:goods_id"` + SalePurchasePrice decimal.Decimal `json:"sale_purchase_price" gorm:"column:sale_purchase_price"` } func (r *RecookGoodsSkuModel) GetSalePrice(level int) decimal.Decimal { if level == 10 { - return r.PurchasePrice.Mul(decimal.NewFromFloat(1.03)).Round(2) + return r.SalePurchasePrice.Mul(decimal.NewFromFloat(1.03)).Round(2) } - s1 := r.PurchasePrice.Mul(decimal.NewFromFloat(1.03)).Round(2) - s1 = s1.Add(r.DiscountPrice.Sub(r.PurchasePrice).Mul(decimal.NewFromFloat(0.2)).Round(2)) + s1 := r.SalePurchasePrice.Mul(decimal.NewFromFloat(1.03)).Round(2) + s1 = s1.Add(r.DiscountPrice.Sub(r.SalePurchasePrice).Mul(decimal.NewFromFloat(0.2)).Round(2)) return s1.Round(2) }