Files
websopy-taro/src/api/app/appProduct.ts
T
gxwebsoft 39d3b59434 refactor(user): 将VIP身份统一改为开发者标记
- 审核通过时不再新增角色,而是更新用户isDeveloper布尔标记
- 后端UserService新增markAsDeveloper方法,通过updateById设置isDeveloper
- UserController新增PUT接口更新开发者标记,权限使用sys:userRole:save
- 前端api新增setUserDeveloper调用新的审核接口
- vip-review页面移除角色相关代码,改为调用setUserDeveloper方法
- 约定开发者身份即sys_user.is_developer字段,不再依赖角色表记录
- app.config.ts追加开发者中心与平台管理相关页面路由
- 新增开发者中心、平台管理的多个API模块(apikey、appProduct、appDomain、developer请求等)
- 添加公共工具方法和复用组件用于开发者中心及平台管理功能
- 统一品牌名称为“威数谱软件”,更新文案及界面展现一致性
2026-07-22 14:57:03 +08:00

77 lines
2.6 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.
// 应用产品(对齐 PC /developer/apps 与 /admin 应用管理,基址走 websopy-api)
import { get, post } from '@/utils/request'
import { WebsopyBaseUrl } from '@/config/app'
const BASE = '/app/product'
export interface AppProduct {
productId?: number
productName?: string
productCode?: string
appType?: number
description?: string
logo?: string
publishStatus?: string
status?: number
adminUrl?: string
homeUrl?: string
createTime?: string
userId?: number
tenantId?: number
rejectReason?: string
[key: string]: any
}
/** 我的应用(创建者) */
export async function getMyApps(params: any) {
const res = await get<any>(`${BASE}/my/page`, params, { baseUrl: WebsopyBaseUrl })
if (res?.code === 0) return res.data
return Promise.reject(new Error(res?.message || '加载失败'))
}
/** 开发者应用列表 */
export async function getDeveloperApps(params?: any) {
const res = await get<any>(`${BASE}/list`, params, { baseUrl: WebsopyBaseUrl })
if (res?.code === 0) return res.data
return Promise.reject(new Error(res?.message || '加载失败'))
}
/** 创建应用 */
export async function addAppProduct(data: any) {
const res = await post<any>(`${BASE}/create`, data, { baseUrl: WebsopyBaseUrl })
if (res?.code === 0) return res.data
return Promise.reject(new Error(res?.message || '创建失败'))
}
/** 发布审核列表(管理端,publishStatus=pending_review) */
export async function pagePublishReviews(params: any) {
const res = await get<any>(`${BASE}/page`, { ...params, publishStatus: 'pending_review' }, { baseUrl: WebsopyBaseUrl })
if (res?.code === 0) return res.data
return Promise.reject(new Error(res?.message || '加载失败'))
}
/** 全部应用(管理端) */
export async function pageAllApps(params: any) {
const res = await get<any>(`${BASE}/page`, params, { baseUrl: WebsopyBaseUrl })
if (res?.code === 0) return res.data
return Promise.reject(new Error(res?.message || '加载失败'))
}
/** 审核通过 */
export async function approvePublishReview(id: number) {
const res = await post<any>(`${BASE}/approve/${id}`, {}, { baseUrl: WebsopyBaseUrl })
if (res?.code === 0) return res.message
return Promise.reject(new Error(res?.message || '操作失败'))
}
/** 审核拒绝 */
export async function rejectPublishReview(params: { productId: number; rejectReason: string }) {
const res = await post<any>(
`${BASE}/reject/${params.productId}?reason=${encodeURIComponent(params.rejectReason)}`,
{},
{ baseUrl: WebsopyBaseUrl }
)
if (res?.code === 0) return res.message
return Promise.reject(new Error(res?.message || '操作失败'))
}