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;
}