提交 10bab0e5 作者: xiaowang

修改:新增商品

上级 bc79af2b
......@@ -2,11 +2,13 @@ package com.mmc.pms.controller.mall;
import com.mmc.pms.common.ResultBody;
import com.mmc.pms.controller.BaseController;
import com.mmc.pms.model.group.Insert;
import com.mmc.pms.model.mall.MallGoodsVO;
import com.mmc.pms.model.sale.dto.SkuUnitDTO;
import com.mmc.pms.model.sale.qo.MallGoodsInfoQO;
import com.mmc.pms.service.mall.MallGoodsService;
import io.swagger.annotations.*;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
......@@ -26,7 +28,7 @@ public class MallGoodsController extends BaseController {
@ApiOperation(value = "新增商城商品")
@PostMapping("addMallGoods")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
public ResultBody addMallGoods(@RequestBody MallGoodsVO mallGoodsVO, HttpServletRequest request) {
public ResultBody addMallGoods(@Validated(value = {Insert.class}) @RequestBody MallGoodsVO mallGoodsVO, HttpServletRequest request) {
return mallGoodsService.addMallGoods(mallGoodsVO, this.getUserLoginInfoFromRedis(request).getUserAccountId());
}
......
package com.mmc.pms.dao.mall;
import com.mmc.pms.entity.SkuUnitDO;
import com.mmc.pms.entity.mall.GoodsSpecDO;
import com.mmc.pms.entity.mall.GoodsSpecValuesDO;
import com.mmc.pms.entity.mall.MallGoodsDO;
import com.mmc.pms.entity.mall.MallGoodsResourcesDO;
import com.mmc.pms.entity.mall.*;
import com.mmc.pms.model.mall.MallGoodsVO;
import com.mmc.pms.model.sale.qo.MallGoodsInfoQO;
import org.apache.ibatis.annotations.Mapper;
......@@ -63,4 +60,8 @@ public interface MallGoodsDao {
void removeMallGoods(Integer id);
void feignRemoveGoodsByBackUserAccountId(Integer id);
void batchInsertSpecAttr(List<SpecAttrDO> list);
void batchInsertPriceStock(List<PriceStockDO> list);
}
package com.mmc.pms.entity.mall;
import com.mmc.pms.model.mall.PriceStockVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 价格库存表(PriceStockDO)实体类
*
* @author makejava
* @since 2023-08-08 14:31:09
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PriceStockDO implements Serializable {
private static final long serialVersionUID = -64740182455155279L;
private Integer id;
/**
* 商品id
*/
private Integer mallGoodsId;
/**
* 商品规格
*/
private String productSpec;
/**
* 销售价格
*/
private BigDecimal salePrice;
/**
* sku图片
*/
private String skuImage;
/**
* 渠道价格
*/
private BigDecimal channelPrice;
/**
* 库存
*/
private Integer stock;
/**
* sku编码
*/
private String skuNo;
private Date createTime;
private Date updateTime;
public PriceStockDO(PriceStockVO param, Integer id) {
this.mallGoodsId = id;
this.productSpec = param.getProductSpec();
this.salePrice = param.getSalePrice();
this.skuImage = param.getSkuImage();
this.channelPrice = param.getChannelPrice();
this.stock = param.getStock();
this.skuNo = param.getSkuNo();
}
}
package com.mmc.pms.entity.mall;
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 SpecAttrDO implements Serializable {
private static final long serialVersionUID = -59237014539007263L;
private Integer id;
/**
* 商品id
*/
private Integer mallGoodsId;
/**
* 规格名称
*/
private String specName;
/**
* 规格值名称
*/
private String specValueName;
private Date createTime;
private Date updateTime;
}
......@@ -59,9 +59,16 @@ public class MallGoodsVO {
private Integer labelShow;
@ApiModelProperty(value = "规格")
@NotEmpty(message = "规格不能为空", groups = {Update.class, Create.class})
@NotEmpty(message = "规格不能为空")
private List<GoodsSpecVO> goodsSpecList;
@ApiModelProperty(value = "规格")
@NotEmpty(message = "规格不能为空", groups = {Update.class, Create.class})
private List<SpecAttrVO> specAttrList;
@ApiModelProperty(value = "价格库存排列组合表信息")
private List<PriceStockVO> priceStock;
@ApiModelProperty(value = "商品详情 富文本")
private String goodsDetails;
......
package com.mmc.pms.model.mall;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Author LW
* @date 2023/8/8 10:48
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class PriceStockVO implements Serializable {
private static final long serialVersionUID = 1011141620995647903L;
@ApiModelProperty(value = "id", example = "1")
private Integer id;
@ApiModelProperty(value = "商品规格", example = "示例:{\"颜色\":\"蓝色\",\"尺寸\":\"1寸\",\"大小\":\"小\"} 或 [\"颜色\":\"蓝色\",\"尺寸\":\"1寸\",\"大小\":\"小\"] 或 你怎么方便怎么来")
private String productSpec;
@ApiModelProperty(value = "销售价格", example = "1")
private BigDecimal salePrice;
@ApiModelProperty(value = "sku图片", example = "https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/35bbd044-7cd7-4c85-ba27-69776e03dbb2.jpg")
private String skuImage;
@ApiModelProperty(value = "渠道价格", example = "1")
private BigDecimal channelPrice;
@ApiModelProperty(value = "库存", example = "10")
private Integer stock;
@ApiModelProperty(value = "sku编号", example = "mmc-da-s-b")
private String skuNo;
}
package com.mmc.pms.model.mall;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Author LW
* @date 2023/7/24 20:16
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class SpecAttrVO {
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "规格名称", example = "规格名称", required = true)
private String specName;
@ApiModelProperty(value = "规格值信息", required = true)
private List<SpecAttrVO> specValuesList;
}
......@@ -5,14 +5,8 @@ import com.mmc.pms.common.ResultBody;
import com.mmc.pms.common.ResultEnum;
import com.mmc.pms.dao.mall.MallGoodsDao;
import com.mmc.pms.entity.SkuUnitDO;
import com.mmc.pms.entity.mall.GoodsSpecDO;
import com.mmc.pms.entity.mall.GoodsSpecValuesDO;
import com.mmc.pms.entity.mall.MallGoodsDO;
import com.mmc.pms.entity.mall.MallGoodsResourcesDO;
import com.mmc.pms.model.mall.GoodsResourcesVO;
import com.mmc.pms.model.mall.GoodsSpecVO;
import com.mmc.pms.model.mall.GoodsSpecValuesVO;
import com.mmc.pms.model.mall.MallGoodsVO;
import com.mmc.pms.entity.mall.*;
import com.mmc.pms.model.mall.*;
import com.mmc.pms.model.sale.dto.SkuUnitDTO;
import com.mmc.pms.model.sale.qo.MallGoodsInfoQO;
import com.mmc.pms.page.PageResult;
......@@ -55,11 +49,29 @@ public class MallGoodsServiceImpl implements MallGoodsService {
// 将商品图片等资源存入数据库中
insertMallGoodsResources(mallGoodsVO, mallGoodsDO.getId());
// 将商品规格存入数据库
insertMallGoodsSpec(mallGoodsVO.getGoodsSpecList(), mallGoodsDO.getId());
// insertMallGoodsSpec(mallGoodsVO.getGoodsSpecList(), mallGoodsDO.getId());
addMallGoodsSpec(mallGoodsVO.getSpecAttrList(), mallGoodsDO.getId(), mallGoodsVO.getPriceStock());
return ResultBody.success();
}
@Transactional(rollbackFor = Exception.class)
public void addMallGoodsSpec(List<SpecAttrVO> specAttrList, Integer id, List<PriceStockVO> priceStock) {
List<SpecAttrDO> list = specAttrList.stream()
.flatMap(specAttrVO -> specAttrVO.getSpecValuesList().stream()
.map(attrVO -> {
SpecAttrDO specAttrDO = new SpecAttrDO();
specAttrDO.setMallGoodsId(id);
specAttrDO.setSpecName(specAttrVO.getSpecName());
specAttrDO.setSpecValueName(attrVO.getSpecName());
return specAttrDO;
}))
.collect(Collectors.toList());
mallGoodsDao.batchInsertSpecAttr(list);
List<PriceStockDO> priceStockDOList = priceStock.stream().map(d -> new PriceStockDO(d, id)).collect(Collectors.toList());
mallGoodsDao.batchInsertPriceStock(priceStockDOList);
}
@Transactional(rollbackFor = Exception.class)
public void insertMallGoodsSpec(List<GoodsSpecVO> goodsSpecList, Integer id) {
// 获取输入的规格信息
for (GoodsSpecVO goodsSpecVO : goodsSpecList) {
......
......@@ -28,6 +28,7 @@
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,
......@@ -53,6 +54,29 @@
(#{item.mallGoodsId},#{item.url},#{item.type})
</foreach>
</insert>
<insert id="batchInsertSpecAttr">
insert into spec_attr (mall_goods_id,
spec_name,
spec_value_name
)
values
<foreach collection="list" item="item" separator=",">
(#{item.mallGoodsId},#{item.specName},#{item.specValueName})
</foreach>
</insert>
<insert id="batchInsertPriceStock">
insert into price_stock (mall_goods_id,
product_spec,
sale_price,
sku_image,
channel_price,
stock,
sku_no)
values
<foreach collection="list" item="item" separator=",">
(#{item.mallGoodsId},#{item.productSpec},#{item.salePrice},#{item.skuImage},#{item.channelPrice},#{item.stock},#{item.skuNo})
</foreach>
</insert>
<update id="updateMallGoods">
UPDATE mall_goods
SET trade_name = #{mallGoodsDO.tradeName},
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论