Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
pms-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
pms-ci-test
Commits
eedd79cb
提交
eedd79cb
authored
8月 09, 2023
作者:
xiaowang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改:商城规格详情及编辑
上级
58b7c127
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
223 行增加
和
182 行删除
+223
-182
MallGoodsDao.java
src/main/java/com/mmc/pms/dao/mall/MallGoodsDao.java
+20
-20
MallGoodsDO.java
src/main/java/com/mmc/pms/entity/mall/MallGoodsDO.java
+1
-1
PriceStockDO.java
src/main/java/com/mmc/pms/entity/mall/PriceStockDO.java
+5
-0
SpecAttrDO.java
src/main/java/com/mmc/pms/entity/mall/SpecAttrDO.java
+6
-4
SpecAttrValueDO.java
src/main/java/com/mmc/pms/entity/mall/SpecAttrValueDO.java
+44
-0
MallGoodsVO.java
src/main/java/com/mmc/pms/model/mall/MallGoodsVO.java
+0
-4
MallGoodsServiceImpl.java
...a/com/mmc/pms/service/mall/impl/MallGoodsServiceImpl.java
+86
-66
MallGoodsDao.xml
src/main/resources/mapper/mall/MallGoodsDao.xml
+61
-87
没有找到文件。
src/main/java/com/mmc/pms/dao/mall/MallGoodsDao.java
浏览文件 @
eedd79cb
package
com
.
mmc
.
pms
.
dao
.
mall
;
package
com
.
mmc
.
pms
.
dao
.
mall
;
import
com.mmc.pms.entity.SkuUnitDO
;
import
com.mmc.pms.entity.mall.*
;
import
com.mmc.pms.entity.mall.*
;
import
com.mmc.pms.model.mall.MallGoodsVO
;
import
com.mmc.pms.model.mall.MallGoodsVO
;
import
com.mmc.pms.model.mall.SpecAttrVO
;
import
com.mmc.pms.model.sale.qo.MallGoodsInfoQO
;
import
com.mmc.pms.model.sale.qo.MallGoodsInfoQO
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
...
@@ -21,34 +21,16 @@ public interface MallGoodsDao {
...
@@ -21,34 +21,16 @@ public interface MallGoodsDao {
void
insertMallGoodsBaseInfo
(
MallGoodsDO
mallGoodsDO
);
void
insertMallGoodsBaseInfo
(
MallGoodsDO
mallGoodsDO
);
void
insertGoodsSpec
(
GoodsSpecDO
goodsSpecDO
);
void
batchInsertSpecValues
(
List
<
GoodsSpecValuesDO
>
goodsSpecValuesList
);
void
batchInsertMallGoodsResources
(
List
<
MallGoodsResourcesDO
>
mallGoodsResourcesList
);
void
batchInsertMallGoodsResources
(
List
<
MallGoodsResourcesDO
>
mallGoodsResourcesList
);
MallGoodsDO
getMallGoodsBaseInfo
(
Integer
id
);
MallGoodsDO
getMallGoodsBaseInfo
(
Integer
id
);
List
<
MallGoodsResourcesDO
>
getMallGoodsResources
(
Integer
id
);
List
<
MallGoodsResourcesDO
>
getMallGoodsResources
(
Integer
id
);
List
<
GoodsSpecDO
>
getMallGoodsSpec
(
Integer
id
);
List
<
GoodsSpecValuesDO
>
getMallGoodsSpecValues
(
List
<
Integer
>
ids
);
void
updateMallGoods
(
@Param
(
"mallGoodsDO"
)
MallGoodsDO
mallGoodsDO
);
void
updateMallGoods
(
@Param
(
"mallGoodsDO"
)
MallGoodsDO
mallGoodsDO
);
void
deleteMallGoodsResources
(
Integer
id
);
void
deleteMallGoodsResources
(
Integer
id
);
void
deleteGoodsSpec
(
List
<
Integer
>
deleteSpec
);
void
updateGoodsSpec
(
GoodsSpecDO
goodsSpecDO
);
void
deleteGoodsSpecValues
(
List
<
Integer
>
deleteSpecValueId
);
void
updateGoodsSpecValue
(
GoodsSpecValuesDO
goodsSpecValuesDO
);
List
<
SkuUnitDO
>
getSkuUnit
();
int
countListMallGoods
(
MallGoodsInfoQO
param
);
int
countListMallGoods
(
MallGoodsInfoQO
param
);
List
<
MallGoodsDO
>
listMallGoods
(
MallGoodsInfoQO
param
);
List
<
MallGoodsDO
>
listMallGoods
(
MallGoodsInfoQO
param
);
...
@@ -61,7 +43,25 @@ public interface MallGoodsDao {
...
@@ -61,7 +43,25 @@ public interface MallGoodsDao {
void
feignRemoveGoodsByBackUserAccountId
(
Integer
id
);
void
feignRemoveGoodsByBackUserAccountId
(
Integer
id
);
void
batchInsertSpecAttr
(
List
<
SpecAttrDO
>
list
);
void
batchInsertSpecAttr
(
List
<
SpecAttr
Value
DO
>
list
);
void
batchInsertPriceStock
(
List
<
PriceStockDO
>
list
);
void
batchInsertPriceStock
(
List
<
PriceStockDO
>
list
);
List
<
SpecAttrDO
>
listSpecAttr
(
Integer
id
);
List
<
PriceStockDO
>
listPriceStock
(
Integer
id
);
void
insertSpecAttr
(
SpecAttrDO
specAttrDO
);
List
<
SpecAttrValueDO
>
listSpecAttrValue
(
List
<
Integer
>
specIds
);
void
deleteMallPriceStock
(
Integer
id
);
void
deleteSpecAttr
(
List
<
Integer
>
delIds
);
void
updateSpecAttr
(
SpecAttrVO
specAttrVO
);
void
deleteSpecAttrValue
(
List
<
Integer
>
delValueIds
);
void
updateSpecAttrValue
(
SpecAttrVO
attrVO
);
}
}
src/main/java/com/mmc/pms/entity/mall/MallGoodsDO.java
浏览文件 @
eedd79cb
...
@@ -94,7 +94,7 @@ public class MallGoodsDO implements Serializable {
...
@@ -94,7 +94,7 @@ public class MallGoodsDO implements Serializable {
public
MallGoodsVO
buildMallGoodsVO
()
{
public
MallGoodsVO
buildMallGoodsVO
()
{
return
MallGoodsVO
.
builder
().
id
(
id
).
userAccountId
(
userAccountId
).
tradeName
(
tradeName
).
description
(
description
)
return
MallGoodsVO
.
builder
().
id
(
id
).
userAccountId
(
userAccountId
).
tradeName
(
tradeName
).
description
(
description
)
.
categoryPrimaryId
(
categoryPrimaryId
).
categorySubId
(
categorySubId
).
shelfStatus
(
shelfStatus
)
.
categoryPrimaryId
(
categoryPrimaryId
).
categorySubId
(
categorySubId
).
shelfStatus
(
shelfStatus
)
.
goodsLabel
(
goodsLabel
).
labelShow
(
labelShow
).
goodsDetails
(
goodsDetails
).
build
();
.
goodsLabel
(
goodsLabel
).
labelShow
(
labelShow
).
createTime
(
createTime
).
goodsDetails
(
goodsDetails
).
build
();
}
}
public
MallGoodsVO
buildListMallGoodsVO
()
{
public
MallGoodsVO
buildListMallGoodsVO
()
{
...
...
src/main/java/com/mmc/pms/entity/mall/PriceStockDO.java
浏览文件 @
eedd79cb
...
@@ -64,5 +64,10 @@ public class PriceStockDO implements Serializable {
...
@@ -64,5 +64,10 @@ public class PriceStockDO implements Serializable {
this
.
stock
=
param
.
getStock
();
this
.
stock
=
param
.
getStock
();
this
.
skuNo
=
param
.
getSkuNo
();
this
.
skuNo
=
param
.
getSkuNo
();
}
}
public
PriceStockVO
buildPriceStockVO
()
{
return
PriceStockVO
.
builder
().
id
(
id
).
productSpec
(
productSpec
).
salePrice
(
salePrice
)
.
skuImage
(
skuImage
).
channelPrice
(
channelPrice
).
stock
(
stock
).
skuNo
(
skuNo
).
build
();
}
}
}
src/main/java/com/mmc/pms/entity/mall/SpecAttrDO.java
浏览文件 @
eedd79cb
package
com
.
mmc
.
pms
.
entity
.
mall
;
package
com
.
mmc
.
pms
.
entity
.
mall
;
import
com.mmc.pms.model.mall.SpecAttrVO
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
...
@@ -28,13 +29,14 @@ public class SpecAttrDO implements Serializable {
...
@@ -28,13 +29,14 @@ public class SpecAttrDO implements Serializable {
* 规格名称
* 规格名称
*/
*/
private
String
specName
;
private
String
specName
;
/**
* 规格值名称
*/
private
String
specValueName
;
private
Date
createTime
;
private
Date
createTime
;
private
Date
updateTime
;
private
Date
updateTime
;
public
SpecAttrVO
buildSpecAttr
()
{
return
SpecAttrVO
.
builder
().
id
(
id
).
specName
(
specName
).
build
();
}
}
}
src/main/java/com/mmc/pms/entity/mall/SpecAttrValueDO.java
0 → 100644
浏览文件 @
eedd79cb
package
com
.
mmc
.
pms
.
entity
.
mall
;
import
com.mmc.pms.model.mall.SpecAttrVO
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* 规格属性表(SpecAttrDO)实体类
*
* @author makejava
* @since 2023-08-08 14:30:03
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
SpecAttrValueDO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
59237014539007263L
;
private
Integer
id
;
/**
* 商品id
*/
private
Integer
specAttrId
;
/**
* 规格值名称
*/
private
String
specValueName
;
private
Date
createTime
;
public
SpecAttrValueDO
(
SpecAttrVO
specAttrVO
)
{
specAttrId
=
specAttrVO
.
getId
();
specValueName
=
specAttrVO
.
getSpecName
();
}
public
SpecAttrVO
buildSpecAttr
()
{
return
SpecAttrVO
.
builder
().
id
(
id
).
specName
(
specValueName
).
build
();
}
}
src/main/java/com/mmc/pms/model/mall/MallGoodsVO.java
浏览文件 @
eedd79cb
...
@@ -59,10 +59,6 @@ public class MallGoodsVO {
...
@@ -59,10 +59,6 @@ public class MallGoodsVO {
private
Integer
labelShow
;
private
Integer
labelShow
;
@ApiModelProperty
(
value
=
"规格"
)
@ApiModelProperty
(
value
=
"规格"
)
@NotEmpty
(
message
=
"规格不能为空"
)
private
List
<
GoodsSpecVO
>
goodsSpecList
;
@ApiModelProperty
(
value
=
"规格"
)
@NotEmpty
(
message
=
"规格不能为空"
,
groups
=
{
Update
.
class
,
Create
.
class
})
@NotEmpty
(
message
=
"规格不能为空"
,
groups
=
{
Update
.
class
,
Create
.
class
})
private
List
<
SpecAttrVO
>
specAttrList
;
private
List
<
SpecAttrVO
>
specAttrList
;
...
...
src/main/java/com/mmc/pms/service/mall/impl/MallGoodsServiceImpl.java
浏览文件 @
eedd79cb
...
@@ -22,7 +22,6 @@ import javax.annotation.Resource;
...
@@ -22,7 +22,6 @@ import javax.annotation.Resource;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -49,26 +48,32 @@ public class MallGoodsServiceImpl implements MallGoodsService {
...
@@ -49,26 +48,32 @@ public class MallGoodsServiceImpl implements MallGoodsService {
// 将商品图片等资源存入数据库中
// 将商品图片等资源存入数据库中
insertMallGoodsResources
(
mallGoodsVO
,
mallGoodsDO
.
getId
());
insertMallGoodsResources
(
mallGoodsVO
,
mallGoodsDO
.
getId
());
// 将商品规格存入数据库
// 将商品规格存入数据库
// insertMallGoodsSpec(mallGoodsVO.getGoodsSpecList(), mallGoodsDO.getId());
addMallGoodsSpec
(
mallGoodsVO
.
getSpecAttrList
(),
mallGoodsDO
.
getId
(),
mallGoodsVO
.
getPriceStock
());
addMallGoodsSpec
(
mallGoodsVO
.
getSpecAttrList
(),
mallGoodsDO
.
getId
(),
mallGoodsVO
.
getPriceStock
());
return
ResultBody
.
success
();
return
ResultBody
.
success
();
}
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
addMallGoodsSpec
(
List
<
SpecAttrVO
>
specAttrList
,
Integer
id
,
List
<
PriceStockVO
>
priceStock
)
{
public
void
addMallGoodsSpec
(
List
<
SpecAttrVO
>
specAttrList
,
Integer
id
,
List
<
PriceStockVO
>
priceStock
)
{
List
<
SpecAttrDO
>
list
=
specAttrList
.
stream
()
if
(
CollectionUtils
.
isNotEmpty
(
specAttrList
))
{
.
flatMap
(
specAttrVO
->
specAttrVO
.
getSpecValuesList
().
stream
()
for
(
SpecAttrVO
specAttrVO
:
specAttrList
)
{
.
map
(
attrVO
->
{
SpecAttrDO
specAttrDO
=
new
SpecAttrDO
();
SpecAttrDO
specAttrDO
=
new
SpecAttrDO
();
specAttrDO
.
setMallGoodsId
(
id
);
specAttrDO
.
setMallGoodsId
(
id
);
specAttrDO
.
setSpecName
(
specAttrVO
.
getSpecName
());
specAttrDO
.
setSpecName
(
specAttrVO
.
getSpecName
());
mallGoodsDao
.
insertSpecAttr
(
specAttrDO
);
specAttrDO
.
setSpecValueName
(
attrVO
.
getSpecName
());
List
<
SpecAttrVO
>
specValuesList
=
specAttrVO
.
getSpecValuesList
();
return
specAttrDO
;
List
<
SpecAttrValueDO
>
list
=
specValuesList
.
stream
().
map
(
d
->
{
}))
SpecAttrValueDO
specAttrValueDO
=
new
SpecAttrValueDO
();
.
collect
(
Collectors
.
toList
());
specAttrValueDO
.
setSpecValueName
(
d
.
getSpecName
());
mallGoodsDao
.
batchInsertSpecAttr
(
list
);
specAttrValueDO
.
setSpecAttrId
(
specAttrDO
.
getId
());
List
<
PriceStockDO
>
priceStockDOList
=
priceStock
.
stream
().
map
(
d
->
new
PriceStockDO
(
d
,
id
)).
collect
(
Collectors
.
toList
());
return
specAttrValueDO
;
mallGoodsDao
.
batchInsertPriceStock
(
priceStockDOList
);
}).
collect
(
Collectors
.
toList
());
mallGoodsDao
.
batchInsertSpecAttr
(
list
);
}
}
if
(
CollectionUtils
.
isNotEmpty
(
priceStock
))
{
List
<
PriceStockDO
>
priceStockDOList
=
priceStock
.
stream
().
map
(
d
->
new
PriceStockDO
(
d
,
id
)).
collect
(
Collectors
.
toList
());
mallGoodsDao
.
batchInsertPriceStock
(
priceStockDOList
);
}
}
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
@@ -124,18 +129,22 @@ public class MallGoodsServiceImpl implements MallGoodsService {
...
@@ -124,18 +129,22 @@ public class MallGoodsServiceImpl implements MallGoodsService {
List
<
MallGoodsResourcesDO
>
mallGoodsResourcesList
=
mallGoodsDao
.
getMallGoodsResources
(
id
);
List
<
MallGoodsResourcesDO
>
mallGoodsResourcesList
=
mallGoodsDao
.
getMallGoodsResources
(
id
);
mallGoodsVO
.
setResourcesList
(
mallGoodsResourcesList
.
stream
()
mallGoodsVO
.
setResourcesList
(
mallGoodsResourcesList
.
stream
()
.
map
(
MallGoodsResourcesDO:
:
buildGoodsResourcesVO
).
collect
(
Collectors
.
toList
()));
.
map
(
MallGoodsResourcesDO:
:
buildGoodsResourcesVO
).
collect
(
Collectors
.
toList
()));
// 获取规格信息
// 获取规格及规格值
List
<
GoodsSpecDO
>
goodsSpecList
=
mallGoodsDao
.
getMallGoodsSpec
(
id
);
List
<
SpecAttrDO
>
specAttrDOList
=
mallGoodsDao
.
listSpecAttr
(
id
);
List
<
GoodsSpecVO
>
goodsSpec
=
goodsSpecList
.
stream
().
map
(
GoodsSpecDO:
:
buildGoodsSpecVO
)
List
<
Integer
>
specIds
=
specAttrDOList
.
stream
().
map
(
SpecAttrDO:
:
getId
).
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
List
<
SpecAttrValueDO
>
specAttrValueDOList
=
mallGoodsDao
.
listSpecAttrValue
(
specIds
);
// 获取规格值信息
// 转成vo
List
<
GoodsSpecValuesDO
>
goodsSpecValuesList
=
mallGoodsDao
.
getMallGoodsSpecValues
(
goodsSpec
.
stream
().
map
(
GoodsSpecVO:
:
getId
).
collect
(
Collectors
.
toList
()));
List
<
SpecAttrVO
>
specAttrVOList
=
specAttrDOList
.
stream
().
map
(
SpecAttrDO:
:
buildSpecAttr
).
collect
(
Collectors
.
toList
());
List
<
GoodsSpecValuesVO
>
goodsSpecValues
=
goodsSpecValuesList
.
stream
().
map
(
GoodsSpecValuesDO:
:
buildGoodsSpecValuesVO
).
collect
(
Collectors
.
toList
());
// 拼装数据
Map
<
Integer
,
List
<
GoodsSpecValuesVO
>>
goodsSpecValuesVO
=
goodsSpecValues
.
stream
().
collect
(
Collectors
.
groupingBy
(
GoodsSpecValuesVO:
:
getGoodsSpecId
));
Map
<
Integer
,
List
<
SpecAttrValueDO
>>
specValueMap
=
specAttrValueDOList
.
stream
().
collect
(
Collectors
.
groupingBy
(
SpecAttrValueDO:
:
getSpecAttrId
));
for
(
GoodsSpecVO
goodsSpecVO
:
goodsSpec
)
{
specAttrVOList
=
specAttrVOList
.
stream
().
peek
(
d
->
{
goodsSpecVO
.
setGoodsSpecValuesList
(
goodsSpecValuesVO
.
get
(
goodsSpecVO
.
getId
()));
List
<
SpecAttrValueDO
>
attrValueList
=
specValueMap
.
get
(
d
.
getId
());
}
d
.
setSpecValuesList
(
attrValueList
.
stream
().
map
(
SpecAttrValueDO:
:
buildSpecAttr
).
collect
(
Collectors
.
toList
()));
mallGoodsVO
.
setGoodsSpecList
(
goodsSpec
);
}).
collect
(
Collectors
.
toList
());
mallGoodsVO
.
setSpecAttrList
(
specAttrVOList
);
// 获取价格库存排列组合
List
<
PriceStockDO
>
priceStockDOList
=
mallGoodsDao
.
listPriceStock
(
id
);
mallGoodsVO
.
setPriceStock
(
priceStockDOList
.
stream
().
map
(
PriceStockDO:
:
buildPriceStockVO
).
collect
(
Collectors
.
toList
()));
return
ResultBody
.
success
(
mallGoodsVO
);
return
ResultBody
.
success
(
mallGoodsVO
);
}
}
...
@@ -151,53 +160,64 @@ public class MallGoodsServiceImpl implements MallGoodsService {
...
@@ -151,53 +160,64 @@ public class MallGoodsServiceImpl implements MallGoodsService {
// 修改商城商品的图片等资源信息,先删除后新增
// 修改商城商品的图片等资源信息,先删除后新增
mallGoodsDao
.
deleteMallGoodsResources
(
mallGoodsVO
.
getId
());
mallGoodsDao
.
deleteMallGoodsResources
(
mallGoodsVO
.
getId
());
this
.
insertMallGoodsResources
(
mallGoodsVO
,
mallGoodsVO
.
getId
());
this
.
insertMallGoodsResources
(
mallGoodsVO
,
mallGoodsVO
.
getId
());
// 从数据库获取商品规格信息
// 修改规格
List
<
GoodsSpecDO
>
dbGoodsSpec
=
mallGoodsDao
.
getMallGoodsSpec
(
mallGoodsVO
.
getId
());
List
<
SpecAttrVO
>
specAttrList
=
mallGoodsVO
.
getSpecAttrList
();
List
<
Integer
>
specIds
=
mallGoodsVO
.
getGoodsSpecList
().
stream
().
map
(
GoodsSpecVO:
:
getId
).
filter
(
Objects:
:
nonNull
).
collect
(
Collectors
.
toList
());
// 从数据库获取该商品下的所有规格
// 对比要删除的规格
List
<
SpecAttrDO
>
dbSpecList
=
mallGoodsDao
.
listSpecAttr
(
mallGoodsVO
.
getId
());
List
<
Integer
>
deleteSpec
=
dbGoodsSpec
.
stream
().
map
(
GoodsSpecDO:
:
getId
).
filter
(
id
->
!
specIds
.
contains
(
id
)).
collect
(
Collectors
.
toList
());
List
<
Integer
>
delIds
=
dbSpecList
.
stream
().
map
(
SpecAttrDO:
:
getId
)
if
(
deleteSpec
.
size
()
!=
0
)
{
.
filter
(
id
->
!
specAttrList
.
stream
().
map
(
SpecAttrVO:
:
getId
).
collect
(
Collectors
.
toList
()).
contains
(
id
))
mallGoodsDao
.
deleteGoodsSpec
(
deleteSpec
);
.
collect
(
Collectors
.
toList
());
if
(
delIds
.
size
()
!=
0
)
{
// 删除多余规格
mallGoodsDao
.
deleteSpecAttr
(
delIds
);
}
}
// 获取规格值信息
// 获取id不为空的规格,进行修改
Map
<
Integer
,
List
<
GoodsSpecValuesDO
>>
specValuesMap
=
mallGoodsDao
.
getMallGoodsSpecValues
(
specIds
).
stream
()
List
<
SpecAttrVO
>
updateSpecAttr
=
specAttrList
.
stream
().
filter
(
spec
->
spec
.
getId
()
!=
null
).
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
groupingBy
(
GoodsSpecValuesDO:
:
getGoodsSpecId
));
// 从数据库获取规格下的规格值信息,获取所有,避免重复查询数据库
// 修改规格信息
Map
<
Integer
,
List
<
SpecAttrValueDO
>>
specValueMap
=
mallGoodsDao
.
listSpecAttrValue
(
updateSpecAttr
.
stream
().
map
(
SpecAttrVO:
:
getId
).
collect
(
Collectors
.
toList
()))
for
(
GoodsSpecVO
goodsSpecVO
:
mallGoodsVO
.
getGoodsSpecList
())
{
.
stream
().
collect
(
Collectors
.
groupingBy
(
SpecAttrValueDO:
:
getSpecAttrId
));
if
(
goodsSpecVO
.
getId
()
!=
null
)
{
if
(
CollectionUtils
.
isNotEmpty
(
updateSpecAttr
))
{
GoodsSpecDO
goodsSpecDO
=
new
GoodsSpecDO
(
goodsSpecVO
);
for
(
SpecAttrVO
specAttrVO
:
updateSpecAttr
)
{
mallGoodsDao
.
updateGoodsSpec
(
goodsSpecDO
);
// 修改规格信息
// 数据库获取到的规格值信息
mallGoodsDao
.
updateSpecAttr
(
specAttrVO
);
List
<
GoodsSpecValuesDO
>
dbSpecValues
=
specValuesMap
.
get
(
goodsSpecVO
.
getId
());
// 获取该规格下数据库里的规格值信息
List
<
Integer
>
specValuesId
=
goodsSpecVO
.
getGoodsSpecValuesList
().
stream
().
map
(
GoodsSpecValuesVO:
:
getId
).
filter
(
Objects:
:
nonNull
).
collect
(
Collectors
.
toList
());
List
<
SpecAttrValueDO
>
dbSpecAttrValue
=
specValueMap
.
get
(
specAttrVO
.
getId
());
List
<
Integer
>
deleteSpecValueId
=
dbSpecValues
.
stream
().
map
(
GoodsSpecValuesDO:
:
getId
).
filter
(
id
->
!
specValuesId
.
contains
(
id
)).
collect
(
Collectors
.
toList
());
List
<
Integer
>
delValueIds
=
dbSpecAttrValue
.
stream
()
if
(
deleteSpecValueId
.
size
()
!=
0
)
{
.
map
(
SpecAttrValueDO:
:
getId
)
mallGoodsDao
.
deleteGoodsSpecValues
(
deleteSpecValueId
);
.
filter
(
id
->
!
specAttrVO
.
getSpecValuesList
().
stream
().
map
(
SpecAttrVO:
:
getId
).
collect
(
Collectors
.
toList
()).
contains
(
id
))
.
collect
(
Collectors
.
toList
());
if
(
delValueIds
.
size
()
!=
0
)
{
// 删除多余规格值
mallGoodsDao
.
deleteSpecAttrValue
(
delValueIds
);
}
}
//
修改规格值的信息
//
获取规格值id不为空的就进行规格值修改
List
<
GoodsSpecValuesVO
>
updateSpecValue
=
goodsSpecVO
.
getGoodsSpecValuesList
().
stream
().
filter
(
d
->
d
.
getId
()
!=
null
).
collect
(
Collectors
.
toList
());
List
<
SpecAttrVO
>
updateSpecValue
=
specAttrVO
.
getSpecValuesList
().
stream
().
filter
(
var
->
var
.
getId
()
!=
null
).
collect
(
Collectors
.
toList
());
for
(
GoodsSpecValuesVO
goodsSpecValuesVO
:
updateSpecValue
)
{
if
(
CollectionUtils
.
isNotEmpty
(
updateSpecValue
)
)
{
GoodsSpecValuesDO
goodsSpecValuesDO
=
new
GoodsSpecValuesDO
(
goodsSpecValuesVO
);
for
(
SpecAttrVO
attrVO
:
updateSpecValue
)
{
goodsSpecValuesDO
.
setGoodsSpecId
(
goodsSpecVO
.
getId
()
);
mallGoodsDao
.
updateSpecAttrValue
(
attrVO
);
mallGoodsDao
.
updateGoodsSpecValue
(
goodsSpecValuesDO
);
}
}
}
// 新增id为空的规格值
// 新增规格值
List
<
GoodsSpecValuesVO
>
newGoodsSpecValues
=
goodsSpecVO
.
getGoodsSpecValuesList
().
stream
().
filter
(
d
->
d
.
getId
()
==
null
).
collect
(
Collectors
.
toList
());
List
<
SpecAttrVO
>
addSpecValue
=
specAttrVO
.
getSpecValuesList
().
stream
().
filter
(
var
->
var
.
getId
()
==
null
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
newGoodsSpecValues
))
{
if
(
CollectionUtils
.
isNotEmpty
(
addSpecValue
))
{
List
<
GoodsSpecValuesDO
>
goodsSpecValuesList
=
newGoodsSpecValues
.
stream
().
map
(
d
->
{
List
<
SpecAttrValueDO
>
specValueList
=
addSpecValue
.
stream
().
map
(
d
->
{
d
.
setGoodsSpecId
(
goodsSpecVO
.
getId
());
SpecAttrValueDO
specAttrValueDO
=
new
SpecAttrValueDO
();
return
new
GoodsSpecValuesDO
(
d
);
specAttrValueDO
.
setSpecAttrId
(
specAttrVO
.
getId
());
specAttrValueDO
.
setSpecValueName
(
d
.
getSpecName
());
return
specAttrValueDO
;
}).
collect
(
Collectors
.
toList
());
}).
collect
(
Collectors
.
toList
());
// 批量插入规格值的信息
mallGoodsDao
.
batchInsertSpecAttr
(
specValueList
);
mallGoodsDao
.
batchInsertSpecValues
(
goodsSpecValuesList
);
}
}
}
}
}
}
//
新增id为空的规格
//
获取规格id为空的值,进行新增
List
<
GoodsSpecVO
>
newGoodsSpec
=
mallGoodsVO
.
getGoodsSpecList
().
stream
().
filter
(
d
->
d
.
getId
()
==
null
).
collect
(
Collectors
.
toList
());
List
<
SpecAttrVO
>
addSpecAttr
=
specAttrList
.
stream
().
filter
(
spec
->
spec
.
getId
()
==
null
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
newGoodsSpec
))
{
if
(
CollectionUtils
.
isNotEmpty
(
addSpecAttr
))
{
this
.
insertMallGoodsSpec
(
newGoodsSpec
,
mallGoodsVO
.
getId
()
);
addMallGoodsSpec
(
addSpecAttr
,
mallGoodsVO
.
getId
(),
null
);
}
}
// 修改排列组合数据
mallGoodsDao
.
deleteMallPriceStock
(
mallGoodsVO
.
getId
());
addMallGoodsSpec
(
null
,
mallGoodsVO
.
getId
(),
mallGoodsVO
.
getPriceStock
());
return
ResultBody
.
success
();
return
ResultBody
.
success
();
}
}
...
...
src/main/resources/mapper/mall/MallGoodsDao.xml
浏览文件 @
eedd79cb
...
@@ -19,31 +19,7 @@
...
@@ -19,31 +19,7 @@
values ( #{goodsNo}, #{tradeName}, #{description}, #{categoryPrimaryId}, #{categorySubId}
values ( #{goodsNo}, #{tradeName}, #{description}, #{categoryPrimaryId}, #{categorySubId}
, #{shelfStatus}, #{goodsLabel}, #{labelShow}, #{goodsDetails}, #{userAccountId}, #{sort})
, #{shelfStatus}, #{goodsLabel}, #{labelShow}, #{goodsDetails}, #{userAccountId}, #{sort})
</insert>
</insert>
<insert
id=
"insertGoodsSpec"
parameterType=
"com.mmc.pms.entity.mall.GoodsSpecDO"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
insert into goods_spec (mall_goods_id,
spec_name,
choose_type,
must,
sku_unit_id)
values (#{mallGoodsId}, #{specName}, #{chooseType}, #{must}, #{skuUnitId})
</insert>
<!-- 新版待删除 -->
<insert
id=
"batchInsertSpecValues"
parameterType=
"list"
>
insert into goods_spec_values (goods_spec_id,
spec_value_name,
part_no,
spec_value_image,
show_price,
stock,
sale_price,
channel_price)
values
<foreach
collection=
"list"
item=
"item"
separator=
","
>
(#{item.goodsSpecId},#{item.specValueName},#{item.partNo},#{item.specValueImage}
,#{item.showPrice},#{item.stock},#{item.salePrice},#{item.channelPrice})
</foreach>
</insert>
<insert
id=
"batchInsertMallGoodsResources"
>
<insert
id=
"batchInsertMallGoodsResources"
>
insert into mall_goods_resources (mall_goods_id,
insert into mall_goods_resources (mall_goods_id,
url,
url,
...
@@ -55,13 +31,12 @@
...
@@ -55,13 +31,12 @@
</foreach>
</foreach>
</insert>
</insert>
<insert
id=
"batchInsertSpecAttr"
>
<insert
id=
"batchInsertSpecAttr"
>
insert into spec_attr (mall_goods_id,
insert into spec_attr_value (spec_attr_id,
spec_name,
spec_value_name
spec_value_name
)
)
values
values
<foreach
collection=
"list"
item=
"item"
separator=
","
>
<foreach
collection=
"list"
item=
"item"
separator=
","
>
(#{item.
mallGoodsId},#{item.specName
},#{item.specValueName})
(#{item.
specAttrId
},#{item.specValueName})
</foreach>
</foreach>
</insert>
</insert>
<insert
id=
"batchInsertPriceStock"
>
<insert
id=
"batchInsertPriceStock"
>
...
@@ -77,6 +52,12 @@
...
@@ -77,6 +52,12 @@
(#{item.mallGoodsId},#{item.productSpec},#{item.salePrice},#{item.skuImage},#{item.channelPrice},#{item.stock},#{item.skuNo})
(#{item.mallGoodsId},#{item.productSpec},#{item.salePrice},#{item.skuImage},#{item.channelPrice},#{item.stock},#{item.skuNo})
</foreach>
</foreach>
</insert>
</insert>
<insert
id=
"insertSpecAttr"
useGeneratedKeys=
"true"
keyProperty=
"id"
parameterType=
"com.mmc.pms.entity.mall.SpecAttrDO"
>
insert into spec_attr (mall_goods_id,
spec_name)
values (#{mallGoodsId}, #{specName})
</insert>
<update
id=
"updateMallGoods"
>
<update
id=
"updateMallGoods"
>
UPDATE mall_goods
UPDATE mall_goods
SET trade_name = #{mallGoodsDO.tradeName},
SET trade_name = #{mallGoodsDO.tradeName},
...
@@ -89,26 +70,6 @@
...
@@ -89,26 +70,6 @@
goods_details = #{mallGoodsDO.goodsDetails}
goods_details = #{mallGoodsDO.goodsDetails}
WHERE id = #{mallGoodsDO.id}
WHERE id = #{mallGoodsDO.id}
</update>
</update>
<update
id=
"updateGoodsSpec"
>
update goods_spec
set spec_name = #{specName},
choose_type = #{chooseType},
must = #{must},
sku_unit_id = #{skuUnitId}
where id = #{id}
</update>
<update
id=
"updateGoodsSpecValue"
>
update goods_spec_values
set goods_spec_id = #{goodsSpecId},
spec_value_name = #{specValueName},
part_no =#{partNo},
spec_value_image = #{specValueImage},
show_price = #{showPrice},
stock = #{stock},
sale_price = #{salePrice},
channel_price =#{channelPrice}
where id = #{id}
</update>
<update
id=
"updateMallGoodsSort"
>
<update
id=
"updateMallGoodsSort"
>
update mall_goods
update mall_goods
set sort = #{sort}
set sort = #{sort}
...
@@ -129,23 +90,38 @@
...
@@ -129,23 +90,38 @@
set is_deleted = 1
set is_deleted = 1
where user_account_id = #{id}
where user_account_id = #{id}
</update>
</update>
<update
id=
"updateSpecAttr"
>
update spec_attr
set spec_name = #{specName}
where id = #{id}
</update>
<update
id=
"updateSpecAttrValue"
>
update spec_attr_value
set spec_value_name = #{specName}
where id = #{id}
</update>
<delete
id=
"deleteMallGoodsResources"
>
<delete
id=
"deleteMallGoodsResources"
>
delete
delete
from mall_goods_resources
from mall_goods_resources
where mall_goods_id = #{id}
where mall_goods_id = #{id}
</delete>
</delete>
<delete
id=
"deleteGoodsSpec"
>
<delete
id=
"deleteMallPriceStock"
>
delete
from price_stock
where mall_goods_id = #{id}
</delete>
<delete
id=
"deleteSpecAttr"
>
delete
delete
from
goods_spec
from
spec_attr
<where>
<where>
<foreach
collection=
"list"
open=
"id in ("
close=
")"
item=
"item"
separator=
","
>
<foreach
collection=
"list"
open=
"id in ("
close=
")"
item=
"item"
separator=
","
>
#{item}
#{item}
</foreach>
</foreach>
</where>
</where>
</delete>
</delete>
<delete
id=
"delete
GoodsSpecValues
"
>
<delete
id=
"delete
SpecAttrValue
"
>
delete
delete
from
goods_spec_values
from
spec_attr_value
<where>
<where>
<foreach
collection=
"list"
open=
"id in ("
close=
")"
item=
"item"
separator=
","
>
<foreach
collection=
"list"
open=
"id in ("
close=
")"
item=
"item"
separator=
","
>
#{item}
#{item}
...
@@ -179,7 +155,8 @@
...
@@ -179,7 +155,8 @@
label_show,
label_show,
goods_details,
goods_details,
user_account_id,
user_account_id,
sort
sort,
create_time
FROM mall_goods
FROM mall_goods
WHERE id = #{id}
WHERE id = #{id}
and is_deleted = 0
and is_deleted = 0
...
@@ -192,40 +169,7 @@
...
@@ -192,40 +169,7 @@
from mall_goods_resources
from mall_goods_resources
where mall_goods_id = #{id}
where mall_goods_id = #{id}
</select>
</select>
<select
id=
"getMallGoodsSpec"
resultType=
"com.mmc.pms.entity.mall.GoodsSpecDO"
>
select id,
mall_goods_id,
spec_name,
choose_type,
must,
sku_unit_id
from goods_spec
where mall_goods_id = #{id}
</select>
<select
id=
"getMallGoodsSpecValues"
resultType=
"com.mmc.pms.entity.mall.GoodsSpecValuesDO"
>
select id,
goods_spec_id,
spec_value_name,
part_no,
spec_value_image,
show_price,
stock,
sale_price,
channel_price
from goods_spec_values
<where>
<foreach
collection=
"list"
separator=
","
item=
"item"
open=
"goods_spec_id in ("
close=
")"
>
#{item}
</foreach>
</where>
</select>
<select
id=
"getSkuUnit"
resultType=
"com.mmc.pms.entity.SkuUnitDO"
>
SELECT id,
unit_name unitName,
create_time createTime
FROM sku_unit
WHERE is_deleted = 0
</select>
<select
id=
"countListMallGoods"
resultType=
"java.lang.Integer"
>
<select
id=
"countListMallGoods"
resultType=
"java.lang.Integer"
>
SELECT
SELECT
count(*)
count(*)
...
@@ -283,4 +227,34 @@
...
@@ -283,4 +227,34 @@
mg.shelf_status DESC , mg.sort DESC,mg.create_time DESC
mg.shelf_status DESC , mg.sort DESC,mg.create_time DESC
limit #{pageNo},#{pageSize}
limit #{pageNo},#{pageSize}
</select>
</select>
<select
id=
"listSpecAttr"
resultType=
"com.mmc.pms.entity.mall.SpecAttrDO"
>
SELECT id, spec_name, mall_goods_id, create_time
FROM spec_attr
where mall_goods_id = #{id}
</select>
<select
id=
"listPriceStock"
resultType=
"com.mmc.pms.entity.mall.PriceStockDO"
>
SELECT id,
mall_goods_id,
product_spec,
sale_price,
sku_image,
channel_price,
stock,
sku_no,
create_time
FROM price_stock
WHERE mall_goods_id = #{id}
</select>
<select
id=
"listSpecAttrValue"
resultType=
"com.mmc.pms.entity.mall.SpecAttrValueDO"
>
SELECT id,
spec_attr_id,
spec_value_name,
create_time
FROM spec_attr_value
<where>
<foreach
collection=
"list"
separator=
","
open=
"spec_attr_id in ("
close=
")"
item=
"item"
>
#{item}
</foreach>
</where>
</select>
</mapper>
</mapper>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论