pojo
package com.offcn.sellergoods.group;
import com.offcn.sellergoods.pojo.Goods;
import com.offcn.sellergoods.pojo.GoodsDesc;
import com.offcn.sellergoods.pojo.Item;
import java.io.Serializable;
import java.util.List;
/**
* @Auther: zzh
* @Date: 2022/7/28 10:39
* @Description: 商品复合实体类
*/
public class GoodsEntity implements Serializable {
private Goods goods; //SPU信息
private GoodsDesc goodsDesc; //扩展信息
private List<Item> itemList; //SKU信息集合
public Goods getGoods() {
return goods;
}
public void setGoods(Goods goods) {
this.goods = goods;
}
public GoodsDesc getGoodsDesc() {
return goodsDesc;
}
public void setGoodsDesc(GoodsDesc goodsDesc) {
this.goodsDesc = goodsDesc;
}
public List<Item> getItemList() {
return itemList;
}
public void setItemList(List<Item> itemList) {
this.itemList = itemList;
}
}
controller
/***
* 新增Goods数据
* @param goods
* @return
*/
@ApiOperation(value = "Goods添加",notes = "添加Goods方法详情",tags = {"GoodsController"})
@PostMapping
public Result add(@RequestBody @ApiParam(name = "Goods对象",value = "传入JSON数据",required = true) GoodsEntity goodsEntity){
//调用GoodsService实现添加Goods
goodsService.add(goodsEntity);
return new Result(true,StatusCode.OK,"添加成功");
}
service
/***
* 新增Goods
* @param goods
*/
void add(GoodsEntity goodsEntity);
serviceImpl
/**
* 增加Goods
*
* @param goods
*/
@Override
public void add(GoodsEntity goodsEntity) {
//1.设置审核状态 未审核
goodsEntity.getGoods().setAuditStatus("0"); //未审核
//2.保存SPU信息
goodsMapper.insert(goodsEntity.getGoods());
//3.获取SPU的主键ID
//4.保存扩展信息
goodsEntity.getGoodsDesc().setGoodsId(goodsEntity.getGoods().getId());
goodsDescMapper.insert(goodsEntity.getGoodsDesc());
//int i = 10/0;
//5.保存SKU信息
this.saveItem(goodsEntity);
}
private void saveItem(GoodsEntity goodsEntity) {
if ("1".equals(goodsEntity.getGoods().getIsEnableSpec())) {
if (!CollectionUtils.isEmpty(goodsEntity.getItemList())) {
for (Item item : goodsEntity.getItemList()) {
//SKU标题 SPU名称+规格 {“网络制式”:"联通4G","机身内存":"16G"}
String title = goodsEntity.getGoods().getGoodsName();
Map<String, String> specMap = JSON.parseObject(item.getSpec(), Map.class);
for (String key : specMap.keySet()) {
title += " " + specMap.get(key) + " ";
}
item.setTitle(title); //SKU标题
this.setItemValue(goodsEntity, item);
itemMapper.insert(item);
}
}
} else {
//不启用规格时
Item item = new Item();
item.setTitle(goodsEntity.getGoods().getGoodsName()); //SKU名称
item.setPrice(goodsEntity.getGoods().getPrice()); //SKU的价格
item.setNum(9999);
item.setStatus("1"); //启用状态
item.setIsDefault("1"); //启用默认
item.setSpec("{}"); //规格
this.setItemValue(goodsEntity, item);
itemMapper.insert(item);
}
}
dao
1
package com.offcn.sellergoods.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.offcn.sellergoods.pojo.Goods;
public interface GoodsMapper extends BaseMapper<Goods> {
}
2
package com.offcn.sellergoods.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.offcn.sellergoods.pojo.GoodsDesc;
public interface GoodsDescMapper extends BaseMapper<GoodsDesc> {
}
3
package com.offcn.sellergoods.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.offcn.sellergoods.pojo.Item;
public interface ItemMapper extends BaseMapper<Item> {
}
测试json
{ "goods": { "brandId": 1, "caption": "测试商品01副标题", "category1Id": 558, "category2Id": 559, "category3Id": 560, "goodsName": "测试商品01", "isEnableSpec": "1", "price": "1000", "typeTemplateId": 35 },"goodsDesc": { "customAttributeItems": "[{\"text\":\"内存大小\",\"value\":\"16G\"}, {\"text\":\"颜色\",\"value\":\"绿色\"}]", "introduction": "<span style=\"color:#666666;font-family:tahoma, arial, "font-size:14px;background-color:#FFFFFF;\">测试描述</span><br />", "itemImages": "[{\"color\":\"红色 \",\"url\":\"http://192.168.188.146/group1/M00/00/00/wKi8kly5gXGAZ9X_AAQQPbR_emI 045.png\"},{\"color\":\"绿色 \",\"url\":\"http://192.168.188.146/group1/M00/00/00/wKi8kly5gXmANvndAAI1bFuIUJE 180.jpg\"}]", "packageList": "测试包装", "saleService": "测试售后服务", "specificationItems": "[{\"attributeValue\":[\"移动3G\",\"移动 4G\"],\"attributeName\":\"网络\"},{\"attributeValue\": [\"16G\",\"32G\"],\"attributeName\":\"机身内存\"}]" },"itemList": [ { "isDefault": "1", "num": 9999, "price": "1000", "spec": "{\"机身内存\":\"16G\",\"网络\":\"移动3G\"}", "status": "1" },{ "isDefault": "0",
"num": 9999, "price": "2000", "spec": "{\"机身内存\":\"16G\",\"网络\":\"移动4G\"}", "status": "1" },{ "isDefault": "0", "num": 9999, "price": "2001", "spec": "{\"机身内存\":\"24G\",\"网络\":\"移动3G\"}", "status": "1" },{ "isDefault": "0", "num": 9999, "price": "2002", "spec": "{\"机身内存\":\"24G\",\"网络\":\"移动4G\"}", "status": "1" } ] }
结果