记得上下班打卡 | 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
3223bd70
Commit
3223bd70
authored
Jan 09, 2022
by
zhanggb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
~规格校验同步;
parent
e8c686fc
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
92 additions
and
36 deletions
+92
-36
GoblinStoreMgtGoodsAddParam.java
...ervice/goblin/dto/manage/GoblinStoreMgtGoodsAddParam.java
+59
-9
GoblinStoreMgtGoodsController.java
...blin/controller/manage/GoblinStoreMgtGoodsController.java
+23
-18
GoblinStoreMgtGoodsServiceImpl.java
...n/service/impl/manage/GoblinStoreMgtGoodsServiceImpl.java
+9
-8
errors.properties
...-service-goblin-impl/src/main/resources/errors.properties
+1
-1
No files found.
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/dto/manage/GoblinStoreMgtGoodsAddParam.java
View file @
3223bd70
package
com
.
liquidnet
.
service
.
goblin
.
dto
.
manage
;
import
com.liquidnet.common.exception.LiquidnetServiceException
;
import
com.liquidnet.commons.lang.constant.LnsRegex
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.service.base.ErrorMapping
;
import
com.liquidnet.service.goblin.dto.GoblinGoodsSpecDto
;
import
com.liquidnet.service.goblin.dto.vo.GoblinGoodsInfoVo
;
import
com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo
;
...
...
@@ -13,6 +15,7 @@ import io.swagger.annotations.ApiModel;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.util.CollectionUtils
;
import
javax.validation.Valid
;
import
javax.validation.constraints.NotNull
;
...
...
@@ -21,6 +24,9 @@ import java.io.Serializable;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
@ApiModel
(
value
=
"GoblinStoreMgtGoodsAddParam"
,
description
=
"商品管理:添加商品入参"
)
@Data
...
...
@@ -213,10 +219,14 @@ public class GoblinStoreMgtGoodsAddParam implements Serializable {
public
void
initGoodsSkuInfoVo
(
GoblinGoodsInfoVo
goodsInfoVo
,
List
<
GoblinGoodsSkuInfoVo
>
vos
,
List
<
GoblinGoodsSpecVo
>
goodsSpecVos
)
{
List
<
GoblinStoreMgtGoodsAddSkuParam
>
mgtGoodsAddSkuParamList
=
this
.
getSkuParamList
();
int
size
=
mgtGoodsAddSkuParamList
.
size
();
if
(
CollectionUtils
.
isEmpty
(
mgtGoodsAddSkuParamList
))
{
ErrorMapping
.
ErrorMessage
errorMessage
=
ErrorMapping
.
get
(
"149006"
);
throw
new
LiquidnetServiceException
(
errorMessage
.
getCode
(),
errorMessage
.
getMessage
());
}
Array
List
<
String
>
skuIdList
=
CollectionUtil
.
arrayListString
();
List
<
String
>
skuIdList
=
CollectionUtil
.
arrayListString
();
BigDecimal
priceGe
=
BigDecimal
.
ZERO
,
priceLe
=
BigDecimal
.
ZERO
;
int
size
=
mgtGoodsAddSkuParamList
.
size
(),
skuSpecSize
=
0
;
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
GoblinStoreMgtGoodsAddSkuParam
addSkuParam
=
mgtGoodsAddSkuParamList
.
get
(
i
);
String
skuId
=
addSkuParam
.
getSkuId
();
...
...
@@ -261,26 +271,66 @@ public class GoblinStoreMgtGoodsAddParam implements Serializable {
List
<
GoblinGoodsSpecDto
>
skuSpecList
=
addSkuParam
.
getSkuSpecList
();
vo
.
setSkuSpecList
(
skuSpecList
);
for
(
GoblinGoodsSkuInfoVo
goodsSkuInfoVo
:
vos
)
{
// 规格比对
Map
<
String
,
String
>
skuSpecMap
=
goodsSkuInfoVo
.
getSkuSpecList
().
stream
()
.
collect
(
Collectors
.
toMap
(
GoblinGoodsSpecDto:
:
getSpecName
,
GoblinGoodsSpecDto:
:
getSpecVname
,
(
k1
,
k2
)
->
k2
));
boolean
diffSpecFlg
=
false
;
for
(
GoblinGoodsSpecDto
goodsSpecDto
:
skuSpecList
)
{
String
specName
=
goodsSpecDto
.
getSpecName
();
if
(!
skuSpecMap
.
get
(
specName
).
equals
(
goodsSpecDto
.
getSpecVname
()))
{
diffSpecFlg
=
true
;
// 多个规格中只要存在一个不一致,即可跳过,标记为允许添加
break
;
}
}
if
(!
diffSpecFlg
)
{
// 重复的规格信息
ErrorMapping
.
ErrorMessage
errorMessage
=
ErrorMapping
.
get
(
"149006"
);
throw
new
LiquidnetServiceException
(
errorMessage
.
getCode
(),
errorMessage
.
getMessage
());
}
}
vos
.
add
(
vo
);
skuIdList
.
add
(
vo
.
getSkuId
());
skuIdList
.
add
(
vo
.
getSkuId
());
priceGe
=
priceGe
.
compareTo
(
vo
.
getPrice
())
>
0
?
vo
.
getPrice
()
:
priceGe
;
priceLe
=
priceLe
.
compareTo
(
vo
.
getPrice
())
<
0
?
vo
.
getPrice
()
:
priceLe
;
if
(
CollectionUtils
.
isEmpty
(
skuSpecList
)
||
(
skuSpecSize
>
0
&&
skuSpecSize
!=
skuSpecList
.
size
()))
{
ErrorMapping
.
ErrorMessage
errorMessage
=
ErrorMapping
.
get
(
"149006"
);
throw
new
LiquidnetServiceException
(
errorMessage
.
getCode
(),
errorMessage
.
getMessage
());
}
int
specSize
=
skuSpecList
.
size
();
// SKU包含的规格数量
skuSpecSize
=
i
==
0
?
specSize
:
skuSpecSize
;
// 标记第一个SKU的规格数量,用于校验
List
<
String
>
skuSpecNListTmp
=
CollectionUtil
.
arrayListString
();
// 标记单个SKU的规格名称,用于校验
for
(
int
j
=
0
;
j
<
specSize
;
j
++)
{
GoblinGoodsSpecDto
specDto
=
skuSpecList
.
get
(
j
);
String
specName
=
specDto
.
getSpecName
();
String
specVname
=
specDto
.
getSpecVname
();
GoblinGoodsSpecValueVo
specValueVo
=
GoblinGoodsSpecValueVo
.
getNew
().
setSpecVname
(
spec
Dto
.
getSpecVname
()).
setSpecVsort
(
j
);
GoblinGoodsSpecValueVo
specValueVo
=
GoblinGoodsSpecValueVo
.
getNew
().
setSpecVname
(
spec
Vname
).
setSpecVsort
(
i
);
if
(
i
==
0
)
{
if
(
goodsSpecVos
.
stream
().
anyMatch
(
r
->
r
.
getSpecName
().
equals
(
specName
)))
{
// 单SKU重复的规格
ErrorMapping
.
ErrorMessage
errorMessage
=
ErrorMapping
.
get
(
"149006"
);
throw
new
LiquidnetServiceException
(
errorMessage
.
getCode
(),
errorMessage
.
getMessage
());
}
ArrayList
<
GoblinGoodsSpecValueVo
>
specValueVos
=
new
ArrayList
<>();
specValueVos
.
add
(
specValueVo
);
goodsSpecVos
.
add
(
j
,
GoblinGoodsSpecVo
.
getNew
()
.
setSpecName
(
specDto
.
getSpecName
()).
setSpecSort
(
j
).
setSpecValues
(
specValueVos
));
}
else
{
// 补充规格对应的值
goodsSpecVos
.
get
(
j
).
getSpecValues
().
add
(
specValueVo
);
goodsSpecVos
.
add
(
GoblinGoodsSpecVo
.
getNew
().
setSpecName
(
specName
).
setSpecSort
(
j
).
setSpecValues
(
specValueVos
));
}
else
{
Optional
<
GoblinGoodsSpecVo
>
filterGoodsSpecOptional
=
goodsSpecVos
.
stream
().
filter
(
r
->
r
.
getSpecName
().
equals
(
specName
)).
findAny
();
if
(
filterGoodsSpecOptional
.
isPresent
())
{
// 存在该规格
if
(
filterGoodsSpecOptional
.
get
().
getSpecValues
().
stream
().
noneMatch
(
r
->
r
.
getSpecVname
().
equals
(
specVname
)))
{
// 且不包含该规格值,则补充规格对应的值
filterGoodsSpecOptional
.
get
().
getSpecValues
().
add
(
specValueVo
);
}
}
else
{
// 不存在该规格,则不同SKU规格不一致
ErrorMapping
.
ErrorMessage
errorMessage
=
ErrorMapping
.
get
(
"149006"
);
throw
new
LiquidnetServiceException
(
errorMessage
.
getCode
(),
errorMessage
.
getMessage
());
}
}
if
(!
skuSpecNListTmp
.
isEmpty
()
&&
skuSpecNListTmp
.
contains
(
specName
))
{
// 单SKU重复的规格
ErrorMapping
.
ErrorMessage
errorMessage
=
ErrorMapping
.
get
(
"149006"
);
throw
new
LiquidnetServiceException
(
errorMessage
.
getCode
(),
errorMessage
.
getMessage
());
}
skuSpecNListTmp
.
add
(
specName
);
}
}
goodsInfoVo
.
setPriceGe
(
priceGe
);
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/controller/manage/GoblinStoreMgtGoodsController.java
View file @
3223bd70
...
...
@@ -216,19 +216,22 @@ public class GoblinStoreMgtGoodsController {
}
}
List
<
String
>
skuIdList
=
goodsInfoVo
.
getSkuIdList
();
Map
<
String
,
String
>
paramSkuSpecMap
=
storeMgtGoodsEditSkuParam
.
getSkuSpecList
().
stream
()
.
collect
(
Collectors
.
toMap
(
GoblinGoodsSpecDto:
:
getSpecName
,
GoblinGoodsSpecDto:
:
getSpecVname
,
(
k1
,
k2
)
->
k2
));
for
(
String
skuId
:
skuIdList
)
{
// 比对所有SKU规格信息
GoblinGoodsSkuInfoVo
existMgtGoodsSkuInfoVo
=
goblinRedisUtils
.
getMgtGoodsSkuInfoVo
(
skuId
);
Map
<
String
,
String
>
editBefSkuSpecMap
=
existMgtGoodsSkuInfoVo
.
getSkuSpecList
().
stream
()
.
collect
(
Collectors
.
toMap
(
GoblinGoodsSpecDto:
:
getSpecName
,
GoblinGoodsSpecDto:
:
getSpecVname
,
(
k1
,
k2
)
->
k2
));
boolean
existingFlg
=
false
;
Set
<
Map
.
Entry
<
String
,
String
>>
paramSkuSpecSet
=
paramSkuSpecMap
.
entrySet
();
for
(
Map
.
Entry
<
String
,
String
>
entry
:
paramSkuSpecSet
)
{
existingFlg
=
editBefSkuSpecMap
.
get
(
entry
.
getKey
()).
equals
(
entry
.
getValue
());
boolean
diffSpecFlg
=
false
;
List
<
GoblinGoodsSpecDto
>
paramSkuSpecList
=
storeMgtGoodsEditSkuParam
.
getSkuSpecList
();
for
(
GoblinGoodsSpecDto
paramGoodsSpecDto
:
paramSkuSpecList
)
{
if
(!
editBefSkuSpecMap
.
get
(
paramGoodsSpecDto
.
getSpecName
()).
equals
(
paramGoodsSpecDto
.
getSpecVname
()))
{
diffSpecFlg
=
true
;
// 多个规格中只要存在一个不一致,即可跳过,标记为允许添加
break
;
}
}
if
(
skuId
.
equals
(
paramSkuId
))
{
if
(!
existingFlg
)
{
// 更改了规格,则同步修改SPU里的规格信息
if
(
diffSpecFlg
)
{
// 更改了规格,则同步修改SPU里的规格信息
Map
<
String
,
String
>
paramSkuSpecMap
=
paramSkuSpecList
.
stream
()
.
collect
(
Collectors
.
toMap
(
GoblinGoodsSpecDto:
:
getSpecName
,
GoblinGoodsSpecDto:
:
getSpecVname
,
(
k1
,
k2
)
->
k2
));
List
<
GoblinGoodsSpecVo
>
specVoList
=
goodsInfoVo
.
getSpecVoList
();
for
(
Map
.
Entry
<
String
,
String
>
entry
:
editBefSkuSpecMap
.
entrySet
())
{
for
(
GoblinGoodsSpecVo
specVo
:
specVoList
)
{
...
...
@@ -251,13 +254,13 @@ public class GoblinStoreMgtGoodsController {
}
continue
;
}
if
(
existing
Flg
)
{
log
.
warn
(
"商品管理:商品编辑:SKU编辑:重复的规格信息[editBefSkuSpecMap={},paramSkuSpecMap={}]"
,
editBefSkuSpecMap
,
paramSkuSpecMap
);
if
(
!
diffSpec
Flg
)
{
log
.
warn
(
"商品管理:商品编辑:SKU编辑:重复的规格信息[editBefSkuSpecMap={},paramSkuSpecMap={}]"
,
editBefSkuSpecMap
,
JsonUtils
.
toJson
(
paramSkuSpecList
)
);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"149014"
));
}
}
if
(
goblinstoreMgtGoodsService
.
goodsEditSku
(
storeMgtGoodsEditSkuParam
,
goodsInfoVo
))
{
return
ResponseDto
.
success
(
goblinRedisUtils
.
getMgtGoodsSkuInfoVo
(
storeMgtGoodsEditSkuParam
.
getSkuId
()
));
return
ResponseDto
.
success
(
goblinRedisUtils
.
getMgtGoodsSkuInfoVo
(
paramSkuId
));
}
else
{
if
(
null
!=
operStock
&&
operStock
!=
0
)
{
// 处理库存:回滚
int
operStockVal
=
Math
.
abs
(
operStock
);
...
...
@@ -284,19 +287,19 @@ public class GoblinStoreMgtGoodsController {
}
List
<
String
>
skuIdList
=
goodsInfoVo
.
getSkuIdList
();
List
<
GoblinGoodsSpecDto
>
skuSpecList
=
storeMgtGoodsEditSkuParam
.
getSkuSpecList
();
Map
<
String
,
String
>
paramSkuSpecMap
=
skuSpecList
.
stream
()
.
collect
(
Collectors
.
toMap
(
GoblinGoodsSpecDto:
:
getSpecName
,
GoblinGoodsSpecDto:
:
getSpecVname
,
(
k1
,
k2
)
->
k2
));
for
(
String
skuId
:
skuIdList
)
{
// 比对所有SKU规格信息
GoblinGoodsSkuInfoVo
mgtGoodsSkuInfoVo
=
goblinRedisUtils
.
getMgtGoodsSkuInfoVo
(
skuId
);
Map
<
String
,
String
>
skuSpecMap
=
mgtGoodsSkuInfoVo
.
getSkuSpecList
().
stream
()
.
collect
(
Collectors
.
toMap
(
GoblinGoodsSpecDto:
:
getSpecName
,
GoblinGoodsSpecDto:
:
getSpecVname
,
(
k1
,
k2
)
->
k2
));
boolean
existingFlg
=
false
;
Set
<
Map
.
Entry
<
String
,
String
>>
paramSkuSpecSet
=
paramSkuSpecMap
.
entrySet
();
for
(
Map
.
Entry
<
String
,
String
>
entry
:
paramSkuSpecSet
)
{
existingFlg
=
skuSpecMap
.
get
(
entry
.
getKey
()).
equals
(
entry
.
getValue
());
boolean
diffSpecFlg
=
false
;
for
(
GoblinGoodsSpecDto
goodsSpecDto
:
skuSpecList
)
{
if
(!
skuSpecMap
.
get
(
goodsSpecDto
.
getSpecName
()).
equals
(
goodsSpecDto
.
getSpecVname
()))
{
diffSpecFlg
=
true
;
// 多个规格中只要存在一个不一致,即可跳过,标记为允许添加
break
;
}
}
if
(
existing
Flg
)
{
log
.
warn
(
"商品管理:商品编辑:SKU添加:重复的规格信息[skuSpecMap={},paramSkuSpecMap={}]"
,
skuSpecMap
,
paramSkuSpecMap
);
if
(
!
diffSpec
Flg
)
{
log
.
warn
(
"商品管理:商品编辑:SKU添加:重复的规格信息[skuSpecMap={},paramSkuSpecMap={}]"
,
skuSpecMap
,
JsonUtils
.
toJson
(
skuSpecList
)
);
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"149014"
));
}
}
...
...
@@ -311,6 +314,8 @@ public class GoblinStoreMgtGoodsController {
specVoList
.
add
(
GoblinGoodsSpecVo
.
getNew
().
setSpecName
(
specDto
.
getSpecName
()).
setSpecSort
(
i
).
setSpecValues
(
specValueVoList
));
}
}
else
{
Map
<
String
,
String
>
paramSkuSpecMap
=
skuSpecList
.
stream
()
.
collect
(
Collectors
.
toMap
(
GoblinGoodsSpecDto:
:
getSpecName
,
GoblinGoodsSpecDto:
:
getSpecVname
,
(
k1
,
k2
)
->
k2
));
for
(
GoblinGoodsSpecVo
specVo
:
specVoList
)
{
// 同步添加SPU规格信息
List
<
GoblinGoodsSpecValueVo
>
specValues
=
specVo
.
getSpecValues
();
specValues
.
add
(
GoblinGoodsSpecValueVo
.
getNew
().
setSpecVname
(
paramSkuSpecMap
.
get
(
specVo
.
getSpecName
())).
setSpecVsort
(
specValues
.
size
()));
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/service/impl/manage/GoblinStoreMgtGoodsServiceImpl.java
View file @
3223bd70
...
...
@@ -46,13 +46,14 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
String
uid
=
CurrentUtil
.
getCurrentUid
();
LocalDateTime
now
=
LocalDateTime
.
now
();
GoblinGoodsInfoVo
v
o
=
storeMgtGoodsAddParam
.
initGoodsInfoVo
();
v
o
.
setCreatedBy
(
uid
);
v
o
.
setCreatedAt
(
now
);
GoblinGoodsInfoVo
goodsInfoV
o
=
storeMgtGoodsAddParam
.
initGoodsInfoVo
();
goodsInfoV
o
.
setCreatedBy
(
uid
);
goodsInfoV
o
.
setCreatedAt
(
now
);
ArrayList
<
GoblinGoodsSpecVo
>
goodsSpecVoList
=
ObjectUtil
.
getGoblinGoodsSpecVoArrayList
();
List
<
GoblinGoodsSkuInfoVo
>
goodsSkuInfoVoList
=
ObjectUtil
.
getGoblinGoodsSkuInfoVoArrayList
();
storeMgtGoodsAddParam
.
initGoodsSkuInfoVo
(
vo
,
goodsSkuInfoVoList
,
goodsSpecVoList
);
storeMgtGoodsAddParam
.
initGoodsSkuInfoVo
(
goodsInfoVo
,
goodsSkuInfoVoList
,
goodsSpecVoList
);
{
// 标签处理
List
<
String
>
goodsTagIdList
=
storeMgtGoodsAddParam
.
getTagList
();
...
...
@@ -75,7 +76,7 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
}
}
}
v
o
.
setTagVoList
(
goodsTagVoList
);
goodsInfoV
o
.
setTagVoList
(
goodsTagVoList
);
}
if
(!
goodsExtagIsEmpty
)
{
List
<
GoblinGoodsExtagVo
>
goodsExtagVoList
=
ObjectUtil
.
getGoblinGoodsExtagVoArrayList
();
...
...
@@ -87,15 +88,15 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
}
}
}
v
o
.
setExtagVoList
(
goodsExtagVoList
);
goodsInfoV
o
.
setExtagVoList
(
goodsExtagVoList
);
}
}
}
// 服务保障处理
v
o
.
setServiceSupportVoList
(
goblinMongoUtils
.
getServiceSupportVos
(
storeMgtGoodsAddParam
.
getSsidList
()));
goodsInfoV
o
.
setServiceSupportVoList
(
goblinMongoUtils
.
getServiceSupportVos
(
storeMgtGoodsAddParam
.
getSsidList
()));
goblinMongoUtils
.
setGoodsInfoVo
(
v
o
);
goblinMongoUtils
.
setGoodsInfoVo
(
goodsInfoV
o
);
goblinMongoUtils
.
setGoodsSkuInfoVos
(
goodsSkuInfoVoList
);
}
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/resources/errors.properties
View file @
3223bd70
...
...
@@ -20,7 +20,7 @@
149003
=
149004
=
149005
=
149006
=
149006
=
添加商品失败,规格信息无效
149007
=
149008
=
149009
=
...
...
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