let AWSService = {}; AWSService = { sfSessionId : '', insertModule : 'Insert AWS ', updateModule : 'Update AWS ', queryModule : 'Query AWS ', searchModule : 'Search AWS ', confirmTrans : 'Confirm Transaction To AWS', successStatus : 'success', failStatus : 'fail', insertCalloutLog:function(module,url,request,response,status){ if(AWSService.sfSessionId){ sforce.connection.sessionId = AWSService.sfSessionId; let transLog = new sforce.SObject('Transaction_Log__c'); transLog.AWS_Data_Id__c = ''; transLog.Module__c = module; transLog.Interface_URL__c = url; transLog.Request__c = request; transLog.Response__c = response; transLog.Status__c = status; let insertLogResult = sforce.connection.create([transLog]); if(insertLogResult[0].getBoolean(AWSService.successStatus)) { console.log('Insert Log Id: ' + insertLogResult[0].id); return insertLogResult[0].id; }else { console.log('Faield to insert log'); return ''; } } }, //Search Contact search:function(searchUrl,requestSearchPayload,searchBack,token) { let payloadstr= null; if (requestSearchPayload) { if (typeof requestSearchPayload == 'string') { payloadstr = requestSearchPayload; }else{ payloadstr = JSON.stringify(requestSearchPayload); } } let para = { url:searchUrl, headers: { 'Content-Type': 'application/json', 'pi-token': token }, type: "post", success: function (result) { AWSService.insertCalloutLog(AWSService.searchModule,searchUrl,JSON.stringify(requestSearchPayload),JSON.stringify(result),AWSService.successStatus); searchBack(result); }, error: function (error){ //错误相关处理 404属于该处理(经测试) //还可能是"timeout", "error", "notmodified" 和 "parsererror"。 AWSService.insertCalloutLog(AWSService.searchModule,searchUrl,JSON.stringify(requestSearchPayload),JSON.stringify(error),AWSService.failStatus); console.log('错误处理',error); } }; if (payloadstr) { para.data = payloadstr; } jQuery.ajax(para); }, //query query:function(queryURL, awsDataId, queryback, token) { if(awsDataId){ let para = { url:queryURL + '?dataId=' + awsDataId, headers: { 'Content-Type': 'application/json', 'pi-token': token }, type: "get", success: function (data) { AWSService.insertCalloutLog(AWSService.queryModule,queryURL,queryURL + '?dataId=' + awsDataId,JSON.stringify(data),AWSService.successStatus); queryback(data); }, error: function (error){ //错误相关处理 404属于该处理(经测试) //还可能是"timeout", "error", "notmodified" 和 "parsererror"。 AWSService.insertCalloutLog(AWSService.queryModule,queryURL,queryURL + '?dataId=' + awsDataId,JSON.stringify(error),AWSService.failStatus); console.log(error); } }; jQuery.ajax(para);}else{ unblockUI(); } }, //queryRepair queryRepair:function(queryURL, awsDataId,Id,ContactId,queryback, token) { if(awsDataId){ let para = { url:queryURL + '?dataId=' + awsDataId, headers: { 'Content-Type': 'application/json', 'pi-token': token }, type: "get", success: function (data) { AWSService.insertCalloutLog(AWSService.queryModule,queryURL,queryURL + '?dataId=' + awsDataId,JSON.stringify(data),AWSService.successStatus); queryback(data,Id,ContactId); }, error: function (error){ //错误相关处理 404属于该处理(经测试) //还可能是"timeout", "error", "notmodified" 和 "parsererror"。 AWSService.insertCalloutLog(AWSService.queryModule,queryURL,queryURL + '?dataId=' + awsDataId,JSON.stringify(error),AWSService.failStatus); console.log(error); } }; jQuery.ajax(para);}else{ unblockUI(); } }, //queryAddress queryAddress:function(queryURL, addressName, queryback, token) { if(addressName){ let para = { url:queryURL + '?detailedAddress=' + addressName, headers: { 'Content-Type': 'application/json', 'pi-token': token }, type: "get", success: function (data) { AWSService.insertCalloutLog(AWSService.queryModule,queryURL,queryURL + '?detailedAddress=' + awsDataId,JSON.stringify(data),AWSService.successStatus); queryback(data); }, error: function (error){ //错误相关处理 404属于该处理(经测试) //还可能是"timeout", "error", "notmodified" 和 "parsererror"。 AWSService.insertCalloutLog(AWSService.queryModule,queryURL,queryURL + '?detailedAddress=' + awsDataId,JSON.stringify(error),AWSService.failStatus); console.log(error); } }; jQuery.ajax(para);}else{ unblockUI(); } }, //insert insert:function(newURL, payloadJson, payloadForNewPI, controllerSaveMethod, token, transactionURL,isNewMode,insertOrUpdateBack,redirectCallBack) { console.log('Process New PI Data'); console.log(JSON.stringify(payloadForNewPI)); let payloadstr= null; if (payloadForNewPI) { if (typeof payloadForNewPI == 'string') { payloadstr = payloadForNewPI; }else{ payloadstr = JSON.stringify(payloadForNewPI); } } let para = { url:newURL, headers: { 'Content-Type': 'application/json', 'pi-token': token }, type: "post", success: function (result) { AWSService.insertCalloutLog(AWSService.insertModule,newURL,JSON.stringify(payloadForNewPI),JSON.stringify(result),AWSService.successStatus); AWSService.back(result, payloadJson, transactionURL, token, controllerSaveMethod,isNewMode,insertOrUpdateBack,redirectCallBack); }, error: function (error){ //错误相关处理 404属于该处理(经测试) //还可能是"timeout", "error", "notmodified" 和 "parsererror"。 AWSService.insertCalloutLog(AWSService.insertModule,newURL,JSON.stringify(payloadForNewPI),JSON.stringify(error),AWSService.failStatus); console.log(error); } }; if (payloadstr) { para.data = payloadstr; } jQuery.ajax(para); }, //update update:function(updateURL, payloadJson, payloadForNewPI, controllerSaveMethod, token, transactionURL,isNewMode,insertOrUpdateBack,redirectCallBack) { console.log('Process New PI Data'); console.log(JSON.stringify(payloadForNewPI)); if(payloadForNewPI && JSON.parse(payloadForNewPI)[0] && JSON.parse(payloadForNewPI)[0]['dataId']){ let payloadstr= null; if (payloadForNewPI) { if (typeof payloadForNewPI == 'string') { payloadstr = payloadForNewPI; }else{ payloadstr = JSON.stringify(payloadForNewPI); } } let para = { url:updateURL, headers: { 'Content-Type': 'application/json', 'pi-token': token }, type: "post", success: function (result) { AWSService.insertCalloutLog(AWSService.updateModule,updateURL,JSON.stringify(payloadForNewPI),JSON.stringify(result),AWSService.successStatus); AWSService.back(result, payloadJson, transactionURL, token, controllerSaveMethod,isNewMode,insertOrUpdateBack,redirectCallBack); }, error: function (error){ //错误相关处理 404属于该处理(经测试) //还可能是"timeout", "error", "notmodified" 和 "parsererror"。 AWSService.insertCalloutLog(AWSService.updateModule,updateURL,JSON.stringify(payloadForNewPI),JSON.stringify(error),AWSService.failStatus); console.log(error); } }; if (payloadstr) { para.data = payloadstr; } jQuery.ajax(para); }else{ unblockUI(); } }, get:function(queryURL, queryback, token) { let para = { url:queryURL, headers: { 'Content-Type': 'application/json', 'pi-token': token }, type: "get", success: function (data) { AWSService.insertCalloutLog(AWSService.queryModule,queryURL,'',JSON.stringify(data),AWSService.successStatus); queryback(data); }, error: function (error){ //错误相关处理 404属于该处理(经测试) //还可能是"timeout", "error", "notmodified" 和 "parsererror"。 AWSService.insertCalloutLog(AWSService.queryModule,queryURL,'',JSON.stringify(error),AWSService.failStatus); console.log(error); } }; jQuery.ajax(para); }, //update post:function(postURL, payloadForNewPI, callback, token) { console.log('Process New PI Data'); console.log(JSON.stringify(payloadForNewPI)); let payloadstr= null; if (payloadForNewPI) { if (typeof payloadForNewPI == 'string') { payloadstr = payloadForNewPI; }else{ payloadstr = JSON.stringify(payloadForNewPI); } } let para = { url:postURL, headers: { 'Content-Type': 'application/json', 'pi-token': token }, type: "post", success: function (result) { AWSService.insertCalloutLog(AWSService.insertModule,postURL,JSON.stringify(payloadForNewPI),JSON.stringify(result),AWSService.successStatus); if(callback) callback(result); }, error: function (error){ AWSService.insertCalloutLog(AWSService.insertModule,postURL,JSON.stringify(payloadForNewPI),JSON.stringify(error),AWSService.failStatus); console.log(error); } }; if (payloadstr) { para.data = payloadstr; } jQuery.ajax(para); }, //update postAWS:function(postURL,moduleName,payloadForNewPI, callback, token) { console.log('Process New PI Data'); console.log(JSON.stringify(payloadForNewPI)); let payloadstr= null; if (payloadForNewPI) { if (typeof payloadForNewPI == 'string') { payloadstr = payloadForNewPI; }else{ payloadstr = JSON.stringify(payloadForNewPI); } } let para = { url:postURL, headers: { 'Content-Type': 'application/json', 'pi-token': token }, type: "post", success: function (result) { AWSService.insertCalloutLog(moduleName,postURL,JSON.stringify(payloadForNewPI),JSON.stringify(result),AWSService.successStatus); if(callback)callback(result); }, error: function (error){ AWSService.insertCalloutLog(moduleName,postURL,JSON.stringify(payloadForNewPI),JSON.stringify(error),AWSService.failStatus); console.log(error); } }; if (payloadstr) { para.data = payloadstr; } jQuery.ajax(para); }, confirmTrans:function(transactionURL,transParameters,callback,token){ let payloadstr= null; if (transParameters) { if (typeof transParameters == 'string') { payloadstr = transParameters; }else{ payloadstr = JSON.stringify(transParameters); } } let para = { url:transactionURL, headers: { 'Content-Type': 'application/json', 'pi-token': token }, type: "post", success: function (result) { AWSService.insertCalloutLog(AWSService.confirmTrans,transactionURL,JSON.stringify(transParameters),JSON.stringify(result),AWSService.successStatus); if(callback)callback(result); }, error: function (error){ AWSService.insertCalloutLog(AWSService.confirmTrans,transactionURL,JSON.stringify(transParameters),JSON.stringify(error),AWSService.failStatus); console.log(error); } }; if (payloadstr) { para.data = payloadstr; } jQuery.ajax(para); }, sfdcBack : function(event, result, transId, token, transactionURL,redirectCallBack) { let sfId = ''; let errorMsg = ''; if (event.status) { console.log('sf Id from SF Backend:' + JSON.stringify(result)); let transParameters = { txId: transId }; if (result.status == 'success') { transParameters.isSuccess = 1; transParameters.sfRecordId = sfId = result.recordId;; }else{ transParameters.isSuccess = 0; errorMsg = result.message; } let para = { url:transactionURL, headers: { 'Content-Type': 'application/json', 'pi-token': token }, data:JSON.stringify(transParameters), type: "post", success: function (result) { AWSService.insertCalloutLog(AWSService.confirmTrans,transactionURL,JSON.stringify(transParameters),JSON.stringify(result),AWSService.successStatus); redirectCallBack(sfId,errorMsg); }, error: function (error){ AWSService.insertCalloutLog(AWSService.confirmTrans,transactionURL,JSON.stringify(transParameters),JSON.stringify(error),AWSService.failStatus); console.log(error); } }; jQuery.ajax(para); } }, // AWSService.back(result, payloadJson, transactionURL, token, controllerSaveMethod); back : function(result, payloadJson, transactionURL, token, controllerSaveMethod,isNewMode,insertOrUpdateBack,redirectCallBack) { let payloadJsonStr = JSON.stringify(insertOrUpdateBack(payloadJson, result,isNewMode)); let transId = result.txId + ''; Visualforce.remoting.Manager.invokeAction( controllerSaveMethod, // example '{!$RemoteAction.NewAndEditLeadController.saveLead}' payloadJsonStr, transId, isNewMode, function (result, event) { AWSService.sfdcBack(event, result, transId, token, transactionURL,redirectCallBack); }, { escape: true } ); } }; window.AWSService = AWSService;