export default class AWSService { sfSessionId = ''; insertModule = 'Insert Ali '; updateModule = 'Update Ali '; queryModule = 'Query Ali '; searchModule = 'Search Ali '; // confirmTrans = 'Confirm Transaction To Ali', successStatus = 'success'; failStatus = 'fail'; insertCalloutLog(module,url,request,response,status){ return; } //Search Contact search2(staticResource, requestSearchPayload, searchBack) { this.search(staticResource.searchUrl, requestSearchPayload, searchBack, staticResource.token); } search(searchUrl,requestSearchPayload,searchBack,token) { let payloadstr= null; if (requestSearchPayload) { if (typeof requestSearchPayload == 'string') { payloadstr = requestSearchPayload; }else{ payloadstr = JSON.stringify(requestSearchPayload); } } fetch(searchUrl, { method: 'POST', body: payloadstr, headers: { 'Content-Type': 'application/json', 'pi-token': token } }).then((data) => { return data.json(); }).then((result) => { this.insertCalloutLog(this.searchModule,searchUrl,JSON.stringify(requestSearchPayload),JSON.stringify(result),this.successStatus); searchBack(result); }).catch(error => { this.insertCalloutLog(this.searchModule,searchUrl,JSON.stringify(requestSearchPayload),JSON.stringify(error),this.failStatus); console.log(error); }); } query2(staticResource, AliDataId, queryback) { this.search(staticResource.queryUrl, AliDataId, queryback, staticResource.token); } //query query(queryURL, AliDataId, queryback, token) { fetch(queryURL + '?dataId=' + AliDataId, { method: 'GET', headers: { 'Content-Type': 'application/json', 'pi-token': token } }).then((data) => { return data.json(); }).then((data) => { this.insertCalloutLog(this.queryModule,queryURL,queryURL + '?dataId=' + AliDataId,JSON.stringify(data),this.successStatus); queryback(data); }).catch(error => { this.insertCalloutLog(this.queryModule,queryURL,queryURL + '?dataId=' + AliDataId,JSON.stringify(error),this.failStatus); console.log(error); }); } insert(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(piConfig,payloadJson,payloadForNewPI,redirectCallBack) { let updateURL = piConfig.staticResource.updateUrl; let controllerSaveMethod = piConfig.insertMethod; let token = piConfig.staticResource.token; let transactionURL = piConfig.staticResource.transactionUrl; let isNewMode = piConfig.isNewMode; let insertOrUpdateBack = piConfig.insertOrUpdateBack; console.log('Process New PI Data'); console.log(JSON.stringify(payloadForNewPI)); if(piConfig.hasPIFields){ 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: "put", success: result => { this.insertCalloutLog(this.updateModule,updateURL,JSON.stringify(payloadForNewPI),JSON.stringify(result),this.successStatus); this.back(result, payloadJson, transactionURL, token, controllerSaveMethod,isNewMode,insertOrUpdateBack,redirectCallBack,piConfig.staticResource.currentUserId); }, error: error =>{ //错误相关处理 404属于该处理(经测试) //还可能是"timeout", "error", "notmodified" 和 "parsererror"。 this.insertCalloutLog(this.updateModule,updateURL,JSON.stringify(payloadForNewPI),JSON.stringify(error),this.failStatus); console.log(error); } }; if (payloadstr) { para.data = payloadstr; } jQuery.ajax(para); }else{ Visualforce.remoting.Manager.invokeAction( controllerSaveMethod, JSON.stringify(payloadJson), '', isNewMode, (result, event) => { if (event.status) { redirectCallBack(result.recordId,result.status == 'success'? null : result.message); }else{ console.log(result) console.log(event) } }, { escape: true } ); } } get(queryURL, callback, token) { console.log('Process New PI Data'); fetch(queryURL, { method: 'GET', body: payloadstr, headers: { 'Content-Type': 'application/json', 'pi-token': token } }).then((data) => { return data.json(); }).then((result) => { this.insertCalloutLog(this.queryModule,queryURL,'',JSON.stringify(result),this.successStatus); callback(result); }).catch(error => { this.insertCalloutLog(this.queryModule,queryURL,'',JSON.stringify(error),this.failStatus); console.log(error); }); } post(postURL, payloadForNewPI, callback, token,callbackError) { this.pushData(postURL,payloadForNewPI,callback, token,'POST'); } put(putURL, payloadForNewPI, callback, token){ this.pushData(putURL,payloadForNewPI,callback, token,'PUT'); } pushData(destUrl, payloadForNewPI, callback, token,type) { console.log('enter '+type); //console.log(JSON.stringify(payloadForNewPI)); let payloadstr= null; if (payloadForNewPI) { if (typeof payloadForNewPI == 'string') { payloadstr = payloadForNewPI; }else{ payloadstr = JSON.stringify(payloadForNewPI); } } console.log(payloadstr); fetch(destUrl, { method: type, body: payloadstr, headers: { 'Content-Type': 'application/json', 'pi-token': token } }).then((data) => { return data.json(); }).then((result) => { callback(result); }).catch(error => { let message = error + ''; if(error.body && error.body.message){ message = error.body.message; } callback({ message : 'AWS处理出错,原因:' + message }) }); } confirm(result,sfId,transId, token, transactionURL,redirectCallBack){ this.sfdcBack({status:result},{status:result?'success':'failed',recordId:sfId},transId,token,transactionURL,redirectCallBack) } sfdcBack (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; } this.post(transactionURL, transParameters, redirectCallBack, token) }else{ console.log('event.status=false'); } } // this.back(result, payloadJson, transactionURL, token, controllerSaveMethod); back (result, payloadJson, transactionURL, token, controllerSaveMethod,isNewMode,insertOrUpdateBack,redirectCallBack,operater) { let payloadJsonStr = JSON.stringify(insertOrUpdateBack(payloadJson, result,isNewMode)); let transId = result.txId + ''; Visualforce.remoting.Manager.invokeAction( controllerSaveMethod, // example '{!$RemoteAction.NewAndEditLeadController.saveLead}' payloadJsonStr, transId, isNewMode, (result, event)=> { this.sfdcBack(event, result, transId, token, transactionURL,redirectCallBack,operater); }, { escape: true } ); } //校验是否有特殊字符* isSpecialchar (params) { console.log('isSpecialchar start'); console.log('params:'+params); if (!params) { console.log('参数为空:'+params); return false; } console.log('是否有*:'+params.indexOf('*')); if (params.indexOf('*') >= 0 ){ return true; } return false; } test(){ console.log('lwc AWSService load success'); } }