springboot035学科竞赛管理
相对于C/S模式,B/S模式是对C/S模式应用的扩展,B/S模式不用对不同的计算机安装不同应用程序,还有安全性的要求及对模式上手难度都比前者更好。B/S模式可以让客户机的压力大大减轻,工作的负荷被合理的分配了。
学生进入本系统可查看系统信息,系统主界面展示。
没有账号的学生用户可进行注册操作,学生注册界面展示。
学生在登录时需输入正确的登录用户名和密码,系统会以登录用户名、密码为参数进行登录信息的验证,信息正确则登录成功,反之登录失败,学生登录界面展示。
学生可选择赛项查看详情信息,登录后可进行报名操作,赛项详情界面展示,报名界面展示。
图5-4 赛项详情界面图
学生可对个人信息进行修改,个人中心界面展示。
管理员要想进入后台进行管理操作,必须登录系统后台,管理员登录界面展示。
管理在学生管理界面可查看所有学生信息,并可对其进行修改和删除操作,同时也可添加学生信息,学生管理界面展示。
管理员可增删改查教师信息,教师管理界面展示。
管理员可增删改查赛项信息,赛项信息管理界面。
管理员可查看所有赛项报名信息,并可对其进行审核、修改和删除操作,赛项报名管理界面展示。
管理员可增删改查奖项统计信息,奖项统计管理界面展示。
JiaoshiServiceImpl.java
package com.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.List;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.utils.PageUtils;
import com.utils.Query;
import com.dao.JiaoshiDao;
import com.entity.JiaoshiEntity;
import com.service.JiaoshiService;
import com.entity.vo.JiaoshiVO;
import com.entity.view.JiaoshiView;
@Service("jiaoshiService")
public class JiaoshiServiceImpl extends ServiceImpl<JiaoshiDao, JiaoshiEntity> implements JiaoshiService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
Page<JiaoshiEntity> page = this.selectPage(
new Query<JiaoshiEntity>(params).getPage(),
new EntityWrapper<JiaoshiEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<JiaoshiEntity> wrapper) {
Page<JiaoshiView> page =new Query<JiaoshiView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
@Override
public List<JiaoshiVO> selectListVO(Wrapper<JiaoshiEntity> wrapper) {
return baseMapper.selectListVO(wrapper);
}
@Override
public JiaoshiVO selectVO(Wrapper<JiaoshiEntity> wrapper) {
return baseMapper.selectVO(wrapper);
}
@Override
public List<JiaoshiView> selectListView(Wrapper<JiaoshiEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public JiaoshiView selectView(Wrapper<JiaoshiEntity> wrapper) {
return baseMapper.selectView(wrapper);
}
}
MybatisPlusConfig.java
package com.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.baomidou.mybatisplus.mapper.MetaObjectHandler;
import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
/**
* mybatis-plus配置
*/
@Configuration
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
index.js
import Vue from 'vue'
import SvgIcon from '@/components/SvgIcon'// svg component
// register globally
Vue.component('svg-icon', SvgIcon)
const req = require.context('./svg/svg', false, /\.svg$/)
const requireAll = requireContext => requireContext.keys().map(requireContext)
requireAll(req)
pay.vue
<template>
<div class="container">
<el-alert title="确认支付前请先核对订单信息" type="success" :closable="false"></el-alert>
<!-- <div class="top-content">
<span>收款人</span>
<el-input style="width:300px" v-model="name" placeholder="收款人"></el-input>
<span style="margin-left:20px">收款账号</span>
<el-input style="width:300px" v-model="account" placeholder="收款账号"></el-input>
</div> -->
<!-- <div class="price-content">
<span>金额</span>
<span>¥99.0</span>
</div> -->
<div class="pay-type-content">
<div class="pay-type-item">
<el-radio v-model="type" label="微信支付"></el-radio>
<img src="@/assets/img/test/weixin.png" alt>
<!-- <span>微信支付</span> -->
</div>
<div class="pay-type-item">
<el-radio v-model="type" label="支付宝支付"></el-radio>
<img src="@/assets/img/test/zhifubao.png" alt>
<!-- <span>支付宝支付</span> -->
</div>
<div class="pay-type-item">
<el-radio v-model="type" label="建设银行"></el-radio>
<img src="@/assets/img/test/jianshe.png" alt>
<!-- <span>建设银行</span> -->
</div>
<div class="pay-type-item">
<el-radio v-model="type" label="农业银行"></el-radio>
<img src="@/assets/img/test/nongye.png" alt>
<!-- <span>农业银行</span> -->
</div>
<div class="pay-type-item">
<el-radio v-model="type" label="中国银行"></el-radio>
<img src="@/assets/img/test/zhongguo.png" alt>
<!-- <span>中国银行</span> -->
</div>
<div class="pay-type-item">
<el-radio v-model="type" label="交通银行"></el-radio>
<img src="@/assets/img/test/jiaotong.png" alt>
<!-- <span>交通银行</span> -->
</div>
</div>
<div class="buton-content">
<el-button @click="submitTap" type="primary">确认支付</el-button>
<el-button @click="back()">返回</el-button>
</div>
</div>
</template>
<script>
// import { Message } from "element-ui";
export default {
data() {
return {
name: "",
account: "",
type: "",
table: "",
obj: ""
};
},
mounted() {
let table = this.$storage.get("paytable");
let obj = this.$storage.getObj("payObject");
this.table = table;
this.obj = obj;
},
methods: {
submitTap() {
// if (!this.name) {
// this.$message.error("请输入收款人姓名");
// return;
// }
// if (!this.account) {
// this.$message.error("请输入收款人账号");
// return;
// }
if (!this.type) {
this.$message.error("请选择支付方式");
return;
}
this.$confirm(`确定支付?`, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.obj.ispay = "已支付";
this.$http({
url: `${this.table}/update`,
method: "post",
data: this.obj
}).then(({ data }) => {
if (data && data.code === 0) {
this.$message({
message: "支付成功",
type: "success",
duration: 1500,
onClose: () => {
this.$router.go(-1);
}
});
} else {
this.$message.error(data.msg);
}
});
});
},
back(){
this.$router.go(-1);
}
}
};
</script>
<style lang="scss" scoped>
.container {
margin: 10px;
font-size: 14px;
span {
width: 60px;
}
.top-content {
display: flex;
align-items: center;
padding: 20px;
}
.price-content {
display: flex;
align-items: center;
margin-top: 20px;
padding-bottom: 20px;
padding: 20px;
border-bottom: 1px solid #eeeeee;
font-size: 20px;
font-weight: bold;
color: red;
}
.pay-type-content {
display: flex;
align-items: center;
margin-top: 20px;
flex-wrap: wrap;
span {
width: 100px;
}
.pay-type-item {
display: flex;
align-items: center;
justify-content: space-between;
width: 300px;
margin: 20px;
border: 1px solid #eeeeee;
padding: 20px;
}
}
.buton-content {
margin: 20px;
}
}
</style>