springboot039基于Web足球青训俱乐部管理后台系统开发
B/S架构这种只需要用户在浏览器上运行不需要再下载客户端的模式,使用浏览器就可以实现和下载客户端的一样复杂的功能。给管理系统的用户带来了很大的方便,节约了大量的成本。现在B/S架构已经在Web开发上被广泛运用,它的基础内容也在不断的完善更新。
B/S系统架构是本系统开发采用的结构模式,使用B/S模式开发程序以及程序后期维护层面需要的经济成本是很低的,用户能够承担得起。使用这样的模式开发,用户使用起来舒心愉悦,不会觉得别扭,操作很容易就熟练了。而且方便管理。采用B/S体系结构开发的应用软件仅仅需要在客户端安装谷歌浏览器或者其他浏览器就可以操作,对于维护和升级操作则在服务器端就能完成,不用在客户端进行操作,这样就节省了许多开销,B/S模式能够保证软件应用的跨平台性和通用性,采用它开发软件是最佳选择。B/S模式示意图。
学员进入本系统可查看系统信息,系统前台主界面展示。
未有账号的学员可进入注册界面进行注册操作,学员注册界面展示。
学员要想进行商品购买操作,必须登录系统,学员登录界面展示。
学员在商品详情界面可查看商品详细信息,登录后可加入购物车或者立即购买操作,商品详情界面展示。
学员可选择课程安排查看详情信息,登录后可进行上课签到操作,课程安排详情界面展示。
学员登录后可进行上课签到操作,上课签到界面展示。
学员登录后可对个人信息进行管理,个人中心界面展示。
学员可进入我的订单界面查看个人已有订单信息,其界面展示。
管理员要想进入系统后台对系统进行管理操作,必须进行登录系统,管理员登录界面展示。
管理员可增删改查公告信息,公告信息管理界面展示。
管理员可查看、添加、修改和删除学员信息,学员管理界面展示。
管理员可增删改查商品信息,商品信息管理界面展示。
管理员可添加、修改和删除课程安排信息,课程安排管理界面展示。
教练登录后可查看课程安排信息,课程安排界面展示。
教练可查看学员课程签到信息,并可对其进行审核操作,课程签到管理界面展示。
GonggaoxinxiController.java
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.GonggaoxinxiEntity;
import com.entity.view.GonggaoxinxiView;
import com.service.GonggaoxinxiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
/**
* 公告信息
* 后端接口
* @author
* @email
* @date 2021-04-14 06:54:12
*/
@RestController
@RequestMapping("/gonggaoxinxi")
public class GonggaoxinxiController {
@Autowired
private GonggaoxinxiService gonggaoxinxiService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,GonggaoxinxiEntity gonggaoxinxi,
HttpServletRequest request){
EntityWrapper<GonggaoxinxiEntity> ew = new EntityWrapper<GonggaoxinxiEntity>();
PageUtils page = gonggaoxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, gonggaoxinxi), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,GonggaoxinxiEntity gonggaoxinxi, HttpServletRequest request){
EntityWrapper<GonggaoxinxiEntity> ew = new EntityWrapper<GonggaoxinxiEntity>();
PageUtils page = gonggaoxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, gonggaoxinxi), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( GonggaoxinxiEntity gonggaoxinxi){
EntityWrapper<GonggaoxinxiEntity> ew = new EntityWrapper<GonggaoxinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( gonggaoxinxi, "gonggaoxinxi"));
return R.ok().put("data", gonggaoxinxiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(GonggaoxinxiEntity gonggaoxinxi){
EntityWrapper< GonggaoxinxiEntity> ew = new EntityWrapper< GonggaoxinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( gonggaoxinxi, "gonggaoxinxi"));
GonggaoxinxiView gonggaoxinxiView = gonggaoxinxiService.selectView(ew);
return R.ok("查询公告信息成功").put("data", gonggaoxinxiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
GonggaoxinxiEntity gonggaoxinxi = gonggaoxinxiService.selectById(id);
return R.ok().put("data", gonggaoxinxi);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
GonggaoxinxiEntity gonggaoxinxi = gonggaoxinxiService.selectById(id);
return R.ok().put("data", gonggaoxinxi);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody GonggaoxinxiEntity gonggaoxinxi, HttpServletRequest request){
gonggaoxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(gonggaoxinxi);
gonggaoxinxiService.insert(gonggaoxinxi);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody GonggaoxinxiEntity gonggaoxinxi, HttpServletRequest request){
gonggaoxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(gonggaoxinxi);
gonggaoxinxiService.insert(gonggaoxinxi);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody GonggaoxinxiEntity gonggaoxinxi, HttpServletRequest request){
//ValidatorUtils.validateEntity(gonggaoxinxi);
gonggaoxinxiService.updateById(gonggaoxinxi);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
gonggaoxinxiService.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<GonggaoxinxiEntity> wrapper = new EntityWrapper<GonggaoxinxiEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = gonggaoxinxiService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
TongjizhongxinController.java
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.TongjizhongxinEntity;
import com.entity.view.TongjizhongxinView;
import com.service.TongjizhongxinService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
/**
* 统计中心
* 后端接口
* @author
* @email
* @date 2021-04-14 06:54:13
*/
@RestController
@RequestMapping("/tongjizhongxin")
public class TongjizhongxinController {
@Autowired
private TongjizhongxinService tongjizhongxinService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,TongjizhongxinEntity tongjizhongxin,
HttpServletRequest request){
EntityWrapper<TongjizhongxinEntity> ew = new EntityWrapper<TongjizhongxinEntity>();
PageUtils page = tongjizhongxinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, tongjizhongxin), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,TongjizhongxinEntity tongjizhongxin, HttpServletRequest request){
EntityWrapper<TongjizhongxinEntity> ew = new EntityWrapper<TongjizhongxinEntity>();
PageUtils page = tongjizhongxinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, tongjizhongxin), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( TongjizhongxinEntity tongjizhongxin){
EntityWrapper<TongjizhongxinEntity> ew = new EntityWrapper<TongjizhongxinEntity>();
ew.allEq(MPUtil.allEQMapPre( tongjizhongxin, "tongjizhongxin"));
return R.ok().put("data", tongjizhongxinService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(TongjizhongxinEntity tongjizhongxin){
EntityWrapper< TongjizhongxinEntity> ew = new EntityWrapper< TongjizhongxinEntity>();
ew.allEq(MPUtil.allEQMapPre( tongjizhongxin, "tongjizhongxin"));
TongjizhongxinView tongjizhongxinView = tongjizhongxinService.selectView(ew);
return R.ok("查询统计中心成功").put("data", tongjizhongxinView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
TongjizhongxinEntity tongjizhongxin = tongjizhongxinService.selectById(id);
return R.ok().put("data", tongjizhongxin);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
TongjizhongxinEntity tongjizhongxin = tongjizhongxinService.selectById(id);
return R.ok().put("data", tongjizhongxin);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody TongjizhongxinEntity tongjizhongxin, HttpServletRequest request){
tongjizhongxin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(tongjizhongxin);
tongjizhongxinService.insert(tongjizhongxin);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody TongjizhongxinEntity tongjizhongxin, HttpServletRequest request){
tongjizhongxin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(tongjizhongxin);
tongjizhongxinService.insert(tongjizhongxin);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody TongjizhongxinEntity tongjizhongxin, HttpServletRequest request){
//ValidatorUtils.validateEntity(tongjizhongxin);
tongjizhongxinService.updateById(tongjizhongxin);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
tongjizhongxinService.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<TongjizhongxinEntity> wrapper = new EntityWrapper<TongjizhongxinEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = tongjizhongxinService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
404.vue
<template>
<div class="content">
<img class="backgroud" src="@/assets/img/404.png" alt>
<div class="text main-text">出错了...页面失踪了</div>
<div>
<el-button class="text" @click="back()" type="text" icon="el-icon-back">返回</el-button>
</div>
</div>
</template>
<script>
export default {
methods: {
back() {
window.history.length > 1 ? this.$router.go(-1) : this.$router.push("/");
}
}
};
</script>
<style lang="scss" scoped>
.content {
display: flex;
align-items: center;
flex-direction: column;
width: 100%;
height: 100%;
min-height: 900px;
text-align: center;
.backgroud {
display: inline-block;
width: 200px;
height: 200px;
margin-top: 80px;
}
.main-text{
margin-top: 80px;
}
.text {
font-size: 24px;
font-weight: bold;
color: #333;
}
}
</style>