删除分类调价比例

This commit is contained in:
gazebo
2019-09-25 10:28:54 +08:00
parent 4e63f526f2
commit 15d16c41a6
6 changed files with 26 additions and 40 deletions

View File

@@ -131,7 +131,7 @@ func ActStoreSkuParam2Model(ctx *jxcontext.Context, db *dao.DaoDB, act *model.Ac
VendorID: vendorID, VendorID: vendorID,
SyncStatus: model.SyncFlagNewMask, SyncStatus: model.SyncFlagNewMask,
VendorPrice: int64(jxutils.CaculateSkuVendorPrice(storeSkuInfo.Price, pricePercentage, 0)), VendorPrice: int64(jxutils.CaculateSkuVendorPrice(storeSkuInfo.Price, pricePercentage)),
} }
v.OriginalPrice = actSkuMap.VendorPrice v.OriginalPrice = actSkuMap.VendorPrice
if act.Type == model.ActSkuFake { if act.Type == model.ActSkuFake {
@@ -144,7 +144,7 @@ func ActStoreSkuParam2Model(ctx *jxcontext.Context, db *dao.DaoDB, act *model.Ac
if v.PricePercentage != 0 { if v.PricePercentage != 0 {
percentage = v.PricePercentage percentage = v.PricePercentage
} }
actSkuMap.ActualActPrice = int64(jxutils.CaculateSkuVendorPrice(int(actSkuMap.VendorPrice), percentage, 0)) actSkuMap.ActualActPrice = int64(jxutils.CaculateSkuVendorPrice(int(actSkuMap.VendorPrice), percentage))
if actSkuMap.ActualActPrice > 10 { if actSkuMap.ActualActPrice > 10 {
actSkuMap.ActualActPrice = int64(math.Round(float64(actSkuMap.ActualActPrice)/10) * 10) actSkuMap.ActualActPrice = int64(math.Round(float64(actSkuMap.ActualActPrice)/10) * 10)
} }

View File

@@ -1847,8 +1847,8 @@ func RefreshStoresSkuByVendor(ctx *jxcontext.Context, storeIDs []int, vendorID i
for _, v := range storeSkuList { for _, v := range storeSkuList {
pricePercentage := jxutils.GetPricePercentageByVendorPrice(storeMap[v.StoreID].PricePercentagePackObj, v.Price, int(storeMap[v.StoreID].PricePercentage)) pricePercentage := jxutils.GetPricePercentageByVendorPrice(storeMap[v.StoreID].PricePercentagePackObj, v.Price, int(storeMap[v.StoreID].PricePercentage))
skuName := skuNameMap[skuMap[v.SkuID].NameID] skuName := skuNameMap[skuMap[v.SkuID].NameID]
v.Price = jxutils.CaculateSkuPriceFromVendor(v.Price, pricePercentage, 0) v.Price = jxutils.CaculateSkuPriceFromVendor(v.Price, pricePercentage)
v.UnitPrice = jxutils.CaculateSkuPriceFromVendor(skuName.Price, pricePercentage, 0) v.UnitPrice = jxutils.CaculateSkuPriceFromVendor(skuName.Price, pricePercentage)
dao.WrapAddIDCULDEntity(v, ctx.GetUserName()) dao.WrapAddIDCULDEntity(v, ctx.GetUserName())
setStoreSkuBindStatus(v, model.SyncFlagNewMask) setStoreSkuBindStatus(v, model.SyncFlagNewMask)
v.JdSyncStatus = 0 v.JdSyncStatus = 0

View File

@@ -203,7 +203,7 @@ func storeSkuSyncInfo2Bare(inSku *dao.StoreSkuSyncInfo) (outSku *partner.StoreSk
func calVendorPrice4StoreSku(inSku *dao.StoreSkuSyncInfo, pricePercentagePack model.PricePercentagePack, pricePercentage int) (outSku *dao.StoreSkuSyncInfo) { func calVendorPrice4StoreSku(inSku *dao.StoreSkuSyncInfo, pricePercentagePack model.PricePercentagePack, pricePercentage int) (outSku *dao.StoreSkuSyncInfo) {
if inSku.VendorPrice <= 0 { // 避免重新计算 if inSku.VendorPrice <= 0 { // 避免重新计算
pricePercentage = jxutils.GetPricePercentage(pricePercentagePack, int(inSku.Price), pricePercentage) pricePercentage = jxutils.GetPricePercentage(pricePercentagePack, int(inSku.Price), pricePercentage)
inSku.VendorPrice = int64(jxutils.CaculateSkuVendorPrice(int(inSku.Price), pricePercentage, 0)) inSku.VendorPrice = int64(jxutils.CaculateSkuVendorPrice(int(inSku.Price), pricePercentage))
if inSku.VendorPrice <= 0 { if inSku.VendorPrice <= 0 {
inSku.VendorPrice = 1 // 最少1分钱 inSku.VendorPrice = 1 // 最少1分钱
} }

View File

@@ -197,6 +197,10 @@ func StringList2Map(strList []string) map[string]int {
return retVal return retVal
} }
func GetSliceLen(list interface{}) int {
return reflect.ValueOf(list).Len()
}
func RegularizeSkuQuality(specQuality float32, specUnit string) (g int) { func RegularizeSkuQuality(specQuality float32, specUnit string) (g int) {
lowerSpecUnit := strings.ToLower(specUnit) lowerSpecUnit := strings.ToLower(specUnit)
if lowerSpecUnit == "kg" || lowerSpecUnit == "l" { if lowerSpecUnit == "kg" || lowerSpecUnit == "l" {
@@ -235,40 +239,28 @@ func CaculateUnitPrice(skuPrice int, specQuality float32, specUnit string, skuNa
// } else if specQuality2 < 500 { // } else if specQuality2 < 500 {
// unitPrice = unitPrice * 100 / 105 // unitPrice = unitPrice * 100 / 105
// } // }
if unitPrice <= 0 { if unitPrice <= 1 {
unitPrice = 1 unitPrice = 1
} }
return unitPrice return unitPrice
} }
func GetSliceLen(list interface{}) int { func CaculateSkuVendorPrice(price, percentage int) (vendorPrice int) {
return reflect.ValueOf(list).Len()
}
func CaculateSkuVendorPrice(price, percentage, catPercentage int) int {
if percentage <= 10 || percentage >= 400 { if percentage <= 10 || percentage >= 400 {
percentage = 100 percentage = 100
} }
if catPercentage <= 10 || catPercentage >= 400 { vendorPrice = int(math.Round(float64(price*percentage) / 100))
catPercentage = 100
}
percentage = percentage * catPercentage / 100
vendorPrice := int(math.Round(float64(price*percentage) / 100))
if vendorPrice < 0 { if vendorPrice < 0 {
vendorPrice = 0 vendorPrice = 0
} }
return vendorPrice return vendorPrice
} }
func CaculateSkuPriceFromVendor(vendorPrice, percentage, catPercentage int) int { func CaculateSkuPriceFromVendor(vendorPrice, percentage int) (price int) {
if percentage <= 10 || percentage >= 400 { if percentage <= 10 || percentage >= 400 {
percentage = 100 percentage = 100
} }
if catPercentage <= 10 || catPercentage >= 400 { price = int(math.Round(float64(vendorPrice) * 100 / float64(percentage)))
catPercentage = 100
}
percentage = percentage * catPercentage / 100
price := int(math.Round(float64(vendorPrice) * 100 / float64(percentage)))
if price < 0 { if price < 0 {
price = 0 price = 0
} }
@@ -297,7 +289,7 @@ func GetPricePercentageByVendorPrice(l model.PricePercentagePack, vendorPrice in
if len(l) > 0 { if len(l) > 0 {
var lastItem *model.PricePercentageItem var lastItem *model.PricePercentageItem
for _, v := range l { for _, v := range l {
if CaculateSkuVendorPrice(v.BeginPrice, v.PricePercentage, 0) > vendorPrice { if CaculateSkuVendorPrice(v.BeginPrice, v.PricePercentage) > vendorPrice {
break break
} }
lastItem = v lastItem = v

View File

@@ -58,7 +58,7 @@ type StoreSkuSyncInfo struct {
// 平台相关的图片信息 // 平台相关的图片信息
Img string Img string
DescImg string DescImg string // 饿百是SkuName中的DescImgEbai
VendorVendorCatID int64 `orm:"column(vendor_vendor_cat_id)"` // 平台商品分类(叶子结点) VendorVendorCatID int64 `orm:"column(vendor_vendor_cat_id)"` // 平台商品分类(叶子结点)
@@ -75,8 +75,6 @@ type StoreSkuSyncInfo struct {
StoreCatSyncStatus int8 StoreCatSyncStatus int8
VendorCatID string `orm:"column(vendor_cat_id)"` VendorCatID string `orm:"column(vendor_cat_id)"`
CatPricePercentage int
VendorPrice int64 VendorPrice int64
MergedStatus int MergedStatus int
SkuName string SkuName string
@@ -221,11 +219,11 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, isDirty bool)
t1.%s_sync_status store_sku_sync_status, %s vendor_name_id, t1.store_id, t1.deleted_at bind_deleted_at, t1.%s_sync_status store_sku_sync_status, %s vendor_name_id, t1.store_id, t1.deleted_at bind_deleted_at,
t2.*, t2.*,
t3.id name_id, t3.prefix, t3.name, t3.unit, IF(t3.%s <> '', t3.%s, t3.img) img, t3.upc, t3.%s desc_img, t3.id name_id, t3.prefix, t3.name, t3.unit, IF(t3.%s <> '', t3.%s, t3.img) img, t3.upc, t3.%s desc_img,
t4.%s_category_id vendor_vendor_cat_id, t4.%s_price_percentage cat_price_percentage t4.%s_category_id vendor_vendor_cat_id
` `
fmtParams := []interface{}{ fmtParams := []interface{}{
tableName, fieldPrefix, fieldPrefix, vendorSkuNameField, GetImgFieldName(vendorID), GetImgFieldName(vendorID), GetDescImgFieldName(vendorID), tableName, fieldPrefix, fieldPrefix, vendorSkuNameField, GetImgFieldName(vendorID),
fieldPrefix, fieldPrefix, GetImgFieldName(vendorID), GetDescImgFieldName(vendorID), fieldPrefix,
} }
// if vendorID == model.VendorIDEBAI { // if vendorID == model.VendorIDEBAI {
// sql += `, // sql += `,
@@ -312,7 +310,7 @@ func GetFullStoreSkus(db *DaoDB, vendorID, storeID int) (skus []*StoreSkuSyncInf
SELECT t1.id bind_id, t1.price, t1.unit_price, t1.status store_sku_status, t2.%s_id vendor_sku_id, SELECT t1.id bind_id, t1.price, t1.unit_price, t1.status store_sku_status, t2.%s_id vendor_sku_id,
t1.%s_sync_status store_sku_sync_status, t1.store_id, t1.deleted_at bind_deleted_at, t1.%s_sync_status store_sku_sync_status, t1.store_id, t1.deleted_at bind_deleted_at,
t2.*, t2.id sku_id, t2.*, t2.id sku_id,
t3.id name_id, t3.prefix, t3.name, t3.unit, IF(t3.%s <> '', t3.%s, t3.img) img, t3.id name_id, t3.prefix, t3.name, t3.unit, IF(t3.%s <> '', t3.%s, t3.img) img, t3.upc, t3.desc_img,
t4.%s_category_id vendor_vendor_cat_id, t4.%s_category_id vendor_vendor_cat_id,
t4.%s_sync_status store_cat_sync_status, t4.%s_id vendor_cat_id, t4.%s_sync_status store_cat_sync_status, t4.%s_id vendor_cat_id,
t5sku.%s_sync_status sku_store_cat_sync_status, t5sku.%s_id sku_vendor_cat_id t5sku.%s_sync_status sku_store_cat_sync_status, t5sku.%s_id sku_vendor_cat_id

View File

@@ -135,15 +135,11 @@ type SkuCategory struct {
Type int8 `json:"type"` // 类别类型,即是普通类别还是特殊用于做活动的类别 Type int8 `json:"type"` // 类别类型,即是普通类别还是特殊用于做活动的类别
Seq int `json:"seq"` Seq int `json:"seq"`
JdPricePercentage int16 `orm:"default(100)" json:"jdPricePercentage"`
EbaiPricePercentage int16 `orm:"default(100)" json:"ebaiPricePercentage"`
MtwmPricePercentage int16 `orm:"default(100)" json:"mtwmPricePercentage"`
WscPricePercentage int16 `orm:"default(100)" json:"wscPricePercentage"`
JdCategoryID int64 `orm:"column(jd_category_id)" json:"jdCategoryID"` // 这个是指对应的京东商品类别 JdCategoryID int64 `orm:"column(jd_category_id)" json:"jdCategoryID"` // 这个是指对应的京东商品类别
ElmCategoryID int64 `orm:"column(elm_category_id)" json:"elmCategoryID"` // 这个是指对应的饿了么商品类别
EbaiCategoryID int64 `orm:"column(ebai_category_id)" json:"ebaiCategoryID"` // 这个是指对应的饿百商品类别 EbaiCategoryID int64 `orm:"column(ebai_category_id)" json:"ebaiCategoryID"` // 这个是指对应的饿百商品类别
MtwmCategoryID int64 `orm:"column(mtwm_category_id)" json:"mtwmCategoryID"` // 这个是指对应的美团外卖商品类别 MtwmCategoryID int64 `orm:"column(mtwm_category_id)" json:"mtwmCategoryID"` // 这个是指对应的美团外卖商品类别
ElmCategoryID int64 `orm:"column(elm_category_id)" json:"elmCategoryID"` // 这个是指对应的饿了么商品类别
WscCategoryID int64 `orm:"column(wsc_category_id)" json:"wscCategoryID"` // 这个是指对应的美团外卖商品类别 WscCategoryID int64 `orm:"column(wsc_category_id)" json:"wscCategoryID"` // 这个是指对应的美团外卖商品类别
JdID int64 `orm:"column(jd_id);null" json:"jdID"` // 这个是指商家自己的商品类别在京东平台上的ID JdID int64 `orm:"column(jd_id);null" json:"jdID"` // 这个是指商家自己的商品类别在京东平台上的ID
@@ -201,13 +197,13 @@ type SkuName struct {
ImgEbai string `orm:"size(255)" json:"imgEbai"` // 饿百图片地址 ImgEbai string `orm:"size(255)" json:"imgEbai"` // 饿百图片地址
ImgHashCode string `orm:"size(255);index" json:"img_hash_code"` ImgHashCode string `orm:"size(255);index" json:"img_hash_code"`
DescImg string `orm:"size(255)" json:"descImg"` // 商品详情图片描述
DescImgEbai string `orm:"size(255)" json:"descImgEbai"` // 饿百的商品详情图片描述RTF
Upc string `orm:"size(20);index"` Upc string `orm:"size(20);index"`
Status int `orm:"default(1)" json:"status"` // skuname状态取值同sku.Status Status int `orm:"default(1)" json:"status"` // skuname状态取值同sku.Status
IsSpu int8 `orm:"column(is_spu)" json:"isSpu"` // 用于指明是否SKUNAME当成SPU IsSpu int8 `orm:"column(is_spu)" json:"isSpu"` // 用于指明是否SKUNAME当成SPU
DescImg string `orm:"size(255)" json:"descImg"` // 商品详情图片描述
DescImgEbai string `orm:"size(255)" json:"descImgEbai"` // 饿百的商品详情图片描述RTF
JdID int64 `orm:"column(jd_id);null;index" json:"jdID"` JdID int64 `orm:"column(jd_id);null;index" json:"jdID"`
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"` JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`