Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
pms
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
iuav
pms
Commits
cd53de73
提交
cd53de73
authored
5月 29, 2023
作者:
xiaowang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
后台管理商品新增
上级
7c145017
显示空白字符变更
内嵌
并排
正在显示
21 个修改的文件
包含
782 行增加
和
23 行删除
+782
-23
BackstageBrandManageController.java
...om/mmc/pms/controller/BackstageBrandManageController.java
+1
-1
BackstageCategoriesController.java
...com/mmc/pms/controller/BackstageCategoriesController.java
+1
-1
BackstageGoodsManageController.java
...om/mmc/pms/controller/BackstageGoodsManageController.java
+36
-0
BackstageProductSpecController.java
...om/mmc/pms/controller/BackstageProductSpecController.java
+1
-1
GoodsInfoDao.java
src/main/java/com/mmc/pms/dao/GoodsInfoDao.java
+36
-0
ProductSkuDao.java
src/main/java/com/mmc/pms/dao/ProductSkuDao.java
+3
-0
GoodsInfo.java
src/main/java/com/mmc/pms/entity/GoodsInfo.java
+64
-0
MallProdSkuInfoDO.java
src/main/java/com/mmc/pms/entity/MallProdSkuInfoDO.java
+11
-6
ProductSpecDO.java
src/main/java/com/mmc/pms/entity/ProductSpecDO.java
+0
-0
ProductSpecVO.java
src/main/java/com/mmc/pms/model/dto/ProductSpecVO.java
+3
-0
GoodsAddVO.java
src/main/java/com/mmc/pms/model/vo/GoodsAddVO.java
+55
-0
GoodsDetailVO.java
src/main/java/com/mmc/pms/model/vo/GoodsDetailVO.java
+2
-9
GoodsProdSpecVO.java
src/main/java/com/mmc/pms/model/vo/GoodsProdSpecVO.java
+57
-0
GoodsSpecVO.java
src/main/java/com/mmc/pms/model/vo/GoodsSpecVO.java
+0
-0
GoodsInfoService.java
src/main/java/com/mmc/pms/service/GoodsInfoService.java
+14
-0
GoodsInfoServiceImpl.java
...n/java/com/mmc/pms/service/Impl/GoodsInfoServiceImpl.java
+179
-0
MiniProgramProductMallServiceImpl.java
...c/pms/service/Impl/MiniProgramProductMallServiceImpl.java
+1
-2
ProductSkuServiceImpl.java
.../java/com/mmc/pms/service/Impl/ProductSkuServiceImpl.java
+1
-1
CodeUtil.java
src/main/java/com/mmc/pms/util/CodeUtil.java
+238
-0
GoodsInfoDao.xml
src/main/resources/mapper/GoodsInfoDao.xml
+69
-0
ProductSkuDao.xml
src/main/resources/mapper/ProductSkuDao.xml
+10
-2
没有找到文件。
src/main/java/com/mmc/pms/controller/BrandManageController.java
→
src/main/java/com/mmc/pms/controller/B
ackstageB
randManageController.java
浏览文件 @
cd53de73
...
...
@@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping
(
"/brand"
)
@Api
(
tags
=
{
"品牌管理-相关接口"
})
public
class
BrandManageController
{
public
class
B
ackstageB
randManageController
{
@Autowired
private
BrandManageService
brandManageService
;
...
...
src/main/java/com/mmc/pms/controller/CategoriesController.java
→
src/main/java/com/mmc/pms/controller/
Backstage
CategoriesController.java
浏览文件 @
cd53de73
...
...
@@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.*;
@Api
(
tags
=
{
"后台-分类管理-接口"
})
@RestController
@RequestMapping
(
"/classify"
)
public
class
CategoriesController
{
public
class
Backstage
CategoriesController
{
@Autowired
private
CategoriesService
categoriesService
;
...
...
src/main/java/com/mmc/pms/controller/BackstageGoodsManageController.java
0 → 100644
浏览文件 @
cd53de73
package
com
.
mmc
.
pms
.
controller
;
import
com.mmc.pms.common.ResultBody
;
import
com.mmc.pms.model.vo.Create
;
import
com.mmc.pms.model.vo.GoodsAddVO
;
import
com.mmc.pms.service.GoodsInfoService
;
import
io.swagger.annotations.*
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.annotation.Resource
;
/**
* @Author LW
* @date 2023/3/14 13:22
* 概要:
*/
@RestController
@RequestMapping
(
"/goods"
)
@Api
(
tags
=
{
"商品管理-相关接口"
})
public
class
BackstageGoodsManageController
{
@Resource
private
GoodsInfoService
goodsInfoService
;
@ApiOperation
(
value
=
"新增(租赁/销售)商品"
)
@PostMapping
(
"addGoodsInfo"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
public
ResultBody
addGoods
(
@ApiParam
(
"商品信息VO"
)
@Validated
(
Create
.
class
)
@RequestBody
GoodsAddVO
goodsAddVO
)
{
return
goodsInfoService
.
addGoods
(
goodsAddVO
);
}
}
src/main/java/com/mmc/pms/controller/ProductSpecController.java
→
src/main/java/com/mmc/pms/controller/
Backstage
ProductSpecController.java
浏览文件 @
cd53de73
...
...
@@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping
(
"/product/spec/"
)
@Api
(
tags
=
{
"产品管理模块-相关接口"
})
public
class
ProductSpecController
{
public
class
Backstage
ProductSpecController
{
@Autowired
private
ProductSkuService
productSkuService
;
...
...
src/main/java/com/mmc/pms/dao/GoodsInfoDao.java
0 → 100644
浏览文件 @
cd53de73
package
com
.
mmc
.
pms
.
dao
;
import
com.mmc.pms.entity.*
;
import
com.mmc.pms.model.vo.GoodsAddVO
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
/**
* @author 23214
* @description 针对表【goods_info(商品基本信息)】的数据库操作Mapper
* @createDate 2023-05-27 14:08:45
* @Entity com.mmc.pms.entity.GoodsInfo
*/
@Mapper
public
interface
GoodsInfoDao
{
int
countGoodsInfoByName
(
GoodsAddVO
goodsAddVO
);
void
insertGoodsInfo
(
GoodsInfo
goodsInfo
);
int
countGoodsInfo
();
void
insertGoodsImgInfo
(
List
<
GoodsImgDO
>
list
);
void
insertVideoInfo
(
GoodsVideoDO
goodsVideoDO
);
void
insertGoodsDetail
(
GoodsDetailDO
goodsDetailDO
);
void
insertGoodsService
(
List
<
GoodsServiceDO
>
otherList
);
}
src/main/java/com/mmc/pms/dao/ProductSkuDao.java
浏览文件 @
cd53de73
package
com
.
mmc
.
pms
.
dao
;
import
com.mmc.pms.entity.MallProdSkuInfoDO
;
import
com.mmc.pms.entity.ProductSkuDO
;
import
com.mmc.pms.entity.ProductSpecDO
;
import
com.mmc.pms.entity.ProductSpecPriceDO
;
...
...
@@ -56,6 +57,8 @@ public interface ProductSkuDao {
void
removeProductSpecCPQ
(
ProductSpecCPQVO
productSpecCPQVO
);
List
<
ProductSpecPriceDO
>
getProductSpecPrice
(
ProductSpecCPQVO
productSpecCPQVO
);
void
insertMallProdSkuInfo
(
MallProdSkuInfoDO
mallProdSkuInfoDO
);
}
...
...
src/main/java/com/mmc/pms/entity/GoodsInfo.java
0 → 100644
浏览文件 @
cd53de73
package
com
.
mmc
.
pms
.
entity
;
import
com.mmc.pms.model.vo.GoodsAddVO
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @author 23214
* @TableName goods_info
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
GoodsInfo
implements
Serializable
{
private
Integer
id
;
private
Integer
pid
;
private
String
goodsNo
;
private
String
goodsName
;
private
Integer
directoryId
;
private
Integer
addGoodsUserId
;
private
Integer
categoryByOne
;
private
Integer
categoryByTwo
;
private
String
ecoLabel
;
private
Integer
shelfStatus
;
private
Integer
showCode
;
private
Integer
sort
;
private
Date
createTime
;
private
Integer
goodsType
;
private
Date
updateTime
;
private
Integer
deleted
;
private
static
final
long
serialVersionUID
=
1L
;
public
GoodsInfo
(
GoodsAddVO
goodsAddVO
)
{
this
.
id
=
goodsAddVO
.
getId
();
this
.
goodsName
=
goodsAddVO
.
getGoodsName
();
this
.
shelfStatus
=
goodsAddVO
.
getShelfStatus
();
this
.
categoryByOne
=
goodsAddVO
.
getCategoryByOne
();
this
.
categoryByTwo
=
goodsAddVO
.
getCategoryByTwo
();
this
.
directoryId
=
goodsAddVO
.
getDirectoryId
();
this
.
ecoLabel
=
goodsAddVO
.
getTag
();
this
.
goodsType
=
goodsAddVO
.
getGoodsType
();
}
}
\ No newline at end of file
src/main/java/com/mmc/pms/entity/MallProdSkuInfoDO.java
浏览文件 @
cd53de73
...
...
@@ -23,7 +23,7 @@ public class MallProdSkuInfoDO implements Serializable {
private
Integer
goodsInfoId
;
private
Integer
prodSkuId
;
private
String
prodSkuSpecName
;
private
Integer
goodsType
Id
;
private
Integer
category
Id
;
private
Integer
chooseType
;
private
Integer
must
;
private
Integer
skuUnitId
;
...
...
@@ -31,17 +31,22 @@ public class MallProdSkuInfoDO implements Serializable {
private
Date
createTime
;
private
Date
updateTime
;
private
Integer
flag
;
/** 辅助字段 start */
private
String
productSpecIdList
;
private
String
beforeUpdateSpec
;
/**
* 辅助字段 start
*/
private
String
typeName
;
private
String
unitName
;
private
String
productSkuName
;
private
Integer
brandInfoId
;
/** 辅助字段 end */
/**
* 辅助字段 end
*/
public
MallProdSkuInfoDO
(
GoodsSpecVO
goodsSpecVO
)
{
this
.
goodsType
Id
=
goodsSpecVO
.
getGoodsTypeId
();
this
.
category
Id
=
goodsSpecVO
.
getGoodsTypeId
();
this
.
prodSkuSpecName
=
goodsSpecVO
.
getGoodsSpecName
();
this
.
chooseType
=
goodsSpecVO
.
getChooseType
();
this
.
skuUnitId
=
goodsSpecVO
.
getSkuUnitId
();
...
...
@@ -53,7 +58,7 @@ public class MallProdSkuInfoDO implements Serializable {
return
GoodsSpecDTO
.
builder
()
.
id
(
this
.
id
)
.
goodsSpecName
(
this
.
prodSkuSpecName
)
.
goodsTypeId
(
this
.
goodsType
Id
)
.
goodsTypeId
(
this
.
category
Id
)
.
chooseType
(
this
.
chooseType
)
.
skuUnitId
(
skuUnitId
)
.
unitName
(
this
.
unitName
)
...
...
src/main/java/com/mmc/pms/entity/ProductSpecDO.java
浏览文件 @
cd53de73
src/main/java/com/mmc/pms/model/dto/ProductSpecVO.java
浏览文件 @
cd53de73
package
com
.
mmc
.
pms
.
model
.
dto
;
import
com.mmc.pms.model.vo.Create
;
import
com.mmc.pms.model.vo.ProductSpecCPQVO
;
import
com.mmc.pms.model.vo.Update
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
...
...
@@ -42,4 +43,6 @@ public class ProductSpecVO implements Serializable {
@ApiModelProperty
(
value
=
"版本描述"
)
private
String
versionDesc
;
@ApiModelProperty
(
value
=
"价格配置信息"
)
private
ProductSpecCPQVO
productSpecCPQVO
;
}
src/main/java/com/mmc/pms/model/vo/GoodsAddVO.java
0 → 100644
浏览文件 @
cd53de73
package
com
.
mmc
.
pms
.
model
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* @Author LW
* @date 2022/10/14 11:30
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
GoodsAddVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
7041502536618388167L
;
@ApiModelProperty
(
value
=
"id"
)
@NotNull
(
message
=
"新增时传商品类型:0:销售商品 1:租赁商品"
,
groups
=
{
Create
.
class
})
private
Integer
goodsType
;
@ApiModelProperty
(
value
=
"id"
)
@NotNull
(
message
=
"修改时id不能为空"
,
groups
=
{
Update
.
class
})
private
Integer
id
;
@ApiModelProperty
(
value
=
"商品图片"
)
@NotEmpty
(
message
=
"主图不能为空"
,
groups
=
{
Update
.
class
,
Create
.
class
})
private
List
<
GoodsImgVO
>
images
;
@ApiModelProperty
(
value
=
"商品视频"
)
private
String
goodsVideo
;
@ApiModelProperty
(
value
=
"商品名称"
)
@NotNull
(
message
=
"商品名称不能为空"
,
groups
=
{
Update
.
class
,
Create
.
class
})
private
String
goodsName
;
@ApiModelProperty
(
value
=
"商品详情"
)
private
GoodsDetailVO
goodsDetailVO
;
@ApiModelProperty
(
value
=
"所属目录"
)
@NotNull
(
message
=
"所属目录不能为空"
,
groups
=
{
Update
.
class
,
Create
.
class
})
private
Integer
directoryId
;
@ApiModelProperty
(
value
=
"一级分类id"
)
@NotNull
(
message
=
"分类不能为空"
,
groups
=
{
Update
.
class
,
Create
.
class
})
private
Integer
categoryByOne
;
@ApiModelProperty
(
value
=
"二级分类id"
)
private
Integer
categoryByTwo
;
@ApiModelProperty
(
value
=
"商品标签"
)
private
String
tag
;
@ApiModelProperty
(
value
=
"商品状态 0:下架 1:上架"
)
private
Integer
shelfStatus
;
@ApiModelProperty
(
value
=
"规格信息"
)
private
List
<
GoodsProdSpecVO
>
productSpec
;
@ApiModelProperty
(
value
=
"其他服务: 1:免费配送,2:专业飞手培训2日, 3:半年保修, 4:一年保修 "
)
private
List
<
Integer
>
otherService
;
}
src/main/java/com/mmc/pms/model/vo/GoodsDetailVO.java
浏览文件 @
cd53de73
...
...
@@ -14,24 +14,17 @@ import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
// @ApiModel(value = "com.mmc.csf.model.vo.GoodsDetailVO", description = "商品详情")
public
class
GoodsDetailVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
3842207843504795301L
;
@ApiModelProperty
(
value
=
"商品描述 :70字内"
)
@Size
(
max
=
250
,
message
=
"商品描述不能超过250个字符"
,
groups
=
{
Create
.
class
,
Update
.
class
})
@Size
(
max
=
250
,
message
=
"商品描述不能超过250个字符"
,
groups
=
{
Create
.
class
,
Update
.
class
})
private
String
goodsDesc
;
@ApiModelProperty
(
value
=
"产品介绍"
)
private
String
productDesc
;
@ApiModelProperty
(
value
=
"商品备注:100字以内"
)
@Size
(
max
=
100
,
message
=
"商品备注不能超过100个字符"
,
groups
=
{
Create
.
class
,
Update
.
class
})
@Size
(
max
=
100
,
message
=
"商品备注不能超过100个字符"
,
groups
=
{
Create
.
class
,
Update
.
class
})
private
String
remark
;
}
src/main/java/com/mmc/pms/model/vo/GoodsProdSpecVO.java
0 → 100644
浏览文件 @
cd53de73
package
com
.
mmc
.
pms
.
model
.
vo
;
import
com.mmc.pms.model.dto.ProductSpecVO
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* @Author LW
* @date 2023/5/29 9:58
* 概要:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
GoodsProdSpecVO
implements
Serializable
{
@ApiModelProperty
(
value
=
"id"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"规格名称"
)
private
String
goodsSpecName
;
@ApiModelProperty
(
value
=
"产品类型id"
)
private
Integer
categoryId
;
@ApiModelProperty
(
value
=
"产品:自定义时此字段可不用填写"
)
private
Integer
skuId
;
@ApiModelProperty
(
value
=
"规格来源 0:获取 1:自定义"
)
private
Integer
flag
;
@ApiModelProperty
(
value
=
"产品名称(自定义的时候才需要传值)"
)
private
String
productName
;
@ApiModelProperty
(
value
=
"选项来源"
)
private
List
<
Integer
>
specIds
;
@ApiModelProperty
(
value
=
"选择方式"
)
private
Integer
chooseType
;
@ApiModelProperty
(
value
=
"规格单位"
)
private
Integer
skuUnitId
;
@ApiModelProperty
(
value
=
"是否必选"
)
private
Integer
must
;
@ApiModelProperty
(
value
=
"自定义规格的信息填充"
)
private
List
<
ProductSpecVO
>
customizeInfo
;
@ApiModelProperty
(
value
=
"删除的自定义规格id"
)
private
List
<
Integer
>
delProductSpecId
;
}
src/main/java/com/mmc/pms/model/vo/GoodsSpecVO.java
浏览文件 @
cd53de73
src/main/java/com/mmc/pms/service/GoodsInfoService.java
0 → 100644
浏览文件 @
cd53de73
package
com
.
mmc
.
pms
.
service
;
import
com.mmc.pms.common.ResultBody
;
import
com.mmc.pms.model.vo.GoodsAddVO
;
/**
* @author 23214
* @description 针对表【goods_info(商品基本信息)】的数据库操作Service
* @createDate 2023-05-27 14:08:45
*/
public
interface
GoodsInfoService
{
ResultBody
addGoods
(
GoodsAddVO
goodsAddVO
);
}
src/main/java/com/mmc/pms/service/Impl/GoodsInfoServiceImpl.java
0 → 100644
浏览文件 @
cd53de73
package
com
.
mmc
.
pms
.
service
.
Impl
;
import
com.mmc.pms.common.ResultBody
;
import
com.mmc.pms.common.ResultEnum
;
import
com.mmc.pms.dao.GoodsInfoDao
;
import
com.mmc.pms.dao.ProductSkuDao
;
import
com.mmc.pms.entity.*
;
import
com.mmc.pms.model.vo.GoodsAddVO
;
import
com.mmc.pms.model.vo.GoodsDetailVO
;
import
com.mmc.pms.model.vo.GoodsProdSpecVO
;
import
com.mmc.pms.model.vo.ProductSpecCPQVO
;
import
com.mmc.pms.service.GoodsInfoService
;
import
com.mmc.pms.util.CodeUtil
;
import
com.mmc.pms.util.TDateUtil
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* @author 23214
* @description 针对表【goods_info(商品基本信息)】的数据库操作Service实现
* @createDate 2023-05-27 14:08:45
*/
@Service
public
class
GoodsInfoServiceImpl
implements
GoodsInfoService
{
@Resource
private
GoodsInfoDao
goodsInfoDao
;
@Resource
private
ProductSkuDao
productSkuDao
;
@Resource
private
ProductSkuServiceImpl
productSkuService
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ResultBody
addGoods
(
GoodsAddVO
goodsAddVO
)
{
// 判断商品名称是否存在
if
(
goodsInfoDao
.
countGoodsInfoByName
(
goodsAddVO
)
>
0
)
{
return
ResultBody
.
error
(
ResultEnum
.
GOODS_CATEGORY_NAME_EXIST_ERROR
);
}
// 判断商品详情中描述是否为空
if
(
goodsAddVO
.
getGoodsDetailVO
().
getGoodsDesc
()
==
null
)
{
return
ResultBody
.
error
(
ResultEnum
.
GOODS_DESC_IS_NOT_NULL
);
}
String
YYYY_MM_DD_HH_MM_SS
=
"yyyyMMddHHmmss"
;
// 初始化商品对象,并构建对象
GoodsInfo
goodsInfo
=
new
GoodsInfo
(
goodsAddVO
);
goodsInfo
.
setGoodsNo
(
"IUAV"
+
TDateUtil
.
getDateStr
(
new
Date
(),
YYYY_MM_DD_HH_MM_SS
)
+
CodeUtil
.
getRandomNum
(
4
));
// 暂未接入用户默认传1
goodsInfo
.
setAddGoodsUserId
(
1
);
goodsInfo
.
setSort
(
goodsInfoDao
.
countGoodsInfo
()
+
1
);
// 插入商品基本信息
goodsInfoDao
.
insertGoodsInfo
(
goodsInfo
);
// 调用图片视频插入信息方法
addGoodsImageInfo
(
goodsInfo
.
getId
(),
goodsAddVO
);
// 调用商品详情信息方法
addGoodsDetail
(
goodsInfo
.
getId
(),
goodsAddVO
.
getGoodsDetailVO
());
// 判断其他服务是否为空,不为空则插入
if
(!
CollectionUtils
.
isEmpty
(
goodsAddVO
.
getOtherService
()))
{
addOtherService
(
goodsAddVO
.
getOtherService
(),
goodsInfo
.
getId
());
}
// 调用产品规格的新增方法
if
(!
goodsAddVO
.
getDirectoryId
().
equals
(
2
))
{
// 添加产品规格信息
productSkuSpecOperation
(
goodsInfo
,
goodsAddVO
.
getProductSpec
());
}
return
ResultBody
.
success
();
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
productSkuSpecOperation
(
GoodsInfo
goodsInfo
,
List
<
GoodsProdSpecVO
>
productSpec
)
{
// 遍历规格信息,获取其中非自定义的规格信息
List
<
GoodsProdSpecVO
>
customGoodsSpecList
=
productSpec
.
stream
().
filter
(
spec
->
spec
.
getFlag
().
equals
(
1
)).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isNotEmpty
(
customGoodsSpecList
))
{
addCustomization
(
goodsInfo
,
customGoodsSpecList
);
}
// 遍历规格信息,获取其中非自定义的规格信息
List
<
GoodsProdSpecVO
>
goodsSpecList
=
productSpec
.
stream
().
filter
(
spec
->
spec
.
getFlag
().
equals
(
0
)).
collect
(
Collectors
.
toList
());
for
(
GoodsProdSpecVO
goodsSpec
:
goodsSpecList
)
{
MallProdSkuInfoDO
mallProdSkuInfoDO
=
buildMallProdSkuInfo
(
goodsInfo
,
goodsSpec
,
goodsSpec
.
getSkuId
());
mallProdSkuInfoDO
.
setProductSpecIdList
(
goodsSpec
.
getSpecIds
().
stream
().
map
(
String:
:
valueOf
).
collect
(
Collectors
.
joining
(
","
)));
// 插入数据库商品对应的sku信息
productSkuDao
.
insertMallProdSkuInfo
(
mallProdSkuInfoDO
);
}
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
MallProdSkuInfoDO
buildMallProdSkuInfo
(
GoodsInfo
goodsInfo
,
GoodsProdSpecVO
goodsSpec
,
Integer
id
)
{
MallProdSkuInfoDO
mallProdSkuInfoDO
=
new
MallProdSkuInfoDO
();
mallProdSkuInfoDO
.
setGoodsInfoId
(
goodsInfo
.
getId
());
mallProdSkuInfoDO
.
setProdSkuId
(
id
);
mallProdSkuInfoDO
.
setProdSkuSpecName
(
goodsSpec
.
getGoodsSpecName
());
mallProdSkuInfoDO
.
setCategoryId
(
goodsSpec
.
getCategoryId
());
mallProdSkuInfoDO
.
setChooseType
(
goodsSpec
.
getChooseType
());
mallProdSkuInfoDO
.
setMust
(
goodsSpec
.
getMust
());
mallProdSkuInfoDO
.
setFlag
(
goodsSpec
.
getFlag
());
mallProdSkuInfoDO
.
setSkuUnitId
(
goodsSpec
.
getSkuUnitId
());
return
mallProdSkuInfoDO
;
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
addCustomization
(
GoodsInfo
goodsInfo
,
List
<
GoodsProdSpecVO
>
customGoodsSpecList
)
{
// 遍历自定义规格信息
for
(
GoodsProdSpecVO
productSpec
:
customGoodsSpecList
)
{
// 构建商品对应的sku信息
ProductSkuDO
productSkuDO
=
new
ProductSkuDO
().
setCategoriesId
(
productSpec
.
getCategoryId
())
.
setProductName
(
productSpec
.
getProductName
()).
setCustomize
(
1
)
.
setDirectoryId
(
goodsInfo
.
getDirectoryId
());
// 插入产品sku信息
productSkuDao
.
insertProductSku
(
productSkuDO
);
// 先将自定的信息存储到数据库中
List
<
ProductSpecDO
>
customizeSpec
=
productSpec
.
getCustomizeInfo
().
stream
().
map
(
param
->
{
ProductSpecDO
productSpecDO
=
new
ProductSpecDO
().
setProductSkuId
(
productSkuDO
.
getId
())
.
setVersionDesc
(
"自定义"
).
setSpecImage
(
param
.
getSpecImage
())
.
setSpecName
(
param
.
getSpecName
()).
setPartNo
(
param
.
getPartNo
());
// 新增产品sku
productSkuDao
.
insertProductSpec
(
productSpecDO
);
// 批量配置价格信息
ProductSpecCPQVO
productSpecCPQVO
=
param
.
getProductSpecCPQVO
();
if
(
productSpecCPQVO
!=
null
)
{
productSpecCPQVO
.
setProductSpecId
(
productSpecDO
.
getId
());
productSkuService
.
insertSpecPrice
(
productSpecCPQVO
);
}
return
productSpecDO
;
}).
collect
(
Collectors
.
toList
());
List
<
Integer
>
ids
=
customizeSpec
.
stream
().
map
(
ProductSpecDO:
:
getId
).
collect
(
Collectors
.
toList
());
MallProdSkuInfoDO
mallProdSkuInfoDO
=
buildMallProdSkuInfo
(
goodsInfo
,
productSpec
,
productSkuDO
.
getId
());
mallProdSkuInfoDO
.
setProductSpecIdList
(
ids
.
stream
().
map
(
String:
:
valueOf
).
collect
(
Collectors
.
joining
(
","
)));
// 插入数据库商品对应的sku信息
productSkuDao
.
insertMallProdSkuInfo
(
mallProdSkuInfoDO
);
}
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
addOtherService
(
List
<
Integer
>
otherService
,
Integer
goodsId
)
{
// 插入其他服务
List
<
GoodsServiceDO
>
otherList
=
otherService
.
stream
().
map
(
d
->
{
GoodsServiceDO
goodsServiceDO
=
new
GoodsServiceDO
();
goodsServiceDO
.
setGoodsInfoId
(
goodsId
);
goodsServiceDO
.
setSaleServiceId
(
d
);
return
goodsServiceDO
;
}).
collect
(
Collectors
.
toList
());
goodsInfoDao
.
insertGoodsService
(
otherList
);
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
addGoodsDetail
(
Integer
goodsId
,
GoodsDetailVO
goodsDetailVO
)
{
GoodsDetailDO
goodsDetailDO
=
new
GoodsDetailDO
(
goodsDetailVO
);
goodsDetailDO
.
setGoodsInfoId
(
goodsId
);
goodsInfoDao
.
insertGoodsDetail
(
goodsDetailDO
);
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
addGoodsImageInfo
(
Integer
goodsId
,
GoodsAddVO
goodsAddVO
)
{
List
<
GoodsImgDO
>
list
=
goodsAddVO
.
getImages
().
stream
().
map
(
d
->
{
GoodsImgDO
goodsImgDO
=
new
GoodsImgDO
(
d
);
goodsImgDO
.
setGoodsInfoId
(
goodsId
);
return
goodsImgDO
;
}).
collect
(
Collectors
.
toList
());
// 插入图片信息
goodsInfoDao
.
insertGoodsImgInfo
(
list
);
// 插入商品视频信息
if
(
goodsAddVO
.
getGoodsVideo
()
!=
null
)
{
GoodsVideoDO
goodsVideoDO
=
new
GoodsVideoDO
().
setGoodsInfoId
(
goodsId
).
setVideoUrl
(
goodsAddVO
.
getGoodsVideo
());
goodsInfoDao
.
insertVideoInfo
(
goodsVideoDO
);
}
}
}
src/main/java/com/mmc/pms/service/Impl/MiniProgramProductMallServiceImpl.java
浏览文件 @
cd53de73
...
...
@@ -4,7 +4,6 @@ import com.mmc.pms.common.ResultBody;
import
com.mmc.pms.common.ResultEnum
;
import
com.mmc.pms.dao.MiniProgramProductMallDao
;
import
com.mmc.pms.dao.WebDeviceDao
;
import
com.mmc.pms.entity.GoodsInfoDO
;
import
com.mmc.pms.entity.*
;
import
com.mmc.pms.model.dto.*
;
import
com.mmc.pms.model.qo.GoodsInfoQO
;
...
...
@@ -115,7 +114,7 @@ public class MiniProgramProductMallServiceImpl implements MiniProgramProductMall
.
setGoodsSpecName
(
d
.
getProdSkuSpecName
())
.
setSkuName
(
d
.
getProductSkuName
())
.
setBrandInfoId
(
d
.
getBrandInfoId
())
.
setGoodsTypeId
(
d
.
get
GoodsType
Id
())
.
setGoodsTypeId
(
d
.
get
Category
Id
())
.
setTypeName
(
d
.
getTypeName
())
.
setChooseType
(
d
.
getChooseType
())
.
setSkuUnitId
(
d
.
getSkuUnitId
())
...
...
src/main/java/com/mmc/pms/service/Impl/ProductSkuServiceImpl.java
浏览文件 @
cd53de73
...
...
@@ -165,7 +165,7 @@ public class ProductSkuServiceImpl implements ProductSkuService {
}
@NotNull
p
rivate
ResultBody
insertSpecPrice
(
ProductSpecCPQVO
productSpecCPQVO
)
{
p
ublic
ResultBody
insertSpecPrice
(
ProductSpecCPQVO
productSpecCPQVO
)
{
List
<
ProductSpecPriceDO
>
list
=
getProductSpecPriceDOS
(
productSpecCPQVO
);
// 批量插入规格销售价格
if
(
productSpecCPQVO
.
getType
().
equals
(
0
))
{
...
...
src/main/java/com/mmc/pms/util/CodeUtil.java
0 → 100644
浏览文件 @
cd53de73
package
com
.
mmc
.
pms
.
util
;
import
java.util.Random
;
/**
* @author 作者 geDuo
* @version 创建时间:2021年8月28日 下午3:17:24
* @explain 编号操作类
*/
public
class
CodeUtil
{
private
static
Random
random
=
new
Random
();
// 数据生成有位数字或字母的随机数
public
static
String
randomCode
(
int
num
)
{
// 0-61 9 9+26=35 35+26 =61 65-90 97-122
StringBuffer
sb
=
new
StringBuffer
();
for
(
int
i
=
0
;
i
<
num
;
i
++)
{
int
y
=
random
.
nextInt
(
62
);
if
(
y
<=
9
)
{
// 数值
sb
.
append
(
y
);
}
else
{
if
(
y
<=
35
)
{
// 大写字母
y
+=
55
;
}
else
{
// 小写字母
y
+=
61
;
}
sb
.
append
((
char
)
y
);
}
}
return
sb
.
toString
();
}
/**
* 生成随机数字
*
* @param length[生成随机数的长度]
* @return
*/
public
static
String
getRandomNum
(
int
length
)
{
StringBuffer
sb
=
new
StringBuffer
();
Random
random
=
new
Random
();
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
sb
.
append
(
String
.
valueOf
(
random
.
nextInt
(
10
)));
}
return
sb
.
toString
();
}
/**
* 生成用户uid
*
* @return
*/
public
static
String
createUserUID
()
{
return
"UID"
+
CodeUtil
.
getRandomNum
(
7
);
}
/**
* 生成-现金流水账目no
*/
public
static
String
createPayCashNO
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"T"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成-信用流水账目no
*/
public
static
String
createPayCreditNo
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"T"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成-飞手工资流水账目no
*/
public
static
String
createPayWagNo
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"T"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成订单no
*/
public
static
String
createOrderTaskNO
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"D"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成-信用返利账目no
*/
public
static
String
createPayRebateNo
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"T"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成行业no
*/
public
static
String
createIndustryNO
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"HY"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成服务no
*/
public
static
String
createInspectionNO
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"FW"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成服务no
*/
public
static
String
createRoleNo
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"JS"
);
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成商品编号
*
* @return
*/
public
static
String
createWareID
()
{
return
"ID"
+
CodeUtil
.
getRandomNum
(
10
);
}
/**
* 生成云仓订单编号
*/
public
static
String
createRepoOrderNo
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"R"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 云仓现金流水
*/
public
static
String
createRepoCashNo
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"J"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 生成商品编号
*
* @return
*/
public
static
String
createDeviceCode
()
{
return
"DC"
+
CodeUtil
.
getRandomNum
(
6
);
}
/**
* 云仓现金流水
*/
public
static
String
createOrderRefund
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"RD"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 返祖订单号
*/
public
static
String
createShareOrderNo
()
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"GX"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmm"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 型号编号
*/
public
static
String
createDeviceModelNo
()
{
return
"DM"
+
CodeUtil
.
getRandomNum
(
8
);
}
/**
* 仓库编号
*/
public
static
String
createRepoNo
()
{
return
"RN"
+
CodeUtil
.
getRandomNum
(
8
);
}
public
static
String
uavOrderCode
(
Long
id
)
{
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
"UD"
);
sb
.
append
(
TDateUtil
.
getCurrentDateByType
(
"yyyyMMddHHmmss"
));
sb
.
append
(
CodeUtil
.
getRandomNum
(
4
));
return
sb
.
toString
();
}
/**
* 活动编号
*/
public
static
String
generateActivityNo
()
{
return
"AC"
+
CodeUtil
.
getRandomNum
(
5
);
}
}
src/main/resources/mapper/GoodsInfoDao.xml
0 → 100644
浏览文件 @
cd53de73
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mmc.pms.dao.GoodsInfoDao"
>
<insert
id=
"insertGoodsInfo"
parameterType=
"com.mmc.pms.entity.GoodsInfo"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into goods_info(goods_no,
goods_name,
directory_id,
category_by_one,
category_by_two,
eco_label,
shelf_status,
sort,
goods_type,
add_goods_user_id)
values (#{goodsNo}, #{goodsName}, #{directoryId}, #{categoryByOne}, #{categoryByTwo}, #{ecoLabel},
#{shelfStatus}, #{sort}, #{goodsType}, #{addGoodsUserId})
</insert>
<insert
id=
"insertGoodsImgInfo"
>
insert into
goods_img
(goods_info_id,img_url,img_type)
values
<foreach
item=
"item"
index=
"index"
collection=
"list"
separator=
","
>
(
#{item.goodsInfoId},
#{item.imgUrl},
#{item.imgType}
)
</foreach>
</insert>
<insert
id=
"insertVideoInfo"
>
insert into goods_video
(goods_info_id, video_url)
values (#{goodsInfoId}, #{videoUrl})
</insert>
<insert
id=
"insertGoodsDetail"
>
insert into goods_detail (goods_info_id, goods_desc, content, remark)
values (#{goodsInfoId}, #{goodsDesc}, #{content}, #{remark})
</insert>
<insert
id=
"insertGoodsService"
>
insert into
goods_service
(goods_info_id,sale_service_id)
values
<foreach
item=
"item"
index=
"index"
collection=
"list"
separator=
","
>
(
#{item.goodsInfoId},
#{item.saleServiceId}
)
</foreach>
</insert>
<select
id=
"countGoodsInfoByName"
resultType=
"java.lang.Integer"
>
select count(*)
from goods_info
where is_deleted = 0
and goods_name = #{goodsName}
<if
test=
"id!=null and id!=''"
>
and id
<![CDATA[<>]]>
#{id}
</if>
</select>
<select
id=
"countGoodsInfo"
resultType=
"java.lang.Integer"
>
select count(*)
from goods_info
</select>
</mapper>
src/main/resources/mapper/ProductSkuDao.xml
浏览文件 @
cd53de73
...
...
@@ -3,11 +3,13 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.mmc.pms.dao.ProductSkuDao"
>
<insert
id=
"insertProductSku"
>
<insert
id=
"insertProductSku"
parameterType=
"com.mmc.pms.entity.ProductSkuDO"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into product_sku (product_name, categories_id, model, brand_info_id, directory_id)
values (#{productName}, #{categoriesId}, #{model}, #{brandInfoId}, #{directoryId})
</insert>
<insert
id=
"insertProductSpec"
>
<insert
id=
"insertProductSpec"
keyProperty=
"id"
useGeneratedKeys=
"true"
parameterType=
"com.mmc.pms.entity.ProductSpecDO"
>
insert into product_spec (product_sku_id, spec_name, spec_image, part_no, version_desc)
values (#{productSkuId}, #{specName}, #{specImage}, #{partNo}, #{versionDesc})
</insert>
...
...
@@ -26,6 +28,12 @@
(#{item.productSpecId},#{item.cooperationTag},#{item.price},#{item.type},#{item.leaseTerm})
</foreach>
</insert>
<insert
id=
"insertMallProdSkuInfo"
>
insert into mall_prod_sku_info (goods_info_id, prod_sku_id, prod_sku_spec_name, category_id, choose_type,
sku_unit_id, is_must, product_spec_id_list, flag)
values (#{goodsInfoId}, #{prodSkuId}, #{prodSkuSpecName}, #{categoryId}, #{chooseType}, #{skuUnitId}, #{must},
#{productSpecIdList}, #{flag})
</insert>
<update
id=
"updateProductSku"
>
update product_sku
set product_name = #{productName},
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论