基于java+springmvc+mybatis+vue+mysql的演出道具租赁管理系统

news2024/11/18 1:45:27

项目介绍

前端页面:
功能:首页、道具出租、公告资讯、个人中心、后台管理

管理员后台页面:
功能:首页、个人中心、用户管理、商家管理、道具类型管理、道具出租管理、租赁订单管理、道具归还管理、我的收藏管理、系统管理

用户后台页面:
功能:首页、个人中心、租赁订单管理、道具归还管理、我的收藏管理

收藏管理商后台页面:
功能:首页、个人中心、道具出租管理、租赁订单管理、道具归还管理

本系统采用java语言开发,后端采用ssm框架,前端采用vue技术,数据库采用mysql进行数据存储。

开发环境

开发语言:java
数据库 :mysql
系统架构:b/s
后端框架:ssm
前端框架:Vue
开发工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序/vue/爬虫/c#/asp.net

系统截图

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

部分代码

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
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 com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.StoreupEntity;
import com.entity.view.StoreupView;

import com.service.StoreupService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 我的收藏
 * 后端接口
 */
@RestController
@RequestMapping("/storeup")
public class StoreupController {
    @Autowired
    private StoreupService storeupService;



    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,StoreupEntity storeup,
		HttpServletRequest request){
    	if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		storeup.setUserid((Long)request.getSession().getAttribute("userId"));
    	}
        EntityWrapper<StoreupEntity> ew = new EntityWrapper<StoreupEntity>();
		PageUtils page = storeupService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, storeup), params), params));

        return R.ok().put("data", page);
    }

    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,StoreupEntity storeup, HttpServletRequest request){
    	if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		storeup.setUserid((Long)request.getSession().getAttribute("userId"));
    	}
        EntityWrapper<StoreupEntity> ew = new EntityWrapper<StoreupEntity>();
		PageUtils page = storeupService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, storeup), params), params));
        return R.ok().put("data", page);
    }

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(StoreupEntity storeup){
        EntityWrapper< StoreupEntity> ew = new EntityWrapper< StoreupEntity>();
 		ew.allEq(MPUtil.allEQMapPre( storeup, "storeup"));
		StoreupView storeupView =  storeupService.selectView(ew);
		return R.ok("查询收藏表成功").put("data", storeupView);
    }

    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        StoreupEntity storeup = storeupService.selectById(id);
        return R.ok().put("data", storeup);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        StoreupEntity storeup = storeupService.selectById(id);
        return R.ok().put("data", storeup);
    }




    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody StoreupEntity storeup, HttpServletRequest request){
    	storeup.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(storeup);
    	storeup.setUserid((Long)request.getSession().getAttribute("userId"));
        storeupService.insert(storeup);
        return R.ok();
    }

    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody StoreupEntity storeup, HttpServletRequest request){
    	storeup.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(storeup);
    	storeup.setUserid((Long)request.getSession().getAttribute("userId"));
        storeupService.insert(storeup);
        return R.ok();
    }

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


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

    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);

		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}

		Wrapper<StoreupEntity> wrapper = new EntityWrapper<StoreupEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}
		if(!request.getSession().getAttribute("role").toString().equals("管理员")) {
    		wrapper.eq("userid", (Long)request.getSession().getAttribute("userId"));
    	}


		int count = storeupService.selectCount(wrapper);
		return R.ok().put("count", count);
	}



}

目录
第一章 绪论 5
1.1 研究背景 5
1.2 系统研究现状 5
1.3 系统实现的功能 6
1.4 系统实现的特点 6
1.5 本文的组织结构 6
第二章开发技术与环境配置 7
2.1 Java语言简介 7
2.2 MySQL环境配置 8
2.3 IDEA环境配置 9
2.4 Mysql数据库介绍 10
2.5 B/S架构 11
第三章系统分析与设计 11
3.1 可行性分析 11
3.1.1 技术可行性 11
3.1.2 操作可行性 11
3.1.3经济可行性 11
3.2 需求分析 12
3.3 总体设计 12
3.4 数据库设计与实现 13
3.4.1 数据库概念结构设计 13
3.4.2 数据库具体设计 14
第四章 系统功能的具体实现 22
4.1 系统功能模块 22
4.2 管理员功能模块 25
第五章 系统测试 29
总结 30
参考文献 31
致谢 32

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

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

相关文章

密西根大学张阳实验室郑伟博士在CASP15蛋白质结构预测大赛中斩获多项冠军

简报&#xff1a;在有着蛋白质结构预测领域奥林匹克竞赛之称的最新一届CASP比赛中&#xff08;CASP15&#xff09;&#xff0c;密西根大学张阳教授和Peter Freddolino教授实验室的郑伟博士在多个比赛项目中获得冠军。其中D-I-TASSER算法&#xff08;参赛名&#xff1a;“UM-TBM…

nodejs银行取号系统vue

目 录 1绪论 1 1.1项目研究的背景 1 1.2开发意义 1 1.3项目研究现状及内容 5 1.4论文结构 5 2开发技术介绍 7 2.1 B/S架构 7 2.2 MySQL 介绍 7 2.3 MySQL环境配置 7 3系统分析 9 3.1可行性分析 9 3.1.1技术可行性 9 3.1.2经济可行性 …

学会4种方法,掌握端到端测试处理数据..

推荐阅读&#xff1a; [内部资源] 想拿年薪30W的软件测试人员&#xff0c;这份资料必须领取~ Python自动化测试全栈性能测试全栈&#xff0c;挑战年薪40W 对Web应用程序运行自动化的端到端测试时&#xff0c;最常见的问题之一是如何处理测试数据。端到端测试通常会在通过应用…

授权服务器搭建以及授权码模式

前面的 GitHub 授权登录主要向大家展示了 OAuth2 中客户端的工作模式。对于大部分的开发者而言&#xff0c;日常接触到的 OAuth2 都是开发客户端&#xff0c;例如接入 QQ 登录、接入微信登录等。不过也有少量场景&#xff0c;可能需要开发者提供授权服务器与资源服务器&#xf…

Spring MVC【创建与使用】

Spring MVC【创建与使用】&#x1f34e;一.Spring MVC介绍&#x1f352;1.1 什么是SpringMVC?&#x1f352;1.2 MVC 定义&#x1f352;1.3 Spring MVC 与 MVC 的区别&#x1f352;1.4 Spring MVC的基本功能&#x1f34e;二. Spring MVC项目的创建&#x1f352;2.1 Spring MVC …

代码随想录DAY51 | 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

文章目录309.最佳买卖股票时机含冷冻期714.买卖股票的最佳时机含手续费309.最佳买卖股票时机含冷冻期 文章讲解&#xff1a;代码随想录 (programmercarl.com) 题目链接&#xff1a;309. 最佳买卖股票时机含冷冻期 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; …

Efficientdet源码详解

1.参数配置 最重要的参数配置如下 -p:配置文件&#xff0c;需要在project文件夹下新建配置文件-c:efficientdet的版本,efficientdet B0-B7-n:windows为0&#xff0c;linix根据自己的需求修改--batch_size:batch大小--data_path:数据集路径-p data --batch_size 16 其中&…

【Flask框架】——20 请求钩子

在客户端和服务器交互的过程中&#xff0c;有些准备工作或扫尾工作需要处理&#xff0c;比如&#xff1a; 在请求开始时&#xff0c;建立数据库连接&#xff1b; 在请求开始时&#xff0c;根据需求进行权限校验&#xff1b; 在请求结束时&#xff0c;指定数据的交互格式。 …

Dubbo 1 分布式系统中的相关概念 1.1 大型互联网项目结构目标

Dubbo 【黑马程序员Dubbo快速入门&#xff0c;Java分布式框架dubbo教程】 【非常重要就完事儿 了】 1 分布式系统中的相关概念 文章目录Dubbo1 分布式系统中的相关概念1.1 大型互联网项目结构目标1.1.1 传统项目 和 互联网项目1.1.2 互联网项目特点1.1.3 大型互联网项目架构…

【2022.12.17】备战春招Day12——每日一题 + 76. 最小覆盖子串 + 24. 两两交换链表中的节点

【每日一题】1764. 通过连接另一个数组的子数组得到一个数组 题目描述 给你一个长度为 n 的二维整数数组 groups &#xff0c;同时给你一个整数数组 nums 。 你是否可以从 nums 中选出 n 个 不相交 的子数组&#xff0c;使得第 i 个子数组与 groups[i] &#xff08;下标从 0…

C++绘制菱形(曼哈顿距离求解:贼快!!!)

思路&#xff1a; 1.双重for循环遍历输出是最基本的 2.了解曼哈顿距离 &#xff08;1&#xff09;菱形的输入一定是奇数 &#xff08;2&#xff09;我们是思想是填充 * 怎么填呢&#xff1f;我们来画图看看 以 3*3 的矩阵为例子&#xff01; 我们来看看 距离是怎么定义的…

LInux进程优先级和nice值

文章目录一 定义描述二 查看nice值2.1 使用top命令交互式查看nice值2.2 使用ps命令查看nice值2.3 查看程序调度策略三 修改nice值3.1 启动特定nice值的进程3.2 更改现有进程的nice级别一 定义描述 大部分情况下&#xff0c;计算机需要运行的进程数超过了计算机拥有CPU的核心数…

[附源码]Python计算机毕业设计后疫情时期社区居民管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

uni-app卖座电影多端开发纪实(二):搭建导航

@创建4个Tab页 创建一个测试页hello 在pages目录上右键,新建页面执行如图操作,即可全自动生成页面组件+页面注册(pages.json)pages.json 中会生成这么一个玩意,就是页面声明了 pages:[{"path" : "pages/hello/hello","style" :

#ubuntu# 自动挂载硬盘 文件无权限Permission denied

操作前&#xff0c;切记做好备份工作。。。。 有时候我们服务器或电脑使用自动挂载硬盘后&#xff0c;发现没有权限。即使使用chmod 666 xxx也无济于事。无法让非root用户对该硬盘具有完全权限。 可以看到挂载的硬盘容量为1T 如果没有数据的话&#xff0c;可以尝试重新格式化硬…

老字号品牌营销杂志老字号品牌营销杂志社老字号品牌营销编辑部2022年第23期目录

中华老字号故事 全素斋 王红; 1 老字号研究《老字号品牌营销》投稿&#xff1a;cnqikantg126.com 刍议数字赋能天津老字号创新发展的路径 刘宝亮; 2-4 湖南老字号招牌广告的特征、价值与影响研究 毛凌云; 5-7 品牌与营销 西秦刺绣的传播路径研究——以“秦绣工…

爬虫?不是,mitmproxy帮你采集微信公众号留言

前言 有位朋友需要收集公司微信公众号的文章的留言&#xff0c;但苦于微信公众平台没有提供留言的API&#xff0c;所以朋友需要在每一篇文章下面去手动复制粘贴&#xff0c;朋友觉得很麻烦&#xff0c;于是来找到我&#xff01;遂有此文。 下一篇&#xff0c;将结合uiautomatio…

Linux——进程管理

动态监控进程 介绍 top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处&#xff0c;在于top在执行一段时间可以更新正在运行的进程。 基本语法 top [选项] 选项说明 查看的时候&#xff08;大写锁定要开启&#xff09;P就按CPU的使用率来排序&#…

c语言指针和存储值的格式,对地址中数据的读取

数值存储方式 以int型为例&#xff0c;当有四个字节时&#xff0c;位权大的内存地址较高 *(char*)(0x61FE1C))的含义分析&#xff0c;首先将地址做为一个字符变量的首地址&#xff0c;实际也就只有一个字节。最外层的*表示取这个地址下的值 一个实例 # include "stdio.…

致同会计事务所2023实习生招募

审计实习生 【工作职责】 1. 在项目经理或项目高级人员的指导下&#xff0c;完成项目的部分审计工作&#xff1b; 2. 完成工作底稿的编制、整理和归档工作&#xff0c;使其达到相关技术规范要求&#xff1b; 3. 在审计过程中发现问题及时与项目经理或项目高级人员沟通&…