application.yml
spring:
data:
mongodb:
uri: mongodb://localhost/project1
Order
@Data
@AllArgsConstructor
@NoArgsConstructor
/**
* 订单
*/
public class Order implements Serializable {
private String id; //订单编号
private String status; //订单状态
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date orderTime; //下单时间
private String shipper; //发货人
private String shipperAddress; //发货人地址
private String shipperPhone; //发货人电话
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date shipperTime; //发货时间
private String receiver; //收货人
private String receiverAddress; //收货人地址
private String receiverPhone; //收货人电话
private List<Logistics> logistics; //物流信息的集合
}
Logistics
@Data
@AllArgsConstructor
@NoArgsConstructor
/**
* 物流
*/
public class Logistics implements Serializable {
private String orderId; //订单编号
private String operation; //操作名称
private String operator; //操作员
private String phone; //操作员电话
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date operationTime; //操作时间
private String address; //操作地址
private String details; //详细信息
}
OrderService
@Service
public class OrderService {
@Resource
private MongoTemplate mongoTemplate;
/**
* 添加订单至MongoDB
* @param order
*/
public void addOrder(Order order) {
//订单编号根据雪花算法生成
order.setId(IdUtil.getSnowflake(1, 1).nextIdStr());
//设置订单状态
order.setStatus("已下单");
//设置下单时间
order.setOrderTime(new Date());
//设置发货时间
order.setShipperTime(new Date());
//添加订单至MongoDB
mongoTemplate.insert(order, "order");
}
/**
* 更新订单信息
* 追加物流信息
* @param logistics
*/
public void updateOrderAndLogistics(Logistics logistics) {
//获取操作名称
String status = logistics.getOperation();
//设置操作时间
logistics.setOperationTime(new Date());
//初始化Query对象,根据订单编号查询
Query query = new Query(Criteria.where("_id").is(logistics.getOrderId()));
//初始化修改对象
Update update = new Update();
//更新订单状态
update.set("status",status);
//追加物流信息
update.push("logistics", logistics);
//更新订单信息
mongoTemplate.upsert(query,update,Order.class,"order");
}
/**
* 根据订单编号来查询
* @param id
* @return
*/
public Order selectOrderById(String id) {
//初始化Query对象,根据订单编号来查询
Query query = new Query(Criteria.where("_id").is(id));
return mongoTemplate.findOne(query,Order.class,"order");
}
/**
* 查询所有订单
* @return
*/
public Map<String, Object> selectOrderList() {
List<Order> list = mongoTemplate.findAll(Order.class,"order");
Map<String, Object> result = new HashMap<>();
if (list == null || list.isEmpty()) {
result.put("code", "400");
result.put("message","没有相关订单");
} else{
result.put("code", "0");
result.put("count",list.size());
result.put("data",list);
}
return result;
}
/**
* 删除
* @param id
* @return
*/
public boolean deleteOrderById(String id) {
Query query = new Query(Criteria.where("_id").is(id));
DeleteResult result = mongoTemplate.remove(query,Order.class,"order");
return result.getDeletedCount() >0 ? true : false;
}
}
index.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/html">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>物流订单系统</title>
<link rel="stylesheet" href="https://lib.baomitu.com/layui/2.6.8/css/layui.min.css">
</head>
<body>
<div class="layui-layout layui-layout-admin">
<div class="layui-header">
<div class="layui-logo layui-hide-xs layui-bg-bla