lineup.ts 5.8 KB
import * as _ from 'lodash';
import * as api_hemera from '../../../api_hemera'
import * as moment from 'moment'
import { cache } from '../../../cache'
import db = require('../table');

export async function getlineupfromsporttery({ sportsdt_gameid, type, lotteryId, issueName, matchNumber }: any) {
    // let gameprediction = await cache(async (args: any) => {
    //   return await api_hemera.query('sport', `getgameprediction`, {}, { gameid: args.gameid })
    // }, { gameid: sportsdt_gameid }, 30, 'getgameprediction')

    // let dataLineup = gameprediction.Lineup

    try {

        if(moment(issueName)>moment().add(1,'day')){
            throw "时间范围不正确" 
        }

        let t: any = await db.sporttery_match_lineup.findOne({
            where: {
                issue_name: issueName,
                match_number: matchNumber
            }
        })

        if (t == null) {
            return JSON.stringify([
                ["", "", ""],
                [],
                [],
                [],
                [],
                [],
                [],
            ])
        }

        let jsonBody = t

        //let Formation = ['', dataLineup.HFormation, dataLineup.AFormation]
        let Formation = [``, ``, ``]

        if (jsonBody.referee_name != null)
            Formation[0] = jsonBody.referee_name
        let positionName: any = {
            Goalkeeper: "守门员",
            Defender: "后卫",
            Midfielder: "中场",
            Attacker: "前锋",
        }

        let position_x_name: any = {
            "":"0",
            GK: '1',
            D1: '2',
            D2: '3',
            D: '3',
            DM: '4',
            M: '5',
            AM: '6',
            A: '7',
        }

        let position_y_name: any = {
            "":"0",
            L: '1',
            CL: '2',
            C: '3',
            CR: '4',
            R: '5',
        }

        let h_lineups_info_lineups: any = _.map(jsonBody.h_lineups_info.lineups, (item: any) => {
            return [item.shirtnumber,
            item.person,
            positionName[item.position],
            position_x_name[item.position_x],
            position_y_name[item.position_y]
            ]
        })

        let a_lineups_info_lineups: any = _.map(jsonBody.a_lineups_info.lineups, (item: any) => {
            return [item.shirtnumber,
            item.person,
            positionName[item.position],
            position_x_name[item.position_x],
            position_y_name[item.position_y]
            ]
        })

        let h_lineups_info_lineups_bench = _.map(jsonBody.h_lineups_info.lineups_bench, (item: any) => {
            return [item.shirtnumber,
            item.person,
            positionName[item.position],
                "0",
                "0"
            ]
        })

        let a_lineups_info_lineups_bench = _.map(jsonBody.a_lineups_info.lineups_bench, (item: any) => {
            return [item.shirtnumber,
            item.person,
            positionName[item.position],
                "0",
                "0"
            ]
        })

        for (let i = 2; i <= 7; i++) {
            let leng: any = _.countBy(h_lineups_info_lineups, (item: any) => { return item[3] + '' == i + '' })
            if (leng.true > 0) {
                Formation[1] = `${Formation[1]}${leng.true}`
            }
        }

        for (let i = 2; i <= 7; i++) {
            let leng: any = _.countBy(a_lineups_info_lineups, (item: any) => { return item[3] + '' == i + '' })
            if (leng.true > 0) {
                Formation[2] = `${Formation[2]}${leng.true}`
            }
        }


        return JSON.stringify([
            Formation,
            h_lineups_info_lineups,
            a_lineups_info_lineups,
            h_lineups_info_lineups_bench,
            a_lineups_info_lineups_bench,
            [],
            [],
        ])

    } catch (e:any) {
        return JSON.stringify([
            ["", "", ""],
            [],
            [],
            [],
            [],
            [],
            [],
        ])
    }
}


export async function get_sports_injury(gameid: Number) {
    try {

        let gameprediction = await cache(async (args: any) => {
            return await api_hemera.query('sport', `getgameprediction`, {}, { gameid: args.gameid })
        }, { gameid: gameid }, 30, 'getgameprediction')


        // 状态,整型
        // 0:后备球员
        // 1:停赛球员
        // 2:伤病球员
        // 3:首发球员
        // 4:其它原因缺阵球员

        // const Ontype = ["受伤", "伤疑", "停赛", "国家队上调", "预计缺席"]
        // const StateType = ["不出战", " 出战"]

        let injuries_info_h_injuries: any = _.map(
            _.filter(gameprediction.Lineup.HomePlayers, (o) => { return o.Status == 2 || o.Status == 1 }), (item: any) => {
                if (item.Status == 1) {
                    return { "Id": item.Id, "Name": item.Name, "ShirtNum": item.ShitNo, "State": 0, "On": 2 }
                } else {
                    return { "Id": item.Id, "Name": item.Name, "ShirtNum": item.ShitNo, "State": 0, "On": 0 }
                }

            })

        let injuries_info_a_injuries: any = _.map(
            _.filter(gameprediction.Lineup.AwayPlayers, (o) => { return o.Status == 2 || o.Status == 1 }), (item: any) => {
                if (item.Status == 1) {
                    return { "Id": item.Id, "Name": item.Name, "ShirtNum": item.ShitNo, "State": 0, "On": 2 }
                } else {
                    return { "Id": item.Id, "Name": item.Name, "ShirtNum": item.ShitNo, "State": 0, "On": 0 }
                }
            })

        return JSON.stringify({
            Home: injuries_info_h_injuries,
            Away: injuries_info_a_injuries
        })
    } catch (e:any) {
        return JSON.stringify({
            Home: [],
            Away: []
        })
    }
}