refactor(群推任务): 统一API接口参数和响应处理

重构群推任务相关API接口,将参数改为对象形式并统一响应处理
更新任务状态切换接口,添加type参数区分任务类型
修改字段名maxPushPerDay为maxPerDay保持一致性
使用Toast组件替代window.alert进行提示
This commit is contained in:
超级老白兔
2025-08-27 17:26:00 +08:00
parent 0d5e34cfdd
commit 35c5cf60d4
6 changed files with 28 additions and 32 deletions

View File

@@ -35,8 +35,8 @@ export function deleteAutoLikeTask(id: string): Promise<any> {
}
// 切换任务状态
export function toggleAutoLikeTask(id: string, status: string): Promise<any> {
return request("/v1/workbench/update-status", { id, status }, "POST");
export function toggleAutoLikeTask(data): Promise<any> {
return request("/v1/workbench/update-status", { ...data, type: 1 }, "POST");
}
// 复制自动点赞任务

View File

@@ -12,8 +12,9 @@ export interface GroupPushTask {
createTime: string;
creator: string;
pushInterval: number;
maxPushPerDay: number;
timeRange: { start: string; end: string };
maxPerDay: number;
startTime: string; // 允许推送的开始时间
endTime: string; // 允许推送的结束时间
messageType: "text" | "image" | "video" | "link";
messageContent: string;
targetTags: string[];

View File

@@ -179,7 +179,7 @@ const Detail: React.FC = () => {
<div>
<SettingOutlined /> <b></b>
<div>{task.pushInterval} </div>
<div>{task.maxPushPerDay} </div>
<div>{task.maxPerDay} </div>
<div>
{task.timeRange.start} - {task.timeRange.end}
</div>
@@ -221,12 +221,10 @@ const Detail: React.FC = () => {
<div>
<CalendarOutlined /> <b></b>
<div>
{task.pushCount} / {task.maxPushPerDay}
{task.pushCount} / {task.maxPerDay}
</div>
<Progress
percent={Math.round(
(task.pushCount / task.maxPushPerDay) * 100,
)}
percent={Math.round((task.pushCount / task.maxPerDay) * 100)}
size="small"
/>
{task.targetTags.length > 0 && (

View File

@@ -1,6 +1,7 @@
import React, { useState, useEffect, useRef } from "react";
import { useNavigate, useParams } from "react-router-dom";
import { Button } from "antd";
import { Toast } from "antd-mobile";
import { createGroupPushTask } from "./index.api";
import Layout from "@/components/Layout/Layout";
import StepIndicator from "@/components/StepIndicator";
@@ -95,7 +96,7 @@ const NewGroupPush: React.FC = () => {
name: formData.name,
startTime: formData.startTime, // 允许推送的开始时间
endTime: formData.endTime, // 允许推送的结束时间
maxPushPerDay: formData.maxPerDay,
maxPerDay: formData.maxPerDay,
pushOrder: formData.pushOrder,
isLoop: formData.isLoop, // 0: 否, 1: 是
pushType: formData.pushType, // 0: 定时推送, 1: 立即推送
@@ -121,19 +122,20 @@ const NewGroupPush: React.FC = () => {
// 调用创建或更新 API
if (id) {
// 更新逻辑将在这里实现
window.alert("更新成功");
Toast.show({ content: "更新成功", position: "top" });
navigate("/workspace/group-push");
} else {
const response = await createGroupPushTask(apiData);
if (response.code === 200) {
window.alert("创建成功");
navigate("/workspace/group-push");
} else {
window.alert("保存失败,请稍后重试");
}
createGroupPushTask(apiData)
.then(() => {
Toast.show({ content: "创建成功", position: "top" });
navigate("/workspace/group-push");
})
.catch(() => {
Toast.show({ content: "创建失败,请稍后重试", position: "top" });
});
}
} catch (error) {
console.error("保存失败:", error);
window.alert("保存失败,请稍后重试");
Toast.show({ content: "保存失败,请稍后重试", position: "top" });
} finally {
setLoading(false);
}

View File

@@ -1,4 +1,5 @@
import request from "@/api/request";
import { GroupPushTask } from "../detail/groupPush";
interface ApiResponse<T = any> {
code: number;
@@ -11,22 +12,16 @@ export async function fetchGroupPushTasks() {
}
export async function deleteGroupPushTask(id: string): Promise<ApiResponse> {
return request(`/v1/workspace/group-push/tasks/${id}`, {}, "DELETE");
return request("/v1/workbench/delete", { id }, "DELETE");
}
export async function toggleGroupPushTask(
id: string,
status: string,
): Promise<ApiResponse> {
return request(
`/v1/workspace/group-push/tasks/${id}/toggle`,
{ status },
"POST",
);
// 切换任务状态
export function toggleGroupPushTask(data): Promise<any> {
return request("/v1/workbench/update-status", { ...data, type: 3 }, "POST");
}
export async function copyGroupPushTask(id: string): Promise<ApiResponse> {
return request(`/v1/workspace/group-push/tasks/${id}/copy`, {}, "POST");
return request("/v1/workbench/copy", { id }, "POST");
}
export async function createGroupPushTask(

View File

@@ -133,7 +133,7 @@ const GroupPush: React.FC = () => {
const task = tasks.find(t => t.id === taskId);
if (!task) return;
const newStatus = task.status === 1 ? 2 : 1;
await toggleGroupPushTask(taskId, String(newStatus));
await toggleGroupPushTask({ id: taskId, status: newStatus });
fetchTasks();
};