2、商品的dao和service

来源:互联网 发布:幼儿英语教学软件 编辑:程序博客网 时间:2024/06/06 05:47

1、创建产品的实体类

@Entity@Data@DynamicUpdatepublic class ProductInfo {    @Id    private String productId;    /** 名字. */    private String productName;    /** 单价. */    private BigDecimal productPrice;    /** 库存. */    private Integer productStock;    /** 描述. */    private String productDescription;    /** 小图. */    private String productIcon;    /** 状态, 0正常1下架. */    private Integer productStatus = ProductStatusEnum.UP.getCode();    /** 类目编号. */    private Integer categoryType;    /** 创建时间 */    private Date createTime;    /** 更新时间 */    private Date updateTime;}

对于已上架和未上架的商品,我们需要用枚举类进行表示:

@Getterpublic enum ProductStatusEnum {    UP(1,"上架"),    DOWN(2,"下架");    private Integer code;    private String message;    ProductStatusEnum(Integer code,String message){        this.code = code;        this.message = message;    }}

2、商品的dao及测试

public interface ProductInfoDao extends JpaRepository<ProductInfo,String> {    List<ProductInfo> findByProductStatus(Integer productStatus);}
@RunWith(SpringRunner.class)@SpringBootTest@Slf4jpublic class ProductInfoDaoTest {    @Autowired    private ProductInfoDao productInfoDao;    @Test    public void findUpProducts() throws Exception {    }    @Test    public void SaveTest() {        ProductInfo p = new ProductInfo();        p.setProductId("125");        p.setProductName("脉动");        p.setProductPrice(new BigDecimal(4.3));        p.setProductDescription("好喝的脉动");        p.setProductIcon("http://xxx");        p.setCategoryType(3);        p.setProductStock(100);        p.setProductStatus(ProductStatusEnum.UP.getCode());        ProductInfo productInfo = productInfoDao.save(p);        assertNotNull(productInfo);    }    @Test    public void findOneTest(){        ProductInfo productInfo = productInfoDao.findOne("123");        assertNotNull(productInfo);    }    @Test    public void findByProductStatusTest(){        List<ProductInfo> productInfoList = productInfoDao.findByProductStatus(0);        assertEquals(2,productInfoList.size());    }}

3、商品的service及测试:

public interface ProductService {    /*根据商品的id获取商品信息*/    ProductInfo findProductById(String productId);    /*获取所有商家商品*/    List<ProductInfo> findAllUpProducts();    /*查询所有商品(分页)*/    Page<ProductInfo> findAll(Pageable pageable);    //加库存    //TODO    //减库存    //TODO}

对应的实现类:

@Servicepublic class ProductServiceImpl implements ProductService{    @Autowired    private ProductInfoDao productInfoDao;    @Override    public ProductInfo findProductById(String productId) {        return productInfoDao.findOne(productId);    }    @Override    public List<ProductInfo> findAllUpProducts() {        return productInfoDao.findByProductStatus(ProductStatusEnum.UP.getCode());    }    @Override    public Page<ProductInfo> findAll(Pageable pageable) {        return productInfoDao.findAll(pageable);    }}

测试:

@RunWith(SpringRunner.class)@SpringBootTestpublic class ProductServiceImplTest {    @Autowired    private ProductService productService;    @Test    public void findProductById() throws Exception {        ProductInfo productInfo = productService.findProductById("123");        assertNotNull(productInfo);    }    @Test    public void findAllUpProducts() throws Exception {        List<ProductInfo> productInfoList = productService.findAllUpProducts();        assertEquals(2,productInfoList.size());    }    @Test    public void findAll() throws Exception {        PageRequest request = new PageRequest(0,10);        Page<ProductInfo> productInfoList = productService.findAll(request);        assertEquals(3,productInfoList.getTotalElements());    }}

4、测试通过之后,就可以将类目和商品整合起来了。代码见3.0