博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌
🍅文末获取源码联系🍅
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
目录
[1.1 项目介绍](#1.1 项目介绍)
[1.2 开发技术](#1.2 开发技术)
[3.1 前台功能](#3.1 前台功能)
[3.2 后台功能](#3.2 后台功能)
[5.1 任务报名Controller模块](#5.1 任务报名Controller模块)
[5.2 任务报名Service模块](#5.2 任务报名Service模块)
[5.3 任务报名ServiceImpl模块](#5.3 任务报名ServiceImpl模块)
[5.4 任务报名Dao模块](#5.4 任务报名Dao模块)
1、项目介绍及开发技术
1.1 项目介绍
在当前社会经济快速发展的背景下,扶贫助农工作成为了国家和社会关注的焦点。为了更有效地推动这一工作,我们设计并开发了一个扶贫助农系统,旨在通过信息技术手段,提高扶贫工作的效率和精准度,促进农村地区的经济发展和社会进步。
背景:
随着互联网技术的普及和应用,传统的农业和扶贫工作面临着转型升级的需求。如何利用现代信息技术,特别是互联网技术,来提升农产品的销售渠道、增加农民收入、改善农村生活条件,成为了一个亟待解决的问题。扶贫助农系统正是在这样的背景下应运而生,它通过整合线上线下资源,为农村地区提供技术支持和信息服务,帮助农民更好地接入市场,提高农产品的附加值。
目的意义:
-
- 提升扶贫效率:系统通过收集和分析农村地区的生产、生活、教育等数据,为政府和社会组织提供决策支持,从而提高扶贫政策的针对性和有效性。
-
- 增加农民收入:系统为农民提供市场信息、价格趋势、销售渠道等信息服务,帮助他们更好地销售农产品,提高收入水平。
-
- 促进农村发展:系统还可以提供技术培训、人才引进等支持,推动农业生产的现代化和农村经济的多元化发展。
-
- 增强信息透明度:系统公开扶贫政策、项目进展、资金使用等信息,增强了扶贫工作的透明度和公信力。
-
- 提高用户参与度:通过论坛、公告、在线客服等功能,系统提高了农民和社会各界的参与度,形成了良好的互动和反馈机制。
综上所述,扶贫助农系统的设计与实现,不仅能够为农村地区带来实实在在的经济收益,还能够推动农业和农村经济的可持续发展,是实现乡村振兴战略的重要支撑。通过技术手段优化扶贫助农工作流程,该系统有望成为推动农村社会经济发展的重要工具。
1.2 开发技术
类别 | 技术名称 | 用途/描述 |
---|---|---|
开发语言 | Java | 一种广泛使用的面向对象编程语言。 |
框架 | Spring Boot | 简化Spring应用的初始搭建以及开发过程。 |
ORM工具 | MyBatis Plus | MyBatis的增强工具,简化CRUD操作。 |
数据库 | MySQL | 流行的关系型数据库管理系统。 |
构建工具 | Maven | 项目管理和理解工具。 |
开发工具 | IDEA | 集成开发环境,用于代码编写和调试。 |
JDK版本 | JDK 1.8+ | Java开发工具包,提供运行Java程序所需的环境。 |
前端框架 | Vue | 用于构建用户界面的渐进式JavaScript框架。 |
UI框架 | Element UI | 基于Vue的桌面端组件库。 |
前端技术 | HTML | 网页内容的标准标记语言。 |
前端技术 | CSS | 描述HTML文档的样式。 |
前端技术 | JS | 网页脚本语言,用于实现网页的动态效果。 |
2、系统功能设计结构图
功能模块结构图
│
├── 管理员
│ ├── 登录
│ ├── 个人中心
│ ├── 管理员管理
│ ├── 客服聊天管理
│ ├── 基础数据管理
│ ├── 论坛管理
│ ├── 扶贫公告管理
│ ├── 任务信息管理
│ ├── 任务报名管理
│ ├── 新闻信息管理
│ └── 用户管理
│ └── 轮播图信息管理
│
└── 用户
├── 登录
├── 注册
├── 首页
├── 论坛
├── 扶贫公告
├── 任务信息
├── 新闻信息
├── 个人中心
│ ├── 查看个人信息
│ ├── 修改个人信息
│ └── 任务报名
└── 在线客服
系统MVC框架,请求流程展示:
3、功能截图
3.1 前台功能
3.2 后台功能
4、数据库表结构设计
sql
CREATE TABLE `chat` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`yonghu_id` int(11) DEFAULT NULL COMMENT '提问用户',
`chat_issue` varchar(200) DEFAULT NULL COMMENT '问题',
`issue_time` timestamp NULL DEFAULT NULL COMMENT '问题时间 Search111',
`chat_reply` varchar(200) DEFAULT NULL COMMENT '回复',
`reply_time` timestamp NULL DEFAULT NULL COMMENT '回复时间 Search111',
`zhuangtai_types` int(255) DEFAULT NULL COMMENT '状态',
`chat_types` int(11) DEFAULT NULL COMMENT '数据类型',
`insert_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='客服聊天';
CREATE TABLE `dictionary` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`dic_code` varchar(200) DEFAULT NULL COMMENT '字段',
`dic_name` varchar(200) DEFAULT NULL COMMENT '字段名',
`code_index` int(11) DEFAULT NULL COMMENT '编码',
`index_name` varchar(200) DEFAULT NULL COMMENT '编码名字 Search111 ',
`super_id` int(11) DEFAULT NULL COMMENT '父字段id',
`beizhu` varchar(200) DEFAULT NULL COMMENT '备注',
`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
)
CREATE TABLE `renwu` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
`renwu_name` varchar(200) DEFAULT NULL COMMENT '任务标题 Search111 ',
`renwu_photo` varchar(200) DEFAULT NULL COMMENT '任务介绍图',
`renwu_zhiwei` varchar(200) DEFAULT NULL COMMENT '职位',
`renwu_baocou` decimal(10,2) DEFAULT NULL COMMENT '报酬',
`renwu_shijian` varchar(200) DEFAULT NULL COMMENT '工作时间',
`renwu_text` longtext COMMENT '任务',
`renwu_time` timestamp NULL DEFAULT NULL COMMENT '起止时间',
`renwu_address` varchar(200) DEFAULT NULL COMMENT '工作地点',
`renwu_fuzhenr` varchar(200) DEFAULT NULL COMMENT '负责人',
`renwu_phone` varchar(200) DEFAULT NULL COMMENT '联系方式',
`renwu_baoming` varchar(200) DEFAULT NULL COMMENT '报名信息',
`renwu_types` int(11) DEFAULT NULL COMMENT '任务类型 Search111',
`jieshu_time` timestamp NULL DEFAULT NULL COMMENT '结束时间',
`zhugtai_types` int(11) DEFAULT NULL COMMENT '任务状态 Search111',
`renwu_content` longtext COMMENT '任务介绍',
`renwu_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',
`insert_time` timestamp NULL DEFAULT NULL COMMENT '发布日期',
`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show1 show2 photoShow homeMain',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='任务信息';
CREATE TABLE `renwu_yuyue` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`renwu_id` int(11) DEFAULT NULL COMMENT '任务',
`yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
`renwu_yuyue_yesno_types` int(11) DEFAULT NULL COMMENT '审核状态 Search111 ',
`renwu_yuyue_yesno_text` longtext COMMENT '审核回复',
`insert_time` timestamp NULL DEFAULT NULL COMMENT '申请时间',
`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 listShow',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COMMENT='任务报名';
CREATE TABLE `token` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`userid` bigint(20) NOT NULL COMMENT '管理id',
`username` varchar(100) NOT NULL COMMENT '管理名',
`tablename` varchar(100) DEFAULT NULL COMMENT '表名',
`role` varchar(100) DEFAULT NULL COMMENT '角色',
`token` varchar(200) NOT NULL COMMENT '密码',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
`expiratedtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间',
PRIMARY KEY (`id`)
)
CREATE TABLE `users` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`username` varchar(100) NOT NULL COMMENT '医院名',
`password` varchar(100) NOT NULL COMMENT '密码',
`role` varchar(100) DEFAULT '管理员' COMMENT '角色',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='管理员';
5、关键代码
5.1 任务报名Controller模块
java
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("/renwuYuyue")
public class RenwuYuyueController {
private static final Logger logger = LoggerFactory.getLogger(RenwuYuyueController.class);
private static final String TABLE_NAME = "renwuYuyue";
@Autowired
private RenwuYuyueService renwuYuyueService;
@Autowired
private TokenService tokenService;
@Autowired
private ChatService chatService;//客服聊天
@Autowired
private DictionaryService dictionaryService;//字典
@Autowired
private ForumService forumService;//论坛
@Autowired
private NewsService newsService;//扶贫公告
@Autowired
private RenwuService renwuService;//任务信息
@Autowired
private XinwenService xinwenService;//新闻信息
@Autowired
private XinwenCollectionService xinwenCollectionService;//新闻收藏
@Autowired
private XinwenLiuyanService xinwenLiuyanService;//新闻留言
@Autowired
private YonghuService yonghuService;//用户
@Autowired
private UsersService usersService;//管理员
/**
* 后端列表
*/
@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(false)
return R.error(511,"永不会进入");
else if("用户".equals(role))
params.put("yonghuId",request.getSession().getAttribute("userId"));
CommonUtil.checkMap(params);
PageUtils page = renwuYuyueService.queryPage(params);
//字典表数据转换
List<RenwuYuyueView> list =(List<RenwuYuyueView>)page.getList();
for(RenwuYuyueView 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);
RenwuYuyueEntity renwuYuyue = renwuYuyueService.selectById(id);
if(renwuYuyue !=null){
//entity转view
RenwuYuyueView view = new RenwuYuyueView();
BeanUtils.copyProperties( renwuYuyue , view );//把实体数据重构到view中
//级联表 任务信息
//级联表
RenwuEntity renwu = renwuService.selectById(renwuYuyue.getRenwuId());
if(renwu != null){
BeanUtils.copyProperties( renwu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
view.setRenwuId(renwu.getId());
}
//级联表 用户
//级联表
YonghuEntity yonghu = yonghuService.selectById(renwuYuyue.getYonghuId());
if(yonghu != null){
BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到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 RenwuYuyueEntity renwuYuyue, HttpServletRequest request){
logger.debug("save方法:,,Controller:{},,renwuYuyue:{}",this.getClass().getName(),renwuYuyue.toString());
String role = String.valueOf(request.getSession().getAttribute("role"));
if(false)
return R.error(511,"永远不会进入");
else if("用户".equals(role))
renwuYuyue.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
Wrapper<RenwuYuyueEntity> queryWrapper = new EntityWrapper<RenwuYuyueEntity>()
.eq("renwu_id", renwuYuyue.getRenwuId())
.eq("yonghu_id", renwuYuyue.getYonghuId())
.in("renwu_yuyue_yesno_types", new Integer[]{1,2})
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
RenwuYuyueEntity renwuYuyueEntity = renwuYuyueService.selectOne(queryWrapper);
if(renwuYuyueEntity==null){
renwuYuyue.setRenwuYuyueYesnoTypes(1);
renwuYuyue.setInsertTime(new Date());
renwuYuyue.setCreateTime(new Date());
renwuYuyueService.insert(renwuYuyue);
return R.ok();
}else {
if(renwuYuyueEntity.getRenwuYuyueYesnoTypes()==1)
return R.error(511,"有相同的待审核的数据");
else if(renwuYuyueEntity.getRenwuYuyueYesnoTypes()==2)
return R.error(511,"有相同的审核通过的数据");
else
return R.error(511,"表中有相同数据");
}
}
/**
* 后端修改
*/
@RequestMapping("/update")
public R update(@RequestBody RenwuYuyueEntity renwuYuyue, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {
logger.debug("update方法:,,Controller:{},,renwuYuyue:{}",this.getClass().getName(),renwuYuyue.toString());
RenwuYuyueEntity oldRenwuYuyueEntity = renwuYuyueService.selectById(renwuYuyue.getId());//查询原先数据
String role = String.valueOf(request.getSession().getAttribute("role"));
// if(false)
// return R.error(511,"永远不会进入");
// else if("用户".equals(role))
// renwuYuyue.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
renwuYuyueService.updateById(renwuYuyue);//根据id更新
return R.ok();
}
/**
* 审核
*/
@RequestMapping("/shenhe")
public R shenhe(@RequestBody RenwuYuyueEntity renwuYuyueEntity, HttpServletRequest request){
logger.debug("shenhe方法:,,Controller:{},,renwuYuyueEntity:{}",this.getClass().getName(),renwuYuyueEntity.toString());
RenwuYuyueEntity oldRenwuYuyue = renwuYuyueService.selectById(renwuYuyueEntity.getId());//查询原先数据
if(renwuYuyueEntity.getRenwuYuyueYesnoTypes() == 2){//通过
RenwuEntity renwuEntity = renwuService.selectById(oldRenwuYuyue.getRenwuId());
if(renwuEntity.getZhugtaiTypes() == 2){
return R.error("该任务已被接取");
}else{
renwuEntity.setZhugtaiTypes(2);
renwuService.updateById(renwuEntity);
}
}
renwuYuyueService.updateById(renwuYuyueEntity);//审核
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Integer[] ids, HttpServletRequest request){
logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
List<RenwuYuyueEntity> oldRenwuYuyueList =renwuYuyueService.selectBatchIds(Arrays.asList(ids));//要删除的数据
renwuYuyueService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 批量上传
*/
@RequestMapping("/batchInsert")
public R save( String fileName, HttpServletRequest request){
logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//.eq("time", new SimpleDateFormat("yyyy-MM-dd").format(new Date()))
try {
List<RenwuYuyueEntity> renwuYuyueList = 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){
//循环
RenwuYuyueEntity renwuYuyueEntity = new RenwuYuyueEntity();
// renwuYuyueEntity.setRenwuId(Integer.valueOf(data.get(0))); //任务 要改的
// renwuYuyueEntity.setYonghuId(Integer.valueOf(data.get(0))); //用户 要改的
// renwuYuyueEntity.setRenwuYuyueYesnoTypes(Integer.valueOf(data.get(0))); //审核状态 要改的
// renwuYuyueEntity.setRenwuYuyueYesnoText(data.get(0)); //审核回复 要改的
// renwuYuyueEntity.setInsertTime(date);//时间
// renwuYuyueEntity.setCreateTime(date);//时间
renwuYuyueList.add(renwuYuyueEntity);
//把要查询是否重复的字段放入map中
}
//查询是否重复
renwuYuyueService.insertBatch(renwuYuyueList);
return R.ok();
}
}
}
}catch (Exception e){
e.printStackTrace();
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));
CommonUtil.checkMap(params);
PageUtils page = renwuYuyueService.queryPage(params);
//字典表数据转换
List<RenwuYuyueView> list =(List<RenwuYuyueView>)page.getList();
for(RenwuYuyueView 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);
RenwuYuyueEntity renwuYuyue = renwuYuyueService.selectById(id);
if(renwuYuyue !=null){
//entity转view
RenwuYuyueView view = new RenwuYuyueView();
BeanUtils.copyProperties( renwuYuyue , view );//把实体数据重构到view中
//级联表
RenwuEntity renwu = renwuService.selectById(renwuYuyue.getRenwuId());
if(renwu != null){
BeanUtils.copyProperties( renwu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
view.setRenwuId(renwu.getId());
}
//级联表
YonghuEntity yonghu = yonghuService.selectById(renwuYuyue.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 RenwuYuyueEntity renwuYuyue, HttpServletRequest request){
logger.debug("add方法:,,Controller:{},,renwuYuyue:{}",this.getClass().getName(),renwuYuyue.toString());
Wrapper<RenwuYuyueEntity> queryWrapper = new EntityWrapper<RenwuYuyueEntity>()
.eq("renwu_id", renwuYuyue.getRenwuId())
.eq("yonghu_id", renwuYuyue.getYonghuId())
.in("renwu_yuyue_yesno_types", new Integer[]{1,2})
.eq("renwu_yuyue_yesno_text", renwuYuyue.getRenwuYuyueYesnoText())
// .notIn("renwu_yuyue_types", new Integer[]{102})
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
RenwuYuyueEntity renwuYuyueEntity = renwuYuyueService.selectOne(queryWrapper);
if(renwuYuyueEntity==null){
renwuYuyue.setRenwuYuyueYesnoTypes(1);
renwuYuyue.setInsertTime(new Date());
renwuYuyue.setCreateTime(new Date());
renwuYuyueService.insert(renwuYuyue);
return R.ok();
}else {
if(renwuYuyueEntity.getRenwuYuyueYesnoTypes()==1)
return R.error(511,"有相同的待审核的数据");
else if(renwuYuyueEntity.getRenwuYuyueYesnoTypes()==2)
return R.error(511,"有相同的审核通过的数据");
else
return R.error(511,"表中有相同数据");
}
}
}
5.2 任务报名Service模块
java
package com.service;
import com.baomidou.mybatisplus.service.IService;
import com.utils.PageUtils;
import com.entity.RenwuYuyueEntity;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import java.util.List;
/**
* 任务报名 服务类
*/
public interface RenwuYuyueService extends IService<RenwuYuyueEntity> {
/**
* @param params 查询参数
* @return 带分页的查询出来的数据
*/
PageUtils queryPage(Map<String, Object> params);
}
5.3 任务报名ServiceImpl模块
java
package com.service.impl;
import com.utils.StringUtil;
import com.service.DictionaryService;
import com.utils.ClazzDiff;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.*;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import com.utils.PageUtils;
import com.utils.Query;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import com.dao.RenwuYuyueDao;
import com.entity.RenwuYuyueEntity;
import com.service.RenwuYuyueService;
import com.entity.view.RenwuYuyueView;
/**
* 任务报名 服务实现类
*/
@Service("renwuYuyueService")
@Transactional
public class RenwuYuyueServiceImpl extends ServiceImpl<RenwuYuyueDao, RenwuYuyueEntity> implements RenwuYuyueService {
@Override
public PageUtils queryPage(Map<String,Object> params) {
Page<RenwuYuyueView> page =new Query<RenwuYuyueView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,params));
return new PageUtils(page);
}
}
5.4 任务报名Dao模块
java
package com.dao;
import com.entity.RenwuYuyueEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import org.apache.ibatis.annotations.Param;
import com.entity.view.RenwuYuyueView;
/**
* 任务报名 Dao 接口
*
* @author
*/
public interface RenwuYuyueDao extends BaseMapper<RenwuYuyueEntity> {
List<RenwuYuyueView> selectListView(Pagination page,@Param("params")Map<String,Object> params);
}
6、论文目录结构
摘要... I
Abstract... II
1 绪论... 1
1.1 项目简介... 1
1.2 调查研究... 1
1.2.1 研究背景及意义... 1
1.2.2 国内外研究现状... 2
1.2.3 研究主要内容... 2
1.3 论文的章节安排... 3
2 系统相关技术介绍... 4
2.1 Java语言... 4
2.2 SpringBoot框架... 4
2.3 Vue框架... 4
2.4 MySQL数据库... 4
3 系统需求分析... 6
3.1 可行性分析... 6
3.1.1 技术可行性... 6
3.1.2 经济可行性... 6
3.1.3 操作可行性... 6
3.2 系统功能需求... 6
3.2.1 用户端功能需求... 6
3.2.2 XX端功能需求... 6
3.2.3 管理员端功能需求... 6
3.3 系统性能需求... 6
4 系统总体设计... 7
4.1 系统总体架构设计... 7
4.2 系统的功能设计... 7
4.3 数据库设计... 7
4.3.1 概念设计E-R图... 7
4.3.2 逻辑设计关系模式... 7
4.3.3 数据库物理设计... 7
5 系统详细实现... 14
5.1 系统实现环境... 14
5.2 用户端... 14
5.2.1 登录页面... 14
5.2.2 注册页面... 14
5.2.3 XXXX页面... 14
5.2.4 XXXX页面... 14
5.2.5 XXXX页面... 14
5.3 XXXX端... 15
5.3.1 XXXX页面... 15
5.3.2 XXXX页面... 15
5.3.3 XXXX页面... 15
5.3.4 XXXX页面... 15
5.4 管理端... 15
5.4.1 用户管理页面... 15
5.4.2 XXXX页面... 15
5.4.3 XXXX页面... 16
5.4.4 XXXX页面... 16
6 系统测试... 16
6.1 测试目的... 16
6.2 测试方法... 16
6.3 测试用例... 16
6.3.1 XXXX测试... 16
6.3.2 XXXX测试... 16
6.4 测试结果... 16
结论... 17
参考文献... 18
致谢... 19
更多源码:
7、源码获取
感谢大家的阅读,如有不懂的问题可以评论区交流或私聊!
喜欢文章可以点赞、收藏、关注、评论啦
→下方联系方式获取源码←