日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

一文搞懂大廠商品中心設(shè)計(jì)!

來源: 責(zé)編: 時(shí)間:2024-06-27 07:57:25 126觀看
導(dǎo)讀1 雪花算法使用IdWorker idWorker=new IdWorker(1,1);for(int i=0;i<10000;i++){ long id = idWorker.nextId(); System.out.println(id);}配置分布式ID生成器將IdWorker.java拷貝到util包在工程的resources下

1 雪花算法使用

IdWorker idWorker=new IdWorker(1,1);for(int i=0;i<10000;i++){    long id = idWorker.nextId();    System.out.println(id);}

配置分布式ID生成器

  • 將IdWorker.java拷貝到util包
  • 在工程的resources下新增applicationContext-service.xml
<!‐‐雪花ID生成器‐‐><bean id="idWorker" class="com.qingcheng.util.IdWorker">    <constructor‐arg index="0" value="1"></constructor‐arg>    <constructor‐arg index="1" value="1"></constructor‐arg></bean>

2 新增和修改商品

2.1 表結(jié)構(gòu)

t_spu 表

字段名稱
RCQ28資訊網(wǎng)——每日最新資訊28at.com

字段含義
RCQ28資訊網(wǎng)——每日最新資訊28at.com

字段類型
RCQ28資訊網(wǎng)——每日最新資訊28at.com

字段長度
RCQ28資訊網(wǎng)——每日最新資訊28at.com

備注
RCQ28資訊網(wǎng)——每日最新資訊28at.com

id
RCQ28資訊網(wǎng)——每日最新資訊28at.com

主鍵
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

sn
RCQ28資訊網(wǎng)——每日最新資訊28at.com

貨號
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

name
RCQ28資訊網(wǎng)——每日最新資訊28at.com

SPU名
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

caption
RCQ28資訊網(wǎng)——每日最新資訊28at.com

副標(biāo)題
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

brand_id
RCQ28資訊網(wǎng)——每日最新資訊28at.com

品牌ID
RCQ28資訊網(wǎng)——每日最新資訊28at.com

INT
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

category1_id
RCQ28資訊網(wǎng)——每日最新資訊28at.com

一級分類
RCQ28資訊網(wǎng)——每日最新資訊28at.com

INT
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

category2_id
RCQ28資訊網(wǎng)——每日最新資訊28at.com

二級分類
RCQ28資訊網(wǎng)——每日最新資訊28at.com

INT
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

category3_id
RCQ28資訊網(wǎng)——每日最新資訊28at.com

三級分類
RCQ28資訊網(wǎng)——每日最新資訊28at.com

INT
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

template_id
RCQ28資訊網(wǎng)——每日最新資訊28at.com

模板ID
RCQ28資訊網(wǎng)——每日最新資訊28at.com

INT
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

freight_id
RCQ28資訊網(wǎng)——每日最新資訊28at.com

運(yùn)費(fèi)模板id
RCQ28資訊網(wǎng)——每日最新資訊28at.com

INT
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

image
RCQ28資訊網(wǎng)——每日最新資訊28at.com

圖片
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

images
RCQ28資訊網(wǎng)——每日最新資訊28at.com

圖片列表
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

sale_service
RCQ28資訊網(wǎng)——每日最新資訊28at.com

售后服務(wù)
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

introduction
RCQ28資訊網(wǎng)——每日最新資訊28at.com

介紹
RCQ28資訊網(wǎng)——每日最新資訊28at.com

TEXT
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

spec_items
RCQ28資訊網(wǎng)——每日最新資訊28at.com

規(guī)格列表
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

para_items
RCQ28資訊網(wǎng)——每日最新資訊28at.com

參數(shù)列表
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

sale_num
RCQ28資訊網(wǎng)——每日最新資訊28at.com

銷量
RCQ28資訊網(wǎng)——每日最新資訊28at.com

INT
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

comment_num
RCQ28資訊網(wǎng)——每日最新資訊28at.com

評論數(shù)
RCQ28資訊網(wǎng)——每日最新資訊28at.com

INT
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

is_marketable
RCQ28資訊網(wǎng)——每日最新資訊28at.com

是否上架
RCQ28資訊網(wǎng)——每日最新資訊28at.com

CHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

is_enable_spec
RCQ28資訊網(wǎng)——每日最新資訊28at.com

是否啟用規(guī)格
RCQ28資訊網(wǎng)——每日最新資訊28at.com

CHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

is_delete
RCQ28資訊網(wǎng)——每日最新資訊28at.com

是否刪除
RCQ28資訊網(wǎng)——每日最新資訊28at.com

CHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

status
RCQ28資訊網(wǎng)——每日最新資訊28at.com

審核狀態(tài)
RCQ28資訊網(wǎng)——每日最新資訊28at.com

CHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

t_sku 表

字段名稱
RCQ28資訊網(wǎng)——每日最新資訊28at.com

字段含義
RCQ28資訊網(wǎng)——每日最新資訊28at.com

字段類型
RCQ28資訊網(wǎng)——每日最新資訊28at.com

字段長度
RCQ28資訊網(wǎng)——每日最新資訊28at.com

備注
RCQ28資訊網(wǎng)——每日最新資訊28at.com

id
RCQ28資訊網(wǎng)——每日最新資訊28at.com

商品id
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

sn
RCQ28資訊網(wǎng)——每日最新資訊28at.com

商品條碼
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

name
RCQ28資訊網(wǎng)——每日最新資訊28at.com

SKU名稱
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

price
RCQ28資訊網(wǎng)——每日最新資訊28at.com

價(jià)格(分)
RCQ28資訊網(wǎng)——每日最新資訊28at.com

INT
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

num
RCQ28資訊網(wǎng)——每日最新資訊28at.com

庫存數(shù)量
RCQ28資訊網(wǎng)——每日最新資訊28at.com

INT
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

alert_num
RCQ28資訊網(wǎng)——每日最新資訊28at.com

庫存預(yù)警數(shù)量
RCQ28資訊網(wǎng)——每日最新資訊28at.com

INT
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

image
RCQ28資訊網(wǎng)——每日最新資訊28at.com

商品圖片
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

images
RCQ28資訊網(wǎng)——每日最新資訊28at.com

商品圖片列表
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

weight
RCQ28資訊網(wǎng)——每日最新資訊28at.com

重量(克)
RCQ28資訊網(wǎng)——每日最新資訊28at.com

INT
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

create_time
RCQ28資訊網(wǎng)——每日最新資訊28at.com

創(chuàng)建時(shí)間
RCQ28資訊網(wǎng)——每日最新資訊28at.com

DATETIME
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

update_time
RCQ28資訊網(wǎng)——每日最新資訊28at.com

更新時(shí)間
RCQ28資訊網(wǎng)——每日最新資訊28at.com

DATETIME
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

spu_id
RCQ28資訊網(wǎng)——每日最新資訊28at.com

SPUID
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

category_id
RCQ28資訊網(wǎng)——每日最新資訊28at.com

類目ID
RCQ28資訊網(wǎng)——每日最新資訊28at.com

INT
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

category_name
RCQ28資訊網(wǎng)——每日最新資訊28at.com

類目名稱
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

brand_name
RCQ28資訊網(wǎng)——每日最新資訊28at.com

品牌名稱
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

spec
RCQ28資訊網(wǎng)——每日最新資訊28at.com

規(guī)格
RCQ28資訊網(wǎng)——每日最新資訊28at.com

VARCHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

sale_num
RCQ28資訊網(wǎng)——每日最新資訊28at.com

銷量
RCQ28資訊網(wǎng)——每日最新資訊28at.com

INT
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

comment_num
RCQ28資訊網(wǎng)——每日最新資訊28at.com

評論數(shù)
RCQ28資訊網(wǎng)——每日最新資訊28at.com

INT
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

status
RCQ28資訊網(wǎng)——每日最新資訊28at.com

商品狀態(tài) 1-正常,2-下架,3-刪除
RCQ28資訊網(wǎng)——每日最新資訊28at.com

CHAR
RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com


RCQ28資訊網(wǎng)——每日最新資訊28at.com

2.2 需求與實(shí)現(xiàn)

2.2.1 需求分析

詳見靜態(tài)原型。RCQ28資訊網(wǎng)——每日最新資訊28at.com

2.2.2 實(shí)現(xiàn)思路

前端傳遞給后端的數(shù)據(jù)格式:RCQ28資訊網(wǎng)——每日最新資訊28at.com

{    "spu": {        "name": "這個(gè)是商品名稱",        "caption": "這個(gè)是副標(biāo)題",        "brandId": 12,        "category1Id": 558,        "category2Id": 559,        "category3Id": 560,        "freightId": 10,        "image": "http://www.qingcheng.com/image/1.jpg",        "images": "http://www.qingcheng.com/image/1.jpg,http://www.qingcheng.com/image/2.jpg",        "introduction": "這個(gè)是商品詳情,html代碼",        "paraItems": {            "出廠年份": "2019",            "贈(zèng)品": "充電器"        },        "saleService": "七天包退,閃電退貨",        "sn": "020102331",        "specItems": {            "顏色": [                "紅",                "綠"            ],            "機(jī)身內(nèi)存": [                "64G",                "8G"            ]        },        "templateId": 42    },    "skuList": [        {            "sn": "10192010292",            "num": 100,            "alertNum": 20,            "price": 900000,            "spec": {                "顏色": "紅",                "機(jī)身內(nèi)存": "64G"            },            "image": "http://www.qingcheng.com/image/1.jpg",            "images": "http://www.qingcheng.com/image/1.jpg,http://www.qingcheng.com/image/2.jpg",            "status": "1",            "weight": 130        },        {            "sn": "10192010293",            "num": 100,            "alertNum": 20,            "price": 600000,            "spec": {                "顏色": "綠",                "機(jī)身內(nèi)存": "8G"            },            "image": "http://www.qingcheng.com/image/1.jpg",            "images": "http://www.qingcheng.com/image/1.jpg,http://www.qingcheng.com/image/2.jpg",            "status": "1",            "weight": 130        }    ]}

2.3 代碼實(shí)現(xiàn)

2.3.1 SPU與SKU列表的保存

/*** 商品組合實(shí)體類 */public class Goods implements Serializable {    private Spu spu;    private List<Sku> skuList;}

SpuServiceImpl新增方法:RCQ28資訊網(wǎng)——每日最新資訊28at.com

@Autowiredprivate SkuMapper skuMapper;@Autowired  private IdWorker idWorker;@Autowiredprivate CategoryMapper categoryMapper;/*** 保存商品* @param goods 商品組合實(shí)體類*/@Transactionalpublic void saveGoods(Goods goods) {    // 保存一個(gè)spu的信息    Spu spu = goods.getSpu();    spu.setId(idWorker.nextId()+"");    spuMapper.insert(spu);        //保存sku列表的信息    Date date=new Date();    //分類對象    Category category = categoryMapper.selectByPrimaryKey(spu.getCategory3Id());    List<Sku> skuList = goods.getSkuList();    for (Sku sku:skuList){        sku.setId(idWorker.nextId()+"");        sku.setSpuId(spu.getId());        //sku名稱 =spu名稱+規(guī)格值列表        String name=spu.getName();        //sku.getSpec() {"顏色":"紅","機(jī)身內(nèi)存":"64G"}        Map<String,String> specMap = JSON.parseObject(sku.getSpec(), Map.class);        for(String value:specMap.values()){            name+=" "+value;        }        sku.setName(name);//名稱        sku.setCreateTime(date);//創(chuàng)建日期        sku.setUpdateTime(date);//修改日期        sku.setCategoryId(spu.getCategory3Id());//分類id        sku.setCategoryName(category.getName());//分類名稱        sku.setCommentNum(0);//評論數(shù)        sku.setSaleNum(0);//銷售數(shù)量        skuMapper.insert(sku);    }}

該方法要對兩個(gè)表操作,需添加事務(wù):RCQ28資訊網(wǎng)——每日最新資訊28at.com

@Service(interfaceClass=SpuService.class)

在類上加@Transactional,并在@Service注解中指定接口為SpuService.class。RCQ28資訊網(wǎng)——每日最新資訊28at.com

SpuController修改add方法:RCQ28資訊網(wǎng)——每日最新資訊28at.com

@PostMapping("/save")public Result save(@RequestBody Goods goods){    spuService.saveGoods(goods);    return new Result();}

3 建立分類與品牌的關(guān)聯(lián)

3.1 需求

Q:為什么要建立分類與品牌的關(guān)聯(lián)?RCQ28資訊網(wǎng)——每日最新資訊28at.com

A:因?yàn)槲覀冊谇芭_搜索時(shí),需要通過分類找到品牌列表。RCQ28資訊網(wǎng)——每日最新資訊28at.com

Q:分類與品牌是什么關(guān)系?RCQ28資訊網(wǎng)——每日最新資訊28at.com

A:多對多。RCQ28資訊網(wǎng)——每日最新資訊28at.com

Q:在什么地方添加關(guān)系?RCQ28資訊網(wǎng)——每日最新資訊28at.com

A:我們不在后臺單獨(dú)實(shí)現(xiàn)分類與品牌的關(guān)聯(lián),而是在添加商品時(shí)自動(dòng)添加關(guān)聯(lián)。RCQ28資訊網(wǎng)——每日最新資訊28at.com

3.2 實(shí)現(xiàn)思路

  • 設(shè)計(jì)中間表tb_category_brand表
  • 創(chuàng)建實(shí)體類、數(shù)據(jù)訪問接口
  • 在添加商品的saveGoods方法中添加代碼邏輯 ,將SPU的品牌編號和分類編號一起插入到(中間表)

3.3 代碼

創(chuàng)建實(shí)體類

@Table(name="tb_category_brand")@Datapublic class CategoryBrand implements Serializable {    @Id    private Integer categoryId;    @Id     private Integer brandId;}

聯(lián)合主鍵,templateId和brandId都有@Id注解。RCQ28資訊網(wǎng)——每日最新資訊28at.com

新建數(shù)據(jù)訪問接口

public interface CategoryBrandMapper extends Mapper<CategoryBrand> {}

修改saveGoods方法

CategoryBrand categoryBrand =new CategoryBrand();categoryBrand.setBrandId(spu.getBrandId());categoryBrand.setCategoryId(spu.getCategory3Id());int count=categoryBrandMapper.selectCount(categoryBrand);if(count==0) {    categoryBrandMapper.insert(categoryBrand);}

4 根據(jù)ID查詢商品

根據(jù)id 查詢SPU和SKU列表 ,顯示效果:RCQ28資訊網(wǎng)——每日最新資訊28at.com

{    "spu": {        "brandId": 0,        "caption": "111",        "category1Id": 558,        "category2Id": 559,        "category3Id": 560,        "commentNum": null,        "freightId": null,        "id": 149187842867993,        "image": null,        "images": null,        "introduction": null,        "isDelete": null,        "isEnableSpec": "0",        "isMarketable": "1",        "name": "黑馬智能手機(jī)",        "paraItems": null,        "saleNum": null,        "saleService": null,        "sn": null,        "specItems": null,        "status": null,        "templateId": 42    },    "skuList": [        {            "alertNum": null,            "brandName": "金立(Gionee)",            "categoryId": 560,            "categoryName": "手機(jī)",            "commentNum": null,            "createTime": "2018‐11‐06 10:17:08",            "id": 1369324,            "image": null,            "images": "blob:http://localhost:8080/ec04d1a5‐d865‐4e7f‐a313‐2e9a76cfb3f8",            "name": "黑馬智能手機(jī)",            "num": 100,            "price": 900000,            "saleNum": null,            "sn": "",            "spec": null,            "spuId": 149187842867993,            "status": "1",            "updateTime": "2018‐11‐06 10:17:08",            "weight": null        },        {            "alertNum": null,            "brandName": "金立(Gionee)",            "categoryId": 560,            "categoryName": "手機(jī)",            "commentNum": null,            "createTime": "2018‐11‐06 10:17:08",            "id": 1369325,            "image": null,            "images": "blob:http://localhost:8080/ec04d1a5‐d865‐4e7f‐a313‐2e9a76cfb3f8",            "name": "黑馬智能手機(jī)",            "num": 100,            "price": 900000,            "saleNum": null,            "sn": "",            "spec": null,            "spuId": 149187842867993,            "status": "1",            "updateTime": "2018‐11‐06 10:17:08",            "weight": null        }    ]}

4.1 代碼

SpuService方法

/*** 根據(jù)ID查詢商品* @param id * @return*/public Goods findGoodsById(String id){    //查詢spu    Spu spu = spuMapper.selectByPrimaryKey(id);        //查詢SKU 列表    Example example=new Example(Sku.class);    Example.Criteria criteria = example.createCriteria();    criteria.andEqualTo("spuId",id);    List<Sku> skuList = skuMapper.selectByExample(example);        //封裝,返回    Goods goods=new Goods();    goods.setSpu(spu);    goods.setSkuList(skuList);    return goods;}

SpuController

@GetMapping("/findGoodsById")public Goods findGoodsById(Long id){    return spuService.findGoodsById(id);}

5 保存修改

實(shí)現(xiàn)思路

  • 修改與新增共用同一個(gè)方法
  • 通過spu的id判斷當(dāng)前操作是新增還是修改
  • 如果是新增需要設(shè)置spu的id,對spu執(zhí)行的是insert操作
  • 如果修改則需要?jiǎng)h除原來的sku列表,對spu執(zhí)行的是updateByPrimaryKeySelective操作
  • sku列表的插入部分的代碼要判斷sku是否有id,如果有id則不重新生成id

代碼實(shí)現(xiàn)

修改SpuServiceImpl的saveGoods:RCQ28資訊網(wǎng)——每日最新資訊28at.com

/*** 保存商品* @param goods*/@Transactionalpublic void saveGoods(Goods goods) {    //保存一個(gè)spu的信息    Spu spu = goods.getSpu();    if(spu.getId()==null){//新增商品        spu.setId(idWorker.nextId()+"");        spuMapper.insert(spu);    }else{ //修改        //刪除原來的sku列表        Example example=new Example(Sku.class);        Example.Criteria criteria = example.createCriteria();        criteria.andEqualTo("spuId",spu.getId());        skuMapper.deleteByExample(example);        //執(zhí)行spu的修改        spuMapper.updateByPrimaryKeySelective(spu);    }    //保存sku列表的信息    List<Sku> skuList = goods.getSkuList();    for (Sku sku:skuList){        if(sku.getId()==null){//新增            sku.setId(idWorker.nextId()+"");            sku.setCreateTime(date);//創(chuàng)建日期        }        //添加sku    }//建立分類和品牌的關(guān)聯(lián)}

6 未啟用規(guī)格的sku處理

6.1 需求分析

有些商品沒區(qū)分規(guī)格,即一個(gè)spu對應(yīng)一個(gè)sku ,這時(shí)sku列表只傳遞一條記錄,且無規(guī)格(spec)屬性,要對其判斷,避免因空值產(chǎn)生異常。RCQ28資訊網(wǎng)——每日最新資訊28at.com

6.2 實(shí)現(xiàn)思路

在saveGoods方法的sku列表循環(huán)中添加代碼,判斷RCQ28資訊網(wǎng)——每日最新資訊28at.com

// 構(gòu)建SKU名稱,采用SPU+規(guī)格值組裝if(sku.getSpec()==null || "".equals(sku.getSpec())){    sku.setSpec("{}");}

7 商品審核與上下架

7.1 商品審核

7.1.1 需求分析與實(shí)現(xiàn)思路

商品審核:新錄入的商品是未審核狀態(tài),也是未上架狀態(tài)。RCQ28資訊網(wǎng)——每日最新資訊28at.com

實(shí)現(xiàn)思路

  • 修改審核狀態(tài),如果審核狀態(tài)為1,則上架狀態(tài)也修改為1
  • 記錄商品審核記錄
  • 記錄商品日志

7.1.2 代碼實(shí)現(xiàn)

/*** 商品審核* @param id* @param status* @param message*/@Transactionalpublic void audit(String id, String status, String message) {    //1.修改狀態(tài) 審核狀態(tài)和上架狀態(tài)    Spu spu = new Spu();    spu.setId(id);    spu.setStatus(status);    if("1".equals(status)){//審核通過        spu.setIsMarketable("1");//自動(dòng)上架    }    spuMapper.updateByPrimaryKeySelective(spu);        //2.記錄商品審核記錄        //3.記錄商品日志}
@GetMapping("/audit")public Result audit(Long id){    spuService.audit(id);    return new Result();}

7.2 下架商品

7.2.1 需求與實(shí)現(xiàn)思路

下架商品,修改上下架狀態(tài)為下架。下架商品不修改審核狀態(tài)。 下架商品需要記錄商品日志。RCQ28資訊網(wǎng)——每日最新資訊28at.com

7.2.2 代碼實(shí)現(xiàn)

/*** 下架商品* @param id*/public void pull(String id) {    Spu spu = spuMapper.selectByPrimaryKey(id);    spu.setIsMarketable("0");//下架狀態(tài)    spuMapper.updateByPrimaryKeySelective(spu);}
@GetMapping("/pull")public Result pull(String id){    spuService.pull(id);    return new Result();}

7.3 上架商品

7.3.1 需求分析

將商品修改為上架狀態(tài),需要驗(yàn)證該商品是否審核通過,未審核通過的商品不能上架。 上架商品需要記錄商品日志。RCQ28資訊網(wǎng)——每日最新資訊28at.com

7.3.2 代碼實(shí)現(xiàn)

通過審核的商品才能上架:RCQ28資訊網(wǎng)——每日最新資訊28at.com

/*** 商品上架* @param id*/public void put(String id) {    //1.修改狀態(tài)    Spu spu = spuMapper.selectByPrimaryKey(id);    if(!"1".equals(spu.getStatus())){        throw new RuntimeException("此商品未通過審核");    }    spu.setIsMarketable("1");    spuMapper.updateByPrimaryKeySelective(spu);        //2.記錄商品日志}
@GetMapping("/put")public Result put(String id){    spuService.put(id);    return new Result();}

7.4 批量上下架

7.4.1 需求分析

前端傳遞一組商品ID,后端進(jìn)行批量上下架處理,處理后給前端返回處理的條數(shù)RCQ28資訊網(wǎng)——每日最新資訊28at.com

7.4.2 代碼實(shí)現(xiàn)

/*** 批量上架商品* @param ids*/public int putMany(Long[] ids) {    Spu spu=new Spu();    spu.setIsMarketable("1");//上架        //批量修改    Example example=new Example(Spu.class);    Example.Criteria criteria = example.createCriteria();    criteria.andIn("id", Arrays.asList(ids));//id    criteria.andEqualTo("isMarketable","0");//下架    criteria.andEqualTo("status","1");//審核通過的    criteria.andEqualTo("isDelete","0");//非刪除的    return spuMapper.updateByExampleSelective(spu, example);}
@GetMapping("/putMany")public Result putMany(Long[] ids){    int count = spuService.putMany(ids);    return new Result(0,"上架"+count+"個(gè)商品");}

8 刪除與還原商品

8.1 需求分析

刪除商品并非物理刪除(真正的執(zhí)行刪除數(shù)據(jù)),而是通過將表中某字段標(biāo)記為刪除狀態(tài)。RCQ28資訊網(wǎng)——每日最新資訊28at.com

還原商品實(shí)際就是將刪除狀態(tài)再修改回來。RCQ28資訊網(wǎng)——每日最新資訊28at.com

如果商品需要物理刪除,必須是先邏輯刪除才能進(jìn)行物理刪除,刪除前需要檢查狀態(tài)。RCQ28資訊網(wǎng)——每日最新資訊28at.com

8.2 實(shí)現(xiàn)思路

  • 邏輯刪除商品,修改spu表is_delete字段為1
  • 商品回收站顯示spu表is_delete字段為1的記錄
  • 回收商品,修改spu表is_delete字段為0

本文鏈接:http://www.www897cc.com/showinfo-26-96760-0.html一文搞懂大廠商品中心設(shè)計(jì)!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 日志打印的這10個(gè)坑,你至少踩過一個(gè)...

下一篇: 2024 最新最全 VS Code 插件推薦!

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 福泉市| 石台县| 宁陕县| 衡阳县| 镇远县| 富川| 固安县| 龙胜| 兰州市| 临澧县| 东台市| 榆林市| 鄄城县| 乐山市| 抚松县| 福泉市| 商南县| 桓仁| 肥西县| 恩施市| 德钦县| 黄大仙区| 鹤岗市| 曲阜市| 井研县| 凭祥市| 台北市| 新龙县| 波密县| 台中县| 芦山县| 泗水县| 库伦旗| 阿拉善盟| 奇台县| 沂南县| 新源县| 崇明县| 鹤庆县| 双鸭山市| 芒康县|