package com.jeequan.jeepay.thirdparty.device.speaker.llznSpeaker;

import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import com.jeequan.jeepay.core.constants.CS;
import com.jeequan.jeepay.core.exception.BizException;
import com.jeequan.jeepay.core.model.device.LlznParams;
import com.jeequan.jeepay.core.model.device.PayOrderInfo4Device;
import com.jeequan.jeepay.core.utils.AmountUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

/**
 * @Author: ZhuXiao
 * @Description:
 * @Date: 18:20 2021/7/6
*/
@Slf4j
public class LlznUtil {

    /**
     * 发起get请求
     */
    public static JSONObject post(String reqUrl, LlznParams params, JSONObject reqParams) throws BizException {

        packageCommonParams(params, reqParams);

        // 发起请求
        log.info("零零智能设备号：{}，请求地址：{}，请求参数：{}", params.getDeviceParams().getDeviceNo(), reqUrl, reqParams.toJSONString());
        String responseStr = HttpUtil.createPost(reqUrl)
                .header("api-key", params.getProviderParams().getApiKey())
                .body(reqParams.toJSONString())
                .timeout(60000)
                .execute().body();
        log.info("零零智能设备号：{}，返回结果：{}", params.getDeviceParams().getDeviceNo(), responseStr);

        if (StringUtils.isBlank(responseStr)) {
            throw new BizException("请求失败");
        }

        return JSONObject.parseObject(responseStr);
    }

    /** 获取播报内容    */
    public static JSONObject getSpeakData(String customContent, PayOrderInfo4Device payOrderInfo) {
        JSONObject voiceJson = new JSONObject();

        // 支付类型 1-在播放金额之前播放支付类型；2-自定义tts
        voiceJson.put("biz_type", "2");
        // 1-成功收到付款（xx美元）；2-支付宝；3-微信；4-银联；5-取消支付
//        voiceJson.put("broadcast_type", "1");
        // Qrcode=动态二维码网站，可以为空，如果不为空，支付二维码 将显示代码
//        voiceJson.put("qrcode", "");
        // 金额
        voiceJson.put("money", AmountUtil.convertCent2DollarShort(payOrderInfo.getAmount()+""));


        // 防逃单播报走自定义模式
        if (PayOrderInfo4Device.BOARD_TYPE_CANCEL.equals(payOrderInfo.getWayCodeType())) {
            voiceJson.put("tts", "客户取消付款" + AmountUtil.convertCent2DollarShort(payOrderInfo.getAmount()+"") + "元");
            return voiceJson;
        }

        // 会员余额支付
        if (PayOrderInfo4Device.BOARD_TYPE_MEMBER.equals(payOrderInfo.getWayCodeType())) {
            voiceJson.put("tts", "会员支付" + AmountUtil.convertCent2DollarShort(payOrderInfo.getAmount()+"") + "元");
            return voiceJson;
        }

        // 配置了自定义播报内容
        if (StringUtils.isNotBlank(customContent)) {
            voiceJson.put("tts", customContent + AmountUtil.convertCent2DollarShort(payOrderInfo.getAmount()+"")+ "元");
        }else {
            // 未配置 自定义播报内容，走默认播报语音
            voiceJson.put("tts", getPayContent(payOrderInfo.getWayCodeType(), payOrderInfo.getAmount()));
        }

        return voiceJson;
    }

    private static JSONObject packageCommonParams(LlznParams params, JSONObject reqParams) {
        reqParams.put("deviceNumber", params.getDeviceParams().getDeviceNo());  //设备名称  唯一

        return reqParams;
    }


    /**
     * 支付方式
     */
    public static String getPayContent(String wayCodeType, Long amount) {

        // 分转元
        String amountStr = AmountUtil.convertCent2DollarShort(amount+"")+ "元";

        if (CS.PAY_WAY_CODE_TYPE.WECHAT.equals(wayCodeType)) { // 微信
            return "微信收款" + amountStr;
        }else if (CS.PAY_WAY_CODE_TYPE.ALIPAY.equals(wayCodeType)) { // 支付宝
            return "支付宝收款" + amountStr;
        }else if (CS.PAY_WAY_CODE_TYPE.YSFPAY.equals(wayCodeType)) { // 云闪付
            return "云闪付收款" + amountStr;
        }else {
            return "收款" + amountStr;
        }
    }


}
