智慧乡村综合实践平台-毕设项目
<h1 id="智慧乡村教育综合实践平台">智慧乡村教育综合实践平台</h1><p><img src="https://img.shields.io/badge/Java-17+-green.svg" alt="" loading="lazy"><img src="https://img.shields.io/badge/MySQL-5.7+-blue.svg" alt="" loading="lazy"><img src="https://img.shields.io/badge/Maven-3.0+-blue" alt="" loading="lazy"><img src="https://img.shields.io/badge/Spring-3.0+-green" alt="" loading="lazy"></p>
<p><img src="https://img.shields.io/badge/Vue.js-2.0+-yellow" alt="" loading="lazy"><img src="https://img.shields.io/badge/ElementUi-2.0+-blue.svg" alt="" loading="lazy"></p>
<p><img src="https://img.shields.io/badge/blog-@cfnjs-red.svg" alt="" loading="lazy"></p>
<p><img src="https://gitee.com/cfnjs20020602/smartVillages/badge/star.svg?theme=dark" alt="star" loading="lazy"><img src="https://gitee.com/cfnjs20020602/smartVillages/badge/fork.svg?theme=dark" alt="fork" loading="lazy"></p>
<p><img src="https://img.shields.io/badge/version-v1.0-brightgreen.svg" alt="" loading="lazy"></p>
<p></p><div class="toc"><div class="toc-container-header">目录</div><ul><li>智慧乡村教育综合实践平台</li><li>一、项目背景<ul><li>1.1 乡村教育现状<ul><li>1.1.1 乡村教师问题</li><li>1.1.2 数字化教育</li></ul></li><li>1.2 城区就业现状<ul><li>1.2.1 大学生就业问题</li><li>1.2.2 城乡收入差距</li></ul></li></ul></li><li>二、项目简介<ul><li>2.1 概述</li><li>2.2 开发目标</li></ul></li><li>三、使用的技术清单<ul><li>3.1 后端</li><li>3.2 前端</li><li>3.3 开发工具</li></ul></li><li>四、项目结构<ul><li>4.1 微服务架构</li><li>4.2 数据库结构</li><li>4.3 系统架构</li></ul></li><li>五、核心功能点<ul><li>5.1 管理端<ul><li>5.1.1 系统管理</li><li>5.1.2 教学管理</li><li>5.1.3 考试管理</li><li>5.1.4 招聘管理</li><li>5.1.5 文件管理</li><li>5.1.6 消息中心</li><li>5.1.7 个人信息</li></ul></li><li>5.2 学生端<ul><li>5.2.1 个人信息</li><li>5.2.2 聊天对话</li><li>5.2.3 课程学习</li><li>5.2.4 题库练习</li></ul></li><li>5.3 招聘端<ul><li>5.3.1 岗位查看</li><li>5.3.2 我的简历</li><li>5.3.3 投递记录</li></ul></li></ul></li><li>六、项目演示<ul><li>6.1 管理端</li><li>6.2 学生端</li><li>6.3 招聘端</li></ul></li><li>七、部署指南<ul><li>7.1 项目结构</li><li>7.2 必要环境</li><li>7.3 后端部署</li><li>7.4 前端部署</li><li>7.4 相关配置存放位置</li></ul></li><li>八、特别鸣谢<ul><li>8.1 开发朋友们</li><li>8.2 开源生态的缔造者</li><li>8.3 程序开发工具</li><li>8.4 广大优秀开发者</li><li>8.5AI 助手</li></ul></li></ul></div><p></p>
<h1 id="一项目背景">一、项目背景</h1>
<h2 id="11-乡村教育现状">1.1 乡村教育现状</h2>
<p>随着城镇化的发展,城乡之间的差距越来越明显,特别是教育与就业方面,很多来自乡村的学生得不到更好的教育资源,来自城镇的大学生又得不到更好的实践资源,这本身就是一对矛盾,如果将其结合起来,让需要就业的大学生去往艰苦的地区支教,帮助当地村民提升能力,既是对一个大学生的锻炼,也弥补了乡村的教育资源不足问题</p>
<h3 id="111-乡村教师问题">1.1.1 乡村教师问题</h3>
<p>乡村教师发展依赖于良好的外部环境(白亮 等, 2019),环境因素对于乡村教师创新教学采纳行为的产生具有支撑作用。其中,技术环境起到核心支撑作用,社会环境、文化环境则会对组织支持、个体认知产生影响,间接作用于教师创新采纳行为。在环境因素方面,经济社会的快速发展侵蚀乡土价值体系,“金钱至上”“寒门难出贵子”“读书无用论”(吴彬镪 & 李建辉, 2022)等观点充斥乡土社会,制约乡村教师创新教学采纳。</p>
<p>通过国家层面实施的“薄改”“改薄”等系列工程,乡村学校网络接入率得到巨大提升,但“网络速度太慢影响教学应用”(YD-1)。仅有极少数乡村学校的部分班级实现了移动终端普及。这样的技术环境难以支持创新教学应用。<strong>在智慧教学平台方面,乡村教师能够使用国家公共平台相关功能,但不易获得定制化的应用权限</strong>,“难以满足所有教学需求”(GZ-1)。在教学资源方面,优质资源匮乏、碎片化、获取渠道单一,现有资源与乡村教育真实情境脱节等同样制约乡村教师创新教学采纳。此外,乡村学校技术环境还存在一次性投入与持续迭代优化的矛盾(任友群 & 杨晓哲, 2022),<strong>缺少对技术环境的维护与更新,乡村教师的“意见没有得到及时反馈”</strong>(WH-2),也制约创新教学实践。</p>
<p>房立, 郭炯. 乡村教师创新教学采纳影响因素及对策研究——数字技术促进乡村教育高质量发展. 中国远程教育, 2024, 44(7): 60-71</p>
<h3 id="112-数字化教育">1.1.2 数字化教育</h3>
<p>教育创新是教育不断向前发展的内在动力。教育强国拥有强大的教育创新保障机制,即积极引导、支持和鼓励教育创新,形成引领世界潮流的教育文化、模式和机制(周洪宇 & 李宇阳, 2022, p.22)。<strong>以智能化的大教育观提升教育创新能力</strong>,意在表明将数字技术融入各级各类教育之中,形成数字教育引领教育创新的大教育新格局。</p>
<p>智能化的大教育观着眼于大教育生态系统的发展,旨在整合人工智能、大数据、虚拟现实等技术,推动各级各类教育的衔接融合与革新升级。<strong>智能化的大教育观要求通过实现课堂教学、个性化学习、教学资源使用和质量评估方式等多方面的智能化</strong>,促进各级各类教育的内在一致性和融合性,以最大限度满足个体多样化的需求,更高效地提升个体的多元智能素养。</p>
<p>侯怀银, 宋美霞. 论新时代教育强国的大教育建设. 中国远程教育, 2024, 44(9): 3-12</p>
<h2 id="12-城区就业现状">1.2 城区就业现状</h2>
<h3 id="121-大学生就业问题">1.2.1 大学生就业问题</h3>
<p>我国高职院校在校生和毕业生总量较大,且就业率常年保持在较高水平,能够为劳动力市场源源不断输送大量高技能人才。但社会上对高职院校学生长期存在的<strong>学历歧视和能力忽视并未彻底消除</strong>,加上就业过程受诸多主客观因素共同影响,高职院校学生就业面临的问题比较明显。因此,深入探寻高职院校学生就业的内部机理尤为重要</p>
<p>高职院校的办学目标主要是为社会输送技能人才,技能人才培养需要多个实践环节的共同保障,但<strong>学校和企业为高职院校学生提供的实践保障比较有限</strong>。在学校实践保障方面,部分高职院校将校内实践培养作为理论培养的补充,导致实践培养处于从属地位,校内供学生实践锻炼所用的实验室、车间等运转效率、较低,甚至成为无人问津的摆设,<strong>没有发挥实践培养的作用</strong>。在企业实践保障方面,虽然大部分高职院校与相关企业建立了合作关系,但一般采取的是带领学生到企业一线短期参观和输送应届生到企业见习的方式,校企联动和产教融合的潜能没有全面释放</p>
<p>郑维, 袁奇, 黄清霞. 我国高职院校学生的就业状况、突出问题和提升策略*——基于 S 省 Z 市 A 学院的调查分析. 中国人事科学, 2024, 51(7): 79-92</p>
<h3 id="122-城乡收入差距">1.2.2 城乡收入差距</h3>
<p>已有相关研究对工业、生产性服务业等现代产业发展与城乡收入差距的关系进行了探讨,并认为<strong>需要通过劳动力流动等途径作用于城乡收入差距</strong>,但农村劳动力流动容易导致农村“空心化”“人才断层”等不利于城乡协调发展的社会问题,从长远来看,农村劳动力转移能否缩小城乡收入差距及其效果的大小尚难以给出确切的定论。已有研究比较一致地认为,<strong>城乡收入差距的缩小的关键在“乡”</strong>,必须统筹各种积极因素一体化推动农村居民收入的持续增长,重点是需要依托农村特色资源发展特色产业,通过产业兴旺带动农民就地就近就业,拓宽农民增收致富渠道。</p>
<p>孔凡斌, 王宁, 徐彩瑶. 山区林业产业发展对城乡收入差距的影响机制——基于就业与收入中介效应的视角. 自然资源学报, 2024, 39(1): 62-83</p>
<h1 id="二项目简介">二、项目简介</h1>
<h2 id="21-概述">2.1 概述</h2>
<p>智慧乡村综合实训平台,核心目的是为了解决乡村学生教育与城区大学生就业难的一对矛盾,在偏远的乡村学生无法得到良好的教育资源,而远在城区的大学生因劳动力的饱和而难以就业,这本身是一对矛盾,本项目将利用现如今的计算机技术,意在实现一个综合性的教育与就业平台,帮助乡村儿童提升教育资源质量,促进乡村振兴,同时缓解城区大学生就业问题,提升大学生整体的就业率,促进城乡交流。</p>
<h2 id="22-开发目标">2.2 开发目标</h2>
<p>智慧乡村综合实践平台将采用基于 SpringCloud 的微服务架构,采用服务拆分思想,将创建用户服务、课程服务、招聘服务、文件资源服务、消息通信服务、考试服务、资讯服务等七大业务板块,用户服务包含用户基本信息、用户角色信息、用户权限信息、权限资源信息、动态权限判断与存储;课程服务包含课程信息、科目信息、课节信息;招聘服务包含岗位信息、分类树、简历信息、简历投递记录;文件资源服务包含集中化文件信息展示、文件分片上传下载;消息通信服务包含收发消息、消息记录、流式消息通信;考试服务包含试题信息、题库信息、试题预览;资讯服务包含资讯信息、资讯违规类型、资讯发布审核、文章标签智慧乡村综合实训平台在运行过程中,学生与教师之间可实现无缝的交流与沟通,学生与教师之间仿佛拥有一道桥梁,可以极大的增进乡村与城区之间的联系,促进乡村振兴,提升教育效果,缓解就业压力</p>
<h1 id="三使用的技术清单">三、使用的技术清单</h1>
<h2 id="31-后端">3.1 后端</h2>
<table>
<thead>
<tr>
<th><strong>后端(分布式部分)</strong></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>技术与组件</strong></td>
<td><strong>用途及作用</strong></td>
</tr>
<tr>
<td>SpringCloud</td>
<td>微服务框架</td>
</tr>
<tr>
<td>SpringGateway</td>
<td>服务网关、权限校验</td>
</tr>
<tr>
<td>SpringSentinel</td>
<td>熔断器、服务降级、限流</td>
</tr>
<tr>
<td>Nacos</td>
<td>服务注册中心、配置中心</td>
</tr>
<tr>
<td>Seata</td>
<td>分布式事务</td>
</tr>
<tr>
<td>Spring Feign</td>
<td>服务远程调用、链路监控</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th><strong>后端(服务部分)</strong></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>技术与组件</strong></td>
<td><strong>用途及作用</strong></td>
</tr>
<tr>
<td>SpringBoot3</td>
<td>Web 开发框架、Bean 管理器</td>
</tr>
<tr>
<td>MyBatisPlus3</td>
<td>持久层框架、事务处理</td>
</tr>
<tr>
<td>Knfe4j</td>
<td>API 接口测试、API 文档生成</td>
</tr>
<tr>
<td>SpringAOP</td>
<td>全局异常处理、全局事务回滚、全局日志收集</td>
</tr>
<tr>
<td>Druid</td>
<td>Alibaba 数据源连接池</td>
</tr>
<tr>
<td>WebSocket</td>
<td>实时消息通信</td>
</tr>
<tr>
<td>MySQL</td>
<td>数据持久化</td>
</tr>
<tr>
<td>Redis</td>
<td>数据缓存、分布式 Session、分布式锁</td>
</tr>
</tbody>
</table>
<h2 id="32-前端">3.2 前端</h2>
<table>
<thead>
<tr>
<th><strong>前端</strong></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>技术与组件</strong></td>
<td><strong>用途及作用</strong></td>
</tr>
<tr>
<td>Vue.js</td>
<td>前端 JS 框架</td>
</tr>
<tr>
<td>ElementUI</td>
<td>管理端 UI 框架</td>
</tr>
<tr>
<td>Axios</td>
<td>前端网络请求 JS 库</td>
</tr>
<tr>
<td>Uni-App</td>
<td>移动端 UI 与部署框架</td>
</tr>
<tr>
<td>uView</td>
<td>移动端 UI 框架的增强</td>
</tr>
<tr>
<td>Vue-Element-Admin</td>
<td>前端项目模板</td>
</tr>
<tr>
<td>WebRTC</td>
<td>音视频通话技术</td>
</tr>
</tbody>
</table>
<h2 id="33-开发工具">3.3 开发工具</h2>
<table>
<thead>
<tr>
<th><strong>开发工具</strong></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>技术与组件</strong></td>
<td><strong>用途及作用</strong></td>
</tr>
<tr>
<td>IntelliJ IDEA 2023.3.7</td>
<td>用途广泛的 Java 开发工具</td>
</tr>
<tr>
<td>VSCode</td>
<td>高度可扩展的代码编辑器</td>
</tr>
<tr>
<td>Maven</td>
<td>后端项目打包、编译工具</td>
</tr>
<tr>
<td>Git</td>
<td>项目版本控制工具</td>
</tr>
<tr>
<td>Docker</td>
<td>容器化部署工具</td>
</tr>
<tr>
<td>ApiFox</td>
<td>API 接口调试工具</td>
</tr>
<tr>
<td>JMeater</td>
<td>Java 性能测试工具、高并发模拟</td>
</tr>
<tr>
<td>JProfiler</td>
<td>JVM 分析利器、CPU 内存占用分析、线程池监控</td>
</tr>
</tbody>
</table>
<h1 id="四项目结构">四、项目结构</h1>
<h2 id="41-微服务架构">4.1 微服务架构</h2>
<p><img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/struct/struct.png" alt="1-1" loading="lazy"></p>
<h2 id="42-数据库结构">4.2 数据库结构</h2>
<p><img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/struct/%E6%95%B0%E6%8D%AE%E5%BA%93-ER%E5%9B%BE.png" alt="1-2" loading="lazy"></p>
<h2 id="43-系统架构">4.3 系统架构</h2>
<p><img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/struct/system_struct.png" alt="1-3" loading="lazy"></p>
<h1 id="五核心功能点">五、核心功能点</h1>
<h2 id="51-管理端">5.1 管理端</h2>
<h3 id="511-系统管理">5.1.1 系统管理</h3>
<ol>
<li>用户管理:用户作为系统操作者,可对个人信息进行管理✅</li>
<li>角色管理:用户权限实体,权限系统的权限组,可绑定多个权限✅</li>
<li>权限管理:权限核心实体,用于判断的权限字段信息,可绑定多个资源✅</li>
<li>资源管理:后端 API 接口信息,作为权限系统最底层的信息,任何路由都将注册并受权限系统控制,可被多个权限绑定✅</li>
</ol>
<h3 id="512-教学管理">5.1.2 教学管理</h3>
<ol>
<li>课程管理:管理课程信息,该信息由教师添加✅</li>
<li>课节管理:点击课程管理的排课,进入此页面,每一门课程包含多个课节,一门课节就是一个视频,用于给学生自行学习✅</li>
<li>科目管理:管理科目信息,每一个科目包含多个课程✅</li>
</ol>
<h3 id="513-考试管理">5.1.3 考试管理</h3>
<ol>
<li>试题管理:教学的课外部分,用于给学生自行检验课程学习成果✅</li>
<li>题库管理:试题的容器,用于集合分散的单个试题,便于学生考试模拟与平时练习✅</li>
</ol>
<h3 id="514-招聘管理">5.1.4 招聘管理</h3>
<ol>
<li>岗位管理:面向城乡大学生的内容,用于向社会招聘教师资源用于援助学生课程学习✅</li>
<li>岗位分类:用于明确的向用户区分岗位,以树形结构展示,每一个分类可以包含多个岗位✅</li>
</ol>
<h3 id="515-文件管理">5.1.5 文件管理</h3>
<p>用于集中管理客户端大量的静态资源如图片、文档等✅</p>
<h3 id="516-消息中心">5.1.6 消息中心</h3>
<p>基于WebSocket与WebRTC实现了用户一对一的文字与视频交流,可提升线上学生与教师的交流环境,提升学生学习效率✅</p>
<h3 id="517-个人信息">5.1.7 个人信息</h3>
<p>管理员通过右上角更改个人信息、密码、头像、手机号等信息✅</p>
<h2 id="52-学生端">5.2 学生端</h2>
<h3 id="521-个人信息">5.2.1 个人信息</h3>
<p>用于学生自行管理个人信息,修改密码、修改个人信息、修改头像等操作✅</p>
<h3 id="522-聊天对话">5.2.2 聊天对话</h3>
<p>与管理端一样,实现了一对一的聊天✅</p>
<h3 id="523-课程学习">5.2.3 课程学习</h3>
<p>学生可以进入此页面并观看录屏课程进行学习✅</p>
<h3 id="524-题库练习">5.2.4 题库练习</h3>
<p>学生可以进入此页面,自行进行题目练习✅</p>
<h2 id="53-招聘端">5.3 招聘端</h2>
<h3 id="531-岗位查看">5.3.1 岗位查看</h3>
<p>进入此页面,用户可查询所有<strong>正在招聘的岗位</strong>✅</p>
<h3 id="532-我的简历">5.3.2 我的简历</h3>
<p>此界面可以对简历进行管理与维护,用户可以新增、修改、删除自己的简历信息✅</p>
<h3 id="533-投递记录">5.3.3 投递记录</h3>
<p>此界面可以查看已经投递的岗位列表并实时显示当前进度✅</p>
<h1 id="六项目演示">六、项目演示</h1>
<h2 id="61-管理端">6.1 管理端</h2>
<p align="left">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/upload-avatar.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/user-info.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/update-info.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/update-phone.png" width="24%">
</p>
<p align="left">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/user-admin.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/role-admin.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/permission-admin.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/router-admin.png" width="24%">
</p>
<p align="left">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/course-admin.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/course-item-admin.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/subject-admin.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/problem-admin.png" width="24%">
</p>
<p align="left">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/problem-admin.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/problem-bank-admin.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/recruit-admin.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/recruit-category-admin.png" width="24%">
</p>
<p align="left">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/file-admin.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/file-admin-view.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/message.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/message-video.png" width="24%">
</p>
<p align="left">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/index-admin.png" width="49%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/admin/admin-all.png" width="49%">
</p>
<h2 id="62-学生端">6.2 学生端</h2>
<p align="left">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/student/course-study.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/student/problem-study1.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/student/problem-study2.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/student/index.png" width="24%">
</p>
<p align="left">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/student/update-user.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/student/update-avatar.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/student/problem-view.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/student/course-view.png" width="24%">
</p>
<p align="left">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/student/user-info.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/student/update-password.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/student/login.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/student/register.png" width="24%">
</p>
<p align="center">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/student/all.png" width="30%">
</p>
<h2 id="63-招聘端">6.3 招聘端</h2>
<p align="left">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/recruit/home.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/recruit/post.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/recruit/post-detail.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/recruit/submit-resume.png" width="24%">
</p>
<p align="left">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/recruit/resume-list.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/recruit/resume-detail.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/recruit/resume-update.png" width="24%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/recruit/submit-recording.png" width="24%">
</p>
<p align="left">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/recruit/login.png" width="49%">
<img src="https://gitee.com/cfnjs20020602/smartVillages/raw/master/image/recruit/register.png" width="49%">
</p>
<h1 id="七部署指南">七、部署指南</h1>
<h2 id="71-项目结构">7.1 项目结构</h2>
<ul>
<li>LICENSE <small>#开源许可</small></li>
<li>README.md <small>#项目说明</small></li>
<details>
<summary>data <small>#数据库相关配置</small></summary>
<ul>
<li>1887072568991600642.json <small>#全国省市州数据</small></li>
<li>SmartVillage-init.sql <small>#项目初始化数据</small></li>
<li>SmartVillage-data.sql <small>#项目数据库及其数据</small></li>
<li>SmartVillage-struct.sql <small>#项目数据库结构</small></li>
<li>SmartVillage-log.sql <small>#修改日志</small></li>
</ul>
</details>
<details>
<summary>docker-build <small>#部署配置</small></summary>
<ul>
<li>Dockerfile <small>#Docker 构建文件</small></li>
<li>build.sh <small>#全自动部署脚本</small></li>
<li>config <small>#部分环境的配置文件</small></li>
<li>daemon.json <small>#Docker 国内可用镜像</small></li>
<li>docker-compose.yml <small>#docker-compose 配置文件</small></li>
<li>mysqldump.bat <small>#数据库备份脚本</small></li>
<li>ssh.sh <small>#SSH 测试证书生成脚本</small></li>
</ul>
</details>
<li>image <small>#静态图片用于 README.md</small></li>
<li>smart-village-admin <small>#项目前端管理端</small></li>
<details>
<summary>smart-village-common <small>#公共模块</small></summary>
<ul>
<li>smart-village-common-core <small>#公共核心模块</small></li>
<li>smart-village-common-data <small>#公共数据层配置模块</small></li>
<li>smart-village-common-entity <small>#公共实体类模块</small></li>
<li>smart-village-common-feign <small>#Feign远程调用</small></li>
<li>smart-village-common-generator <small>#代码生成器</small></li>
</ul>
</details>
<li>smart-village-common-dependencies <small>#全局依赖模块</small></li>
<li>smart-village-gateway <small>#网关</small></li>
<details>
<summary>smart-village-modules <small>#项目服务</small></summary>
<ul>
<li>smart-village-course <small>#课程服务</small></li>
<li>smart-village-exam <small>#考试服务</small></li>
<li>smart-village-document <small>#资讯服务</small></li>
<li>smart-village-file <small>#文件服务</small></li>
<li>smart-village-message <small>#消息服务</small></li>
<li>smart-village-user <small>#用户服务</small></li>
<li>smart-village-recruit <small>#招聘服务</small></li>
</ul>
</details>
<li>smart-village-recruit <small>#项目前端招聘端</small></li>
<li>smart-village-student <small>#项目前端学生端</small></li>
<li>smart-village-admin <small>#项目前端管理端</small></li>
<li>smart-village-vuepress <small>#项目指南</small></li>
</ul>
<h2 id="72-必要环境">7.2 必要环境</h2>
<ol>
<li>一台内存至少 16G 的电脑</li>
<li>JDK17 以上</li>
<li>MySQL5.7+、Redis</li>
<li>Vue2.0+、Node.js</li>
<li>Maven3.8+</li>
<li>IDEA、VSCode</li>
<li>Nacos2.4+、Sentinel、Seata</li>
</ol>
<h2 id="73-后端部署">7.3 后端部署</h2>
<ol>
<li>
<p>克隆仓库</p>
<pre><code class="language-bash">git clone https://gitee.com/cfnjs20020602/smartVillages
</code></pre>
</li>
<li>
<p>使用 IDEA 导入项目,配置好 Maven 仓库并等待项目完成</p>
</li>
<li>
<p>使用 IDEA 的 Maven 工具,点击配置文件(profile),选择你需要的环境,在此之前打开父模块的 pom.xml 文件配置<code>profile</code>的相关参数,以下是一个示例:</p>
<pre><code class="language-xml"><!--开发环境-->
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!--环境标识-->
<activatedProfile>dev</activatedProfile>
<!--开发环境-->
<nacosNamespace>0a74aaea-9b99-4c61-b72c-6605d353384f</nacosNamespace>
<!--nacos地址-->
<nacosAddress>http://linux:8848</nacosAddress>
<!--nacos用户名-->
<nacosUserName>nacos_dev</nacosUserName>
<!--nacos密码-->
<nacosPassword>12345678</nacosPassword>
<!--docker仓库地址-->
<dockerRegistryUrl>http://linux:5000</dockerRegistryUrl>
<!--docker远程地址-->
<dockerRemoteHost>http://linux:2375</dockerRemoteHost>
<!--docker远程用户名-->
<dockerName>root</dockerName>
<!--docker远程密码-->
<dockerPassword>12345678</dockerPassword>
<!--端口号配置-->
<coursePort>8081</coursePort>
<documentPort>8082</documentPort>
<messagePort>8083</messagePort>
<recruitPort>8084</recruitPort>
<userPort>8085</userPort>
<examPort>8086</examPort>
<filePort>8087</filePort>
<gatewayPort>10086</gatewayPort>
<!--服务名-->
<courseServiceName>smart-village-course</courseServiceName>
<documentServiceName>smart-village-document</documentServiceName>
<messageServiceName>smart-village-message</messageServiceName>
<recruitServiceName>smart-village-recruit</recruitServiceName>
<userServiceName>smart-village-user</userServiceName>
<examServiceName>smart-village-exam</examServiceName>
<fileServiceName>smart-village-file</fileServiceName>
<gatewayServiceName>smart-village-gateway</gatewayServiceName>
<!--关联数据库-->
<courseDatabase>smart_villages_course</courseDatabase>
<documentDatabase>smart_villages_document</documentDatabase>
<messageDatabase>smart_villages_message</messageDatabase>
<recruitDatabase>smart_villages_recruit</recruitDatabase>
<userDatabase>smart_villages_permission</userDatabase>
<examDatabase>smart_villages_exam</examDatabase>
<fileDatabase>smart_villages_file</fileDatabase>
</properties>
</profile>
</code></pre>
<p>启动 Nacos,并配置好权限及其数据库,将本项目的<code>/data/SmartVillage-data.sql</code>使用 Navacat 等可视化工具导入,并启动 Nacos,Nacos 可使用基于 Docker 的容器部署,本项目也提供了全自动的<code>docker-compose.yml</code>,具体路径在<code>docker-build</code>下</p>
</li>
<li>
<p>环境配置完毕后启动项目,使用 IDEA 自带的服务(service)窗口,依次启动各个服务</p>
</li>
<li>
<p>在浏览器打开并输入<code>https://localhost:10086/doc.html</code>,若能打开 API 接口管理面板则证明项目启动完毕</p>
</li>
</ol>
<h2 id="74-前端部署">7.4 前端部署</h2>
<ol>
<li>
<p>在配置好 Node 环境并安装 Vue 脚手架的前提下,使用 VSCode 打开<code>smart-village-admin</code></p>
<blockquote>
<p>我们以管理端为例,其他端在项目根目录下<code>smart-village-user</code>(学生端)、<code>smart-village-recruit</code>(招聘端),启动方式同理</p>
</blockquote>
</li>
<li>
<p>进入项目并打开 cmd 窗口或打开 VSCode 自带的终端窗口,执行以下命令:</p>
<pre><code class="language-shell">npm install
</code></pre>
</li>
<li>
<p>等待前端依赖安装完成后再执行命令</p>
<pre><code class="language-shell">npm run dev
</code></pre>
</li>
<li>
<p>打开浏览器输入<code>https://localhost:8000</code>,若出现界面则启动成功</p>
<blockquote>
<p>注意:以上 npm 命令都必须使用管理员方式运行 cmd,VSCode 可直接以管理员方式运行即可</p>
</blockquote>
</li>
</ol>
<h2 id="74-相关配置存放位置">7.4 相关配置存放位置</h2>
<ol>
<li>后端所有 Spring 的相关配置都放置在 Nacos 的配置中心</li>
<li>后端<code>smart-village-common/smart-village-entity</code>的 resources 下存放了有关项目所有的配置如 LogBack、SSH 等配置</li>
<li>前端根目录下的以<code>.env</code>开头的文件均为项目环境配置,包含了项目后端根路径等配置</li>
</ol>
<h1 id="八特别鸣谢">八、特别鸣谢</h1>
<h2 id="81-开发朋友们">8.1 开发朋友们</h2>
<p>leiwang0517</p>
<p>yongjhgwl</p>
<p>白泽</p>
<p>感谢你们的大力支持与帮助!</p>
<h2 id="82-开源生态的缔造者">8.2 开源生态的缔造者</h2>
<p>Spring Vue.js Uni-App Node.js Ubuntu CentOS</p>
<p>Nacos Sentinel MySQL Redis Seata RabbitMQ</p>
<p>Docker WebSocket WebRTC Knife4j Axios ElementUI</p>
<p>Rouyi Vue-Element-admin JeecgBoot</p>
<p>ECharts FastJson Hutool</p>
<p>阿里巴巴图标库 优设配色导航</p>
<p>......</p>
<p>感谢你们提供的开源框架让开发变得更加容易!</p>
<h2 id="83-程序开发工具">8.3 程序开发工具</h2>
<p>IntelliJ IDEA Visual Studio Code Navicat JProfiler JMeter Maven</p>
<p>Git</p>
<p>......</p>
<p>你们的代码造就了我们的便捷!</p>
<h2 id="84-广大优秀开发者">8.4 广大优秀开发者</h2>
<p>视频通话</p>
<p>文件分片上传、秒传及断点续传</p>
<p>解决缓存击穿和缓存雪崩问题</p>
<p>FastJson 的 RedisTemplate 序列化策略</p>
<p>webpack-dev-server 代理未转发 Post 请求 Body 内容</p>
<p>WebSocket 鉴权的优化方案</p>
<p>为 Excel 下载提供思路</p>
<p>......等</p>
<p>项目的开发思路与 bug 修复离不开你们的帮助!</p>
<h2 id="85ai-助手">8.5AI 助手</h2>
<p>通义灵码</p>
<p>ChatGPT</p>
<p>DeepSeek</p>
<p>......</p>
<p>当然,不能忘了 AI 这一新时代的程序员为我们提供的帮助!</p><br><br>
来源:https://www.cnblogs.com/cfnjs/p/18887674
頁:
[1]