一、源码特点
springboot VUE 宠物寄养平台系统是一套完善的完整信息管理类型系统,结合springboot框架和VUE完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。
springboot VUE 宠物寄养平台系统
前段主要技术 vue
后端主要技术 Springboot java
数据库 mysql
开发工具 IDEA JDK1.8
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以 不建议。
2.IDE环境:推荐IDEA;
3.硬件环境:windows 7/8/10 1G内存以上;;
5.数据库:MySql 5.0 到 5.5 等版本均可 需要高版本 如mysql8.0 需要修改数据连接配置,以及maven中的mysql 驱动包;
6.是否Maven项目: 否;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目
使用说明
1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
2. 使用IDEA导入项目;
3. 将项目中lrfw\src\main\resources 下的 application.properties 配置文件中的数据库配置改为自己的配置;
数据库支持 mysql5.0 到5.5 ,如果需要5.7 到8.0 需要二次转换升级
4.vscode 开vue项目工程
5.vue 项目启动 npm run serve
vue 版本 2.9.6
node 版本 16.14.2
二、功能介绍
前台功能:
系统首页浏览
宠物浏览
发帖,查看帖子
接单、评价、查看订单、收藏帖子、举报帖子
用户注册、登录
后台管理
(1)管理员管理:对管理员信息进行添加、删除、修改和查看
(2)用户管理:对用户信息进行添加、删除、修改和查看
(3)宠物种类管理:对宠物种类信息进行添加、删除、修改和查看
(4)宠物类型管理:对宠物类型信息进行添加、删除、修改和查看
(5)帖子管理:对帖子信息进行添加、删除、修改和查看
(6)接单管理:对接单信息进行添加、删除、修改和查看
(7)评价管理:对评价信息进行添加、删除、修改和查看
(8)收藏管理:对收藏信息进行添加、删除、修改和查看
(9)举报管理:对举报信息进行添加、删除、修改和查看
数据库设计
CREATE TABLE `gly` (
`glyid` int(11) NOT NULL auto_increment,
`yhm` VARCHAR(40) default NULL COMMENT '用户名',
`mm` VARCHAR(40) default NULL COMMENT '密码',
`dzyx` VARCHAR(40) default NULL COMMENT '电子邮箱', PRIMARY KEY (`glyid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `yonghu` (
`yhid` int(11) NOT NULL auto_increment,
`yhm` VARCHAR(40) default NULL COMMENT '用户名',
`mm` VARCHAR(40) default NULL COMMENT '密码',
`zt` VARCHAR(40) default NULL COMMENT '状态',
`dzyx` VARCHAR(40) default NULL COMMENT '电子邮箱', PRIMARY KEY (`yhid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `cwzl` (
`cwzlid` int(11) NOT NULL auto_increment,
`zl` VARCHAR(40) default NULL COMMENT '种类', PRIMARY KEY (`cwzlid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `cwlx` (
`cwlxid` int(11) NOT NULL auto_increment,
`lx` VARCHAR(40) default NULL COMMENT '类型', PRIMARY KEY (`cwlxid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `tiezi` (
`tzid` int(11) NOT NULL auto_increment,
`dh` VARCHAR(40) default NULL COMMENT '单号',
`bt` VARCHAR(40) default NULL COMMENT '标题',
`js` VARCHAR(40) default NULL COMMENT '介绍',
`tp` VARCHAR(40) default NULL COMMENT '图片',
`zl` VARCHAR(40) default NULL COMMENT '种类',
`lx` VARCHAR(40) default NULL COMMENT '类型',
`jysj` VARCHAR(40) default NULL COMMENT '寄养时间',
`yh` VARCHAR(40) default NULL COMMENT '用户',
`jg` VARCHAR(40) default NULL COMMENT '价格',
`fbsj` VARCHAR(40) default NULL COMMENT '发布时间',
`zt` VARCHAR(40) default NULL COMMENT '状态',
`lxdh` VARCHAR(40) default NULL COMMENT '联系电话',
`yx` VARCHAR(40) default NULL COMMENT '邮箱',
`lxdz` VARCHAR(40) default NULL COMMENT '联系地址', PRIMARY KEY (`tzid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `jiedan` (
`jdid` int(11) NOT NULL auto_increment,
`tz` VARCHAR(40) default NULL COMMENT '帖子',
`dh` VARCHAR(40) default NULL COMMENT '单号',
`zr` VARCHAR(40) default NULL COMMENT '主人',
`yh` VARCHAR(40) default NULL COMMENT '用户',
`zflx` VARCHAR(40) default NULL COMMENT '支付类型',
`bz` VARCHAR(40) default NULL COMMENT '备注',
`zt` VARCHAR(40) default NULL COMMENT '状态',
`jdsj` VARCHAR(40) default NULL COMMENT '接单时间',
`zrpj` VARCHAR(40) default NULL COMMENT '主人评价',
`yhpj` VARCHAR(40) default NULL COMMENT '用户评价', PRIMARY KEY (`jdid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `pingjia` (
`pjid` int(11) NOT NULL auto_increment,
`tz` VARCHAR(40) default NULL COMMENT '帖子',
`pjnr` VARCHAR(40) default NULL COMMENT '评价内容',
`yh` VARCHAR(40) default NULL COMMENT '用户',
`sj` VARCHAR(40) default NULL COMMENT '时间', PRIMARY KEY (`pjid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `shouzang` (
`szid` int(11) NOT NULL auto_increment,
`tz` VARCHAR(40) default NULL COMMENT '帖子',
`yh` VARCHAR(40) default NULL COMMENT '用户',
`sj` VARCHAR(40) default NULL COMMENT '时间', PRIMARY KEY (`szid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `jubao` (
`jbid` int(11) NOT NULL auto_increment,
`tz` VARCHAR(40) default NULL COMMENT '帖子',
`bt` VARCHAR(40) default NULL COMMENT '标题',
`nr` VARCHAR(40) default NULL COMMENT '内容',
`yh` VARCHAR(40) default NULL COMMENT '用户',
`tjsj` VARCHAR(40) default NULL COMMENT '提交时间', PRIMARY KEY (`jbid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
代码设计
/**接单列表 查询jiedan
*
*/
@GetMapping("list")
public Result list(@RequestParam(value = "pageNum",defaultValue = "1") int page,
@RequestParam(value = "pageSize",defaultValue = "10") int szie,
@RequestParam(defaultValue = "") String tz,
@RequestParam(defaultValue = "") String yh,
@RequestParam(defaultValue = "") String zr
) {
Result res=new Result();
List list=null;
Map map1= new HashMap();
try{
if(tz!=null&&!tz.equals("")){
map1.put("tz",tz);//帖子 传入查询参数
}
if(zr!=null&&!zr.equals("")){
map1.put("zr",zr);//帖子 传入查询参数
}
if(yh!=null&&!yh.equals("")){
map1.put("yh",yh);//帖子 传入查询参数
}
int a=(page-1)*szie;
map1.put("start",a);//分页起始位置
map1.put("end",szie);//分页结束位置
list=jiedandao.getAllp(map1);//传入 方法参数 //查询jiedan表数据返回 list对象
res.setCode(200);
res.setMessage("查询成功");
res.setData(tl.ltoj(list));
list=jiedandao.getAll(map1);
res.setNum(list.size());
}catch(Exception e){
e.printStackTrace();;
}
return res;
}
/**接单列表 查询jiedan
*
*/
@GetMapping("listpage")
public Result listpage(
@RequestParam(defaultValue = "") String tz
) {
Result res=new Result();
List list=null;
Map map1= new HashMap();
if(tz!=null&&!tz.equals("")){
map1.put("tz",tz);//帖子 传入查询参数
}
try{
list=jiedandao.getAll(map1);//传入 方法参数 //查询jiedan表数据返回 list对象
res.setCode(200);
res.setMessage("查询成功");
res.setData(tl.ltoj(list));
}catch(Exception e){
e.printStackTrace();;
}
return res;
}
/**接单添加方法 对表 jiedan 进行添加
*
*/
@PostMapping(value = "add")
public Result add(@RequestBody jiedan bean){
Result res=new Result();
List list=null;
try{
if(bean.getJdid()!=null&&!bean.getJdid().equals("")){
jiedandao.update(bean);//执行 修改 jiedan 添加操作
res.setMessage("操作成功");
res.setCode(200);
}else{
Map map1= new HashMap();
map1.put("tz",bean.getTz());
map1.put("yh",bean.getYh());
list=jiedandao.checkJieDan(map1);
if(list.size()>0) {
res.setMessage("操作失败、你已经接单过");
res.setCode(201);
}else {
Map map= new HashMap();
map.put("tz",bean.getTz());
map.put("zt","已接单");
tiezidao.updatezt(map);
jiedandao.add(bean);//执行 添加jiedan 添加操作
res.setMessage("操作成功");
res.setCode(200);
}
}
}catch(Exception e){
e.printStackTrace();;
}
//System.out.println(res);
return res;
}
/**接单删除方法 对表jiedan 进行删除
*
*/
@DeleteMapping("del/{id}")
public Result del( @PathVariable String id){
Result res=new Result();
try{
jiedandao.delete(Integer.parseInt(id));//执行 删除jiedan 方法
}catch(Exception e){
e.printStackTrace();;
}
res.setCode(200);
res.setMessage("删除成功");
return res;
}
前端设计
<el-table :data="tableData" border stripe :header-cell-class-name="'headerBg'" @selection-change="handleSelectionChange">
<el-table-column label="序号" width="80"
type="index"
:index="indexMethod">
</el-table-column>
<el-table-column prop="bt" label="帖子" width="120"></el-table-column>
<el-table-column prop="dh" label="单号" width="120"></el-table-column>
<el-table-column prop="zr" label="主人" width="120"></el-table-column>
<el-table-column prop="yh" label="用户" width="120"></el-table-column>
<el-table-column prop="zflx" label="支付类型" width="120"></el-table-column>
<el-table-column prop="zt" label="状态" width="60"></el-table-column>
<el-table-column prop="jdsj" label="接单时间" width="140"></el-table-column>
<el-table-column label="操作" width="280" align="center">
<template slot-scope="scope">
<el-button type="info" @click="handleDetail(scope.row)">详情 <i class="el-icon-reading"></i></el-button>
<el-button type="danger" v-if="scope.row.zflx==''" @click="zhifu(scope.row)">支付 <i class="el-icon-reading"></i></el-button>
<el-button type="danger" v-if="scope.row.zt=='接单'&&scope.row.ts>=0" @click="quxiao(scope.row.jdid)">取消 <i class="el-icon-reading"></i></el-button>
<el-button type="danger" v-if="scope.row.zt=='进行中'" @click="queren(scope.row.jdid)">确认完成 <i class="el-icon-reading"></i></el-button>
<el-button type="danger" v-if="scope.row.zt=='未评价'||scope.row.zt=='用户评价'" @click="handlepj(scope.row)">评价 <i class="el-icon-reading"></i></el-button>
</template>
</el-table-column>
</el-table>
<div style="padding: 10px 0">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="pageNum"
:page-sizes="[2, 5, 10, 20]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
<el-dialog title="填写信息" :visible.sync="pjdialogFormVisible" width="40%" >
<el-form :model="form" :rules="rules" ref="beanForm" label-width="80px" size="small" >
<el-input v-model="form.zt" type="hidden" ></el-input>
<el-form-item label="主人评价" prop="yhpj" >
<el-input v-model="form.zrpj" type="textarea" rows="3" ></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="pjdialogFormVisible = false">取 消</el-button>
<el-button type="primary" @click="pjsave">确 定</el-button>
</div>
</el-dialog>
<el-dialog title="接单信息" :visible.sync="dialogFormVisible" width="50%" >
<el-form :model="form" :rules="rules" ref="beanForm" label-width="80px" size="small" >
<el-form-item label="帖子" prop="bt" >
<el-input v-model="form.bt" ></el-input>
</el-form-item>
<el-form-item label="单号" prop="dh" >
<el-input v-model="form.dh" ></el-input>
</el-form-item>
<el-form-item label="主人" prop="zr" >
<el-input v-model="form.zr" ></el-input>
</el-form-item>
<el-form-item label="用户" prop="yh" >
<el-input v-model="form.yh" ></el-input>
</el-form-item>
<el-form-item label="支付类型" prop="zflx" >
<el-input v-model="form.zflx" ></el-input>
</el-form-item>
<el-form-item label="备注" prop="bz" >
<el-input v-model="form.bz" ></el-input>
</el-form-item>
<el-form-item label="状态" prop="zt" >
<el-input v-model="form.zt" ></el-input>
</el-form-item>
<el-form-item label="接单时间" prop="jdsj" >
<el-input v-model="form.jdsj" ></el-input>
</el-form-item>
<el-form-item label="主人评价" prop="zrpj" >
<el-input v-model="form.zrpj" ></el-input>
</el-form-item>
<el-form-item label="用户评价" prop="yhpj" >
<el-input v-model="form.yhpj" ></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">取 消</el-button>
<el-button type="primary" @click="save">确 定</el-button>
</div>
</el-dialog>
<el-dialog title="支付信息" :visible.sync="zfdialogFormVisible" width="50%" >
<el-form :model="form" :rules="rules1" ref="beanForm" label-width="80px" size="small" >
<el-form-item label="支付类型" prop="zflx" >
<el-select v-model="form.zflx" placeholder="请选择支付类型">
<el-option
v-for="item in options"
:key="item.value"
:label="item.value"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="zfdialogFormVisible = false">取 消</el-button>
<el-button type="primary" @click="zhifudo">确 定</el-button>
</div>
</el-dialog>
<el-dialog title="查看接单信息" :visible.sync="dialogDetailVisible" width="30%" >
<el-form :model="form" :rules="rules" ref="beanForm" label-width="80px" size="small" >
<el-form-item label="帖子" prop="tz" required>
{{form.bt}}
</el-form-item>
<el-form-item label="单号" prop="dh" required>
{{form.dh}}
</el-form-item>
<el-form-item label="主人" prop="zr" required>
{{form.zr}}
</el-form-item>
<el-form-item label="用户" prop="yh" required>
{{form.yh}}
</el-form-item>
<el-form-item label="支付类型" prop="zflx" required>
{{form.zflx}}
</el-form-item>
<el-form-item label="备注" prop="bz" required>
{{form.bz}}
</el-form-item>
<el-form-item label="状态" prop="zt" required>
{{form.zt}}
</el-form-item>
<el-form-item label="接单时间" prop="jdsj" required>
{{form.jdsj}}
</el-form-item>
<el-form-item label="主人评价" prop="zrpj" required>
{{form.zrpj}}
</el-form-item>
<el-form-item label="用户评价" prop="yhpj" required>
{{form.yhpj}}
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogDetailVisible = false">关闭</el-button>
</div>
</el-dialog>
<el-dialog title="支付" :visible.sync="tpdialogDetailVisible" width="40%" >
<el-form :model="form" :rules="rules" ref="beanForm" label-width="80px" size="small" >
<div class="block">
<span class="demonstration"></span>
<img src="../assets/zhifu.jpg" height="200px" alt="" style="width: 100%">
</div>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="tpdialogDetailVisible = false">支付完成</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {serverIp} from "../../public/config";
export default {
name: "jiedan",
data() {
return {
serverIp: serverIp,
tableData: [],
total: 0,
pageNum: 1,
pageSize: 10,
tz: "",
form: {},
dialogFormVisible: false,
pjdialogFormVisible: false,
zfdialogFormVisible: false,
dialogDetailVisible:false,
tpdialogDetailVisible:false,
multipleSelection: [],
options: [{
value: '线上支付',
label: '线上支付'
}, {
value: '线下支付',
label: '线下支付'
}
],
vis: false,
rules: {
tz: [
{ required: true, message: '请输入帖子', trigger: 'blur' }
],
dh: [
{ required: true, message: '请输入单号', trigger: 'blur' }
],
zr: [
{ required: true, message: '请输入主人', trigger: 'blur' }
],
yh: [
{ required: true, message: '请输入用户', trigger: 'blur' }
],
zflx: [
{ required: true, message: '请输入支付类型', trigger: 'blur' }
],
bz: [
{ required: true, message: '请输入备注', trigger: 'blur' }
],
zt: [
{ required: true, message: '请输入状态', trigger: 'blur' }
],
jdsj: [
{ required: true, message: '请输入接单时间', trigger: 'blur' }
],
zrpj: [
{ required: true, message: '请输入主人评价', trigger: 'blur' }
],
yhpj: [
{ required: true, message: '请输入用户评价', trigger: 'blur' }
],
}, rules1: {
zflx: [
{ required: true, message: '请输入支付类型', trigger: 'blur' }
],
}
}
},
created() {
this.load()
},
methods: {
indexMethod(index) {
return index+1;
},
load() {
this.request.get("/jiedan/list", {
params: {
pageNum: this.pageNum,
pageSize: this.pageSize,
tz: this.tz,
zr: localStorage.getItem("yhm"),
}
}).then(res => {
console.log(res.data)
this.tableData = JSON.parse(res.data)
this.total =res.num
})
}, pjsave() {
//保存方法
this.request.post("/jiedan/updatezrpj", this.form).then(res => {
// 表单校验合法
if (res.code == '200') {
this.$message.success(res.message)
this.pjdialogFormVisible = false
this.load()
} else {
this.$message.error(res.message)
}
})
三、注意事项
1、管理员账号:admin密码:admin 数据库配置文件DBO.java
2、开发环境为IDEA开发,数据库为mysql,使用java语言开发。
3、数据库文件名是jspcwjy.sql 系统名称cwjy
4、地址:http://128.0.0.1:8080/qt/index
四系统实现
需要源码 其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者