lefengyang
2026-08-20 d01a28cb030b2cb0ff1d42273c877a0f728519a6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import {IBidTask, IBidTaskResult} from "/src-com";
import {readTabLoadedStatus} from "../lib/readTab";
import {callTabMsgMethod} from "gs-br-ext";
import {commitBidBg} from "../services/commitBidBg";
 
export async function executeBidTask(task: IBidTask) {
    const id = parseInt(`${task.id}`);
    if (!/^\w\d+$/.test(task.params?.goodsId)) {
        const results = {error: 'params.goodsId format error'}
        return {
            task,
            localResult: results,
            remoteResult: await commitBidBg({id, results})
        }
    }
 
    const taskUrl = `https://auctions.yahoo.co.jp/jp/auction/${task.params.goodsId}`;
    console.log('正在执行:', taskUrl, task)
    const existTab = await chrome.tabs.query({url: taskUrl})
    if (existTab.length) {
        const {id: tabId} = existTab[0]
        return executeToContent(task, tabId);
    }
    const {id: tabId} = await chrome.tabs.create({url: taskUrl})
    const sender: any = {tab: {id: tabId}}
    return executeToContent(task, tabId, sender);
}
 
async function executeToContent(task: IBidTask, tabId: number, sender?: chrome.runtime.MessageSender) {
    const id = parseInt(`${task.id}`);
    const status = await readTabLoadedStatus(tabId);
    if (status != 'complete') {
        const results = {error: 'create browser window/tab failed'}
        return {
            task,
            localResult: results,
            remoteResult: await commitBidBg({id, results}, sender)
        }
    }
    const results: IBidTaskResult['results'] = await callTabMsgMethod({
        id: tabId,
        method: 'executeBidTask',
        arg: task,
        hasReturn: true
    })
    return {
        task,
        link: `https://auctions.yahoo.co.jp/jp/show/bid_hist?aID=${task?.params?.goodsId}`,
        link2: `https://auctions.yahoo.co.jp/my/bidding`,
        localResult: results,
        remoteResult: await commitBidBg({id, results}, sender)
    };
}