Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
黄成意
/
go_sku_server
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
5ac25511
authored
Mar 06, 2025
by
杨树贤
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
temp
parent
d46316c8
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
37 additions
and
10 deletions
service/service_ly.go
service/service_ly_common.go
service/service_price.go
service/service_ly.go
View file @
5ac25511
...
...
@@ -41,6 +41,8 @@ func (ls *LyService) LyGoodsDetail(ctx *gin.Context, goodsIds []string, ch chan
redisConnSpu
.
Close
()
}()
//各种展示条件
//是否快速展示
fast
:=
ctx
.
Request
.
FormValue
(
"power[fast]"
)
//是否展示属性
showAttr
:=
ctx
.
Request
.
FormValue
(
"show_attr"
)
...
...
@@ -67,7 +69,7 @@ func (ls *LyService) LyGoodsDetail(ctx *gin.Context, goodsIds []string, ch chan
sku
:=
model
.
InitSkuData
(
skuStr
)
sku
.
GoodsId
=
goodsId
spu
:=
spuList
[
sku
.
SpuId
]
//读取包装字段的缓存
//读取包装字段的缓存
(分别是DGK,avnet,mro)
if
sku
.
SupplierId
==
7
||
sku
.
SupplierId
==
13
||
sku
.
SupplierId
==
1688
{
//sku_raw_map哪里写入(成意写的)
packing
,
_
:=
redis
.
String
(
redisConnSpu
.
Do
(
"HGET"
,
"sku_raw_map"
,
goodsId
))
...
...
@@ -94,6 +96,7 @@ func (ls *LyService) LyGoodsDetail(ctx *gin.Context, goodsIds []string, ch chan
brandId
:=
gjson
.
Get
(
spu
,
"brand_id"
)
.
Int
()
brandName
,
_
:=
redis
.
String
(
redisConn
.
Do
(
"HGET"
,
"brand"
,
brandId
))
sku
.
BrandName
=
brandName
sku
.
BrandId
=
brandId
//判断是否要取精简信息
if
fast
!=
"1"
{
...
...
@@ -150,7 +153,6 @@ func (ls *LyService) LyGoodsDetail(ctx *gin.Context, goodsIds []string, ch chan
//处理活动
sku
.
AcType
=
0
sku
.
AllowCoupon
=
1
sku
.
BrandId
=
brandId
//这里获取活动价格和活动类型
sku
=
ls
.
GetActivity
(
sku
)
...
...
@@ -169,16 +171,26 @@ func (ls *LyService) LyGoodsDetail(ctx *gin.Context, goodsIds []string, ch chan
//这里又有一个判断,如果是非猎芯的,目前只有爱智,通过org_id来判断,如果是爱智,不需要走价格体系
//1是猎芯,3是爱智
switch
sku
.
OrgId
{
//case为0是为了兼容价格体系之前的价格
case
0
:
case
1
:
case
3
:
//如果是寄售的,也不走价格体系
if
sku
.
Source
!=
12
{
//获取系数和价格
sku
=
ls
.
GetCoefficientAndPrice
(
sku
)
//这里还有个特殊判断,要兼容华云改价格体系之前的老数据
//判断组织是3并且阶梯价数量为2的就是老数据
if
sku
.
OrgId
==
3
&&
len
(
sku
.
LadderPrice
)
==
2
{
priceService
:=
PriceService
{}
sku
.
LadderPrice
=
priceService
.
GetIEdgePrice
(
sku
.
LadderPrice
)
}
else
{
//这里猎芯和华云都是走同一套的价格体系了
//获取系数和价格
sku
=
ls
.
GetCoefficientAndPrice
(
sku
)
}
}
break
case
3
:
priceService
:=
PriceService
{}
sku
.
LadderPrice
=
priceService
.
GetIEdgePrice
(
sku
.
LadderPrice
)
default
:
break
}
...
...
service/service_ly_common.go
View file @
5ac25511
...
...
@@ -287,18 +287,23 @@ func (ls *LyService) CombineSup(sku model.LySku, spuStr string) model.LySku {
// 获取系数和总体价格,生成和处理价格的方法,很重要
func
(
ls
*
LyService
)
GetCoefficientAndPrice
(
sku
model
.
LySku
)
model
.
LySku
{
//没有阶梯价格,直接跳过
if
len
(
sku
.
LadderPrice
)
==
0
{
//sku.Original = nil
return
sku
}
priceService
:=
PriceService
{}
flag
:=
0
var
data
[]
model
.
LadderPrice
var
originalPrice
[]
model
.
OriginPrice
sort
.
Sort
(
sorter
.
OriginPriceSorter
(
sku
.
OriginalPrice
))
//专卖价格获取
if
sku
.
SupplierId
==
17
{
ladderPrice
:=
sku
.
LadderPrice
//这里是存了一些特殊供应商价格的判断,数据库里不是所有供应商都是存的人民币/美金
sku
=
priceService
.
TransformSpecialSupplierPrice
(
sku
)
//判断redis里面是否有成本价,有的话,那就直接去取价格,不需要生成阶梯价
//如果没有成本价字段,就要去生成阶梯价格
...
...
@@ -306,9 +311,9 @@ func (ls *LyService) GetCoefficientAndPrice(sku model.LySku) model.LySku {
if
ladderPrice
[
0
]
.
PriceCostUs
==
0
&&
ladderPrice
[
0
]
.
PriceCostCn
==
0
{
sku
=
priceService
.
GenerateLadderPrice
(
sku
)
ladderPrice
=
sku
.
LadderPrice
//fmt.Println(ladderPrice)
}
}
//获取折扣系数
sku
=
priceService
.
GetDiscountRatio
(
sku
)
data
=
make
([]
model
.
LadderPrice
,
len
(
ladderPrice
))
...
...
service/service_price.go
View file @
5ac25511
package
service
import
(
"github.com/gogf/gf/util/gconv"
"github.com/gomodule/redigo/redis"
"github.com/syyongx/php2go"
"github.com/tidwall/gjson"
...
...
@@ -17,6 +18,7 @@ type PriceService struct {
}
// 构建专营的阶梯价,现在专营只会存一个简单的成本价,阶梯数量是1,所以我这边要根据专营的阶梯系数去构建具体的阶梯价
// 还要需要注意的一点是,价格体系改版后华云的sku,也会进入这个判断,毕竟华云的sku也是属于专营的
func
(
ps
*
PriceService
)
GenerateLadderPrice
(
sku
model
.
LySku
)
model
.
LySku
{
//需要展示的价格系数
var
showPriceRatioList
[]
model
.
PriceRatio
...
...
@@ -32,7 +34,13 @@ func (ps *PriceService) GenerateLadderPrice(sku model.LySku) model.LySku {
defer
redisCon
.
Close
()
//找一个标志位,因为默认的全局折扣系数的数据格式和非全局的是不一样的
isDefaultPriceRatio
:=
false
priceRatioCache
,
_
:=
redis
.
String
(
redisCon
.
Do
(
"HGET"
,
"magic_cube_price_rule_v2"
,
sku
.
Canal
))
//这里很关键,因为华云也要兼容到猎芯的价格体系,所以缓存里面也有了华云的售价组,但是猎芯存的哈希对应的key是 供应商编码(L002323)
//而华云(或者以后的新组织),存的哈希对应的key是 供应商编码_组织ID (L00232_3)
ruleKey
:=
sku
.
Canal
if
sku
.
OrgId
!=
1
{
ruleKey
=
sku
.
Canal
+
"_"
+
gconv
.
String
(
sku
.
OrgId
)
}
priceRatioCache
,
_
:=
redis
.
String
(
redisCon
.
Do
(
"HGET"
,
"magic_cube_price_rule_v2"
,
ruleKey
))
//判断是否是空
checkNullRation
:=
gjson
.
Get
(
priceRatioCache
,
ratioDataKey
)
.
String
()
//如果这个渠道没有对应的折扣系数,那么就去读取全局的
...
...
@@ -185,9 +193,11 @@ func (ps *PriceService) GenerateLadderPrice(sku model.LySku) model.LySku {
}
//fmt.Println("最低利润点阶梯数 : ", ladderPriceMiniProfitLevel)
var
generatedLadderPrice
[]
model
.
LadderPrice
//先直接获取成本价原始值,判断第一个阶梯的阶梯数量是否为0,如果是0,那么代表是要走成本价生成,如果不是0,那么就要走阶梯价生成
firstLadderPurchases
:=
sku
.
LadderPrice
[
0
]
.
Purchases
isCostPrice
:=
bool
(
firstLadderPurchases
==
0
)
//判断是否走成本价判断还是走阶梯价判断,因为上传sku的时候,可以设置每个sku的成本价(人民币&&美金),也可以设置每个sku的阶梯价
//如果有阶梯价,就要跳过设置的成本价(假设有设置的话)
if
isCostPrice
{
...
...
@@ -196,7 +206,7 @@ func (ps *PriceService) GenerateLadderPrice(sku model.LySku) model.LySku {
costPriceUs
:=
sku
.
LadderPrice
[
0
]
.
PriceUs
//fmt.Println("人民币和美金的成本价分别为 : ", costPriceCn, costPriceUs)
//先去判断起订量,如果起订量小于50,就要走固定配置的阶梯系数
if
sku
.
Moq
<=
50
{
if
sku
.
Moq
<=
50
&&
sku
.
OrgId
==
1
{
moq
:=
int
(
sku
.
Moq
)
fixedRatio
:=
make
(
map
[
int
]
float64
)
//当起订量是小于等于50的时候,阶梯数量和阶梯数是固定的,但是具体的利润还是要去取配置的值,因为固定死的阶梯数量是5,所以这边要直接取魔方配置9个的后5个
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment