记得上下班打卡 | 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
c30f9ce4
Commit
c30f9ce4
authored
May 12, 2026
by
姜秀龙
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'refs/heads/dev-1.6-shouqianba' into container-test
parents
5779fdfa
7fb073da
Changes
8
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
194 additions
and
28 deletions
+194
-28
GoblinStoreMgtGoodsEditSkuParam.java
...ce/goblin/dto/manage/GoblinStoreMgtGoodsEditSkuParam.java
+1
-2
GoblinAdminSqbGoodsVo.java
...iquidnet/service/goblin/dto/vo/GoblinAdminSqbGoodsVo.java
+6
-0
GoblinSqbPerfLinkedGoodsVo.java
...net/service/goblin/dto/vo/GoblinSqbPerfLinkedGoodsVo.java
+6
-0
index.html
...n/resources/templates/zhengzai/goblin/sqbGoods/index.html
+21
-3
SqbPerformanceGoodsServiceImpl.java
...i/goblin/service/impl/SqbPerformanceGoodsServiceImpl.java
+121
-8
GoblinRedisUtils.java
.../client/admin/zhengzai/goblin/utils/GoblinRedisUtils.java
+15
-0
GoblinStoreMgtGoodsController.java
...blin/controller/manage/GoblinStoreMgtGoodsController.java
+9
-2
GoblinStoreMgtGoodsServiceImpl.java
...n/service/impl/manage/GoblinStoreMgtGoodsServiceImpl.java
+15
-13
No files found.
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/dto/manage/GoblinStoreMgtGoodsEditSkuParam.java
View file @
c30f9ce4
...
@@ -47,9 +47,8 @@ public class GoblinStoreMgtGoodsEditSkuParam implements Serializable {
...
@@ -47,9 +47,8 @@ public class GoblinStoreMgtGoodsEditSkuParam implements Serializable {
@NotNull
(
message
=
"单品默认图片不能为空"
)
@NotNull
(
message
=
"单品默认图片不能为空"
)
@Size
(
max
=
256
,
message
=
"单品默认图片URL过长"
)
@Size
(
max
=
256
,
message
=
"单品默认图片URL过长"
)
private
String
skuPic
;
private
String
skuPic
;
@ApiModelProperty
(
position
=
14
,
required
=
true
,
value
=
"单品规格信息
"
)
@ApiModelProperty
(
position
=
14
,
required
=
false
,
value
=
"单品规格信息;编辑时可不传或传[]表示沿用/无规格(如收钱吧同步SKU)
"
)
@Valid
@Valid
@NotNull
(
message
=
"规格信息不能为空"
)
private
List
<
GoblinGoodsSpecDto
>
skuSpecList
;
private
List
<
GoblinGoodsSpecDto
>
skuSpecList
;
@ApiModelProperty
(
position
=
15
,
required
=
false
,
value
=
"单品销售价-原价[20,2]"
)
@ApiModelProperty
(
position
=
15
,
required
=
false
,
value
=
"单品销售价-原价[20,2]"
)
private
BigDecimal
sellPrice
;
private
BigDecimal
sellPrice
;
...
...
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/dto/vo/GoblinAdminSqbGoodsVo.java
View file @
c30f9ce4
...
@@ -35,4 +35,10 @@ public class GoblinAdminSqbGoodsVo implements Serializable {
...
@@ -35,4 +35,10 @@ public class GoblinAdminSqbGoodsVo implements Serializable {
@ApiModelProperty
(
value
=
"单品库存"
)
@ApiModelProperty
(
value
=
"单品库存"
)
private
Integer
skuStock
;
private
Integer
skuStock
;
@ApiModelProperty
(
value
=
"是否允许关联演出(SPU+SKU 均上架且未删除)"
)
private
Boolean
linkable
;
@ApiModelProperty
(
value
=
"上下架展示:上架 / 已下架 等"
)
private
String
shelfStatusLabel
;
}
}
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/dto/vo/GoblinSqbPerfLinkedGoodsVo.java
View file @
c30f9ce4
...
@@ -42,4 +42,10 @@ public class GoblinSqbPerfLinkedGoodsVo implements Serializable {
...
@@ -42,4 +42,10 @@ public class GoblinSqbPerfLinkedGoodsVo implements Serializable {
@ApiModelProperty
(
value
=
"状态 0-禁用 1-启用"
)
@ApiModelProperty
(
value
=
"状态 0-禁用 1-启用"
)
private
Integer
status
;
private
Integer
status
;
@ApiModelProperty
(
value
=
"是否满足上架可售(与前台一致:SPU/SKU 上架且未删)"
)
private
Boolean
linkable
;
@ApiModelProperty
(
value
=
"上下架展示文案"
)
private
String
shelfStatusLabel
;
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/goblin/sqbGoods/index.html
View file @
c30f9ce4
...
@@ -51,6 +51,7 @@
...
@@ -51,6 +51,7 @@
<th>
商品ID
</th>
<th>
商品ID
</th>
<th>
商品头图
</th>
<th>
商品头图
</th>
<th>
商品名称
</th>
<th>
商品名称
</th>
<th>
状态
</th>
<th>
商品售价(元)
</th>
<th>
商品售价(元)
</th>
<th>
换购价(元)
</th>
<th>
换购价(元)
</th>
<th>
商品库存
</th>
<th>
商品库存
</th>
...
@@ -59,7 +60,7 @@
...
@@ -59,7 +60,7 @@
</thead>
</thead>
<tbody
id=
"linkedGoodsBody"
>
<tbody
id=
"linkedGoodsBody"
>
<tr
id=
"emptyRow"
>
<tr
id=
"emptyRow"
>
<td
colspan=
"
7
"
style=
"text-align:center;color:#999;"
>
暂无关联商品
</td>
<td
colspan=
"
8
"
style=
"text-align:center;color:#999;"
>
暂无关联商品
</td>
</tr>
</tr>
</tbody>
</tbody>
</table>
</table>
...
@@ -129,7 +130,8 @@
...
@@ -129,7 +130,8 @@
var
spu
=
item
.
spuTitle
!=
null
?
item
.
spuTitle
:
item
.
spuName
;
var
spu
=
item
.
spuTitle
!=
null
?
item
.
spuTitle
:
item
.
spuName
;
var
sku
=
item
.
skuTitle
!=
null
?
item
.
skuTitle
:
item
.
skuName
;
var
sku
=
item
.
skuTitle
!=
null
?
item
.
skuTitle
:
item
.
skuName
;
var
text
=
item
.
title
||
formatSqbSpuSkuLabel
(
spu
,
sku
);
var
text
=
item
.
title
||
formatSqbSpuSkuLabel
(
spu
,
sku
);
return
{
id
:
item
.
skuId
,
text
:
text
,
_raw
:
item
};
var
linkable
=
item
.
linkable
!==
false
;
return
{
id
:
item
.
skuId
,
text
:
text
,
disabled
:
!
linkable
,
_raw
:
item
};
})};
})};
}
}
}
}
...
@@ -138,6 +140,11 @@
...
@@ -138,6 +140,11 @@
// 选中即添加
// 选中即添加
$
(
'#goodsSelect'
).
on
(
'select2:select'
,
function
(
e
)
{
$
(
'#goodsSelect'
).
on
(
'select2:select'
,
function
(
e
)
{
var
raw
=
e
.
params
.
data
.
_raw
;
var
raw
=
e
.
params
.
data
.
_raw
;
if
(
raw
&&
raw
.
linkable
===
false
)
{
layer
.
msg
(
'该商品已下架,不可关联'
,
{
icon
:
2
});
$
(
this
).
val
(
null
).
trigger
(
'change'
);
return
;
}
if
(
raw
)
{
addLinked
(
raw
);
}
if
(
raw
)
{
addLinked
(
raw
);
}
// 清空选择框
// 清空选择框
$
(
this
).
val
(
null
).
trigger
(
'change'
);
$
(
this
).
val
(
null
).
trigger
(
'change'
);
...
@@ -158,6 +165,8 @@
...
@@ -158,6 +165,8 @@
skuId
:
item
.
skuId
,
spuId
:
item
.
spuId
,
skuId
:
item
.
skuId
,
spuId
:
item
.
spuId
,
spuName
:
item
.
spuName
||
''
,
skuName
:
item
.
skuName
||
''
,
spuName
:
item
.
spuName
||
''
,
skuName
:
item
.
skuName
||
''
,
coverPic
:
item
.
coverPic
||
''
,
price
:
item
.
price
,
stock
:
item
.
stock
,
coverPic
:
item
.
coverPic
||
''
,
price
:
item
.
price
,
stock
:
item
.
stock
,
shelfStatusLabel
:
item
.
shelfStatusLabel
||
''
,
linkable
:
item
.
linkable
!==
false
,
settlementPrice
:
(
item
.
settlementPrice
!=
null
?
item
.
settlementPrice
:
''
),
settlementPrice
:
(
item
.
settlementPrice
!=
null
?
item
.
settlementPrice
:
''
),
persisted
:
true
persisted
:
true
};
};
...
@@ -170,7 +179,7 @@
...
@@ -170,7 +179,7 @@
function
renderLinkedGoods
()
{
function
renderLinkedGoods
()
{
var
tbody
=
document
.
getElementById
(
'linkedGoodsBody'
);
var
tbody
=
document
.
getElementById
(
'linkedGoodsBody'
);
if
(
linkedGoods
.
length
===
0
)
{
if
(
linkedGoods
.
length
===
0
)
{
tbody
.
innerHTML
=
'<tr id="emptyRow"><td colspan="
7
" style="text-align:center;color:#999;">暂无关联商品</td></tr>'
;
tbody
.
innerHTML
=
'<tr id="emptyRow"><td colspan="
8
" style="text-align:center;color:#999;">暂无关联商品</td></tr>'
;
return
;
return
;
}
}
var
html
=
''
;
var
html
=
''
;
...
@@ -181,10 +190,13 @@
...
@@ -181,10 +190,13 @@
var
imgHtml
=
item
.
coverPic
var
imgHtml
=
item
.
coverPic
?
'<img src="'
+
item
.
coverPic
+
'" class="img-thumb" title="点击放大" alt="商品头图"/>'
?
'<img src="'
+
item
.
coverPic
+
'" class="img-thumb" title="点击放大" alt="商品头图"/>'
:
'<span style="color:#ccc;font-size:12px;">无图</span>'
;
:
'<span style="color:#ccc;font-size:12px;">无图</span>'
;
var
shelfTxt
=
item
.
shelfStatusLabel
||
(
item
.
linkable
===
false
?
'已下架'
:
'上架'
);
var
shelfStyle
=
item
.
linkable
===
false
?
'color:#c00;font-weight:bold;'
:
'color:#090;'
;
html
+=
'<tr data-idx="'
+
idx
+
'">'
;
html
+=
'<tr data-idx="'
+
idx
+
'">'
;
html
+=
'<td><small>'
+
item
.
skuId
+
'</small></td>'
;
html
+=
'<td><small>'
+
item
.
skuId
+
'</small></td>'
;
html
+=
'<td>'
+
imgHtml
+
'</td>'
;
html
+=
'<td>'
+
imgHtml
+
'</td>'
;
html
+=
'<td>'
+
formatSqbSpuSkuLabel
(
item
.
spuName
,
item
.
skuName
)
+
'</td>'
;
html
+=
'<td>'
+
formatSqbSpuSkuLabel
(
item
.
spuName
,
item
.
skuName
)
+
'</td>'
;
html
+=
'<td style="'
+
shelfStyle
+
'">'
+
shelfTxt
+
'</td>'
;
html
+=
'<td>'
+
priceYuan
+
'</td>'
;
html
+=
'<td>'
+
priceYuan
+
'</td>'
;
html
+=
'<td><input type="number" class="form-control settlement-input" value="'
+
settlementVal
html
+=
'<td><input type="number" class="form-control settlement-input" value="'
+
settlementVal
+
'" placeholder="不填按售价" onchange="updateSettlement('
+
idx
+
', this.value)" min="0" step="0.01"/></td>'
;
+
'" placeholder="不填按售价" onchange="updateSettlement('
+
idx
+
', this.value)" min="0" step="0.01"/></td>'
;
...
@@ -196,6 +208,10 @@
...
@@ -196,6 +208,10 @@
}
}
function
addLinked
(
item
)
{
function
addLinked
(
item
)
{
if
(
item
.
linkable
===
false
)
{
layer
.
msg
(
'该商品已下架,不可关联'
,
{
icon
:
2
});
return
;
}
for
(
var
i
=
0
;
i
<
linkedGoods
.
length
;
i
++
)
{
for
(
var
i
=
0
;
i
<
linkedGoods
.
length
;
i
++
)
{
if
(
linkedGoods
[
i
].
skuId
===
item
.
skuId
)
{
if
(
linkedGoods
[
i
].
skuId
===
item
.
skuId
)
{
layer
.
msg
(
'该商品已在关联列表中'
);
layer
.
msg
(
'该商品已在关联列表中'
);
...
@@ -209,6 +225,8 @@
...
@@ -209,6 +225,8 @@
coverPic
:
item
.
skuPic
||
item
.
coverPic
||
''
,
coverPic
:
item
.
skuPic
||
item
.
coverPic
||
''
,
price
:
item
.
price
,
price
:
item
.
price
,
stock
:
(
item
.
skuStock
!=
null
?
item
.
skuStock
:
item
.
stock
),
stock
:
(
item
.
skuStock
!=
null
?
item
.
skuStock
:
item
.
stock
),
shelfStatusLabel
:
item
.
shelfStatusLabel
||
(
item
.
linkable
===
false
?
'已下架'
:
'上架'
),
linkable
:
item
.
linkable
!==
false
,
settlementPrice
:
null
,
autoOffline
:
0
,
persisted
:
false
settlementPrice
:
null
,
autoOffline
:
0
,
persisted
:
false
});
});
renderLinkedGoods
();
renderLinkedGoods
();
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/goblin/service/impl/SqbPerformanceGoodsServiceImpl.java
View file @
c30f9ce4
This diff is collapsed.
Click to expand it.
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/goblin/utils/GoblinRedisUtils.java
View file @
c30f9ce4
...
@@ -224,6 +224,21 @@ public class GoblinRedisUtils {
...
@@ -224,6 +224,21 @@ public class GoblinRedisUtils {
return
vo
;
return
vo
;
}
}
/**
* 与 goblin 服务一致:SPU 基础缓存(用于后台与 C 端上下架状态对齐)
*/
public
GoblinGoodsInfoVo
getGoodsInfoVo
(
String
spuId
)
{
if
(
spuId
==
null
||
spuId
.
isEmpty
())
{
return
null
;
}
String
rk
=
GoblinRedisConst
.
BASIC_GOODS
.
concat
(
spuId
);
GoblinGoodsInfoVo
vo
=
(
GoblinGoodsInfoVo
)
redisDataSourceUtil
.
getRedisGoblinUtil
().
get
(
rk
);
if
(
null
==
vo
)
{
return
null
;
}
return
vo
;
}
//覆盖 站位宾哥要dto
//覆盖 站位宾哥要dto
public
void
setNftNumDetails
(
String
num
,
String
skuId
,
GalaxyNftPublishAndBuyReqDto
dto
)
{
public
void
setNftNumDetails
(
String
num
,
String
skuId
,
GalaxyNftPublishAndBuyReqDto
dto
)
{
String
redisKey
=
GoblinRedisConst
.
GOBLIN_NUM_DETAILS
.
concat
(
num
).
concat
(
skuId
);
String
redisKey
=
GoblinRedisConst
.
GOBLIN_NUM_DETAILS
.
concat
(
num
).
concat
(
skuId
);
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/controller/manage/GoblinStoreMgtGoodsController.java
View file @
c30f9ce4
...
@@ -948,8 +948,12 @@ public class GoblinStoreMgtGoodsController {
...
@@ -948,8 +948,12 @@ public class GoblinStoreMgtGoodsController {
Map
<
String
,
String
>
delSpuSpecMap
=
CollectionUtil
.
mapStringString
();
Map
<
String
,
String
>
delSpuSpecMap
=
CollectionUtil
.
mapStringString
();
Map
<
String
,
String
>
addSpuSpecMap
=
CollectionUtil
.
mapStringString
();
Map
<
String
,
String
>
addSpuSpecMap
=
CollectionUtil
.
mapStringString
();
{
// 规格校验、处理
{
// 规格校验、处理
Map
<
String
,
String
>
befSkuSpecNameVnameMap
=
mgtGoodsSkuInfoVo
.
getSkuSpecList
().
stream
()
if
(
null
==
mgtGoodsEditSkuParam
.
getSkuSpecList
())
{
.
collect
(
Collectors
.
toMap
(
GoblinGoodsSpecDto:
:
getSpecName
,
GoblinGoodsSpecDto:
:
getSpecVname
));
mgtGoodsEditSkuParam
.
setSkuSpecList
(
new
ArrayList
<>());
}
List
<
GoblinGoodsSpecDto
>
befSkuSpecList
=
mgtGoodsSkuInfoVo
.
getSkuSpecList
();
Map
<
String
,
String
>
befSkuSpecNameVnameMap
=
CollectionUtils
.
isEmpty
(
befSkuSpecList
)
?
CollectionUtil
.
mapStringString
()
:
befSkuSpecList
.
stream
().
collect
(
Collectors
.
toMap
(
GoblinGoodsSpecDto:
:
getSpecName
,
GoblinGoodsSpecDto:
:
getSpecVname
));
List
<
GoblinGoodsSpecDto
>
paramSkuSpecList
=
mgtGoodsEditSkuParam
.
getSkuSpecList
();
List
<
GoblinGoodsSpecDto
>
paramSkuSpecList
=
mgtGoodsEditSkuParam
.
getSkuSpecList
();
Set
<
String
>
befSkuSpecNameSet
=
befSkuSpecNameVnameMap
.
keySet
();
Set
<
String
>
befSkuSpecNameSet
=
befSkuSpecNameVnameMap
.
keySet
();
Map
<
String
,
String
>
paramUpdateSkuSpecMap
=
CollectionUtil
.
mapStringString
();
Map
<
String
,
String
>
paramUpdateSkuSpecMap
=
CollectionUtil
.
mapStringString
();
...
@@ -1268,6 +1272,9 @@ public class GoblinStoreMgtGoodsController {
...
@@ -1268,6 +1272,9 @@ public class GoblinStoreMgtGoodsController {
}
}
}
}
}
}
if
(
CollectionUtils
.
isEmpty
(
mgtGoodsEditSkuParam
.
getSkuSpecList
()))
{
return
ResponseDto
.
failure
(
ErrorCode
.
HTTP_PARAM_ERROR
.
getCode
(),
"规格信息不能为空"
);
}
List
<
String
>
skuIdList
=
goodsInfoVo
.
getSkuIdList
();
List
<
String
>
skuIdList
=
goodsInfoVo
.
getSkuIdList
();
List
<
GoblinGoodsSpecDto
>
paramSkuSpecDtoList
=
mgtGoodsEditSkuParam
.
getSkuSpecList
();
List
<
GoblinGoodsSpecDto
>
paramSkuSpecDtoList
=
mgtGoodsEditSkuParam
.
getSkuSpecList
();
for
(
String
skuId
:
skuIdList
)
{
// 比对所有SKU规格信息
for
(
String
skuId
:
skuIdList
)
{
// 比对所有SKU规格信息
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/service/impl/manage/GoblinStoreMgtGoodsServiceImpl.java
View file @
c30f9ce4
...
@@ -1313,6 +1313,7 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
...
@@ -1313,6 +1313,7 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
boolean
updateGoodsInfoVoFlg
=
false
;
boolean
updateGoodsInfoVoFlg
=
false
;
List
<
GoblinGoodsSpecDto
>
skuSpecList
=
updateSkuInfoVo
.
getSkuSpecList
();
List
<
GoblinGoodsSpecDto
>
skuSpecList
=
updateSkuInfoVo
.
getSkuSpecList
();
List
<
GoblinGoodsSpecVo
>
specVoList
=
goodsInfoVo
.
getSpecVoList
();
List
<
GoblinGoodsSpecVo
>
specVoList
=
goodsInfoVo
.
getSpecVoList
();
if
(!
CollectionUtils
.
isEmpty
(
skuSpecList
))
{
skuSpecList
.
forEach
(
spec
->
{
skuSpecList
.
forEach
(
spec
->
{
String
specName
=
spec
.
getSpecName
(),
specVname
=
spec
.
getSpecVname
();
String
specName
=
spec
.
getSpecName
(),
specVname
=
spec
.
getSpecVname
();
...
@@ -1326,6 +1327,7 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
...
@@ -1326,6 +1327,7 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
.
add
(
new
Object
[]
{
specVname
,
marketSkuId
,
specName
}));
.
add
(
new
Object
[]
{
specVname
,
marketSkuId
,
specName
}));
}
}
});
});
}
if
(!
delSpuSpecMap
.
isEmpty
())
{
// 删除了规格值,需要同步SPU里的规格信息
if
(!
delSpuSpecMap
.
isEmpty
())
{
// 删除了规格值,需要同步SPU里的规格信息
updateGoodsInfoVoFlg
=
true
;
updateGoodsInfoVoFlg
=
true
;
goodsInfoVo
.
setUpdatedBy
(
uid
);
goodsInfoVo
.
setUpdatedBy
(
uid
);
...
...
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