# 站点设置模块 (business-site-setting) ## 模块概述 站点设置模块提供站点设置相关的业务功能,包括意见反馈、关于我们、帮助中心等功能。 --- ## 模块结构 ``` business-site-setting/ ├── business-site-setting-bean/ # Bean层(Entity、DTO、VO、Convert) │ └── src/main/java/com/jeesharp/business/modules/setting/ │ ├── convert/ # 转换器 │ │ ├── FeedbackConvert.java # 意见反馈转换器 │ │ └── AboutUsConvert.java # 关于我们转换器 │ ├── dto/ # 数据传输对象 │ │ ├── FeedbackSubmitDTO.java # 意见反馈提交DTO │ │ ├── FeedbackHandleDTO.java # 意见反馈处理DTO │ │ └── AboutUsSaveDTO.java # 关于我们保存DTO │ ├── entity/ # 实体类 │ │ ├── Feedback.java # 意见反馈实体 │ │ └── AboutUs.java # 关于我们实体 │ └── vo/ # 视图对象 │ ├── FeedbackQueryVO.java # 意见反馈查询VO │ ├── FeedbackVO.java # 意见反馈VO │ ├── AboutUsQueryVO.java # 关于我们查询VO │ └── AboutUsVO.java # 关于我们VO │ ├── business-site-setting-service/ # Service层(Service、Mapper) │ └── src/main/java/com/jeesharp/business/modules/setting/ │ ├── mapper/ # MyBatis Mapper │ │ ├── FeedbackMapper.java # 意见反馈Mapper │ │ ├── AboutUsMapper.java # 关于我们Mapper │ │ └── xml/ # Mapper XML │ │ ├── FeedbackMapper.xml │ │ └── AboutUsMapper.xml │ └── service/ # 领域服务 │ ├── FeedbackService.java # 意见反馈服务接口 │ ├── AboutUsService.java # 关于我们服务接口 │ └── impl/ # 服务实现 │ ├── FeedbackServiceImpl.java │ └── AboutUsServiceImpl.java │ ├── business-site-setting-application/ # Application层(应用服务) │ └── src/main/java/com/jeesharp/business/modules/setting/ │ └── application/ │ ├── FeedbackApplicationService.java # 意见反馈应用服务 │ └── AboutUsApplicationService.java # 关于我们应用服务 │ ├── business-site-setting-controller/ # Controller层(控制器,后台管理用) │ └── src/main/java/com/jeesharp/business/modules/setting/ │ └── controller/ │ ├── FeedbackController.java # 意见反馈管理控制器 │ └── AboutUsController.java # 关于我们管理控制器 │ ├── site_setting_sql_index.sql # SQL 执行说明与推荐顺序 ├── site_setting_schema.sql # 全量建表(新建库) ├── site_setting_alter.sql # 已有库增量 ALTER ├── site_setting_mock_data.sql # 演示/种子数据(可选) └── site_setting_menu_permission.sql # 管理端菜单与权限 ``` ### 模块依赖关系 ``` 后台管理Controller → Application → Service → Bean │ │ │ │ └────────────────────┴────────────┴─────────┴──→ jeesharp-spring-boot-starter-mybatis 移动端接口(business-mobile-gateway)→ Application → Service → Bean ``` **注意**: - `business-site-setting-controller` 是给**后台管理**使用的,提供管理后台的接口 - `business-mobile-gateway` 是给**移动端**使用的,提供APP/小程序/H5的接口 --- ## 功能特性 ### 意见反馈 - **提交反馈**:用户可提交功能建议、问题反馈等 - **反馈列表**:查看自己的反馈历史记录 - **反馈详情**:查看反馈的详细信息和处理结果 - **状态跟踪**:反馈状态包括待处理、处理中、已处理、已关闭 ### 关于我们 - **多应用支持**:支持不同应用(APP/微信小程序/微信公众号/H5等)配置不同的关于我们信息 - **富文本内容**:支持富文本编辑,展示公司介绍、联系方式等信息 - **完整信息**:包含公司名称、地址、联系方式、版权信息、ICP备案号等 - **版本管理**:支持版本号管理,便于版本追踪 ### 帮助中心 - **分类管理**:支持多级分类,便于组织帮助内容 - **文章管理**:支持富文本编辑,包含标题、内容、摘要、封面图片等 - **常见问题**:支持标记常见问题,方便用户快速查找 - **多应用支持**:不同应用可配置不同的帮助内容 - **数据统计**:支持浏览次数、点赞次数统计 - **搜索功能**:支持按标题、内容搜索帮助文章 --- ## API 接口 ### 移动端接口(business-mobile-gateway) **接口基础路径**:`/mobile/setting/feedback` | 接口 | 方法 | URL | 说明 | |------|------|-----|------| | 提交反馈 | POST | `/submit` | 提交意见反馈 | | 获取详情 | GET | `/detail?id=xxx` | 获取反馈详细信息 | | 我的反馈列表 | POST | `/myList` | 分页查询我的反馈列表 | | 我的反馈列表(简化) | GET | `/myListSimple` | 获取我的反馈列表(不分页) | #### 关于我们 **接口基础路径**:`/mobile/setting/aboutUs` | 接口 | 方法 | URL | 说明 | |------|------|-----|------| | 获取关于我们 | GET | `/info?app=xxx` | 根据应用标识获取关于我们信息 | #### 帮助中心 **接口基础路径**:`/mobile/setting/helpCenter` | 接口 | 方法 | URL | 说明 | |------|------|-----|------| | 获取分类列表 | GET | `/categories?app=xxx` | 根据应用标识获取帮助分类列表 | | 获取文章列表 | GET | `/articles?app=xxx&categoryId=xxx` | 获取帮助文章列表(可选分类筛选) | | 获取文章详情 | GET | `/article/detail?id=xxx` | 获取帮助文章详情(自动增加浏览次数) | | 获取常见问题 | GET | `/faq?app=xxx` | 获取常见问题列表 | | 点赞文章 | POST | `/article/like?id=xxx` | 点赞文章(增加点赞次数) | | 获取首页数据 | GET | `/index?app=xxx` | 获取帮助中心首页数据(分类+常见问题) | ### 后台管理接口(business-site-setting-controller) #### 首页/商城轮播图 **接口基础路径**:`${jeesharp.web.adminPath}/setting/homeBanner/v1` | 接口 | 方法 | URL | 说明 | 权限标识 | |------|------|-----|------|----------| | 详情 | GET | `/info?id=xxx` | 含跳转字段与 `resolvedLinkUrl` 预览 | `setting:homeBanner:info` | | 分页列表 | POST | `/list` | 支持按 `bannerPosition`(HOME/MALL)、平台、状态筛选 | `setting:homeBanner:list` | | 保存 | POST | `/save` | 新增/编辑;保存时校验跳转目标并回写 `linkUrl` | `setting:homeBanner:save` | | 删除 | GET | `/delete?ids=xxx` | 批量删除 | `setting:homeBanner:delete` | | 跳转目标搜索 | GET | `/jumpBizOptions?bizType=&keyword=` | 配置业务详情时远程搜索候选项 | `setting:homeBanner:info` | **跳转类型 `jumpType`**:0-不跳转、1-业务详情、2-业务列表、3-自定义小程序路径、4-H5外链。 **业务场景 `bizType`**(节选):`TICKET_VENUE`、`SCENIC_POI`、`HERITAGE`、`HOTEL`、`FOOD_RESTAURANT`、`LEISURE_VENUE`、`VILLAGE_DEST`、`EXPLAIN_PACKAGE`、`STUDY_PLAN`、`YEARCARD`、`CULTURE_ACTIVITY`、`TRAVEL_STRATEGY`、`TRAVEL_NEWS`、`MALL_SPU`、`COUPON`、`ROUTE`、`MARKETING`、`HOME_GRID_INTRO`(详见 `HomeBannerBizTypeEnum`)。 **管理端前端路由**:列表 `/business/setting/homeBanner`,编辑 `/business/setting/homeBanner/editor`(`TravelWebFrontProject` 业务仓 `asyncRouter` 注册,编辑页不在 `sys_menu` 中单独建菜单)。 #### 移动端轮播(business-mobile-gateway,免登录) | 接口 | 方法 | URL | 说明 | |------|------|-----|------| | 首页壳层轮播 | GET | `/mobile/home/shell` 或 `/mobile/home/banners` | 返回 `MiniHomeBannerItemVO` 列表(含 `linkUrl`、`jumpType`) | | 按位置轮播 | GET | `/mobile/setting/homeBanner/list?position=HOME\|MALL` | 同上 | | 商城轮播 | GET | `/mobile/mall/banners` | `banner_position=MALL` 的轮播项(含跳转字段) | #### 意见反馈管理 **接口基础路径**:`${jeesharp.web.adminPath}/setting/feedback/v1` | 接口 | 方法 | URL | 说明 | 权限标识 | |------|------|-----|------|----------| | 获取详情 | GET | `/info?id=xxx` | 获取反馈详细信息 | `setting:feedback:info` | | 获取列表 | POST | `/list` | 分页查询反馈列表 | `setting:feedback:list` | | 删除反馈 | GET | `/delete?ids=xxx` | 批量删除反馈 | `setting:feedback:delete` | | 处理反馈 | POST | `/handle` | 标记反馈为处理中 | `setting:feedback:handle` | | 完成处理 | POST | `/complete` | 标记反馈为已处理 | `setting:feedback:complete` | | 关闭反馈 | GET | `/close?id=xxx` | 关闭反馈 | `setting:feedback:close` | #### 关于我们管理 **接口基础路径**:`${jeesharp.web.adminPath}/setting/aboutUs/v1` | 接口 | 方法 | URL | 说明 | 权限标识 | |------|------|-----|------|----------| | 获取详情 | GET | `/info?id=xxx` | 获取关于我们详细信息 | `setting:aboutUs:info` | | 获取列表 | POST | `/list` | 分页查询关于我们列表 | `setting:aboutUs:list` | | 保存 | POST | `/save` | 新增或更新关于我们 | `setting:aboutUs:save` | | 删除 | GET | `/delete?ids=xxx` | 批量删除关于我们 | `setting:aboutUs:delete` | | 禁用 | GET | `/disable?id=xxx` | 禁用关于我们 | `setting:aboutUs:disable` | | 启用 | GET | `/enable?id=xxx` | 启用关于我们 | `setting:aboutUs:enable` | #### 帮助分类管理 **接口基础路径**:`${jeesharp.web.adminPath}/setting/helpCategory/v1` | 接口 | 方法 | URL | 说明 | 权限标识 | |------|------|-----|------|----------| | 获取详情 | GET | `/info?id=xxx` | 获取帮助分类详细信息 | `setting:helpCategory:info` | | 获取列表 | POST | `/list` | 分页查询帮助分类列表 | `setting:helpCategory:list` | | 保存 | POST | `/save` | 新增或更新帮助分类 | `setting:helpCategory:save` | | 删除 | GET | `/delete?ids=xxx` | 批量删除帮助分类 | `setting:helpCategory:delete` | | 禁用 | GET | `/disable?id=xxx` | 禁用帮助分类 | `setting:helpCategory:disable` | | 启用 | GET | `/enable?id=xxx` | 启用帮助分类 | `setting:helpCategory:enable` | #### 帮助文章管理 **接口基础路径**:`${jeesharp.web.adminPath}/setting/helpArticle/v1` | 接口 | 方法 | URL | 说明 | 权限标识 | |------|------|-----|------|----------| | 获取详情 | GET | `/info?id=xxx` | 获取帮助文章详细信息 | `setting:helpArticle:info` | | 获取列表 | POST | `/list` | 分页查询帮助文章列表 | `setting:helpArticle:list` | | 保存 | POST | `/save` | 新增或更新帮助文章 | `setting:helpArticle:save` | | 删除 | GET | `/delete?ids=xxx` | 批量删除帮助文章 | `setting:helpArticle:delete` | | 禁用 | GET | `/disable?id=xxx` | 禁用帮助文章 | `setting:helpArticle:disable` | | 启用 | GET | `/enable?id=xxx` | 启用帮助文章 | `setting:helpArticle:enable` | --- ## 数据库表设计 ### 关于我们表 (app_about_us) | 字段名 | 类型 | 说明 | |--------|------|------| | id | VARCHAR(64) | 主键ID | | app | VARCHAR(32) | 应用标识(APP/WECHAT_MINI/WECHAT_MP/H5等) | | title | VARCHAR(100) | 标题 | | content | TEXT | 内容(支持富文本) | | version | VARCHAR(32) | 版本号 | | company_name | VARCHAR(100) | 公司名称 | | company_address | VARCHAR(255) | 公司地址 | | contact_phone | VARCHAR(50) | 联系电话 | | contact_email | VARCHAR(100) | 联系邮箱 | | official_website | VARCHAR(255) | 官方网站 | | wechat_official_account | VARCHAR(100) | 微信公众号 | | wechat_mini_program_name | VARCHAR(100) | 微信小程序名称 | | copyright | VARCHAR(255) | 版权信息 | | icp_license | VARCHAR(100) | ICP备案号 | | sort_order | INT | 排序号 | | status | TINYINT | 状态:0-禁用 1-启用 | **索引设计**: | 索引名 | 字段 | 说明 | |--------|------|------| | idx_app | app | 应用标识查询 | | idx_status | status | 状态筛选 | | idx_sort_order | sort_order | 排序查询 | ### 意见反馈表 (app_feedback) | 字段名 | 类型 | 说明 | |--------|------|------| | id | VARCHAR(64) | 主键ID | | member_id | VARCHAR(64) | 会员ID | | feedback_type | TINYINT | 反馈类型:1-功能建议 2-问题反馈 3-其他 | | title | VARCHAR(100) | 反馈标题 | | content | TEXT | 反馈内容 | | contact | VARCHAR(50) | 联系方式(手机号或邮箱) | | images | TEXT | 图片URL列表(JSON数组格式) | | status | TINYINT | 反馈状态:0-待处理 1-处理中 2-已处理 3-已关闭 | | handler_id | VARCHAR(64) | 处理人ID | | handler_name | VARCHAR(64) | 处理人姓名 | | handle_date | DATETIME | 处理时间 | | handle_result | TEXT | 处理结果/回复内容 | | device_info | TEXT | 设备信息(JSON格式) | | app_version | VARCHAR(32) | 应用版本号 | | os_version | VARCHAR(32) | 操作系统版本 | **索引设计**: | 索引名 | 字段 | 说明 | |--------|------|------| | idx_member_id | member_id | 会员反馈查询 | | idx_feedback_type | feedback_type | 反馈类型筛选 | | idx_status | status | 状态筛选 | | idx_create_date | create_date | 时间排序 | ### 帮助分类表 (app_help_category) | 字段名 | 类型 | 说明 | |--------|------|------| | id | VARCHAR(64) | 主键ID | | app | VARCHAR(32) | 应用标识(APP/WECHAT_MINI/WECHAT_MP/H5等) | | category_name | VARCHAR(50) | 分类名称 | | icon | VARCHAR(500) | 分类图标 | | description | VARCHAR(255) | 分类描述 | | sort_order | INT | 排序号 | | status | TINYINT | 状态:0-禁用 1-启用 | **索引设计**: | 索引名 | 字段 | 说明 | |--------|------|------| | idx_app | app | 应用标识查询 | | idx_status | status | 状态筛选 | | idx_sort_order | sort_order | 排序查询 | ### 帮助文章表 (app_help_article) | 字段名 | 类型 | 说明 | |--------|------|------| | id | VARCHAR(64) | 主键ID | | app | VARCHAR(32) | 应用标识(APP/WECHAT_MINI/WECHAT_MP/H5等) | | category_id | VARCHAR(64) | 分类ID | | title | VARCHAR(200) | 文章标题 | | content | TEXT | 文章内容(支持富文本) | | summary | VARCHAR(500) | 文章摘要 | | cover_image | VARCHAR(500) | 封面图片 | | is_faq | TINYINT | 是否常见问题:0-否 1-是 | | view_count | INT | 浏览次数 | | like_count | INT | 点赞次数 | | sort_order | INT | 排序号 | | status | TINYINT | 状态:0-禁用 1-启用 | **索引设计**: | 索引名 | 字段 | 说明 | |--------|------|------| | idx_app | app | 应用标识查询 | | idx_category_id | category_id | 分类查询 | | idx_is_faq | is_faq | 常见问题筛选 | | idx_status | status | 状态筛选 | | idx_sort_order | sort_order | 排序查询 | | idx_view_count | view_count | 热门文章排序 | --- ## 使用说明 ### 执行 SQL ```bash # 新建库:先读 site_setting_sql_index.sql,再按需执行,例如: mysql -u root -p your_database < site_setting_schema.sql mysql -u root -p your_database < site_setting_mock_data.sql mysql -u root -p your_database < site_setting_menu_permission.sql # 已有库补字段(按需): mysql -u root -p your_database < site_setting_alter.sql ``` ### 注意事项 1. **多租户支持**:所有表均包含 `tenant_id` 和 `tenant_code` 字段 2. **图片存储**:图片URL列表以JSON数组格式存储,建议使用OSS等对象存储服务 3. **设备信息**:设备信息以JSON格式存储,可包含设备型号、系统版本等信息 --- ## 版本记录 | 版本 | 日期 | 说明 | |------|------|------| | 1.1.0 | 2026-07-03 | 轮播图结构化跳转(jump_type/biz_type/biz_id)、管理端 homeBanner 页面、商城轮播含跳转 | | 1.0.0 | 2026-02-05 | 初始版本,包含意见反馈、关于我们和帮助中心功能 |