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

當前位置:首頁 > 科技  > 軟件

一文搞懂大廠商品中心設計!

來源: 責編: 時間:2024-06-27 07:57:25 197觀看
導讀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 表結構

t_spu 表

字段名稱
cuc28資訊網——每日最新資訊28at.com

字段含義
cuc28資訊網——每日最新資訊28at.com

字段類型
cuc28資訊網——每日最新資訊28at.com

字段長度
cuc28資訊網——每日最新資訊28at.com

備注
cuc28資訊網——每日最新資訊28at.com

id
cuc28資訊網——每日最新資訊28at.com

主鍵
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

sn
cuc28資訊網——每日最新資訊28at.com

貨號
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

name
cuc28資訊網——每日最新資訊28at.com

SPU名
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

caption
cuc28資訊網——每日最新資訊28at.com

副標題
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

brand_id
cuc28資訊網——每日最新資訊28at.com

品牌ID
cuc28資訊網——每日最新資訊28at.com

INT
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

category1_id
cuc28資訊網——每日最新資訊28at.com

一級分類
cuc28資訊網——每日最新資訊28at.com

INT
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

category2_id
cuc28資訊網——每日最新資訊28at.com

二級分類
cuc28資訊網——每日最新資訊28at.com

INT
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

category3_id
cuc28資訊網——每日最新資訊28at.com

三級分類
cuc28資訊網——每日最新資訊28at.com

INT
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

template_id
cuc28資訊網——每日最新資訊28at.com

模板ID
cuc28資訊網——每日最新資訊28at.com

INT
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

freight_id
cuc28資訊網——每日最新資訊28at.com

運費模板id
cuc28資訊網——每日最新資訊28at.com

INT
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

image
cuc28資訊網——每日最新資訊28at.com

圖片
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

images
cuc28資訊網——每日最新資訊28at.com

圖片列表
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

sale_service
cuc28資訊網——每日最新資訊28at.com

售后服務
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

introduction
cuc28資訊網——每日最新資訊28at.com

介紹
cuc28資訊網——每日最新資訊28at.com

TEXT
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

spec_items
cuc28資訊網——每日最新資訊28at.com

規格列表
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

para_items
cuc28資訊網——每日最新資訊28at.com

參數列表
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

sale_num
cuc28資訊網——每日最新資訊28at.com

銷量
cuc28資訊網——每日最新資訊28at.com

INT
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

comment_num
cuc28資訊網——每日最新資訊28at.com

評論數
cuc28資訊網——每日最新資訊28at.com

INT
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

is_marketable
cuc28資訊網——每日最新資訊28at.com

是否上架
cuc28資訊網——每日最新資訊28at.com

CHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

is_enable_spec
cuc28資訊網——每日最新資訊28at.com

是否啟用規格
cuc28資訊網——每日最新資訊28at.com

CHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

is_delete
cuc28資訊網——每日最新資訊28at.com

是否刪除
cuc28資訊網——每日最新資訊28at.com

CHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

status
cuc28資訊網——每日最新資訊28at.com

審核狀態
cuc28資訊網——每日最新資訊28at.com

CHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

t_sku 表

字段名稱
cuc28資訊網——每日最新資訊28at.com

字段含義
cuc28資訊網——每日最新資訊28at.com

字段類型
cuc28資訊網——每日最新資訊28at.com

字段長度
cuc28資訊網——每日最新資訊28at.com

備注
cuc28資訊網——每日最新資訊28at.com

id
cuc28資訊網——每日最新資訊28at.com

商品id
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

sn
cuc28資訊網——每日最新資訊28at.com

商品條碼
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

name
cuc28資訊網——每日最新資訊28at.com

SKU名稱
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

price
cuc28資訊網——每日最新資訊28at.com

價格(分)
cuc28資訊網——每日最新資訊28at.com

INT
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

num
cuc28資訊網——每日最新資訊28at.com

庫存數量
cuc28資訊網——每日最新資訊28at.com

INT
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

alert_num
cuc28資訊網——每日最新資訊28at.com

庫存預警數量
cuc28資訊網——每日最新資訊28at.com

INT
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

image
cuc28資訊網——每日最新資訊28at.com

商品圖片
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

images
cuc28資訊網——每日最新資訊28at.com

商品圖片列表
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

weight
cuc28資訊網——每日最新資訊28at.com

重量(克)
cuc28資訊網——每日最新資訊28at.com

INT
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

create_time
cuc28資訊網——每日最新資訊28at.com

創建時間
cuc28資訊網——每日最新資訊28at.com

DATETIME
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

update_time
cuc28資訊網——每日最新資訊28at.com

更新時間
cuc28資訊網——每日最新資訊28at.com

DATETIME
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

spu_id
cuc28資訊網——每日最新資訊28at.com

SPUID
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

category_id
cuc28資訊網——每日最新資訊28at.com

類目ID
cuc28資訊網——每日最新資訊28at.com

INT
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

category_name
cuc28資訊網——每日最新資訊28at.com

類目名稱
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

brand_name
cuc28資訊網——每日最新資訊28at.com

品牌名稱
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

spec
cuc28資訊網——每日最新資訊28at.com

規格
cuc28資訊網——每日最新資訊28at.com

VARCHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

sale_num
cuc28資訊網——每日最新資訊28at.com

銷量
cuc28資訊網——每日最新資訊28at.com

INT
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

comment_num
cuc28資訊網——每日最新資訊28at.com

評論數
cuc28資訊網——每日最新資訊28at.com

INT
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

status
cuc28資訊網——每日最新資訊28at.com

商品狀態 1-正常,2-下架,3-刪除
cuc28資訊網——每日最新資訊28at.com

CHAR
cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com


cuc28資訊網——每日最新資訊28at.com

2.2 需求與實現

2.2.1 需求分析

詳見靜態原型。cuc28資訊網——每日最新資訊28at.com

2.2.2 實現思路

前端傳遞給后端的數據格式:cuc28資訊網——每日最新資訊28at.com

{    "spu": {        "name": "這個是商品名稱",        "caption": "這個是副標題",        "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": "這個是商品詳情,html代碼",        "paraItems": {            "出廠年份": "2019",            "贈品": "充電器"        },        "saleService": "七天包退,閃電退貨",        "sn": "020102331",        "specItems": {            "顏色": [                "紅",                "綠"            ],            "機身內存": [                "64G",                "8G"            ]        },        "templateId": 42    },    "skuList": [        {            "sn": "10192010292",            "num": 100,            "alertNum": 20,            "price": 900000,            "spec": {                "顏色": "紅",                "機身內存": "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": {                "顏色": "綠",                "機身內存": "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 代碼實現

2.3.1 SPU與SKU列表的保存

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

SpuServiceImpl新增方法:cuc28資訊網——每日最新資訊28at.com

@Autowiredprivate SkuMapper skuMapper;@Autowired  private IdWorker idWorker;@Autowiredprivate CategoryMapper categoryMapper;/*** 保存商品* @param goods 商品組合實體類*/@Transactionalpublic void saveGoods(Goods goods) {    // 保存一個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名稱+規格值列表        String name=spu.getName();        //sku.getSpec() {"顏色":"紅","機身內存":"64G"}        Map<String,String> specMap = JSON.parseObject(sku.getSpec(), Map.class);        for(String value:specMap.values()){            name+=" "+value;        }        sku.setName(name);//名稱        sku.setCreateTime(date);//創建日期        sku.setUpdateTime(date);//修改日期        sku.setCategoryId(spu.getCategory3Id());//分類id        sku.setCategoryName(category.getName());//分類名稱        sku.setCommentNum(0);//評論數        sku.setSaleNum(0);//銷售數量        skuMapper.insert(sku);    }}

該方法要對兩個表操作,需添加事務:cuc28資訊網——每日最新資訊28at.com

@Service(interfaceClass=SpuService.class)

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

SpuController修改add方法:cuc28資訊網——每日最新資訊28at.com

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

3 建立分類與品牌的關聯

3.1 需求

Q:為什么要建立分類與品牌的關聯?cuc28資訊網——每日最新資訊28at.com

A:因為我們在前臺搜索時,需要通過分類找到品牌列表。cuc28資訊網——每日最新資訊28at.com

Q:分類與品牌是什么關系?cuc28資訊網——每日最新資訊28at.com

A:多對多。cuc28資訊網——每日最新資訊28at.com

Q:在什么地方添加關系?cuc28資訊網——每日最新資訊28at.com

A:我們不在后臺單獨實現分類與品牌的關聯,而是在添加商品時自動添加關聯。cuc28資訊網——每日最新資訊28at.com

3.2 實現思路

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

3.3 代碼

創建實體類

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

聯合主鍵,templateId和brandId都有@Id注解。cuc28資訊網——每日最新資訊28at.com

新建數據訪問接口

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 根據ID查詢商品

根據id 查詢SPU和SKU列表 ,顯示效果:cuc28資訊網——每日最新資訊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": "黑馬智能手機",        "paraItems": null,        "saleNum": null,        "saleService": null,        "sn": null,        "specItems": null,        "status": null,        "templateId": 42    },    "skuList": [        {            "alertNum": null,            "brandName": "金立(Gionee)",            "categoryId": 560,            "categoryName": "手機",            "commentNum": null,            "createTime": "2018‐11‐06 10:17:08",            "id": 1369324,            "image": null,            "images": "blob:http://localhost:8080/ec04d1a5‐d865‐4e7f‐a313‐2e9a76cfb3f8",            "name": "黑馬智能手機",            "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": "手機",            "commentNum": null,            "createTime": "2018‐11‐06 10:17:08",            "id": 1369325,            "image": null,            "images": "blob:http://localhost:8080/ec04d1a5‐d865‐4e7f‐a313‐2e9a76cfb3f8",            "name": "黑馬智能手機",            "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方法

/*** 根據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 保存修改

實現思路

  • 修改與新增共用同一個方法
  • 通過spu的id判斷當前操作是新增還是修改
  • 如果是新增需要設置spu的id,對spu執行的是insert操作
  • 如果修改則需要刪除原來的sku列表,對spu執行的是updateByPrimaryKeySelective操作
  • sku列表的插入部分的代碼要判斷sku是否有id,如果有id則不重新生成id

代碼實現

修改SpuServiceImpl的saveGoods:cuc28資訊網——每日最新資訊28at.com

/*** 保存商品* @param goods*/@Transactionalpublic void saveGoods(Goods goods) {    //保存一個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);        //執行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);//創建日期        }        //添加sku    }//建立分類和品牌的關聯}

6 未啟用規格的sku處理

6.1 需求分析

有些商品沒區分規格,即一個spu對應一個sku ,這時sku列表只傳遞一條記錄,且無規格(spec)屬性,要對其判斷,避免因空值產生異常。cuc28資訊網——每日最新資訊28at.com

6.2 實現思路

在saveGoods方法的sku列表循環中添加代碼,判斷cuc28資訊網——每日最新資訊28at.com

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

7 商品審核與上下架

7.1 商品審核

7.1.1 需求分析與實現思路

商品審核:新錄入的商品是未審核狀態,也是未上架狀態。cuc28資訊網——每日最新資訊28at.com

實現思路

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

7.1.2 代碼實現

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

7.2 下架商品

7.2.1 需求與實現思路

下架商品,修改上下架狀態為下架。下架商品不修改審核狀態。 下架商品需要記錄商品日志。cuc28資訊網——每日最新資訊28at.com

7.2.2 代碼實現

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

7.3 上架商品

7.3.1 需求分析

將商品修改為上架狀態,需要驗證該商品是否審核通過,未審核通過的商品不能上架。 上架商品需要記錄商品日志。cuc28資訊網——每日最新資訊28at.com

7.3.2 代碼實現

通過審核的商品才能上架:cuc28資訊網——每日最新資訊28at.com

/*** 商品上架* @param id*/public void put(String id) {    //1.修改狀態    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,后端進行批量上下架處理,處理后給前端返回處理的條數cuc28資訊網——每日最新資訊28at.com

7.4.2 代碼實現

/*** 批量上架商品* @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+"個商品");}

8 刪除與還原商品

8.1 需求分析

刪除商品并非物理刪除(真正的執行刪除數據),而是通過將表中某字段標記為刪除狀態。cuc28資訊網——每日最新資訊28at.com

還原商品實際就是將刪除狀態再修改回來。cuc28資訊網——每日最新資訊28at.com

如果商品需要物理刪除,必須是先邏輯刪除才能進行物理刪除,刪除前需要檢查狀態。cuc28資訊網——每日最新資訊28at.com

8.2 實現思路

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

本文鏈接:http://m.www897cc.com/showinfo-26-96760-0.html一文搞懂大廠商品中心設計!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

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

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

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久久精品网| 免费日韩av| 亚洲免费成人| 日韩西西人体444www| 亚洲私人黄色宅男| 亚洲欧美在线x视频| 欧美在线www| 欧美大片91| 欧美深夜影院| 国产一区二区三区在线播放免费观看| 影音国产精品| 夜夜嗨av一区二区三区四区 | 亚洲在线电影| 欧美综合国产精品久久丁香| 久久免费视频一区| 欧美日韩p片| 国产日韩欧美一区二区三区四区| 能在线观看的日韩av| 欧美日韩亚洲三区| 国产专区精品视频| 国产欧美日韩一区二区三区在线观看| 极品少妇一区二区三区| 国产欧美精品在线| 亚洲大胆在线| 亚洲图片激情小说| 亚洲美女网站| 亚欧成人精品| 欧美一区二区三区视频在线 | 午夜欧美精品久久久久久久| 另类亚洲自拍| 美女黄毛**国产精品啪啪| 欧美日韩一卡| 伊人夜夜躁av伊人久久| 亚洲图片在区色| 免费成人美女女| 国产精品夜夜夜| 91久久一区二区| 在线观看国产精品网站| 日韩视频一区二区| 亚洲一区激情| 久久综合99re88久久爱| 性感少妇一区| 欧美精品一区二区视频| 国产亚洲欧美一区| 一区二区三区视频在线观看| 久久久美女艺术照精彩视频福利播放| 欧美日韩亚洲系列| 激情小说另类小说亚洲欧美| 亚洲伊人观看| 欧美日韩精品免费 | 欧美日韩亚洲一区二区| 在线免费观看视频一区| 欧美一区二区播放| 国产精品v欧美精品v日韩 | 欧美精品三区| 一区二区三区在线观看欧美| 香蕉乱码成人久久天堂爱免费| 欧美精品日本| 亚洲国产综合在线| 久久久综合网站| 国产亚洲成精品久久| 亚洲伊人伊色伊影伊综合网| 欧美久久久久| 亚洲激情图片小说视频| 久久午夜精品一区二区| 欧美一区二区三区在| 欧美三级不卡| 艳女tv在线观看国产一区| 欧美国产日韩在线观看| 亚洲国产高清在线| 久热精品视频在线观看| 激情综合在线| 久久久人成影片一区二区三区 | 久久精品五月| 国产一区二区高清不卡| 亚洲欧美视频在线观看视频| 美女黄网久久| 国产在线精品成人一区二区三区 | 国产老肥熟一区二区三区| 亚洲午夜久久久久久久久电影网| 欧美片在线观看| 日韩亚洲在线观看| 欧美日韩国产黄| 99re6热在线精品视频播放速度| 欧美第十八页| 日韩视频在线你懂得| 欧美精品啪啪| 一区二区日韩欧美| 欧美性开放视频| 亚洲欧美国产视频| 欧美/亚洲一区| 亚洲人成毛片在线播放女女| 加勒比av一区二区| 亚洲欧美日韩国产综合精品二区 | 欧美国产精品劲爆| 亚洲黄色有码视频| 欧美成在线观看| 日韩亚洲欧美一区二区三区| 欧美揉bbbbb揉bbbbb| 亚洲欧美激情视频| 国产嫩草一区二区三区在线观看| 午夜一区二区三区在线观看| 国产一区二区三区在线观看网站 | 亚洲欧美国产毛片在线| 国产欧美一区二区三区国产幕精品| 性感少妇一区| 黄色成人在线观看| 蜜桃精品久久久久久久免费影院| 91久久极品少妇xxxxⅹ软件| 欧美日韩国产成人高清视频| 亚洲亚洲精品三区日韩精品在线视频| 国产精品一区在线观看| 久久久久久九九九九| 亚洲二区在线| 欧美理论视频| 欧美中文字幕在线播放| 欧美三级视频| 亚洲一区二区三区久久 | 久久国产一二区| 国产在线日韩| 欧美电影电视剧在线观看| 99精品热视频只有精品10| 国产精品久久久久毛片软件| 久久成人免费网| 在线观看亚洲| 欧美日韩一区二区在线| 欧美一区在线视频| 亚洲日韩欧美视频| 欧美在线啊v一区| 伊人久久婷婷色综合98网| 欧美jizz19性欧美| 亚洲一区二三| 亚洲高清不卡一区| 国产精品二区在线| 久久野战av| 欧美一级在线播放| 国产精品免费一区二区三区在线观看 | 久久综合国产精品| 亚洲精品国产精品国自产在线 | 国产欧美日韩在线播放| 蜜臀久久99精品久久久久久9| 一区二区毛片| 激情久久五月天| 欧美午夜视频网站| 久久久久久综合| 中文国产一区| …久久精品99久久香蕉国产 | 国产欧美精品在线播放| 久久久www| 亚洲国产第一页| 欧美午夜欧美| 久久综合狠狠综合久久综合88| 99亚洲一区二区| 国产亚洲精品aa| 欧美日韩高清免费| 久久久久久久999精品视频| 亚洲美女网站| 久久午夜电影网| 亚洲特色特黄| 亚洲国产精品va在线观看黑人| 国产精品剧情在线亚洲| 国产精品一区一区三区| 美女精品国产| 久久精品72免费观看| 精品白丝av| 国产精品久久久久久久久免费樱桃 | 久久综合伊人77777| 亚洲专区一二三| 99国产精品久久久| 亚洲国产欧美日韩精品| 国产亚洲精品久久久| 国产精品99免视看9| 欧美激情aⅴ一区二区三区 | 国产日韩欧美黄色| 国产精品成人午夜| 欧美日韩福利在线观看| 免费成人av在线看| 久久久噜久噜久久综合| 午夜精品久久久久久久白皮肤| 日韩一区二区精品| 亚洲电影在线免费观看| 国模大胆一区二区三区| 欧美.日韩.国产.一区.二区| 欧美一区观看| 亚洲欧美国产日韩天堂区| 在线亚洲免费视频| 亚洲精品123区| 亚洲电影在线看| 亚洲缚视频在线观看| 精品999成人| 国一区二区在线观看| 国产亚洲a∨片在线观看| 国产精品视频网| 国产精品久久久久久久久久妞妞| 欧美日韩免费区域视频在线观看| 欧美国产一区二区三区激情无套| 麻豆成人在线观看| 老司机一区二区| 免费国产一区二区| 美日韩精品视频| 免费在线成人| 欧美大片免费观看| 欧美激情亚洲自拍| 欧美精品免费在线|