文章目录
一、买家订单主表
买家订单主表主要是买家的基本信息:买家电话,买家姓名,买家微信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());
}
}