學習記錄(day14-changgou後臺:查詢全部品牌、商品添加)

changgou後臺-day02

[TOC]java

一、查詢全部品牌

Brand數據庫

/**
 * @author 庭前雲落
 * @date 2019/11/14 16:53
 * @description
 */
@Table(name = "tb_brand")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Brand {
    @Id
    private Integer id;
    private String image;
    private String letter;
    private String name;
    private Integer seq;
}

BrandControllerapp

/**
 * @author 庭前雲落
 * @date 2019/11/14 16:58
 * @description
 */
@RestController
@RequestMapping("/brand")
public class BrandController {

    @Resource
    private BrandService brandServiceImpl;

    @GetMapping
    public BaseResult selectAll(){
          List<Brand> blist = brandServiceImpl.selectAll();
          return BaseResult.ok("查詢成功",blist);
    }
}

BrandServiceImplide

/**
 * @author 庭前雲落
 * @date 2019/11/14 16:58
 * @description
 */
@Service
@Transactional
public class BrandServiceImpl implements BrandService {

    @Resource
    private BrandMapper brandMapper;

    @Override
    public List<Brand> selectAll() {
        return brandMapper.selectAll();
    }
}

二、商品添加【重點】

2.一、流程圖

2.二、建立JavaBean

Sku工具

/**
 * @author 庭前雲落
 * @date 2019/11/14 17:14
 * @description
 */
@Table(name = "tb_sku")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Sku {
    @Id
    private String id;              //商品id
    private String sn;              //商品條碼
    private String name;            //SKU名稱

    private Integer price;          //價格(分)
    private Integer num;            //庫存數量
    @Column(name="alert_num")
    private Integer alertNum;      //庫存預警數量

    private String image;           //商品圖片
    private String images;          //商品圖片列表
    private Integer weight;         //重量(克)

    @Column(name="create_time")
    private Date createTime;        //建立時間
    @Column(name="update_time")
    private Date updateTime;       //更新時間

    @Column(name="spu_id")
    private String spuId;          //SPUID
    @Column(name="category_id")
    private Integer categoryId;    //類目ID
    @Column(name="category_name")
    private String categoryName;    //類目名稱
    
    @Column(name="brand_name")
    private String brandName;      //品牌名稱
    private String spec;            //規格
    @Column(name="sale_num")
    private Integer saleNum;       //銷量
    
    @Column(name="comment_num")
    private Integer commentNum;    //評論數
    private String status;          //商品狀態 1-正常,2-下架,3-刪除
}

Spu學習

/**
 * @author 庭前雲落
 * @date 2019/11/14 17:14
 * @description
 */
@Data
@Table(name = "tb_spu")
@AllArgsConstructor
@NoArgsConstructor
public class Spu {
    @Id
    private String id;              //主鍵
    private String sn;              //貨號
    private String name;            //SPU名
    private String caption;         //副標題

    @Column(name="brand_id")
    private Integer brandId;       //品牌ID
    @Column(name="category1_id")
    private Integer category1Id;   //一級分類
    @Column(name="category2_id")
    private Integer category2Id;   //二級分類
    @Column(name="category3_id")
    private Integer category3Id;   //三級分類
    
    @Column(name="template_id")
    private Integer templateId;    //模板ID
    @Column(name="freight_id")
    private Integer freightId;     //運費模板id
    private String image;           //圖片
    private String images;          //圖片列表
    
    @Column(name="sale_service")
    private String saleService;    //售後服務
    private String introduction;    //介紹
    @Column(name="spec_items")
    private String specItems;      //規格列表
    @Column(name="para_items")
    private String paraItems;      //參數列表
    
    @Column(name="sale_num")
    private Integer saleNum;       //銷量
    @Column(name="comment_num")
    private Integer commentNum;    //評論數
    @Column(name="is_marketable")
    private String isMarketable;   //是否上架
    @Column(name="is_enable_spec")
    private String isEnableSpec;  //是否啓用規格
    
    @Column(name="is_delete")
    private String isDelete;       //是否刪除
    private String status;          //審覈狀態

    private List<Sku> skuData;      //全部sku信息
}

2.三、工具類配置

2.3.一、配置流程

2.3.二、編寫配置

IdWorkerConfig測試

//啓用IdWorkerProperties
@EnableConfigurationProperties(IdWorkerProperties.class)
@Component    //@Service做用同樣
public class IdWorkerConfig {

    @Bean
    public IdWorker idWorker(IdWorkerProperties idWorkerProperties){
        return new IdWorker(idWorkerProperties.getWorkerId() ,idWorkerProperties.getDatacenterId());
    }
}

IdWorkerPropertiesui

@ConfigurationProperties(prefix = "sc.worker")//對應yml
@Data
public class IdWorkerProperties {

    private Long  workerId;

    private Long datacenterId;


}

2.四、代碼實現

SpuController3d

/**
 * @author 庭前雲落
 * @date 2019/11/15 16:54
 * @description
 */
@RestController
@RequestMapping("/spu")
public class SpuController {

    @Resource
    private SpuService spuServiceImpl;

    @PostMapping
    public BaseResult add(@RequestBody Spu spu){
        spuServiceImpl.add(spu);
        return BaseResult.ok("添加成功");
    }
}

SpuServiceImplcode

/**
 * @author 庭前雲落
 * @date 2019/11/15 17:00
 * @description
 */
@Service
@Transactional
public class SpuServiceImpl implements SpuService {

    @Resource
    private IdWorker idWorker;

    @Resource
    private SpuMapper spuMapper;

    @Resource
    private SkuMapper skuMapper;

    @Resource
    private CategoryMapper categoryMapper;

    @Resource
    private BrandMapper brandMapper;

    @Override
    public void add(Spu spu) {
        //一、spu
        //1.1自動生成id,全局惟一,使用IdWorker
        spu.setId(idWorker.nextId() + "");
         //1.2其餘
        spu.setSaleNum(0);//銷量
        spu.setCommentNum(0); //評論數
        spu.setIsEnableSpec("1");//是否啓用規格
        spu.setIsDelete("0");//是否刪除,邏輯刪除,數據庫沒有真刪
        //1.3保存spu
        spuMapper.insertSelective(spu);


        //3.一、查詢分類--三級分類
        Category category = categoryMapper.selectByPrimaryKey(spu.getCategory3Id());
        Brand brand = brandMapper.selectByPrimaryKey(spu.getBrandId());

        //二、保存sku
        spu.getSkuData().forEach((sku)->{
           //2.1生成id
           sku.setId(idWorker.nextId()+"");

           //2.2
            sku.setCreateTime(new Date());
            sku.setUpdateTime(new Date());

            //2.3skuid
            sku.setSpuId(spu.getId());

            //2.4分類
            sku.setCategoryId(category.getId());
            sku.setCategoryName(category.getName());

            //2.5品牌
            sku.setBrandName(brand.getName());

            //2.6其餘
            sku.setSaleNum(0);
            sku.setCommentNum(0);

            skuMapper.insertSelective(sku);
        });
        // for(Sku sku :spu.getSkuData()){
        // 同上遍歷
        // }
    }
}

三、測試

perfect!!!


平常學習的總結,主要是爲了本身之後看,固然你們有什麼好的建議,歡迎評論留言。

相關文章
相關標籤/搜索