This commit is contained in:
nanguaboss
2026-08-03 00:07:01 +08:00
commit 71c6e8d9c1
112 changed files with 7815 additions and 0 deletions
+98
View File
@@ -0,0 +1,98 @@
# SuperLink Web 后台管理系统
基于 **PHP原生 + MySQL + jQuery** 的 Web 后台管理系统(无框架,纯 HTML+CSS+JS+JQ)。
## 一、部署环境(文档固定)
| 项目 | 值 |
| --- | --- |
| 服务器 | phpstudy_pro |
| Web服务器 | Nginx 1.15.11 |
| PHP | 7.4.x |
| 数据库 | MySQL 5.7.26 |
| 数据库名 | mysuperlink(原库已有14张业务表) |
| 字符集 | utf8mb4 |
| 根目录 | C:/phpstudy_pro/WWW/mysuperlink/ |
数据库连接信息(`config/database.php` 已按此配置,可按需修改):
- 主机 `127.0.0.1` / 端口 `3306` / 库名 `mysuperlink`
- 用户 `mysuperlink_root` / 密码 `123456`
## 二、部署步骤
1. 将本项目整个 `mysuperlink/` 文件夹复制到 `C:/phpstudy_pro/WWW/mysuperlink/`。
2. 在 Navicat/phpMyAdmin 中对 `mysuperlink` 库执行 `sql/system_tables.sql`:
- 新建 3 张系统表:`system_users` / `system_roles` / `system_logs`(含默认数据)
- 新建 1 张业务表:`channels`(渠道管理模块需要,原14张表中没有)
3. 确保 `static/uploads/documents/` 目录可写(PHP上传文件使用)。
4. 浏览器访问 `http://localhost/mysuperlink/` 即可。
**默认账号:admin / admin123**(密码为 sha1 加密存储)。
## 三、目录结构
```
mysuperlink/
├── index.html / dashboard.html / preliminary.html / company.html / person.html
├── media.html / need.html / edm.html / data_custom.html / media_wholesale.html
├── channel.html / document.html / user.html / role.html / log.html (共14个页面)
├── api/ # 所有PHP接口(严禁HTML混写)
│ ├── common/ # db.php(PDO单例) / response.php(统一JSON) / auth.php(Session鉴权) / logger.php(操作日志) / helpers.php
│ ├── auth/ # login.php(滑块验证) / logout.php / forgot.php / session.php(会话校验)
│ ├── dashboard/ # stats.php(8指标卡+行业柱状图+区域+词云)
│ ├── preliminary/ # list.php / stats.php
│ ├── company/ person/ media/ need/ # list/detail/add/update/delete/import/export (+push)
│ ├── marketing/ # edm.php(行业+区域二级联动) / edm_export.php / data_custom.php / media_wholesale.php
│ ├── channel/ # list.php / stats.php / save.php / delete.php
│ ├── document/ # list.php / upload.php(存本地) / delete.php(删物理文件)
│ └── system/ # user_list/add/update/delete / role_list/add/update/delete / log_list(仅超管)
├── static/
│ ├── css/ # style.css / login.css / slider.css
│ ├── js/ # config.js(含MENU_MAP) / common.js / login.js / dashboard.js / 各模块js
│ ├── libs/ # jquery-3.6.0 / echarts / layer / world.js / slider.js(自研)
│ └── uploads/documents/ # 文件物理存储(按年/月自动分目录)
├── config/database.php # 数据库配置(返回数组)
└── sql/
├── init.sql # (原库已有14张表,此处不重复提供)
└── system_tables.sql # ★ 新增3张系统表 + channels表 + 默认数据(必须执行)
```
## 四、接口规范
统一返回 JSON:`{ "code": 0(成功)/非0(失败), "msg": "提示", "data": {} }`
- 所有写类操作必须携带 `X-Requested-With: XMLHttpRequest` 头(前端 common.js 已自动处理)。
- 除登录/找回密码外,所有接口需 Session 鉴权;无权限返回 `403`;未登录返回 `401`。
- 所有写类接口(add/update/delete/import/export/login/logout/push/audit/convert)自动调用 `logAction()` 写操作日志。
### 列表接口通用参数
`page`(默认1)、`limit`(默认20)、`keyword`(关键词)、各模块专属筛选:
- 企业:`industry` / `business_role` / `country`
- 人员:`gender` / `nationality` / `work_location`
- 媒体:`platform` / `certification_type` / `account_level` / `owner_type`
- 需求:`start_date` / `end_date` / `company_name` / `industry` / `need_category`
- 日志:`action` / `module` / `username` / `start_date` / `end_date`
## 五、权限控制
- 登录后返回 `permissions` 数组,前端按 `MENU_MAP`(config.js)动态渲染左侧菜单。
- 后端每个接口调用 `checkPermission($module)` 二次校验,写操作另有 `checkAjax()` 校验。
- 操作日志(`log.html`)仅超级管理员可见(`requireSuperAdmin()`)。
- 保护规则:内置管理员(id=1)不可删除/禁用;超级管理员角色(id=1)不可修改/删除;被用户使用的角色不可删除。
## 六、占位/简化说明(按文档要求)
- **滑块验证**:纯前端实现(static/libs/slider.js),拖动通过后生成 token 提交登录;服务端校验 token 合法性。如需更安全可改为服务端签发。
- **找回密码**:占位实现,校验账号后返回成功提示,未接入SMTP。
- **需求推送 push.php**:占位实现,返回成功并写日志,后续接入第三方API/SMTP。
- **数据定制 / 媒体批发**:占位页面。
- **Dashboard 区域分布**:先用国家/地区柱状图(简化方案),后续可细化世界地图(world.js 已内置,可切换为地图渲染)。
- **需求词云**:从 company_needs.description 做简易分词(占位),后续接入专业分词服务。
- **渠道模块**:原14张表中无渠道表,已在 system_tables.sql 中新增 `channels` 表。
- **日志清理**:每月1日执行 `DELETE FROM system_logs WHERE created_at < DATE_SUB(NOW(), INTERVAL 6 MONTH);`(可加cron计划任务)。
## 七、CSV 导入模板
- 企业:表头 `name_zh,name_en,display_name,business_role,country,registration_number,address,legal_form,legal_representative,industry,industry_subdivision,website,registered_capital,established_date,is_listed,stock_code`(display_name 必填,UTF-8编码)
- 人员:表头 `union_id,full_name,gender,nationality,id_type,id_number,education,graduated_from,hometown,work_location,phone,email`(full_name 必填,union_id 可留空自动生成)
- 媒体:表头 `owner_type,owner_id,platform,account_id,profile_url,remark,is_primary,account_level,content_categories,follower_count,avg_read_count,certification_type`(owner_id 可填名称自动解析)