赞
踩
如今社会上各行各业,都在用属于自己专用的软件来进行工作,互联网发展到这个时候,人们已经发现离不开了互联网。互联网的发展,离不开一些新的技术,而新技术的产生往往是为了解决现有问题而产生的。针对于场地预约信息管理方面的不规范,容错率低,管理人员处理数据费工费时,采用新开发的体育馆使用预约平台可以从根源上规范整个数据处理流程的正规性和合法性。
体育馆使用预约平台能够实现场地管理,用户管理,论坛管理,公告管理,场地订单管理等功能。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现
部分系统截图如下:
系统大概流程如下:
管理员功能:
用户功能
package com.controller;
import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;
import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;
/**
* 场地收藏
* 后端接口
* @author
* @email
*/
@RestController
@Controller
@RequestMapping("/changdiCollection")
public class ChangdiCollectionController {
private static final Logger logger = LoggerFactory.getLogger(ChangdiCollectionController.class);
@Autowired
private ChangdiCollectionService changdiCollectionService;
@Autowired
private TokenService tokenService;
@Autowired
private DictionaryService dictionaryService;
//级联表service
@Autowired
private ChangdiService changdiService;
@Autowired
private YonghuService yonghuService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isEmpty(role))
return R.error(511,"权限为空");
else if("用户".equals(role))
params.put("yonghuId",request.getSession().getAttribute("userId"));
if(params.get("orderBy")==null || params.get("orderBy")==""){
params.put("orderBy","id");
}
PageUtils page = changdiCollectionService.queryPage(params);
//字典表数据转换
List<ChangdiCollectionView> list =(List<ChangdiCollectionView>)page.getList();
for(ChangdiCollectionView c:list){
//修改对应字典表字段
dictionaryService.dictionaryConvert(c, request);
}
return R.ok().put("data", page);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id, HttpServletRequest request){
logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
ChangdiCollectionEntity changdiCollection = changdiCollectionService.selectById(id);
if(changdiCollection !=null){
//entity转view
ChangdiCollectionView view = new ChangdiCollectionView();
BeanUtils.copyProperties( changdiCollection , view );//把实体数据重构到view中
//级联表
ChangdiEntity changdi = changdiService.selectById(changdiCollection.getChangdiId());
if(changdi != null){
BeanUtils.copyProperties( changdi , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setChangdiId(changdi.getId());
}
//级联表
YonghuEntity yonghu = yonghuService.selectById(changdiCollection.getYonghuId());
if(yonghu != null){
BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setYonghuId(yonghu.getId());
}
//修改对应字典表字段
dictionaryService.dictionaryConvert(view, request);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody ChangdiCollectionEntity changdiCollection, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,changdiCollection:{}",this.getClass().getName(),changdiCollection.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isEmpty(role))
return R.error(511,"权限为空");
else if("用户".equals(role))
changdiCollection.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
Wrapper<ChangdiCollectionEntity> queryWrapper = new EntityWrapper<ChangdiCollectionEntity>()
.eq("changdi_id", changdiCollection.getChangdiId())
.eq("yonghu_id", changdiCollection.getYonghuId())
.eq("changdi_collection_types", changdiCollection.getChangdiCollectionTypes())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
ChangdiCollectionEntity changdiCollectionEntity = changdiCollectionService.selectOne(queryWrapper);
if(changdiCollectionEntity==null){
changdiCollection.setInsertTime(new Date());
changdiCollection.setCreateTime(new Date());
changdiCollectionService.insert(changdiCollection);
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
* 后端修改
*/
@RequestMapping("/update")
public R update(@RequestBody ChangdiCollectionEntity changdiCollection, HttpServletRequest request){
logger.debug("update方法:,,Controller:{},,changdiCollection:{}",this.getClass().getName(),changdiCollection.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
// if(StringUtil.isEmpty(role))
// return R.error(511,"权限为空");
// else if("用户".equals(role))
// changdiCollection.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
//根据字段查询是否有相同数据
Wrapper<ChangdiCollectionEntity> queryWrapper = new EntityWrapper<ChangdiCollectionEntity>()
.notIn("id",changdiCollection.getId())
.andNew()
.eq("changdi_id", changdiCollection.getChangdiId())
.eq("yonghu_id", changdiCollection.getYonghuId())
.eq("changdi_collection_types", changdiCollection.getChangdiCollectionTypes())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
ChangdiCollectionEntity changdiCollectionEntity = changdiCollectionService.selectOne(queryWrapper);
if(changdiCollectionEntity==null){
// String role = String.valueOf(request.getSession().getAttribute("role"));
// if("".equals(role)){
// changdiCollection.set
// }
changdiCollectionService.updateById(changdiCollection);//根据id更新
return R.ok();
}else {
return R.error(511,"表中有相同数据");
}
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids){
logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
changdiCollectionService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 批量上传
*/
@RequestMapping("/batchInsert")
public R save( String fileName){
logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
try {
List<ChangdiCollectionEntity> changdiCollectionList = new ArrayList<>();//上传的东西
Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
Date date = new Date();
int lastIndexOf = fileName.lastIndexOf(".");
if(lastIndexOf == -1){
return R.error(511,"该文件没有后缀");
}else{
String suffix = fileName.substring(lastIndexOf);
if(!".xls".equals(suffix)){
return R.error(511,"只支持后缀为xls的excel文件");
}else{
URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径
File file = new File(resource.getFile());
if(!file.exists()){
return R.error(511,"找不到上传文件,请联系管理员");
}else{
List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
dataList.remove(0);//删除第一行,因为第一行是提示
for(List<String> data:dataList){
//循环
ChangdiCollectionEntity changdiCollectionEntity = new ChangdiCollectionEntity();
// changdiCollectionEntity.setChangdiId(Integer.valueOf(data.get(0))); //场地 要改的
// changdiCollectionEntity.setYonghuId(Integer.valueOf(data.get(0))); //用户 要改的
// changdiCollectionEntity.setChangdiCollectionTypes(Integer.valueOf(data.get(0))); //类型 要改的
// changdiCollectionEntity.setInsertTime(date);//时间
// changdiCollectionEntity.setCreateTime(date);//时间
changdiCollectionList.add(changdiCollectionEntity);
//把要查询是否重复的字段放入map中
}
//查询是否重复
changdiCollectionService.insertBatch(changdiCollectionList);
return R.ok();
}
}
}
}catch (Exception e){
return R.error(511,"批量插入数据异常,请联系管理员");
}
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){
logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
// 没有指定排序字段就默认id倒序
if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){
params.put("orderBy","id");
}
PageUtils page = changdiCollectionService.queryPage(params);
//字典表数据转换
List<ChangdiCollectionView> list =(List<ChangdiCollectionView>)page.getList();
for(ChangdiCollectionView c:list)
dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段
return R.ok().put("data", page);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id, HttpServletRequest request){
logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
ChangdiCollectionEntity changdiCollection = changdiCollectionService.selectById(id);
if(changdiCollection !=null){
//entity转view
ChangdiCollectionView view = new ChangdiCollectionView();
BeanUtils.copyProperties( changdiCollection , view );//把实体数据重构到view中
//级联表
ChangdiEntity changdi = changdiService.selectById(changdiCollection.getChangdiId());
if(changdi != null){
BeanUtils.copyProperties( changdi , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setChangdiId(changdi.getId());
}
//级联表
YonghuEntity yonghu = yonghuService.selectById(changdiCollection.getYonghuId());
if(yonghu != null){
BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setYonghuId(yonghu.getId());
}
//修改对应字典表字段
dictionaryService.dictionaryConvert(view, request);
return R.ok().put("data", view);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody ChangdiCollectionEntity changdiCollection, HttpServletRequest request){
logger.debug("add方法:,,Controller:{},,changdiCollection:{}",this.getClass().getName(),changdiCollection.toString());
Wrapper<ChangdiCollectionEntity> queryWrapper = new EntityWrapper<ChangdiCollectionEntity>()
.eq("changdi_id", changdiCollection.getChangdiId())
.eq("yonghu_id", changdiCollection.getYonghuId())
.eq("changdi_collection_types", changdiCollection.getChangdiCollectionTypes())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
ChangdiCollectionEntity changdiCollectionEntity = changdiCollectionService.selectOne(queryWrapper);
if(changdiCollectionEntity==null){
changdiCollection.setInsertTime(new Date());
changdiCollection.setCreateTime(new Date());
// String role = String.valueOf(request.getSession().getAttribute("role"));
// if("".equals(role)){
// changdiCollection.set
// }
changdiCollectionService.insert(changdiCollection);
return R.ok();
}else {
return R.error(511,"您已经收藏过了");
}
}
}
由于本人学习的是计算机方面的专业,对于计算机软件方面的相关知识也进行过课堂上的学习以及课后的实际操作练习,因此,对于开发一款已经确定了课题的体育馆使用预约平台,从功能需求,功能模块划分,数据库的选择,数据库的设计,编程语言的确定,系统界面的布局和设计等知识,我都有个大致的思路。所以,在参照软件设计思想以及设计流程的基础上,我运用已经具备的理论知识,加上后期从网络渠道获取的相关技术知识,我能够根据制定的系统开发时间安排完成各个阶段性的开发任务。并能够在系统完成开发后期,编写相应的系统文档。
体育馆使用预约平台制作期间,我也遇到过一些难题,在最开始的时候,我并不知道该系统具体要设计几个功能模块,以及数据表需要设计几张表,还有对于开发技术的深度理论学习还不充分等,值得庆幸的是,我在面临这些困难时,我能够通过网络或者通过学院提供的图书馆寻求解决办法。比如在不知道具体功能的情况下,我从网上下载了很多的与体育馆使用预约平台相关的程序,分析了它们的功能之后,我再结合即将开发的体育馆使用预约平台进行综合分析,选取了适合体育馆使用预约平台的功能部分,再结合实际情况以及使用者的需求确定本系统功能。对于数据表的设计,我先是在图书馆借阅了一本数据库方面的书籍进行查看,然后查看相似系统对于数据表的结构设计等知识,然后在本系统功能确定的情况下,结合本系统设计了配套的数据表,对于难度最大的开发技术部分,我花费了很多的时间研究网络上的相似系统的功能模块上的代码,一般都是对基础数据的增加,更新,查询或修改方面的代码,然后把本系统能够运用的代码部分在简单更改后进行使用,在完成了一个功能模块以及又一个功能模块之后,又经过了简单的测试工作,最终呈现出一个完整的能够解决用户实际问题的体育馆使用预约平台。该系统唯一不足的就是代码方面还有很多重复的部分,不够精简,还有用户操作本系统,对于用户的误操作行为,本系统还不能及时反馈,这也是一大缺点。
体育馆使用预约平台完成了,其相应的配套文档也需要进行编写,该文档主要描述体育馆使用预约平台是如何进行分析,设计以及实现的,让其他阅读本文档的人增加对该系统的了解,编写文档过程中,由于自己平时对于办公软件的操作不是很频繁,根据学院要求的文档排版格式进行编辑也花了很多时间,在不断学习排版技巧以及对本系统配套文档的反复修改之后,最终在学院规定的时间内进行了文档定稿。
毕业项目各个工作进行到此,我也是收获颇丰,正因为自己努力学习知识,积极寻求解决办法,才让我能够提交一个完整的作品。制作毕业项目让我又得到了成长,不仅是专业知识的增加,也包括解决问题的能力得到了提高,很感谢学院给的制作毕业项目的机会。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。