LiveData

function handler(data){
   
    var logger = new LiveDataLogger();
    logger.info("data:"+data);
    var req = JSON.parse(data);
    logger.info("req的JSON字符串:"+JSON.stringify(req));
    var body = req.body;
    logger.info("body:"+body);
    logger.info("body的长度:"+body.length);

    try {
    var bodyArray = JSON.parse(body);
    } catch(e) {
    logger.info("数据解析异常应用号失败通知:"+e);
    var errResponse = sendNotifyOfError()
    var errResponse ={statusCode: "500",statusMsg: "数据解析异常"}
    return errResponse;
    } 
    
    logger.info("bodyArray的长度:"+bodyArray.length);

        for (var i=0;i<bodyArray.length;i++)
    {
        cmhkData = bodyArray[i]
        var statusTime = cmhkData.statusTime;
        logger.info("statusTime:"+statusTime);
        logger.info("cmhkData:"+cmhkData);
            if (cmhkData.type != null && cmhkData.type != "" && cmhkData.quotationNo != null && cmhkData.quotationNo != "" && cmhkData.status != null && cmhkData.status != "" && cmhkData.statusTime != null && cmhkData.statusTime != ""
            && (cmhkData.type == "PR" || cmhkData.type == "PP" || cmhkData.type == "PO") && statusTime.startsWith("20") )
        {
            //livedata接收客户状态并以ump发往LiveB2B
            logger.info("ump的:"+cmhkData);
            cmhkData = JSON.stringify(cmhkData);
            sendUmp(cmhkData);
            logger.info("第"+(i+1)+"次"+"发送UMP到liveB2B完成"+cmhkData);
            var selfResponse ={statusCode: "200",statusMsg: "success"}
        }
        else
        {
            //发送应用号失败通知
            var fields = findLackFields(cmhkData);
            // logger.info("应用号失败通知1:"+cmhkData);
            cmhkData = JSON.stringify(cmhkData);
            // logger.info("应用号失败通知2:"+cmhkData);
            var response = sendNotify(cmhkData);
            logger.info("response:"+response);
            
            var selfResponse ={statusCode: "500",statusMsg: fields};
            logger.info("第"+(i+1)+"次"+"必填项检验异常发送应用号失败通知完成"+cmhkData);
        }
    }   
    return selfResponse;
}
function sendUmp(cmhkData) {
    var logger = new LiveDataLogger();
    var config = new MqsConfig();
    //设置MQS连接串
    config.setUrl("kwets10000913.taas.huawei.com:9776;kwets10000916.taas.huawei.com:9776");
    //设置应用
    // config.setAppid("com.huawei.b2b.cmhk");
    config.setAppid("app_0000000000034122");
    //设置秘钥
    // config.setSecret("UnxSkhj1LC0DExwucjlpKQ==");
    config.setSecret("i-tdQF90U8h^LZR0(FJbR!wCDhC^Z3$+z$*Wxe3~k>)Prp(gmMQ1517219978246");
    //设置topic
    config.setTopic("T_CMHK_DEMAND_SHEET");
    //设置生产者标签
    // config.setTags("");
    logger.info("ump的:"+cmhkData);
    var producer = new MqsProducer(config);
    //发送消息
    producer.produce(cmhkData);
}

    function sendNotify(cmhkData) {
    var config = new HttpRequest();
    var logger = new LiveDataLogger();
    logger.info("sendNotify")
    var basictoken = getToken();
    logger.info("basictoken:"+basictoken)
    config.setUrl("http://kweuat.huawei.com/feedmsg/publicservices/events");
    var body = {
        // "tenant_id":" hwfeed",
        // "app_id":"com.huawei.feed",
        // "theme_id":"55f7ec13e98e48f9a2fab38159fd540f ",
        // "event_type_id":"feed01",
        // "event_type_name":"应用通知",
        // "from_user_account":"test1",
        // "from_user_id":null,
        // "to_user_account":"test2,test3",
        // "occur_time":1591236115,
        // "business_from_name":"张三",
        // "title":"客户寄送需求单状态到liveB2B失败",
        // "titleIcon_url":" www.huawei.com",
        // "jump_url":" www.huawei.com",
        // "sub_title":"副标题",
        // "content":JSON.stringify(cmhkData)+"发往liveData失败",
        // "image_url ":" www.huawei.com ",
        // "type":"1"

        "app_id": "app_0000000000034122",
        // "content": "Dear Receiver :\n消息令牌:PLS_B2B_3B2_CNCDT_315764589,\n业务ID:HTM2022011400817 流程处理未正常终止,请知晓。 \n相关信息:2.订单号: 4876000683客户编码:1000017472在B2B系统不存在! .",
        "content":JSON.stringify(cmhkData)+"发往liveData失败",
        // "jump_url": "http://kweuat.huawei.com/otc/b2bchannel/#!b2bchannel/view/log/listHeadLog.html?docId=",
        "tenant_id": "com.huawei.RegionalIT",
        "theme_id": "207ebea4c99c4e5d9ccde1bda4017850",
        "title": "【香港cmhk】发送需求单状态到liveData平台未成功通知",
        "to_user_account": "cwx1061002,hwx1106724,mwx1089908,hwx1123566,84147891",
        "type": "1"
        };
    config.setHeader("Authorization",basictoken);
    // logger.info(basictoken);
    config.setContent(JSON.stringify(body));
    config.setContentType("application/json");
    config.setConnectionTimeout(5000);
    config.setRequestTimeout(10000);
    var httpClient = new OkHttpClient();
    var response = httpClient.post(config);
    var code = response.getCode();
    var contentString = response.getContentString();
    var contentBytes = response.getContentBytes();
    var contentType = response.getContentType();
    return contentString;
}

    function getToken(){
    var logger = new LiveDataLogger();
    logger.info("getToken")
    var bodyToken = {
      "appId":"com.huawei.unistar.hpc.cbn",
      "credential":"VSl2bWkyKDZdSUh4QVdFUzZHPlA+eVItVXVmWGdmUUBreWF0MXVzZEIkd1F3bEMoXjdDMTU4NzA4NzAwNDE2NQ=="
    };
    var config = new HttpRequest();
    config.setUrl("http://kwe-beta.huawei.com/ApiCommonQuery/appToken/getRestAppDynamicToken");
    config.setContent(JSON.stringify(bodyToken));
    config.setContentType("application/json");
    config.setConnectionTimeout(5000);
    config.setRequestTimeout(10000);
    var httpClient = new OkHttpClient();
    var response = httpClient.post(config);
    var code = response.getCode();
    var contentString = response.getContentString();
    var contentBytes = response.getContentBytes();
    var contentType = response.getContentType();
    var basictoken = JSON.parse(contentString).result;
    return basictoken;
}

    function sendNotifyOfError() {
    var config = new HttpRequest();
    var logger = new LiveDataLogger();
    logger.info("sendNotifyOfError")
    var basictoken = getToken();
    logger.info("basictoken:"+basictoken)
    config.setUrl("http://kweuat.huawei.com/feedmsg/publicservices/events");
    var body = {
        "app_id": "app_0000000000034122",
        // "content": "Dear Receiver :\n消息令牌:PLS_B2B_3B2_CNCDT_315764589,\n业务ID:HTM2022011400817 流程处理未正常终止,请知晓。 \n相关信息:2.订单号: 4876000683客户编码:1000017472在B2B系统不存在! .",
        "content":"发往liveData失败",
        // "jump_url": "http://kweuat.huawei.com/otc/b2bchannel/#!b2bchannel/view/log/listHeadLog.html?docId=",
        "tenant_id": "com.huawei.RegionalIT",
        "theme_id": "207ebea4c99c4e5d9ccde1bda4017850",
        "title": "【香港cmhk】需求单状态发送到liveData平台异常通知",
        "to_user_account": "cwx1061002,hwx1106724,mwx1089908,hwx1123566,84147891",
        "type": "1"
        };
    config.setHeader("Authorization",basictoken);
    config.setContent(JSON.stringify(body));
    config.setContentType("application/json");
    config.setConnectionTimeout(5000);
    config.setRequestTimeout(10000);
    var httpClient = new OkHttpClient();
    var response = httpClient.post(config);
    var code = response.getCode();
    var contentString = response.getContentString();
    var contentBytes = response.getContentBytes();
    var contentType = response.getContentType();
    return contentString;
}
    function findLackFields(cmhkData) {
    var logger = new LiveDataLogger();
    var message = "exception: ";
    if (cmhkData.type == null || cmhkData.type == ""){
        message = message.concat("Lack of type,");
        logger.info("999999")
    }
    if (cmhkData.quotationNo == null || cmhkData.quotationNo == ""){
        message = message.concat("Lack of quotationNo,");
    }
    if (cmhkData.status == null || cmhkData.status == ""){
        message = message.concat("Lack of status,");
    }
    if (cmhkData.statusTime == null || cmhkData.statusTime == ""){
        message = message.concat("Lack of statusTime,");
    }
    if (cmhkData.type != "PR" && cmhkData.type != "PP" && cmhkData.type != "PO"){
        message = message.concat("type is Non-compliance,");
    }
    var statusTime = cmhkData.statusTime;
    logger.info("statusTime2:"+statusTime);
    var prefix = statusTime.startsWith("20");
    if (prefix == false){
        message = message.concat("statusTime is Non-compliance,");
    }
    return message;
}

 

posted @ 2022-04-18 21:11  MING5135  阅读(118)  评论(0)    收藏  举报