package com.qs.mp.common.utils;

import com.alibaba.fastjson.JSON;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiRobotSendRequest;
import com.dingtalk.api.response.OapiRobotSendResponse;
import com.qs.mp.common.enums.ServerEnvEnum;
import com.qs.mp.common.utils.http.OkHttpUtil;
import com.taobao.api.ApiException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.Arrays;

@Component
public class WebhookService {

    private static Logger logger = LoggerFactory.getLogger(WebhookService.class);
//    private String dingToken = "https://oapi.dingtalk.com/robot/send?access_token=a2f955b2c685e4449ac98fd4a41b9ba1238a6badb58aba4da9c6fc50714fc43d";
    final static String alertUrl = "https://oapi.dingtalk.com/robot/send?access_token=942c2e951c794fa9683acaad5b9be13e61224fd797093dd580cc65ca776977e7";
    //final static String url = "https://oapi.dingtalk.com/robot/send?access_token=a2f955b2c685e4449ac98fd4a41b9ba1238a6badb58aba4da9c6fc50714fc43d";
    final static String wxLogMonitorUrl = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4275487c-8706-4676-ae21-e74db900fcb6";

    private static String  wxRobotUrl = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=dd8d3a48-01f2-44b0-b4bb-406e2f466050";
    private static String env;

    @Value("${server.env}")
    public void setEnv(String serverEnv) {
        env = serverEnv;
    }
    /*public static void sendDing(String msg) {
        sendDing(url, msg, null);
    }*/

    public static void sendAlertDing(String msg) {
        sendDing(alertUrl, msg, null);
    }

    public static void sendDing(String token, String msg, String[] mobiles) {
        DingTalkClient client = new DefaultDingTalkClient(token);
        OapiRobotSendRequest request = new OapiRobotSendRequest();
        request.setMsgtype("text");
        OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
        text.setContent(msg);
        request.setText(text);
        OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
        if (mobiles != null) {
            at.setAtMobiles(Arrays.asList(mobiles));
        }

        request.setAt(at);
        try {
            OapiRobotSendResponse response = client.execute(request);
            logger.info("errorCode:"+response.getErrorCode());
        } catch (ApiException e) {
            logger.error("钉钉消息发送失败");
        }

    }


    public static String sendWXRobot(String url , String msg) {
        //System.out.println("企业微信机器人告警发送：" + msg);
        if (StringUtils.isNotBlank(msg) && msg.length() > 2500) {
            msg = msg.substring(0, 2500);
        }
        String jsonStr = "{\n" +
                "        \"msgtype\": \"text\",\n" +
                "        \"text\": {\n" +
                "            \"content\": "+ JSON.toJSONString(msg)+"\n" +
                "        }\n" +
                "   }";
        //System.out.println(jsonStr);
        return OkHttpUtil.post(url, jsonStr, null);
    }

    /**
     * 系统监控
     * @param msg
     * @return
     */
    public static String sendLogAlertMsg(String msg) {
        // 钉钉机器人发送
        sendAlertDing(msg);
        return "success";
//        return sendWXRobot(wxLogMonitorUrl,msg);
    }

    /**
     * 业务通知
     * @param msg
     * @return
     */
    public static String sendBizData(String msg){
        if (ServerEnvEnum.PROD.getCode().equals(env)){
            return sendWXRobot(wxRobotUrl,msg);
        }
        LogUtil.info(logger, "当前环境为{0}，不发送业务监控消息。msg:{1}", new Object[]{env, msg});
        return null;
    }

    public static void main(String[] args){

//        WebhookService.sendLogAlertMsg("测试下\"xx");
        String resp = WebhookService.sendWXRobot(wxLogMonitorUrl, "2022-05-20\n累计代理：505，当日新增：7\n"
            + "累计门店：527，当日新增：16\n"
            + "累计用户：1935，当日新增：60\n"
            + "===================\n"
            + "累计销售额：160564.20元，当日：3086.00元\n"
            + "累计分佣：31777.32元，当日：637.56元\n"
            + "累计核销：61325.00元，当日：807.00元\n"
            + "累计提现：70983.59元，待提现：21538.85元，当日：743.13元\n"
            + "累计兑换订单：1381个，当日：22个\n"
            + "累计派发盲豆：199166颗，当日：1760颗\n"
            + "累计兑换盲豆：106155颗，当日：1233颗\n"
            + "===================\n"
            + "发财线上测试票|线上票(0.10元)，累计销售额：0.50元，当日：0.00元\n"
            + "------------------------\n"
            + "数码组|线上票(20.00元)，累计销售额：7000.00元，当日：0.00元\n"
            + "------------------------\n"
            + "五百人抢 单张20元，共计500张|线上票(20.00元)，累计销售额：3460.00元，当日：0.00元\n"
            + "------------------------\n"
            + "双百人抢 单张58元，共计200张|线上票(58.00元)，累计销售额：6670.00元，当日：0.00元\n"
            + "------------------------\n"
            + "百人抢 单张118元，共计100张|线上票(118.00元)，累计销售额：6136.00元，当日：0.00元\n"
            + "------------------------\n"
            + "百人抢 单张58元，共计100张|线上票(58.00元)，累计销售额：870.00元，当日：0.00元\n"
            + "------------------------\n"
            + "毒物|线上票(58.00元)，累计销售额：812.00元，当日：58.00元\n"
            + "------------------------\n"
            + "20元轻娱乐|线上票(20.00元)，累计销售额：740.00元，当日：20.00元\n"
            + "------------------------\n"
            + "10元体验版|线上票(10.00元)，累计销售额：80.00元，当日：0.00元\n"
            + "------------------------\n"
            + "10元线上乐享票|线上票(10.00元)，累计销售额：740.00元，当日：200.00元\n"
            + "------------------------\n"
            + "58盲票小家电款|线上票(58.00元)，累计销售额：58.00元，当日：0.00元\n"
            + "------------------------\n"
            + "188大奖超高抽中组|线上票(188.00元)，累计销售额：0.00元，当日：0.00元\n"
            + "------------------------\n"
            + "通用线下测试票|线下票(0.10元)，累计销售额：0.80元，当日：0.00元\n"
            + "------------------------\n"
            + "呱呱刮|线下票(10.00元)，累计销售额：41860.00元，当日：130.00元\n"
            + "------------------------\n"
            + "通用线下测试票1|线下票(0.10元)，累计销售额：0.80元，当日：0.00元\n"
            + "------------------------\n"
            + "美女专场 |线下票(20.00元)，累计销售额：460.00元，当日：40.00元\n"
            + "------------------------\n"
            + "天天刮一|线下票(10.00元)，累计销售额：30420.00元，当日：370.00元\n"
            + "------------------------\n"
            + "天天刮二|线下票(10.00元)，累计销售额：55930.00元，当日：600.00元\n"
            + "------------------------\n"
            + "演示专用测试票|线下票(0.10元)，累计销售额：0.10元，当日：0.00元\n"
            + "------------------------\n"
            + "10元美鸬山居（无门店核销版）|线下票(10.00元)，累计销售额：810.00元，当日：70.00元\n"
            + "------------------------\n"
            + "10元遥远的山民宿（门店核销版）|线下票(10.00元)，累计销售额：180.00元，当日：10.00元\n"
            + "------------------------\n"
            + "10元莫梵美宿（门店多核销版）|线下票(10.00元)，累计销售额：210.00元，当日：20.00元\n"
            + "------------------------\n"
            + "10元泗溪而上民宿（无门店核销版）|线下票(10.00元)，累计销售额：70.00元，当日：30.00元\n"
            + "------------------------\n"
            + "10元乐朴山静（门店核销版）|线下票(10.00元)，累计销售额：40.00元，当日：10.00元\n"
            + "------------------------\n"
            + "10元莫干山鱼缸民宿（门店多核销版）|线下票(10.00元)，累计销售额：990.00元，当日：600.00元\n"
            + "------------------------\n"
            + "15元快乐无限版票|线下票(15.00元)，累计销售额：1080.00元，当日：60.00元\n"
            + "------------------------\n"
            + "20元小汽车（门店多核销版）|线下票(20.00元)，累计销售额：1260.00元，当日：300.00元\n"
            + "------------------------\n"
            + "30元泛娱乐（无门店核销版）|线下票(30.00元)，累计销售额：570.00元，当日：510.00元\n"
            + "------------------------\n"
            + "58元夜场娱乐版|线下票(58.00元)，累计销售额：116.00元，当日：58.00元\n"
            + "------------------------\n"
            + "10元乡村专用票（定制勿选）|线下票(10.00元)，累计销售额：0.00元，当日：0.00元\n"
            + "------------------------\n"
            + "10元传化（无门店核销版）|线下票(10.00元)，累计销售额：0.00元，当日：0.00元\n"
            + "------------------------\n"
            + "10元传化（门店多核销版）|线下票(10.00元)，累计销售额：0.00元，当日：0.00元\n"
            + "------------------------\n"
            + "15元划算版|线下票(15.00元)，累计销售额：0.00元，当日：0.00元\n"
            + "------------------------\n"
            + "20元传化（奢侈品版）|线下票(20.00元)，累计销售额：0.00元，当日：0.00元\n"
            + "------------------------\n"
            + "10元传化（小家电版）|线下票(10.00元)，累计销售额：0.00元，当日：0.00元\n"
            + "------------------------\n"
            + "58元传化（酒吧版）|线下票(58.00元)，累计销售额：0.00元，当日：0.00元\n"
            + "------------------------\n"
            + "58元传化（小家电版）|线下票(58.00元)，累计销售额：0.00元，当日：0.00元\n"
            + "------------------------\n"
            + "16元传化（全核销版）|线下票(16.00元)，累计销售额：0.00元，当日：0.00元\n"
            + "------------------------\n"
            + "10元传化（丝滑版）|线下票(10.00元)，累计销售额：0.00元，当日：0.00元\n"
            + "------------------------");
        System.out.println(resp);
    }

}
