Files
cpdaily_xiaozhushou/frondend/src/api/admin.ts
T
becomer 2e2c161770 feat: init cpdaily-xiaozhushou with blue-green deploy
- backed/: Go Fiber backend with cpdaily integration
- frondend/: Vue 3 + Vite frontend
- Dockerfile: multi-stage build (Node → Go → Alpine)
- deploy/docker-compose.yml: production compose file
- .woodpecker/build.yml: CI/CD with blue-green zero-downtime deploy
- /health endpoint for deployment health checks
- Port 8884/8885 blue-green swap via 1Panel OpenResty
2026-07-03 15:37:55 +08:00

244 lines
5.3 KiB
TypeScript
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.
import api from './index'
// ======== 设置 ========
export interface SetupStatus {
installed: boolean
}
export interface AdminTokenResult {
token: {
accessToken: string
expiresIn: number
tokenType: string
}
agent: AgentInfo
}
/** 检查是否已安装(是否有admin账号) */
export function getSetupStatus() {
return api.get<{ data: SetupStatus }>('/admin/setup/status')
}
/** 初始化创建管理员账号 */
export function setupInit(params: { username: string; password: string }) {
return api.post<{ data: AdminTokenResult }>('/admin/setup/init', params)
}
// ======== 管理员认证 ========
export interface AdminLoginParams {
username: string
password: string
}
export interface AgentInfo {
id: number
username: string
role: string
rate: number
balance: number
status: string
parentId?: number | null
subCount?: number
cdkCount?: number
createdAt?: string
}
export interface AdminLoginResult {
token: {
accessToken: string
expiresIn: number
tokenType: string
}
agent: AgentInfo
}
/** admin 登录 */
export function adminLogin(params: AdminLoginParams) {
return api.post<{ data: AdminLoginResult }>('/admin/login', params)
}
/** 获取当前账号信息 */
export function getAdminMe() {
return api.get<{ data: AgentInfo }>('/admin/me')
}
// ======== 代理管理 ========
export interface AgentUser {
id: number
username: string
role: string
parentId: number | null
parentUsername?: string
rate: number
balance: number
status: string
createdAt: string
updatedAt: string
}
export interface CreateAgentParams {
username: string
password: string
rate: number
balance: number
}
export interface UpdateAgentParams {
balance?: number
rate?: number
}
/** 获取下级代理列表 */
export function getSubAgents() {
return api.get<{ data: AgentUser[] }>('/admin/agents')
}
/** 获取所有代理(admin only) */
export function getAllAgents() {
return api.get<{ data: AgentUser[] }>('/admin/all-agents')
}
/** 创建下级代理 */
export function createSubAgent(params: CreateAgentParams) {
return api.post<{ data: { username: string; role: string; rate: number; balance: number } }>(
'/admin/agents',
params
)
}
/** 更新代理(充值/修改费率) */
export function updateSubAgent(id: number, params: UpdateAgentParams) {
return api.put<{ data: AgentUser }>(`/admin/agents/${id}`, params)
}
/** 获取代理详情 */
export function getAgentDetail(id: number) {
return api.get(`/admin/agents/${id}`)
}
/** 修改代理密码(admin only) */
export function updateAgentPassword(id: number, password: string) {
return api.put(`/admin/agents/${id}/password`, { password })
}
/** 启用/禁用代理(admin only) */
export function updateAgentStatus(id: number, status: 'active' | 'disabled') {
return api.put(`/admin/agents/${id}/status`, { status })
}
// ======== CDK管理 ========
export interface CDKCode {
id: number
code: string
price: number
costPrice: number
agentId: number
status: string
userId: number | null
usedAt: string | null
createdAt: string
updatedAt: string
}
export interface GenerateCDKResult {
count: number
price: number
maxRuns: number
costTotal: number
cdkCodes: CDKCode[]
}
/** 生成CDK */
export function generateCDK(count: number = 1, maxRuns: number = 1) {
return api.post<{ data: GenerateCDKResult }>('/admin/cdks', { count, maxRuns })
}
/** 获取自己生成的CDK列表 */
export function getMyCDKs() {
return api.get<{ data: CDKCode[] }>('/admin/cdks')
}
/** 获取所有CDK列表(admin only) */
export function getAllCDKs() {
return api.get<{ data: CDKCode[] }>('/admin/all-cdks')
}
// ======== 系统设置(admin only) ========
export interface SystemSettings {
[key: string]: string
}
/** 获取系统设置 */
export function getSettings() {
return api.get<{ data: SystemSettings }>('/admin/settings')
}
/** 更新系统设置 */
export function updateSetting(key: string, value: string) {
return api.put('/admin/settings', { key, value })
}
// ======== 公告管理(admin only) ========
export interface Announcement {
id: number
title: string
content: string
targetType: 'agent' | 'user'
forcePopup: boolean
loopPopup: boolean
createdBy: number
createdAt: string
updatedAt: string
}
export interface AnnouncementListItem extends Announcement {
readCount: number
unreadCount: number
totalTargets: number
}
export interface CreateAnnouncementParams {
title: string
content: string
targetType: 'agent' | 'user'
forcePopup: boolean
loopPopup: boolean
}
export interface ReadUser {
userId: number
username: string
readAt: string
}
export interface AnnouncementDetail {
announcement: Announcement
readUsers: ReadUser[]
}
/** 创建公告 */
export function createAnnouncement(params: CreateAnnouncementParams) {
return api.post<{ data: Announcement }>('/admin/announcements', params)
}
/** 获取公告列表(含统计) */
export function getAnnouncements() {
return api.get<{ data: AnnouncementListItem[] }>('/admin/announcements')
}
/** 获取公告详情(含已读用户列表) */
export function getAnnouncementDetail(id: number) {
return api.get<{ data: AnnouncementDetail }>(`/admin/announcements/${id}`)
}
/** 删除公告 */
export function deleteAnnouncement(id: number) {
return api.delete(`/admin/announcements/${id}`)
}