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 {@Resourceprivate 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());//添加订单至MongoDBmongoTemplate.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-black">物流订单系统</div><!-- 头部区域(可配合layui 已有的水平导航) --><ul class="layui-nav layui-layout-left"><!-- 移动端显示 --></ul><ul class="layui-nav layui-layout-right"><li class="layui-nav-item layui-hide layui-show-md-inline-block"><a href="javascript:;"><img src="//tva1.sinaimg.cn/crop.0.0.118.118.180/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg" class="layui-nav-img">tester</a><dl class="layui-nav-child"><dd><a href="">Your Profile</a></dd><dd><a href="">Settings</a></dd><dd><a href="">Sign out</a></dd></dl></li><li class="layui-nav-item" lay-header-event="menuRight" lay-unselect><a href="javascript:;"><i class="layui-icon layui-icon-more-vertical"></i></a></li></ul></div><div class="layui-side layui-bg-black"><div class="layui-side-scroll"><!-- 左侧导航区域(可配合layui已有的垂直导航) --><ul class="layui-nav layui-nav-tree" lay-filter="test"><li class="layui-nav-item layui-nav-itemed"><a class="" href="javascript:;">订单管理</a><dl class="layui-nav-child"><dd><a href="order-manage.html" target="container">订单管理</a></dd><dd><a href="add-order.html" target="container">订单添加</a></dd><dd><a href="add-logistics.html" target="container">物流添加</a></dd></dl></li></ul></div></div><div class="layui-body"><!-- 内容主体区域 --><iframe src="add-order.html" name="container" width="100%" height="100%"></iframe></div><div class="layui-footer"><!-- 底部固定区域 -->底部固定区域</div>
</div>
<script src="https://lib.baomitu.com/layui/2.6.8/layui.min.js"></script>
<script>//JSlayui.use(['element', 'layer', 'util'], function(){var element = layui.element,layer = layui.layer,util = layui.util,$ = layui.$;//头部事件util.event('lay-header-event', {//左侧菜单事件menuLeft: function(othis){layer.msg('展开左侧菜单的操作', {icon: 0});},menuRight: function(){layer.open({type: 1,content: '<div style="padding: 15px;">处理右侧面板的操作</div>',area: ['260px', '100%'],offset: 'rt' //右上角,anim: 5,shadeClose: true});}});});
</script>
</body>
</html>

add-order.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><fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;"><legend>订单添加</legend>
</fieldset>
<!--面板-->
<div class="layui-card"><div class="layui-card-header"></div><div class="layui-card-body"><!--    表单--><form class="layui-form" action=""><div class="layui-form-item"><label class="layui-form-label">发货人</label><div class="layui-input-block"><input type="text" name="shipper" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">发货人电话</label><div class="layui-input-block"><input type="text" name="shipperPhone" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">发货人地址</label><div class="layui-input-block"><input type="text" name="shipperAddress" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">收货人</label><div class="layui-input-block"><input type="text" name="receiver" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">收货人电话</label><div class="layui-input-block"><input type="text" name="receiverPhone" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">收货人地址</label><div class="layui-input-block"><input type="text" name="receiverAddress" class="layui-input"></div></div><div class="layui-form-item"><div class="layui-input-block"><button class="layui-btn" lay-submit lay-filter="formDemo">提交</button><button type="reset" class="layui-btn layui-btn-primary">重置</button></div></div></form>
</div>
</div><script src="https://lib.baomitu.com/jquery/3.6.0/jquery.min.js"></script>
<script src="https://lib.baomitu.com/layui/2.6.8/layui.min.js"></script>
<script>//Demolayui.use('form', function(){var form = layui.form;//监听提交form.on('submit(formDemo)', function(data){$.ajax({url:"/order/add",type:"POST",data:data.field,dataType:"JSON",success:function (result) {layer.msg(result);}})return false;});});
</script>
</body>
</html>

add-logistics.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><fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;"><legend>物流添加</legend>
</fieldset>
<!--面板-->
<div class="layui-card"><div class="layui-card-header"></div><div class="layui-card-body"><!--    表单--><form class="layui-form" action=""><div class="layui-form-item"><label class="layui-form-label">订单编号</label><div class="layui-input-block"><input type="text" name="orderId" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">操作名称</label><div class="layui-input-block"><select name="operation"><option value="">请选择</option><option value="已取件">已取件</option><option value="正在揽收">正在揽收</option><option value="运送中">运送中</option><option value="派送中">派送中</option><option value="已签收">已签收</option></select></div></div><div class="layui-form-item"><label class="layui-form-label">操作员</label><div class="layui-input-block"><input type="text" name="operator" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">操作员电话</label><div class="layui-input-block"><input type="text" name="phone" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">操作地址</label><div class="layui-input-block"><input type="text" name="address" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">详细信息</label><div class="layui-input-block"><input type="text" name="details" class="layui-input"></div></div><div class="layui-form-item"><div class="layui-input-block"><button class="layui-btn" lay-submit lay-filter="formDemo">提交</button><button type="reset" class="layui-btn layui-btn-primary">重置</button></div></div></form></div>
</div><script src="https://lib.baomitu.com/jquery/3.6.0/jquery.min.js"></script>
<script src="https://lib.baomitu.com/layui/2.6.8/layui.min.js"></script>
<script>//Demolayui.use('form', function(){var form = layui.form;//监听提交form.on('submit(formDemo)', function(data){$.ajax({url:"/order/update",type:"POST",data:data.field,dataType:"JSON",success:function (result) {layer.msg(result);}})return false;});});
</script>
</body>
</html>

order-manager.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><fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;"><legend>订单管理</legend>
</fieldset>
<!--面板-->
<div class="layui-card"><div class="layui-card-header"></div><div class="layui-card-body"><label class="layui-form-label">订单编号</label><div class="layui-input-inline"><input type="text" id="orderId" class="layui-input"></div><button onclick="search();" class="layui-btn layui-btn-normal"><i class="layui-icon">&#xe615;</i></button></div>
</div><div style="padding: 20px;margin-bottom: 100px;">
<!--    面板--><div class="layui-col-md12"><div class="layui-card"><div class="layui-card-header">订单信息</div><div class="layui-card-body" id="order"></div></div></div>
<!-- 面板--><div class="layui-col-md12"><div class="layui-card"><div class="layui-card-header">物流信息</div><div class="layui-card-body">
<!--                时间线--><ul class="layui-timeline" id="logistics"><!--        <li class="layui-timeline-item">--><!--            <i class="layui-icon layui-timeline-axis">&#xe63f;</i>--><!--            <div class="layui-timeline-content layui-text">--><!--                <div class="layui-timeline-title">过去</div>--><!--            </div>--><!--        </li>--></ul></div></div></div><div class="layui0col-md12"><!--面板--><div class="layui-col-md12"><div class="layui-card"><div class="layui-card-header">订单列表</div><div class="layui-card-body"><!--            数据表格--><table id="orderList" lay-filter="orderTable"></table></div></div></div></div>
</div><!--头工具栏事件-->
<script type="text/html" id="toolbarDemo"><div class="layui-btn-container"></div>
</script><!--行工具事件-->
<script type="text/html" id="barDemo"><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a><a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
</script><script src="https://lib.baomitu.com/jquery/3.6.0/jquery.min.js"></script>
<script src="https://lib.baomitu.com/layui/2.6.4/layui.min.js"></script>
<script>//搜索function search() {//订单编号var orderId = $("#orderId").val();$.ajax({url:"/order/" + orderId,type:"GET",dataType:"JSON",//拼接处理返回结果success:function (order) {console.log(order);if (order == null || order == undefined || order == "") {layer.msg("订单不存在");return;}//处理订单信息$("#order").append("订单编号:" + orderId + "(" + order["status"] + ") <hr/>").append("发货人:" + order["shipper"] + "<br/>").append("发货人地址:" + order["shipperAddress"] + "<br/>").append("发货人电话:" + order["shipperPhone"] + "<br/>").append("下单时间:" + order["orderTime"] + "<br/>").append("发货时间:" + order["shipper"] + "<br/>").append("发货人:" + order["shipperTime"] + "<hr/>").append("收货人:" + order["receiver"] + "<br/>").append("发货时间:" + order["receiverAddress"] + "<br/>").append("发货时间:" + order["receiverPhone"] + "<br/>");//获取物流信息let logistics = order['logistics'];//倒序循环for (var i = logistics.length - 1; i >= 0; i--) {//处理物流信息$("#logistics").append('<li class="layui-timeline-item">' +'<i class="layui-icon layui-timeline-axis">&#xe63f;</i>' +'<div class="layui-timeline-content layui-text">' +'<h3 class="layui-timeline-title">' +'(' + logistics[i].operation + ')' +logistics[i].operationTime + '</h3>' +'<p>' + logistics[i].details + '</p>' +'<p>操作员:'+ logistics[i].operator + '&nbsp;' +'操作员电话:' + logistics[i].phone + '&nbsp;' +'操作地址:' + logistics[i].address + '</p></div></li>');}}});}//数据表格layui.use('table', function(){var table = layui.table;//第一个实例table.render({elem: '#orderList',url: '/order/list', //数据接口page: true, //开启分页toolbar: '#toolbarDemo',cols: [[ //表头{field: 'id', title: '订单编号', sort: true, fixed: 'left'},{field: 'status', title: '订单状态'},{field: 'orderTime', title: '下单时间', sort: true},{field: 'shipper', title: '发货人'},{field: 'shipperAddress', title: '发货地址'},{field: 'shipperPhone', title: '发货人电话'},{field: 'receiver', title: '收货人', edit:'text'},{field: 'receiverAddress', title: '收货地址'},{field: 'receiverPhone', title: '收货人电话'},{fixed:'right',title: '操作',toolbar:'#barDemo'}  //编辑/删除]]});//工具条事件table.on('tool(orderTable)', function(obj){ //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"var data = obj.data; //获得当前行数据var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)var tr = obj.tr; //获得当前行 tr 的 DOM 对象(如果有的话)if(layEvent === 'detail'){ //查看//do somehing} else if(layEvent === 'del'){ //删除layer.confirm('真的删除行么', function(index){obj.del(); //删除对应行(tr)的DOM结构,并更新缓存layer.close(index);//向服务端发送删除指令$.ajax({url:"/order/delete",type:"POST",data:{"id":data.id},dataType:"JSON",success:function (result) {layer.msg(result);}})return false;});} else if(layEvent === 'edit'){ //编辑//do something//同步更新缓存对应的值obj.update({username: '123',title: 'xxx'});} else if(layEvent === 'LAYTABLE_TIPS'){layer.alert('Hi,头部工具栏扩展的右侧图标。');}});});</script>
</body>
</html>

基于MongoDB开发的物流系统(简易版)相关推荐

  1. python开发的著名软件公司_软件开发公司_软件外包_项目外包平台基于Python开发一个全文检索系统...

    基于Python开发一个全文检索系统.功能要求为: 使用全文检索引擎对文本进行检索.文本的格式为Word.PDF.TXT. 同时按数据域进行复合条件检索.数据域指文本对应的信息,例如创建人.文件编号. ...

  2. 基于JavaSwing开发模拟电梯系统+分析报告 课程设计 大作业源码

    基于JavaSwing开发模拟电梯系统+分析报告:   (大作业) 开发环境: Windows操作系统 开发工具: MyEclipse+Jdk 运行效果图: 基于JavaSwing开发模拟电梯系统+分 ...

  3. 基于SSH开发物流仓储调度系统 课程设计 大作业 毕业设计

    基于SSH开发物流仓储调度系统(大作业/毕业设计) 开发环境: Windows操作系统 开发工具:Myeclipse+Jdk+Tomcat+MYSQL数据库 运行效果图:  基于SSH开发物流仓储调度 ...

  4. javaweb基于SSH开发打字练习系统(前台+后台)+论文+PPT 课程设计 毕业设计源码

    基于S2SH开发打字练习系统(前台+后台)+论文+PPT:(毕业设计/课程设计) 开发工具: MyEclipse(eclipse/idea)+Jdk+Tomcat+MySQL数据库 演示视频: jav ...

  5. java基于ssm开发的花店系统

    Java基于ssm开发网上花店系统单商家系统,主要有商品分类,列表,详情,购物车,订单等功能. 演示视频: https://www.bilibili.com/video/BV1bT4y1N7vw/?s ...

  6. 基于JSP开发在线答疑系统的设计与实现+论文+PPT+开题报告+任务书 大作业源码 毕业设计

    基于JSP开发在线答疑系统的设计与实现+论文+PPT+开题报告+任务书(大作业/毕业设计) 开发环境: Windows操作系统 开发工具:Myeclipse+Jdk+Tomcat+SQLServer数 ...

  7. 凤凰系统基于android x x86,凤凰系统X86版pc客户端_凤凰系统X86免费版_易玩网

    凤凰系统X86版是一款非常给力的电脑模拟安卓的操作系统,在电脑上就可以运行安卓的一系列应用,还能方便的用电脑对其进行操作,让你感受到更加方便的操作,感兴趣的小伙伴赶紧到网体验吧! 软件功能 凤凰系统( ...

  8. 基于android开发的考勤系统app,Android考勤系统

    [实例简介] 基于Android开发的用于学生的考勤系统 [实例截图] [核心代码] kaoqin1 └── kaoqin └── kaoqin ├── AndroidManifest.xml ├── ...

  9. 基于SpringBoot开发的美食系统分享【十分肝货】【建议收藏】

    最近开发了一个系统是用SpringBoot进行开发的,非常的不错.今天一生哥和大家分享一下. 希望一起交流学习哈! 一,简介 一个系统的开发需要经过以下步骤: 需求调研.需求分析.需求制定.系统开发. ...

  10. php开发考勤系统、OA系统简易版Mysql数据库设计

    CREATE TABLE `attendance_cfg` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`company_id` smallint(5 ...

最新文章

  1. su mysql bash 4.1_故障案例: 进入到心创建的用户中,系统会提示-bash-4.1$,请问如何解决?...
  2. ModuleNotFoundError: No module named ‘scipy.spatial.transform._rotation_groups‘
  3. SSH异常“Failed to start OpenSSH Server daemon”问题排查
  4. 3310复刻版 java_终于等到你:诺基亚3310复刻版开箱简评
  5. 部署WSUS2.0+SP1
  6. Lucene从入门到进阶(6.6.0版本)
  7. np.dot()函数用法(亲测矩阵算法)
  8. go tcp连接_TCP漫谈之keepalive和time_wait
  9. 7系统软raid_使用图形界面来配置RAID
  10. python if语句 for语句 while语句
  11. 数学、物理、化学、生物、地理常用软件介绍(草稿)
  12. GPS坐标转换(一)-基础知识
  13. 对比Python,看看Excel如何3步给证件照换底色!
  14. html中绝对定位的父级,【CSS学习笔记】绝对定位的父类参照物的确定
  15. php移动端可拖动可视化,可视化编辑uniapp项目DIY拖拽
  16. obj-c编程11:内存管理和ARC(自动引用计数)
  17. 利用vantUI组件库中的Field 输入框、Cell 单元格完成金额数字框的数字转金额格式和金额大写
  18. 老A:抖音爆火的“弹幕互动游戏”是什么?该如何搭建直播间?
  19. Thrift之双向通讯
  20. centos7.9-kvm-ESXi相关操作

热门文章

  1. 介绍一款国际性的本体社群聊天软件Discord
  2. 免费JSON格式的服务接口
  3. 保存网页文章为PDF文件
  4. .NET 使用MD5加盐加密
  5. STM32驱动NRF24L01无线模块
  6. 计算空间中点到直线的距离
  7. Devart Excel Addins 2.5.660 插件 Crack
  8. ds18b20数字温度传感器特点及使用介绍
  9. 阿里云物联网平台mqtt测试工具
  10. vue mqtt测试工具使用(一)