后台-系统设置-扩展变量-手机广告位-内容正文顶部 |
一、商品参数组
1、表结构设计
商品关联参数表(es_goods_params)
关联了商品表(es_goods),商品参数组表(es_parameter)
参数表(es_parameters)
参数组(es_parameter_group)
2、商品参数结构
二、商品缓存
1、设计说明
商品为高频率读取数据,频繁读取数据库,会导致数据库压力过大,所以使用缓存机制,常用数据存入redis中。
2、数据结构设计
商品缓存类:CacheGoods
/**缓存商品对象*/
@ApiModel
@JsonNaming(value=PropertyNamingStrategy.SnakeCaseStrategy.class)
publicclassCacheGoodsimplementsSerializable{
privatestaticfinallongserialVersionUID=-3642358108471082387L;
@ApiModelProperty(name="goods_id",value="商品id")
@Column(name="goods_id")
privateLonggoodsId;
@ApiModelProperty(name="category_id",value="分类id")
privateLongcategoryId;
@ApiModelProperty(name="goods_name",value="商品名称")
@Column(name="goods_name")
privateStringgoodsName;
@ApiModelProperty(name="sn",value="商品编号")
@Column(name="sn")
privateStringsn;
@ApiModelProperty(name="price",value="商品价格")
@Column(name="price")
privateDoubleprice;
@ApiModelProperty(name="weight",value="重量")
@Column(name="weight")
privateDoubleweight;
@ApiModelProperty(name="intro",value="详情")
privateStringintro;
@ApiModelProperty(name="goods_transfee_charge",value="谁承担运费0:买家承担,1:卖家承担")
@Column(name="goods_transfee_charge")
privateIntegergoodsTransfeeCharge;
@ApiModelProperty(name="template_id",value="运费模板id,不需要运费模板时值是0")
@Column(name="template_id")
privateLongtemplateId;
@ApiModelProperty(name="market_enable",value="是否上架,1上架0下架")
@Column(name="market_enable")
privateIntegermarketEnable;
@ApiModelProperty(name="disabled",value="是否放入回收站0删除1未删除")
@Column(name="disabled")
privateIntegerdisabled;
@ApiModelProperty(name="is_auth",value="是否审核通过0未审核1通过2不通过")
@Column(name="is_auth")
privateIntegerisAuth;
@ApiModelProperty(value="可用库存")
@Column(name="enable_quantity")
privateIntegerenableQuantity;
@ApiModelProperty(name="quantity",value="库存")
privateIntegerquantity;
@ApiModelProperty(name="seller_id",value="卖家")
privateLongsellerId;
@ApiModelProperty(name="seller_name",value="卖家名称")
privateStringsellerName;
@ApiModelProperty(name="sku_list",value="sku列表")
privateList
@ApiModelProperty(name="thumbnail",value="商品缩略图")
privateStringthumbnail;
@ApiModelProperty(name="last_modify",value="商品最后修改时间")
privateLonglastModify;
@ApiModelProperty(name="comment_num",value="评论数量")
privateIntegercommentNum;
@ApiModelProperty(name="grade",value="商品好评率")
privateDoublegrade;
@ApiModelProperty(name="mobile_intro",value="商品移动端详情")
privateStringmobileIntro;
@ApiModelProperty(name="goods_video",value="商品视频")
privateStringgoodsVideo;
.....
SKU缓存类:GoodsSkuVO
@ApiModel
@JsonNaming(value=PropertyNamingStrategy.SnakeCaseStrategy.class)
publicclassGoodsSkuVOextendsGoodsSkuDO{
privatestaticfinallongserialVersionUID=-666090547834195127L;
@ApiModelProperty(name="spec_list",value="规格列表",required=false)
privateList
@ApiModelProperty(name="goods_transfee_charge",value="谁承担运费0:买家承担,1:卖家承担",hidden=true)
privateIntegergoodsTransfeeCharge;
@ApiModelProperty(value="是否被删除0删除1未删除",hidden=true)
privateIntegerdisabled;
@ApiModelProperty(value="上架状态0下架1上架",hidden=true)
privateIntegermarketEnable;
@ApiModelProperty(name="goods_type",value="商品类型NORMAL普通POINT积分")
privateStringgoodsType;
@ApiModelProperty(value="最后修改时间",hidden=true)
privateLonglastModify;
@ApiModelProperty(value="运费脚本",hidden=true)
privateList
GoodsSkuDO
@TableName("es_goods_sku")
@ApiModel
@JsonNaming(value=PropertyNamingStrategy.SnakeCaseStrategy.class)
publicclassGoodsSkuDOimplementsSerializable{
privatestaticfinallongserialVersionUID=5102510694003249L;
/**
*主键
*/
@TableId(type=IdType.ASSIGN_ID)
@ApiModelProperty(hidden=true)
privateLongskuId;
/**
*商品id
*/
@ApiModelProperty(name="goods_id",value="商品id",hidden=true)
privateLonggoodsId;
/**
*商品名称
*/
@ApiModelProperty(name="goods_name",value="商品名称",hidden=true)
privateStringgoodsName;
/**
*商品编号
*/
@ApiModelProperty(name="sn",value="商品编号",required=false)
@Length(max=30,message="商品规格编号太长,不能超过30个字符")
privateStringsn;
/**
*库存
*/
@ApiModelProperty(name="quantity",value="库存",required=false)
@Max(value=99999999,message="库存不能超过99999999")
privateIntegerquantity;
/**
*可用库存
*/
@ApiModelProperty(name="enable_quantity",value="可用库存")
privateIntegerenableQuantity;
/**
*商品价格
*/
@ApiModelProperty(name="price",value="商品价格",required=false)
@Max(value=99999999,message="价格不能超过99999999")
privateDoubleprice;
/**
*规格信息json
*/
@ApiModelProperty(name="specs",value="规格信息json",hidden=true)
privateStringspecs;
/**
*成本价格
*/
@ApiModelProperty(name="cost",value="成本价格",required=true)
@Max(value=99999999,message="成本价格不能超过99999999")
privateDoublecost;
/**
*重量
*/
@ApiModelProperty(name="weight",value="重量",required=true)
@Max(value=99999999,message="重量不能超过99999999")
privateDoubleweight;
/**
*卖家id
*/
@ApiModelProperty(name="seller_id",value="卖家id",hidden=true)
privateLongsellerId;
/**
*卖家名称
*/
@ApiModelProperty(name="seller_name",value="卖家名称",hidden=true)
privateStringsellerName;
/**
*分类id
*/
@ApiModelProperty(name="category_id",value="分类id",hidden=true)
privateLongcategoryId;
/**
*缩略图
*/
@ApiModelProperty(name="thumbnail",value="缩略图",hidden=true)
privateStringthumbnail;
@ApiModelProperty(name="hash_code",value="hash_code",hidden=true)
privateIntegerhashCode;
/**
*运费模板ID(非数据库字段)
*/
@TableField(exist=false)
privateLongtemplateId;
3、核心代码展示
缓存商品的查询和写入
/**
*缓存中查询商品的信息
*
*@paramgoodsId商品主键
*@return
*/
@Override
publicCacheGoodsgetFromCache(LonggoodsId){
CacheGoodsgoods=(CacheGoods)cache.get(CachePrefix.GOODS.getPrefix()+goodsId);
logger.debug("由缓存中读出商品:");
logger.debug(goods);
if(goods==null){
GoodsDOgoodsDB=this.getModel(goodsId);
if(goodsDB==null){
thrownewServiceException(GoodsErrorCode.E301.code(),"该商品已被彻底删除");
}
//GoodsVo的对象返回,GoodsVo中的skuList是要必须填充好的
List
goods=newCacheGoods();
BeanUtils.copyProperties(goodsDB,goods);
goods.setSkuList(skuList);
//填充库存数据
fillStock(goods);
cache.put(CachePrefix.GOODS.getPrefix()+goodsId,goods);
logger.debug("由缓存中读出商品为空,由数据库中返回商品:");
logger.debug(goods);
returngoods;
}else{
//填充库存数据
fillStock(goods);
}
returngoods;
}
以上就是关于商品参数组及商品缓存的一些内容,想了解更多详情,可以持续关注易族智汇javashop技术文档栏目信息。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。