记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
0c7fd4c2
Commit
0c7fd4c2
authored
Jun 02, 2026
by
姜秀龙
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'refs/remotes/origin/master' into jxl_20240313_prod
parents
68f38dc0
f2af79bb
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
148 additions
and
7 deletions
+148
-7
GoblinFrontGoodDetailVo.java
...uidnet/service/goblin/dto/vo/GoblinFrontGoodDetailVo.java
+2
-0
GoblinGoodsSkuInfoDetailVo.java
...net/service/goblin/dto/vo/GoblinGoodsSkuInfoDetailVo.java
+3
-0
GoblinSqbPerformanceGoodsInfoVo.java
...ervice/goblin/dto/vo/GoblinSqbPerformanceGoodsInfoVo.java
+1
-1
GoblinFrontController.java
...dnet/service/goblin/controller/GoblinFrontController.java
+1
-1
GoblinFrontServiceImpl.java
...t/service/goblin/service/impl/GoblinFrontServiceImpl.java
+116
-3
GoblinRedisUtils.java
...a/com/liquidnet/service/goblin/util/GoblinRedisUtils.java
+23
-0
GoblinSqbOrderServiceImpl.java
...service/order/service/impl/GoblinSqbOrderServiceImpl.java
+1
-1
MixOrderServiceImpl.java
...idnet/service/order/service/impl/MixOrderServiceImpl.java
+1
-1
No files found.
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/dto/vo/GoblinFrontGoodDetailVo.java
View file @
0c7fd4c2
...
@@ -34,6 +34,8 @@ public class GoblinFrontGoodDetailVo implements Serializable {
...
@@ -34,6 +34,8 @@ public class GoblinFrontGoodDetailVo implements Serializable {
@ApiModelProperty
(
value
=
"条码识别到的SKUID列表"
,
notes
=
"仅当条码识别时有效"
)
@ApiModelProperty
(
value
=
"条码识别到的SKUID列表"
,
notes
=
"仅当条码识别时有效"
)
private
List
<
String
>
hitSkuIdList
;
private
List
<
String
>
hitSkuIdList
;
@ApiModelProperty
(
value
=
"当前用户是否已购买本场演出门票(与收钱吧下单换购价校验一致);仅收钱吧商品(spuType=33)且传入 performancesId 时返回 true/false,其他情况为 null;未登录为 false"
)
private
Boolean
boughtPerformance
;
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
...
...
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/dto/vo/GoblinGoodsSkuInfoDetailVo.java
View file @
0c7fd4c2
...
@@ -41,6 +41,9 @@ public class GoblinGoodsSkuInfoDetailVo implements Serializable, Cloneable {
...
@@ -41,6 +41,9 @@ public class GoblinGoodsSkuInfoDetailVo implements Serializable, Cloneable {
@ApiModelProperty
(
position
=
20
,
value
=
"单品销售价-原价[20,2]"
)
@ApiModelProperty
(
position
=
20
,
value
=
"单品销售价-原价[20,2]"
)
private
BigDecimal
sellPrice
;
private
BigDecimal
sellPrice
;
@ApiModelProperty
(
value
=
"收钱吧商品(spuType=33)演出关联换购价(元);其他商品类型恒为 null;SQB 且传入 performancesId 且后台已配置时返回"
)
private
BigDecimal
settlementPrice
;
@ApiModelProperty
(
position
=
26
,
value
=
"限量[0-无限制|X:限购数量]"
)
@ApiModelProperty
(
position
=
26
,
value
=
"限量[0-无限制|X:限购数量]"
)
private
Integer
buyLimit
;
private
Integer
buyLimit
;
@ApiModelProperty
(
position
=
27
,
value
=
"剩余库存(实时:Redis getSkuStock)"
)
@ApiModelProperty
(
position
=
27
,
value
=
"剩余库存(实时:Redis getSkuStock)"
)
...
...
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/dto/vo/GoblinSqbPerformanceGoodsInfoVo.java
View file @
0c7fd4c2
...
@@ -19,7 +19,7 @@ public class GoblinSqbPerformanceGoodsInfoVo extends GoblinGoodsInfoVo {
...
@@ -19,7 +19,7 @@ public class GoblinSqbPerformanceGoodsInfoVo extends GoblinGoodsInfoVo {
@ApiModelProperty
(
value
=
"正常售价"
)
@ApiModelProperty
(
value
=
"正常售价"
)
private
BigDecimal
price
;
private
BigDecimal
price
;
@ApiModelProperty
(
value
=
"
换购价(不设置则按正常价)
"
)
@ApiModelProperty
(
value
=
"
收钱吧商品(spuType=33)换购价展示(元):关联 SKU 换购价最小值;非 SQB 商品恒为 null;未配置换购价时不返回
"
)
private
BigDecimal
settlementPrice
;
private
BigDecimal
settlementPrice
;
@ApiModelProperty
(
value
=
"已上架 SKU 明细(含 restStock、stockLess、canBuy 等,与商品详情接口字段一致)"
)
@ApiModelProperty
(
value
=
"已上架 SKU 明细(含 restStock、stockLess、canBuy 等,与商品详情接口字段一致)"
)
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/controller/GoblinFrontController.java
View file @
0c7fd4c2
...
@@ -77,7 +77,7 @@ public class GoblinFrontController {
...
@@ -77,7 +77,7 @@ public class GoblinFrontController {
@GetMapping
(
"getGoodsDetail"
)
@GetMapping
(
"getGoodsDetail"
)
@ApiOperation
(
"获得商品详情"
)
@ApiOperation
(
"获得商品详情"
)
@ApiImplicitParams
({
@ApiImplicitParams
({
@ApiImplicitParam
(
paramType
=
"query"
,
required
=
false
,
dataType
=
"String"
,
name
=
"performancesId"
,
value
=
"演出ID,可选;收钱吧商品(spuType=33)时传入则仅返回该演出已关联的 SKU"
)
@ApiImplicitParam
(
paramType
=
"query"
,
required
=
false
,
dataType
=
"String"
,
name
=
"performancesId"
,
value
=
"演出ID,可选;收钱吧商品(spuType=33)时传入则仅返回该演出已关联的 SKU
,并返回 boughtPerformance 是否已购本场票
"
)
})
})
public
ResponseDto
<
GoblinFrontGoodDetailVo
>
getGoodsDetail
(
public
ResponseDto
<
GoblinFrontGoodDetailVo
>
getGoodsDetail
(
@RequestParam
(
name
=
"spuId"
,
required
=
true
)
String
spuId
,
@RequestParam
(
name
=
"spuId"
,
required
=
true
)
String
spuId
,
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/service/impl/GoblinFrontServiceImpl.java
View file @
0c7fd4c2
...
@@ -394,14 +394,81 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
...
@@ -394,14 +394,81 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
return
buildOnShelfSkuDetailList
(
goblinGoodsInfoVo
,
null
);
return
buildOnShelfSkuDetailList
(
goblinGoodsInfoVo
,
null
);
}
}
/**
* 从演出-商品关联构建 skuId → 后台配置的换购价(原始值,展示前需经 {@link #resolveSqbDisplaySettlementPrice})
*/
private
Map
<
String
,
BigDecimal
>
buildSqbSettlementPriceBySkuId
(
List
<
GoblinSqbPerformanceGoods
>
relations
,
String
spuId
)
{
Map
<
String
,
BigDecimal
>
map
=
new
HashMap
<>();
if
(
CollectionUtils
.
isEmpty
(
relations
))
{
return
map
;
}
String
spu
=
StringUtil
.
isBlank
(
spuId
)
?
null
:
spuId
.
trim
();
for
(
GoblinSqbPerformanceGoods
r
:
relations
)
{
if
(
r
==
null
||
StringUtil
.
isBlank
(
r
.
getSkuId
()))
{
continue
;
}
if
(
spu
!=
null
&&
(
StringUtil
.
isBlank
(
r
.
getSpuId
())
||
!
spu
.
equals
(
r
.
getSpuId
().
trim
())))
{
continue
;
}
map
.
put
(
r
.
getSkuId
().
trim
(),
r
.
getSettlementPrice
());
}
return
map
;
}
/**
* 前台展示换购价:与收钱吧下单 {@code resolveSqbUnitPriceYuan} 一致(换购价须有效且不超过 SKU 售价),但不校验用户是否已购演出门票。
*/
private
BigDecimal
resolveSqbDisplaySettlementPrice
(
GoblinGoodsSkuInfoVo
skuVo
,
BigDecimal
configuredSettlement
)
{
if
(
skuVo
==
null
||
configuredSettlement
==
null
)
{
return
null
;
}
if
(
configuredSettlement
.
compareTo
(
BigDecimal
.
ZERO
)
<=
0
)
{
return
null
;
}
BigDecimal
base
=
skuVo
.
getSellPrice
()
!=
null
?
skuVo
.
getSellPrice
()
:
skuVo
.
getPrice
();
if
(
base
==
null
)
{
return
configuredSettlement
;
}
if
(
configuredSettlement
.
compareTo
(
base
)
>
0
)
{
return
base
;
}
return
configuredSettlement
;
}
private
BigDecimal
resolveSpuMinSettlementPrice
(
List
<
GoblinGoodsSkuInfoDetailVo
>
skuList
)
{
if
(
CollectionUtils
.
isEmpty
(
skuList
))
{
return
null
;
}
BigDecimal
min
=
null
;
for
(
GoblinGoodsSkuInfoDetailVo
sku
:
skuList
)
{
if
(
sku
==
null
||
sku
.
getSettlementPrice
()
==
null
)
{
continue
;
}
if
(
min
==
null
||
sku
.
getSettlementPrice
().
compareTo
(
min
)
<
0
)
{
min
=
sku
.
getSettlementPrice
();
}
}
return
min
;
}
/**
/**
* @param allowedSkuIds 非 null 时仅保留集合内的 SKU(用于收钱吧演出关联 SKU、spuType=33 详情)
* @param allowedSkuIds 非 null 时仅保留集合内的 SKU(用于收钱吧演出关联 SKU、spuType=33 详情)
* @param settlementPriceBySkuId 仅 spuType=33 时传入;其他商品类型忽略
*/
*/
private
ArrayList
<
GoblinGoodsSkuInfoDetailVo
>
buildOnShelfSkuDetailList
(
GoblinGoodsInfoVo
goblinGoodsInfoVo
,
Set
<
String
>
allowedSkuIds
)
{
private
ArrayList
<
GoblinGoodsSkuInfoDetailVo
>
buildOnShelfSkuDetailList
(
GoblinGoodsInfoVo
goblinGoodsInfoVo
,
Set
<
String
>
allowedSkuIds
)
{
return
buildOnShelfSkuDetailList
(
goblinGoodsInfoVo
,
allowedSkuIds
,
null
);
}
private
ArrayList
<
GoblinGoodsSkuInfoDetailVo
>
buildOnShelfSkuDetailList
(
GoblinGoodsInfoVo
goblinGoodsInfoVo
,
Set
<
String
>
allowedSkuIds
,
Map
<
String
,
BigDecimal
>
settlementPriceBySkuId
)
{
ArrayList
<
GoblinGoodsSkuInfoDetailVo
>
list
=
ObjectUtil
.
goblinGoodsSkuInfoDetailVos
();
ArrayList
<
GoblinGoodsSkuInfoDetailVo
>
list
=
ObjectUtil
.
goblinGoodsSkuInfoDetailVos
();
if
(
goblinGoodsInfoVo
==
null
)
{
if
(
goblinGoodsInfoVo
==
null
)
{
return
list
;
return
list
;
}
}
boolean
sqbSpu
=
isSqbSpuGoods
(
goblinGoodsInfoVo
);
if
(!
sqbSpu
)
{
settlementPriceBySkuId
=
null
;
}
String
spuId
=
goblinGoodsInfoVo
.
getSpuId
();
String
spuId
=
goblinGoodsInfoVo
.
getSpuId
();
List
<
String
>
skuIdList
=
goblinGoodsInfoVo
.
getSkuIdList
();
List
<
String
>
skuIdList
=
goblinGoodsInfoVo
.
getSkuIdList
();
if
(
CollectionUtils
.
isEmpty
(
skuIdList
))
{
if
(
CollectionUtils
.
isEmpty
(
skuIdList
))
{
...
@@ -422,6 +489,7 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
...
@@ -422,6 +489,7 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
int
stock
=
goblinRedisUtils
.
getSkuStock
(
pre
,
goblinGoodsSkuInfoVo
.
getSkuId
());
int
stock
=
goblinRedisUtils
.
getSkuStock
(
pre
,
goblinGoodsSkuInfoVo
.
getSkuId
());
log
.
debug
(
"skuId:{},库存数量{}"
,
goblinGoodsSkuInfoVo
.
getSkuId
(),
stock
);
log
.
debug
(
"skuId:{},库存数量{}"
,
goblinGoodsSkuInfoVo
.
getSkuId
(),
stock
);
GoblinGoodsSkuInfoDetailVo
goblinGoodsSkuInfoDetailVo
=
GoblinGoodsSkuInfoDetailVo
.
getNew
();
GoblinGoodsSkuInfoDetailVo
goblinGoodsSkuInfoDetailVo
=
GoblinGoodsSkuInfoDetailVo
.
getNew
();
goblinGoodsSkuInfoDetailVo
.
setSettlementPrice
(
null
);
BeanUtils
.
copyProperties
(
goblinGoodsSkuInfoVo
,
goblinGoodsSkuInfoDetailVo
);
BeanUtils
.
copyProperties
(
goblinGoodsSkuInfoVo
,
goblinGoodsSkuInfoDetailVo
);
fillSkuPicIfBlank
(
goblinGoodsSkuInfoDetailVo
,
goblinGoodsInfoVo
);
fillSkuPicIfBlank
(
goblinGoodsSkuInfoDetailVo
,
goblinGoodsInfoVo
);
if
(
0
!=
goblinGoodsSkuInfoDetailVo
.
getBuyLimit
())
{
if
(
0
!=
goblinGoodsSkuInfoDetailVo
.
getBuyLimit
())
{
...
@@ -438,6 +506,15 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
...
@@ -438,6 +506,15 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
goblinGoodsSkuInfoDetailVo
.
setStockLess
(
false
);
goblinGoodsSkuInfoDetailVo
.
setStockLess
(
false
);
}
}
goblinGoodsSkuInfoDetailVo
.
setRestStock
(
stock
);
goblinGoodsSkuInfoDetailVo
.
setRestStock
(
stock
);
if
(
sqbSpu
&&
settlementPriceBySkuId
!=
null
&&
!
settlementPriceBySkuId
.
isEmpty
())
{
String
skuKey
=
goblinGoodsSkuInfoVo
.
getSkuId
();
BigDecimal
configured
=
skuKey
!=
null
?
settlementPriceBySkuId
.
get
(
skuKey
)
:
null
;
if
(
configured
==
null
&&
StringUtil
.
isNotBlank
(
sku
))
{
configured
=
settlementPriceBySkuId
.
get
(
sku
.
trim
());
}
goblinGoodsSkuInfoDetailVo
.
setSettlementPrice
(
resolveSqbDisplaySettlementPrice
(
goblinGoodsSkuInfoVo
,
configured
));
}
list
.
add
(
goblinGoodsSkuInfoDetailVo
);
list
.
add
(
goblinGoodsSkuInfoDetailVo
);
}
}
}
}
...
@@ -456,6 +533,7 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
...
@@ -456,6 +533,7 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
*/
*/
public
GoblinFrontGoodDetailVo
getGoodsDetail
(
String
spuId
,
String
performancesId
)
{
public
GoblinFrontGoodDetailVo
getGoodsDetail
(
String
spuId
,
String
performancesId
)
{
GoblinFrontGoodDetailVo
goblinFrontGoodDetailVo
=
GoblinFrontGoodDetailVo
.
getNew
();
GoblinFrontGoodDetailVo
goblinFrontGoodDetailVo
=
GoblinFrontGoodDetailVo
.
getNew
();
goblinFrontGoodDetailVo
.
setBoughtPerformance
(
null
);
GoblinGoodsInfoVo
goblinGoodsInfoVo
=
goblinRedisUtils
.
getGoodsInfoVo
(
spuId
);
GoblinGoodsInfoVo
goblinGoodsInfoVo
=
goblinRedisUtils
.
getGoodsInfoVo
(
spuId
);
GoblinGoodsInfoDetailVo
goblinGoodsInfoDetailVo
=
GoblinGoodsInfoDetailVo
.
getNew
();
GoblinGoodsInfoDetailVo
goblinGoodsInfoDetailVo
=
GoblinGoodsInfoDetailVo
.
getNew
();
//skuIdList
//skuIdList
...
@@ -464,16 +542,24 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
...
@@ -464,16 +542,24 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
goblinFrontGoodDetailVo
.
setGoblinGoodsInfoVo
(
goblinGoodsInfoDetailVo
);
goblinFrontGoodDetailVo
.
setGoblinGoodsInfoVo
(
goblinGoodsInfoDetailVo
);
// int limit= getStockCount(goblinGoodsInfoVo.getStoreId());
// int limit= getStockCount(goblinGoodsInfoVo.getStoreId());
Set
<
String
>
sqbSkuAllow
=
null
;
Set
<
String
>
sqbSkuAllow
=
null
;
Map
<
String
,
BigDecimal
>
settlementPriceBySkuId
=
null
;
if
(
isSqbSpuGoods
(
goblinGoodsInfoVo
))
{
if
(
isSqbSpuGoods
(
goblinGoodsInfoVo
))
{
sqbSkuAllow
=
loadSqbLinkedSkuIdSet
(
spuId
,
performancesId
);
sqbSkuAllow
=
loadSqbLinkedSkuIdSet
(
spuId
,
performancesId
);
if
(
StringUtil
.
isNotBlank
(
performancesId
))
{
List
<
GoblinSqbPerformanceGoods
>
perfRelations
=
loadSqbPerformanceGoodsRelationsFromCacheOrDb
(
performancesId
);
settlementPriceBySkuId
=
buildSqbSettlementPriceBySkuId
(
perfRelations
,
spuId
);
}
}
}
ArrayList
<
GoblinGoodsSkuInfoDetailVo
>
list
=
buildOnShelfSkuDetailList
(
goblinGoodsInfoVo
,
sqbSkuAllow
);
ArrayList
<
GoblinGoodsSkuInfoDetailVo
>
list
=
buildOnShelfSkuDetailList
(
goblinGoodsInfoVo
,
sqbSkuAllow
,
settlementPriceBySkuId
);
//goblinGoodsInfoVo
//goblinGoodsInfoVo
GoblinStoreInfoVo
goblinStoreInfoVo
=
this
.
getStore
(
goblinGoodsInfoVo
.
getStoreId
());
GoblinStoreInfoVo
goblinStoreInfoVo
=
this
.
getStore
(
goblinGoodsInfoVo
.
getStoreId
());
if
(
null
!=
goblinStoreInfoVo
)
{
if
(
null
!=
goblinStoreInfoVo
)
{
goblinFrontGoodDetailVo
.
setStoreName
(
goblinStoreInfoVo
.
getStoreName
());
goblinFrontGoodDetailVo
.
setStoreName
(
goblinStoreInfoVo
.
getStoreName
());
}
}
goblinFrontGoodDetailVo
.
setGoblinGoodsSkuInfoVolist
(
list
);
goblinFrontGoodDetailVo
.
setGoblinGoodsSkuInfoVolist
(
list
);
fillBoughtPerformanceFlag
(
goblinFrontGoodDetailVo
,
goblinGoodsInfoVo
,
performancesId
);
}
else
{
}
else
{
return
null
;
return
null
;
}
}
...
@@ -482,6 +568,23 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
...
@@ -482,6 +568,23 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
return
goblinFrontGoodDetailVo
;
return
goblinFrontGoodDetailVo
;
}
}
/**
* 详情页:是否已购本场演出门票(仅 SQB + performancesId;与下单换购价逻辑同源)
*/
private
void
fillBoughtPerformanceFlag
(
GoblinFrontGoodDetailVo
detailVo
,
GoblinGoodsInfoVo
goodsInfoVo
,
String
performancesId
)
{
if
(
detailVo
==
null
||
!
isSqbSpuGoods
(
goodsInfoVo
)
||
StringUtil
.
isBlank
(
performancesId
))
{
return
;
}
String
userId
=
CurrentUtil
.
getCurrentUid
();
if
(
StringUtils
.
isBlank
(
userId
))
{
detailVo
.
setBoughtPerformance
(
false
);
return
;
}
int
buyCount
=
goblinRedisUtils
.
getUserPerformanceBuyCount
(
userId
,
performancesId
.
trim
());
detailVo
.
setBoughtPerformance
(
buyCount
>
0
);
}
/**
/**
* 根据条码获得商品详情
* 根据条码获得商品详情
*/
*/
...
@@ -508,6 +611,7 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
...
@@ -508,6 +611,7 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
Integer
buyCount
=
0
;
Integer
buyCount
=
0
;
GoblinFrontGoodDetailVo
goblinFrontGoodDetailVo
=
GoblinFrontGoodDetailVo
.
getNew
();
GoblinFrontGoodDetailVo
goblinFrontGoodDetailVo
=
GoblinFrontGoodDetailVo
.
getNew
();
goblinFrontGoodDetailVo
.
setBoughtPerformance
(
null
);
GoblinGoodsInfoVo
goblinGoodsInfoVo
=
goblinRedisUtils
.
getGoodsInfoVo
(
spuId
);
GoblinGoodsInfoVo
goblinGoodsInfoVo
=
goblinRedisUtils
.
getGoodsInfoVo
(
spuId
);
GoblinGoodsInfoDetailVo
goblinGoodsInfoDetailVo
=
GoblinGoodsInfoDetailVo
.
getNew
();
GoblinGoodsInfoDetailVo
goblinGoodsInfoDetailVo
=
GoblinGoodsInfoDetailVo
.
getNew
();
//skuIdList
//skuIdList
...
@@ -1300,8 +1404,17 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
...
@@ -1300,8 +1404,17 @@ public class GoblinFrontServiceImpl implements GoblinFrontService {
BigDecimal
normalPrice
=
resolveGoodsSellPrice
(
goodsInfoVo
,
linkedSkuIds
);
BigDecimal
normalPrice
=
resolveGoodsSellPrice
(
goodsInfoVo
,
linkedSkuIds
);
frontGoods
.
setSellPrice
(
normalPrice
);
frontGoods
.
setSellPrice
(
normalPrice
);
frontGoods
.
setPrice
(
normalPrice
);
frontGoods
.
setPrice
(
normalPrice
);
frontGoods
.
setSettlementPrice
(
rel
.
getSettlementPrice
());
frontGoods
.
setSettlementPrice
(
null
);
frontGoods
.
setGoblinGoodsSkuInfoVolist
(
buildOnShelfSkuDetailList
(
goodsInfoVo
,
linkedSkuIds
));
ArrayList
<
GoblinGoodsSkuInfoDetailVo
>
skuDetailList
;
if
(
isSqbSpuGoods
(
goodsInfoVo
))
{
Map
<
String
,
BigDecimal
>
settlementPriceBySkuId
=
buildSqbSettlementPriceBySkuId
(
relations
,
rel
.
getSpuId
());
skuDetailList
=
buildOnShelfSkuDetailList
(
goodsInfoVo
,
linkedSkuIds
,
settlementPriceBySkuId
);
frontGoods
.
setSettlementPrice
(
resolveSpuMinSettlementPrice
(
skuDetailList
));
}
else
{
skuDetailList
=
buildOnShelfSkuDetailList
(
goodsInfoVo
,
linkedSkuIds
);
}
frontGoods
.
setGoblinGoodsSkuInfoVolist
(
skuDetailList
);
allGoods
.
add
(
frontGoods
);
allGoods
.
add
(
frontGoods
);
}
}
}
}
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/util/GoblinRedisUtils.java
View file @
0c7fd4c2
...
@@ -3092,6 +3092,29 @@ public class GoblinRedisUtils {
...
@@ -3092,6 +3092,29 @@ public class GoblinRedisUtils {
return
performanceData
;
return
performanceData
;
}
}
/**
* 用户维度本场演出已购票数量(与 order {@code DataUtils#getUserPBuyCount} 一致)
*/
public
int
getUserPerformanceBuyCount
(
String
userId
,
String
performanceId
)
{
if
(!
StringUtils
.
hasText
(
userId
)
||
!
StringUtils
.
hasText
(
performanceId
))
{
return
0
;
}
try
{
String
key
=
KylinRedisConst
.
USERID_BUY_INFO
+
userId
.
trim
()
+
":"
+
KylinRedisConst
.
PERFORMANCE_ID
+
":"
+
performanceId
.
trim
();
Object
val
=
redisUtil
.
get
(
key
);
if
(
val
==
null
)
{
return
0
;
}
if
(
val
instanceof
Number
)
{
return
((
Number
)
val
).
intValue
();
}
return
Integer
.
parseInt
(
String
.
valueOf
(
val
));
}
catch
(
Exception
e
)
{
return
0
;
}
}
public
void
setSqbPerformanceGoodsListCache
(
String
performancesId
,
List
<
GoblinSqbPerformanceGoods
>
relations
)
{
public
void
setSqbPerformanceGoodsListCache
(
String
performancesId
,
List
<
GoblinSqbPerformanceGoods
>
relations
)
{
String
key
=
GoblinRedisConst
.
SQB_PERFORMANCE_GOODS
.
concat
(
performancesId
);
String
key
=
GoblinRedisConst
.
SQB_PERFORMANCE_GOODS
.
concat
(
performancesId
);
redisUtil
.
set
(
key
,
relations
,
RedisKeyExpireConst
.
SQB_PERFORMANCE_GOODS_EXPIRE
);
redisUtil
.
set
(
key
,
relations
,
RedisKeyExpireConst
.
SQB_PERFORMANCE_GOODS_EXPIRE
);
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/GoblinSqbOrderServiceImpl.java
View file @
0c7fd4c2
...
@@ -356,7 +356,7 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
...
@@ -356,7 +356,7 @@ public class GoblinSqbOrderServiceImpl implements IGoblinSqbOrderService {
storeOrderVo
.
getUserId
(),
storeOrderVo
.
getUserName
(),
storeOrderVo
.
getUserMobile
(),
storeOrderVo
.
getPriceTotal
(),
storeOrderVo
.
getPayCode
(),
storeOrderVo
.
getUserId
(),
storeOrderVo
.
getUserName
(),
storeOrderVo
.
getUserMobile
(),
storeOrderVo
.
getPriceTotal
(),
storeOrderVo
.
getPayCode
(),
storeOrderVo
.
getPriceActual
(),
storeOrderVo
.
getPriceRefund
(),
storeOrderVo
.
getPriceExpress
(),
storeOrderVo
.
getPriceCoupon
(),
storeOrderVo
.
getStorePriceCoupon
(),
storeOrderVo
.
getPriceActual
(),
storeOrderVo
.
getPriceRefund
(),
storeOrderVo
.
getPriceExpress
(),
storeOrderVo
.
getPriceCoupon
(),
storeOrderVo
.
getStorePriceCoupon
(),
storeOrderVo
.
getPriceVoucher
(),
storeOrderVo
.
getStatus
(),
storeOrderVo
.
getUcouponId
(),
storeOrderVo
.
getStoreCouponId
(),
storeOrderVo
.
getPayType
(),
storeOrderVo
.
getDeviceFrom
(),
storeOrderVo
.
getPriceVoucher
(),
storeOrderVo
.
getStatus
(),
storeOrderVo
.
getUcouponId
(),
storeOrderVo
.
getStoreCouponId
(),
storeOrderVo
.
getPayType
(),
storeOrderVo
.
getDeviceFrom
(),
storeOrderVo
.
getSource
(),
storeOrderVo
.
getVersion
(),
storeOrderVo
.
getIsMember
(),
storeOrderVo
.
getOrderType
(),
storeOrderVo
.
getWriteOffCode
(),
storeOrderVo
.
getPayCountdownMinute
(),
storeOrderVo
.
getSource
(),
""
,
""
,
storeOrderVo
.
getVersion
(),
storeOrderVo
.
getIsMember
(),
storeOrderVo
.
getOrderType
(),
storeOrderVo
.
getWriteOffCode
(),
storeOrderVo
.
getPayCountdownMinute
(),
storeOrderVo
.
getIpAddress
(),
storeOrderVo
.
getMarketId
(),
storeOrderVo
.
getMarketType
(),
storeOrderVo
.
getCreatedAt
(),
""
,
""
storeOrderVo
.
getIpAddress
(),
storeOrderVo
.
getMarketId
(),
storeOrderVo
.
getMarketType
(),
storeOrderVo
.
getCreatedAt
(),
""
,
""
});
});
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/MixOrderServiceImpl.java
View file @
0c7fd4c2
...
@@ -519,7 +519,7 @@ public class MixOrderServiceImpl implements IMixOrderService {
...
@@ -519,7 +519,7 @@ public class MixOrderServiceImpl implements IMixOrderService {
sqlDataGoblin
.
add
(
new
Object
[]{
sqlDataGoblin
.
add
(
new
Object
[]{
storeOrder
.
getMasterOrderCode
(),
storeOrder
.
getOrderId
(),
storeOrder
.
getStoreId
(),
storeOrder
.
getStoreName
(),
storeOrder
.
getOrderCode
(),
storeOrder
.
getUserId
(),
storeOrder
.
getUserName
(),
storeOrder
.
getUserMobile
(),
storeOrder
.
getPriceTotal
(),
storeOrder
.
getPayCode
(),
storeOrder
.
getMasterOrderCode
(),
storeOrder
.
getOrderId
(),
storeOrder
.
getStoreId
(),
storeOrder
.
getStoreName
(),
storeOrder
.
getOrderCode
(),
storeOrder
.
getUserId
(),
storeOrder
.
getUserName
(),
storeOrder
.
getUserMobile
(),
storeOrder
.
getPriceTotal
(),
storeOrder
.
getPayCode
(),
storeOrder
.
getPriceActual
(),
storeOrder
.
getPriceRefund
(),
storeOrder
.
getPriceExpress
(),
storeOrder
.
getPriceCoupon
(),
storeOrder
.
getStorePriceCoupon
(),
storeOrder
.
getPriceVoucher
(),
storeOrder
.
getStatus
(),
storeOrder
.
getUcouponId
(),
storeOrder
.
getStoreCouponId
(),
storeOrder
.
getPayType
(),
storeOrder
.
getDeviceFrom
(),
storeOrder
.
getPriceActual
(),
storeOrder
.
getPriceRefund
(),
storeOrder
.
getPriceExpress
(),
storeOrder
.
getPriceCoupon
(),
storeOrder
.
getStorePriceCoupon
(),
storeOrder
.
getPriceVoucher
(),
storeOrder
.
getStatus
(),
storeOrder
.
getUcouponId
(),
storeOrder
.
getStoreCouponId
(),
storeOrder
.
getPayType
(),
storeOrder
.
getDeviceFrom
(),
storeOrder
.
getSource
(),
storeOrder
.
getVersion
(),
storeOrder
.
getIsMember
(),
storeOrder
.
getOrderType
(),
storeOrder
.
getWriteOffCode
(),
storeOrder
.
getPayCountdownMinute
(),
storeOrder
.
getIpAddress
(),
storeOrder
.
getMarketId
(),
storeOrder
.
getMarketType
(),
storeOrder
.
getCreatedAt
(),
mixId
,
masterCode
storeOrder
.
getSource
(),
""
,
""
,
storeOrder
.
getVersion
(),
storeOrder
.
getIsMember
(),
storeOrder
.
getOrderType
(),
storeOrder
.
getWriteOffCode
(),
storeOrder
.
getPayCountdownMinute
(),
storeOrder
.
getIpAddress
(),
storeOrder
.
getMarketId
(),
storeOrder
.
getMarketType
(),
storeOrder
.
getCreatedAt
(),
mixId
,
masterCode
});
});
GoblinOrderAttr
orderAttr
=
preParam
.
getOrderAttr
();
GoblinOrderAttr
orderAttr
=
preParam
.
getOrderAttr
();
sqlDataAttr
.
add
(
new
Object
[]{
sqlDataAttr
.
add
(
new
Object
[]{
...
...
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