N-131基于jsp,ssm物流快递管理系统

news2024/11/17 1:54:02

开发工具:eclipse,jdk1.8

服务器:tomcat7.0

数据库:mysql5.7

技术: spring+springMVC+mybaits+EasyUI

项目包括用户前台和管理后台两部分,功能介绍如下: 

一、用户(前台)功能:

用户进入物流快递管理系统后,可以进行在线下单,下单完成后,可以查询订单状态;接着,用户可以浏览相关物流快递的新闻资讯;用户可以浏览网站提供的业务范围;最后,用户如果需要投诉或者反馈信息,可以给网站在线留言。

在线下单:用户可以在线下单,填写发货人、收货人和货物相关信息即可。

查询订单:用户下单后,可以输入订单号,查询物流快递订单的状态。

浏览新闻:用户可以在网站上,浏览相关物流快递的最新资讯。

浏览业务:用户可以浏览网站上的业务介绍,了解业务范围,明确自己的物流快递需求。

在线留言:用户可以给网站在线留言,填写相关信息即可。

二、管理员(后台)功能:

管理员首先登录系统,可以进行菜单管理、角色管理、用户管理、订单管理、新闻管理、留言管理、查看日志。

菜单管理:管理员可以增、删、改和查菜单信息。

角色管理:对角色信息进行管理,可以增、删、改和查角色信息。

用户管理:对用户信息进行管理,可以添加、修改、查询和删除用户信息。

订单管理:对订单信息进行管理,可以添加、修改、查询和删除订单信息。

新闻管理:对新闻进行管理,可以添加、修改、查询和删除新闻资讯。

留言管理:对留言信息进行管理,可以修改和删除留言信息。

查看日志:可以查看系统的详细日志信息。

文档截图:

前台用户截图:

后台管理员截图: 

package com.ischoolbar.programmer.controller.admin;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.ischoolbar.programmer.entity.admin.Order;
import com.ischoolbar.programmer.entity.admin.OrderStatus;
import com.ischoolbar.programmer.page.admin.Page;
import com.ischoolbar.programmer.service.admin.OrderService;
import com.ischoolbar.programmer.service.admin.OrderStatusService;

/**
 * 订单管理控制器
 * @author llq
 *
 */
@RequestMapping("/admin/order")
@Controller
public class AdminOrderController {
	
	@Autowired
	private OrderService orderService;
	@Autowired
	private OrderStatusService orderStatusService;
	
	/**
	 * 订单列表页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/list",method=RequestMethod.GET)
	public ModelAndView list(ModelAndView model){
		model.setViewName("order/list");
		return model;
	}
	
	/**
	 * 获取订单列表
	 * @param page
	 * @param content
	 * @param roleId
	 * @param sex
	 * @return
	 */
	@RequestMapping(value="/list",method=RequestMethod.POST)
	@ResponseBody
	public Map<String, Object> getList(Page page,
			@RequestParam(name="sender",required=false,defaultValue="") String sender,
			@RequestParam(name="senderMobile",required=false,defaultValue="") String senderMobile,
			@RequestParam(name="reciever",required=false,defaultValue="") String reciever,
			@RequestParam(name="recieverMobile",required=false,defaultValue="") String recieverMobile
			){
		Map<String, Object> ret = new HashMap<String, Object>();
		Map<String, Object> queryMap = new HashMap<String, Object>();
		queryMap.put("sender", sender);
		queryMap.put("senderMobile", senderMobile);
		queryMap.put("reciever", reciever);
		queryMap.put("recieverMobile", recieverMobile);
		queryMap.put("offset", page.getOffset());
		queryMap.put("pageSize", page.getRows());
		ret.put("rows", orderService.findList(queryMap));
		ret.put("total", orderService.getTotal(queryMap));
		return ret;
	}
	
	/**
	 * 获取订单状态列表
	 * @param page
	 * @param orderSn
	 * @return
	 */
	@RequestMapping(value="/status_list",method=RequestMethod.POST)
	@ResponseBody
	public Map<String, Object> getStatusList(Page page,
			@RequestParam(name="orderSn",required=false,defaultValue="") String orderSn
			){
		Map<String, Object> ret = new HashMap<String, Object>();
		Map<String, Object> queryMap = new HashMap<String, Object>();
		queryMap.put("orderSn", orderSn);
		queryMap.put("offset", page.getOffset());
		queryMap.put("pageSize", page.getRows());
		ret.put("rows", orderStatusService.findList(queryMap));
		ret.put("total", orderStatusService.getTotal(queryMap));
		return ret;
	}
	
	/**
	 * 添加订单
	 * @param user
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.POST)
	@ResponseBody
	public Map<String, String> add(Order order){
		Map<String, String> ret = new HashMap<String, String>();
		if(order == null){
			ret.put("type", "error");
			ret.put("msg", "请填写正确的订单信息!");
			return ret;
		}
		order.setSn(System.currentTimeMillis()+"");
		order.setCreateTime(new Date());
		if(orderService.add(order) <= 0){
			ret.put("type", "error");
			ret.put("msg", "订单添加失败,请联系管理员!");
			return ret;
		}
		ret.put("type", "success");
		ret.put("msg", "订单添加成功!");
		return ret;
	}
	
	/**
	 * 编辑订单
	 * @param order
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.POST)
	@ResponseBody
	public Map<String, String> edit(Order order){
		Map<String, String> ret = new HashMap<String, String>();
		if(order == null){
			ret.put("type", "error");
			ret.put("msg", "请填写正确的订单信息!");
			return ret;
		}
		if(orderService.edit(order) <= 0){
			ret.put("type", "error");
			ret.put("msg", "订单编辑失败,请联系管理员!");
			return ret;
		}
		ret.put("type", "success");
		ret.put("msg", "订单编辑成功!");
		return ret;
	}
	
	/**
	 * 添加订单状态信息
	 * @param orderStatus
	 * @return
	 */
	@RequestMapping(value="/add_status",method=RequestMethod.POST)
	@ResponseBody
	public Map<String, String> addStatus(OrderStatus orderStatus){
		Map<String, String> ret = new HashMap<String, String>();
		if(orderStatus == null){
			ret.put("type", "error");
			ret.put("msg", "请填写正确的订单状态信息!");
			return ret;
		}
		orderStatus.setCreateTime(new Date());
		if(orderStatusService.add(orderStatus) <= 0){
			ret.put("type", "error");
			ret.put("msg", "订单状态添加失败,请联系管理员!");
			return ret;
		}
		ret.put("type", "success");
		ret.put("msg", "订单状态添加成功!");
		return ret;
	}
	
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UE5 Android下载zip文件并解压缩到指定位置

一、下载是使用市场的免费插件 二、解压缩是使用市场的免费插件 三、Android路径问题 windows平台下使用该插件没有问题&#xff0c;只是在Android平台下&#xff0c;只有使用绝对路径才能进行解压缩&#xff0c;所以如何获得Android下的绝对路径&#xff1f;增加C文件获得And…

生态扩展:Flink Doris Connector

生态扩展&#xff1a;Flink Doris Connector 官网地址&#xff1a; https://doris.apache.org/zh-CN/docs/dev/ecosystem/flink-doris-connector flink的安装&#xff1a; tar -zxvf flink-1.16.0-bin-scala_2.12.tgz mv flink-1.16.0-bin-scala_2.12.tgz /opt/flinkflink环境…

【c++|opencv】二、灰度变换和空间滤波---5.中值滤波

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 1. 中值滤波 #include<iostream> #include<opencv2/opencv.hpp> #include"Salt.h"using namespace cv; using namespace std;voi…

NEFU离散数学实验4-数论

相关概念 离散数学中的数论相关概念和公式如下&#xff1a; 1.最大公约数(GCD)&#xff1a;两个整数a和b的最大公约数是能够同时整除a和b的最大正整数&#xff0c;记作GCD(a, b)。 2.最小公倍数(LCM)&#xff1a;两个整数a和b的最小公倍数是能够同时整除a和b的最小正整数&#…

MySQL-Galera-Cluster集群详细介绍

目录 一、什么是Mysql集群&#xff1f;1.单节点mysql存在的常见问题2.mysql集群介绍3.Mysql集群的优点和风险 二、Mysql集群的一些疑问1.mysql的AB复制和Galera Cluster有什么区别&#xff1f;2.什么情况下适用AB复制&#xff0c;什么情况下使用Galera cluster&#xff1f;3.可…

给出n个字母(a-z),找出出现次数最多的字母并输出。(附ASCII码表)

Result01&#xff1a; 两层for循环枚举&#xff0c;时间复杂度为O(N2)&#xff0c;空间复杂度O(1)。 //暴力解&#xff1a;public static char Result01(char[] chars) {int maxNums 0;//保存最大出现次数int index 0;//记录出现次数最多的元素在数组中的下标for (int i …

初识【Java类和对象】

目录 1.面向对象的初步认知 1.1什么是面向对象? 1.2面向对象与面向过程 2.类定义和使用 2.1简单认识类 2.2类的定义格式 3.类的实例化 3.1什么是实例化 3.2类和对象的说明 4.this引用 4.1为什么要有this的引用 4.2什么是this引用 4.3this引用的特性 &#x1…

3 — NLP 中的标记化:分解文本数据的艺术

一、说明 这是一个系列文章的第三篇文章&#xff0c; 文章前半部分分别是&#xff1a; 1 — NLP 的文本预处理技术2 — NLP中的词干提取和词形还原&#xff1a;文本预处理技术 在本文中&#xff0c;我们将介绍标记化主题。在开始之前&#xff0c;我建议您阅读我之前介绍…

【机器学习合集】模型设计之注意力机制动态网络 ->(个人学习记录笔记)

文章目录 注意力机制1. 注意力机制及其应用1.1 注意力机制的定义1.2 注意力机制的典型应用 2. 注意力模型设计2.1 空间注意力机制2.2 空间注意力模型2.3 通道注意力机制2.4 空间与通道注意力机制2.5 自注意力机制2.5 级联attention 动态网络1. 动态网络的定义2. 基于丢弃策略的…

高校教务系统登录页面JS分析——西安电子科技大学

高校教务系统密码加密逻辑及JS逆向 本文将介绍西安电子科技大学高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文&#xff0c;你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 &#x1f31f;PS&#xff1a;我还以为和…

Linux服务器使用GPU技巧

进行深度学习实验的时候用pytorch-gpu&#xff0c;经常要与GPU打交道&#xff1b; 所以经常遇到奇奇怪怪的问题&#xff1b; 查看GPU占用情况 watch -n 10 nvidia-smi 使用技巧 torch.nn.DataParallel() CLASStorch.nn.DataParallel(module, device_idsNone, output_devic…

部署Kubernetes(k8s)多主的高可用集群

文章目录 文档说明网络拓扑IP地址规划 安装步骤环境准备关闭防火墙关闭SELinux关闭Swap分区修改主机名称解析设置主机名称转发 IPv4 并让 iptables 看到桥接流量升级操作系统内核导入elrepo gpg key安装elrepo YUM源仓库安装kernel-lt版本设置grub2默认引导为0重新生成grub2引导…

关于CSS的几种字体悬浮的设置方法

关于CSS的几种字体悬浮的设置方法 1. 鼠标放上动态的2. 静态的&#xff08;位置看上悬浮&#xff09;2.1 参考QQ邮箱2.2 参考知乎 1. 鼠标放上动态的 效果如下&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><met…

使用复合机器人有哪些注意事项

随着科技的快速发展&#xff0c;复合机器人在各个领域得到了广泛应用。复合机器人可以完成多种任务&#xff0c;具备高效、精准、灵活等优势。然而&#xff0c;在使用复合机器人时&#xff0c;我们也需要注意一些事项&#xff0c;以确保安全和有效地使用这些机器人。 一、安装要…

OpenCV - C++实战(05) — 颜色检测

目录 第5章 颜色检测 5.1 实现原理 5.2 Lab颜色模型 5.3 cv :: threshold() 阈值函数 5.4 计算图像之间的距离 5.4.1 公式计算 5.4.2 cv::absdiff() 5.4.3 cv::floodFill() 5.5 完整代码 Github代码地址&#xff1a;GitHub - Qinong/OpenCV 第5章 颜色检测 颜色检测…

腾讯云轻量级服务器哪个镜像比较好?

腾讯云轻量应用服务器镜像是什么&#xff1f;镜像就是操作系统&#xff0c;轻量服务器镜像系统怎么选择&#xff1f;如果是用来搭建网站腾讯云百科txybk.com建议选择选择宝塔Linux面板腾讯云专享版&#xff0c;镜像系统根据实际使用来选择&#xff0c;腾讯云百科来详细说下腾讯…

Express框架开发接口之实现分页功能

1、是什么&#xff1f; 在我们做数据查询的时候&#xff0c;如果数据量很大&#xff0c;比如几万条数据&#xff0c;放在一个页面显示的话显然不友好&#xff0c;这时候就需要采用分页显示的形式&#xff0c;如每次只显示10条数据 要实现分页功能&#xff0c;实际上就是从结…

代码随想录Day33 LeetCode T62不同路径 LeetCode T63 不同路径II

前言 动规五部曲 1.确定dp数组含义 2.确定递推公式 3.初始化数组 4.确定遍历方式 5.打印dp数组查看分析问题 LeetCode T62 不同路径 题目链接:62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 题目思路: 注:n行m列而不是m行n列 1.确定dp数组含义 代表到达此下标有多少条…

云尘-AI-Web-1.0

继续&#xff01; 开扫 继续先测试web sql注入 直接sqlmap跑 通过注入 &#xff08;sqlmap查询方式省略&#xff09; 存在systemuser 不知道会不会是电脑的密码 我们解密一下然后直接试试看 然后失败 这里就没有思路了 但是我们刚刚存在一个目录 我们再扫扫看 无果 换另一个…

C# Onnx DBNet 检测条形码

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Numerics; using System.Runtime.InteropServices.…