/**
 * 
 * @date 2023-02-16 16:33:40
 * @author 鲜伟坚
 */

import { HttpClient } from './HttpClient'
import { defRedisClient } from './Redis'
class TYApiBase {
    
//     http: HttpClient;

//     redis: defRedisClient;


//     /**
//    *  统一对外接口协议(速停车)
//    *  2.12.2根据ttpOrderNo订单号查询订单状态
//    * @param data Object
//    * @param data.parkId 停车场ID
//    * @param data.ttpOrderNo 第三方订单号  
//    */
//     async queryPrepayOrder(data: any) {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/stcttp/order/QueryPrepayOrder',
//             data: Object.assign({ serviceCode: 'queryPrepayOrder' }, data)
//         })
//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }
//         return res;
//     }

//     /**
//     *  统一对外接口协议(速停车)
//     *  2.12.8临停订单退款接口
//     * @param data Object
//     * @param data.parkId 停车场ID
//     * @param data.ttpOrderNo 第三方订单号，对应2.12.1预下单传过来的ttpOrderNo  
//     * @param data.stcOrderNo 速停车订单号，对应2.12.3查询接口或者3.4.1下发的stcOrderNo
//     * @param data.merOrderNo 商户渠道订单号，对应2.12.3查询接口或者3.4.1下发的merOrderNo
//     * @param data.refundAmount 退款金额，单位分，至少为1分
//     * @param data.refundReason 退款原因
//     * @param data.refundPerson 退款人
//     * @param data.refundOrderNo 退款请求订单号，须采用收费系统上报退款通知3.2.23的退款订单号
//     */
//     async refund(data: any) {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/stcttp/order/refund',
//             data: Object.assign({ serviceCode: 'orderRefund' }, data)
//         })
//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }
//         return res;
//     }


//     /**
//     *  统一对外接口协议(速停车)
//     *  2.12.9临停订单退款查询接口
//     * @param data Object
//     * @param data.parkId 停车场ID
//     * @param data.refundOrderNo 第三方订单号，对应2.12.1预下单传过来的ttpOrderNo  
//     */
//     async query(data: any) {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/stcttp/order/refund/query',
//             data: Object.assign({ serviceCode: 'orderRefundQuery' }, data)
//         })
//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }
//         return res;
//     }


//     /**
//     *  统一平台对内接口
//     *  2.7.6修改场内车数据 modifyCarInfo
//     * @param data Object
//     * @param data.parkId 停车场ID
//     * @param data.carStyle 车辆类型 详见参数枚举1.6.8
//     */
//     async modifyCarInfo(data: Object) {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/control/ModifyCarInfo',
//             data: Object.assign({ serviceCode: 'modifyCarInfo' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//     *  统一平台对内接口
//     *  queryCarInfo 2.6.1在场车辆查询 
//     * @param data Object
//     * @param data.parkId 停车场ID
//     * @param data.plateNo 车辆类型 条件：车牌号，模糊查询(5x可非必填)
//     * @param data.cardNo 入场取票号/无牌车入场的卡号
//     * @param data.pageIndex 第N页，N>0
//     * @param data.pageSize 每一页数量 >=1；
//     */
//     async queryCarInfo(data: Object) {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/QueryCarInfo',
//             data: Object.assign({ serviceCode: 'queryCarInfo' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }


//     /**
//     * 2.12.1预下单接口 Prepay
//     * @param data Object
//     * @param data.parkId 停车场ID
//     * @param data.plateNo 车牌号
//     * @param data.ua 用户客户端类型，枚举值{"ALI":"阿里客户端","WX":"微信客户端","H5":"H5客户端","WX_APPLET":"小程序"} 
//     * @param data.ttpUserId 外部用户ID
//     * @param data.ttpOrderNo 第三方订单号
//     * @param data.expiration 过期时间，时间为毫秒
//     * @param data.comeTime 进场时间，格式为YYYY-MM-dd HH:mm:ss 
//     * @param data.amount 金额 
//     * @param data?.attach 额外参数，会原样返回：不做签名验证 
//     * @param data?.isShowDetail 是否显示订单详情页：备注下1为是0为否
//     * @param data?.returnUrl 支付成功后前端跳转页面（如果为空则默认走速停车成功页面）
//     */
//     async prepay(data: Object) {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/ttp/order/Prepay',
//             data: Object.assign({ serviceCode: 'prepay' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//     * 2.6.4根据通道获取当前车辆 getCarInfoByNodeId
//     * @param data Object
//     * @param data.parkId 停车场ID
//     * @param data.pageIndex 第N页，N>0
//     * @param data.pageSize 每一页数量 >=1；
//     */
//     async getParkingPaymentList(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/GetParkingPaymentList',
//             data: Object.assign({ serviceCode: 'getParkingPaymentList' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }


//     /**
//     * 2.6.4根据通道获取当前车辆 getCarInfoByNodeId
//     * @param data Object
//     * @param data.parkId 停车场ID
//     * @param data.nodeId 通道ID
//     */
//     async getCarInfoByNodeId(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/GetCarInfoByNodeId',
//             data: Object.assign({ serviceCode: 'getCarInfoByNodeId' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//     * 2.5.5无牌车出入场请求 UnlicensedCarInout
//     * @param data Object
//     * @param data.parkId 停车场ID
//     * @param data.cardNo 无牌车绑定的卡号 必填 (openId等唯一值) 单次停车入场和出场需要一致且在场内的不得重复 卡号长度必须大于12位(不包含12位)且小于等于18位
//     * @param data.deviceType 设备标识 0-设备编码 1-设备Ip
//     * @param data.deviceCode 进出口的设备的IP或设备编码（设备的id（数据库主键））--根据deviceType决定
//     */
//     async unlicensedCarInout(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/UnlicensedCarInout',
//             data: Object.assign({ serviceCode: 'unlicensedCarInout' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }


//     /**
//      *2.1.2停车场信息查询接口 GetParkingLotInfo
//      * @param data Object
//      * @param data.parkId 停车场ID
//      */
//     async getParkingLotInfo(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/GetParkingLotInfo',
//             data: Object.assign({ serviceCode: 'getParkingLotInfo' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**  
//      * 2.1.6停车场信息查询扩展接口 GetParkingLotInfoExt
//      * @param data Object
//      * @param data.parkId 停车场ID
//      */
//     async getParkingLotInfoExt(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/GetParkingLotInfoExt',
//             data: Object.assign({ serviceCode: 'getParkingLotInfo' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//      * 2.7.2道闸控制 GateControl
//      * @param data Object
//      * @param data.parkId 停车场ID
//      * @param data.nodeId 通道ID
//      * @param data.type 控制方式:
//      */
//     async gateControl(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/control/GateControl',
//             data: Object.assign({ serviceCode: 'gateControl' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }


//     /**
//      * 2.2.7 获取固定车列表 GetCarCardList
//      * @param data Object
//      * @param data.parkId 停车场ID
//      * @param data.carType 车牌类型编码
//      * @param data.pageIndex 第N页，从1开始，N>=1
//      * @param data.pageSize 每一页数量 >=1；每页最多取100条
//      */
//     async getCarCardList(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/GetCarCardList',
//             data: Object.assign({ serviceCode: 'getCarCardList' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//      * 2.8.1 新增黑名单车牌信息 AddCarBlackInfo
//      * @param data Object
//      * @param data.parkId 停车场ID
//      * @param data.plateNo 车牌号
//      * @param data.remark 原因备注
//      * @param data.type 限制类型 1.禁入 2.禁出 3.禁止出入
//      */
//     async addCarBlackInfo(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/blacklist/AddCarBlackInfo',
//             data: Object.assign({ serviceCode: 'addCarBlackInfo' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//      * 2.8.2 修改黑名单车牌信息 ModifyCarBlackInfo
//      * @param data Object
//      * @param data.parkId 停车场ID
//      * @param data.plateNo 车牌号
//      * @param data.remark 原因备注
//      * @param data.type 限制类型 1.禁入 2.禁出 3.禁止出入
//      */
//     async modifyCarBlackInfo(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/blacklist/ModifyCarBlackInfo',
//             data: Object.assign({ serviceCode: 'modifyCarBlackInfo' }, data)
//         })

//         if (+res.resCode === 0) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }


//     /**
//      * 2.8.3 删除黑名单车牌信息 DelCarBlackInfo
//      * @param data Object
//      * @param data.parkId 停车场ID
//      * @param data.plateNo 车牌号
//      * @param data.remark 原因备注
//      * @param data.type 限制类型 1.禁入 2.禁出 3.禁止出入
//      */
//     async delCarBlackInfo(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/blacklist/DelCarBlackInfo',
//             data: Object.assign({ serviceCode: 'delCarBlackInfo' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//     * 2.8.4查询黑名单列表 queryCarBlackInfo
//     * @param data Object
//     * @param data.parkId 停车场ID
//     * @param data.plateNo 车牌号
//     * @param data.remark 原因备注
//     * @param data.type 限制类型 1.禁入 2.禁出 3.禁止出入
//     */
//     async queryCarBlackInfo(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/blacklist/QueryCarBlackInfo',
//             data: Object.assign({ serviceCode: 'queryCarBlackInfo' }, data)
//         })

//         if (+res.resCode === 0) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }



//     /**
//      * 2.3.1查询进出记录 getCarInoutInfo
//      */
//     async getCarInoutInfo(data: Object) {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/GetCarInoutInfo',
//             data: Object.assign({ serviceCode: 'getCarInoutInfo' }, data)
//         })

//         if (+res.resCode === 0) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//      * 剩余车位查询 2.6.2 getFreeSpaceNum
//      */
//     async getFreeSpaceNum(data: Object) {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/GetFreeSpaceNum',
//             data: Object.assign({ serviceCode: 'getFreeSpaceNum' }, data)
//         })

//         if (+res.resCode === 0) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//      * 根据图片名字获取图片全链接
//      * data.imgName 图片名字
//      * data.parkId  停车场ID
//      */
//     async getImageUrlByName(data: Object) {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/GetParkingImg',
//             data: Object.assign({ serviceCode: 'getParkingImg', type: '1' }, data)
//         })

//         if (+res.resCode === 0) {
//             return JSON.parse(res.data).imgUrl
//         }

//         return ''
//     }

//     /**
//      * 获取车牌的账单 2.5.1 getParkingPaymentInfo
//      * @param data Object
//      * @param data.parkId 停车场ID
//      * @param data.plateNo 车牌号
//      */
//     async getParkingPaymentInfo(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/GetParkingPaymentInfo',
//             data: Object.assign({ serviceCode: 'getParkingPaymentInfo' }, data)
//         })

//         if (+res.resCode === 0) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//      * 停车费支付 2.5.2 payParkingFee
//      */
//     async payParkingFee(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/PayParkingFee',
//             data: Object.assign({ serviceCode: 'payParkingFee' }, data)
//         })

//         if (+res.resCode === 0) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//      * 获取车场配置
//      * @param [parkId] string 获取指定车场配置, 默认获取全部授权车场配置
//      * @return Object | Array<Object>
//      */
//     async getConfig(parkId?: string): Promise<any> {
//         let config: any

//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/config/platform/GetConfigInfo',
//             data: { serviceCode: 'getConfigInfo' }
//         })

//         if (+res.resCode !== 0) {
//             console.error('getConfigInfoError:', res.resMsg);
//             return parkId ? null : [];
//         }

//         if (parkId) {
//             res.data.parkConfig.map(r => {
//                 if (r.stcParkId == parkId) {
//                     config = r
//                 }
//             })
//         } else {
//             config = res.data.parkConfig
//         }

//         return config || (parkId ? null : [])
//     }


//     /**
//     * 增加内部车
//     * @param {int} parkId 车场id
//     * @param {int} carType 固定车类型
//     * @param {string} plateNo 车牌号码
//     */
//     async addCarCardNo(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/AddCarCardNo',
//             data: Object.assign({ serviceCode: 'addCarCardNo' }, data),
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//     * 修改内部车
//     * @param {int} parkId 车场id
//     * @param {int} carType 固定车类型
//     * @param {string} plateNo 车牌号码
//     * @param {int} cardId 内部车id
//     * @param {int} plateNoId 车牌id
//     */
//     async modifyCarCardNo(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/ModifyCarCardNo',
//             data: Object.assign({ serviceCode: 'modifyCarCardNo' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//      * 删除内部车
//      * @param {int} parkId 车场id
//      * @param {int} cardId 内部车id
//      */
//     async delCarCardInfo(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/DelCarCardInfo',
//             data: Object.assign({ serviceCode: 'delCarCardInfo' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//      * 固定车充值
//      * @param {int} parkId 车场id
//      * @param {int} carType 固定车类型
//      * @param {int} cardId 卡片id
//      * @param {string} validFrom 开始时间
//      * @param {string} validTo 结束时间
//      */
//     async payCarCardFee(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/PayCarCardFee',
//             data: Object.assign({ serviceCode: 'payCarCardFee' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//     * 2.2.2 固定车查询接口
//     * @param {int} parkId 车场id
//     * @param {string} plateNo 车牌号码
//     * @param {int} cardId 卡片id
//     */
//     async getCarCardInfo(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/GetCarCardInfo',
//             data: Object.assign({ serviceCode: 'getCarCardInfo' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//      * 固定车退款
//      * @param {int} parkId 车场id
//      * @param {int} carType 固定车类型
//      * @param {int} cardId 卡片id
//      * @param {string} validFrom 开始时间
//      * @param {string} validTo 结束时间
//      */
//     async refundCarCardFee(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/api/wec/RefundCarCardFee',
//             data: Object.assign({ serviceCode: 'refundCarCardFee' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//      *  修改内部车有效期
//      */
//     async modifyValidTime(data: Object): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/nkcInnerApi/card/ModifyValidTime',
//             data: Object.assign({ serviceCode: 'modifyValidTime' }, data)
//         })

//         if (+res.resCode === 0 && res.data) {
//             res.data = JSON.parse(res.data)
//         }

//         return res;
//     }

//     /**
//      * 数据库查询单条数据
//      */
//     async findOne(sql: string, parkId: string): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/dbproxy/selectOne',
//             data: {
//                 parkId: parkId,
//                 serviceCode: 'selectOne',
//                 sql: sql,
//             },
//             headers: { 'kt-lotcodes': parkId, version: '1.0' }
//         })

//         if (+res.resCode !== 0) {
//             console.error('findOneError:', res.resMsg, sql);
//             return null;
//         }

//         return res?.data || null;
//     }

//     /**
//      * 数据库查询多条数据
//      */
//     async findAll(sql: string, parkId: string): Promise<Array<any>> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/dbproxy/list',
//             data: {
//                 parkId: parkId,
//                 serviceCode: 'list',
//                 sql: sql,
//             },
//             headers: { 'kt-lotcodes': parkId, version: '1.0' }
//         })

//         if (+res.resCode !== 0) {
//             console.error('findAllError:', res.resMsg, sql);
//             return [];
//         }

//         return res?.data || [];
//     }

//     /**
//      * 数据库增删改
//      */
//     async execute(sql: string | Array<string>, parkId: string): Promise<any> {
//         const res = await this.http.tyRequest({
//             method: 'post',
//             url: '/dbproxy/execute',
//             data: {
//                 parkId: parkId,
//                 serviceCode: 'execute',
//                 sqlList: Array.isArray(sql) ? sql : [sql],
//             },
//             headers: { 'kt-lotcodes': parkId, version: '1.0' }
//         })

//         if (+res.resCode !== 0) {
//             console.error('executeError:', res.resMsg, sql);
//             return null;
//         }

//         return res?.data || null;
//     }

}