记得上下班打卡 | 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
317400e4
Commit
317400e4
authored
Mar 05, 2022
by
张国柄
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
~API:SKU删除优化;
parent
94c86adb
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
73 additions
and
75 deletions
+73
-75
GoblinStoreMgtGoodsServiceImpl.java
...n/service/impl/manage/GoblinStoreMgtGoodsServiceImpl.java
+73
-75
No files found.
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/service/impl/manage/GoblinStoreMgtGoodsServiceImpl.java
View file @
317400e4
...
...
@@ -562,8 +562,10 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
LinkedList
<
Object
[]>
initSpuSpecValueObjs
=
CollectionUtil
.
linkedListObjectArr
();
LinkedList
<
Object
[]>
delSpuSpecValueObjs
=
CollectionUtil
.
linkedListObjectArr
();
List
<
GoblinGoodsSpecVo
>
specVoList
=
goodsInfoVo
.
getSpecVoList
()
;
boolean
updateGoodsInfoVoFlg
=
false
;
List
<
GoblinGoodsSpecDto
>
skuSpecList
=
mgtGoodsEditSkuParam
.
getSkuSpecList
();
if
(!
CollectionUtils
.
isEmpty
(
skuSpecList
))
{
// 不为空,则更改了规格
List
<
GoblinGoodsSpecVo
>
specVoList
=
goodsInfoVo
.
getSpecVoList
();
skuSpecList
.
forEach
(
spec
->
{
String
specName
=
spec
.
getSpecName
(),
specVname
=
spec
.
getSpecVname
();
...
...
@@ -575,7 +577,6 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
}
});
boolean
updateGoodsInfoVoFlg
=
false
;
if
(!
delSpuSpecMap
.
isEmpty
())
{
// 删除了规格值,需要同步SPU里的规格信息
updateGoodsInfoVoFlg
=
true
;
goodsInfoVo
.
setUpdatedBy
(
uid
);
...
...
@@ -588,6 +589,7 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
goodsInfoVo
.
setUpdatedBy
(
uid
);
goodsInfoVo
.
setUpdatedAt
(
now
);
}
}
BigDecimal
priceGe
=
BigDecimal
.
ZERO
,
priceLe
=
BigDecimal
.
ZERO
;
for
(
String
skuIdStr
:
goodsInfoVo
.
getSkuIdList
())
{
...
...
@@ -743,71 +745,67 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
}
@Override
public
boolean
goodsEditSkuDel
(
String
uid
,
GoblinGoodsSkuInfoVo
g
oodsSkuInfoVo
,
GoblinGoodsInfoVo
mgtGoodsInfoVo
)
{
String
spuId
=
g
oodsSkuInfoVo
.
getSpuId
();
String
delSkuId
=
g
oodsSkuInfoVo
.
getSkuId
();
public
boolean
goodsEditSkuDel
(
String
uid
,
GoblinGoodsSkuInfoVo
delG
oodsSkuInfoVo
,
GoblinGoodsInfoVo
mgtGoodsInfoVo
)
{
String
spuId
=
delG
oodsSkuInfoVo
.
getSpuId
();
String
delSkuId
=
delG
oodsSkuInfoVo
.
getSkuId
();
List
<
String
>
skuIdList
=
mgtGoodsInfoVo
.
getSkuIdList
();
skuIdList
.
removeIf
(
r
->
r
.
equals
(
delSkuId
));
List
<
GoblinGoodsSkuInfoVo
>
remainGoodsSkuInfoVos
=
goblinMongoUtils
.
getGoodsSkuInfoVos
(
skuIdList
);
Map
<
String
,
Set
<
String
>>
remainSkuSpecNameVnameMap
=
new
HashMap
<>();
int
remainGoodsSkuInfoVoSize
=
remainGoodsSkuInfoVos
.
size
();
for
(
int
i
=
0
;
i
<
remainGoodsSkuInfoVoSize
;
i
++)
{
GoblinGoodsSkuInfoVo
remainGoodsSkuInfoVo
=
remainGoodsSkuInfoVos
.
get
(
i
);
if
(
remainGoodsSkuInfoVo
.
getDelFlg
().
equals
(
"0"
))
{
// 有效SKU
List
<
GoblinGoodsSpecDto
>
remainGoodsSkuSpecDtoList
=
remainGoodsSkuInfoVo
.
getSkuSpecList
();
for
(
GoblinGoodsSpecDto
remainGoodsSkuSpecDto
:
remainGoodsSkuSpecDtoList
)
{
String
remainGoodsSkuSpecDtoSpecName
=
remainGoodsSkuSpecDto
.
getSpecName
();
String
remainGoodsSkuSpecDtoSpecVname
=
remainGoodsSkuSpecDto
.
getSpecVname
();
List
<
GoblinGoodsSkuInfoVo
>
goodsSkuInfoVos
=
goblinMongoUtils
.
getGoodsSkuInfoVos
(
skuIdList
);
List
<
List
<
GoblinGoodsSpecDto
>>
remainSkuSpecDtoList
=
goodsSkuInfoVos
.
stream
()
.
filter
(
r
->
r
.
getDelFlg
().
equals
(
"0"
)).
map
(
GoblinGoodsSkuInfoVo:
:
getSkuSpecList
).
collect
(
Collectors
.
toList
());
Map
<
String
,
Set
<
String
>>
remainSkuSpecMap
=
new
HashMap
<>();
for
(
List
<
GoblinGoodsSpecDto
>
goblinGoodsSpecDtos
:
remainSkuSpecDtoList
)
{
for
(
GoblinGoodsSpecDto
goblinGoodsSpecDto
:
goblinGoodsSpecDtos
)
{
String
specName
=
goblinGoodsSpecDto
.
getSpecName
(),
specVname
=
goblinGoodsSpecDto
.
getSpecVname
();
Set
<
String
>
remainSkuSpecVnameSet
=
remainSkuSpecMap
.
get
(
specName
);
if
(
CollectionUtils
.
isEmpty
(
remainSkuSpecVnameSet
))
{
remainSkuSpecVnameSet
=
CollectionUtil
.
getStringArraySet
();
Set
<
String
>
remainSkuSpecVnameTmpSet
=
remainSkuSpecNameVnameMap
.
get
(
remainGoodsSkuSpecDtoSpecName
);
if
(
CollectionUtils
.
isEmpty
(
remainSkuSpecVnameTmpSet
))
{
remainSkuSpecVnameTmpSet
=
CollectionUtil
.
getStringArraySet
();
}
remainSkuSpecVnameSet
.
add
(
s
pecVname
);
remainSkuSpecMap
.
put
(
specName
,
remainSkuSpecVname
Set
);
remainSkuSpecVnameTmpSet
.
add
(
remainGoodsSkuSpecDtoS
pecVname
);
remainSkuSpecNameVnameMap
.
put
(
remainGoodsSkuSpecDtoSpecName
,
remainSkuSpecVnameTmp
Set
);
}
}
Map
<
String
,
String
>
delGoodsSkuSpecMap
=
goodsSkuInfoVo
.
getSkuSpecList
().
stream
()
.
collect
(
Collectors
.
toMap
(
GoblinGoodsSpecDto:
:
getSpecName
,
GoblinGoodsSpecDto:
:
getSpecVname
));
List
<
GoblinGoodsSpecVo
>
specVoList
=
mgtGoodsInfoVo
.
getSpecVoList
();
}
List
<
GoblinGoodsSpecVo
>
goodsInfoVoSpecVoList
=
mgtGoodsInfoVo
.
getSpecVoList
();
List
<
GoblinGoodsSpecDto
>
delGoodsSkuInfoVoSkuSpecList
=
delGoodsSkuInfoVo
.
getSkuSpecList
();
LinkedList
<
Object
[]>
updateGoodsSpuSpecObjs
=
CollectionUtil
.
linkedListObjectArr
();
for
(
int
i
=
0
;
i
<
specVoList
.
size
();
i
++)
{
// 处理商品规格信息
GoblinGoodsSpecVo
specVo
=
specVoList
.
get
(
i
);
// 商品指定规格
List
<
GoblinGoodsSpecValueVo
>
modifySpecValues
=
ObjectUtil
.
getGoblinGoodsSpecValueVoArrayList
();
String
specName
=
specVo
.
getSpecName
();
// 商品指定规格的名
Set
<
String
>
specVnameSet
=
remainSkuSpecMap
.
get
(
specName
);
// 剩余SKU指定规格的值集合
String
delSpecVname
=
delGoodsSkuSpecMap
.
get
(
specName
);
// 需要删除的SKU下指定规格的规格值
List
<
GoblinGoodsSpecValueVo
>
specValues
=
specVo
.
getSpecValues
();
// 商品指定规格下所有规格值
Integer
rmIdx
=
null
;
specValues
.
sort
(
Comparator
.
comparing
(
GoblinGoodsSpecValueVo:
:
getSpecVsort
));
for
(
GoblinGoodsSpecValueVo
specValue
:
specValues
)
{
// 遍历指定规格下每个规格值
String
specVname
=
specValue
.
getSpecVname
();
int
specVsort
=
specValue
.
getSpecVsort
();
if
(
specVname
.
equals
(
delSpecVname
))
{
if
(
CollectionUtils
.
isEmpty
(
specVnameSet
))
break
;
if
(
specVnameSet
.
contains
(
delSpecVname
))
{
// 剩余SKU指定规格的值集合,包含当前删除的规格值,则不做处理
modifySpecValues
.
addAll
(
specValues
);
break
;
}
else
{
// 剩余SKU指定规格的值集合,不包含当前删除的规格值,则可以删除且记录排序以处理其他规格值排序
rmIdx
=
specVsort
;
updateGoodsSpuSpecObjs
.
add
(
new
Object
[]{
0
,
"1"
,
spuId
,
specName
,
delSpecVname
});
continue
;
for
(
int
i
=
0
;
i
<
delGoodsSkuInfoVoSkuSpecList
.
size
();
i
++)
{
GoblinGoodsSpecDto
delGoodsSpecDto
=
delGoodsSkuInfoVoSkuSpecList
.
get
(
i
);
String
delGoodsSpecDtoSpecName
=
delGoodsSpecDto
.
getSpecName
();
String
delGoodsSpecDtoSpecVname
=
delGoodsSpecDto
.
getSpecVname
();
Set
<
String
>
remainSkuSpecVnameSet
=
remainSkuSpecNameVnameMap
.
get
(
delGoodsSpecDtoSpecName
);
if
(
CollectionUtils
.
isEmpty
(
remainSkuSpecVnameSet
)
||
!
remainSkuSpecVnameSet
.
contains
(
delGoodsSpecDtoSpecVname
))
{
// 其他SKU规格值中不存在当前删除SKU规格值,则删除该规格值
for
(
GoblinGoodsSpecVo
goodsSpecVo
:
goodsInfoVoSpecVoList
)
{
if
(
goodsSpecVo
.
getSpecName
().
equals
(
delGoodsSpecDtoSpecName
))
{
List
<
GoblinGoodsSpecValueVo
>
goodsSpecVoSpecValues
=
goodsSpecVo
.
getSpecValues
();
goodsSpecVoSpecValues
.
removeIf
(
r
->
r
.
getSpecVname
().
equals
(
delGoodsSpecDtoSpecVname
));
goodsSpecVoSpecValues
.
sort
(
Comparator
.
comparing
(
GoblinGoodsSpecValueVo:
:
getSpecVsort
));
updateGoodsSpuSpecObjs
.
add
(
new
Object
[]{
0
,
"1"
,
spuId
,
delGoodsSpecDtoSpecName
,
delGoodsSpecDtoSpecVname
});
for
(
int
j
=
0
;
j
<
goodsSpecVoSpecValues
.
size
();
j
++)
{
GoblinGoodsSpecValueVo
goodsSpecVoSpecValue
=
goodsSpecVoSpecValues
.
get
(
j
);
goodsSpecVoSpecValue
.
setSpecVsort
(
j
);
updateGoodsSpuSpecObjs
.
add
(
new
Object
[]{
j
,
"0"
,
spuId
,
delGoodsSpecDtoSpecName
,
goodsSpecVoSpecValue
.
getSpecVname
()});
}
break
;
}
if
(
null
!=
rmIdx
&&
specVsort
>
rmIdx
)
{
specValue
.
setSpecVsort
(
specVsort
-
1
);
updateGoodsSpuSpecObjs
.
add
(
new
Object
[]{
specVsort
,
"0"
,
spuId
,
specName
,
specVname
});
}
modifySpecValues
.
add
(
specValue
);
}
specVo
.
setSpecValues
(
modifySpecValues
);
}
LocalDateTime
now
=
LocalDateTime
.
now
();
g
oodsSkuInfoVo
.
setUpdatedBy
(
uid
);
g
oodsSkuInfoVo
.
setUpdatedAt
(
now
);
g
oodsSkuInfoVo
.
setDeletedBy
(
uid
);
g
oodsSkuInfoVo
.
setDeletedAt
(
now
);
delG
oodsSkuInfoVo
.
setUpdatedBy
(
uid
);
delG
oodsSkuInfoVo
.
setUpdatedAt
(
now
);
delG
oodsSkuInfoVo
.
setDeletedBy
(
uid
);
delG
oodsSkuInfoVo
.
setDeletedAt
(
now
);
List
<
String
>
delSkuIdList
=
goblinRedisUtils
.
getSkuRe
(
delSkuId
);
delSkuIdList
=
null
==
delSkuIdList
?
CollectionUtil
.
arrayListString
()
:
delSkuIdList
;
...
...
@@ -815,7 +813,7 @@ public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsServi
if
(
log
.
isDebugEnabled
())
{
log
.
debug
(
"商品管理:商品编辑:SKU删除[delSkuId={},skuReId={}]"
,
delSkuId
,
JsonUtils
.
toJson
(
delSkuIdList
));
}
if
(
goblinMongoUtils
.
delGoodsSkuInfoVo
(
g
oodsSkuInfoVo
,
delSkuIdList
))
{
if
(
goblinMongoUtils
.
delGoodsSkuInfoVo
(
delG
oodsSkuInfoVo
,
delSkuIdList
))
{
delSkuIdList
.
forEach
(
skuId
->
{
goblinRedisUtils
.
delGoodsSkuInfoVo
(
skuId
);
goblinRedisUtils
.
delGoodsSkuInfoVoByUnShelves
(
skuId
);
...
...
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