Commit 56c2b210 by 杨树贤

Merge branch 'ysx-商品活动价逻辑修改-20230823'

parents 94765a4c 0481f707
...@@ -44,6 +44,7 @@ type Activity struct { ...@@ -44,6 +44,7 @@ type Activity struct {
ExcludeStandardBrandIdList []string ExcludeStandardBrandIdList []string
CurrencyRmb int `json:"currency_rmb"` CurrencyRmb int `json:"currency_rmb"`
CurrencyUs int `json:"currency_us"` CurrencyUs int `json:"currency_us"`
UseType int `json:"use_type"`
} }
type ActivityItem struct { type ActivityItem struct {
...@@ -58,9 +59,10 @@ type ActivityItem struct { ...@@ -58,9 +59,10 @@ type ActivityItem struct {
AddTime int `json:"add_time"` AddTime int `json:"add_time"`
} }
//用于检查是否有活动情况的结构体 // 用于检查是否有活动情况的结构体
type ActivityCheckData struct { type ActivityCheckData struct {
SupplierId int SupplierId int
GoodsName string
BrandId int BrandId int
StandardBrandId int StandardBrandId int
GoodsId string GoodsId string
......
...@@ -5,6 +5,7 @@ import ( ...@@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"go_sku_server/model" "go_sku_server/model"
"go_sku_server/pkg/gredis" "go_sku_server/pkg/gredis"
"strconv"
"strings" "strings"
"time" "time"
...@@ -16,7 +17,7 @@ import ( ...@@ -16,7 +17,7 @@ import (
type ActivityService struct { type ActivityService struct {
} }
//获取活动信息,目前是包括促销活动(系数打折)以及满赠活动 // 获取活动信息,目前是包括促销活动(系数打折)以及满赠活动
func (as *ActivityService) GetActivityData(checkData model.ActivityCheckData) (priceActivity model.PriceActivity, giftActivity model.GiftActivity) { func (as *ActivityService) GetActivityData(checkData model.ActivityCheckData) (priceActivity model.PriceActivity, giftActivity model.GiftActivity) {
supplierId := checkData.SupplierId supplierId := checkData.SupplierId
redisCon := gredis.Conn("default_r") redisCon := gredis.Conn("default_r")
...@@ -36,7 +37,7 @@ func (as *ActivityService) GetActivityData(checkData model.ActivityCheckData) (p ...@@ -36,7 +37,7 @@ func (as *ActivityService) GetActivityData(checkData model.ActivityCheckData) (p
return return
} }
//获取满赠活动信息 // 获取满赠活动信息
func (as *ActivityService) GetGiftActivity(checkData model.ActivityCheckData, activities []model.Activity) (giftActivity model.GiftActivity) { func (as *ActivityService) GetGiftActivity(checkData model.ActivityCheckData, activities []model.Activity) (giftActivity model.GiftActivity) {
var hasActivity bool var hasActivity bool
nowTimestamp := int(time.Now().Unix()) nowTimestamp := int(time.Now().Unix())
...@@ -105,6 +106,8 @@ func (as *ActivityService) GetGiftActivity(checkData model.ActivityCheckData, ac ...@@ -105,6 +106,8 @@ func (as *ActivityService) GetGiftActivity(checkData model.ActivityCheckData, ac
} }
func (as *ActivityService) GetPriceActivity(checkData model.ActivityCheckData, activities []model.Activity) (priceActivity model.PriceActivity) { func (as *ActivityService) GetPriceActivity(checkData model.ActivityCheckData, activities []model.Activity) (priceActivity model.PriceActivity) {
redisConn := gredis.Conn("default_r")
defer redisConn.Close()
var hasActivity bool var hasActivity bool
nowTimestamp := int(time.Now().Unix()) nowTimestamp := int(time.Now().Unix())
for _, activity := range activities { for _, activity := range activities {
...@@ -128,7 +131,23 @@ func (as *ActivityService) GetPriceActivity(checkData model.ActivityCheckData, a ...@@ -128,7 +131,23 @@ func (as *ActivityService) GetPriceActivity(checkData model.ActivityCheckData, a
//如果是专卖,则要去判断canal,如果是自营,则去判断分类 //如果是专卖,则要去判断canal,如果是自营,则去判断分类
if checkData.SupplierId == 17 { if checkData.SupplierId == 17 {
if as.CheckCanal(checkData.Canal, activity) { if checkData.Canal != "" {
if !as.CheckCanal(checkData.Canal, activity) {
continue
}
}
if activity.UseType == 2 {
//判断商品名称是否在redis
redisKey := "lie_activity_and_coupon_sku_" + strconv.Itoa(activity.ActivityId)
exists, _ := redis.Bool(redisConn.Do("hexists", redisKey, checkData.GoodsName))
//fmt.Println(checkData.GoodsName)
//fmt.Println(exists)
if exists {
hasActivity = true
goto INFO
}
} else {
//不等于2都是根据品牌来,因为老数据以前也只有品牌,0和1都是品牌
//品牌不为空,还要去判断品牌,是同时满足的关系 //品牌不为空,还要去判断品牌,是同时满足的关系
if activity.StandardBrandIds != "" { if activity.StandardBrandIds != "" {
//判断是否是搞活动的品牌 //判断是否是搞活动的品牌
...@@ -141,6 +160,7 @@ func (as *ActivityService) GetPriceActivity(checkData model.ActivityCheckData, a ...@@ -141,6 +160,7 @@ func (as *ActivityService) GetPriceActivity(checkData model.ActivityCheckData, a
goto INFO goto INFO
} }
} }
} else if checkData.SupplierId == 10000 { } else if checkData.SupplierId == 10000 {
//自营活动特殊判断 //自营活动特殊判断
//判断活动指定的渠道编码,品牌,分类id,如果都为空,那么这个活动可以理解为整个供应商了,上面的排除已经会提前去判断了 //判断活动指定的渠道编码,品牌,分类id,如果都为空,那么这个活动可以理解为整个供应商了,上面的排除已经会提前去判断了
...@@ -162,11 +182,30 @@ func (as *ActivityService) GetPriceActivity(checkData model.ActivityCheckData, a ...@@ -162,11 +182,30 @@ func (as *ActivityService) GetPriceActivity(checkData model.ActivityCheckData, a
} }
} }
} else { } else {
//这是针对代购的
//判断是否是搞活动的品牌
if activity.UseType == 2 {
//判断商品名称是否在redis
redisKey := "lie_activity_and_coupon_sku_" + strconv.Itoa(activity.ActivityId)
exists, _ := redis.Bool(redisConn.Do("hexists", redisKey, checkData.GoodsName))
if exists {
hasActivity = true
goto INFO
}
} else {
//不等于2都是根据品牌来,因为老数据以前也只有品牌,0和1都是品牌
//品牌不为空,还要去判断品牌,是同时满足的关系
if activity.StandardBrandIds != "" {
//判断是否是搞活动的品牌 //判断是否是搞活动的品牌
if as.CheckStandardBrand(checkData.StandardBrandId, activity) { if as.CheckStandardBrand(checkData.StandardBrandId, activity) {
hasActivity = true hasActivity = true
goto INFO goto INFO
} }
} else {
hasActivity = true
goto INFO
}
}
} }
INFO: INFO:
if hasActivity { if hasActivity {
...@@ -203,7 +242,7 @@ func (as *ActivityService) GetPriceActivity(checkData model.ActivityCheckData, a ...@@ -203,7 +242,7 @@ func (as *ActivityService) GetPriceActivity(checkData model.ActivityCheckData, a
return return
} }
//检查是否属于被排除的品牌 // 检查是否属于被排除的品牌
func (as *ActivityService) CheckExcludeBrand(brandId int, activity model.Activity) bool { func (as *ActivityService) CheckExcludeBrand(brandId int, activity model.Activity) bool {
if brandId == 0 { if brandId == 0 {
return false return false
...@@ -218,7 +257,7 @@ func (as *ActivityService) CheckExcludeBrand(brandId int, activity model.Activit ...@@ -218,7 +257,7 @@ func (as *ActivityService) CheckExcludeBrand(brandId int, activity model.Activit
return false return false
} }
//检查是否属于被排除的标准品牌 // 检查是否属于被排除的标准品牌
func (as *ActivityService) CheckExcludeStandardBrand(standardBrandId int, activity model.Activity) bool { func (as *ActivityService) CheckExcludeStandardBrand(standardBrandId int, activity model.Activity) bool {
if standardBrandId == 0 { if standardBrandId == 0 {
return false return false
...@@ -233,7 +272,7 @@ func (as *ActivityService) CheckExcludeStandardBrand(standardBrandId int, activi ...@@ -233,7 +272,7 @@ func (as *ActivityService) CheckExcludeStandardBrand(standardBrandId int, activi
return false return false
} }
//检查是否属于被排除的sku // 检查是否属于被排除的sku
func (as *ActivityService) CheckExcludeSku(skuId string, activity model.Activity) bool { func (as *ActivityService) CheckExcludeSku(skuId string, activity model.Activity) bool {
if skuId == "" { if skuId == "" {
return false return false
...@@ -247,7 +286,7 @@ func (as *ActivityService) CheckExcludeSku(skuId string, activity model.Activity ...@@ -247,7 +286,7 @@ func (as *ActivityService) CheckExcludeSku(skuId string, activity model.Activity
return false return false
} }
//检查是否属于活动分类(只有自营需要判断) // 检查是否属于活动分类(只有自营需要判断)
func (as *ActivityService) CheckClass(classId int, activity model.Activity) bool { func (as *ActivityService) CheckClass(classId int, activity model.Activity) bool {
if classId == 0 { if classId == 0 {
return false return false
...@@ -262,7 +301,7 @@ func (as *ActivityService) CheckClass(classId int, activity model.Activity) bool ...@@ -262,7 +301,7 @@ func (as *ActivityService) CheckClass(classId int, activity model.Activity) bool
return false return false
} }
//检查是否属于活动品牌 // 检查是否属于活动品牌
func (as *ActivityService) CheckBrand(brandId int, activity model.Activity) bool { func (as *ActivityService) CheckBrand(brandId int, activity model.Activity) bool {
if brandId == 0 { if brandId == 0 {
return false return false
...@@ -277,7 +316,7 @@ func (as *ActivityService) CheckBrand(brandId int, activity model.Activity) bool ...@@ -277,7 +316,7 @@ func (as *ActivityService) CheckBrand(brandId int, activity model.Activity) bool
return false return false
} }
//检测是否属于活动标准品牌 // 检测是否属于活动标准品牌
func (as *ActivityService) CheckStandardBrand(standardBrandId int, activity model.Activity) bool { func (as *ActivityService) CheckStandardBrand(standardBrandId int, activity model.Activity) bool {
if standardBrandId == 0 { if standardBrandId == 0 {
return false return false
...@@ -292,7 +331,7 @@ func (as *ActivityService) CheckStandardBrand(standardBrandId int, activity mode ...@@ -292,7 +331,7 @@ func (as *ActivityService) CheckStandardBrand(standardBrandId int, activity mode
return false return false
} }
//检查是否属于供应商渠道 // 检查是否属于供应商渠道
func (as *ActivityService) CheckCanal(canal string, activity model.Activity) bool { func (as *ActivityService) CheckCanal(canal string, activity model.Activity) bool {
if canal == "" { if canal == "" {
return false return false
......
...@@ -211,6 +211,7 @@ func (ls *LyService) GetActivity(sku model.LySku) model.LySku { ...@@ -211,6 +211,7 @@ func (ls *LyService) GetActivity(sku model.LySku) model.LySku {
GoodsId: sku.GoodsId, GoodsId: sku.GoodsId,
Canal: sku.Canal, Canal: sku.Canal,
ClassId: sku.ClassID2, ClassId: sku.ClassID2,
GoodsName: sku.GoodsName,
} }
var activityService ActivityService var activityService ActivityService
priceActivity, giftActivity := activityService.GetActivityData(checkData) priceActivity, giftActivity := activityService.GetActivityData(checkData)
......
...@@ -294,11 +294,14 @@ func (ls *LyService) GetCoefficientAndPrice(sku model.LySku) model.LySku { ...@@ -294,11 +294,14 @@ func (ls *LyService) GetCoefficientAndPrice(sku model.LySku) model.LySku {
priceUs := c.MyRound(price.PriceUs, 4) priceUs := c.MyRound(price.PriceUs, 4)
priceUs = c.MyRound(c.MulFloat(price.PriceUs, sku.DiscountRatio.RatioUsd), 4) priceUs = c.MyRound(c.MulFloat(price.PriceUs, sku.DiscountRatio.RatioUsd), 4)
data[key].PriceUs = priceUs data[key].PriceUs = priceUs
price.PriceAcUs = priceUs
} }
if price.PriceCn != 0 { if price.PriceCn != 0 {
priceCn := c.MyRound(price.PriceCn, 4) priceCn := c.MyRound(price.PriceCn, 4)
priceCn = c.MyRound(c.MulFloat(price.PriceCn, sku.DiscountRatio.Ratio), 4) priceCn = c.MyRound(c.MulFloat(price.PriceCn, sku.DiscountRatio.Ratio), 4)
data[key].PriceCn = priceCn data[key].PriceCn = priceCn
price.PriceCn = priceCn
} }
//专卖成本价 //专卖成本价
......
...@@ -93,6 +93,7 @@ func (ps *PriceService) GenerateLadderPrice(sku model.LySku) model.LySku { ...@@ -93,6 +93,7 @@ func (ps *PriceService) GenerateLadderPrice(sku model.LySku) model.LySku {
if brandIds != "" { if brandIds != "" {
hasSpecialCheck = true hasSpecialCheck = true
standardBrandIdList := strings.Split(brandIds, ",") standardBrandIdList := strings.Split(brandIds, ",")
//fmt.Println(standardBrandIdList)
standardBrandId := strconv.Itoa(sku.StandardBrand.StandardBrandId) standardBrandId := strconv.Itoa(sku.StandardBrand.StandardBrandId)
//找到有对应的品牌,那么优先级肯定是最高的了 //找到有对应的品牌,那么优先级肯定是最高的了
if php2go.InArray(standardBrandId, standardBrandIdList) { if php2go.InArray(standardBrandId, standardBrandIdList) {
......
...@@ -38,7 +38,7 @@ func (qs *ZiyingService) skuLockNum(c *redis.Conn, goodsId string) int64 { ...@@ -38,7 +38,7 @@ func (qs *ZiyingService) skuLockNum(c *redis.Conn, goodsId string) int64 {
} }
/* /*
获取自营活动价 获取自营活动价
*/ */
func (qs *ZiyingService) ActivityPrice(ctx *gin.Context, SkuInfo string) *orderedmap.OrderedMap { func (qs *ZiyingService) ActivityPrice(ctx *gin.Context, SkuInfo string) *orderedmap.OrderedMap {
data := qs.HDActivityPrice(SkuInfo) data := qs.HDActivityPrice(SkuInfo)
...@@ -48,7 +48,7 @@ func (qs *ZiyingService) ActivityPrice(ctx *gin.Context, SkuInfo string) *ordere ...@@ -48,7 +48,7 @@ func (qs *ZiyingService) ActivityPrice(ctx *gin.Context, SkuInfo string) *ordere
return nil return nil
} }
//获取活动相关信息 // 获取活动相关信息
func (qs *ZiyingService) GetActivity(skuInfo string) (priceActivity model.PriceActivity, giftActivity model.GiftActivity) { func (qs *ZiyingService) GetActivity(skuInfo string) (priceActivity model.PriceActivity, giftActivity model.GiftActivity) {
//去判断是否有活动(促销打折活动和满赠活动) //去判断是否有活动(促销打折活动和满赠活动)
var standardBrandId int var standardBrandId int
...@@ -72,6 +72,7 @@ func (qs *ZiyingService) GetActivity(skuInfo string) (priceActivity model.PriceA ...@@ -72,6 +72,7 @@ func (qs *ZiyingService) GetActivity(skuInfo string) (priceActivity model.PriceA
StandardBrandId: standardBrandId, StandardBrandId: standardBrandId,
GoodsId: gjson.Get(skuInfo, "goods_id").String(), GoodsId: gjson.Get(skuInfo, "goods_id").String(),
ClassId: int(gjson.Get(skuInfo, "class_id2").Int()), ClassId: int(gjson.Get(skuInfo, "class_id2").Int()),
GoodsName: gjson.Get(skuInfo, "goods_name").String(),
} }
var activityService ActivityService var activityService ActivityService
priceActivity, giftActivity = activityService.GetActivityData(checkData) priceActivity, giftActivity = activityService.GetActivityData(checkData)
...@@ -85,7 +86,6 @@ ac_type说明: 0 没有活动 ...@@ -85,7 +86,6 @@ ac_type说明: 0 没有活动
活动名称 ac_type 类型 活动名称 ac_type 类型
自营系数 6 自营 自营系数 6 自营
折扣(系数)活动 10 自营/联营 折扣(系数)活动 10 自营/联营
*/ */
func (qs *ZiyingService) HDActivityPrice(SkuInfo string) *orderedmap.OrderedMap { func (qs *ZiyingService) HDActivityPrice(SkuInfo string) *orderedmap.OrderedMap {
priceActivity, giftActivity := qs.GetActivity(SkuInfo) priceActivity, giftActivity := qs.GetActivity(SkuInfo)
...@@ -132,7 +132,7 @@ func (qs *ZiyingService) HDActivityPrice(SkuInfo string) *orderedmap.OrderedMap ...@@ -132,7 +132,7 @@ func (qs *ZiyingService) HDActivityPrice(SkuInfo string) *orderedmap.OrderedMap
} }
/* /*
获取当前锁住的库存 获取当前锁住的库存
*/ */
func (qs *ZiyingService) HDGoodsLimit(SkuID string, Stock string, c *redis.Conn) *orderedmap.OrderedMap { func (qs *ZiyingService) HDGoodsLimit(SkuID string, Stock string, c *redis.Conn) *orderedmap.OrderedMap {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment