feat(core): 初始化项目基础架构和CMS功能模块
- 添加Docker相关配置文件(.dockerignore, .env.example, .gitignore) - 实现服务端API代理功能,支持文件、模块和服务器API转发 - 创建文章详情页、栏目文章列表页和单页内容展示页面 - 集成Ant Design Vue组件库并实现SSR样式提取功能 - 定义API响应数据结构类型和应用布局组件 - 开发开发者应用中心和文章管理页面 - 实现CMS导航菜单获取和多租户切换功能
This commit is contained in:
131
app/api/shop/shopDealerPoster/index.ts
Normal file
131
app/api/shop/shopDealerPoster/index.ts
Normal file
@@ -0,0 +1,131 @@
|
||||
import request from '@/utils/request';
|
||||
import type { ShopDealerPoster, ShopDealerPosterParam } from './model';
|
||||
|
||||
/**
|
||||
* 分页查询分销商海报设置
|
||||
*/
|
||||
export async function pageShopDealerPoster(params: ShopDealerPosterParam) {
|
||||
const res = await request.get('/shop/dealer/poster/page', { params });
|
||||
if (res.data.code === 0) {
|
||||
return res.data.data;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询分销商海报设置列表
|
||||
*/
|
||||
export async function listShopDealerPoster(params?: ShopDealerPosterParam) {
|
||||
const res = await request.get('/shop/dealer/poster/list', { params });
|
||||
if (res.data.code === 0) {
|
||||
return res.data.data;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id查询分销商海报设置
|
||||
*/
|
||||
export async function getShopDealerPoster(id: number) {
|
||||
const res = await request.get('/shop/dealer/poster/' + id);
|
||||
if (res.data.code === 0) {
|
||||
return res.data.data;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前海报配置
|
||||
*/
|
||||
export async function getCurrentPosterConfig() {
|
||||
const res = await request.get('/shop/dealer/poster/config');
|
||||
if (res.data.code === 0) {
|
||||
return res.data.data;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加分销商海报设置
|
||||
*/
|
||||
export async function addShopDealerPoster(data: ShopDealerPoster) {
|
||||
const res = await request.post('/shop/dealer/poster', data);
|
||||
if (res.data.code === 0) {
|
||||
return res.data.message;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改分销商海报设置
|
||||
*/
|
||||
export async function updateShopDealerPoster(data: ShopDealerPoster) {
|
||||
const res = await request.put('/shop/dealer/poster', data);
|
||||
if (res.data.code === 0) {
|
||||
return res.data.message;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存海报配置
|
||||
*/
|
||||
export async function savePosterConfig(data: any) {
|
||||
const res = await request.post('/shop/dealer/poster/config', data);
|
||||
if (res.data.code === 0) {
|
||||
return res.data.message;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除分销商海报设置
|
||||
*/
|
||||
export async function removeShopDealerPoster(id: number) {
|
||||
const res = await request.delete('/shop/dealer/poster/' + id);
|
||||
if (res.data.code === 0) {
|
||||
return res.data.message;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除分销商海报设置
|
||||
*/
|
||||
export async function removeBatchShopDealerPoster(ids: (number | undefined)[]) {
|
||||
const res = await request.delete('/shop/dealer/poster/batch', { data: ids });
|
||||
if (res.data.code === 0) {
|
||||
return res.data.message;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成海报
|
||||
*/
|
||||
export async function generatePoster(userId: number, config?: any) {
|
||||
const res = await request.post('/shop/dealer/poster/generate', { userId, config });
|
||||
if (res.data.code === 0) {
|
||||
return res.data.data;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传海报背景图片
|
||||
*/
|
||||
export async function uploadPosterBackground(file: File) {
|
||||
const formData = new FormData();
|
||||
formData.append('file', file);
|
||||
|
||||
const res = await request.post('/shop/dealer/poster/upload/background', formData, {
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data'
|
||||
}
|
||||
});
|
||||
|
||||
if (res.data.code === 0) {
|
||||
return res.data.data;
|
||||
}
|
||||
return Promise.reject(new Error(res.data.message));
|
||||
}
|
||||
93
app/api/shop/shopDealerPoster/model/index.ts
Normal file
93
app/api/shop/shopDealerPoster/model/index.ts
Normal file
@@ -0,0 +1,93 @@
|
||||
import type { PageParam } from '@/api';
|
||||
|
||||
/**
|
||||
* 分销商海报设置
|
||||
*/
|
||||
export interface ShopDealerPoster {
|
||||
// 主键ID
|
||||
id?: number;
|
||||
// 海报名称
|
||||
name?: string;
|
||||
// 背景图片URL
|
||||
backgroundImage?: string;
|
||||
// 海报配置(JSON格式)
|
||||
config?: string;
|
||||
// 是否启用
|
||||
enabled?: boolean;
|
||||
// 是否默认
|
||||
isDefault?: boolean;
|
||||
// 排序
|
||||
sort?: number;
|
||||
// 商城ID
|
||||
tenantId?: number;
|
||||
// 创建时间
|
||||
createTime?: string | Date;
|
||||
// 修改时间
|
||||
updateTime?: string | Date;
|
||||
}
|
||||
|
||||
/**
|
||||
* 海报配置
|
||||
*/
|
||||
export interface PosterConfig {
|
||||
// 背景图片
|
||||
backgroundImage?: string;
|
||||
// 海报尺寸
|
||||
width?: number;
|
||||
height?: number;
|
||||
// 是否显示头像
|
||||
showAvatar?: boolean;
|
||||
// 头像URL
|
||||
avatarUrl?: string;
|
||||
// 头像宽度
|
||||
avatarWidth?: number;
|
||||
// 头像形状 circle|square
|
||||
avatarShape?: string;
|
||||
// 是否显示昵称
|
||||
showNickname?: boolean;
|
||||
// 昵称
|
||||
nickname?: string;
|
||||
// 昵称字体大小
|
||||
nicknameFontSize?: number;
|
||||
// 昵称颜色
|
||||
nicknameColor?: string;
|
||||
// 是否显示二维码
|
||||
showQrcode?: boolean;
|
||||
// 二维码URL
|
||||
qrcodeUrl?: string;
|
||||
// 二维码宽度
|
||||
qrcodeWidth?: number;
|
||||
// 元素位置配置
|
||||
elements?: {
|
||||
avatar?: { x: number; y: number };
|
||||
nickname?: { x: number; y: number };
|
||||
qrcode?: { x: number; y: number };
|
||||
[key: string]: { x: number; y: number } | undefined;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 分销商海报设置搜索条件
|
||||
*/
|
||||
export interface ShopDealerPosterParam extends PageParam {
|
||||
id?: number;
|
||||
name?: string;
|
||||
enabled?: boolean;
|
||||
keywords?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 海报生成参数
|
||||
*/
|
||||
export interface PosterGenerateParam {
|
||||
// 用户ID
|
||||
userId: number;
|
||||
// 海报配置
|
||||
config?: PosterConfig;
|
||||
// 用户信息
|
||||
userInfo?: {
|
||||
nickname?: string;
|
||||
avatar?: string;
|
||||
qrcode?: string;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user