记得上下班打卡 | 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
ee537f0b
Commit
ee537f0b
authored
Mar 30, 2026
by
姜秀龙
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
收钱 goods add edit
parent
3a8884fc
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
245 additions
and
87 deletions
+245
-87
GoblinStoreMgtGoodsSqbAddParam.java
...ice/goblin/dto/manage/GoblinStoreMgtGoodsSqbAddParam.java
+11
-10
GoblinStoreMgtSqbGoodsController.java
...n/controller/manage/GoblinStoreMgtSqbGoodsController.java
+177
-40
GoblinStoreMgtSqbGoodsServiceImpl.java
...ervice/impl/manage/GoblinStoreMgtSqbGoodsServiceImpl.java
+57
-37
No files found.
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/dto/manage/GoblinStoreMgtGoodsSqbAddParam.java
View file @
ee537f0b
...
...
@@ -10,7 +10,6 @@ import com.liquidnet.service.goblin.param.shouqianba.response.data.MallProductsQ
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.apache.commons.lang3.StringUtils
;
import
javax.validation.Valid
;
import
javax.validation.constraints.NotBlank
;
...
...
@@ -125,11 +124,8 @@ public class GoblinStoreMgtGoodsSqbAddParam implements Serializable {
public
GoblinGoodsInfoVo
initGoodsInfoVo
(
String
storeId
,
GoblinSqbPerfGoodsVo
sqbGoods
,
String
currentUid
,
LocalDateTime
nowTime
)
{
GoblinGoodsInfoVo
vo
=
GoblinGoodsInfoVo
.
getNew
();
vo
.
setStoreId
(
storeId
);
if
(
StringUtils
.
isBlank
(
sqbGoods
.
getSpuId
()))
{
vo
.
setSpuId
(
IDGenerator
.
nextMilliId2
());
}
else
{
vo
.
setSpuId
(
sqbGoods
.
getSpuId
());
}
// 主表使用系统ID,收钱吧ID仅通过`goblin_sqb_goods_ext`映射
vo
.
setSpuId
(
IDGenerator
.
nextMilliId2
());
vo
.
setSpuNo
(
vo
.
getSpuId
());
vo
.
setSpuType
(
33
);
vo
.
setName
(
sqbGoods
.
getTitle
());
...
...
@@ -182,13 +178,18 @@ public class GoblinStoreMgtGoodsSqbAddParam implements Serializable {
public
void
initGoodsSkuInfoVo
(
GoblinGoodsInfoVo
goodsInfoVo
,
List
<
GoblinGoodsSkuInfoVo
>
skuInfoVos
,
List
<
GoblinGoodsSpecVo
>
goodsSpecVos
,
GoblinSqbPerfGoodsVo
sqbGoods
)
{
List
<
MallProductsQueryData
.
Sku
>
addSkuParamSqb
=
sqbGoods
.
getSkuResults
();
if
(
CollectionUtil
.
isEmpty
(
addSkuParamSqb
))
{
addSkuParamSqb
=
new
ArrayList
<>();
}
List
<
String
>
skuIdList
=
CollectionUtil
.
arrayListString
();
for
(
MallProductsQueryData
.
Sku
sku
:
addSkuParamSqb
)
{
GoblinGoodsSkuInfoVo
skuInfoVo
=
GoblinGoodsSkuInfoVo
.
getNew
();
String
systemSkuId
=
IDGenerator
.
nextMilliId2
();
skuInfoVo
.
setSpuId
(
goodsInfoVo
.
getSpuId
());
skuInfoVo
.
setSkuId
(
sku
.
getSkuId
());
skuInfoVo
.
setSkuNo
(
sku
.
getSkuId
());
skuInfoVo
.
setSkuBarCode
(
sku
.
getSkuId
());
// 主表使用系统SKU_ID,收钱吧SKU_ID仅通过`goblin_sqb_goods_ext`映射
skuInfoVo
.
setSkuId
(
systemSkuId
);
skuInfoVo
.
setSkuNo
(
systemSkuId
);
skuInfoVo
.
setSkuBarCode
(
systemSkuId
);
skuInfoVo
.
setSkuType
(
33
);
skuInfoVo
.
setName
(
sku
.
getSkuName
());
skuInfoVo
.
setSubtitle
(
""
);
...
...
@@ -223,7 +224,7 @@ public class GoblinStoreMgtGoodsSqbAddParam implements Serializable {
skuSpecList
.
add
(
goblinGoodsSpecDto
);
skuInfoVo
.
setSkuSpecList
(
skuSpecList
);
}
skuIdList
.
add
(
s
kuInfoVo
.
getSkuId
()
);
skuIdList
.
add
(
s
ystemSkuId
);
skuInfoVos
.
add
(
skuInfoVo
);
}
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/controller/manage/GoblinStoreMgtSqbGoodsController.java
View file @
ee537f0b
This diff is collapsed.
Click to expand it.
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/service/impl/manage/GoblinStoreMgtSqbGoodsServiceImpl.java
View file @
ee537f0b
package
com
.
liquidnet
.
service
.
goblin
.
service
.
impl
.
manage
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.goblin.dto.GoblinGoodsSpecDto
;
import
com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsSqbAddParam
;
import
com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsSqbEditSkuParam
;
import
com.liquidnet.service.goblin.dto.manage.vo.GoblinMgtCategorySpecVo
;
import
com.liquidnet.service.goblin.dto.vo.*
;
import
com.liquidnet.service.goblin.entity.GoblinSqbGoodsExt
;
import
com.liquidnet.service.goblin.mapper.GoblinSqbGoodsExtMapper
;
import
com.liquidnet.service.goblin.param.shouqianba.response.data.MallProductsQueryData
;
import
com.liquidnet.service.goblin.service.manage.IGoblinStoreMgtSqbGoodsService
;
import
com.liquidnet.service.goblin.util.GoblinMongoUtils
;
...
...
@@ -40,6 +41,8 @@ public class GoblinStoreMgtSqbGoodsServiceImpl implements IGoblinStoreMgtSqbGood
GoblinRedisUtils
goblinRedisUtils
;
@Autowired
GoblinMongoUtils
goblinMongoUtils
;
@Autowired
GoblinSqbGoodsExtMapper
goblinSqbGoodsExtMapper
;
public
void
sqbGoodsAdd
(
GoblinGoodsInfoVo
goodsInfoVo
,
List
<
GoblinGoodsSkuInfoVo
>
goodsSkuInfoVoList
)
{
goblinMongoUtils
.
setGoodsInfoVo
(
goodsInfoVo
);
...
...
@@ -130,7 +133,7 @@ public class GoblinStoreMgtSqbGoodsServiceImpl implements IGoblinStoreMgtSqbGood
toMqSqls
.
add
(
SqlMapping
.
get
(
"goblin_goods_sku.insert_for_coupon"
));
toMqSqls
.
add
(
SqlMapping
.
get
(
"goblin_goods_image.insert_byreplace"
));
LinkedList
<
Object
[]>
initGoodsImageObjs
=
CollectionUtil
.
linkedListObjectArr
();
if
(
CollectionUtils
.
isEmpty
(
goodsInfoVo
.
getImageList
()))
{
if
(
!
CollectionUtils
.
isEmpty
(
goodsInfoVo
.
getImageList
()))
{
goodsInfoVo
.
getImageList
().
forEach
(
imageUrl
->
initGoodsImageObjs
.
add
(
new
Object
[]
{
spuId
,
imageUrl
}));
}
toMqSqls
.
add
(
SqlMapping
.
get
(
"goblin_goods_tag.insert_byreplace"
));
...
...
@@ -185,7 +188,7 @@ public class GoblinStoreMgtSqbGoodsServiceImpl implements IGoblinStoreMgtSqbGood
public
boolean
sqbGoodsEditSpu
(
String
uid
,
GoblinSqbPerfGoodsVo
mgtGoodsAddParam
,
GoblinGoodsInfoVo
mgtGoodsInfoVo
)
{
String
spuId
=
mgtGoods
AddParam
.
getSpuId
();
String
spuId
=
mgtGoods
InfoVo
.
getSpuId
();
GoblinStoreMgtGoodsSqbAddParam
initParam
=
new
GoblinStoreMgtGoodsSqbAddParam
();
GoblinGoodsInfoVo
updateSpuInfoVo
=
initParam
.
initEditGoodsInfoVo
(
mgtGoodsAddParam
,
mgtGoodsInfoVo
);
...
...
@@ -257,47 +260,64 @@ public class GoblinStoreMgtSqbGoodsServiceImpl implements IGoblinStoreMgtSqbGood
GoblinGoodsInfoVo
goodsInfoVo
)
{
LocalDateTime
nowTime
=
LocalDateTime
.
now
();
List
<
MallProductsQueryData
.
Sku
>
skuResults
=
mgtGoodsAddParam
.
getSkuResults
();
if
(
goodsInfoVo
==
null
||
CollectionUtils
.
isEmpty
(
goodsInfoVo
.
getSkuIdList
()))
{
if
(
goodsInfoVo
==
null
||
CollectionUtils
.
isEmpty
(
goodsInfoVo
.
getSkuIdList
())
||
CollectionUtils
.
isEmpty
(
skuResults
))
{
return
false
;
}
LambdaQueryWrapper
<
GoblinSqbGoodsExt
>
wrapper
=
new
LambdaQueryWrapper
<
GoblinSqbGoodsExt
>()
.
eq
(
GoblinSqbGoodsExt:
:
getSpuId
,
goodsInfoVo
.
getSpuId
())
.
eq
(
GoblinSqbGoodsExt:
:
getDelFlg
,
"0"
);
if
(
StringUtils
.
isNotBlank
(
mgtGoodsAddParam
.
getMallSn
()))
{
wrapper
.
eq
(
GoblinSqbGoodsExt:
:
getMallSn
,
mgtGoodsAddParam
.
getMallSn
());
}
List
<
GoblinSqbGoodsExt
>
extList
=
goblinSqbGoodsExtMapper
.
selectList
(
wrapper
);
if
(
CollectionUtils
.
isEmpty
(
extList
))
{
return
false
;
}
// 先拿到 spu 下所有 sku 详情,后续只更新命中的 skuId,其余仅参与价格区间重算
for
(
String
spuSkuId
:
goodsInfoVo
.
getSkuIdList
())
{
String
skuId
=
spuSkuId
;
if
(
StringUtils
.
isBlank
(
spuSkuId
))
{
Map
<
String
,
String
>
sqbSkuToLocalSkuMap
=
extList
.
stream
()
.
filter
(
ext
->
StringUtils
.
isNotBlank
(
ext
.
getSqbSkuId
())
&&
StringUtils
.
isNotBlank
(
ext
.
getSkuId
()))
.
collect
(
Collectors
.
toMap
(
GoblinSqbGoodsExt:
:
getSqbSkuId
,
GoblinSqbGoodsExt:
:
getSkuId
,
(
a
,
b
)
->
a
));
boolean
updated
=
false
;
LinkedList
<
Object
[]>
updateGoodsSkuObjs
=
CollectionUtil
.
linkedListObjectArr
();
for
(
MallProductsQueryData
.
Sku
sqbSku
:
skuResults
)
{
if
(
sqbSku
==
null
||
StringUtils
.
isBlank
(
sqbSku
.
getSkuId
()))
{
continue
;
}
String
localSkuId
=
sqbSkuToLocalSkuMap
.
get
(
sqbSku
.
getSkuId
());
if
(
StringUtils
.
isBlank
(
localSkuId
))
{
continue
;
}
GoblinGoodsSkuInfoVo
skuInfoVo
=
goblinRedisUtils
.
getGoodsSkuInfoVo
(
spuSkuId
);
if
(
skuInfoVo
!=
null
&&
"0"
.
equals
(
skuInfoVo
.
getDelFlg
()))
{
for
(
MallProductsQueryData
.
Sku
sku
:
skuResults
)
{
if
(
sku
.
getSkuId
().
equals
(
spuSkuId
))
{
skuInfoVo
.
setName
(
sku
.
getSkuName
());
skuInfoVo
.
setPrice
(
BigDecimal
.
valueOf
(
sku
.
getPrice
()));
skuInfoVo
.
setUpdatedBy
(
uid
);
skuInfoVo
.
setUpdatedAt
(
nowTime
);
if
(
goblinMongoUtils
.
updateGoodsSkuInfoVo
(
skuInfoVo
))
{
goblinRedisUtils
.
delGoodsSkuInfoVo
(
sku
.
getSkuId
());
LinkedList
<
String
>
toMqSqls
=
CollectionUtil
.
linkedListString
();
toMqSqls
.
add
(
SqlMapping
.
get
(
"goblin_goods_sku.update_by_edit_for_coupon"
));
LinkedList
<
Object
[]>
updateGoodsSkuObjs
=
CollectionUtil
.
linkedListObjectArr
();
updateGoodsSkuObjs
.
add
(
new
Object
[]
{
skuInfoVo
.
getPrice
(),
skuInfoVo
.
getPriceMember
(),
skuInfoVo
.
getStock
(),
skuInfoVo
.
getSkuStock
(),
skuInfoVo
.
getBuyLimit
(),
skuInfoVo
.
getUpdatedBy
(),
skuInfoVo
.
getUpdatedAt
(),
skuId
});
queueUtils
.
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
SQL_GOODS
.
getKey
(),
SqlMapping
.
gets
(
toMqSqls
,
updateGoodsSkuObjs
));
return
true
;
}
break
;
}
}
GoblinGoodsSkuInfoVo
skuInfoVo
=
goblinRedisUtils
.
getGoodsSkuInfoVo
(
localSkuId
);
if
(
skuInfoVo
==
null
||
!
"0"
.
equals
(
skuInfoVo
.
getDelFlg
()))
{
continue
;
}
skuInfoVo
.
setName
(
sqbSku
.
getSkuName
());
if
(
sqbSku
.
getPrice
()
!=
null
)
{
skuInfoVo
.
setPrice
(
BigDecimal
.
valueOf
(
sqbSku
.
getPrice
()));
skuInfoVo
.
setPriceMember
(
BigDecimal
.
valueOf
(
sqbSku
.
getPrice
()));
}
skuInfoVo
.
setUpdatedBy
(
uid
);
skuInfoVo
.
setUpdatedAt
(
nowTime
);
if
(
goblinMongoUtils
.
updateGoodsSkuInfoVo
(
skuInfoVo
))
{
goblinRedisUtils
.
delGoodsSkuInfoVo
(
localSkuId
);
updateGoodsSkuObjs
.
add
(
new
Object
[]
{
skuInfoVo
.
getPrice
(),
skuInfoVo
.
getPriceMember
(),
skuInfoVo
.
getStock
(),
skuInfoVo
.
getSkuStock
(),
skuInfoVo
.
getBuyLimit
(),
skuInfoVo
.
getUpdatedBy
(),
skuInfoVo
.
getUpdatedAt
(),
localSkuId
});
updated
=
true
;
}
}
return
false
;
if
(
updated
)
{
LinkedList
<
String
>
toMqSqls
=
CollectionUtil
.
linkedListString
();
toMqSqls
.
add
(
SqlMapping
.
get
(
"goblin_goods_sku.update_by_edit_for_coupon"
));
queueUtils
.
sendMsgByRedis
(
MQConst
.
GoblinQueue
.
SQL_GOODS
.
getKey
(),
SqlMapping
.
gets
(
toMqSqls
,
updateGoodsSkuObjs
));
}
return
updated
;
}
}
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