微信点餐SpringBoot-08:买家订单---Dao层的实现

一、买家订单主表

买家订单主表主要是买家的基本信息:买家电话,买家姓名,买家微信openid,买家订单id,买家地址等等
要实现的功能就是向买家订单主表中添加买家信息,查询买家信息

1. OrderMaster

这个类为买家端信息类,映射数据库中的买家订单主表

/**
 * 买家端主表
 */

@Data
@Entity
@DynamicUpdate
public class OrderMaster {
    //订单Id
    @Id
    private String orderId;

    //买家名字
    private String buyerName;

    //买家电话
    private String buyerPhone;

    //买家地址
    private String buyerAddress;

    //买家微信openid
    private String buyerOpenid;

    //订单总金额
    private BigDecimal orderAmount;

    //订单状态,默认为0:下单
    private Integer orderStatus= OrderStatuEnum.NEW.getCode();

    //支付状态,默认为0:未支付
    private Integer payStatus = PayStatusEnum.WAIT.getCode();

    //创建时间
    private Date createTime;

    //更新时间
    private Date updateTime;
}

2. OrderStatuEnum

为了表示订单状态,将其写在枚举类中:

@Getter
@AllArgsConstructor
public enum OrderStatuEnum {
    NEW(0,"新订单"),
    FINISHED(1,"完结"),
    CANCEL(2,"取消");

    private Integer code;
    private String message;
}

3. PayStatusEnum

为了表示支付状态,将其写在枚举类中

@Getter
@AllArgsConstructor
public enum PayStatusEnum {
    WAIT(0,"等待状态"),
    SUCCESS(1,"支付成功");

    private Integer code;
    private String message;
}

4. OrderMasterRepository

通过买家微信Openid分页查询买家信息

public interface OrderMasterRepository extends JpaRepository<OrderMaster,String> {
    /**
     * 通过买家微信Openid分页查询买家信息(倘若不传入openid,那么买家端订单都会查出来)
     * @param buyerOpenid
     * @param pageable
     * @return
     */
    Page<OrderMaster> findByBuyerOpenid(String buyerOpenid, Pageable pageable);

}

5. OrderMasterRepositoryTest

买家端订单主表的测试类:

@RunWith(SpringRunner.class)
@SpringBootTest
class OrderMasterRepositoryTest {

    @Autowired
    OrderMasterRepository repository;

    private final String OPENID = "110110";

    //测试添加买家端信息方法
    @Test
    public void saveTest(){
        OrderMaster orderMaster = new OrderMaster();
        orderMaster.setOrderId("123457");
        orderMaster.setBuyerName("师兄");
        orderMaster.setBuyerPhone("13756235489");
        orderMaster.setBuyerAddress("北京");
        orderMaster.setBuyerOpenid(OPENID);
        orderMaster.setOrderAmount(new BigDecimal(2.5));
        //因为订单状态和支付状态为默认的,因此不需要设置

        OrderMaster result = repository.save(orderMaster);
        Assert.assertNotNull(result);
    }

    //根据买家微信openid查询买家端信息
    @Test
    void findByBuyerOpenid() {
        PageRequest request = PageRequest.of(0,1);
        Page<OrderMaster> result
                = repository.findByBuyerOpenid(OPENID, request);
        Assert.assertNotEquals(0,result.getTotalElements());
        //System.out.println(result.getTotalElements());
    }
}

在这里插入图片描述
在这里插入图片描述

二、买家订单详情表

1. OrderDetail

这个类封装了买家订单的信息,映射买家订单详情表

/**
 * 买家订单详情表
 */

@Data
@Entity
public class OrderDetail {
    @Id
    private String detailId;

    //订单Id
    private String orderId;

    //商品id
    private String productId;

    //商品名称
    private String productName;

    //商品价格
    private BigDecimal productPrice;

    //商品数量
    private Integer productQuantity;

    //商品小图
    private String productIcon;
}

2. OrderDetailRepository

根据订单id查询订单详情:

/**
 * 查询的流程:
 * 1.先到OrderMaster里面去查询,获取orderId
 * 2.通过orderId到OrderDetail里面去查询
 */
public interface OrderDetailRepository extends JpaRepository<OrderDetail,String> {
    /**
     * orderMaster里面的一条记录可能对应orderDetail里面的多条记录,因此使用List
     * @param orderId
     * @return
     */
    List<OrderDetail> findByOrderId(String orderId);
}

3. OrderDetailRepositoryTest


@RunWith(SpringRunner.class)
@SpringBootTest
class OrderDetailRepositoryTest {

    @Autowired
    private OrderDetailRepository repository;

    @Test
    void saveTest(){
        OrderDetail orderDetail = new OrderDetail();
        orderDetail.setDetailId("123456788");
        orderDetail.setOrderId("123455");
        orderDetail.setProductIcon("http://chhahh.jps");
        orderDetail.setProductId("11112");
        orderDetail.setProductName("皮蛋粥");
        orderDetail.setProductPrice(new BigDecimal(1.2));
        orderDetail.setProductQuantity(2);

        OrderDetail result = repository.save(orderDetail);
        Assert.assertNotNull(result);
    }

    @Test
    void findByOrderId() {
        List<OrderDetail> orderDetailList = repository.findByOrderId("123455");
        Assert.assertNotEquals(0,orderDetailList.size());
    }
}

在这里插入图片描述

发布了665 篇原创文章 · 获赞 115 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_42764468/article/details/104740461
今日推荐