新版官网模板
This commit is contained in:
314
app/api/cms/cmsWebsite/index.ts
Normal file
314
app/api/cms/cmsWebsite/index.ts
Normal file
@@ -0,0 +1,314 @@
|
||||
import request from '@/utils/request';
|
||||
import type { ApiResult, PageResult } from '@/api';
|
||||
import type { CmsWebsite, CmsWebsiteParam } from './model';
|
||||
import { MODULES_API_URL, SERVER_API_URL } from '@/config/setting';
|
||||
|
||||
/**
|
||||
* 获取网站信息
|
||||
*/
|
||||
export async function getSiteInfo() {
|
||||
const res = await request.get<ApiResult<CmsWebsite>>(
|
||||
MODULES_API_URL + '/cms/cms-website/getSiteInfo',
|
||||
{
|
||||
params: {}
|
||||
}
|
||||
);
|
||||
if (res.data.code === 0 && res.data.data) {
|
||||
return res.data.data;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询网站信息记录表
|
||||
*/
|
||||
export async function pageCmsWebsite(params: CmsWebsiteParam) {
|
||||
const res = await request.get<ApiResult<PageResult<CmsWebsite>>>(
|
||||
MODULES_API_URL + '/cms/cms-website/page',
|
||||
{
|
||||
params
|
||||
}
|
||||
);
|
||||
if (res.data.code === 0) {
|
||||
return res.data.data;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询网站信息记录表列表
|
||||
*/
|
||||
export async function listCmsWebsite(params?: CmsWebsiteParam) {
|
||||
const res = await request.get<ApiResult<CmsWebsite[]>>(
|
||||
MODULES_API_URL + '/cms/cms-website',
|
||||
{
|
||||
params
|
||||
}
|
||||
);
|
||||
if (res.data.code === 0 && res.data.data) {
|
||||
return res.data.data;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加网站信息记录表
|
||||
*/
|
||||
export async function addCmsWebsite(data: CmsWebsite): Promise<CmsWebsite> {
|
||||
const res = await request.post<ApiResult<CmsWebsite>>(
|
||||
MODULES_API_URL + '/cms/cms-website',
|
||||
data
|
||||
);
|
||||
|
||||
console.log('addCmsWebsite 响应:', res);
|
||||
|
||||
// 处理响应数据
|
||||
const responseData = res.data;
|
||||
|
||||
// 检查是否为 ApiResult 格式
|
||||
if (responseData && typeof responseData === 'object' && 'code' in responseData) {
|
||||
// 是 ApiResult 格式
|
||||
if (responseData.code === 0) {
|
||||
// 确保返回的数据不为空
|
||||
if (!responseData.data) {
|
||||
console.warn('addCmsWebsite: 后端返回的data字段为空', responseData);
|
||||
// 返回一个包含websiteId的默认对象
|
||||
return {
|
||||
websiteName: data.websiteName,
|
||||
websiteCode: data.websiteCode,
|
||||
websiteType: data.websiteType,
|
||||
type: data.type,
|
||||
comments: data.comments
|
||||
} as CmsWebsite;
|
||||
}
|
||||
return responseData.data;
|
||||
}
|
||||
return Promise.reject(new Error(responseData.message || '创建失败'));
|
||||
} else {
|
||||
// 直接返回 CmsWebsite 对象
|
||||
console.log('addCmsWebsite: 后端直接返回CmsWebsite对象', responseData);
|
||||
return responseData as CmsWebsite;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改网站信息记录表
|
||||
*/
|
||||
export async function updateCmsWebsite(data: CmsWebsite) {
|
||||
const res = await request.put<ApiResult<unknown>>(
|
||||
MODULES_API_URL + '/cms/cms-website',
|
||||
data
|
||||
);
|
||||
if (res.data.code === 0) {
|
||||
return res.data.message;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除网站信息记录表
|
||||
*/
|
||||
export async function removeCmsWebsite(id?: number) {
|
||||
const res = await request.delete<ApiResult<unknown>>(
|
||||
MODULES_API_URL + '/cms/cms-website/' + id
|
||||
);
|
||||
if (res.data.code === 0) {
|
||||
return res.data.message;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除网站信息记录表
|
||||
*/
|
||||
export async function removeBatchCmsWebsite(data: (number | undefined)[]) {
|
||||
const res = await request.delete<ApiResult<unknown>>(
|
||||
MODULES_API_URL + '/cms/cms-website/batch',
|
||||
{
|
||||
data
|
||||
}
|
||||
);
|
||||
if (res.data.code === 0) {
|
||||
return res.data.message;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id查询网站信息记录表
|
||||
*/
|
||||
export async function getCmsWebsite(id: number) {
|
||||
const res = await request.get<ApiResult<CmsWebsite>>(
|
||||
MODULES_API_URL + '/cms/cms-website/' + id
|
||||
);
|
||||
if (res.data.code === 0 && res.data.data) {
|
||||
return res.data.data;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除缓存
|
||||
*/
|
||||
export async function removeSiteInfoCache(key?: string) {
|
||||
const res = await request.delete<ApiResult<unknown>>(
|
||||
MODULES_API_URL + '/cms/cms-website/clearSiteInfo/' + key
|
||||
);
|
||||
if (res.data.code === 0) {
|
||||
return res.data.message;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
export async function pageCmsWebsiteAll(params: CmsWebsiteParam) {
|
||||
const res = await request.get<ApiResult<PageResult<CmsWebsite>>>(
|
||||
MODULES_API_URL + '/cms/cms-website/pageAll',
|
||||
{
|
||||
params
|
||||
}
|
||||
);
|
||||
if (res.data.code === 0) {
|
||||
return res.data.data;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id查询网站
|
||||
*/
|
||||
export async function getCmsWebsiteAll(id: number) {
|
||||
const res = await request.get<ApiResult<CmsWebsite>>(
|
||||
'/cms/cms-website/getAll/' + id
|
||||
);
|
||||
if (res.data.code === 0 && res.data) {
|
||||
return res.data;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改网站信息记录表
|
||||
*/
|
||||
export async function updateCmsWebsiteAll(data: CmsWebsite) {
|
||||
const res = await request.put<ApiResult<unknown>>(
|
||||
'/cms/cms-website/updateAll',
|
||||
data
|
||||
);
|
||||
if (res.data.code === 0) {
|
||||
return res.data.message;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
// ---- 发布管理 API ----
|
||||
|
||||
/**
|
||||
* 提交上架申请
|
||||
*/
|
||||
export async function submitPublishReview(data: {
|
||||
websiteId: number
|
||||
priceType: string
|
||||
price?: number
|
||||
subscriptionPeriod?: string
|
||||
appDescription?: string
|
||||
detailDescription?: string
|
||||
screenshots?: string
|
||||
}) {
|
||||
const res = await request.post<ApiResult<unknown>>(
|
||||
MODULES_API_URL + '/cms/cms-website/submitReview',
|
||||
data
|
||||
)
|
||||
if (res.data.code === 0) return res.data.message
|
||||
return Promise.reject(new Error(res.data.message))
|
||||
}
|
||||
|
||||
/**
|
||||
* 下架应用
|
||||
*/
|
||||
export async function unpublishCmsWebsite(websiteId: number) {
|
||||
const res = await request.post<ApiResult<unknown>>(
|
||||
MODULES_API_URL + '/cms/cms-website/unpublish/' + websiteId
|
||||
)
|
||||
if (res.data.code === 0) return res.data.message
|
||||
return Promise.reject(new Error(res.data.message))
|
||||
}
|
||||
|
||||
/**
|
||||
* 撤回审核申请
|
||||
*/
|
||||
export async function withdrawPublishReview(websiteId: number) {
|
||||
const res = await request.post<ApiResult<unknown>>(
|
||||
MODULES_API_URL + '/cms/cms-website/withdrawReview/' + websiteId
|
||||
)
|
||||
if (res.data.code === 0) return res.data.message
|
||||
return Promise.reject(new Error(res.data.message))
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理员审核通过
|
||||
*/
|
||||
export async function approvePublishReview(websiteId: number) {
|
||||
const res = await request.post<ApiResult<unknown>>(
|
||||
MODULES_API_URL + '/cms/cms-website/approveReview/' + websiteId
|
||||
)
|
||||
if (res.data.code === 0) return res.data.message
|
||||
return Promise.reject(new Error(res.data.message))
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理员审核拒绝
|
||||
*/
|
||||
export async function rejectPublishReview(data: { websiteId: number; rejectReason: string }) {
|
||||
const res = await request.post<ApiResult<unknown>>(
|
||||
MODULES_API_URL + '/cms/cms-website/rejectReview',
|
||||
data
|
||||
)
|
||||
if (res.data.code === 0) return res.data.message
|
||||
return Promise.reject(new Error(res.data.message))
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取发布审核记录列表(管理员用)
|
||||
*/
|
||||
export async function pagePublishReviews(params: {
|
||||
page?: number
|
||||
limit?: number
|
||||
publishStatus?: string
|
||||
keywords?: string
|
||||
}) {
|
||||
const res = await request.get<ApiResult<PageResult<CmsWebsite>>>(
|
||||
MODULES_API_URL + '/cms/cms-website/pageReviews',
|
||||
{ params }
|
||||
)
|
||||
if (res.data.code === 0) return res.data.data
|
||||
return Promise.reject(new Error(res.data.message))
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询应用产品(CmsWebsite 表,兼容 product 字段名)
|
||||
*/
|
||||
export async function pageAppProductAll(params: any) {
|
||||
const res = await request.get<ApiResult<PageResult<any>>>(
|
||||
SERVER_API_URL + '/cms/cms-website/pageAll',
|
||||
{ params }
|
||||
)
|
||||
if (res.data.code === 0) {
|
||||
// 字段映射:website -> product 兼容
|
||||
const data = res.data.data
|
||||
if (data?.list) {
|
||||
data.list = data.list.map((item: any) => ({
|
||||
...item,
|
||||
productId: item.websiteId,
|
||||
productName: item.websiteName,
|
||||
productCode: item.websiteCode,
|
||||
productSecret: item.websiteSecret,
|
||||
icon: item.websiteIcon,
|
||||
logo: item.websiteLogo,
|
||||
description: item.comments,
|
||||
userId: item.userId,
|
||||
}))
|
||||
}
|
||||
return data
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message))
|
||||
}
|
||||
209
app/api/cms/cmsWebsite/model/index.ts
Normal file
209
app/api/cms/cmsWebsite/model/index.ts
Normal file
@@ -0,0 +1,209 @@
|
||||
import type { PageParam } from '@/api';
|
||||
import type { CmsWebsiteSetting } from "@/api/cms/cmsWebsiteSetting/model";
|
||||
import type { CmsNavigation } from "@/api/cms/cmsNavigation/model";
|
||||
|
||||
/**
|
||||
* 网站信息记录表
|
||||
*/
|
||||
export interface CmsWebsite {
|
||||
// 站点ID
|
||||
websiteId?: number;
|
||||
// 网站名称
|
||||
websiteName?: string;
|
||||
// 网站标识
|
||||
websiteCode?: string;
|
||||
// 网站密钥
|
||||
websiteSecret?: string;
|
||||
// 网站LOGO
|
||||
websiteIcon?: string;
|
||||
// 网站LOGO
|
||||
websiteLogo?: string;
|
||||
// 网站LOGO(深色模式)
|
||||
websiteDarkLogo?: string;
|
||||
// 网站类型
|
||||
websiteType?: string;
|
||||
// 网站截图
|
||||
files?: string;
|
||||
// 网站类型
|
||||
type?: number;
|
||||
// 网站关键词
|
||||
keywords?: string;
|
||||
// 域名前缀
|
||||
prefix?: string;
|
||||
// 绑定域名
|
||||
domain?: string;
|
||||
// 全局样式
|
||||
style?: string;
|
||||
// 后台管理地址
|
||||
adminUrl?: string;
|
||||
// 应用版本 10标准版 20专业版 30永久授权
|
||||
version?: number;
|
||||
// 允许展示到插件市场
|
||||
market?: boolean;
|
||||
// 应用类型 0应用 1插件
|
||||
plugin?: boolean;
|
||||
// 默认编辑器
|
||||
editor?: number,
|
||||
// 服务到期时间
|
||||
expirationTime?: string;
|
||||
// 模版ID
|
||||
templateId?: number;
|
||||
// 行业类型
|
||||
category?: string;
|
||||
// 行业类型(父级)
|
||||
industryParent?: string;
|
||||
// 行业类型(子级)
|
||||
industryChild?: string;
|
||||
// 企业ID
|
||||
companyId?: number;
|
||||
// 所在国家
|
||||
country?: string;
|
||||
// 所在省份
|
||||
province?: string;
|
||||
// 所在城市
|
||||
city?: string;
|
||||
// 所在辖区
|
||||
region?: string;
|
||||
// 经度
|
||||
longitude?: string;
|
||||
// 纬度
|
||||
latitude?: string;
|
||||
// 街道地址
|
||||
address?: string;
|
||||
// 联系电话
|
||||
phone?: string;
|
||||
// 电子邮箱
|
||||
email?: string;
|
||||
// ICP备案号
|
||||
icpNo?: string;
|
||||
// 公安备案
|
||||
policeNo?: string;
|
||||
// 备注
|
||||
comments?: string;
|
||||
// 是否推荐
|
||||
recommend?: number;
|
||||
// 是否官方
|
||||
official?: boolean;
|
||||
// 是否运行中
|
||||
running?: number;
|
||||
// 状态 0未开通 1运行中 2维护中 3已关闭 4已欠费停机 5违规关停
|
||||
status?: number;
|
||||
// 维护说明
|
||||
statusText?: string;
|
||||
// 关闭说明
|
||||
statusClose?: string;
|
||||
// 全局样式
|
||||
styles?: string;
|
||||
// 语言
|
||||
lang?: string;
|
||||
// 排序号
|
||||
sortNumber?: number;
|
||||
// 用户ID
|
||||
userId?: number;
|
||||
// 是否删除, 0否, 1是
|
||||
deleted?: number;
|
||||
// 租户id
|
||||
tenantId?: number;
|
||||
// 创建时间
|
||||
createTime?: string;
|
||||
// 修改时间
|
||||
updateTime?: string;
|
||||
// 网站配置
|
||||
config?: any;
|
||||
// 短信验证码
|
||||
smsCode?: string;
|
||||
// 短信验证码
|
||||
code?: string;
|
||||
// 是否记住密码
|
||||
remember?: boolean;
|
||||
// 企业名称
|
||||
companyName?: string;
|
||||
// 是否注册未超级管理员
|
||||
isSuperAdmin?: boolean;
|
||||
// 用户名
|
||||
username?: string;
|
||||
// 开发者
|
||||
developer?: string;
|
||||
// 网站配置
|
||||
setting?: CmsWebsiteSetting;
|
||||
|
||||
// ---- 发布管理字段 ----
|
||||
// 发布状态: developing开发中 pending_review待审核 published已上架 rejected审核未通过 deprecated已下架
|
||||
publishStatus?: 'developing' | 'pending_review' | 'published' | 'rejected' | 'deprecated';
|
||||
// 定价模式: free免费 one_time一次性 subscription订阅
|
||||
priceType?: 'free' | 'one_time' | 'subscription';
|
||||
// 价格(分)
|
||||
price?: number;
|
||||
// 订阅周期: month按月 year按年
|
||||
subscriptionPeriod?: 'month' | 'year';
|
||||
// 应用简介
|
||||
appDescription?: string;
|
||||
// 详细说明
|
||||
detailDescription?: string;
|
||||
// 应用截图(JSON数组字符串)
|
||||
screenshots?: string;
|
||||
// 安装次数
|
||||
installCount?: number;
|
||||
// 评分(1-5)
|
||||
rating?: number;
|
||||
// 审核拒绝原因
|
||||
rejectReason?: string;
|
||||
// 提交审核时间
|
||||
publishApplyTime?: string;
|
||||
// 正式发布时间
|
||||
publishTime?: string;
|
||||
// 审核人ID
|
||||
reviewerId?: number;
|
||||
// 审核时间
|
||||
reviewTime?: string;
|
||||
}
|
||||
|
||||
export interface AppInfo {
|
||||
appId?: number;
|
||||
appName?: string;
|
||||
description?: string;
|
||||
keywords?: string;
|
||||
appCode?: string;
|
||||
mpQrCode?: string;
|
||||
title?: string;
|
||||
logo?: string;
|
||||
icon?: string;
|
||||
domain?: string;
|
||||
running?: number;
|
||||
version?: number;
|
||||
expirationTime?: string;
|
||||
expired?: boolean;
|
||||
expiredDays?: number;
|
||||
soon?: number;
|
||||
statusIcon?: string;
|
||||
statusText?: string;
|
||||
config?: Object;
|
||||
serverTime?: Object;
|
||||
topNavs?: CmsNavigation[];
|
||||
bottomNavs?: CmsNavigation[];
|
||||
setting?: Object;
|
||||
createTime?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 网站信息记录表搜索条件
|
||||
*/
|
||||
export interface CmsWebsiteParam extends PageParam {
|
||||
websiteId?: number;
|
||||
type?: number;
|
||||
status?: number;
|
||||
plugin?: boolean;
|
||||
official?: boolean;
|
||||
market?: boolean;
|
||||
keywords?: string;
|
||||
// 按用户过滤(单个)
|
||||
userId?: number;
|
||||
// 按用户集合过滤(多个,后端 IN 查询)
|
||||
userIds?: number[];
|
||||
// 按 websiteId 集合过滤(后端 IN 查询)
|
||||
websiteIds?: number[];
|
||||
// 协作成员userId:后端一次联表查出该用户创建的 + 作为成员参与的所有应用
|
||||
memberUserId?: number;
|
||||
// 发布状态筛选
|
||||
publishStatus?: string;
|
||||
}
|
||||
Reference in New Issue
Block a user