async function getCardName(ctx, text, card) {

    // 定义请求头
    const headers = {
        'Content-Type': 'application/json',
        // 如果需要，添加其他必要的请求头，比如认证token等
        // ‘Authorization’: ‘Bearer YOUR_TOKEN’
    };
    // 定义请求体
    const body = {
        text: "一本书籍在空中翻滚，书页上写满了神秘的符文，每一个字母都在发光，散发着强大的魔力",
        user: "111",
        token: "000"
    };
    body.text =text;
    // 发送请求到端口4999
    try {
        const nameresponse = await axios.post('http://127.0.0.1:4999/text2name_json', body,  {
            headers
         });
        console.log('Response for 4999 port:', nameresponse.data.names);
        const name = _.sample(nameresponse.data.names);
        card.Name = name
        return name
    } catch (error) {
        console.error('Error for 4999 port:', error.response ? error.response.data : error.message);
    }
}

async function getCardSkill(ctx,text, card) {

    // 定义请求头
    const headers = {
        'Content-Type': 'application/json',
        // 如果需要，添加其他必要的请求头，比如认证token等
        // ‘Authorization’: ‘Bearer YOUR_TOKEN’
    };

    // 定义请求体
    const body = {
        text: "一本书籍在空中翻滚，书页上写满了神秘的符文，每一个字母都在发光，散发着强大的魔力",
        user: "111",
        token: "000"
    };
    body.text = text;
    // 发送请求到端口5000
    try {
        const skillresponse = await axios.post('http://127.0.0.1:5000/text2skill_json', body, { headers });
        console.log('Response for 5000 port:', skillresponse.data.skills);
        const addresses = skillresponse.data.skills;
        const skills = await strapi.db.query('api::skill.skill').findMany({
            where: {
                address:{
                    $in: addresses
                }
            },
        });
        const skill = _.sample(skills)
        if (skill) {
            card.Cost = skill.Cost;
            card.Attack = skill.Attack;
            card.Health = skill.Health;
            card.CardClass = skill.CardClass;
            card.Type = skill.Type;
            card.Description = skill.EffectDesc;
            card.BackgroundStory = text;
            card.skill = skill;
        };
        console.log(card)

        


        return card
    } catch (error) {
        console.error('Error for 5000 port:', error.response ? error.response.data : error.message);
    }
}

async function getCardAvatar(ctx, prompt, card) {

    const headers = {
        'Content-Type': 'application/json',
        'x-token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlvbmlkIjoiZXh0ZXJuYWwifQ.ScAXbWObCZC63cl0gVXslIRAgLUM5oZqpXJmP9_HZos'
    }



    
    let response = await axios.post('https://api.talesofai.cn/v3/make_image', ctx.request.body, {
        headers, params: {
            query: ctx.query
        }
    });

    const taskId = response.data;

    response = await axios.get('https://api.talesofai.cn/v1/get_task_image', {
        params: {
            taskId,
        }
    });
    while (response.data.status !== 'SUCCESS') {
        // 等待一段时间后再继续轮询
        await new Promise(resolve => setTimeout(resolve, 1000));

        response = await axios.get('https://api.talesofai.cn/v1/get_task_image', {
            params: {
                taskId
            }
        });
        console.log("progress: ", response.data.data.progress);
    }
    card.Avatar = response.data.data.img_url;
}
async generateByAi(ctx) {

        let templateCard = await strapi.db.query('api::card.card').findOne({
            where: {
                $not: {
                    skill: null
                }
            },
            populate: ['skill']
        });

        templateCard.IsAiGenerated = true;

        axios.defaults.headers['Content-Type'] = 'application/json'


            // 解构并复制原始的 body 数据
            let modifiedBody = { ...ctx.request.body };
            // 选择新的 rawPrompt
            const firstPrompt = modifiedBody.rawPrompt[0];
            const remainingPrompts = modifiedBody.rawPrompt.slice(1);
            const selectedPrompt = remainingPrompts[Math.floor(Math.random() * remainingPrompts.length)];
            // 构建新的 rawPrompt 数组
            const newRawPrompt = [firstPrompt, selectedPrompt];
            const text = modifiedBody.rawPrompt[0].value;

            const name = await getCardName(ctx, text, templateCard);

            modifiedBody.rawPrompt[0].value = name + ',' + text

            
            // 更新 modifiedBody 中的 rawPrompt 属性
            ctx.request.body = { ...modifiedBody, rawPrompt: newRawPrompt };

        try {
            const allResults = await Promise.all([
                getCardSkill(ctx, text, templateCard),
                getCardAvatar(ctx, name + ',' + text, templateCard)
            ]);

            // await getCardName(ctx, text, templateCard),
            // await getCardSkill(ctx, text, templateCard),
            // await getCardAvatar(ctx, templateCard)

            // 所有请求成功，此时allResults为一个数组，包含了每一个函数返回的结果。
            // 根据函数的实现情况和实际需求来处理这些结果
            console.log('All requests finished successfully.');
            const random = Math.floor(Math.random() * 100); // 生成0-99之间的随机数
            if (random < 5) {
                templateCard.FaceRank = 0;
            } else {
                templateCard.FaceRank = 1;
            }
            templateCard.id = 0;
            // 例如，如果这些函数没有返回值，但是修改了card对象，则你可以在这里返回card




            return templateCard;
        } catch (error) {
            // 如果有任何请求失败，则会捕获到错误
            console.error('An error occurred:', error.message);
            throw error; // 可以重新抛出错误或者处理错误
        }
        finally{
            await strapi.db.query('api::record.record').create({
                data: {
                    title: text,
                    body : JSON.stringify(templateCard),
                    body_json: templateCard,
                    tag: "ai generate card"
                }
            })
        }



        return templateCard;
    },
  这段代码只返回了一个 templatecard ，我想根据 返回的10张 names 和 skills ，avatar 使用同一个。 填充10张卡，然后返回，帮我修改下代码