【操盘手】 好友最大点赞数 + 好友标签

This commit is contained in:
wong
2025-05-16 09:41:58 +08:00
parent 82dc6940f7
commit ffe6266ee0
4 changed files with 111 additions and 1 deletions

View File

@@ -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) {

View File

@@ -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">

View File

@@ -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) {

View File

@@ -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>