【开源】JAVA+Vue.js实现校园电商物流云平台

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 数据中心模块
    • 2.2 商品数据模块
    • 2.3 快递公司模块
    • 2.4 物流订单模块
  • 三、系统设计
    • 3.1 用例设计
    • 3.2 数据库设计
      • 3.2.1 商品表
      • 3.2.2 快递公司表
      • 3.2.3 物流订单表
  • 四、系统展示
  • 五、核心代码
    • 5.1 查询商品
    • 5.2 查询快递公司
    • 5.3 查询物流订单
    • 5.4 新增物流订单
    • 5.5 快递收揽派签
  • 六、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL 的校园电商物流云平台,包含了商品管理模块、快递公司模块、物流订单模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,校园电商物流云平台基于角色的访问控制,给商家、物流公司、物流管理员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏


二、功能模块

互联网和电子商务行业已成为各产业升级创新的“发动机”,也是大众创业的肥沃土壤。各大院校纷纷在基于互联网或电子商务平台的大学生创业教育方面进行了探索和尝试。依托电子商务专业教育体系,立足于高校市场资源,利用新型的社群移动电商平台开展电子商务创业教育创新实践,取得了较好效果。本文旨在建立一个面向校园电商创业的物流云平台,采用Vue、SpringBoot、MySQL技术,包含数据中心模块、商品档案模块、快递公司模块、物流订单管理模块,对物流配送实现云平台管理。

在这里插入图片描述

本文设计的面向校园电商创业的物流云平台的包括了系统数据中心模块,用来存放管理系统通用的模块,另外分别设计了商品档案模块、快递公司模块、物流订单模块这三大模块,用于存放系统的核心业务逻辑。

2.1 数据中心模块

数据中心模块包含了对面向校园电商创业的物流云平台的基础模块,比如管理谁可以登录这套系统,记录这些人登录系统做了什么,不同的人拥有不同权限的管理。

2.2 商品数据模块

商品数据模块用于对商品的数据进行管理,其中包括商品ID、商品名称、商品规格、商品图片、商品备注、归属人ID、归属人、创建人等,可以通过此模块对商品数据进行添加、编辑更新、删除、查询操作。

2.3 快递公司模块

快递公司模块是对快递公司的档案信息进行管理,快递公司是快递运输的主要参与者,快递公司字段包括公司简称、公司全名、LOGO、营业执照、地址、经营范围、备注、创建人等,管理员可以新增快递公司的数据,用户可以查询管理员发布的快递公司信息。

2.4 物流订单模块

物流订单模块是对商品数据的实例化,有了商品后,用户就可以对商品进行创建物流订单,这就产生了物流订单模块,其中包括物流单号、下单人ID、下单人、收件人、收件电话、收件地址、下单日期、订单状态、发货物流等,用户可以进行物流下单,快递公司可以操作发货,管理员可以删除物流订单。


三、系统设计

3.1 用例设计

在这里插入图片描述

在这里插入图片描述

3.2 数据库设计

3.2.1 商品表

在这里插入图片描述

3.2.2 快递公司表

在这里插入图片描述

3.2.3 物流订单表

在这里插入图片描述


四、系统展示

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


五、核心代码

5.1 查询商品

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询商品")
public Result<IPage<Commodity>> getByPage(@ModelAttribute Commodity commodity ,@ModelAttribute PageVo page){QueryWrapper<Commodity> qw = new QueryWrapper<>();User currUser = securityUtil.getCurrUser();qw.eq("user_id",currUser.getId());if(!ZwzNullUtils.isNull(commodity.getTitle())) {qw.like("title",commodity.getTitle());}if(!ZwzNullUtils.isNull(commodity.getSpecs())) {qw.like("specs",commodity.getSpecs());}IPage<Commodity> data = iCommodityService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<Commodity>>().setData(data);
}

5.2 查询快递公司

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询快递公司")
public Result<IPage<CourierCompany>> getByPage(@ModelAttribute CourierCompany courierCompany ,@ModelAttribute PageVo page){QueryWrapper<CourierCompany> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(courierCompany.getTitle())) {qw.like("title",courierCompany.getTitle());}if(!ZwzNullUtils.isNull(courierCompany.getCompanyName())) {qw.like("company_name",courierCompany.getCompanyName());}IPage<CourierCompany> data = iCourierCompanyService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<CourierCompany>>().setData(data);
}

5.3 查询物流订单

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询物流单")
public Result<IPage<LogisticsOrder>> getByPage(@ModelAttribute LogisticsOrder logisticsOrder ,@ModelAttribute PageVo page){QueryWrapper<LogisticsOrder> qw = new QueryWrapper<>();User currUser = securityUtil.getCurrUser();QueryWrapper<User> userQw = new QueryWrapper<>();userQw.eq("id",currUser.getId());userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND role_id = '1536606659751841799'");if(iUserService.count(userQw) < 1L) {// 判断物流QueryWrapper<User> userQw2 = new QueryWrapper<>();userQw2.eq("id",currUser.getId());userQw2.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND role_id = '1703243045803266048'");if(iUserService.count(userQw2) > 0L) {// 物流qw.eq("company_id",currUser.getCompanyId());} else {// 商家qw.eq("user_id",currUser.getId());}}if(!ZwzNullUtils.isNull(logisticsOrder.getCollectUser())) {qw.like("collect_user",logisticsOrder.getCollectUser());}if(!ZwzNullUtils.isNull(logisticsOrder.getCollectAddress())) {qw.like("collect_address",logisticsOrder.getCollectAddress());}if(!ZwzNullUtils.isNull(logisticsOrder.getStatus())) {qw.eq("status",logisticsOrder.getStatus());}IPage<LogisticsOrder> data = iLogisticsOrderService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<LogisticsOrder>>().setData(data);
}

5.4 新增物流订单

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增物流单")
public Result<LogisticsOrder> insert(LogisticsOrder logisticsOrder){User currUser = securityUtil.getCurrUser();logisticsOrder.setUserId(currUser.getId());logisticsOrder.setUserName(currUser.getNickname());logisticsOrder.setDate(DateUtil.today());logisticsOrder.setStatus("待发货");logisticsOrder.setTime1("");logisticsOrder.setTime2("");logisticsOrder.setTime3("");String itemString = logisticsOrder.getItemString();List<LogisticsOrderItem> itemList = JSON.parseArray(itemString, LogisticsOrderItem.class);for (LogisticsOrderItem item : itemList) {Commodity commodity = iCommodityService.getById(item.getCommodityId());if(commodity == null) {return ResultUtil.error("商品不存在");}item.setCommodityName(commodity.getTitle() + " " + commodity.getSpecs());}iLogisticsOrderService.saveOrUpdate(logisticsOrder);for (LogisticsOrderItem item : itemList) {item.setOrderId(logisticsOrder.getId());iLogisticsOrderItemService.saveOrUpdate(item);}return new ResultUtil<LogisticsOrder>().setData(logisticsOrder);
}

5.5 快递收揽派签

@RequestMapping(value = "/changeStatus1", method = RequestMethod.POST)
@ApiOperation(value = "揽件")
public Result<Object> changeStatus1(@RequestParam String id){LogisticsOrder order = iLogisticsOrderService.getById(id);if(order == null) {return ResultUtil.error("物流单不存在");}order.setStatus("已揽件");order.setTime1(DateUtil.now());iLogisticsOrderService.saveOrUpdate(order);return ResultUtil.success();
}@RequestMapping(value = "/changeStatus2", method = RequestMethod.POST)
@ApiOperation(value = "派送")
public Result<Object> changeStatus2(@RequestParam String id){LogisticsOrder order = iLogisticsOrderService.getById(id);if(order == null) {return ResultUtil.error("物流单不存在");}order.setStatus("已派送");order.setTime2(DateUtil.now());iLogisticsOrderService.saveOrUpdate(order);return ResultUtil.success();
}@RequestMapping(value = "/changeStatus3", method = RequestMethod.POST)
@ApiOperation(value = "签收")
public Result<Object> changeStatus3(@RequestParam String id){LogisticsOrder order = iLogisticsOrderService.getById(id);if(order == null) {return ResultUtil.error("物流单不存在");}order.setStatus("已签收");order.setTime3(DateUtil.now());iLogisticsOrderService.saveOrUpdate(order);return ResultUtil.success();
}@RequestMapping(value = "/fa", method = RequestMethod.POST)
@ApiOperation(value = "发货")
public Result<Object> fa(@RequestParam String id,@RequestParam String com){LogisticsOrder order = iLogisticsOrderService.getById(id);if(order == null) {return ResultUtil.error("物流单不存在");}if(!ZwzNullUtils.isNull(com)) {CourierCompany cc = iCourierCompanyService.getById(com);if(cc == null) {return ResultUtil.error("快递公司不存在");}order.setCompanyId(cc.getId());order.setCompanyName(cc.getTitle());} else {QueryWrapper<CourierCompany> ccQw = new QueryWrapper<>();ccQw.orderByAsc("order_number");ccQw.last("limit 1");CourierCompany cc = iCourierCompanyService.getOne(ccQw);if(cc == null) {return ResultUtil.error("系统没有注册快递公司");}order.setCompanyId(cc.getId());order.setCompanyName(cc.getTitle());}order.setStatus("待揽收");iLogisticsOrderService.saveOrUpdate(order);return ResultUtil.success();
}

六、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/487155.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一种基于javax.max注解的能力增强技术

目录 现有框架的不足之处 我的改进内容 改进的成果 现有框架的不足之处 Max是javax.validation包中的一个常用注解&#xff0c;用于对传入参数进行最大值校验。但是其校验区间为闭区间&#xff0c;且不支持修改&#xff0c;如&#xff1a;Max(2)&#xff0c;表示表示传入参…

Codeforces Round 494 (Div. 3)

目录 A. Polycarps Pockets B. Binary String Constructing C. Intense Heat D. Coins and Queries E. Tree Constructing F. Abbreviation A. Polycarps Pockets 记录数量可以直接开一个桶即可然后求最大值 void solve(){cin>>n;vector<int> ton(105);int …

微服务篇之分布式事务

一、Seata架构 Seata事务管理中有三个重要的角色&#xff1a; TC (Transaction Coordinator) - 事务协调者&#xff1a;维护全局和分支事务的状态&#xff0c;协调全局事务提交或回滚。 TM (Transaction Manager) - 事务管理器&#xff1a;定义全局事务的范围、开始全局事务、…

Vulnhub-OSCP

信息收集 # nmap -sn 192.168.1.0/24 -oN live.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-07 17:49 CST Nmap scan report for 192.168.1.1 Host is up (0.00052s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for 192.168.1.…

JSON与GET请求参数互转工具

JSON与GET请求参数互转工具 - BTool在线工具软件&#xff0c;为开发者提供方便。 本工具能让你轻松地在JSON和GET请求参数之间互转。无论是将JSON数据转换为URL查询参数&#xff0c;还是将URL查询参数解析为JSON对象&#xff0c;它都能帮你快速完成。告别手动拼接和解析URL参数…

详解编译和链接!

目录 1. 翻译环境和运行环境 2. 翻译环境 2.1 预处理 2.2 编译 2.3 汇编 2.4 链接 3. 运行环境 4.完结散花 悟已往之不谏&#xff0c;知来者犹可追 创作不易&#xff0c;宝子们&#xff01;如果这篇文章对你们…

Django学习笔记-forms使用

1.创建forms.py文件,导入包 from django import forms from django.forms import fields from django.forms import widgets2. 创建EmployeeForm,继承forms.Form 3.创建testform.html文件 4.urls.py添加路由 5.views中导入forms 创建testform,编写代码 1).如果请求方式为GET,…

thinkphp5.1 phpexcel 批量导入导出

1.批量导入 public function importExcel(){$authority $this->getUserAuthority(order_input, batch_import);if ($authority[code] ! 0) {return json($authority);}$file request()->file(files);if(empty($file)){return printMsg(-1, "请上传文件");}/…

OpenHarmony 串口服务访问

项目介绍 本文档是在eTS项目hap包中实现串口访问的使用说明&#xff0c;通过JS接口开放给上层应用使用。 一、开发环境准备 安装OpenHarmony SDK 1. 在DevEco Studio菜单栏选择Tools->SDK Manager 2. OpenHarmony SDK选项中选择配备API版本进行安装 二、创建eTS项目 创…

【论文阅读笔记】Revisiting RCAN: Improved Training for Image Super-Resolution

论文地址&#xff1a;https://arxiv.org/abs/2201.11279 代码地址&#xff1a;https://github.com/zudi-lin/rcan-it 论文小结 本文的工作&#xff0c;就是重新审视之前的RCAN&#xff0c;然后做实验来规范化SR任务的训练流程。 此外&#xff0c;作者得出一个结论&#xff1a;…

恒创科技:香港服务器和香港云服务器哪个好啊?

"香港服务器"和"香港云服务器"&#xff0c;是两种不同的香港区域的服务器&#xff0c;免备案&#xff0c;都有各自的优势和适用场景&#xff0c;取决于您的需求和预算。以下是它们的一些区别和特点&#xff1a; 香港服务器&#xff1a; 物理服务器&#xf…

【算法与数据结构】回溯算法、贪心算法、动态规划、图论(笔记三)

文章目录 七、回溯算法八、贪心算法九、动态规划9.1 背包问题9.2 01背包9.3 完全背包9.4 多重背包 十、图论10.1 深度优先搜索10.2 广度优先搜索10.3 并查集 最近博主学习了算法与数据结构的一些视频&#xff0c;在这个文章做一些笔记和心得&#xff0c;本篇文章就写了一些基础…