【操盘手】 好友最大点赞数 + 好友标签
This commit is contained in:
@@ -21,6 +21,7 @@ interface TaskConfig {
|
|||||||
workbenchId: number
|
workbenchId: number
|
||||||
interval: number
|
interval: number
|
||||||
maxLikes: number
|
maxLikes: number
|
||||||
|
friendMaxLikes?: number
|
||||||
startTime: string
|
startTime: string
|
||||||
endTime: string
|
endTime: string
|
||||||
contentTypes: string[]
|
contentTypes: string[]
|
||||||
@@ -30,6 +31,8 @@ interface TaskConfig {
|
|||||||
createTime: string
|
createTime: string
|
||||||
updateTime: string
|
updateTime: string
|
||||||
friends?: string[]
|
friends?: string[]
|
||||||
|
enableFriendTags?: boolean
|
||||||
|
friendTags?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Task {
|
interface Task {
|
||||||
@@ -58,9 +61,12 @@ export default function EditAutoLikePage({ params }: { params: Promise<{ id: str
|
|||||||
taskName: "",
|
taskName: "",
|
||||||
likeInterval: 5,
|
likeInterval: 5,
|
||||||
maxLikesPerDay: 200,
|
maxLikesPerDay: 200,
|
||||||
|
friendMaxLikes: 3,
|
||||||
timeRange: { start: "08:00", end: "22:00" },
|
timeRange: { start: "08:00", end: "22:00" },
|
||||||
contentTypes: ["text", "image", "video"],
|
contentTypes: ["text", "image", "video"],
|
||||||
enabled: true,
|
enabled: true,
|
||||||
|
enableFriendTags: false,
|
||||||
|
friendTags: "",
|
||||||
selectedDevices: [] as number[],
|
selectedDevices: [] as number[],
|
||||||
friends: [] as string[],
|
friends: [] as string[],
|
||||||
})
|
})
|
||||||
@@ -80,12 +86,15 @@ export default function EditAutoLikePage({ params }: { params: Promise<{ id: str
|
|||||||
taskName: task.name,
|
taskName: task.name,
|
||||||
likeInterval: task.config.interval,
|
likeInterval: task.config.interval,
|
||||||
maxLikesPerDay: task.config.maxLikes,
|
maxLikesPerDay: task.config.maxLikes,
|
||||||
|
friendMaxLikes: task.config.friendMaxLikes || 3,
|
||||||
timeRange: {
|
timeRange: {
|
||||||
start: task.config.startTime,
|
start: task.config.startTime,
|
||||||
end: task.config.endTime
|
end: task.config.endTime
|
||||||
},
|
},
|
||||||
contentTypes: task.config.contentTypes,
|
contentTypes: task.config.contentTypes,
|
||||||
enabled: task.status === 1,
|
enabled: task.status === 1,
|
||||||
|
enableFriendTags: task.config.enableFriendTags || false,
|
||||||
|
friendTags: task.config.friendTags || "",
|
||||||
selectedDevices: task.config.devices,
|
selectedDevices: task.config.devices,
|
||||||
friends: Array.isArray(task.config.friends) ? task.config.friends : [],
|
friends: Array.isArray(task.config.friends) ? task.config.friends : [],
|
||||||
})
|
})
|
||||||
@@ -124,12 +133,15 @@ export default function EditAutoLikePage({ params }: { params: Promise<{ id: str
|
|||||||
name: formData.taskName,
|
name: formData.taskName,
|
||||||
interval: formData.likeInterval,
|
interval: formData.likeInterval,
|
||||||
maxLikes: formData.maxLikesPerDay,
|
maxLikes: formData.maxLikesPerDay,
|
||||||
|
friendMaxLikes: formData.friendMaxLikes,
|
||||||
startTime: formData.timeRange.start,
|
startTime: formData.timeRange.start,
|
||||||
endTime: formData.timeRange.end,
|
endTime: formData.timeRange.end,
|
||||||
contentTypes: formData.contentTypes,
|
contentTypes: formData.contentTypes,
|
||||||
enabled: formData.enabled,
|
enabled: formData.enabled,
|
||||||
devices: formData.selectedDevices,
|
devices: formData.selectedDevices,
|
||||||
friends: formData.friends,
|
friends: formData.friends,
|
||||||
|
enableFriendTags: formData.enableFriendTags,
|
||||||
|
friendTags: formData.enableFriendTags ? formData.friendTags : "",
|
||||||
});
|
});
|
||||||
|
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
|
|||||||
@@ -10,9 +10,12 @@ interface BasicSettingsProps {
|
|||||||
taskName: string
|
taskName: string
|
||||||
likeInterval: number
|
likeInterval: number
|
||||||
maxLikesPerDay: number
|
maxLikesPerDay: number
|
||||||
|
friendMaxLikes: number
|
||||||
timeRange: { start: string; end: string }
|
timeRange: { start: string; end: string }
|
||||||
contentTypes: string[]
|
contentTypes: string[]
|
||||||
enabled: boolean
|
enabled: boolean
|
||||||
|
enableFriendTags: boolean
|
||||||
|
friendTags: string
|
||||||
}
|
}
|
||||||
onChange: (data: Partial<BasicSettingsProps["formData"]>) => void
|
onChange: (data: Partial<BasicSettingsProps["formData"]>) => void
|
||||||
onNext: () => void
|
onNext: () => void
|
||||||
@@ -44,6 +47,14 @@ export function BasicSettings({ formData, onChange, onNext }: BasicSettingsProps
|
|||||||
onChange({ maxLikesPerDay: Math.max(formData.maxLikesPerDay - 10, 10) })
|
onChange({ maxLikesPerDay: Math.max(formData.maxLikesPerDay - 10, 10) })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const incrementFriendMaxLikes = () => {
|
||||||
|
onChange({ friendMaxLikes: Math.min(formData.friendMaxLikes + 1, 10) })
|
||||||
|
}
|
||||||
|
|
||||||
|
const decrementFriendMaxLikes = () => {
|
||||||
|
onChange({ friendMaxLikes: Math.max(formData.friendMaxLikes - 1, 1) })
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-6 px-6">
|
<div className="space-y-6 px-6">
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
@@ -80,7 +91,7 @@ export function BasicSettings({ formData, onChange, onNext }: BasicSettingsProps
|
|||||||
className="h-12 rounded-none border-x-0 border-gray-200 text-center"
|
className="h-12 rounded-none border-x-0 border-gray-200 text-center"
|
||||||
/>
|
/>
|
||||||
<div className="absolute inset-y-0 right-0 flex items-center pr-4 pointer-events-none text-gray-500">
|
<div className="absolute inset-y-0 right-0 flex items-center pr-4 pointer-events-none text-gray-500">
|
||||||
分钟
|
秒
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Button
|
<Button
|
||||||
@@ -135,6 +146,45 @@ export function BasicSettings({ formData, onChange, onNext }: BasicSettingsProps
|
|||||||
<p className="text-xs text-gray-500">设置每天最多点赞的次数</p>
|
<p className="text-xs text-gray-500">设置每天最多点赞的次数</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div className="space-y-2">
|
||||||
|
<Label htmlFor="friend-max-likes">好友最大点赞数</Label>
|
||||||
|
<div className="flex items-center">
|
||||||
|
<Button
|
||||||
|
type="button"
|
||||||
|
variant="outline"
|
||||||
|
size="icon"
|
||||||
|
className="h-12 w-12 rounded-l-xl border-gray-200 bg-white hover:bg-gray-50"
|
||||||
|
onClick={decrementFriendMaxLikes}
|
||||||
|
>
|
||||||
|
<Minus className="h-5 w-5" />
|
||||||
|
</Button>
|
||||||
|
<div className="relative flex-1">
|
||||||
|
<Input
|
||||||
|
id="friend-max-likes"
|
||||||
|
type="number"
|
||||||
|
min={1}
|
||||||
|
max={10}
|
||||||
|
value={formData.friendMaxLikes}
|
||||||
|
onChange={(e) => onChange({ friendMaxLikes: Number.parseInt(e.target.value) || 1 })}
|
||||||
|
className="h-12 rounded-none border-x-0 border-gray-200 text-center"
|
||||||
|
/>
|
||||||
|
<div className="absolute inset-y-0 right-0 flex items-center pr-4 pointer-events-none text-gray-500">
|
||||||
|
次/好友
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<Button
|
||||||
|
type="button"
|
||||||
|
variant="outline"
|
||||||
|
size="icon"
|
||||||
|
className="h-12 w-12 rounded-r-xl border-gray-200 bg-white hover:bg-gray-50"
|
||||||
|
onClick={incrementFriendMaxLikes}
|
||||||
|
>
|
||||||
|
<Plus className="h-5 w-5" />
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
<p className="text-xs text-gray-500">设置每个好友最多被点赞的次数</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
<Label>点赞时间范围</Label>
|
<Label>点赞时间范围</Label>
|
||||||
<div className="grid grid-cols-2 gap-4">
|
<div className="grid grid-cols-2 gap-4">
|
||||||
@@ -182,6 +232,33 @@ export function BasicSettings({ formData, onChange, onNext }: BasicSettingsProps
|
|||||||
<p className="text-xs text-gray-500">选择要点赞的内容类型</p>
|
<p className="text-xs text-gray-500">选择要点赞的内容类型</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div className="space-y-4 py-2 border-t border-gray-100">
|
||||||
|
<div className="flex items-center justify-between">
|
||||||
|
<Label htmlFor="enable-friend-tags" className="cursor-pointer">
|
||||||
|
启用好友标签
|
||||||
|
</Label>
|
||||||
|
<Switch
|
||||||
|
id="enable-friend-tags"
|
||||||
|
checked={formData.enableFriendTags}
|
||||||
|
onCheckedChange={(checked) => onChange({ enableFriendTags: checked })}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{formData.enableFriendTags && (
|
||||||
|
<div className="space-y-2">
|
||||||
|
<Label htmlFor="friend-tags">好友标签</Label>
|
||||||
|
<Input
|
||||||
|
id="friend-tags"
|
||||||
|
placeholder="请输入标签"
|
||||||
|
value={formData.friendTags}
|
||||||
|
onChange={(e) => onChange({ friendTags: e.target.value })}
|
||||||
|
className="h-12 rounded-xl border-gray-200"
|
||||||
|
/>
|
||||||
|
<p className="text-xs text-gray-500">只给有此标签的好友点赞</p>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
|
||||||
<div className="flex items-center justify-between py-2">
|
<div className="flex items-center justify-between py-2">
|
||||||
<Label htmlFor="auto-enabled" className="cursor-pointer">
|
<Label htmlFor="auto-enabled" className="cursor-pointer">
|
||||||
自动开启
|
自动开启
|
||||||
|
|||||||
@@ -23,9 +23,12 @@ export default function NewAutoLikePage() {
|
|||||||
taskName: "",
|
taskName: "",
|
||||||
likeInterval: 5, // 默认5秒
|
likeInterval: 5, // 默认5秒
|
||||||
maxLikesPerDay: 200, // 默认200次
|
maxLikesPerDay: 200, // 默认200次
|
||||||
|
friendMaxLikes: 3, // 默认每个好友最多点赞3次
|
||||||
timeRange: { start: "08:00", end: "22:00" },
|
timeRange: { start: "08:00", end: "22:00" },
|
||||||
contentTypes: ["text", "image", "video"],
|
contentTypes: ["text", "image", "video"],
|
||||||
enabled: true,
|
enabled: true,
|
||||||
|
enableFriendTags: false, // 默认不启用好友标签
|
||||||
|
friendTags: "", // 好友标签字段
|
||||||
selectedDevices: [] as number[],
|
selectedDevices: [] as number[],
|
||||||
selectedTags: [] as string[],
|
selectedTags: [] as string[],
|
||||||
tagOperator: "and" as "and" | "or",
|
tagOperator: "and" as "and" | "or",
|
||||||
@@ -66,12 +69,15 @@ export default function NewAutoLikePage() {
|
|||||||
name: formData.taskName,
|
name: formData.taskName,
|
||||||
interval: formData.likeInterval,
|
interval: formData.likeInterval,
|
||||||
maxLikes: formData.maxLikesPerDay,
|
maxLikes: formData.maxLikesPerDay,
|
||||||
|
friendMaxLikes: formData.friendMaxLikes,
|
||||||
startTime: formData.timeRange.start,
|
startTime: formData.timeRange.start,
|
||||||
endTime: formData.timeRange.end,
|
endTime: formData.timeRange.end,
|
||||||
contentTypes: formData.contentTypes,
|
contentTypes: formData.contentTypes,
|
||||||
enabled: formData.enabled,
|
enabled: formData.enabled,
|
||||||
devices: formData.selectedDevices,
|
devices: formData.selectedDevices,
|
||||||
friends: formData.friends,
|
friends: formData.friends,
|
||||||
|
enableFriendTags: formData.enableFriendTags,
|
||||||
|
friendTags: formData.enableFriendTags ? formData.friendTags : "",
|
||||||
});
|
});
|
||||||
|
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ interface TaskConfig {
|
|||||||
workbenchId: number
|
workbenchId: number
|
||||||
interval: number
|
interval: number
|
||||||
maxLikes: number
|
maxLikes: number
|
||||||
|
friendMaxLikes?: number
|
||||||
startTime: string
|
startTime: string
|
||||||
endTime: string
|
endTime: string
|
||||||
contentTypes: string[]
|
contentTypes: string[]
|
||||||
@@ -48,6 +49,8 @@ interface TaskConfig {
|
|||||||
todayLikeCount?: number
|
todayLikeCount?: number
|
||||||
totalLikeCount?: number
|
totalLikeCount?: number
|
||||||
friends?: string[]
|
friends?: string[]
|
||||||
|
enableFriendTags?: boolean
|
||||||
|
friendTags?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Task {
|
interface Task {
|
||||||
@@ -341,6 +344,10 @@ export default function AutoLikePage() {
|
|||||||
<span className="text-gray-500">每日最大点赞数:</span>
|
<span className="text-gray-500">每日最大点赞数:</span>
|
||||||
<span>{task.config.maxLikes} 次</span>
|
<span>{task.config.maxLikes} 次</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="flex justify-between text-sm">
|
||||||
|
<span className="text-gray-500">每个好友最大点赞数:</span>
|
||||||
|
<span>{task.config.friendMaxLikes || 3} 次</span>
|
||||||
|
</div>
|
||||||
<div className="flex justify-between text-sm">
|
<div className="flex justify-between text-sm">
|
||||||
<span className="text-gray-500">执行时间段:</span>
|
<span className="text-gray-500">执行时间段:</span>
|
||||||
<span>
|
<span>
|
||||||
@@ -366,6 +373,14 @@ export default function AutoLikePage() {
|
|||||||
<div className="text-sm text-gray-500">
|
<div className="text-sm text-gray-500">
|
||||||
匹配方式:{task.config.tagOperator === 1 ? "满足所有标签" : "满足任一标签"}
|
匹配方式:{task.config.tagOperator === 1 ? "满足所有标签" : "满足任一标签"}
|
||||||
</div>
|
</div>
|
||||||
|
{task.config.enableFriendTags && task.config.friendTags && (
|
||||||
|
<div className="mt-2">
|
||||||
|
<div className="text-sm font-medium mb-1">好友标签:</div>
|
||||||
|
<Badge variant="outline" className="bg-blue-50 border-blue-200">
|
||||||
|
{task.config.friendTags}
|
||||||
|
</Badge>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user