mall:调整部分 Spu、Sku、Property、Group、Shop 的表设计

pull/2/head
YunaiV 2022-07-31 13:13:26 +08:00
parent 2340f09c68
commit 9577f9b17d
19 changed files with 401 additions and 91 deletions

View File

@ -0,0 +1,37 @@
package cn.iocoder.yudao.module.product.enums.delivery;
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
/**
*
*
* @author
*/
@Getter
@AllArgsConstructor
public enum DeliveryModeEnum implements IntArrayValuable {
SHOP_DELIVERY(1, "商家配送"),
USER_PICK_UP(2, "用户自提");
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(DeliveryModeEnum::getMode).toArray();
/**
*
*/
private final Integer mode;
/**
*
*/
private final String name;
@Override
public int[] array() {
return ARRAYS;
}
}

View File

@ -0,0 +1,38 @@
package cn.iocoder.yudao.module.product.enums.group;
import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
/**
*
*
* @author
*/
@Getter
@AllArgsConstructor
public enum ProductGroupStyleEnum implements IntArrayValuable {
ONE(1, "每列一个"),
TWO(2, "每列两个"),
THREE(2, "每列三个"),;
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(ProductGroupStyleEnum::getStyle).toArray();
/**
*
*/
private final Integer style;
/**
*
*/
private final String name;
@Override
public int[] array() {
return ARRAYS;
}
}

View File

@ -6,7 +6,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.*;
import cn.iocoder.yudao.module.product.convert.sku.ProductSkuConvert;
import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSkuDO;
import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
import cn.iocoder.yudao.module.product.service.sku.ProductSkuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;

View File

@ -10,7 +10,7 @@ import org.mapstruct.Mapping;
import org.mapstruct.Named;
import org.mapstruct.factory.Mappers;
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.*;
import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSkuDO;
import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
/**
* sku Convert

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.product.dal.dataobject.category;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.product.dal.dataobject.shop.ShopDO;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
@ -38,6 +39,12 @@ public class ProductCategoryDO extends BaseDO {
*
*/
private Long parentId;
/**
*
*
* {@link ShopDO#getId()}
*/
private Long shopId;
/**
*
*/

View File

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.product.dal.dataobject.delivery;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
/**
* SPU DO
*
* @author
*/
@TableName("delivery_template")
@KeySequence("delivery_template_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DeliveryTemplateDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
}

View File

@ -0,0 +1,50 @@
package cn.iocoder.yudao.module.product.dal.dataobject.group;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.product.dal.dataobject.shop.ShopDO;
import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
/**
* DO
*
* @author
*/
@TableName("product_group_bind")
@KeySequence("product_group_bind_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProductGroupBindDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
*
*
* {@link ShopDO#getId()}
*/
private Long shopId;
/**
*
*
* {@link ProductGroupDO#getId()}
*/
private Long groupId;
/**
* SPU
*
* {@link ProductSpuDO#getId()}
*/
private Long spuId;
}

View File

@ -1,6 +1,9 @@
package cn.iocoder.yudao.module.product.dal.dataobject.group;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.product.dal.dataobject.shop.ShopDO;
import cn.iocoder.yudao.module.product.enums.group.ProductGroupStyleEnum;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@ -26,7 +29,42 @@ public class ProductGroupDO extends BaseDO {
*/
@TableId
private Long id;
// TODO 芋艿:字段补全
/**
*
*
* {@link ShopDO#getId()}
*/
private Long shopId;
/**
*
*/
private String name;
/**
*
*
* {@link CommonStatusEnum}
*/
private Integer status;
/**
*
*/
private Integer count;
/**
*
*/
private Integer sort;
/**
* APP
*
* {@link ProductGroupStyleEnum}
*/
private Integer style;
/**
*
*
* true -
* false -
*/
private Boolean defaulted;
}

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.product.dal.dataobject.property;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.product.dal.dataobject.shop.ShopDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@ -27,15 +28,23 @@ public class ProductPropertyDO extends BaseDO {
*/
@TableId
private Long id;
/**
*
*
* {@link ShopDO#getId()}
*/
private Long shopId;
/**
*
*/
private String name;
/**
* 0 1
*
*
* {@link CommonStatusEnum}
* {@link CommonStatusEnum}
*/
private Integer status;
// TODO 芋艿rule规格属性 (发布商品时,和 SKU 关联);规格参数(搜索商品时,与 Category 关联搜索)
}

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.product.dal.dataobject.property;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
@ -28,9 +29,9 @@ public class ProductPropertyValueDO extends BaseDO {
@TableId
private Long id;
/**
* id
*
*
* TODO @franky {@link ProductPropertyDO#getId()}
* {@link ProductPropertyDO#getId()}
*/
private Long propertyId;
/**
@ -38,7 +39,9 @@ public class ProductPropertyValueDO extends BaseDO {
*/
private String name;
/**
* 1 2
*
*
* {@link CommonStatusEnum}
*/
private Integer status;

View File

@ -0,0 +1,26 @@
package cn.iocoder.yudao.module.product.dal.dataobject.shop;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
// TODO 芋艿:待设计
/**
* DO
*
* @author
*/
@TableName("shop")
@KeySequence("shop_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ShopDO extends BaseDO {
private Long id;
}

View File

@ -0,0 +1,112 @@
package cn.iocoder.yudao.module.product.dal.dataobject.sku;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO;
import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyValueDO;
import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.*;
import java.util.List;
/**
* SKU DO
*
* @author
*/
@TableName("product_sku")
@KeySequence("product_sku_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProductSkuDO extends BaseDO {
/**
* SKU
*/
@TableId
private Long id;
/**
* SKU
*/
private String name;
/**
* SPU
*
* {@link ProductSpuDO#getId()}
*/
private Long spuId;
/**
* JSON
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private List<Property> properties;
/**
*
*/
private Integer price;
/**
*
*/
private Integer originalPrice;
/**
* SKU
*/
private String barCode;
/**
*
*/
private String picUrl;
/**
* SKU
*
* {@link CommonStatusEnum}
*/
private Integer status;
/**
*
*
* SKU SKU
*/
private Integer stocks;
/**
*
*/
private Integer actualStocks;
/**
* kg
*/
private Double weight;
/**
* m^3
*/
private Double volume;
@Data
public static class Property {
/**
*
*
* {@link ProductPropertyDO#getId()}
*/
private Long propertyId;
/**
*
*
* {@link ProductPropertyValueDO#getId()}
*/
private Long valueId;
}
}

View File

@ -1,64 +0,0 @@
package cn.iocoder.yudao.module.product.dal.dataobject.spu;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
/**
* sku DO
*
* @author
*/
@TableName("product_sku")
@KeySequence("product_sku_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProductSkuDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
* spu
*/
private Long spuId;
/**
* -json [{propertId: , valueId: }, {propertId: , valueId: }]
*/
// TODO franky可以定义一个内部的 Property 类,然后 List<Property>
private String properties;
/**
*
*/
private Integer price;
/**
*
*/
private Integer originalPrice;
/**
*
*/
private Integer costPrice;
/**
*
*/
private String barCode;
/**
*
*/
private String picUrl;
/**
* 0- 1-
*/
private Integer status;
}

View File

@ -4,7 +4,10 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.product.dal.dataobject.brand.ProductBrandDO;
import cn.iocoder.yudao.module.product.dal.dataobject.category.ProductCategoryDO;
import cn.iocoder.yudao.module.product.dal.dataobject.group.ProductGroupDO;
import cn.iocoder.yudao.module.product.dal.dataobject.delivery.DeliveryTemplateDO;
import cn.iocoder.yudao.module.product.dal.dataobject.shop.ShopDO;
import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
import cn.iocoder.yudao.module.product.enums.delivery.DeliveryModeEnum;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
@ -34,6 +37,16 @@ public class ProductSpuDO extends BaseDO {
*/
@TableId
private Long id;
/**
*
*
* {@link ShopDO#getId()}
*/
private Long shopId;
// ========== 基本信息 =========
/**
*
*/
@ -58,13 +71,6 @@ public class ProductSpuDO extends BaseDO {
* {@link ProductBrandDO#getId()}
*/
private Long brandId;
/**
*
*
* {@link ProductGroupDO#getId()}
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private List<Long> groupIds;
/**
*
*/
@ -80,6 +86,9 @@ public class ProductSpuDO extends BaseDO {
* {@link CommonStatusEnum}
*/
private Integer status;
// ========== SKU 相关字段 =========
/**
* 使
*
@ -87,14 +96,29 @@ public class ProductSpuDO extends BaseDO {
*/
private Integer price;
/**
*
*
*
* {@link ProductSkuDO#getPrice()}
* {@link ProductSkuDO#getActualStocks()}
*/
private Integer quantity;
private Integer totalStocks;
/**
*
*/
private Integer soldNum;
// ========== 物流相关字段 =========
// TODO 芋艿:配送方式:商家配送、商家自提
// TODO 芋艿:运费设置;如果选择了 “商家配送” 配送方式,则选择「运费设置」编号
/**
*
*
* {@link DeliveryModeEnum}
*/
private Integer deliveryMode;
/**
*
*
* {@link DeliveryTemplateDO#getId()}
*/
private Long deliveryTemplateId;
}

View File

@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuExportReqVO;
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuPageReqVO;
import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSkuDO;
import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;

View File

@ -5,7 +5,7 @@ import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuCreateR
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuExportReqVO;
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuPageReqVO;
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuUpdateReqVO;
import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSkuDO;
import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
import javax.validation.Valid;
import java.util.Collection;

View File

@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.product.controller.admin.property.vo.ProductPrope
import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.ProductPropertyValueRespVO;
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.*;
import cn.iocoder.yudao.module.product.convert.sku.ProductSkuConvert;
import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSkuDO;
import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
import cn.iocoder.yudao.module.product.dal.mysql.sku.ProductSkuMapper;
import cn.iocoder.yudao.module.product.enums.ErrorCodeConstants;
import cn.iocoder.yudao.module.product.service.property.ProductPropertyService;

View File

@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.product.controller.app.spu.vo.AppSpuPageReqVO;
import cn.iocoder.yudao.module.product.controller.app.spu.vo.AppSpuPageRespVO;
import cn.iocoder.yudao.module.product.convert.sku.ProductSkuConvert;
import cn.iocoder.yudao.module.product.convert.spu.ProductSpuConvert;
import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSkuDO;
import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;
import cn.iocoder.yudao.module.product.dal.mysql.spu.ProductSpuMapper;
import cn.iocoder.yudao.module.product.service.category.ProductCategoryService;

View File

@ -8,7 +8,7 @@ import javax.annotation.Resource;
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
import cn.iocoder.yudao.module.product.controller.admin.sku.vo.*;
import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSkuDO;
import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
import cn.iocoder.yudao.module.product.dal.mysql.sku.ProductSkuMapper;
import cn.iocoder.yudao.framework.common.pojo.PageResult;