Files
superlink/README.md
T
nanguaboss 71c6e8d9c1 v1.0.10
2026-08-03 00:07:01 +08:00

99 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 可填名称自动解析)