docs: 添加分销商相关功能说明文档

- 新增分销商提现弹窗优化说明文档
- 新增分销商申请页面异常修复说明文档
- 新增分销商设置弹窗优化说明文档
- 新增分销商资金流动弹窗优化说明文档
- 新增分销海报功能说明文档
This commit is contained in:
2025-08-14 18:09:25 +08:00
parent 52476153f2
commit 23b0bee982
34 changed files with 7777 additions and 1627 deletions

View File

@@ -17,11 +17,11 @@ export interface ShopDealerApply {
// 申请方式(10需后台审核 20无需审核)
applyType?: number;
// 申请时间
applyTime?: number;
applyTime?: string | number | Date;
// 审核状态 (10待审核 20审核通过 30驳回)
applyStatus?: number;
// 审核时间
auditTime?: number;
auditTime?: string | number | Date;
// 驳回原因
rejectReason?: string;
// 商城ID
@@ -37,5 +37,13 @@ export interface ShopDealerApply {
*/
export interface ShopDealerApplyParam extends PageParam {
applyId?: number;
userId?: number;
realName?: string;
mobile?: string;
refereeId?: number;
applyType?: number;
applyStatus?: number;
startTime?: string;
endTime?: string;
keywords?: string;
}

View File

@@ -43,5 +43,11 @@ export interface ShopDealerOrder {
*/
export interface ShopDealerOrderParam extends PageParam {
id?: number;
orderId?: number;
orderNo?: string;
productName?: string;
userId?: number;
isInvalid?: number;
isSettled?: number;
keywords?: string;
}

View 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));
}

View 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;
};
}

View File

@@ -25,5 +25,10 @@ export interface ShopDealerReferee {
*/
export interface ShopDealerRefereeParam extends PageParam {
id?: number;
dealerId?: number;
userId?: number;
level?: number;
startTime?: string;
endTime?: string;
keywords?: string;
}

View File

@@ -35,9 +35,9 @@ export interface ShopDealerUser {
// 租户id
tenantId?: number;
// 创建时间
createTime?: string;
createTime?: string | Date;
// 修改时间
updateTime?: string;
updateTime?: string | Date;
}
/**