# cmas-校园互助平台 **Repository Path**: su_server/cmas ## Basic Information - **Project Name**: cmas-校园互助平台 - **Description**: cmas 校园互助平台:基于“AiDex Sharp 快速开发平台” 和 “若依-ruoyi-AiDex-Uniapp” 进行二次开发,包括平台配置、审核管理、用户行为、推送管理、区域管理、内容管理等功能 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 4 - **Created**: 2023-05-16 - **Last Updated**: 2025-05-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # cmas-校园互助平台 ## 平台简介 **Cmas 校园互助平台** 基于“**AiDex Sharp 快速开发平台**” 和 “**若依-ruoyi-AiDex-Uniapp**” 进行二次开发 - 感谢[AiDex Sharp 快速开发平台](https://gitee.com/big-hedgehog/aidex-sharp) - 感谢[若依-ruoyi-AiDex-Uniapp](https://gitee.com/big-hedgehog/ruoyi-uniapp) ### 内置功能 #### 后台功能 1. 平台配置:敏感词黑名单、白名单和审核原因的配置 2. 审核管理:对帖子、评论、地区等进行,进行审核配置和查看审核记录 3. 用户行为:记录用户所属地区、点赞数、发帖数等数据 4. 推送管理:可推送系统和地区通知 5. 区域管理:包含地区管理、地区地图管理、版块管理、运营申请 6. 内容管理:包含帖子管理、评论管理、消息管理 #### 前台功能 1. 首页:显示轮播图、所属地区、搜索、版块和版块内的帖子 2. 通知:显示系统通知和地区通知 3. 消息:显示聊天消息 4. 我的:显示个人信息、个人数据和系统操作 5. 地区选择:选择用户所属地区,分为两种模式:地图选择、列表选择 6. 帖子:发布帖子 7. 帖子详情:查看帖子详细数据和发表评论 8. 创作中心:查看帖子审核状态和帖子管理 9. 个人中心:查看个人数据、帖子数据、评论数据 10. 运营申请:申请成为地区管理者 ### 系统截图 #### 后台截图 | | | |---|---| | ![输入图片说明](doc/%E6%9C%8D%E5%8A%A1%E7%AB%AF/%E4%BF%AE%E6%94%B9%E5%9C%B0%E5%8C%BA%E5%9C%B0%E5%9B%BE.png) | ![输入图片说明](doc/%E6%9C%8D%E5%8A%A1%E7%AB%AF/%E5%9C%B0%E5%8C%BA%E5%AE%A1%E6%A0%B8.png) | | ![输入图片说明](doc/%E6%9C%8D%E5%8A%A1%E7%AB%AF/%E5%9C%B0%E5%8C%BA%E7%AE%A1%E7%90%86.png) | ![输入图片说明](doc/%E6%9C%8D%E5%8A%A1%E7%AB%AF/%E5%AE%A1%E6%A0%B8%E9%85%8D%E7%BD%AE.png) | | ![输入图片说明](doc/%E6%9C%8D%E5%8A%A1%E7%AB%AF/%E5%B7%A5%E4%BD%9C%E5%8F%B0.png) | ![输入图片说明](doc/%E6%9C%8D%E5%8A%A1%E7%AB%AF/%E5%B8%96%E5%AD%90%E5%AE%A1%E6%A0%B8.png) | | ![输入图片说明](doc/%E6%9C%8D%E5%8A%A1%E7%AB%AF/%E5%B8%96%E5%AD%90%E7%AE%A1%E7%90%86.png) | ![输入图片说明](doc/%E6%9C%8D%E5%8A%A1%E7%AB%AF/%E6%8E%A8%E9%80%81%E7%AE%A1%E7%90%86.png) | | ![输入图片说明](doc/%E6%9C%8D%E5%8A%A1%E7%AB%AF/%E7%89%88%E5%9D%97%E7%AE%A1%E7%90%86.png) | ![输入图片说明](doc/%E6%9C%8D%E5%8A%A1%E7%AB%AF/%E8%81%8A%E5%A4%A9%E5%8A%9F%E8%83%BD.png) | | ![输入图片说明](doc/%E6%9C%8D%E5%8A%A1%E7%AB%AF/%E8%81%8A%E5%A4%A9%E5%8A%9F%E8%83%BD.png) | ![输入图片说明](doc/%E6%9C%8D%E5%8A%A1%E7%AB%AF/%E8%AF%84%E8%AE%BA%E5%AE%A1%E6%A0%B8.png) | | ![输入图片说明](doc/%E6%9C%8D%E5%8A%A1%E7%AB%AF/%E8%AF%84%E8%AE%BA%E7%AE%A1%E7%90%86.png) | | #### 前台截图 | | | | |---|---|---| | ![输入图片说明](doc/%E7%94%A8%E6%88%B7%E7%AB%AF/%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF.png) | ![输入图片说明](doc/%E7%94%A8%E6%88%B7%E7%AB%AF/%E4%B8%AA%E4%BA%BA%E7%A9%BA%E9%97%B4.png) | ![输入图片说明](doc/%E7%94%A8%E6%88%B7%E7%AB%AF/%E5%8F%91%E8%A1%A8%E5%B8%96%E5%AD%90.png) | | ![输入图片说明](doc/%E7%94%A8%E6%88%B7%E7%AB%AF/%E5%B8%96%E5%AD%90%E8%AF%A6%E6%83%85.png) | ![输入图片说明](doc/%E7%94%A8%E6%88%B7%E7%AB%AF/%E6%88%91%E7%9A%84.png) | ![输入图片说明](doc/%E7%94%A8%E6%88%B7%E7%AB%AF/%E6%90%9C%E7%B4%A2.png) | | ![输入图片说明](doc/%E7%94%A8%E6%88%B7%E7%AB%AF/%E9%80%9A%E7%9F%A5.png) | ![输入图片说明](doc/%E7%94%A8%E6%88%B7%E7%AB%AF/%E8%81%8A%E5%A4%A9%E5%88%97%E8%A1%A8.png) | ![输入图片说明](doc/%E7%94%A8%E6%88%B7%E7%AB%AF/%E8%BF%90%E8%90%A5%E7%94%B3%E8%AF%B7.png) | | ![输入图片说明](doc/%E7%94%A8%E6%88%B7%E7%AB%AF/%E9%80%89%E6%8B%A9%E5%9C%B0%E5%8C%BA.png) | ![输入图片说明](doc/%E7%94%A8%E6%88%B7%E7%AB%AF/%E9%A6%96%E9%A1%B5.png) | | ### 前端工程结构 #### 后台 ``` ├── public │ └── logo.png # LOGO | └── index.html # Vue 入口模板 ├── src │ ├── api # Api ajax 等 │ ├── assets # 本地静态资源 │ ├── config # 项目基础配置,包含路由,全局设置 │ ├── components # 业务通用组件 │ ├── core # 项目引导, 全局配置初始化,依赖包引入等 │ ├── directive # 自定义指令 │ ├── router # Vue-Router │ ├── store # Vuex │ ├── utils # 工具库 │ ├── locales # 国际化资源 │ ├── views # 业务页面入口和常用模板 │ ├── App.vue # Vue 模板入口 │ └── main.js # Vue 入口 JS │ └── permission.js # 路由守卫(路由权限控制) │ └── global.less # 全局样式 ├── tests # 测试工具 ├── README.md └── package.json ``` #### 前台 ``` ├── src │ ├── common # Api ajax 等 │ ├── components # 业务通用组件 │ ├── node_modules # node依赖 │ ├── pages # 业务页面入口和常用模板 │ ├── static # 本地静态资源 │ ├── store # Vuex │ ├── uni_modules # uniapp依赖 │ ├── utils # 工具库 │ ├── locales # 国际化资源 │ ├── views # 业务页面入口和常用模板 │ ├── App.vue # Vue 模板入口 │ ├── main.js # Vue 入口 JS │ ├── h5.html # h5首页 │ ├── manifest # uniapp系统配置 │ ├── package.json # 依赖包配置 │ ├── pages.json # 界面路由 │ ├── uni.scss # uniapp通用样式 │ └── vue.config.js # vue配置 ``` ### 后端工程结构 | 项目 | 说明 | |----|----| | aidex-admin | 系统启动入口 | | aidex-common | 工具类 | | aidex-controller | 前台控制器 | | aidex-framework | 框架核心 | | aidex-generator | 代码生成工具 | | aidex-quartz | 定时任务 | | aidex-system | 系统管理 | | cmas-system | 业务系统管理 | 更多功能请访问系统 ### 系统在线文档 - 文档地址(参考若依):http://doc.ruoyi.vip/ - RuoYi-Vue文档:https://doc.ruoyi.vip/ruoyi-vue/ - Ant Design Vue文档:https://www.antdv.com/docs/vue/introduce-cn/ - AiDex Sharp 文档-http://aidex.vip:8083/aidexDoc - [《如何搭建环境》](https://gitee.com/link?target=http%3A%2F%2Fdoc.ruoyi.vip%2Fruoyi-vue%2Fdocument%2Fhjbs.html) - [《常见问题》](https://gitee.com/link?target=http%3A%2F%2Fdoc.ruoyi.vip%2Fruoyi-vue%2Fdocument%2Fhjbs.html%23%25E5%25B8%25B8%25E8%25A7%2581%25E9%2597%25AE%25E9%25A2%2598) ### 环境部署 #### 运行系统 ##### 后端运行 1. 创建数据库aidex并导入数据脚本aidex.sql (aidex-sharp-master/sql目录下) 2. 创建数据库cmas(字符集使用uft8mb64)并导入数据脚本cmas.sql 3. 打开项目目录aidex-sharp-master运行com.aidex.AiDexApplication.java,启动成功(需要启动Redis、Rabbitmq和配置百度内容审核) ###### 后台前端运行 ``` # 进入项目目录 cd aidex-ui # 安装依赖 npm install # 强烈建议不要用直接使用 cnpm 安装,会有各种诡异的 bug,可以通过重新指定 registry 来解决 npm 安装速度慢的问题。 npm install --registry=https://registry.npm.taobao.org # 本地开发 启动项目 npm run dev ``` 打开浏览器,输入:(http://localhost:80 (opens new window)) 默认账户/密码 admin/admin123) 若能正确展示登录页面,并能成功登录,菜单及页面展示正常,则表明环境搭建成功 ###### 前台前端运行 ``` # 进入项目目录 cd aidex-uniapp # 安装依赖 npm install # 强烈建议不要用直接使用 cnpm 安装,会有各种诡异的 bug,可以通过重新指定 registry 来解决 npm 安装速度慢的问题。 npm install --registry=https://registry.npm.taobao.org ``` 打开HBuilderX -> 顶部菜单栏 -> 运行 -> 运行到浏览器 -> Chrome ### 必要配置 #### 后端配置 - 修改数据库连接,编辑resources目录下的application-druid.yml ``` # 数据源配置 spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver druid: # 主库数据源 master: url: 数据库地址 username: 数据库账号 password: 数据库密码 ``` - 修改服务器配置,编辑resources目录下的application.yml ``` # 开发环境配置 server: # 服务器的HTTP端口,默认为8080 port: 端口 servlet: # 应用的访问路径 context-path: /应用路径 # websoket配置 websocket: netty: # netty端口,默认8878 port: 端口 # 应用的访问路径,默认/websocket path: /应用路径 # redis 配置 redis: # 地址,默认localhost host: 地址 # 端口,默认为6379 port: 端口 # 密码,默认空 password: 密码 # rabbitmq 配置 rabbitmq: # 地址,默认localhost host: 地址 # 账号,默认guest username: 账号 #密码,默认guest password: 密码 # 端口,默认为5672 port: 端口 #百度内容审核 baidu: examine: #App ID AppID: # Api Key APIKey: # Secret Key SecretKey: ``` > redis密码为空,删除aidex-framework\src\main\java\com\aidex\framework\config\RedissonConfig.java > >`config.useSingleServer().setPassword(password)` > >百度内容审核,可查看这篇文章[百度内容审核连接](https://blog.csdn.net/weixin_43163153/article/details/133639537?ops_request_misc=&request_id=&biz_id=102&utm_term=%E7%99%BE%E5%BA%A6%E6%96%87%E6%9C%AC%E5%AE%A1%E6%A0%B8&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduweb~default-3-133639537.142^v100^pc_search_result_base1&spm=1018.2226.3001.4450) #### 后台前端配置 - 修改后端接口,编辑aidex-ui目录下的vue.config.js ``` devServer: { // 运行端口,默认为80 port: #端口, proxy: { //后端接口地址,默认 `http://localhost:8080` [process.env.VUE_APP_BASE_API]: { target: //地址 } } } ``` - 修改腾讯地图应用key,编辑scr/utils目录下的initMap.js ``` //腾讯地图应用key export default { AK: //地图应用key } ``` > 腾讯地图,可查看这篇文章[腾讯地图连接](https://blog.csdn.net/GDNLQ/article/details/137146620?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171828424016800186530462%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171828424016800186530462&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-2-137146620-null-null.nonecase&utm_term=vue%20%E8%85%BE%E8%AE%AF%E5%9C%B0%E5%9B%BE&spm=1018.2226.3001.4450) - websoket后端接口,编辑src/views/platform/message/chat.vue ``` //Websoket连接地址,默认ws://localhost:8878/websocket this.webSocket = new WebSocket('地址') ``` #### 前台前端配置 - 修改后端接口,编辑common目录下的config.js ``` const config = { // 设置后端接口服务的基础地址 config.baseUrl = //后端地址 } ``` > 后端接口服务的基础地址,本地ip地址(不是localhost)的对应后端端口 - websoket后端接口,编辑,编辑aidex-uniapp目录下的main.js ``` //Websoket连接地址,默认ws://localhost:8878/websocket Vue.prototype.$socket = new wsRequest("地址",3000) ``` ### 提示 > 由于项目基于“**AiDex Sharp 快速开发平台**” 和 “**若依-ruoyi-AiDex-Uniapp**” 进行二次开发,“**AiDex Sharp 快速开发平台**” 和 “**若依-ruoyi-AiDex-Uniapp**”具有GPL-3.0开源协议,查看详情可访问,[AiDex Sharp 快速开发平台](https://gitee.com/big-hedgehog/aidex-sharp) ### 结语 欢迎一起探讨,如果你觉得还可以,可以给我点一个star