基于SSM的校园代购服务订单管理系统

news2024/12/23 18:45:57

末尾获取源码
开发语言:Java
Java开发工具:JDK1.8
后端框架:SSM
前端:采用Vue技术开发
数据库:MySQL5.7和Navicat管理工具结合
服务器:Tomcat8.5
开发软件:IDEA / Eclipse
是否Maven项目:是


目录

一、项目简介

二、系统开发目标

三、系统项目截图

管理员登录

用户管理

服务业务管理

下单信息管理

退单信息管理

接单结算管理

系统管理

用户注册、用户登陆

前台首页浏览

服务业务

个人中心

用户功能模块

个人中心

下单信息管理

接单员注册、接单员登陆

首页

下单信息管理

接单信息管理

四、核心代码

4.1登录相关

4.2文件上传

4.3封装


一、项目简介

在新发展的时代,众多的软件被开发出来,给用户带来了很大的选择余地,而且学生越来越追求更个性的需求。在这种时代背景下,学生对校园代购服务订单管理越来越重视,更好的实现校园代购服务的有效发挥,本文将通过校园代购服务订单管理系统的信息,分析在日常生活中对代购服务存在哪些问题探讨出进一步提升工作效率,管理能力的对策。

系统采用了java技术,将所有模块采用以浏览器交互的模式,选择MySQL作为系统的数据库,开发工具选择eclipse来进行系统的设计。基本实现了校园代购服务订单管理系统应有的主要功能模块,本系统有管理员、用户及接单员,管理员:首页、个人中心、用户管理、接单员管理、业务类型管理、服务业务管理、下单信息管理、退单信息管理、接单信息管理、接单结算管理、留言板管理、系统管理;接单员;首页、个人中心、下单信息管理、接单信息管理、接单结算管理;用户;首页、个人中心、下单信息管理、退单信息管理、接单信息管理;前台首页;首页、服务业务、校园资讯、留言反馈、个人中心、后台管理等功能。

对系统进行测试后,改善了程序逻辑和代码。同时确保系统中所有的程序都能正常运行,所有的功能都能操作,本系统的开发获取校园代购服务订单管理系统信息能够更加方便快捷,同时也使校园代购服务订单管理系统信息变的更加系统化、有序化。系统界面较友好,易于操作。


二、系统开发目标

对于网站的设计,要保证主界面的整洁有序,能够抓住人的眼球,不会产生视觉疲劳,更重要的是,带给人容易操作的直观感受,这样才能留住用户去进行使用,增加三分热度的延续期。在系统的后台设计上,要采取非常简洁有效的技术,开发方便的同时,便于以后的维护。我们不但要确保所有的功能都能够满足用户的需求,用户还要能自己主动通过网站去实现想要的操作,而管理者的简单通过网站对用户的需求情况进行了解和管理。为达到这一目的,提出以下目标:

(1)实现管理系统信息关系的系统化、规范化和自动化;

(2)减少维护人员的工作量以及实现用户对信息的控制和管理。

(3)方便查询信息及管理信息等;

(4)通过网络操作,改善处理问题的效率,提高操作人员利用率;

(5)考虑到用户多样性特点,要求界面简单,操作简便。



三、系统项目截图

管理员登录

管理员输入个人的用户名、密码登录系统,这时候系统的数据库就会在进行查找相关的信息,如果我们输入的用户名、密码不正确,数据库就会提示出错误的信息提示,同时会提示管理员重新输入自己的用户名、密码,直到用户名密码输入成功后,会提登录成功的信息。

用户管理

管理员对用户管理进行获取用户账号、用户姓名、性别、年龄、头像、用户手机、用户地址等信息进行详情、删除、修改等操作。

 

服务业务管理

管理员对服务业务进行获取业务名称、业务类型、封面图片、承接时间、业务详情、价格进行详情、删除、修改以及查看等操作

 

下单信息管理

管理员对下单信息理进行查看支付、审核,查看详情、修改以及删除等操作。

 

退单信息管理

管理员可以对退单信息管理进行审核、进行详情查看、修改、删除等操作。

 

接单结算管理

管理员可以对接单结算管理进行查看详情进行修改、删除等操作。

 

系统管理

系统管理:管理员通过系统管理页面查看轮播图/校园资讯等进行上传图片,资讯发布进行添加、删除、修改以及查看并对整个系统进行维护等操作。

 

用户注册、用户登陆

用户登录、用户注册,通过填写用户账号、用户姓名、性别、年龄、用户手机、用户地址等信息进行注册、填写用户账号、密码进行登录.

 

前台首页浏览

用户进入前台首页查看首页、服务业务、校园资讯、留言反馈、个人中心、后台管理等信息操作内容 

服务业务

用户通过服务业务内容列表查看业务名称、业务类型、封面图片、价格等信息可进行下载等操作 

 

个人中心

个人中心,用户在个人信息页面查看用户账号、密码、用户姓名、性别、年龄、头像、用户手机、用户地址,可进行信息更新 

用户功能模块

用户进入后台页面查看首页、个人中心、下单信息管理、退单信息管理、接单信息管理,进行查看等操作。 

个人中心

用户在个人信息页面可以查看用户账号、用户姓名、性别、年龄、头像、用户手机、用户地址可进行修改操作。 

下单信息管理

用户在下单信息管理页面可以查看管理员审核,用户进行查看详情、退单、删除操作

 

接单员注册、接单员登陆

接单员注册接单员管理,接单员通过填写接单员账号、密码、接单员姓名、性别、年龄、接单员手机等信息进行注册、填写账号、密码进行登录 

 

首页

接单员进入后台页面查看首页、个人中心、下单信息管理、退单信息管理、接单信息管理,进行查看等操作。

下单信息管理

接单员在下单信息管理页面可以查看用户支付情况、管理员审核,接单员可进行查看详情、删除操作

 

接单信息管理

接单员在接单信息管理页面可以查看详情、修改操作。


四、核心代码

4.1登录相关


package com.controller;


import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

4.2文件上传

package com.controller;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;

/**
 * 上传文件映射表
 */
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{
	@Autowired
    private ConfigService configService;
	/**
	 * 上传文件
	 */
	@RequestMapping("/upload")
	public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
		if (file.isEmpty()) {
			throw new EIException("上传文件不能为空");
		}
		String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
		File path = new File(ResourceUtils.getURL("classpath:static").getPath());
		if(!path.exists()) {
		    path = new File("");
		}
		File upload = new File(path.getAbsolutePath(),"/upload/");
		if(!upload.exists()) {
		    upload.mkdirs();
		}
		String fileName = new Date().getTime()+"."+fileExt;
		File dest = new File(upload.getAbsolutePath()+"/"+fileName);
		file.transferTo(dest);
		FileUtils.copyFile(dest, new File("C:\\Users\\Desktop\\jiadian\\springbootl7own\\src\\main\\resources\\static\\upload"+"/"+fileName));
		if(StringUtils.isNotBlank(type) && type.equals("1")) {
			ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
			if(configEntity==null) {
				configEntity = new ConfigEntity();
				configEntity.setName("faceFile");
				configEntity.setValue(fileName);
			} else {
				configEntity.setValue(fileName);
			}
			configService.insertOrUpdate(configEntity);
		}
		return R.ok().put("file", fileName);
	}
	
	/**
	 * 下载文件
	 */
	@IgnoreAuth
	@RequestMapping("/download")
	public ResponseEntity<byte[]> download(@RequestParam String fileName) {
		try {
			File path = new File(ResourceUtils.getURL("classpath:static").getPath());
			if(!path.exists()) {
			    path = new File("");
			}
			File upload = new File(path.getAbsolutePath(),"/upload/");
			if(!upload.exists()) {
			    upload.mkdirs();
			}
			File file = new File(upload.getAbsolutePath()+"/"+fileName);
			if(file.exists()){
				/*if(!fileService.canRead(file, SessionManager.getSessionUser())){
					getResponse().sendError(403);
				}*/
				HttpHeaders headers = new HttpHeaders();
			    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    
			    headers.setContentDispositionFormData("attachment", fileName);    
			    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
	}
	
}

4.3封装

package com.utils;

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

/**
 * 返回数据
 */
public class R extends HashMap<String, Object> {
	private static final long serialVersionUID = 1L;
	
	public R() {
		put("code", 0);
	}
	
	public static R error() {
		return error(500, "未知异常,请联系管理员");
	}
	
	public static R error(String msg) {
		return error(500, msg);
	}
	
	public static R error(int code, String msg) {
		R r = new R();
		r.put("code", code);
		r.put("msg", msg);
		return r;
	}

	public static R ok(String msg) {
		R r = new R();
		r.put("msg", msg);
		return r;
	}
	
	public static R ok(Map<String, Object> map) {
		R r = new R();
		r.putAll(map);
		return r;
	}
	
	public static R ok() {
		return new R();
	}

	public R put(String key, Object value) {
		super.put(key, value);
		return this;
	}
}

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

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

相关文章

日本SolarView Compact光伏发电测量系统 目录遍历漏洞复现(CVE-2023-40924)

日本SolarView Compact光伏发电测量系统 目录遍历漏洞复现CVE-2023-40924 一. 系统简介二.漏洞描述三.影响版本四.fofa查询语句五.漏洞复现六.POC&EXP七、修复建议 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或…

使用java连接Libvirtd

基于springboot web 一、依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId>&l…

网站优化如何更新文章才有效果,有技巧的更新SEO优化文章

很多新手SEO人员都不太清楚网站为什么要每天更新文章&#xff1f;每天更新文章的主要目的是让新站更快地通过审核期&#xff0c;让老网站避免被降权。同时拥有更多的关键词排名&#xff0c;整体提升网站的流量。 提供新鲜和有用的内容&#xff1a;搜索引擎非常重视新鲜和有用的…

长胜证券:美科技股大跌,甲骨文一夜蒸发超3000亿

当地时间9月12日&#xff0c;美股三大股指跌落&#xff0c;其中&#xff0c;道指跌0.05%&#xff0c;标普指数跌0.57%&#xff0c;纳斯达克指数跌1.04%。本周商场重视通胀与顾客开支等经济数据。当天发布的数据显现&#xff0c;美国8月份线上商品价格创40个月最大降幅。美国房租…

四川Certum便宜多域名SSL证书

多域名SSL证书是一种安全协议&#xff0c;通过SSL/TLS协议对多个域名进行加密传输&#xff0c;实现网站的安全访问和数据传输。它不仅可以保护网站的信息安全&#xff0c;还可以提高网站的信任度和排名 。 而Certum是正规的SSL证书颁发机构&#xff0c;旗下SSL证书产品众多&…

docker 镜像内执行命令显示:You requested GPUs: [0] But your machine only has: []

目录 问题描述&#xff1a; 问题解决&#xff1a; 问题描述&#xff1a; 在docker 镜像环境中&#xff0c;执行“docker exec -it container_name /bin/bash “进入容器之后&#xff0c;执行对应的python命令&#xff0c;显示You requested GPUs: [0] But your machine only…

基于Java+SpringBoot+Vue+uniapp校园点餐小程序(包含协同过滤算法和会员系统,强烈推荐!)

校园点餐小程序 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序&#xff08;小蔡coding&#xff09;2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 系统功能结构设计4.2 主要功能描述 五…

【【萌新编写risc-v之软件的学习使用】】

萌新编写risc-v软件的学习使用 对于vscode我其实没什么好说的 就是先配置好环境 其实vscde作为一个编译器的软件 其实并不需要指望能往里面加载多少功能 我们需要做的就是赋予编辑器更好用的功能和体验 有些人会在vscode里面甚至加入波形 仿真 我觉得不如交给 vivado来用 在vs…

车载摄像头进入「多元」增长周期,哪些图像传感器厂商领跑竞争力

随着单车搭载摄像头数量的增加&#xff0c;以及对于摄像头性能要求的提高&#xff0c;汽车级图像传感器&#xff08;CIS&#xff09;市场在2022年成为仅次于手机行业的第二大应用领域。 高工智能汽车研究院监测数据显示&#xff0c;2023年1-6月中国市场&#xff08;不含进出口…

Java基础面试整理

Java基础面试 摘要1. 数据类型和变量2. 控制流语句3. 面向对象编程4. 异常处理5. 集合框架6. 多线程7. 输入输出流8. 设计模式9. 字符串操作10. 数组11. 枚举&#xff08;Enum&#xff09;12. 包&#xff08;Package&#xff09;和导入&#xff08;Import&#xff09;13. 接口&…

飞行动力学 - 第22节-动稳定性与运动方程 之 基础点摘要

飞行动力学 - 第22节-动稳定性与运动方程 之 基础点摘要 1. 稳定性定义2. 动稳定性示意图3. 数值仿真结构框图4. 运动响应类型5. 参考资料 1. 稳定性定义 飞机在平衡状态&#xff08;静止或匀速运动&#xff09;受到扰动&#xff1a; 有回到初始状态的趋势&#xff1b;静稳定…

网页录屏方法推荐,满足你的各种录制需求

“网页可以录屏吗&#xff1f;在浏览器观看了一篇教程&#xff0c;但是不能保存&#xff0c;就想用录屏的方法录制下来&#xff0c;可是不知道网页怎么录屏&#xff0c;家人们帮帮忙&#xff0c;非常感谢&#xff01;” 网页录制是将浏览器中的内容录制成视频的过程&#xff0…

算法分析与设计23.9.12晚第一节

23.9.12晚第一节&#xff1a; 解决问题 问题结构 解决问题思路1&#xff1a;(常规思路) Q0: The simplest case. 先找到最简单的情况。 Q1: Decomposed.(INPUT DS, OUTPUT DS) 观察输入输出的数据结构&#xff0c;尝试分解问题。 Q2: Solution neighborhood. 尝试邻域解的变…

机器学习技术(八)——朴素贝叶斯算法实操

机器学习技术&#xff08;八&#xff09;——朴素贝叶斯算法实操 文章目录 机器学习技术&#xff08;八&#xff09;——朴素贝叶斯算法实操一、引言二、导入相关依赖库三、读取并查看数据四、数据预处理五、构建两种模型进行比较1、只考虑Dayofweek以及District2、加入犯罪时间…

MySQL日常使用记录

1.时间 1.1.时间格式化 yyyy-MM-dd HH:mm:ss格式&#xff0c;如下&#xff1a; select date_format(now(), %Y-%m-%d %H:%i:%s) from dual;date_format函数是将date类型按照指定的格式转换成varchar类型 1.2.日期加减 当前天 1 天 select date_format(now(), %Y-%m-%d), …

【LeetCode-简单题】383. 赎金信

文章目录 题目方法一&#xff1a;数组方法二&#xff1a;哈希表 题目 方法一&#xff1a;数组 先将magazine中的字符转换为26大小的数组中字符的数量然后再遍历ransomNote中的字符&#xff0c;每遍历一个就让字符数量- 1&#xff0c;若字符数量<0 了 &#xff0c;说明magaz…

9.12号

实现一个图形类&#xff08;Shape&#xff09;&#xff0c;包含受保护成员属性&#xff1a;周长、面积&#xff0c; 公共成员函数&#xff1a;特殊成员函数书写 定义一个圆形类&#xff08;Circle&#xff09;&#xff0c;继承自图形类&#xff0c;包含私有属性&#xff1a;半…

java.lang.NoClassDefFoundError: com/sun/jna/Callback

添加依赖 <dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>5.13.0</version></dependency> 其他版本查看 https://mvnrepository.com/artifact/net.java.dev.jna/jna

leetcode 第454题.四数相加II

给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 454. 四数相加 II - 力扣&#xff08;LeetCode&#xf…

荣23转债上市价格预测

荣23转债113676 基本信息 转债名称&#xff1a;荣23转债&#xff0c;评级&#xff1a;AA-&#xff0c;发行规模&#xff1a;5.76亿元。 正股名称&#xff1a;荣晟环保&#xff0c;今日收盘价&#xff1a;15.64元&#xff0c;转股价格&#xff1a;15.74元。 当前转股价值 转债面…