记得上下班打卡 | git大法好,push需谨慎

Commit a580ff70 authored by 张国柄's avatar 张国柄

+API:商品管理(列表、详情、添加、编辑、上架、下架、删除);

+API:店铺认证(认证状态、认证资料、完善信息);
parent 3f7cbb9c
package com.liquidnet.service.goblin.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "GoblinGoodsSpecDto", description = "商品SKU规格")
@Data
public class GoblinGoodsSpecDto implements Serializable, Cloneable {
private static final long serialVersionUID = 8425727558228094904L;
@ApiModelProperty(position = 11, value = "规格名称")
private String specName;
@ApiModelProperty(position = 11, value = "规格值名称")
private String specVname;
private static final GoblinGoodsSpecDto obj = new GoblinGoodsSpecDto();
public static GoblinGoodsSpecDto getNew() {
try {
return (GoblinGoodsSpecDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new GoblinGoodsSpecDto();
}
}
}
package com.liquidnet.service.goblin.dto.manage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "GoblinStoreMgtGoodsActionParam", description = "商品管理:商品列表操作入参")
@Data
public class GoblinStoreMgtGoodsActionParam implements Serializable {
private static final long serialVersionUID = 6564996671833040261L;
@ApiModelProperty(position = 11, required = true, value = "操作类型[ONSHELVES-上架|UNSHELVE-下架|REMOVE-删除]")
@Pattern(regexp = "\\b(ONSHELVES|UNSHELVE|REMOVE)\\b", message = "操作类型无效")
private String action;
@ApiModelProperty(position = 12, required = true, value = "商品ID列表")
private List<String> spuIdList;
}
package com.liquidnet.service.goblin.dto.manage;
import com.liquidnet.commons.lang.constant.LnsRegex;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "GoblinStoreMgtGoodsAddParam", description = "商品管理:添加商品入参")
@Data
public class GoblinStoreMgtGoodsAddParam implements Serializable {
private static final long serialVersionUID = -5101611616626164702L;
@ApiModelProperty(position = 10, required = false, value = "商品ID[编辑时必传]")
private String spuId;
@ApiModelProperty(position = 11, required = true, value = "店铺ID")
private String storeId;
/** ---------------------------- 基本信息 ---------------------------- **/
@ApiModelProperty(position = 12, required = true, value = "商品名称[128]")
private String name;
@ApiModelProperty(position = 13, required = true, value = "商品一级分类ID[30]")
private String cateFid;
@ApiModelProperty(position = 14, required = true, value = "商品二级分类ID[30]")
private String cateSid;
@ApiModelProperty(position = 15, required = true, value = "商品三级分类ID[30]")
private String cateTid;
@ApiModelProperty(position = 16, required = false, value = "商品简介[256]", example = "商品简介...")
private String intro;
@ApiModelProperty(position = 17, required = false, value = "商品标签列表")
private List<String> tagList;
@ApiModelProperty(position = 18, required = true, value = "商品图片列表")
private List<String> imageList;
@ApiModelProperty(position = 19, required = false, value = "商品视频地址")
private String video;
/** ---------------------------- 价格库存 ---------------------------- **/
@ApiModelProperty(position = 20, required = true, value = "规格展现方式[1-常规|2-组合]", allowableValues = "1,2", example = "1")
private String specMode;
@ApiModelProperty(position = 21, required = true, value = "SKU规格信息")
private List<GoblinStoreMgtGoodsAddSkuParam> skuParamList;
@ApiModelProperty(position = 22, required = true, value = "物流模版", example = "松鼠德邦")
private String logisticsTemplate;
@ApiModelProperty(position = 23, required = false, value = "商品编码[默认为系统编码,也可手动输入商家自己的编码]")
private String spuNo;
/** ---------------------------- 商品介绍 ---------------------------- **/
@ApiModelProperty(position = 24, required = true, value = "商品详情", example = "商品详情...")
private String details;
/** ---------------------------- 销售属性 ---------------------------- **/
@ApiModelProperty(position = 25, required = true, value = "上架处理方式[1-等待手动上架|2-直接上架售卖|3-预约定时上架]", example = "1")
private String shelvesHandle;
@ApiModelProperty(position = 26, required = false, value = "预约上架时间[上架处理方式为3-预约定时上架时需要指定]")
@Pattern(regexp = LnsRegex.Valid.DATETIME_FULL, message = "预约上架时间格式有误")
private String shelvesTime;
@ApiModelProperty(position = 27, required = false, value = "商品有效期[YYYY-MM-DD]")
@Pattern(regexp = LnsRegex.Valid.DATETIME_YMD, message = "商品有效期格式有误")
private String spuValidity;
@ApiModelProperty(position = 28, required = true, value = "是否虚拟商品[0-否|1-是]", allowableValues = "0,1", example = "0")
@Pattern(regexp = "\\b(0|1)\\b", message = "是否虚拟商品参数无效")
private String virtualFlg;
/** ---------------------------- 服务保障 ---------------------------- **/
@ApiModelProperty(position = 29, required = false, value = "商品服务支持ID列表")
private List<String> ssidList;
/** ---------------------------- 专属标签 ---------------------------- **/
@ApiModelProperty(position = 30, required = true, value = "商品关联音乐人、艺术家、IP列表")
private List<String> extagList;
}
package com.liquidnet.service.goblin.dto.manage;
import com.liquidnet.service.goblin.dto.GoblinGoodsSpecDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
@ApiModel(value = "GoblinStoreMgtGoodsAddSkuParam", description = "商品管理:添加商品:添加SKU入参")
@Data
public class GoblinStoreMgtGoodsAddSkuParam implements Serializable {
private static final long serialVersionUID = 6657596593310537491L;
/** ---------------------------- 规格信息 ---------------------------- **/
@ApiModelProperty(position = 11, value = "单品默认图片的url[256]")
private String skuPic;
@ApiModelProperty(position = 12, value = "单品规格信息")
private List<GoblinGoodsSpecDto> skuSpecList;
@ApiModelProperty(position = 13, value = "单品价格[20,2]")
private BigDecimal price;
@ApiModelProperty(position = 14, value = "单品会员价格[20,2]")
private BigDecimal priceMember;
@ApiModelProperty(position = 15, value = "单品的重量[20,2]")
private BigDecimal weight;
@ApiModelProperty(position = 16, value = "ISBN,针对CD/图书等[100]")
private String skuIsbn;
@ApiModelProperty(position = 17, value = "购买限制[0-全部用户|1-仅会员|2-指定用户]")
private String buyFactor;
@ApiModelProperty(position = 18, value = "购买限制为2-指定用户时必填指定文件地址")
private String buyLimit;
}
package com.liquidnet.service.goblin.dto.manage;
import com.liquidnet.commons.lang.constant.LnsRegex;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.math.BigDecimal;
@ApiModel(value = "GoblinStoreMgtGoodsFilterParam", description = "商品管理:商品列表筛选条件")
@Data
public class GoblinStoreMgtGoodsFilterParam implements Serializable {
private static final long serialVersionUID = -4698854628491039006L;
@ApiModelProperty(position = 11, value = "当前记录起始索引", example = "1")
private Integer pageNum;
@ApiModelProperty(position = 12, value = "每页显示记录数", example = "20")
private Integer pageSize;
@ApiModelProperty(position = 13, value = "搜索关键字[128]")
private String keyword;
@ApiModelProperty(position = 14, value = "商品上架状态[0-待上架|1-下架|2-违规|3-上架]", allowableValues = "0,1,2,3")
private String shelvesStatus;
@ApiModelProperty(position = 15, value = "商品一级分类ID[30]")
private String cateFid;
@ApiModelProperty(position = 16, value = "商品二级分类ID[30]")
private String cateSid;
@ApiModelProperty(position = 17, value = "商品三级分类ID[30]")
private String cateTid;
@ApiModelProperty(position = 18, value = "创建日期[YYYY-MM-DD]")
@Pattern(regexp = LnsRegex.Valid.DATETIME_YMD, message = "创建日期格式有误")
private String createdDt;
@ApiModelProperty(position = 19, value = "价格区间MIN")
private BigDecimal priceMin;
@ApiModelProperty(position = 20, value = "价格区间MAX")
private BigDecimal priceMax;
}
package com.liquidnet.service.goblin.dto.manage.vo;
import com.liquidnet.service.goblin.dto.GoblinGoodsSpecDto;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsInfoVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "GoblinStoreMgtGoodsInfoVo", description = "商品管理:商品详情信息")
@Data
public class GoblinStoreMgtGoodsInfoVo implements Serializable, Cloneable {
private static final long serialVersionUID = 4864134079879227233L;
@ApiModelProperty(position = 11, value = "商品SPU详情")
private GoblinGoodsInfoVo goodsInfoVo;
@ApiModelProperty(position = 12, value = "商品SKU信息列表")
private List<GoblinGoodsSkuInfoVo> goodsSkuInfoVoList;
private static final GoblinStoreMgtGoodsInfoVo obj = new GoblinStoreMgtGoodsInfoVo();
public static GoblinStoreMgtGoodsInfoVo getNew() {
try {
return (GoblinStoreMgtGoodsInfoVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new GoblinStoreMgtGoodsInfoVo();
}
}
}
package com.liquidnet.service.goblin.dto.manage.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@ApiModel(value = "GoblinStoreMgtGoodsVo", description = "商品管理:商品列表信息")
@Data
public class GoblinStoreMgtGoodsListVo implements Serializable, Cloneable {
private static final long serialVersionUID = -5926827517337445529L;
@ApiModelProperty(position = 10, value = "商品ID")
private String spuId;
@ApiModelProperty(position = 11, value = "商品编码")
private String spuNo;
@ApiModelProperty(position = 12, value = "封面图片地址")
private String coverPic;
@ApiModelProperty(position = 13, value = "商品名称")
private String name;
@ApiModelProperty(position = 14, value = "商品一级分类ID[30]")
private String cateFid;
@ApiModelProperty(position = 15, value = "商品二级分类ID[30]")
private String cateSid;
@ApiModelProperty(position = 16, value = "商品三级分类ID[30]")
private String cateTid;
@ApiModelProperty(position = 17, value = "价格区间MIN")
private BigDecimal priceGe;
@ApiModelProperty(position = 18, value = "价格区间MAX")
private BigDecimal priceLe;
@ApiModelProperty(position = 19, value = "审核状态[0-编辑中|1-审核中|2-审核不通过|3-审核通过]")
private String status;
@ApiModelProperty(position = 20, value = "审核拒绝原因")
private String reason;
@ApiModelProperty(position = 21, value = "商品上架状态[0-待上架|1-下架|2-违规|3-上架]")
private String shelvesStatus;
@ApiModelProperty(position = 22, value = "总库存")
private Integer totalStock;
@ApiModelProperty(position = 23, value = "总销量")
private Integer totalSales;
}
package com.liquidnet.service.goblin.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "GoblinGoodsExtagVo", description = "商品音乐人标签信息")
@Data
public class GoblinGoodsExtagVo implements Serializable, Cloneable {
private static final long serialVersionUID = 367926424789690081L;
@ApiModelProperty(position = 10, value = "标签ID")
private String tagId;
@ApiModelProperty(position = 11, value = "标签名称")
private String tagName;
@ApiModelProperty(position = 12, value = "排序[数值越小,排序越前]")
private Integer sort;
@ApiModelProperty(position = 13, value = "标签说明")
private String tagDesc;
@ApiModelProperty(position = 14, value = "标签图片")
private String tagPic;
private static final GoblinGoodsExtagVo obj = new GoblinGoodsExtagVo();
public static GoblinGoodsExtagVo getNew() {
try {
return (GoblinGoodsExtagVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new GoblinGoodsExtagVo();
}
}
}
package com.liquidnet.service.goblin.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "GoblinGoodsInfoVo", description = "商品SPU详情[不包含具体SKU,SKU详情参见'GoblinGoobsSkuInfoVo']")
@Data
public class GoblinGoodsInfoVo implements Serializable, Cloneable {
private static final long serialVersionUID = -4712015317981742851L;
@ApiModelProperty(position = 10, value = "店铺ID")
private String storeId;
/** ---------------------------- 基本信息 ---------------------------- **/
@ApiModelProperty(position = 11, value = "商品名称[128]")
private String name;
@ApiModelProperty(position = 12, value = "商品一级分类ID[30]")
private String cateFid;
@ApiModelProperty(position = 13, value = "商品二级分类ID[30]")
private String cateSid;
@ApiModelProperty(position = 14, value = "商品三级分类ID[30]")
private String cateTid;
@ApiModelProperty(position = 15, value = "商品简介[256]")
private String intro;
@ApiModelProperty(position = 16, value = "商品标签列表")
private List<GoblinGoodsTagVo> tagVoList;
@ApiModelProperty(position = 17, value = "商品图片列表")
private List<String> imageList;
@ApiModelProperty(position = 18, value = "商品视频地址")
private String video;
/** ---------------------------- 价格库存 ---------------------------- **/
@ApiModelProperty(position = 20, value = "规格展现方式[1-常规|2-组合]")
private String specMode;
// @ApiModelProperty(position = 21, value = "SKU规格信息")
// private List<GoblinStoreMgtGoodsAddSkuParam> skuParamList;
@ApiModelProperty(position = 22, value = "物流模版")
private String logisticsTemplate;
@ApiModelProperty(position = 23, value = "商品编码[默认为系统编码,也可手动输入商家自己的编码]")
private String spuNo;
/** ---------------------------- 商品介绍 ---------------------------- **/
@ApiModelProperty(position = 24, value = "商品详情", example = "商品详情...")
private String details;
/** ---------------------------- 销售属性 ---------------------------- **/
@ApiModelProperty(position = 25, value = "上架处理方式[1-等待手动上架|2-直接上架售卖|3-预约定时上架]")
private String shelvesHandle;
@ApiModelProperty(position = 26, value = "预约上架时间[上架处理方式为3-预约定时上架时需要指定]")
private String shelvesTime;
@ApiModelProperty(position = 27, value = "商品有效期[YYYY-MM-DD]")
private String spuValidity;
@ApiModelProperty(position = 28, value = "是否虚拟商品[0-否|1-是]")
private String virtualFlg;
/** ---------------------------- 服务保障 ---------------------------- **/
@ApiModelProperty(position = 29, value = "商品服务支持ID列表")
private List<GoblinGoodsServiceSupportVo> serviceSupportVoList;
/** ---------------------------- 专属标签 ---------------------------- **/
@ApiModelProperty(position = 30, value = "商品关联音乐人、艺术家、IP列表")
private List<GoblinGoodsExtagVo> extagVoList;
private static final GoblinGoodsInfoVo obj = new GoblinGoodsInfoVo();
public static GoblinGoodsInfoVo getNew() {
try {
return (GoblinGoodsInfoVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new GoblinGoodsInfoVo();
}
}
}
package com.liquidnet.service.goblin.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "GoblinGoodsServiceSupportVo", description = "商品服务保障信息")
@Data
public class GoblinGoodsServiceSupportVo implements Serializable, Cloneable {
private static final long serialVersionUID = -6408263563025607959L;
@ApiModelProperty(position = 10, value = "服务支持ID[30]")
private String ssid;
@ApiModelProperty(position = 11, value = "服务支持名称[50]")
private String name;
@ApiModelProperty(position = 12, value = "服务支持描述[256]")
private String desc;
@ApiModelProperty(position = 13, value = "服务支持图片地址[256]")
private String url;
private static final GoblinGoodsServiceSupportVo obj = new GoblinGoodsServiceSupportVo();
public static GoblinGoodsServiceSupportVo getNew() {
try {
return (GoblinGoodsServiceSupportVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new GoblinGoodsServiceSupportVo();
}
}
}
package com.liquidnet.service.goblin.dto.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "GoblinGoodsSkuInfoVo", description = "商品SKU信息")
@Data
public class GoblinGoodsSkuInfoVo implements Serializable, Cloneable {
private static final long serialVersionUID = 7139250447538358198L;
private static final GoblinGoodsSkuInfoVo obj = new GoblinGoodsSkuInfoVo();
public static GoblinGoodsSkuInfoVo getNew() {
try {
return (GoblinGoodsSkuInfoVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new GoblinGoodsSkuInfoVo();
}
}
}
package com.liquidnet.service.goblin.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "GoblinGoodsSpecValueVo", description = "商品规格值信息")
@Data
public class GoblinGoodsSpecValueVo implements Serializable, Cloneable {
private static final long serialVersionUID = 8201082385017215765L;
@ApiModelProperty(position = 11, value = "规格值的名称")
private String specVname;
@ApiModelProperty(position = 12, value = "排序[数值越小排序越前]")
private String specVsort;
private static final GoblinGoodsSpecValueVo obj = new GoblinGoodsSpecValueVo();
public static GoblinGoodsSpecValueVo getNew() {
try {
return (GoblinGoodsSpecValueVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new GoblinGoodsSpecValueVo();
}
}
}
package com.liquidnet.service.goblin.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "GoblinGoodsSpecModelVo", description = "商品规格信息")
@Data
public class GoblinGoodsSpecVo implements Serializable, Cloneable {
private static final long serialVersionUID = 2353354057235207501L;
@ApiModelProperty(position = 11, value = "规格名称")
private String specName;
@ApiModelProperty(position = 12, value = "排序[数值越小排序越前]")
private String specSort;
@ApiModelProperty(position = 13, value = "规格值列表")
private List<GoblinGoodsSpecValueVo> specValues;
private static final GoblinGoodsSpecVo obj = new GoblinGoodsSpecVo();
public static GoblinGoodsSpecVo getNew() {
try {
return (GoblinGoodsSpecVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new GoblinGoodsSpecVo();
}
}
}
package com.liquidnet.service.goblin.dto.vo;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinStoreMgtGoodsInfoVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "GoblinGoodsTagVo", description = "商品标签信息")
@Data
public class GoblinGoodsTagVo implements Serializable, Cloneable {
private static final long serialVersionUID = -2342407105969740471L;
@ApiModelProperty(position = 11, value = "标签ID")
private String tagId;
@ApiModelProperty(position = 12, value = "标签名称")
private String tagName;
@ApiModelProperty(position = 13, value = "排序[数值越小,排序越前]")
private Integer sort;
private static final GoblinGoodsTagVo obj = new GoblinGoodsTagVo();
public static GoblinGoodsTagVo getNew() {
try {
return (GoblinGoodsTagVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new GoblinGoodsTagVo();
}
}
}
package com.liquidnet.service.goblin.service.manage;
import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsActionParam;
import com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsAddParam;
import com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsFilterParam;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinStoreMgtGoodsInfoVo;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinStoreMgtGoodsListVo;
public interface IGoblinstoreMgtGoodsService {
/**
* 商品管理:SPU列表
*
* @param storeMgtGoodsFilterParam GoblinStoreMgtGoodsFilterParam
* @return PagedResult<GoblinStoreMgtGoodsVo>
*/
PagedResult<GoblinStoreMgtGoodsListVo> goodsList(GoblinStoreMgtGoodsFilterParam storeMgtGoodsFilterParam);
/**
* 商品管理:添加SPU
*
* @param storeMgtGoodsAddParam GoblinStoreMgtGoodsAddParam
*/
void goodsAdd(GoblinStoreMgtGoodsAddParam storeMgtGoodsAddParam);
/**
* 商品管理:SPU详情
*
* @param spuId 商品ID
* @return GoblinStoreMgtGoodsInfoVo
*/
GoblinStoreMgtGoodsInfoVo goodsInfo(String spuId);
/**
* 商品管理:编辑SPU
*
* @param storeMgtGoodsAddParam GoblinStoreMgtGoodsAddParam
*/
void goodsEdit(GoblinStoreMgtGoodsAddParam storeMgtGoodsAddParam);
/**
* 商品管理:上架商品
*
* @param storeMgtGoodsActionParam GoblinStoreMgtGoodsActionParam
*/
void goodsOnshelves(GoblinStoreMgtGoodsActionParam storeMgtGoodsActionParam);
/**
* 商品管理:下架商品
*
* @param storeMgtGoodsActionParam GoblinStoreMgtGoodsActionParam
*/
void goodsUnshelves(GoblinStoreMgtGoodsActionParam storeMgtGoodsActionParam);
/**
* 商品管理:删除商品
*
* @param storeMgtGoodsActionParam GoblinStoreMgtGoodsActionParam
*/
void goodsRemove(GoblinStoreMgtGoodsActionParam storeMgtGoodsActionParam);
}
package com.liquidnet.service.goblin.entity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
......@@ -50,6 +53,16 @@ public class GoblinGoods implements Serializable {
*/
private BigDecimal sellPrice;
/**
* 价格区间MIN
*/
private BigDecimal priceGe;
/**
* 价格区间MAX
*/
private BigDecimal priceLe;
/**
* 商品简介
*/
......@@ -116,15 +129,25 @@ public class GoblinGoods implements Serializable {
private String brandId;
/**
* 自定义展示[0-默认展示|1-隐藏不可购买]
* 上架处理方式[1-等待手动上架|2-直接上架售卖|3-预约定时上架]
*/
private String spuAppear;
private String shelvesHandle;
/**
* 上架处理方式为3-预约定时上架时需要指定]
*/
private LocalDateTime shelvesTime;
/**
* 商品有效期
*/
private LocalDateTime spuValidity;
/**
* 是否虚拟商品[0-否|1-是]
*/
private String virtualFlg;
/**
* 审核状态[0-编辑中|1-审核中|2-审核不通过|3-审核通过]
*/
......@@ -141,25 +164,15 @@ public class GoblinGoods implements Serializable {
private String shelvesStatus;
/**
* 是否虚拟商品[0-否|1-是]
* 自定义展示[0-默认展示|1-隐藏不可购买]
*/
private String virtualFlg;
private String spuAppear;
/**
* 删除标记[0-未删除|1-删除]
*/
private String delFlg;
/**
* 上架处理方式[1-等待手动上架|2-直接上架售卖|3-预约定时上架]
*/
private String shelvesHandle;
/**
* 上架处理方式为3-预约定时上架时需要指定]
*/
private LocalDateTime shelvesTime;
/**
* 上架时间
*/
......
......@@ -24,6 +24,11 @@ public class GoblinGoodsSpecValue implements Serializable {
/**
* 规格id,对应 goblin_goods_spec.spec_id
*/
private String specId;
/**
* 规格值id
*/
private String specVid;
/**
......
......@@ -16,7 +16,7 @@ import lombok.EqualsAndHashCode;
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class GoblinGoodsSpuTag implements Serializable {
public class GoblinGoodsTag implements Serializable {
private static final long serialVersionUID = 1L;
......
package com.liquidnet.service.goblin.mapper;
import com.liquidnet.service.goblin.entity.GoblinGoodsSpuTag;
import com.liquidnet.service.goblin.entity.GoblinGoodsTag;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
......@@ -11,6 +11,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @author liquidnet
* @since 2021-12-27
*/
public interface GoblinGoodsSpuTagMapper extends BaseMapper<GoblinGoodsSpuTag> {
public interface GoblinGoodsTagMapper extends BaseMapper<GoblinGoodsTag> {
}
<?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.liquidnet.service.goblin.mapper.GoblinGoodsSpuTagMapper">
<mapper namespace="com.liquidnet.service.goblin.mapper.GoblinGoodsTagMapper">
</mapper>
package com.liquidnet.service.example.incrementer;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.apache.ibatis.reflection.SystemMetaObject;
import org.springframework.stereotype.Component;
import java.util.concurrent.atomic.AtomicLong;
/**
* 自定义ID生成器
*/
@Slf4j
// @Component
public class CustomIdGenerator implements IdentifierGenerator {
private final AtomicLong al = new AtomicLong(1);
@Override
public Long nextId(Object entity) {
//可以将当前传入的class全类名来作为bizKey,或者提取参数来生成bizKey进行分布式Id调用生成.
String bizKey = entity.getClass().getName();
log.info("bizKey:{}", bizKey);
MetaObject metaObject = SystemMetaObject.forObject(entity);
String name = (String) metaObject.getValue("name");
final long id = al.getAndAdd(1);
log.info("为{}生成主键值->:{}", name, id);
return id;
}
}
//package com.liquidnet.service.example.incrementer;
//
//import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.ibatis.reflection.MetaObject;
//import org.apache.ibatis.reflection.SystemMetaObject;
//import org.springframework.stereotype.Component;
//
//import java.util.concurrent.atomic.AtomicLong;
//
///**
// * 自定义ID生成器
// */
//@Slf4j
//// @Component
//public class CustomIdGenerator implements IdentifierGenerator {
//
// private final AtomicLong al = new AtomicLong(1);
//
// @Override
// public Long nextId(Object entity) {
// //可以将当前传入的class全类名来作为bizKey,或者提取参数来生成bizKey进行分布式Id调用生成.
// String bizKey = entity.getClass().getName();
// log.info("bizKey:{}", bizKey);
// MetaObject metaObject = SystemMetaObject.forObject(entity);
// String name = (String) metaObject.getValue("name");
// final long id = al.getAndAdd(1);
// log.info("为{}生成主键值->:{}", name, id);
// return id;
// }
//}
......@@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
@ApiSupport(order = 140101)
@ApiSupport(order = 149001)
@Api(tags = "店铺认证")
@Slf4j
@Validated
......@@ -31,8 +31,8 @@ public class GoblinStoreMgtCertificationController {
@Autowired
IGoblinStoreMgtCertificationService IGoblinStoreMgtCertificationService;
@ApiOperationSupport(order = 2)
@ApiOperation(value = "认证状态", notes = "查取默认店铺认证状态,响应说明[data:1-店铺审核中|2-审核不通过|3-审核通过]")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "认证状态")
@PostMapping("status")
public ResponseDto<GoblinStoreCertificationVo> certificationStatus() {
GoblinStoreCertificationVo storeCertificationVo = GoblinStoreCertificationVo.getNew();
......
......@@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@ApiSupport(order = 140100)
@ApiSupport(order = 149002)
@Api(tags = "店铺管理")
@Slf4j
@Validated
......
package com.liquidnet.service.goblin.controller.manage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsActionParam;
import com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsAddParam;
import com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsFilterParam;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinStoreMgtGoodsInfoVo;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinStoreMgtGoodsListVo;
import com.liquidnet.service.goblin.service.manage.IGoblinstoreMgtGoodsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
@ApiSupport(order = 140101)
import javax.validation.Valid;
@ApiSupport(order = 149003)
@Api(tags = "商品管理")
@Slf4j
@Validated
......@@ -19,4 +33,86 @@ public class GoblinStoreMgtGoodsController {
@Autowired
IGoblinstoreMgtGoodsService goblinstoreMgtGoodsService;
@ApiOperationSupport(order = 1)
@ApiOperation(value = "SPU列表")
@PostMapping("list")
public ResponseDto<PagedResult<GoblinStoreMgtGoodsListVo>> list(@Valid @RequestBody GoblinStoreMgtGoodsFilterParam storeMgtGoodsFilterParam) {
if (log.isDebugEnabled()) {
log.debug("商品管理:SPU列表:[GoblinStoreMgtGoodsFilterParam={}]", JsonUtils.toJson(storeMgtGoodsFilterParam));
}
return ResponseDto.success(goblinstoreMgtGoodsService.goodsList(storeMgtGoodsFilterParam));
}
@ApiOperationSupport(order = 1)
@ApiOperation(value = "SPU导出")
@PostMapping("export")
public void export(@Valid @RequestBody GoblinStoreMgtGoodsFilterParam storeMgtGoodsFilterParam) {
if (log.isDebugEnabled()) {
log.debug("商品管理:SPU导出:[GoblinStoreMgtGoodsFilterParam={}]", JsonUtils.toJson(storeMgtGoodsFilterParam));
}
log.info("商品管理:SPU导出...");
// TODO: 2021/12/28 zhanggb
}
@ApiOperationSupport(order = 2)
@ApiOperation(value = "添加SPU")
@PostMapping("add")
public ResponseDto<Object> add(@Valid @RequestBody GoblinStoreMgtGoodsAddParam storeMgtGoodsAddParam) {
if (log.isDebugEnabled()) {
log.debug("商品管理:添加SPU:[GoblinStoreMgtGoodsAddParam={}]", JsonUtils.toJson(storeMgtGoodsAddParam));
}
goblinstoreMgtGoodsService.goodsAdd(storeMgtGoodsAddParam);
return ResponseDto.success();
}
@ApiOperationSupport(order = 3)
@ApiOperation(value = "SPU详情")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "spuId", value = "商品ID"),
})
@GetMapping("info")
public ResponseDto<GoblinStoreMgtGoodsInfoVo> detail(String spuId) {
if (log.isDebugEnabled()) {
log.debug("商品管理:SPU详情:[spuId={}]", spuId);
}
return ResponseDto.success(goblinstoreMgtGoodsService.goodsInfo(spuId));
}
@ApiOperationSupport(order = 4)
@ApiOperation(value = "编辑SPU")
@PostMapping("edit")
public ResponseDto<Object> edit(@Valid @RequestBody GoblinStoreMgtGoodsAddParam storeMgtGoodsAddParam) {
if (log.isDebugEnabled()) {
log.debug("商品管理:编辑SPU:[GoblinStoreMgtGoodsAddParam={}]", JsonUtils.toJson(storeMgtGoodsAddParam));
}
goblinstoreMgtGoodsService.goodsEdit(storeMgtGoodsAddParam);
return ResponseDto.success();
}
@ApiOperationSupport(order = 5)
@ApiOperation(value = "管理SPU")
@PostMapping("operate")
public ResponseDto<Object> action(@Valid @RequestBody GoblinStoreMgtGoodsActionParam storeMgtGoodsActionParam) {
if (log.isDebugEnabled()) {
log.debug("商品管理:管理SPU:[GoblinStoreMgtGoodsActionParam={}]", JsonUtils.toJson(storeMgtGoodsActionParam));
}
// TODO: 2021/12/28 zhanggb 逻辑校验
switch (storeMgtGoodsActionParam.getAction()) {
case "ONSHELVES":
goblinstoreMgtGoodsService.goodsOnshelves(storeMgtGoodsActionParam);
break;
case "UNSHELVE":
goblinstoreMgtGoodsService.goodsUnshelves(storeMgtGoodsActionParam);
break;
case "REMOVE":
goblinstoreMgtGoodsService.goodsRemove(storeMgtGoodsActionParam);
break;
default:
log.warn("Invalid operation[action={}]", storeMgtGoodsActionParam.getAction());
return ResponseDto.failure(ErrorMapping.get("149001"));
}
return ResponseDto.success();
}
}
package com.liquidnet.service.goblin.service.impl.manage;
import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsActionParam;
import com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsAddParam;
import com.liquidnet.service.goblin.dto.manage.GoblinStoreMgtGoodsFilterParam;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinStoreMgtGoodsInfoVo;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinStoreMgtGoodsListVo;
import com.liquidnet.service.goblin.service.manage.IGoblinstoreMgtGoodsService;
import org.springframework.stereotype.Service;
@Service
public class GoblinStoreMgtGoodsServiceImpl implements IGoblinstoreMgtGoodsService {
@Override
public PagedResult<GoblinStoreMgtGoodsListVo> goodsList(GoblinStoreMgtGoodsFilterParam storeMgtGoodsFilterParam) {
return null;// TODO: 2021/12/27 zhanggb
}
@Override
public void goodsAdd(GoblinStoreMgtGoodsAddParam storeMgtGoodsAddParam) {
// TODO: 2021/12/27 zhanggb
}
@Override
public GoblinStoreMgtGoodsInfoVo goodsInfo(String spuId) {
return null;// TODO: 2021/12/28 zhanggb
}
@Override
public void goodsEdit(GoblinStoreMgtGoodsAddParam storeMgtGoodsAddParam) {
// TODO: 2021/12/28 zhanggb
}
@Override
public void goodsOnshelves(GoblinStoreMgtGoodsActionParam storeMgtGoodsActionParam) {
// TODO: 2021/12/28 zhanggb
}
@Override
public void goodsUnshelves(GoblinStoreMgtGoodsActionParam storeMgtGoodsActionParam) {
// TODO: 2021/12/28 zhanggb
}
@Override
public void goodsRemove(GoblinStoreMgtGoodsActionParam storeMgtGoodsActionParam) {
// TODO: 2021/12/28 zhanggb
}
}
package com.liquidnet.service.goblin.util;
import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinStoreMgtGoodsListVo;
public class ObjectUtil {
private static final PagedResult<GoblinStoreMgtGoodsListVo> goblinStoreMgtGoodsVoPagedResult = new PagedResult<>();
public static PagedResult<GoblinStoreMgtGoodsListVo> getGoblinStoreMgtGoodsVoPagedResult() {
return goblinStoreMgtGoodsVoPagedResult.clone();
}
}
......@@ -3,10 +3,29 @@
40003=登录已过期
# ------------------------ 4开头错误码作系统保留
140001=操作过于频繁,请稍后再试
140000=操作过于频繁,请稍后再试
140001=
140002=
# 开放平台错误码
149000=操作过于频繁,请稍后再试
149001=无效操作
149002=
149003=
149004=
149005=
149006=
149007=
149008=
149009=
149010=
149035=
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment