游铛铛-技术方案-管理端.md 3.4 KB

游铛铛管理web端技术方案

一、技术栈

  • 框架:React / Vue 3
  • UI组件:Ant Design / Element Plus
  • HTTP:Axios
  • 状态管理:Redux / Pinia
  • 构建:Vite

二、功能模块

2.1 用户管理

  • 管理员登录/退出
  • 注册用户信息查看(用户名、邮箱、注册时间、机器码、有效期)

2.2 软件管理

  • 软件特征码管理(如:buff-xp-steam-sh)
  • 收费基数配置(每天多少钱)

2.3 卡密管理

  • 卡密生成
    • 选择软件特征码
    • 设置天数
    • 设置折扣
    • 批量生成
  • 卡密激活信息
    • 卡密、激活用户、激活时间、到期时间

2.4 密钥管理

  • 当前API公钥/私钥展示
  • 历史密钥记录
  • 更新周期配置(默认10天)

2.5 日志管理

  • API接口日志记录
  • 日志查询(时间、用户、接口)
  • 日志导出

2.6 公告管理

  • 公告发布/编辑
  • 公告列表
  • 公告状态(启用/禁用)

2.7 管理员管理

  • 管理员账号管理
  • 权限管理

三、页面结构

管理后台
├── 登录页
├── 主布局
│   ├── 顶部导航(Logo、用户名、退出)
│   ├── 左侧菜单
│   │   ├── 用户管理
│   │   ├── 软件管理
│   │   ├── 卡密管理
│   │   ├── 密钥管理
│   │   ├── 日志管理
│   │   ├── 公告管理
│   │   └── 管理员管理
│   └── 内容区域(路由页面)

四、API接口

4.1 认证接口

  • POST /admin/login - 管理员登录
  • POST /admin/logout - 退出登录

4.2 用户管理

  • GET /admin/users - 用户列表
  • GET /admin/users/:id - 用户详情

4.3 软件管理

  • GET /admin/software - 软件列表
  • POST /admin/software - 创建软件
  • PUT /admin/software/:id - 更新软件
  • DELETE /admin/software/:id - 删除软件

4.4 卡密管理

  • POST /admin/cards/generate - 生成卡密
  • GET /admin/cards - 卡密列表
  • GET /admin/cards/:id/activate - 卡密激活信息

4.5 密钥管理

  • GET /admin/keys/current - 当前密钥
  • GET /admin/keys/history - 历史密钥
  • PUT /admin/keys/cycle - 更新周期配置

4.6 日志管理

  • GET /admin/logs - 日志列表
  • GET /admin/logs/export - 导出日志

4.7 公告管理

  • GET /admin/announcements - 公告列表
  • POST /admin/announcements - 创建公告
  • PUT /admin/announcements/:id - 更新公告
  • DELETE /admin/announcements/:id - 删除公告

五、实现要点

5.1 路由配置

const routes = [
  { path: '/login', component: Login },
  { path: '/', component: Layout, children: [
    { path: 'users', component: UserList },
    { path: 'software', component: SoftwareList },
    { path: 'cards', component: CardList },
    // ...
  ]}
]

5.2 权限控制

// 路由守卫
router.beforeEach((to, from, next) => {
  const token = localStorage.getItem('admin_token')
  if (to.path !== '/login' && !token) {
    next('/login')
  } else {
    next()
  }
})

5.3 卡密生成

// 批量生成卡密
async function generateCards(params) {
  const { softwareCode, days, discount, count } = params
  const response = await axios.post('/admin/cards/generate', {
    software_code: softwareCode,
    days,
    discount,
    count
  })
  return response.data
}