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

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

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

來源: 責(zé)編: 時(shí)間:2024-06-27 07:57:25 142觀看
導(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 表

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

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

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

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

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

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

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

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


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


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

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

貨號(hào)
5Gc28資訊網(wǎng)——每日最新資訊28at.com

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

t_sku 表

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

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

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

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

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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

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

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


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


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

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

2.2.1 需求分析

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

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

前端傳遞給后端的數(shù)據(jù)格式:5Gc28資訊網(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新增方法:5Gc28資訊網(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();    //分類對(duì)象    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);//評(píng)論數(shù)        sku.setSaleNum(0);//銷售數(shù)量        skuMapper.insert(sku);    }}

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

@Service(interfaceClass=SpuService.class)

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

SpuController修改add方法:5Gc28資訊網(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)?5Gc28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

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

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

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

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注解。5Gc28資訊網(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列表 ,顯示效果:5Gc28資訊網(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,對(duì)spu執(zhí)行的是insert操作
  • 如果修改則需要?jiǎng)h除原來的sku列表,對(duì)spu執(zhí)行的是updateByPrimaryKeySelective操作
  • sku列表的插入部分的代碼要判斷sku是否有id,如果有id則不重新生成id

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

修改SpuServiceImpl的saveGoods:5Gc28資訊網(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對(duì)應(yīng)一個(gè)sku ,這時(shí)sku列表只傳遞一條記錄,且無規(guī)格(spec)屬性,要對(duì)其判斷,避免因空值產(chǎn)生異常。5Gc28資訊網(wǎng)——每日最新資訊28at.com

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

在saveGoods方法的sku列表循環(huán)中添加代碼,判斷5Gc28資訊網(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)。5Gc28資訊網(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)。 下架商品需要記錄商品日志。5Gc28資訊網(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)證該商品是否審核通過,未審核通過的商品不能上架。 上架商品需要記錄商品日志。5Gc28資訊網(wǎng)——每日最新資訊28at.com

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

通過審核的商品才能上架:5Gc28資訊網(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ù)5Gc28資訊網(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)。5Gc28資訊網(wǎng)——每日最新資訊28at.com

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

如果商品需要物理刪除,必須是先邏輯刪除才能進(jìn)行物理刪除,刪除前需要檢查狀態(tài)。5Gc28資訊網(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)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

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

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

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 朝阳市| 泰兴市| 冀州市| 勐海县| 万全县| 龙泉市| 岢岚县| 揭东县| 锦州市| 蓬溪县| 靖州| 鄄城县| 宁强县| 上杭县| 长白| 巴里| 定陶县| 桂平市| 望都县| 阳高县| 吐鲁番市| 大安市| 扶余县| 麦盖提县| 巴青县| 保亭| 六枝特区| 梁河县| 宜阳县| 通州市| 汉阴县| 英山县| 庄河市| 思茅市| 巴东县| 伽师县| 和林格尔县| 唐海县| 扬中市| 长汀县| 安庆市|