| 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); | 
|   | 
|    }, | 
|   | 
|   | 
|     //update | 
|     postConsumTrial:function(postURL, indexNumber , 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,indexNumber); | 
|             }, | 
|             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); | 
|   | 
|     }, | 
|   | 
|     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; |