计算机毕业设计 基于SpringBoot的项目申报系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌
🍅文末获取源码联系🍅
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
————————————————
计算机毕业设计《1000套》✌

目录

1、项目介绍及开发技术

1.1 项目介绍

1.2 开发技术

2、系统功能设计结构图

3、功能截图

4、数据库表结构设计

5、关键代码

5.1 项目管理Controller模块 

5.2 项目管理Service模块 

5.3 项目管理ServiceImpl模块

5.4 项目管理Dao模块

6、论文目录结构

7、源码获取


1、项目介绍及开发技术

1.1 项目介绍

信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的项目申报系统实现了操作日志管理、字典管理、公告管理、留言板管理、资讯信息管理、项目管理、用户管理、专家管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让项目申报系统更能从理念走到现实,确确实实的让人们提升信息处理效率。

1.2 开发技术

Java开发语言、SpringBoot、MyBatisPlus、MySQL数据库、Maven、IDEA开发工具、JDK1.8+、Vue、HTML、CSS、JS。

2、系统功能设计结构图

3、功能截图

项目管理:对项目的增加、修改、删除、查看等功能进行操作。

公告信息管理: 管理员对公告信息进行新增公告,修改公告,删除公告等功能的操作。

公告类型管理: 公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。

资讯信息管理 :新增资讯信息,修改资讯信息,删除资讯信息。

资讯信息类型管理: 新增资讯信息类型,修改资讯信息类型,删除资讯信息类型。

4、数据库表结构设计

CREATE DATABASE /*!32312 IF NOT EXISTS*/`xiangmushenbaoxitong` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `xiangmushenbaoxitong`;/*Table structure for table `caozuorizhi` */DROP TABLE IF EXISTS `caozuorizhi`;CREATE TABLE `caozuorizhi` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`caozuorizhi_this_biao` varchar(200) DEFAULT NULL COMMENT '操作人所在表 Search111 ',`caozuorizhi_caozuobiao` varchar(200) DEFAULT NULL COMMENT '操作表 Search111 ',`caozuorizhi_caozuozhanghu` varchar(200) DEFAULT NULL COMMENT '操作账户 Search111 ',`caozuorizhi_caozuoleixing` varchar(200) DEFAULT NULL COMMENT '操作类型 Search111 ',`caozuorizhi_text` mediumtext COMMENT '操作内容 Search111 ',`insert_time` timestamp NULL DEFAULT NULL COMMENT '操作时间 Search111 ',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=259 DEFAULT CHARSET=utf8 COMMENT='操作日志';/*Data for the table `caozuorizhi` *//*Table structure for table `config` */DROP TABLE IF EXISTS `config`;CREATE TABLE `config` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',`name` varchar(100) DEFAULT NULL COMMENT '配置参数名称',`value` varchar(100) DEFAULT NULL COMMENT '配置参数值',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='配置文件';/*Data for the table `config` */insert  into `config`(`id`,`name`,`value`) values (1,'轮播图1111','upload/config1.jpg'),(2,'轮播图2','upload/config2.jpg'),(3,'轮播图3','upload/config3.jpg');/*Table structure for table `dictionary` */DROP TABLE IF EXISTS `dictionary`;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`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8 COMMENT='字典';/*Data for the table `dictionary` */insert  into `dictionary`(`id`,`dic_code`,`dic_name`,`code_index`,`index_name`,`super_id`,`beizhu`,`create_time`) values (1,'sex_types','性别类型',1,'男',NULL,NULL,'2023-03-30 17:04:06'),(2,'sex_types','性别类型',2,'女',NULL,NULL,'2023-03-30 17:04:06'),(3,'jinyong_types','账户状态',1,'启用',NULL,NULL,'2023-03-30 17:04:06'),(4,'jinyong_types','账户状态',2,'禁用',NULL,NULL,'2023-03-30 17:04:06'),(5,'xiangmu_dengji_types','项目等级',1,'市级',NULL,NULL,'2023-03-30 17:04:06'),(6,'xiangmu_dengji_types','项目等级',2,'省级',NULL,NULL,'2023-03-30 17:04:06'),(7,'xiangmu_dengji_types','项目等级',3,'国家级',NULL,NULL,'2023-03-30 17:04:06'),(8,'xiangmu_types','项目类型',1,'项目类型1',NULL,NULL,'2023-03-30 17:04:06'),(9,'xiangmu_types','项目类型',2,'项目类型2',NULL,NULL,'2023-03-30 17:04:06'),(10,'xiangmu_types','项目类型',3,'项目类型3',NULL,NULL,'2023-03-30 17:04:06'),(11,'xiangmu_types','项目类型',4,'项目类型4',NULL,NULL,'2023-03-30 17:04:06'),(12,'xiangmu_yesno_types','审核状态',1,'待审核',NULL,NULL,'2023-03-30 17:04:06'),(13,'xiangmu_yesno_types','审核状态',2,'同意',NULL,NULL,'2023-03-30 17:04:06'),(14,'xiangmu_yesno_types','审核状态',3,'拒绝',NULL,NULL,'2023-03-30 17:04:06'),(15,'news_types','资讯类型',1,'资讯类型1',NULL,NULL,'2023-03-30 17:04:06'),(16,'news_types','资讯类型',2,'资讯类型2',NULL,NULL,'2023-03-30 17:04:06'),(17,'gonggao_types','公告类型',1,'公告类型1',NULL,NULL,'2023-03-30 17:04:06'),(18,'gonggao_types','公告类型',2,'公告类型2',NULL,NULL,'2023-03-30 17:04:06'),(19,'xiangmu_types','项目类型',5,'项目类型5',NULL,'','2023-03-31 10:17:43');/*Table structure for table `gonggao` */DROP TABLE IF EXISTS `gonggao`;CREATE TABLE `gonggao` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`gonggao_name` varchar(200) DEFAULT NULL COMMENT '公告名称 Search111  ',`gonggao_photo` varchar(200) DEFAULT NULL COMMENT '公告图片 ',`gonggao_types` int(11) NOT NULL COMMENT '公告类型 Search111 ',`insert_time` timestamp NULL DEFAULT NULL COMMENT '公告发布时间 ',`gonggao_content` longtext COMMENT '公告详情 ',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show1 show2 nameShow',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='公告';/*Data for the table `gonggao` */insert  into `gonggao`(`id`,`gonggao_name`,`gonggao_photo`,`gonggao_types`,`insert_time`,`gonggao_content`,`create_time`) values (1,'公告名称1','upload/gonggao1.jpg',2,'2023-03-30 17:17:59','公告详情1','2023-03-30 17:17:59'),(2,'公告名称2','upload/gonggao2.jpg',2,'2023-03-30 17:17:59','公告详情2','2023-03-30 17:17:59'),(3,'公告名称3','upload/gonggao3.jpg',1,'2023-03-30 17:17:59','公告详情3','2023-03-30 17:17:59'),(4,'公告名称4','upload/gonggao4.jpg',1,'2023-03-30 17:17:59','公告详情4','2023-03-30 17:17:59'),(5,'公告名称5','upload/gonggao5.jpg',2,'2023-03-30 17:17:59','公告详情5','2023-03-30 17:17:59'),(6,'公告名称6','upload/gonggao6.jpg',1,'2023-03-30 17:17:59','公告详情6','2023-03-30 17:17:59'),(7,'公告名称7','upload/gonggao7.jpg',2,'2023-03-30 17:17:59','公告详情7','2023-03-30 17:17:59'),(8,'公告名称8','upload/gonggao8.jpg',2,'2023-03-30 17:17:59','公告详情8','2023-03-30 17:17:59'),(9,'公告名称9','upload/gonggao9.jpg',1,'2023-03-30 17:17:59','公告详情9','2023-03-30 17:17:59'),(10,'公告名称10','upload/gonggao10.jpg',1,'2023-03-30 17:17:59','公告详情10','2023-03-30 17:17:59'),(11,'公告名称11','upload/gonggao11.jpg',1,'2023-03-30 17:17:59','公告详情11','2023-03-30 17:17:59'),(12,'公告名称12','upload/gonggao12.jpg',2,'2023-03-30 17:17:59','公告详情12','2023-03-30 17:17:59'),(13,'公告名称13','upload/gonggao13.jpg',1,'2023-03-30 17:17:59','公告详情13','2023-03-30 17:17:59'),(14,'公告名称14','upload/gonggao14.jpg',2,'2023-03-30 17:17:59','公告详情14','2023-03-30 17:17:59');/*Table structure for table `liuyan` */DROP TABLE IF EXISTS `liuyan`;CREATE TABLE `liuyan` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`yonghu_id` int(11) DEFAULT NULL COMMENT '用户',`liuyan_name` varchar(200) DEFAULT NULL COMMENT '留言标题  Search111 ',`liuyan_text` longtext COMMENT '留言内容',`insert_time` timestamp NULL DEFAULT NULL COMMENT '留言时间',`reply_text` longtext COMMENT '回复内容',`update_time` timestamp NULL DEFAULT NULL COMMENT '回复时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show2 nameShow',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='留言板';/*Data for the table `liuyan` */insert  into `liuyan`(`id`,`yonghu_id`,`liuyan_name`,`liuyan_text`,`insert_time`,`reply_text`,`update_time`,`create_time`) values (1,3,'留言标题1','留言内容1','2023-03-30 17:17:59','回复信息1','2023-03-30 17:17:59','2023-03-30 17:17:59'),(2,1,'留言标题2','留言内容2','2023-03-30 17:17:59','回复信息2','2023-03-30 17:17:59','2023-03-30 17:17:59'),(3,1,'留言标题3','留言内容3','2023-03-30 17:17:59','回复信息3','2023-03-30 17:17:59','2023-03-30 17:17:59'),(4,1,'留言标题4','留言内容4','2023-03-30 17:17:59','回复信息4','2023-03-30 17:17:59','2023-03-30 17:17:59'),(5,3,'留言标题5','留言内容5','2023-03-30 17:17:59','回复信息5','2023-03-30 17:17:59','2023-03-30 17:17:59'),(6,3,'留言标题6','留言内容6','2023-03-30 17:17:59','回复信息6','2023-03-30 17:17:59','2023-03-30 17:17:59'),(7,1,'留言标题7','留言内容7','2023-03-30 17:17:59','回复信息7','2023-03-30 17:17:59','2023-03-30 17:17:59'),(8,1,'留言标题8','留言内容8','2023-03-30 17:17:59','回复信息8','2023-03-30 17:17:59','2023-03-30 17:17:59'),(9,3,'留言标题9','留言内容9','2023-03-30 17:17:59','回复信息9','2023-03-30 17:17:59','2023-03-30 17:17:59'),(10,3,'留言标题10','留言内容10','2023-03-30 17:17:59','回复信息10','2023-03-30 17:17:59','2023-03-30 17:17:59'),(11,3,'留言标题11','留言内容11','2023-03-30 17:17:59','回复信息11','2023-03-30 17:17:59','2023-03-30 17:17:59'),(12,2,'留言标题12','留言内容12','2023-03-30 17:17:59','回复信息12','2023-03-30 17:17:59','2023-03-30 17:17:59'),(13,2,'留言标题13','留言内容13','2023-03-30 17:17:59','回复信息13','2023-03-30 17:17:59','2023-03-30 17:17:59'),(14,3,'留言标题14','留言内容14','2023-03-30 17:17:59','回复信息14','2023-03-30 17:17:59','2023-03-30 17:17:59'),(15,4,'标题111','改大纲','2023-03-31 10:16:32','黑胡椒','2023-03-31 10:17:51','2023-03-31 10:16:32');/*Table structure for table `news` */DROP TABLE IF EXISTS `news`;CREATE TABLE `news` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`news_name` varchar(200) DEFAULT NULL COMMENT '资讯名称 Search111  ',`news_photo` varchar(200) DEFAULT NULL COMMENT '资讯图片 ',`news_types` int(11) NOT NULL COMMENT '资讯类型 Search111  ',`insert_time` timestamp NULL DEFAULT NULL COMMENT '资讯发布时间 ',`news_content` longtext COMMENT '资讯详情 ',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show1 show2 nameShow',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='资讯信息';/*Data for the table `news` */insert  into `news`(`id`,`news_name`,`news_photo`,`news_types`,`insert_time`,`news_content`,`create_time`) values (1,'资讯名称1','upload/news1.jpg',1,'2023-03-30 17:17:59','资讯详情1','2023-03-30 17:17:59'),(2,'资讯名称2','upload/news2.jpg',2,'2023-03-30 17:17:59','资讯详情2','2023-03-30 17:17:59'),(3,'资讯名称3','upload/news3.jpg',2,'2023-03-30 17:17:59','资讯详情3','2023-03-30 17:17:59'),(4,'资讯名称4','upload/news4.jpg',1,'2023-03-30 17:17:59','资讯详情4','2023-03-30 17:17:59'),(5,'资讯名称5','upload/news5.jpg',1,'2023-03-30 17:17:59','资讯详情5','2023-03-30 17:17:59'),(6,'资讯名称6','upload/news6.jpg',1,'2023-03-30 17:17:59','资讯详情6','2023-03-30 17:17:59'),(7,'资讯名称7','upload/news7.jpg',2,'2023-03-30 17:17:59','资讯详情7','2023-03-30 17:17:59'),(8,'资讯名称8','upload/news8.jpg',1,'2023-03-30 17:17:59','资讯详情8','2023-03-30 17:17:59'),(9,'资讯名称9','upload/news9.jpg',1,'2023-03-30 17:17:59','资讯详情9','2023-03-30 17:17:59'),(10,'资讯名称10','upload/news10.jpg',2,'2023-03-30 17:17:59','资讯详情10','2023-03-30 17:17:59'),(11,'资讯名称11','upload/news11.jpg',2,'2023-03-30 17:17:59','资讯详情11','2023-03-30 17:17:59'),(12,'资讯名称12','upload/news12.jpg',2,'2023-03-30 17:17:59','资讯详情12','2023-03-30 17:17:59'),(13,'资讯名称13','upload/news13.jpg',1,'2023-03-30 17:17:59','资讯详情13','2023-03-30 17:17:59'),(14,'资讯名称14','upload/news14.jpg',2,'2023-03-30 17:17:59','资讯详情14','2023-03-30 17:17:59');/*Table structure for table `token` */DROP TABLE IF EXISTS `token`;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`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='token表';/*Data for the table `token` */insert  into `token`(`id`,`userid`,`username`,`tablename`,`role`,`token`,`addtime`,`expiratedtime`) values (1,1,'admin','users','管理员','5wc6d1y9hgvr5by12486kpt1686syrgb','2023-03-31 09:23:44','2023-03-31 11:22:37'),(2,3,'a3','yonghu','用户','u84laf6ckvr5uh7fkbemvmlwu362rw83','2023-03-31 09:27:26','2023-03-31 11:17:20'),(3,1,'a1','zhuanjia','专家','8zadrvgcq5hpvgx9qbxabf1yltbsidra','2023-03-31 10:11:59','2023-03-31 11:18:26'),(4,4,'a5','yonghu','用户','eadsihd4log3cv2red9s2rkgv85z48bg','2023-03-31 10:16:11','2023-03-31 11:16:12');/*Table structure for table `users` */DROP TABLE IF EXISTS `users`;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='管理员';/*Data for the table `users` */insert  into `users`(`id`,`username`,`password`,`role`,`addtime`) values (1,'admin','admin','管理员','2023-03-30 17:04:06');/*Table structure for table `xiangmu` */DROP TABLE IF EXISTS `xiangmu`;CREATE TABLE `xiangmu` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`yonghu_id` int(11) DEFAULT NULL COMMENT '用户',`zhuanjia_id` int(11) DEFAULT NULL COMMENT '专家',`xiangmu_uuid_number` varchar(200) DEFAULT NULL COMMENT '项目编号',`xiangmu_name` varchar(200) DEFAULT NULL COMMENT '项目名称  Search111 ',`xiangmu_photo` varchar(200) DEFAULT NULL COMMENT '项目照片',`xiangmu_address` varchar(200) DEFAULT NULL COMMENT '项目地点',`xiangmu_kaishi_time` timestamp NULL DEFAULT NULL COMMENT '项目开始时间',`xiangmu_jieshu_time` timestamp NULL DEFAULT NULL COMMENT '项目结束时间',`xiangmu_types` int(11) DEFAULT NULL COMMENT '项目类型 Search111',`xiangmu_dengji_types` int(11) DEFAULT NULL COMMENT '项目等级 Search111',`xiangmu_content` longtext COMMENT '项目介绍 ',`insert_time` timestamp NULL DEFAULT NULL COMMENT '录入时间',`xiangmu_yesno_types` int(11) DEFAULT NULL COMMENT '审核状态 Search111',`xiangmu_yesno_text` longtext COMMENT '审核意见',`xiangmu_shenhe_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='项目';/*Data for the table `xiangmu` */insert  into `xiangmu`(`id`,`yonghu_id`,`zhuanjia_id`,`xiangmu_uuid_number`,`xiangmu_name`,`xiangmu_photo`,`xiangmu_address`,`xiangmu_kaishi_time`,`xiangmu_jieshu_time`,`xiangmu_types`,`xiangmu_dengji_types`,`xiangmu_content`,`insert_time`,`xiangmu_yesno_types`,`xiangmu_yesno_text`,`xiangmu_shenhe_time`,`create_time`) values (1,3,2,'1680167879791','项目名称1','upload/xiangmu1.jpg','项目地点1','2023-03-30 17:17:59','2023-03-30 17:17:59',3,1,'项目介绍1','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(2,3,2,'1680167879834','项目名称2','upload/xiangmu2.jpg','项目地点2','2023-03-30 17:17:59','2023-03-30 17:17:59',3,3,'项目介绍2','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(3,2,1,'1680167879802','项目名称3','upload/xiangmu3.jpg','项目地点3','2023-03-30 17:17:59','2023-03-30 17:17:59',1,3,'项目介绍3','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(4,2,1,'1680167879843','项目名称4','upload/xiangmu4.jpg','项目地点4','2023-03-30 17:17:59','2023-03-30 17:17:59',1,2,'项目介绍4','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(5,2,3,'1680167879779','项目名称5','upload/xiangmu5.jpg','项目地点5','2023-03-30 17:17:59','2023-03-30 17:17:59',2,3,'项目介绍5','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(6,1,1,'1680167879844','项目名称6','upload/xiangmu6.jpg','项目地点6','2023-03-30 17:17:59','2023-03-30 17:17:59',3,1,'项目介绍6','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(7,3,3,'1680167879850','项目名称7','upload/xiangmu7.jpg','项目地点7','2023-03-30 17:17:59','2023-03-30 17:17:59',2,3,'项目介绍7','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(8,3,3,'1680167879848','项目名称8','upload/xiangmu8.jpg','项目地点8','2023-03-30 17:17:59','2023-03-30 17:17:59',1,1,'项目介绍8','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(9,3,1,'1680167879859','项目名称9','upload/xiangmu9.jpg','项目地点9','2023-03-30 17:17:59','2023-03-30 17:17:59',3,1,'项目介绍9','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(10,3,3,'1680167879866','项目名称10','upload/xiangmu10.jpg','项目地点10','2023-03-30 17:17:59','2023-03-30 17:17:59',1,3,'项目介绍10','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(11,2,2,'1680167879871','项目名称11','upload/xiangmu11.jpg','项目地点11','2023-03-30 17:17:59','2023-03-30 17:17:59',1,2,'项目介绍11','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(12,3,3,'1680167879868','项目名称12','upload/xiangmu12.jpg','项目地点12','2023-03-30 17:17:59','2023-03-30 17:17:59',3,1,'项目介绍12','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(13,1,2,'1680167879826','项目名称13','upload/xiangmu13.jpg','项目地点13','2023-03-30 17:17:59','2023-03-30 17:17:59',4,2,'项目介绍13','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(14,1,1,'1680167879795','项目名称14','upload/xiangmu14.jpg','项目地点14','2023-03-30 17:17:59','2023-03-30 17:17:59',3,1,'项目介绍14','2023-03-30 17:17:59',2,'同意','2023-03-30 17:17:59','2023-03-30 17:17:59'),(15,3,1,'1680228079138','项目11','upload/1680228087580.jpg','项目地点','2023-04-01 00:00:00','2023-04-01 00:00:00',3,2,'固定死公司大概多少','2023-03-31 10:02:11',3,'沟沟壑壑','2023-03-31 10:12:09','2023-03-31 10:02:11'),(16,4,1,'1680229005457','项目333','upload/1680229010609.jpg','地点222','2023-04-01 00:00:00','2023-04-06 00:00:00',3,2,'合适的话啥都好说的','2023-03-31 10:17:07',2,'回家考虑','2023-03-31 10:18:44','2023-03-31 10:17:07');/*Table structure for table `yonghu` */DROP TABLE IF EXISTS `yonghu`;CREATE TABLE `yonghu` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`username` varchar(200) DEFAULT NULL COMMENT '账户',`password` varchar(200) DEFAULT NULL COMMENT '密码',`yonghu_name` varchar(200) DEFAULT NULL COMMENT '用户姓名 Search111 ',`yonghu_phone` varchar(200) DEFAULT NULL COMMENT '用户手机号',`yonghu_id_number` varchar(200) DEFAULT NULL COMMENT '用户身份证号',`yonghu_photo` varchar(200) DEFAULT NULL COMMENT '用户头像',`sex_types` int(11) DEFAULT NULL COMMENT '性别',`yonghu_email` varchar(200) DEFAULT NULL COMMENT '用户邮箱',`jinyong_types` int(11) DEFAULT NULL COMMENT '账户状态 Search111 ',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='用户';/*Data for the table `yonghu` */insert  into `yonghu`(`id`,`username`,`password`,`yonghu_name`,`yonghu_phone`,`yonghu_id_number`,`yonghu_photo`,`sex_types`,`yonghu_email`,`jinyong_types`,`create_time`) values (1,'a1','123456','用户姓名1','17703786901','410224199010102001','upload/yonghu1.jpg',1,'1@qq.com',2,'2023-03-30 17:17:59'),(2,'a2','123456','用户姓名2','17703786902','410224199010102002','upload/yonghu2.jpg',2,'2@qq.com',1,'2023-03-30 17:17:59'),(3,'a3','123456','用户姓名3','17703786903','410224199010102003','upload/yonghu3.jpg',2,'3@qq.com',1,'2023-03-30 17:17:59'),(4,'a5','123456','张5','17788889999','444555666699999999','upload/1680229002588.jpg',2,'5@qq.com',1,'2023-03-31 10:16:07');/*Table structure for table `zhuanjia` */DROP TABLE IF EXISTS `zhuanjia`;CREATE TABLE `zhuanjia` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`username` varchar(200) DEFAULT NULL COMMENT '账户',`password` varchar(200) DEFAULT NULL COMMENT '密码',`zhuanjia_name` varchar(200) DEFAULT NULL COMMENT '专家姓名 Search111 ',`zhuanjia_phone` varchar(200) DEFAULT NULL COMMENT '专家手机号',`zhuanjia_id_number` varchar(200) DEFAULT NULL COMMENT '专家身份证号',`zhuanjia_photo` varchar(200) DEFAULT NULL COMMENT '专家头像',`sex_types` int(11) DEFAULT NULL COMMENT '性别',`zhuanjia_email` varchar(200) DEFAULT NULL COMMENT '专家邮箱',`jinyong_types` int(11) DEFAULT NULL COMMENT '账户状态 Search111 ',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='专家';/*Data for the table `zhuanjia` */insert  into `zhuanjia`(`id`,`username`,`password`,`zhuanjia_name`,`zhuanjia_phone`,`zhuanjia_id_number`,`zhuanjia_photo`,`sex_types`,`zhuanjia_email`,`jinyong_types`,`create_time`) values (1,'a1','123456','专家姓名1','17703786901','410224199010102001','upload/zhuanjia1.jpg',1,'1@qq.com',1,'2023-03-30 17:17:59'),(2,'a2','123456','专家姓名2','17703786902','410224199010102002','upload/zhuanjia2.jpg',1,'2@qq.com',1,'2023-03-30 17:17:59'),(3,'a3','123456','专家姓名3','17703786903','410224199010102003','upload/zhuanjia3.jpg',1,'3@qq.com',1,'2023-03-30 17:17:59');/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

5、关键代码

5.1 项目管理Controller模块 

/*** 项目* 后端接口* @author  学长编程* @email* WeChat  jsjbysj88
*/
@RestController
@Controller
@RequestMapping("/xiangmu")
public class XiangmuController {private static final Logger logger = LoggerFactory.getLogger(XiangmuController.class);private static final String TABLE_NAME = "xiangmu";@Autowiredprivate XiangmuService xiangmuService;@Autowiredprivate TokenService tokenService;@Autowiredprivate CaozuorizhiService caozuorizhiService;//操作日志@Autowiredprivate DictionaryService dictionaryService;//字典@Autowiredprivate GonggaoService gonggaoService;//公告@Autowiredprivate LiuyanService liuyanService;//留言板@Autowiredprivate NewsService newsService;//资讯信息@Autowiredprivate YonghuService yonghuService;//用户@Autowiredprivate ZhuanjiaService zhuanjiaService;//专家@Autowiredprivate 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"));else if("专家".equals(role))params.put("zhuanjiaId",request.getSession().getAttribute("userId"));CommonUtil.checkMap(params);PageUtils page = xiangmuService.queryPage(params);//字典表数据转换List<XiangmuView> list =(List<XiangmuView>)page.getList();for(XiangmuView c:list){//修改对应字典表字段dictionaryService.dictionaryConvert(c, request);}caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"列表查询",list.toString());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);XiangmuEntity xiangmu = xiangmuService.selectById(id);if(xiangmu !=null){//entity转viewXiangmuView view = new XiangmuView();BeanUtils.copyProperties( xiangmu , view );//把实体数据重构到view中//级联表 用户//级联表YonghuEntity yonghu = yonghuService.selectById(xiangmu.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"
, "zhuanjiaId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表view.setYonghuId(yonghu.getId());}//级联表 专家//级联表ZhuanjiaEntity zhuanjia = zhuanjiaService.selectById(xiangmu.getZhuanjiaId());if(zhuanjia != null){BeanUtils.copyProperties( zhuanjia , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"
, "zhuanjiaId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表view.setZhuanjiaId(zhuanjia.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"单条数据查看",view.toString());return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody XiangmuEntity xiangmu, HttpServletRequest request){logger.debug("save方法:,,Controller:{},,xiangmu:{}",this.getClass().getName(),xiangmu.toString());String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永远不会进入");else if("用户".equals(role))xiangmu.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));else if("专家".equals(role))xiangmu.setZhuanjiaId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));Wrapper<XiangmuEntity> queryWrapper = new EntityWrapper<XiangmuEntity>().eq("yonghu_id", xiangmu.getYonghuId()).eq("zhuanjia_id", xiangmu.getZhuanjiaId()).eq("xiangmu_name", xiangmu.getXiangmuName()).eq("xiangmu_address", xiangmu.getXiangmuAddress()).eq("xiangmu_types", xiangmu.getXiangmuTypes()).eq("xiangmu_dengji_types", xiangmu.getXiangmuDengjiTypes()).in("xiangmu_yesno_types", new Integer[]{1,2});logger.info("sql语句:"+queryWrapper.getSqlSegment());XiangmuEntity xiangmuEntity = xiangmuService.selectOne(queryWrapper);if(xiangmuEntity==null){xiangmu.setInsertTime(new Date());xiangmu.setXiangmuYesnoTypes(1);xiangmu.setCreateTime(new Date());xiangmuService.insert(xiangmu);caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"新增",xiangmu.toString());return R.ok();}else {if(xiangmuEntity.getXiangmuYesnoTypes()==1)return R.error(511,"有相同的待审核的数据");else if(xiangmuEntity.getXiangmuYesnoTypes()==2)return R.error(511,"有相同的审核通过的数据");elsereturn R.error(511,"表中有相同数据");}}/*** 后端修改*/@RequestMapping("/update")public R update(@RequestBody XiangmuEntity xiangmu, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {logger.debug("update方法:,,Controller:{},,xiangmu:{}",this.getClass().getName(),xiangmu.toString());XiangmuEntity oldXiangmuEntity = xiangmuService.selectById(xiangmu.getId());//查询原先数据String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("用户".equals(role))
//            xiangmu.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
//        else if("专家".equals(role))
//            xiangmu.setZhuanjiaId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));if("".equals(xiangmu.getXiangmuPhoto()) || "null".equals(xiangmu.getXiangmuPhoto())){xiangmu.setXiangmuPhoto(null);}xiangmuService.updateById(xiangmu);//根据id更新List<String> strings = caozuorizhiService.clazzDiff(xiangmu, oldXiangmuEntity, request,new String[]{"updateTime"});caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"修改",strings.toString());return R.ok();}/*** 审核*/@RequestMapping("/shenhe")public R shenhe(@RequestBody XiangmuEntity xiangmuEntity, HttpServletRequest request){logger.debug("shenhe方法:,,Controller:{},,xiangmuEntity:{}",this.getClass().getName(),xiangmuEntity.toString());XiangmuEntity oldXiangmu = xiangmuService.selectById(xiangmuEntity.getId());//查询原先数据String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永远不会进入");else if("用户".equals(role))xiangmuEntity.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));else if("专家".equals(role))xiangmuEntity.setZhuanjiaId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));if(xiangmuEntity.getXiangmuYesnoTypes() == 2){//通过}else if(xiangmuEntity.getXiangmuYesnoTypes() == 3){//拒绝}xiangmuEntity.setXiangmuShenheTime(new Date());//审核时间xiangmuService.updateById(xiangmuEntity);//审核caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"审核数据","审核"+oldXiangmu+"数据,审核结果是"+(xiangmuEntity.getXiangmuYesnoTypes()==2?"通过":"拒绝"));return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Integer[] ids, HttpServletRequest request){logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());List<XiangmuEntity> oldXiangmuList =xiangmuService.selectBatchIds(Arrays.asList(ids));//要删除的数据xiangmuService.deleteBatchIds(Arrays.asList(ids));caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"删除",oldXiangmuList.toString());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<XiangmuEntity> xiangmuList = 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){//循环XiangmuEntity xiangmuEntity = new XiangmuEntity();
//                            xiangmuEntity.setYonghuId(Integer.valueOf(data.get(0)));   //用户 要改的
//                            xiangmuEntity.setZhuanjiaId(Integer.valueOf(data.get(0)));   //专家 要改的
//                            xiangmuEntity.setXiangmuUuidNumber(data.get(0));                    //项目编号 要改的
//                            xiangmuEntity.setXiangmuName(data.get(0));                    //项目名称 要改的
//                            xiangmuEntity.setXiangmuPhoto("");//详情和图片
//                            xiangmuEntity.setXiangmuAddress(data.get(0));                    //项目地点 要改的
//                            xiangmuEntity.setXiangmuKaishiTime(sdf.parse(data.get(0)));          //项目开始时间 要改的
//                            xiangmuEntity.setXiangmuJieshuTime(sdf.parse(data.get(0)));          //项目结束时间 要改的
//                            xiangmuEntity.setXiangmuTypes(Integer.valueOf(data.get(0)));   //项目类型 要改的
//                            xiangmuEntity.setXiangmuDengjiTypes(Integer.valueOf(data.get(0)));   //项目等级 要改的
//                            xiangmuEntity.setXiangmuContent("");//详情和图片
//                            xiangmuEntity.setInsertTime(date);//时间
//                            xiangmuEntity.setXiangmuYesnoTypes(Integer.valueOf(data.get(0)));   //审核状态 要改的
//                            xiangmuEntity.setXiangmuYesnoText(data.get(0));                    //审核意见 要改的
//                            xiangmuEntity.setXiangmuShenheTime(sdf.parse(data.get(0)));          //审核时间 要改的
//                            xiangmuEntity.setCreateTime(date);//时间xiangmuList.add(xiangmuEntity);//把要查询是否重复的字段放入map中//项目编号if(seachFields.containsKey("xiangmuUuidNumber")){List<String> xiangmuUuidNumber = seachFields.get("xiangmuUuidNumber");xiangmuUuidNumber.add(data.get(0));//要改的}else{List<String> xiangmuUuidNumber = new ArrayList<>();xiangmuUuidNumber.add(data.get(0));//要改的seachFields.put("xiangmuUuidNumber",xiangmuUuidNumber);}}//查询是否重复//项目编号List<XiangmuEntity> xiangmuEntities_xiangmuUuidNumber = xiangmuService.selectList(new EntityWrapper<XiangmuEntity>().in("xiangmu_uuid_number", seachFields.get("xiangmuUuidNumber")));if(xiangmuEntities_xiangmuUuidNumber.size() >0 ){ArrayList<String> repeatFields = new ArrayList<>();for(XiangmuEntity s:xiangmuEntities_xiangmuUuidNumber){repeatFields.add(s.getXiangmuUuidNumber());}return R.error(511,"数据库的该表中的 [项目编号] 字段已经存在 存在数据为:"+repeatFields.toString());}xiangmuService.insertBatch(xiangmuList);caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"批量新增",xiangmuList.toString());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 = xiangmuService.queryPage(params);//字典表数据转换List<XiangmuView> list =(List<XiangmuView>)page.getList();for(XiangmuView c:list)dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"列表查询",list.toString());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);XiangmuEntity xiangmu = xiangmuService.selectById(id);if(xiangmu !=null){//entity转viewXiangmuView view = new XiangmuView();BeanUtils.copyProperties( xiangmu , view );//把实体数据重构到view中//级联表YonghuEntity yonghu = yonghuService.selectById(xiangmu.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段view.setYonghuId(yonghu.getId());}//级联表ZhuanjiaEntity zhuanjia = zhuanjiaService.selectById(xiangmu.getZhuanjiaId());if(zhuanjia != null){BeanUtils.copyProperties( zhuanjia , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段view.setZhuanjiaId(zhuanjia.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"单条数据查看",view.toString());return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody XiangmuEntity xiangmu, HttpServletRequest request){logger.debug("add方法:,,Controller:{},,xiangmu:{}",this.getClass().getName(),xiangmu.toString());Wrapper<XiangmuEntity> queryWrapper = new EntityWrapper<XiangmuEntity>().eq("yonghu_id", xiangmu.getYonghuId()).eq("zhuanjia_id", xiangmu.getZhuanjiaId()).eq("xiangmu_uuid_number", xiangmu.getXiangmuUuidNumber()).eq("xiangmu_name", xiangmu.getXiangmuName()).eq("xiangmu_address", xiangmu.getXiangmuAddress()).eq("xiangmu_types", xiangmu.getXiangmuTypes()).eq("xiangmu_dengji_types", xiangmu.getXiangmuDengjiTypes()).in("xiangmu_yesno_types", new Integer[]{1,2}).eq("xiangmu_yesno_text", xiangmu.getXiangmuYesnoText())
//            .notIn("xiangmu_types", new Integer[]{102});logger.info("sql语句:"+queryWrapper.getSqlSegment());XiangmuEntity xiangmuEntity = xiangmuService.selectOne(queryWrapper);if(xiangmuEntity==null){xiangmu.setInsertTime(new Date());xiangmu.setXiangmuYesnoTypes(1);xiangmu.setCreateTime(new Date());xiangmuService.insert(xiangmu);caozuorizhiService.insertCaozuorizhi(String.valueOf(request.getSession().getAttribute("role")),TABLE_NAME,String.valueOf(request.getSession().getAttribute("username")),"前台新增",xiangmu.toString());return R.ok();}else {if(xiangmuEntity.getXiangmuYesnoTypes()==1)return R.error(511,"有相同的待审核的数据");else if(xiangmuEntity.getXiangmuYesnoTypes()==2)return R.error(511,"有相同的审核通过的数据");elsereturn R.error(511,"表中有相同数据");}}}

5.2 项目管理Service模块 

package com.service;import com.baomidou.mybatisplus.service.IService;
import com.utils.PageUtils;
import com.entity.XiangmuEntity;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import java.util.List;/*** 项目 服务类*/
public interface XiangmuService extends IService<XiangmuEntity> {/*** @param params 查询参数* @return 带分页的查询出来的数据*/PageUtils queryPage(Map<String, Object> params);}

5.3 项目管理ServiceImpl模块

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.XiangmuDao;
import com.entity.XiangmuEntity;
import com.service.XiangmuService;
import com.entity.view.XiangmuView;/*** 项目 服务实现类*/
@Service("xiangmuService")
@Transactional
public class XiangmuServiceImpl extends ServiceImpl<XiangmuDao, XiangmuEntity> implements XiangmuService {@Overridepublic PageUtils queryPage(Map<String,Object> params) {Page<XiangmuView> page =new Query<XiangmuView>(params).getPage();page.setRecords(baseMapper.selectListView(page,params));return new PageUtils(page);}}

5.4 项目管理Dao模块

package com.dao;import com.entity.XiangmuEntity;
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.XiangmuView;/*** 项目 Dao 接口** @author  学长编程* WeChat   jsjbysj88 
*/
public interface XiangmuDao extends BaseMapper<XiangmuEntity> {List<XiangmuView> selectListView(Pagination page,@Param("params")Map<String,Object> params);}

6、论文目录结构

7、源码获取

感谢大家的阅读,如有不懂的问题可以评论区交流或私聊!

喜欢文章可以点赞、收藏、关注、评论

获取源码请私信

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/609461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序媛的mac修炼手册-- 终端(terminal)常用命令

「终端&#xff08;terminal&#xff09;」相当于macOS的一个 App &#xff0c;它的特殊之处是&#xff0c;它是管理其它App的App&#xff0c;操作主要通过命令行界面 (CLI) 。 相比于我们日常熟悉的用户界面&#xff08;User Interface&#xff0c;UI&#xff09;&#xff0c…

Redis 主从、哨兵和分片集群简单介绍

Redis 主从集群架构 单节点 redis 并发能力有上限&#xff0c;要进一步提高 redis 并发能力&#xff0c;就要搭建主从集群&#xff0c;实现读写分离 主从同步原理 Replicaition id&#xff1a;每台 master 机器都一个 repl_id&#xff0c;是数据集的表示&#xff0c;若 salv…

软件测试|如何在Pycharm中配置文件头部信息

简介 PyCharm是一款功能强大的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;在开发过程中&#xff0c;我们经常需要在代码文件的开头添加固定的文件说明信息&#xff0c;例如版权声明、作者信息、创建日期等。手动添加这些信息可能会很繁琐&#xff0c;但是PyCh…

[Vulnhub靶机] DriftingBlues: 5

[Vulnhub靶机] DriftingBlues: 5靶机渗透思路及方法&#xff08;个人分享&#xff09; 靶机下载地址&#xff1a; https://download.vulnhub.com/driftingblues/driftingblues5_vh.ova 靶机地址&#xff1a;192.168.67.24 攻击机地址&#xff1a;192.168.67.3 一、信息收集 …

探索人工智能:深度学习、人工智能安全和人工智能

深度学习是人工智能的一种重要技术&#xff0c;它模拟了人类大脑神经网络的工作原理&#xff0c;通过建立多层次的神经元网络来实现对数据的分析和处理。这种技术的引入使得人工智能的发展进入到了一个新的阶段。 现如今&#xff0c;深度学习在各个领域都有着广泛的应用。例如…

Java设计模式-访问者模式

访问者模式 一、概述二、结构三、案例实现四、优缺点五、使用场景六、扩展 一、概述 定义&#xff1a; 封装一些作用于某种数据结构中的各元素的操作&#xff0c;它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。 二、结构 访问者模式包含以下主要角色: …

Echarts——使用graphic组件在一个option内同时设置两个饼图的背景图

使用echarts的graphic原生图形元素组件&#xff0c;为两个饼图设置对应背景。 <template><div id"app"><div class"charts" ref"charts"></div></div> </template><script> import * as echarts from…

【ROS】小车机器视觉巡线行驶

摄像头 USB摄像头是最普遍的摄像头&#xff0c;如笔记本内置的摄像头&#xff0c;在ROS中使用这类设备很简单&#xff0c;可以直接使用usb_cam功能包驱动&#xff0c;USB摄像头输出的是二维图像数据。 usb_cam是针对V4L协议USB摄像头的ROS驱动包&#xff0c;核心节点是usb_cam…

2024年跨境电商上半年营销日历最全整理

2024年伊始&#xff0c;跨境电商开启新一轮的营销竞技&#xff0c;那么首先需要客户需求&#xff0c;节假日与用户需求息息相关&#xff0c;那么接下来小编为大家整理2024上半年海外都有哪些节日和假期&#xff1f;跨境卖家如何见针对营销日历选品&#xff0c;助力卖家把握2024…

软件测试|MySQL 非空约束详解

简介 MySQL中的非空约束&#xff08;NOT NULL Constraint&#xff09;是一种用于确保表中某列不允许为空值的数据库约束。非空约束的作用是保证特定列的数据始终包含有效值&#xff0c;防止在插入或更新操作时出现空值&#xff0c;从而维护数据的完整性和一致性。在本文中&…

学习笔记之——3D Gaussian Splatting及其在SLAM与自动驾驶上的应用调研

之前博客介绍了NeRF-SLAM&#xff0c;其中对于3D Gaussian Splatting没有太深入介绍。本博文对3D Gaussian Splatting相关的一些工作做调研。 学习笔记之——NeRF SLAM&#xff08;基于神经辐射场的SLAM&#xff09;-CSDN博客文章浏览阅读967次&#xff0c;点赞22次&#xff0…

matlab生成列是0-255渐变的图像

图像大小&#xff1a;640512 8位灰度图 %% 生成图像 %大小&#xff1a;640*512 %类型&#xff1a;灰度图 %灰度值&#xff1a;列按照0-255渐变&#xff0c;故命名为column shade。 clc,clear all,close all; %输入的图 imadouble(imread(lenna2.bmp));%原图 imargb2gray(ima)…

MYSQL InnoDB引擎

逻辑存储结构 架构 内存架构 磁盘结构 后台线程 事务原理 redolog undo log MVCC 基本概念 实现原理 隐藏字段 undo log readview

6个提升Python编程能力的PyCharm插件

大家好&#xff0c;PyCharm作为一款强大的集成开发环境&#xff0c;本身已经提供了许多功能&#xff0c;但一些插件将进一步扩展和增强PyCharm的能力。通过使用这些插件&#xff0c;大家能够更快速地编写代码、提高代码质量、进行调试和优化&#xff0c;并将开发体验提升到一个…

软件测试|MySQL DISTINCT关键字过滤重复数据

简介 在MySQL中&#xff0c;有时候我们需要从表中检索唯一的、不重复的数据。这时&#xff0c;我们可以使用DISTINCT关键字来过滤掉重复的数据行。在本文中&#xff0c;我们将深入探讨MySQL中DISTINCT的用法以及如何在查询中使用它来得到不重复的结果集。 基本语法 DISTINCT…

14.网络编程入门和网络应用开发

网络编程入门 计算机网络基础 计算机网络是独立自主的计算机互联而成的系统的总称&#xff0c;组建计算机网络最主要的目的是实现多台计算机之间的通信和资源共享。今天计算机网络中的设备和计算机网络的用户已经多得不可计数&#xff0c;而计算机网络也可以称得上是一个“复…

最具代表性的意大利葡萄酒之一:阿马罗内

阿马罗内是最具代表性的意大利葡萄酒之一&#xff0c;适合搭配各种食物&#xff0c;包括肉类菜肴&#xff0c;面食&#xff0c;意大利调味饭和奶酪等等。阿马罗内是一款浓郁、复杂的意大利葡萄酒&#xff0c;富含水果味。 阿马罗内的食物搭配很有挑战性&#xff0c;因为考虑这…

CMake入门教程【核心篇】导入外部库Opencv

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 环境准备示例:在Windows上配置OpenCV路径示例:在Linux上配置OpenCV路径环境准备 首先确保你的系统中安装了CMake。可以通过以下命令安装: Windows: 下载并…

记一次生产事故排查

背景&#xff1a;刚接手一个新工程&#xff0c;是一个给国内top级医院开发的老项目&#xff0c;因为历史原因&#xff0c;代码质量略低&#xff0c;测试难度略高。 上线很久的功能&#xff0c;最近一直频繁的爆发各种问题&#xff0c;经排查发现都是因为在业务过程中im聊天账号…

权威评测:K9、sc、希喂三款主食冻干大比拼,哪款更适合布偶猫?

关注布偶猫的饮食&#xff1a;作为肉食动物&#xff0c;它们肠胃脆弱需谨慎对待。主食冻干是理想之选&#xff0c;它既符合猫咪天然的饮食结构&#xff0c;又采用新鲜生肉为原料。搭配其他营养元素&#xff0c;既美味又营养&#xff0c;还能增强抵抗力。我们将为您测评市场上热…