# Community-communication **Repository Path**: wan-binyu/Community-communication ## Basic Information - **Project Name**: Community-communication - **Description**: 这个里面加了一些练习组件用来学习 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-01-06 - **Last Updated**: 2026-09-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 墨香阁社区 · Community-communication 墨香阁是一个 Java 微服务社区课程实践项目,围绕文章发布、内容浏览与社区互动展开。本仓库保存后端服务代码,以及 Kafka、MinIO、FreeMarker、Tess4j 等组件的学习示例。 项目展示:[万彬宇的个人主页](https://portfolio.wanbinxy.icu/) ## 功能与代码入口 以下内容根据当前仓库源码整理,便于阅读与复现,不代表已完成生产环境验收。 | 功能 | 当前代码包含的实现 | 代码位置 | | --- | --- | --- | | 用户与鉴权 | 用户注册、登录,网关读取 `token` 请求头并校验 JWT | [用户服务](water-service/water-userr)、[网关](water-gateway) | | 文章浏览 | 文章列表、加载更多、加载最新、文章详情 | [文章控制器](water-service/water-article/src/main/java/com/ape/article/controller/v1/ArticleHomeController.java) | | 内容管理 | 文章提交、条件分页查询、状态修改与上下架 | [文章管理](water-service/water-wemedia/src/main/java/com/ape/wemedia/controller/v1/WmNewsController.java) | | 素材管理 | 图片上传、素材列表、收藏与取消收藏 | [素材管理](water-service/water-wemedia/src/main/java/com/ape/wemedia/controller/v1/WmMaterialController.java) | | 社区互动 | 评论与回复、文章收藏、意见反馈与回复 | [社区接口目录](water-service/water-wemedia/src/main/java/com/ape/wemedia/controller/v1) | | 活动管理 | 活动新增、查询、报名与报名列表 | [活动管理](water-service/water-wemedia/src/main/java/com/ape/wemedia/controller/v1/WmEventController.java) | | 内容审核 | 异步审核、敏感词处理、图文审核相关代码,通过 Feign 同步文章 | [审核服务](water-service/water-wemedia/src/main/java/com/ape/wemedia/service/impl/WmNewsAutoScanServiceImpl.java) | | 消息与静态化 | Kafka 同步上下架状态;FreeMarker 生成文章 HTML 并上传 MinIO | [文章服务](water-service/water-article) | ## 技术栈 | 领域 | 技术与仓库中的版本 | | --- | --- | | 开发与构建 | Java 8 编译目标、Maven 多模块 | | 服务框架 | Spring Boot 2.3.9.RELEASE、Spring Cloud Hoxton.SR10 | | 注册与配置 | Spring Cloud Alibaba 2.2.5.RELEASE、Nacos | | 网关与调用 | Spring Cloud Gateway、OpenFeign、JWT | | 数据访问 | MySQL、MyBatis-Plus 3.4.1 | | 文件与模板 | MinIO Java SDK 7.1.0、FreeMarker | | 消息 | Spring Kafka 2.6.6、Kafka 客户端 2.5.1 | | 其他 | Redis 依赖、Swagger / Knife4j、Tess4j、图文审核 SDK | 这里的版本来自 POM,不是中间件部署版本。Redis 在公共模块中引入;当前源码中未找到完整的 Elasticsearch 搜索服务或定时发布调度模块,因此不将它们列为已验证功能。文章管理中的关键词查询使用数据库模糊匹配。 ## 目录结构 ```text Community-communication/ ├── pom.xml # 聚合工程与依赖版本管理 ├── water-basic/ │ └── water-file-starter/ # MinIO 文件存储封装 ├── water-common/ # 公共配置、异常、常量与审核工具 ├── water-utils/ # 通用工具 ├── water-model/ # 实体、DTO 与返回对象 ├── water-feign-api/ # 跨服务接口定义 ├── water-gateway/ │ ├── water-app-gateway/ # 用户端网关 │ └── water-wemedia-gateway/ # 内容管理端网关 ├── water-service/ │ ├── water-userr/ # 用户服务(目录名保留原拼写) │ ├── water-article/ # 文章服务 │ └── water-wemedia/ # 内容与社区管理服务 └── water-test/ # 独立组件练习,不等同于完整自动化测试套件 ``` ## 本地运行准备 当前仓库主要用于源码展示与课程实践复盘。尚未提供前端工程、数据库初始化 SQL、完整 Nacos 配置导出或一键部署脚本;仅克隆代码不足以完整启动系统。 ### 1. 获取代码与开发环境 ```bash git clone https://gitee.com/wan-binyu/Community-communication.git cd Community-communication ``` 准备与 Java 8 编译目标兼容的 JDK、Maven 和 Java IDE,并将根目录 `pom.xml` 作为 Maven 工程导入。项目使用 Lombok,IDE 中需开启注解处理。 ### 2. 补齐配置与数据 - 准备 MySQL 数据库及匹配实体和 Mapper 的表结构。仓库未附初始化 SQL,需要另行补齐。 - 启动 Nacos,修改各服务 `src/main/resources/bootstrap.yml` 中的注册中心与配置中心地址。 - 按各服务的 `spring.application.name` 和 `yml` 配置后缀准备 Nacos 配置,核对 Data ID、分组及命名空间。 - 配置数据源、网关路由、Kafka、MinIO 等连接信息;使用 Redis 相关能力时补齐 Redis 配置。 - 使用图文审核、OCR 功能时,补齐对应服务凭据和本地识别资源。具体配置字段以相关配置类为准。 - 现有配置包含开发环境相关值,应替换为自己的环境;不要直接将原配置作为可用部署配置。 ### 3. 检查 Maven 工程 根 `pom.xml` 的 `` 当前重复声明了 `water-gateway`。尝试根工程构建前,需要先在本地保留一条该模块声明,再检查依赖解析与编译情况。 完成上述准备后,可尝试: ```bash mvn clean install -DskipTests ``` 该命令用于构建准备,不是已验证的一键启动命令;`-DskipTests` 也不代表测试通过。本 README 编写时未进行完整编译或中间件联调。 ### 4. 启动服务 先启动所需中间件,再启动业务服务与网关。可通过 IDE 运行下列主类,确认服务在 Nacos 注册成功后再联调接口。 | 服务 | 主类 | 默认端口 | | --- | --- | --- | | 用户服务 | `com.ape.user.UserApplication` | 51801 | | 文章服务 | `com.ape.article.ArticleApplication` | 51802 | | 内容管理服务 | `com.ape.wemedia.WemediaApplication` | 51803 | | 用户端网关 | `com.ape.app.gateway.AppGatewayApplication` | 51601 | | 内容管理端网关 | `com.ape.wemedia.gateway.WemediaGatewayAplication` | 51602 | 端口来自各模块的 `bootstrap.yml`,以运行时配置为准。通过网关访问时的外部路径还取决于 Nacos 中的路由和路径重写规则。 ## 接口阅读示例 以下为控制器声明的服务内路径,参数结构请查看对应 DTO;受保护接口需要按鉴权逻辑携带有效 `token`。 | 方法 | 路径 | 用途 | | --- | --- | --- | | POST | `/api/v1/login/login_auth` | 用户登录 | | POST | `/api/v1/article/load` | 获取文章列表 | | POST | `/api/v1/news/submit` | 提交文章 | | POST | `/api/v1/material/upload_picture` | 上传图片 | | GET | `/api/v1/comments/list/{articleId}` | 查看文章评论 | | POST | `/api/v1/favorites/add` | 添加收藏 | 推荐阅读顺序:网关鉴权 → 用户登录 → 文章提交 → 审核与 Feign 调用 → 文章静态化 → Kafka 上下架同步,再查看评论、活动与反馈等社区功能。 ## 后续完善 - 补充脱敏配置模板、数据库初始化脚本和前端入口。 - 整理构建配置及仓库内已提交的 IDE、编译产物文件。 - 增加可重复的接口验证步骤与运行截图。 - 为文章发布、互动与消息同步补充自动化测试。 项目为课程与学习实践,保留了部分原始工程命名及组件练习代码。功能范围以当前仓库实现为准。 文档核对日期:2026-09-08。