feat(douyu): 拆分鱼翅积分与兑换记录查询
This commit is contained in:
@@ -260,6 +260,7 @@ export interface DouyuCollabTimeline {
|
||||
export interface DouyuCollabQueryResult {
|
||||
order: DouyuCollabOrder;
|
||||
metric: DouyuCollabMetric;
|
||||
scope: 'activity' | 'balances';
|
||||
verdict: string;
|
||||
message: string;
|
||||
points_reason: string;
|
||||
@@ -347,9 +348,13 @@ export const douyuCollabApi = {
|
||||
{ results: Array<{ id: number; success: boolean; ck_status?: string; role?: string; message?: string }>; success: boolean },
|
||||
{ results: Array<{ id: number; success: boolean; ck_status?: string; role?: string; message?: string }>; success: boolean }
|
||||
>('/douyu/external-orders/verify/batch', ids),
|
||||
queryActivity: (id: number) =>
|
||||
queryActivity: (id: number) => api.post<DouyuCollabQueryResult, DouyuCollabQueryResult>(
|
||||
`/douyu/external-orders/${id}/activity/query`,
|
||||
),
|
||||
/** 只刷新鱼翅与手册积分,不查兑换记录、不判定、不改状态 */
|
||||
queryBalances: (id: number) =>
|
||||
api.post<DouyuCollabQueryResult, DouyuCollabQueryResult>(
|
||||
`/douyu/external-orders/${id}/activity/query`,
|
||||
`/douyu/external-orders/${id}/balances/query`,
|
||||
),
|
||||
setStatus: (id: number, data: {
|
||||
status: DouyuCollabStatus;
|
||||
@@ -371,6 +376,12 @@ export const douyuCollabApi = {
|
||||
'/douyu/external-orders/activity/query',
|
||||
ids,
|
||||
),
|
||||
/** 批量只刷新鱼翅/积分,不查兑换记录、不判定、不改状态 */
|
||||
batchBalances: (ids: number[]) =>
|
||||
api.post<{ results: Array<Record<string, unknown>>; success: boolean }, { results: Array<Record<string, unknown>>; success: boolean }>(
|
||||
'/douyu/external-orders/balances/query',
|
||||
ids,
|
||||
),
|
||||
updateImages: (id: number, home_images: string[], expected_version?: number) =>
|
||||
api.post<DouyuCollabOrder, DouyuCollabOrder>(`/douyu/external-orders/${id}/images`, {
|
||||
home_images,
|
||||
|
||||
@@ -38,6 +38,7 @@ import {
|
||||
PlusOutlined,
|
||||
ReloadOutlined,
|
||||
SafetyCertificateOutlined,
|
||||
SearchOutlined,
|
||||
ShopOutlined,
|
||||
SyncOutlined,
|
||||
TagOutlined,
|
||||
@@ -214,6 +215,8 @@ export default function DouyuCollabPage() {
|
||||
const [gifts, setGifts] = useState<string[]>([]);
|
||||
const [goods, setGoods] = useState<DouyuCollabGoods[]>([]);
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [balanceQuerying, setBalanceQuerying] = useState(false);
|
||||
const [recordQuerying, setRecordQuerying] = useState(false);
|
||||
const [goodsLoading, setGoodsLoading] = useState(false);
|
||||
const [page, setPage] = useState(1);
|
||||
const [pageSize, setPageSize] = useState(20);
|
||||
@@ -631,18 +634,35 @@ export default function DouyuCollabPage() {
|
||||
}
|
||||
};
|
||||
|
||||
const queryOrder = async (order: DouyuCollabOrder) => {
|
||||
const queryOneBalances = async (order: DouyuCollabOrder) => {
|
||||
try {
|
||||
message.loading({ content: '正在查询鱼翅、积分与兑换记录…', key: 'dy-collab-query' });
|
||||
const result = await douyuCollabApi.queryActivity(order.id);
|
||||
message.loading({ content: '正在查询鱼翅、积分…', key: 'dy-collab-balance' });
|
||||
const result = await douyuCollabApi.queryBalances(order.id);
|
||||
message.success({
|
||||
content: `${result.message}${result.points_reason ? `;${pointsReasonMeta(result.points_reason).label}` : ''}`,
|
||||
key: 'dy-collab-query',
|
||||
content: `鱼翅 ${result.fish_fin_balance ?? '-'} / 积分 ${result.points_balance ?? '-'}${
|
||||
result.points_reason ? `;${pointsReasonMeta(result.points_reason).label}` : ''
|
||||
}`,
|
||||
key: 'dy-collab-balance',
|
||||
});
|
||||
refreshAll();
|
||||
if (detail?.id === order.id) void openDetail(order);
|
||||
} catch (error) {
|
||||
message.error({ content: getErrorMessage(error), key: 'dy-collab-query' });
|
||||
message.error({ content: getErrorMessage(error), key: 'dy-collab-balance' });
|
||||
}
|
||||
};
|
||||
|
||||
const queryOneRecords = async (order: DouyuCollabOrder) => {
|
||||
try {
|
||||
message.loading({ content: '正在查询兑换记录…', key: 'dy-collab-records' });
|
||||
const result = await douyuCollabApi.queryActivity(order.id);
|
||||
message.success({
|
||||
content: `${result.message}${result.points_reason ? `;${pointsReasonMeta(result.points_reason).label}` : ''}`,
|
||||
key: 'dy-collab-records',
|
||||
});
|
||||
refreshAll();
|
||||
if (detail?.id === order.id) void openDetail(order);
|
||||
} catch (error) {
|
||||
message.error({ content: getErrorMessage(error), key: 'dy-collab-records' });
|
||||
}
|
||||
};
|
||||
|
||||
@@ -716,21 +736,39 @@ export default function DouyuCollabPage() {
|
||||
}
|
||||
};
|
||||
|
||||
const batchQuery = async () => {
|
||||
const batchQueryBalances = async () => {
|
||||
if (selectedIds.length === 0) {
|
||||
message.warning('请先勾选协作单');
|
||||
return;
|
||||
}
|
||||
setLoading(true);
|
||||
setBalanceQuerying(true);
|
||||
try {
|
||||
const result = await douyuCollabApi.batchActivity(selectedIds);
|
||||
const result = await douyuCollabApi.batchBalances(selectedIds);
|
||||
const ok = result.results.filter((item) => item.success).length;
|
||||
message.success(`查询完成:${ok}/${result.results.length}`);
|
||||
message.success(`鱼翅/积分查询完成:${ok}/${result.results.length}`);
|
||||
refreshAll();
|
||||
} catch (error) {
|
||||
message.error(getErrorMessage(error));
|
||||
} finally {
|
||||
setLoading(false);
|
||||
setBalanceQuerying(false);
|
||||
}
|
||||
};
|
||||
|
||||
const batchQueryRecords = async () => {
|
||||
if (selectedIds.length === 0) {
|
||||
message.warning('请先勾选协作单');
|
||||
return;
|
||||
}
|
||||
setRecordQuerying(true);
|
||||
try {
|
||||
const result = await douyuCollabApi.batchActivity(selectedIds);
|
||||
const ok = result.results.filter((item) => item.success).length;
|
||||
message.success(`兑换记录查询完成:${ok}/${result.results.length}`);
|
||||
refreshAll();
|
||||
} catch (error) {
|
||||
message.error(getErrorMessage(error));
|
||||
} finally {
|
||||
setRecordQuerying(false);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1158,7 +1196,7 @@ export default function DouyuCollabPage() {
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
width: 400,
|
||||
width: 500,
|
||||
fixed: 'right',
|
||||
align: 'center',
|
||||
render: (_, row) => (
|
||||
@@ -1196,9 +1234,16 @@ export default function DouyuCollabPage() {
|
||||
校验
|
||||
</Button>
|
||||
</Tooltip>
|
||||
<Button size="small" icon={<SyncOutlined />} onClick={() => void queryOrder(row)}>
|
||||
查询
|
||||
</Button>
|
||||
<Tooltip title="只刷新鱼翅与手册积分,不查兑换记录,也不会改状态">
|
||||
<Button size="small" icon={<SyncOutlined />} onClick={() => void queryOneBalances(row)}>
|
||||
查鱼翅/积分
|
||||
</Button>
|
||||
</Tooltip>
|
||||
<Tooltip title="查询当前账号兑换记录,命中礼包名后自动推进订单状态">
|
||||
<Button size="small" icon={<SearchOutlined />} onClick={() => void queryOneRecords(row)}>
|
||||
查兑换记录
|
||||
</Button>
|
||||
</Tooltip>
|
||||
<Dropdown
|
||||
menu={{
|
||||
items: [
|
||||
@@ -1501,13 +1546,26 @@ export default function DouyuCollabPage() {
|
||||
<Button icon={<CheckCircleOutlined />} disabled={selectedCount === 0} onClick={openBatchStatus}>
|
||||
批量改状态{selectedCount > 0 ? `(${selectedCount})` : ''}
|
||||
</Button>
|
||||
<Button
|
||||
icon={<SyncOutlined />}
|
||||
disabled={selectedCount === 0 || loading}
|
||||
onClick={() => void batchQuery()}
|
||||
>
|
||||
批量查鱼翅/积分{selectedCount > 0 ? `(${selectedCount})` : ''}
|
||||
</Button>
|
||||
<Tooltip title="只刷新鱼翅与手册积分,不查兑换记录,也不会改状态">
|
||||
<Button
|
||||
icon={<SyncOutlined />}
|
||||
disabled={selectedCount === 0 || loading || balanceQuerying}
|
||||
loading={balanceQuerying}
|
||||
onClick={() => void batchQueryBalances()}
|
||||
>
|
||||
批量查鱼翅/积分{selectedCount > 0 ? `(${selectedCount})` : ''}
|
||||
</Button>
|
||||
</Tooltip>
|
||||
<Tooltip title="查询勾选订单的兑换记录;命中礼包名后自动改状态,积分短缺/超额也会标记">
|
||||
<Button
|
||||
icon={<SearchOutlined />}
|
||||
disabled={selectedCount === 0 || loading || recordQuerying}
|
||||
loading={recordQuerying}
|
||||
onClick={() => void batchQueryRecords()}
|
||||
>
|
||||
批量查兑换记录{selectedCount > 0 ? `(${selectedCount})` : ''}
|
||||
</Button>
|
||||
</Tooltip>
|
||||
<Button
|
||||
icon={<InboxOutlined />}
|
||||
disabled={!canArchiveSelected || loading}
|
||||
@@ -1552,7 +1610,7 @@ export default function DouyuCollabPage() {
|
||||
loading={loading}
|
||||
columns={columns}
|
||||
dataSource={orders}
|
||||
scroll={{ x: 2090 }}
|
||||
scroll={{ x: 2190 }}
|
||||
rowSelection={{
|
||||
selectedRowKeys,
|
||||
onChange: (keys) => setSelectedRowKeys(keys),
|
||||
@@ -1933,9 +1991,12 @@ export default function DouyuCollabPage() {
|
||||
<Button icon={<SafetyCertificateOutlined />} onClick={() => void verifyOrder(detail)}>
|
||||
校验
|
||||
</Button>
|
||||
<Button icon={<SyncOutlined />} onClick={() => void queryOrder(detail)}>
|
||||
<Button icon={<SyncOutlined />} onClick={() => void queryOneBalances(detail)}>
|
||||
查鱼翅/积分
|
||||
</Button>
|
||||
<Button icon={<SearchOutlined />} onClick={() => void queryOneRecords(detail)}>
|
||||
查兑换记录
|
||||
</Button>
|
||||
</Space>
|
||||
) : undefined
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user