/**
 * 
 * @date 2023-02-20 16:11:53
 * @author 鲜伟坚
 */


import { Singleton } from "typescript-ioc"
import { Config } from './Config'
import { logger } from "mslib"
import { TYApiBase } from './TYApiBase'
import { CryptoUtils } from './CryptoUtils';

@Singleton
export class TYApiUtils extends TYApiBase {
    constructor() { super() }

    // /**
    //  * 获取统一对外接口所有授权车场配置
    //  * 获取到配置后存储到redis，每小时定时更新配置
    //  * @return Array<any>
    //  */
    // async getConfigAll(): Promise<any> {
    //     const redisKey = `${Config.getTYApiConfig().appId}-getConfig-all`
    //     const cach = await this.redis.get(redisKey)
    //     if (cach) {
    //         return JSON.parse(cach)
    //     } else {
    //         const rs = await super.getConfig()
    //         this.redis.set(redisKey, JSON.stringify(rs), 60 * 5)
    //         return rs
    //     }
    // }

    // /**
    //  * 获取统一对外接口单个车场配置
    //  * 获取到配置后存储到redis，每小时定时更新配置
    //  * @param parkId 车场ID
    //  * @return Object
    //  */
    // async getConfigByParkId(parkId: string): Promise<any> {
    //     const redisKey = `${Config.getTYApiConfig().appId}-getConfig-${parkId}`
    //     const cach = await this.redis.get(redisKey)
    //     if (cach) {
    //         return JSON.parse(cach)
    //     } else {
    //         const rs = await super.getConfig(parkId)
    //         this.redis.set(redisKey, JSON.stringify(rs), 60 * 5)
    //         return rs
    //     }
    // }

    // /**
    //  * 根据图片名字获取图片Base64
    //  * data.imgName 图片名字
    //  * data.parkId  停车场ID
    //  */
    // async getImageBase64ByName(data: Object) {
    //     const imageUrl = await super.getImageUrlByName(data)
    //     const imgBase64Data = await this.getImage(imageUrl)
    //     return imgBase64Data
    // }

    /**
     * 定义延时函数
     * delaytime 延时时长，单位毫秒
     */
    async sleep(delaytime = 1000) {
        return new Promise(resolve => setTimeout(resolve, delaytime))
    }

    // async getImage(imageUrl, retryTimes: number = 10) {
    //     try {
    //         const imgRes = await this.http.getImageToBase64(imageUrl)
    //         return imgRes
    //     } catch (error) {
    //         logger.info(`重试获取图片: ${retryTimes}`, JSON.stringify(error))
    //         if (retryTimes > 0) {
    //             return this.getImage(imageUrl, --retryTimes)
    //         }
    //     }
    //     return ""

    // }

    // /**
    //  *  获取授权信息
    //  *  appId 应用程序唯一标识
    //  *  appSecret  应用程序秘钥
    //  */
    // async getAuthorization(cfg: { appId, appSecret }) {

    //     const ocfg = Config.getOtherConfig()
    //     let access_token = await this.redis.get(String(ocfg.syncAccessToken)) || -1

    //     if (access_token !== -1) {
    //         return access_token
    //     }

    //     const param = {
    //         appId: cfg.appId,
    //         appSecret: cfg.appSecret,
    //     }

    //     logger.info("获取授权信息 请求参数", JSON.stringify(cfg));
    //     let res = await this.http.postForm(String(ocfg.backUrl) + `/login`, param)

    //     if (res.code === 200) {
    //         await this.redis.set(String(ocfg.syncAccessToken), res.data.token, Number(ocfg.expireTime) - 3)
    //         await this.redis.set(res.data.token, res.data.userId, Number(ocfg.expireTime) - 3)
    //         return res.data.token
    //     }

    //     return -1
    // }
}
