diff --git a/src/main/java/com/gxwebsoft/shop/controller/GoodsController.java b/src/main/java/com/gxwebsoft/shop/controller/GoodsController.java index c45ca4a..323761f 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/GoodsController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/GoodsController.java @@ -110,6 +110,7 @@ public class GoodsController extends BaseController { @ApiOperation("修改商品记录表") @PutMapping() public ApiResult update(@RequestBody Goods goods) { + System.out.println("getGoodsSpec = " + goods.getGoodsSpec()); if (goodsService.updateById(goods)) { // 删除旧信息 goodsSpecService.remove(new LambdaQueryWrapper().eq(GoodsSpec::getGoodsId, goods.getGoodsId())); diff --git a/src/main/java/com/gxwebsoft/shop/controller/GoodsSkuController.java b/src/main/java/com/gxwebsoft/shop/controller/GoodsSkuController.java index 1bbc616..989f347 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/GoodsSkuController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/GoodsSkuController.java @@ -1,22 +1,22 @@ package com.gxwebsoft.shop.controller; -import com.gxwebsoft.common.core.web.BaseController; -import com.gxwebsoft.shop.service.GoodsSkuService; -import com.gxwebsoft.shop.entity.GoodsSku; -import com.gxwebsoft.shop.param.GoodsSkuParam; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.gxwebsoft.common.core.web.ApiResult; -import com.gxwebsoft.common.core.web.PageResult; -import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BaseController; import com.gxwebsoft.common.core.web.BatchParam; -import com.gxwebsoft.common.core.annotation.OperationLog; -import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.GoodsSku; +import com.gxwebsoft.shop.entity.GoodsSkuVO; +import com.gxwebsoft.shop.param.GoodsSkuParam; +import com.gxwebsoft.shop.service.GoodsSkuService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; +import java.util.UUID; /** * 商品sku列表控制器 @@ -31,6 +31,52 @@ public class GoodsSkuController extends BaseController { @Resource private GoodsSkuService goodsSkuService; + @ApiOperation("根据商品spec生成SKU列表") + @PostMapping("/generateGoodsSku") + public ApiResult> generateGoodsSku(@RequestBody List voList) { + List> resultList = new ArrayList<>(); + voList.forEach(d -> { + resultList.add(d.getDetail()); + }); + System.out.println("resultList = " + resultList); + List combine = generateSku(resultList,0,"",new ArrayList<>()); + + List goodsSkuList = new ArrayList<>(); + for (String sku : combine) { + System.out.println(sku); + GoodsSku goodsSku = new GoodsSku(); + goodsSku.setSku(sku); + goodsSku.setUnique(UUID.randomUUID().toString()); + goodsSku.setImages(new ArrayList<>()); + goodsSkuList.add(goodsSku); + } + + return success(goodsSkuList); + } + + /** + * 根据属性值生成sku + * + * @param list 属性值列表 + * @param index 下标 + * @param str 初始化数据 + * @param newObjs 新obj + */ + public static List generateSku(List> list, int index, String str, List newObjs) { + if (index == list.size()) { + newObjs.add(str); + return newObjs; + } + for (String dataStr : list.get(index)) { + if (StringUtils.isBlank(str)) { + generateSku(list, index + 1, str + dataStr, newObjs); + } else { + generateSku(list, index + 1, str + "," + dataStr, newObjs); + } + } + return newObjs; + } + @ApiOperation("分页查询商品sku列表") @GetMapping("/page") public ApiResult> page(GoodsSkuParam param) { diff --git a/src/main/java/com/gxwebsoft/shop/entity/Goods.java b/src/main/java/com/gxwebsoft/shop/entity/Goods.java index 374f7e8..b5dd309 100644 --- a/src/main/java/com/gxwebsoft/shop/entity/Goods.java +++ b/src/main/java/com/gxwebsoft/shop/entity/Goods.java @@ -127,7 +127,7 @@ public class Goods implements Serializable { @ApiModelProperty(value = "商品规格") @TableField(exist = false) - private List goodsSpecs; + private GoodsSpec goodsSpec; @ApiModelProperty(value = "商品sku列表") @TableField(exist = false) diff --git a/src/main/java/com/gxwebsoft/shop/entity/GoodsSku.java b/src/main/java/com/gxwebsoft/shop/entity/GoodsSku.java index 497c985..4020748 100644 --- a/src/main/java/com/gxwebsoft/shop/entity/GoodsSku.java +++ b/src/main/java/com/gxwebsoft/shop/entity/GoodsSku.java @@ -1,12 +1,15 @@ package com.gxwebsoft.shop.entity; import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import java.time.LocalDateTime; import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -33,20 +36,8 @@ public class GoodsSku implements Serializable { @ApiModelProperty(value = "商品ID") private Integer goodsId; - @ApiModelProperty(value = "规格组ID") - private Integer specId; - - @ApiModelProperty(value = "规格值ID") - private Integer specValueId; - - @ApiModelProperty(value = "规格值0") - private String specValue0; - - @ApiModelProperty(value = "规格值1") - private String specValue1; - - @ApiModelProperty(value = "规格值2") - private String specValue2; + @ApiModelProperty(value = "商品属性索引值") + private String sku; @ApiModelProperty(value = "商品图片") private String image; @@ -63,6 +54,21 @@ public class GoodsSku implements Serializable { @ApiModelProperty(value = "sku编码") private String skuNo; + @ApiModelProperty(value = "唯一值") + private String unique; + + @ApiModelProperty(value = "成本价") + private BigDecimal cost; + + @ApiModelProperty(value = "商品条码") + private String barCode; + + @ApiModelProperty(value = "重量") + private BigDecimal weight; + + @ApiModelProperty(value = "体积") + private BigDecimal volume; + @ApiModelProperty(value = "状态, 0正常, 1异常") private Integer status; @@ -75,4 +81,8 @@ public class GoodsSku implements Serializable { @ApiModelProperty(value = "创建时间") private Date createTime; + @ApiModelProperty(value = "商品图片对象") + @TableField(exist = false) + private List images; + } diff --git a/src/main/java/com/gxwebsoft/shop/entity/GoodsSkuVO.java b/src/main/java/com/gxwebsoft/shop/entity/GoodsSkuVO.java new file mode 100644 index 0000000..1083fd3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/GoodsSkuVO.java @@ -0,0 +1,24 @@ +package com.gxwebsoft.shop.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +@Builder +public class GoodsSkuVO implements Serializable { + + @ApiModelProperty("规格名称") + private String value; + + @ApiModelProperty("规格值") + private List detail; + @Data + public static class Payload { + private String value; + private List detail; + } +} diff --git a/src/main/java/com/gxwebsoft/shop/param/GoodsSkuParam.java b/src/main/java/com/gxwebsoft/shop/param/GoodsSkuParam.java index 213ddb8..d1833c4 100644 --- a/src/main/java/com/gxwebsoft/shop/param/GoodsSkuParam.java +++ b/src/main/java/com/gxwebsoft/shop/param/GoodsSkuParam.java @@ -31,23 +31,6 @@ public class GoodsSkuParam extends BaseParam { @QueryField(type = QueryType.EQ) private Integer goodsId; - @ApiModelProperty(value = "规格组ID") - @QueryField(type = QueryType.EQ) - private Integer specId; - - @ApiModelProperty(value = "规格值ID") - @QueryField(type = QueryType.EQ) - private Integer specValueId; - - @ApiModelProperty(value = "规格值0") - private String specValue0; - - @ApiModelProperty(value = "规格值1") - private String specValue1; - - @ApiModelProperty(value = "规格值2") - private String specValue2; - @ApiModelProperty(value = "商品图片") private String image; diff --git a/src/main/java/com/gxwebsoft/shop/service/GoodsSkuService.java b/src/main/java/com/gxwebsoft/shop/service/GoodsSkuService.java index b401ba2..df87b84 100644 --- a/src/main/java/com/gxwebsoft/shop/service/GoodsSkuService.java +++ b/src/main/java/com/gxwebsoft/shop/service/GoodsSkuService.java @@ -5,6 +5,7 @@ import com.gxwebsoft.common.core.web.PageResult; import com.gxwebsoft.shop.entity.GoodsSku; import com.gxwebsoft.shop.param.GoodsSkuParam; +import java.util.ArrayList; import java.util.List; /** @@ -38,5 +39,4 @@ public interface GoodsSkuService extends IService { * @return GoodsSku */ GoodsSku getByIdRel(Integer id); - } diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/GoodsServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/GoodsServiceImpl.java index 94bcba8..24676ba 100644 --- a/src/main/java/com/gxwebsoft/shop/service/impl/GoodsServiceImpl.java +++ b/src/main/java/com/gxwebsoft/shop/service/impl/GoodsServiceImpl.java @@ -49,7 +49,7 @@ public class GoodsServiceImpl extends ServiceImpl implements final Map> collectSpecs = specs.stream().collect(Collectors.groupingBy(GoodsSpec::getGoodsId)); final Map> collectSkus = skus.stream().collect(Collectors.groupingBy(GoodsSku::getGoodsId)); list.forEach(d -> { - d.setGoodsSpecs(collectSpecs.get(d.getGoodsId())); +// d.setGoodsSpec(collectSpecs.get(d.getGoodsId()).get(0)); d.setGoodsSkus(collectSkus.get(d.getGoodsId())); }); } @@ -76,24 +76,9 @@ public class GoodsServiceImpl extends ServiceImpl implements @Override public void saveBatchByAsync(Goods goods) { // 保存商品规格 - final List goodsSpecs = goods.getGoodsSpecs(); - if (!CollectionUtils.isEmpty(goodsSpecs)) { - goodsSpecs.forEach(d -> { - d.setGoodsId(goods.getGoodsId()); - }); - goodsSpecService.saveBatch(goodsSpecs); -// final GoodsSpec spec = goodsSpecs.get(0); -// if (spec != null) { -// final GoodsSpec goodsSpec = new GoodsSpec(); -// goodsSpec.setGoodsId(goods.getGoodsId()); -// goodsSpec.setSpecId(spec.getSpecId()); -// goodsSpec.setSpecName(spec.getSpecName()); -// goodsSpec.setSpecValue(spec.getSpecValue()); -// goodsSpec.setTenantId(goods.getTenantId()); -// System.out.println("goodsSpec = " + goodsSpec); -// goodsSpecService.save(goodsSpec); -// } - } + final GoodsSpec goodsSpec = goods.getGoodsSpec(); + goodsSpec.setGoodsId(goods.getGoodsId()); + goodsSpecService.save(goodsSpec); // 保存商品sku表 final List goodsSkus = goods.getGoodsSkus(); diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/GoodsSkuServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/GoodsSkuServiceImpl.java index 527df42..36d9d7a 100644 --- a/src/main/java/com/gxwebsoft/shop/service/impl/GoodsSkuServiceImpl.java +++ b/src/main/java/com/gxwebsoft/shop/service/impl/GoodsSkuServiceImpl.java @@ -1,5 +1,6 @@ package com.gxwebsoft.shop.service.impl; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gxwebsoft.shop.mapper.GoodsSkuMapper; import com.gxwebsoft.shop.service.GoodsSkuService; @@ -9,6 +10,7 @@ import com.gxwebsoft.common.core.web.PageParam; import com.gxwebsoft.common.core.web.PageResult; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /**