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
6616cd53
authored
Jun 22, 2022
by
mushishixian
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
临时禁止TI购买商品
parent
685089af
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
216 additions
and
212 deletions
service/service_ly.go
service/service_ly.go
View file @
6616cd53
package
service
import
(
"fmt"
"github.com/gin-gonic/gin"
"github.com/gogf/gf/util/gconv"
"github.com/gomodule/redigo/redis"
"github.com/syyongx/php2go"
"github.com/tidwall/gjson"
"go_sku_server/model"
"go_sku_server/pkg/gredis"
"go_sku_server/service/sorter"
"sort"
"sync"
)
type
LyService
struct
{
}
type
Power
struct
{
UserId
string
`json:"user_id"`
Mobile
string
`json:"mobile"`
Email
string
`json:"email"`
Member
string
`json:"member"`
VerifyBlacklist
string
`json:"verify_blacklist"`
Invoice
string
`json:"invoice"`
SpecialInvoice
string
`json:"special_invoice"`
}
/*
联营数据详情
*/
func
(
ls
*
LyService
)
LyGoodsDetail
(
ctx
*
gin
.
Context
,
goodsIds
[]
string
,
ch
chan
sync
.
Map
)
{
redisConn
:=
gredis
.
Conn
(
"search_r"
)
defer
func
()
{
redisConn
.
Close
()
}()
fast
:=
ctx
.
Request
.
FormValue
(
"power[fast]"
)
showAttr
:=
ctx
.
Request
.
FormValue
(
"show_attr"
)
//批量获取商品详情
skuArr
:=
gredis
.
Hmget
(
"default_r"
,
"sku"
,
goodsIds
)
//为了性能着想,这边也先去批量获取spu的信息
var
spuService
SpuService
spuList
:=
spuService
.
getSpuList
(
skuArr
)
GoodsRes
:=
sync
.
Map
{}
for
goodsId
,
skuStr
:=
range
skuArr
{
if
skuStr
==
""
{
GoodsRes
.
Store
(
goodsId
,
false
)
continue
}
//初始化有序map,拼接data 数据
sku
:=
model
.
InitSkuData
(
skuStr
)
sku
.
GoodsId
=
goodsId
spu
:=
spuList
[
sku
.
SpuId
]
//读取包装字段的缓存
if
sku
.
SupplierId
==
7
{
//sku_raw_map哪里写入(成意写的)
packing
,
_
:=
redis
.
String
(
redisConn
.
Do
(
"HGET"
,
"sku_raw_map"
,
goodsId
))
sku
.
Packing
=
gjson
.
Get
(
packing
,
"pack"
)
.
String
()
}
sku
=
ls
.
GetGoodsImages
(
sku
,
spu
)
//pdf
pdf
:=
gjson
.
Get
(
spu
,
"pdf"
)
.
String
()
spuLargeImage
:=
gjson
.
Get
(
spu
,
"images_l"
)
.
String
()
if
pdf
==
""
||
(
php2go
.
Strlen
(
spuLargeImage
)
<
5
)
{
sku
.
Pdf
=
""
}
else
{
sku
.
Pdf
=
pdf
}
//处理分类
//fast的参数含义,为了节省开销性能的参数,传1就不会去分类这些参数
if
fast
!=
"1"
{
sku
=
ls
.
GetGoodsClass
(
sku
,
spu
)
}
//获取商品名称
if
sku
.
GoodsName
==
""
{
sku
.
GoodsName
=
gjson
.
Get
(
spu
,
"spu_name"
)
.
String
()
}
//获取品牌名称
brandId
:=
gjson
.
Get
(
spu
,
"brand_id"
)
.
Int
()
brandName
,
_
:=
redis
.
String
(
redisConn
.
Do
(
"HGET"
,
"brand"
,
brandId
))
sku
.
BrandName
=
brandName
fmt
.
Println
(
showAttr
)
//获取税务信息
if
fast
!=
"1"
{
//仅提供价格和库存
if
sku
.
GoodsName
!=
""
&&
brandId
!=
0
{
sku
.
ErpTax
=
ls
.
GetErpTax
(
sku
.
GoodsName
,
brandName
)
}
sku
.
SupplierName
=
ls
.
GetPoolSupplierName
(
sku
.
SupplierId
)
if
showAttr
==
"1"
{
//获取属性
sku
.
Attrs
=
ls
.
GetSpuAttr
(
sku
.
SpuId
)
}
if
sku
.
Attrs
==
nil
{
sku
.
Attrs
=
[]
interface
{}{}
}
}
//获取供应链标准品牌
//什么是供应链的标准品牌 供应链那边报关的时候要求他们的标准品牌,所以要吧自己的品牌映射上去
//继来那边对接的标准品牌(下单的时候)
sku
.
ScmBrand
=
ls
.
GetScmBrand
(
brandId
)
//获取新版的标准品牌
sku
.
StandardBrand
=
ls
.
GetStandardBrand
(
brandId
)
//处理过期
if
gjson
.
Get
(
skuStr
,
"is_expire"
)
.
Int
()
!=
0
{
sku
.
LadderPrice
=
nil
}
//处理活动
sku
.
AcType
=
0
sku
.
AllowCoupon
=
1
sku
.
BrandId
=
brandId
sku
=
ls
.
GetActivity
(
sku
)
//处理阶梯价数据
if
len
(
sku
.
LadderPrice
)
>
0
{
//排序
sort
.
Sort
(
sorter
.
LadderPriceSorter
(
sku
.
LadderPrice
))
//取出第一个阶梯价
purchases
:=
sku
.
LadderPrice
[
0
]
.
Purchases
if
purchases
>
sku
.
Moq
{
sku
.
Moq
=
purchases
}
}
//获取系数
sku
=
ls
.
GetCoefficient
(
sku
)
//仅提供价格和库存
if
fast
!=
"1"
{
if
sku
.
SupplierId
!=
0
{
sku
.
SuppExtendFee
=
ls
.
GetExtendFee
(
sku
.
SupplierId
,
sku
.
Canal
)
}
//还要处理货期
delivery
:=
ls
.
GetDelivery
(
sku
.
SupplierId
,
sku
.
Canal
)
if
delivery
[
"cn_delivery"
]
!=
""
{
sku
.
CnDeliveryTime
=
delivery
[
"cn_delivery"
]
}
if
delivery
[
"hk_delivery"
]
!=
""
{
sku
.
HkDeliveryTime
=
delivery
[
"hk_delivery"
]
}
}
//处理是否可以购买
if
sku
.
Mpq
==
0
{
sku
.
Mpq
=
1
}
if
len
(
sku
.
LadderPrice
)
>
0
{
sku
.
LadderPriceResult
=
sku
.
LadderPrice
}
else
{
sku
.
LadderPriceResult
=
[]
int
{}
}
//判断是否可以购买
sku
.
IsBuy
=
ls
.
GetIsBuy
(
sku
)
////过期修改库存为0
//if sku.IsExpire == 1 {
// sku.Stock = 0
//}
var
TagService
TagsService
sku
.
GoodsTag
=
TagService
.
GetTags
(
sku
.
GoodsId
,
0
)
//用spuInfo补全信息
sku
=
ls
.
CombineSup
(
sku
,
spu
)
//最后一步,将sku的全部信息放到有序map里面
GoodsRes
.
Store
(
goodsId
,
sku
)
//(*goodsRes)[goodsId] = A
}
ch
<-
GoodsRes
}
//获取活动
func
(
ls
*
LyService
)
GetActivity
(
sku
model
.
LySku
)
model
.
LySku
{
//去判断是否有活动(促销打折活动和满赠活动)
checkData
:=
model
.
ActivityCheckData
{
SupplierId
:
int
(
sku
.
SupplierId
),
BrandId
:
int
(
sku
.
BrandId
),
GoodsId
:
sku
.
GoodsId
,
Canal
:
sku
.
Canal
,
ClassId
:
sku
.
ClassID2
,
}
var
activityService
ActivityService
priceActivity
,
giftActivity
:=
activityService
.
GetActivityData
(
checkData
)
if
priceActivity
.
HasActivity
{
sku
.
AcType
=
10
sku
.
Ratio
=
priceActivity
.
Ratio
sku
.
ActivityInfo
=
priceActivity
}
if
giftActivity
.
HasActivity
{
sku
.
HasGiftActivity
=
gconv
.
Int
(
giftActivity
.
HasActivity
)
sku
.
GiftActivity
=
giftActivity
}
//获取是否能使用优惠券
if
giftActivity
.
AllowCoupon
==
2
||
priceActivity
.
AllowCoupon
==
2
{
sku
.
AllowCoupon
=
2
}
return
sku
}
package
service
import
(
"fmt"
"go_sku_server/model"
"go_sku_server/pkg/gredis"
"go_sku_server/service/sorter"
"sort"
"sync"
"github.com/gin-gonic/gin"
"github.com/gogf/gf/util/gconv"
"github.com/gomodule/redigo/redis"
"github.com/syyongx/php2go"
"github.com/tidwall/gjson"
)
type
LyService
struct
{
}
type
Power
struct
{
UserId
string
`json:"user_id"`
Mobile
string
`json:"mobile"`
Email
string
`json:"email"`
Member
string
`json:"member"`
VerifyBlacklist
string
`json:"verify_blacklist"`
Invoice
string
`json:"invoice"`
SpecialInvoice
string
`json:"special_invoice"`
}
/*
联营数据详情
*/
func
(
ls
*
LyService
)
LyGoodsDetail
(
ctx
*
gin
.
Context
,
goodsIds
[]
string
,
ch
chan
sync
.
Map
)
{
redisConn
:=
gredis
.
Conn
(
"search_r"
)
defer
func
()
{
redisConn
.
Close
()
}()
fast
:=
ctx
.
Request
.
FormValue
(
"power[fast]"
)
showAttr
:=
ctx
.
Request
.
FormValue
(
"show_attr"
)
//批量获取商品详情
skuArr
:=
gredis
.
Hmget
(
"default_r"
,
"sku"
,
goodsIds
)
//为了性能着想,这边也先去批量获取spu的信息
var
spuService
SpuService
spuList
:=
spuService
.
getSpuList
(
skuArr
)
GoodsRes
:=
sync
.
Map
{}
for
goodsId
,
skuStr
:=
range
skuArr
{
if
skuStr
==
""
{
GoodsRes
.
Store
(
goodsId
,
false
)
continue
}
//初始化有序map,拼接data 数据
sku
:=
model
.
InitSkuData
(
skuStr
)
sku
.
GoodsId
=
goodsId
spu
:=
spuList
[
sku
.
SpuId
]
//读取包装字段的缓存
if
sku
.
SupplierId
==
7
{
//sku_raw_map哪里写入(成意写的)
packing
,
_
:=
redis
.
String
(
redisConn
.
Do
(
"HGET"
,
"sku_raw_map"
,
goodsId
))
sku
.
Packing
=
gjson
.
Get
(
packing
,
"pack"
)
.
String
()
}
sku
=
ls
.
GetGoodsImages
(
sku
,
spu
)
//pdf
pdf
:=
gjson
.
Get
(
spu
,
"pdf"
)
.
String
()
spuLargeImage
:=
gjson
.
Get
(
spu
,
"images_l"
)
.
String
()
if
pdf
==
""
||
(
php2go
.
Strlen
(
spuLargeImage
)
<
5
)
{
sku
.
Pdf
=
""
}
else
{
sku
.
Pdf
=
pdf
}
//处理分类
//fast的参数含义,为了节省开销性能的参数,传1就不会去分类这些参数
if
fast
!=
"1"
{
sku
=
ls
.
GetGoodsClass
(
sku
,
spu
)
}
//获取商品名称
if
sku
.
GoodsName
==
""
{
sku
.
GoodsName
=
gjson
.
Get
(
spu
,
"spu_name"
)
.
String
()
}
//获取品牌名称
brandId
:=
gjson
.
Get
(
spu
,
"brand_id"
)
.
Int
()
brandName
,
_
:=
redis
.
String
(
redisConn
.
Do
(
"HGET"
,
"brand"
,
brandId
))
sku
.
BrandName
=
brandName
fmt
.
Println
(
showAttr
)
//获取税务信息
if
fast
!=
"1"
{
//仅提供价格和库存
if
sku
.
GoodsName
!=
""
&&
brandId
!=
0
{
sku
.
ErpTax
=
ls
.
GetErpTax
(
sku
.
GoodsName
,
brandName
)
}
sku
.
SupplierName
=
ls
.
GetPoolSupplierName
(
sku
.
SupplierId
)
if
showAttr
==
"1"
{
//获取属性
sku
.
Attrs
=
ls
.
GetSpuAttr
(
sku
.
SpuId
)
}
if
sku
.
Attrs
==
nil
{
sku
.
Attrs
=
[]
interface
{}{}
}
}
//获取供应链标准品牌
//什么是供应链的标准品牌 供应链那边报关的时候要求他们的标准品牌,所以要吧自己的品牌映射上去
//继来那边对接的标准品牌(下单的时候)
sku
.
ScmBrand
=
ls
.
GetScmBrand
(
brandId
)
//获取新版的标准品牌
sku
.
StandardBrand
=
ls
.
GetStandardBrand
(
brandId
)
//处理过期
if
gjson
.
Get
(
skuStr
,
"is_expire"
)
.
Int
()
!=
0
{
sku
.
LadderPrice
=
nil
}
//处理活动
sku
.
AcType
=
0
sku
.
AllowCoupon
=
1
sku
.
BrandId
=
brandId
sku
=
ls
.
GetActivity
(
sku
)
//处理阶梯价数据
if
len
(
sku
.
LadderPrice
)
>
0
{
//排序
sort
.
Sort
(
sorter
.
LadderPriceSorter
(
sku
.
LadderPrice
))
//取出第一个阶梯价
purchases
:=
sku
.
LadderPrice
[
0
]
.
Purchases
if
purchases
>
sku
.
Moq
{
sku
.
Moq
=
purchases
}
}
//获取系数
sku
=
ls
.
GetCoefficient
(
sku
)
//仅提供价格和库存
if
fast
!=
"1"
{
if
sku
.
SupplierId
!=
0
{
sku
.
SuppExtendFee
=
ls
.
GetExtendFee
(
sku
.
SupplierId
,
sku
.
Canal
)
}
//还要处理货期
delivery
:=
ls
.
GetDelivery
(
sku
.
SupplierId
,
sku
.
Canal
)
if
delivery
[
"cn_delivery"
]
!=
""
{
sku
.
CnDeliveryTime
=
delivery
[
"cn_delivery"
]
}
if
delivery
[
"hk_delivery"
]
!=
""
{
sku
.
HkDeliveryTime
=
delivery
[
"hk_delivery"
]
}
}
//处理是否可以购买
if
sku
.
Mpq
==
0
{
sku
.
Mpq
=
1
}
if
len
(
sku
.
LadderPrice
)
>
0
{
sku
.
LadderPriceResult
=
sku
.
LadderPrice
}
else
{
sku
.
LadderPriceResult
=
[]
int
{}
}
//这边有个临时逻辑,如果供应商id是TI的,就库存为0
if
sku
.
SupplierId
==
1679
{
sku
.
Stock
=
0
}
//判断是否可以购买
sku
.
IsBuy
=
ls
.
GetIsBuy
(
sku
)
////过期修改库存为0
//if sku.IsExpire == 1 {
// sku.Stock = 0
//}
var
TagService
TagsService
sku
.
GoodsTag
=
TagService
.
GetTags
(
sku
.
GoodsId
,
0
)
//用spuInfo补全信息
sku
=
ls
.
CombineSup
(
sku
,
spu
)
//最后一步,将sku的全部信息放到有序map里面
GoodsRes
.
Store
(
goodsId
,
sku
)
//(*goodsRes)[goodsId] = A
}
ch
<-
GoodsRes
}
//获取活动
func
(
ls
*
LyService
)
GetActivity
(
sku
model
.
LySku
)
model
.
LySku
{
//去判断是否有活动(促销打折活动和满赠活动)
checkData
:=
model
.
ActivityCheckData
{
SupplierId
:
int
(
sku
.
SupplierId
),
BrandId
:
int
(
sku
.
BrandId
),
GoodsId
:
sku
.
GoodsId
,
Canal
:
sku
.
Canal
,
ClassId
:
sku
.
ClassID2
,
}
var
activityService
ActivityService
priceActivity
,
giftActivity
:=
activityService
.
GetActivityData
(
checkData
)
if
priceActivity
.
HasActivity
{
sku
.
AcType
=
10
sku
.
Ratio
=
priceActivity
.
Ratio
sku
.
ActivityInfo
=
priceActivity
}
if
giftActivity
.
HasActivity
{
sku
.
HasGiftActivity
=
gconv
.
Int
(
giftActivity
.
HasActivity
)
sku
.
GiftActivity
=
giftActivity
}
//获取是否能使用优惠券
if
giftActivity
.
AllowCoupon
==
2
||
priceActivity
.
AllowCoupon
==
2
{
sku
.
AllowCoupon
=
2
}
return
sku
}
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