【Java毕设项目】基于SpringBoot+Vue校园便利平台的设计与实现

博主主页: 一季春秋
博主简介: 专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。
**主要内容:**毕业设计(Java项目、小程序等)、简历模板、学习资料、面试题库、技术咨询。

🍅文末获取联系🍅

精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟

SpringBoot+Vue项目持续更新中

http://t.csdn.cn/1mgm8

目录

一、项目介绍

二、项目主要技术

三、平台设计

[3.1 平台架构设计](#3.1 平台架构设计)

[3.2 平台整体设计](#3.2 平台整体设计)

四、系统实现

[4.1 系统前台实现](#4.1 系统前台实现)

[4.1.1 系统首页功能](#4.1.1 系统首页功能)

[4.1.2 二手商品功能](#4.1.2 二手商品功能)

[4.1.3 校园跑腿功能](#4.1.3 校园跑腿功能)

[4.1.4 购物车功能](#4.1.4 购物车功能)

[4.1.5 我的订单功能](#4.1.5 我的订单功能)

[4.2 用户后台管理功能](#4.2 用户后台管理功能)

[4.2.1 后台管理功能](#4.2.1 后台管理功能)

[4.2.2 跑腿领单管理](#4.2.2 跑腿领单管理)

[4.3 管理员功能实现](#4.3 管理员功能实现)

[4.3.1 管理员主页面](#4.3.1 管理员主页面)

[4.3.2 用户管理](#4.3.2 用户管理)

[4.3.3 二手商品管理](#4.3.3 二手商品管理)

[4.3.4 校园跑腿管理](#4.3.4 校园跑腿管理)

[4.3.5 完成订单管理](#4.3.5 完成订单管理)

五、实现代码

[5.1 二手商品关键代码](#5.1 二手商品关键代码)


一、项目介绍

校园便利平台的开发就是为了解决二手商品管理的问题,平台开发是基于Java语言编写实现,用Mysql数据库搭建存储校园便利平台的数据。实现后的校园便利平台基于用户需求分析搭建的,并且会有二手商品、校园跑腿、通知公告、后台管理、购物车、个人中心等基本功能。不仅能满足人们对于校园便利的需求,同时具有广阔的发展前景。

二、项目主要技术

开发语言:Java

使用框架:spring boot

前端技术:JavaScript、Vue 、css3

开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code

数据库:MySQL 5.7/8.0

数据库管理工具:phpstudy/Navicat

JDK版本:jdk1.8

Maven: apache-maven 3.8.1-bin

三、平台设计

3.1 平台架构设计

整个平台采用B/S结构,用户可在浏览器中完成和整个平台的交互。

用户在校园便利平台的浏览器界面进行的操作,浏览器操作传到服务器端,服务器端调用后台数据库,反馈给浏览器端。

平台架构如图所示:

3.2 平台整体设计

校园便利平台实现用户登录,查询信息,修改个人信息等。所有功能都通过与后台服务器的数据交互来完成的。

具体的软件功能结构图如图所示:

四、系统实现

4.1 系统前台实现

4.1.1 系统首页功能

打开系统的网址后,首先看到的就是首页界面。在这里能够看到校园便利平台的设计与实现的导航条,通过导航条导航进入各功能展示页面进行操作。系统首页界面如图所示:

4.1.2 二手商品功能

在二手商品页面的输入栏中输入商品名称、品牌和价格进行查询,可以查看到二手商品详细信息;并进行添加到购物车、立即购买、评论或收藏操作;二手商品页面如图所示:

商品详细信息

4.1.3 校园跑腿功能

在校园跑腿页面的输入栏中输入账号和选择订单状况进行查询,可以查看到校园跑腿详细信息;并进行领单、评论或收藏操作;校园跑腿页面如图所示:

4.1.4 购物车功能

在购物车页面可以查看到商品名称、图片、价格、数量、总价等详细信息,并进行点击购买或删除操作;购物车页面如图所示:

4.1.5 我的订单功能

在我的订单页面可以对未支付、已支付、已发货、已完成、已退款和已取消订单进行详细操作;如图所示:

4.2 用户后台管理功能

4.2.1 后台管理功能

用户注册登录进入系统首页,点击后台管理可以对个人中心、校园跑腿管理、跑腿领单管理、完成订单管理、评价信息管理等进行操作。管理员主页面如图所示:

4.2.2 跑腿领单管理

在跑腿领单页面输入账号、领取账号和选择订单状态进行查询跑腿领单列表,并根据需要对跑腿领单详细信息进行详情或完成登记操作;如图所示

4.3 管理员功能实现

管理员登录,在登录页面正确输入用户名和密码后,点击登录进入操作系统进行操作;如图所示。

4.3.1 管理员主页面

主要功能包括对个人中心、用户管理、商品类型管理、二手商品管理、校园跑腿管理、跑腿领单管理、完成订单管理、评价信息管理、系统管理、订单管理等进行操作。管理员主页面如图5-9所示:

4.3.2 用户管理

在用户页面输入姓名和选择性别进行查询、新增或删除用户列表,并根据需要对用户详细信息进行详情、修改或删除操作;如图所示:

4.3.3 二手商品管理

在二手商品页面输入商品名称、品牌和价格进行查询、新增或删除二手商品列表,并根据需要对二手商品详细信息进行详情、修改、查看评论或删除操作;如图所示:

4.3.4 校园跑腿管理

在校园跑腿页面输入账号和选择订单状况进行查询、新增或删除校园跑腿列表,并根据需要对校园跑腿详细信息进行详情、领单、修改或删除操作;如图所示:

4.3.5 完成订单管理

在完成订单页面输入标题、账号和领取账号进行查询或删除完成订单列表,并根据需要对完成订单详细信息进行详情、评价、修改或删除操作;如图所示:

五、实现代码

5.1 二手商品关键代码

java 复制代码
/**
 * 二手商品
 * 后端接口
 * @author 
 * @email 
 * @date 2023-05-22 09:32:15
 */
@RestController
@RequestMapping("/ershoushangpin")
public class ErshoushangpinController {
    @Autowired
    private ErshoushangpinService ershoushangpinService;

    @Autowired
    private StoreupService storeupService;

    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,ErshoushangpinEntity ershoushangpin,
                @RequestParam(required = false) Double pricestart,
                @RequestParam(required = false) Double priceend,
		HttpServletRequest request){
        EntityWrapper<ErshoushangpinEntity> ew = new EntityWrapper<ErshoushangpinEntity>();
                if(pricestart!=null) ew.ge("price", pricestart);
                if(priceend!=null) ew.le("price", priceend);

		PageUtils page = ershoushangpinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, ershoushangpin), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,ErshoushangpinEntity ershoushangpin, 
                @RequestParam(required = false) Double pricestart,
                @RequestParam(required = false) Double priceend,
		HttpServletRequest request){
        EntityWrapper<ErshoushangpinEntity> ew = new EntityWrapper<ErshoushangpinEntity>();
                if(pricestart!=null) ew.ge("price", pricestart);
                if(priceend!=null) ew.le("price", priceend);

		PageUtils page = ershoushangpinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, ershoushangpin), params), params));
        return R.ok().put("data", page);
    }

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(ErshoushangpinEntity ershoushangpin){
        EntityWrapper< ErshoushangpinEntity> ew = new EntityWrapper< ErshoushangpinEntity>();
 		ew.allEq(MPUtil.allEQMapPre( ershoushangpin, "ershoushangpin")); 
		ErshoushangpinView ershoushangpinView =  ershoushangpinService.selectView(ew);
		return R.ok("查询二手商品成功").put("data", ershoushangpinView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        ErshoushangpinEntity ershoushangpin = ershoushangpinService.selectById(id);
		ershoushangpin.setClicknum(ershoushangpin.getClicknum()+1);
		ershoushangpin.setClicktime(new Date());
		ershoushangpinService.updateById(ershoushangpin);
        return R.ok().put("data", ershoushangpin);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        ErshoushangpinEntity ershoushangpin = ershoushangpinService.selectById(id);
		ershoushangpin.setClicknum(ershoushangpin.getClicknum()+1);
		ershoushangpin.setClicktime(new Date());
		ershoushangpinService.updateById(ershoushangpin);
        return R.ok().put("data", ershoushangpin);
    }
    


    /**
     * 赞或踩
     */
    @RequestMapping("/thumbsup/{id}")
    public R vote(@PathVariable("id") String id,String type){
        ErshoushangpinEntity ershoushangpin = ershoushangpinService.selectById(id);
        if(type.equals("1")) {
        	ershoushangpin.setThumbsupnum(ershoushangpin.getThumbsupnum()+1);
        } else {
        	ershoushangpin.setCrazilynum(ershoushangpin.getCrazilynum()+1);
        }
        ershoushangpinService.updateById(ershoushangpin);
        return R.ok("投票成功");
    }

    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody ErshoushangpinEntity ershoushangpin, HttpServletRequest request){
    	ershoushangpin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(ershoushangpin);
        ershoushangpinService.insert(ershoushangpin);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody ErshoushangpinEntity ershoushangpin, HttpServletRequest request){
    	ershoushangpin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(ershoushangpin);
        ershoushangpinService.insert(ershoushangpin);
        return R.ok();
    }



    /**
     * 修改
     */
    @RequestMapping("/update")
    @Transactional
    public R update(@RequestBody ErshoushangpinEntity ershoushangpin, HttpServletRequest request){
        //ValidatorUtils.validateEntity(ershoushangpin);
        ershoushangpinService.updateById(ershoushangpin);//全部更新
        return R.ok();
    }



    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        ershoushangpinService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
	
	/**
     * 前端智能排序
     */
	@IgnoreAuth
    @RequestMapping("/autoSort")
    public R autoSort(@RequestParam Map<String, Object> params,ErshoushangpinEntity ershoushangpin, HttpServletRequest request,String pre){
        EntityWrapper<ErshoushangpinEntity> ew = new EntityWrapper<ErshoushangpinEntity>();
        Map<String, Object> newMap = new HashMap<String, Object>();
        Map<String, Object> param = new HashMap<String, Object>();
		Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
		while (it.hasNext()) {
			Map.Entry<String, Object> entry = it.next();
			String key = entry.getKey();
			String newKey = entry.getKey();
			if (pre.endsWith(".")) {
				newMap.put(pre + newKey, entry.getValue());
			} else if (StringUtils.isEmpty(pre)) {
				newMap.put(newKey, entry.getValue());
			} else {
				newMap.put(pre + "." + newKey, entry.getValue());
			}
		}
		params.put("sort", "clicknum");
        params.put("order", "desc");
		PageUtils page = ershoushangpinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, ershoushangpin), params), params));
        return R.ok().put("data", page);
    }


}
相关推荐
你知道“铁甲小宝”吗丶9 分钟前
【第33章】Spring Cloud之SkyWalking服务链路追踪
java·spring boot·spring·spring cloud·skywalking
陈小白_weilin14 分钟前
VUE-CLI配置全局SCSS变量
vue.js·scss
For. tomorrow21 分钟前
Vue3中el-table组件实现分页,多选以及回显
前端·vue.js·elementui
coffee_baby21 分钟前
化繁为简:中介者模式如何管理复杂对象交互
java·spring boot·microsoft·交互·中介者模式
ღ᭄ꦿ࿐Never say never꧂25 分钟前
微服务架构中的负载均衡与服务注册中心(Nacos)
java·spring boot·后端·spring cloud·微服务·架构·负载均衡
所待.38326 分钟前
小小扑克牌算法
java·算法
.生产的驴34 分钟前
SpringBoot 消息队列RabbitMQ 消息确认机制确保消息发送成功和失败 生产者确认
java·javascript·spring boot·后端·rabbitmq·负载均衡·java-rabbitmq
.生产的驴34 分钟前
SpringBoot 消息队列RabbitMQ在代码中声明 交换机 与 队列使用注解创建
java·spring boot·分布式·servlet·kafka·rabbitmq·java-rabbitmq
idealzouhu1 小时前
Java 并发编程 —— AQS 抽象队列同步器
java·开发语言