|
...
|
...
|
@@ -3,12 +3,60 @@ |
|
|
|
*/
|
|
|
|
//接口地址,测试环境请修改以下地址
|
|
|
|
//const server_host='https://xt04.colorcun.com/?s=';
|
|
|
|
const api_timeout=2000; //接口超时时间,默认2s
|
|
|
|
const api_timeout = 2000; //接口超时时间,默认2s
|
|
|
|
|
|
|
|
//引入接口映射关系表
|
|
|
|
import api from './api.url'
|
|
|
|
import uri_dc from './uri'
|
|
|
|
const server_host=uri_dc.HOST__LINE;
|
|
|
|
|
|
|
|
const server_host = uri_dc.HOST__LINE;
|
|
|
|
|
|
|
|
class rpcm {
|
|
|
|
tasks = {}
|
|
|
|
|
|
|
|
check(key) {
|
|
|
|
let nt = new Date().getTime()
|
|
|
|
if (this.tasks[key]) {
|
|
|
|
//console.log('resSetIntervalnt',nt , this.tasks[key].timeout)
|
|
|
|
if (nt <= this.tasks[key].timeout) {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
|
|
|
get(key) {
|
|
|
|
return new Promise((success, fail) => {
|
|
|
|
let resSetInterval=setInterval(()=>{
|
|
|
|
console.log('resSetInterval',key,this.tasks[key])
|
|
|
|
if(this.tasks[key].type=='success'){
|
|
|
|
wx.hideLoading();
|
|
|
|
success(this.tasks[key].res)
|
|
|
|
clearInterval(resSetInterval)
|
|
|
|
}
|
|
|
|
if(this.tasks[key].type=='fail'){
|
|
|
|
wx.hideLoading();
|
|
|
|
fail(this.tasks[key].res)
|
|
|
|
clearInterval(resSetInterval)
|
|
|
|
}
|
|
|
|
},500)
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
set(key,type='',res=null) {
|
|
|
|
let nt = new Date().getTime()
|
|
|
|
this.tasks[key] = {
|
|
|
|
timeout: nt + 1000
|
|
|
|
}
|
|
|
|
if(type){
|
|
|
|
this.tasks[key]['type']=type
|
|
|
|
this.tasks[key]['res']=JSON.parse(JSON.stringify(res))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const RMT = new rpcm()
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
...
|
...
|
@@ -21,178 +69,220 @@ const server_host=uri_dc.HOST__LINE; |
|
|
|
* @param timeout 接口超时
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
function rpc(host='',act,data={},fouce=false,header={},silence=true,cachetime=0,timeout=api_timeout,api={}){
|
|
|
|
host=host?host:server_host;
|
|
|
|
let param="";
|
|
|
|
for(let key in data){
|
|
|
|
let val=data[key];
|
|
|
|
if(val!=="" && val!==null){
|
|
|
|
param+='&'+key+'='+val
|
|
|
|
}
|
|
|
|
function rpc(host = '', act, data = {}, fouce = false, header = {}, silence = true, cachetime = 0, timeout = api_timeout, api = {}) {
|
|
|
|
host = host ? host : server_host;
|
|
|
|
let param = "";
|
|
|
|
for (let key in data) {
|
|
|
|
let val = data[key];
|
|
|
|
if (val !== "" && val !== null) {
|
|
|
|
param += '&' + key + '=' + val
|
|
|
|
}
|
|
|
|
let cache_key=act;
|
|
|
|
if(param){
|
|
|
|
cache_key+='?'+param.substr((param.length-1)*-1);
|
|
|
|
}
|
|
|
|
let cache_key = act;
|
|
|
|
if (param) {
|
|
|
|
cache_key += '?' + param.substr((param.length - 1) * -1);
|
|
|
|
}
|
|
|
|
if (fouce == 'clear' || fouce == 'clean') {
|
|
|
|
return wx.removeStorageSync(cache_key);
|
|
|
|
}
|
|
|
|
if (!fouce && cachetime != 0) {//优先使用缓存
|
|
|
|
let getCache = cache(cache_key);
|
|
|
|
//console.log('getCache.'+getCache,cache_key);
|
|
|
|
if (getCache != -99999) {
|
|
|
|
return new Promise((success, fail) => {
|
|
|
|
getCache.isCache = true;
|
|
|
|
console.log(cache_key + '\nuse cache', getCache);
|
|
|
|
success(getCache);
|
|
|
|
})
|
|
|
|
}
|
|
|
|
if(fouce=='clear' || fouce=='clean'){
|
|
|
|
return wx.removeStorageSync(cache_key);
|
|
|
|
}
|
|
|
|
if (!silence) {
|
|
|
|
wx.showLoading({
|
|
|
|
title: '处理中',
|
|
|
|
mask: true
|
|
|
|
})
|
|
|
|
}
|
|
|
|
if (RMT.check(cache_key)) return RMT.get(cache_key)
|
|
|
|
RMT.set(cache_key)
|
|
|
|
return new Promise(async(success, fail) => {
|
|
|
|
if(api.msgSecCheck){//数据安全检查
|
|
|
|
try{
|
|
|
|
await msgSecCheck(host,data)
|
|
|
|
}catch (e){
|
|
|
|
wx.showToast({
|
|
|
|
title:'内容含有违法违规内容',
|
|
|
|
icon:'none'
|
|
|
|
})
|
|
|
|
return fail({msgSecCheck:true})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(!fouce && cachetime!=0){//优先使用缓存
|
|
|
|
let getCache= cache(cache_key);
|
|
|
|
//console.log('getCache.'+getCache,cache_key);
|
|
|
|
if(getCache!=-99999){
|
|
|
|
return new Promise((success,fail)=>{
|
|
|
|
getCache.isCache=true;
|
|
|
|
console.log(cache_key+'\nuse cache',getCache);
|
|
|
|
success(getCache);
|
|
|
|
})
|
|
|
|
}
|
|
|
|
let openid = wx.getStorageSync('customer_openid');
|
|
|
|
let formids = wx.getStorageSync('formids');
|
|
|
|
if (formids) {
|
|
|
|
wx.removeStorage({key: 'formids'});
|
|
|
|
}
|
|
|
|
if(!silence){
|
|
|
|
wx.showLoading({
|
|
|
|
title: '处理中',
|
|
|
|
mask:true
|
|
|
|
})
|
|
|
|
let enter_params = wx.getStorageSync('enter_params');
|
|
|
|
let operator = ''
|
|
|
|
if (enter_params) {
|
|
|
|
operator = JSON.stringify({
|
|
|
|
uid: enter_params.manager_id,
|
|
|
|
openid: enter_params.seller_openid,
|
|
|
|
sid: enter_params.seller_id,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
return new Promise((success,fail)=>{
|
|
|
|
let openid = wx.getStorageSync('customer_openid');
|
|
|
|
let formids = wx.getStorageSync('formids');
|
|
|
|
if(formids){
|
|
|
|
wx.removeStorage({key:'formids'});
|
|
|
|
}
|
|
|
|
let enter_params = wx.getStorageSync('enter_params');
|
|
|
|
let operator=''
|
|
|
|
if(enter_params){
|
|
|
|
operator=JSON.stringify({
|
|
|
|
uid:enter_params.manager_id,
|
|
|
|
openid: enter_params.seller_openid,
|
|
|
|
sid:enter_params.seller_id,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
if(api.openid){
|
|
|
|
data[api.openid]=data[api.openid]||openid;
|
|
|
|
}
|
|
|
|
let stime=new Date();
|
|
|
|
wx.request({
|
|
|
|
url: host+act,
|
|
|
|
method: 'POST',
|
|
|
|
data: data,
|
|
|
|
header: {
|
|
|
|
...header,
|
|
|
|
openid:openid,
|
|
|
|
formids:formids.toString(),
|
|
|
|
operator:operator,
|
|
|
|
'content-type': 'application/x-www-form-urlencoded'
|
|
|
|
},
|
|
|
|
success: function (res) {
|
|
|
|
console.log('request.api['+(new Date()-stime)+'ms]==>',host+cache_key+('&formids='+formids.toString())+'\nrequest.success',res.data);
|
|
|
|
// return;
|
|
|
|
if(res.data){
|
|
|
|
if(cachetime!=0 && res.data.ret==200){
|
|
|
|
cache(cache_key,res.data,cachetime);//.then().catch();
|
|
|
|
}
|
|
|
|
if(res.data.ret!==200){
|
|
|
|
try{
|
|
|
|
res.data.msg=res.data.msg.replace('非法请求:','');
|
|
|
|
}catch(e){
|
|
|
|
console.log('res-fail',res,e);
|
|
|
|
if (wx.getRealtimeLogManager) {
|
|
|
|
const logger = wx.getRealtimeLogManager()
|
|
|
|
logger.error('接口错误',{url:host+cache_key,res:res.data})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
if (wx.getRealtimeLogManager) {
|
|
|
|
const logger = wx.getRealtimeLogManager()
|
|
|
|
logger.error('接口错误',{url:host+cache_key,res:res})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
success(res.data);
|
|
|
|
},
|
|
|
|
fail: function (res) {
|
|
|
|
console.log('request.api==>',host+cache_key+'\nrequest.fail',res);
|
|
|
|
fail(res);
|
|
|
|
// let query = wx.createSelectorQuery().selectComponent("#network");
|
|
|
|
// let net=query.exec(function(){
|
|
|
|
// console.log('back=>',arguments);
|
|
|
|
// });
|
|
|
|
//query.show();
|
|
|
|
//console.log('net',query);
|
|
|
|
if (api.openid) {
|
|
|
|
data[api.openid] = data[api.openid] || openid;
|
|
|
|
}
|
|
|
|
let stime = new Date();
|
|
|
|
wx.request({
|
|
|
|
url: host + act,
|
|
|
|
method: 'POST',
|
|
|
|
data: data,
|
|
|
|
header: {
|
|
|
|
...header,
|
|
|
|
openid: openid,
|
|
|
|
formids: formids.toString(),
|
|
|
|
operator: operator,
|
|
|
|
'content-type': 'application/x-www-form-urlencoded'
|
|
|
|
},
|
|
|
|
success: function (res) {
|
|
|
|
console.log('request.api[' + (new Date() - stime) + 'ms]==>', host + cache_key + ('&formids=' + formids.toString()) + '\nrequest.success', res.data);
|
|
|
|
// return;
|
|
|
|
if (res.data) {
|
|
|
|
if (cachetime != 0 && res.data.ret == 200) {
|
|
|
|
cache(cache_key, res.data, cachetime);//.then().catch();
|
|
|
|
}
|
|
|
|
if (res.data.ret !== 200) {
|
|
|
|
try {
|
|
|
|
res.data.msg = res.data.msg.replace('非法请求:', '');
|
|
|
|
} catch (e) {
|
|
|
|
console.log('res-fail', res, e);
|
|
|
|
if (wx.getRealtimeLogManager) {
|
|
|
|
const logger = wx.getRealtimeLogManager()
|
|
|
|
logger.error('调用失败',{url:host+cache_key,res:res})
|
|
|
|
logger.error('接口错误', {url: host + cache_key, res: res.data})
|
|
|
|
}
|
|
|
|
},
|
|
|
|
complete:function(){
|
|
|
|
wx.hideLoading();
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (wx.getRealtimeLogManager) {
|
|
|
|
const logger = wx.getRealtimeLogManager()
|
|
|
|
logger.error('接口错误', {url: host + cache_key, res: res})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
success(res.data);
|
|
|
|
RMT.set(cache_key,'success',res.data)
|
|
|
|
},
|
|
|
|
fail: function (res) {
|
|
|
|
console.log('request.api==>', host + cache_key + '\nrequest.fail', res);
|
|
|
|
fail(res);
|
|
|
|
RMT.set(cache_key,'fail',res)
|
|
|
|
// let query = wx.createSelectorQuery().selectComponent("#network");
|
|
|
|
// let net=query.exec(function(){
|
|
|
|
// console.log('back=>',arguments);
|
|
|
|
// });
|
|
|
|
//query.show();
|
|
|
|
//console.log('net',query);
|
|
|
|
if (wx.getRealtimeLogManager) {
|
|
|
|
const logger = wx.getRealtimeLogManager()
|
|
|
|
logger.error('调用失败', {url: host + cache_key, res: res})
|
|
|
|
}
|
|
|
|
},
|
|
|
|
complete: function () {
|
|
|
|
wx.hideLoading();
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
function __api(){
|
|
|
|
let tmpApi={}
|
|
|
|
let keys=[];
|
|
|
|
for(let key in api){
|
|
|
|
api[key]=api[key]||{};
|
|
|
|
keys=key.split('.');
|
|
|
|
tmpApi[keys[0]]=tmpApi[keys[0]]?tmpApi[keys[0]]:{};
|
|
|
|
tmpApi[keys[0]][keys[1]]=tmpApi[keys[0]][keys[1]]?tmpApi[keys[0]][keys[1]]:{};
|
|
|
|
tmpApi[keys[0]][keys[1]][keys[2]]=function(data,fouce=false,header){
|
|
|
|
//console.log('api[key].host',api[key].host);
|
|
|
|
return rpc(api[key].host,api[key].alias||key,data,fouce,header,
|
|
|
|
api[key].silence,api[key].cachetime,api[key].timeout,api[key]);
|
|
|
|
}
|
|
|
|
function __api() {
|
|
|
|
let tmpApi = {}
|
|
|
|
let keys = [];
|
|
|
|
for (let key in api) {
|
|
|
|
api[key] = api[key] || {};
|
|
|
|
keys = key.split('.');
|
|
|
|
tmpApi[keys[0]] = tmpApi[keys[0]] ? tmpApi[keys[0]] : {};
|
|
|
|
tmpApi[keys[0]][keys[1]] = tmpApi[keys[0]][keys[1]] ? tmpApi[keys[0]][keys[1]] : {};
|
|
|
|
tmpApi[keys[0]][keys[1]][keys[2]] = function (data, fouce = false, header) {
|
|
|
|
//console.log('api[key].host',api[key].host);
|
|
|
|
return rpc(api[key].host, api[key].alias || key, data, fouce, header,
|
|
|
|
api[key].silence, api[key].cachetime, api[key].timeout, api[key]);
|
|
|
|
}
|
|
|
|
for(let xkey in uri_dc){
|
|
|
|
let key=uri_dc[xkey].toString();
|
|
|
|
if(key.indexOf('App.')>-1){
|
|
|
|
keys=key.split('.');
|
|
|
|
try{
|
|
|
|
if(typeof tmpApi[keys[0]][keys[1]][keys[2]]=='undefined'){
|
|
|
|
throw new Error('undefined');
|
|
|
|
}
|
|
|
|
}catch(e){
|
|
|
|
api[key]=api[key]||{};
|
|
|
|
tmpApi[keys[0]]=tmpApi[keys[0]]?tmpApi[keys[0]]:{};
|
|
|
|
tmpApi[keys[0]][keys[1]]=tmpApi[keys[0]][keys[1]]?tmpApi[keys[0]][keys[1]]:{};
|
|
|
|
tmpApi[keys[0]][keys[1]][keys[2]]=function(data,fouce=false,header){
|
|
|
|
//console.log('api[key].host',api[key]);
|
|
|
|
return rpc(api[key].host,api[key].alias||key,data,fouce,header,
|
|
|
|
api[key].silence,api[key].cachetime,api[key].timeout,api[key]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (let xkey in uri_dc) {
|
|
|
|
let key = uri_dc[xkey].toString();
|
|
|
|
if (key.indexOf('App.') > -1) {
|
|
|
|
keys = key.split('.');
|
|
|
|
try {
|
|
|
|
if (typeof tmpApi[keys[0]][keys[1]][keys[2]] == 'undefined') {
|
|
|
|
throw new Error('undefined');
|
|
|
|
}
|
|
|
|
} catch (e) {
|
|
|
|
api[key] = api[key] || {};
|
|
|
|
tmpApi[keys[0]] = tmpApi[keys[0]] ? tmpApi[keys[0]] : {};
|
|
|
|
tmpApi[keys[0]][keys[1]] = tmpApi[keys[0]][keys[1]] ? tmpApi[keys[0]][keys[1]] : {};
|
|
|
|
tmpApi[keys[0]][keys[1]][keys[2]] = function (data, fouce = false, header) {
|
|
|
|
//console.log('api[key].host',api[key]);
|
|
|
|
return rpc(api[key].host, api[key].alias || key, data, fouce, header,
|
|
|
|
api[key].silence, api[key].cachetime, api[key].timeout, api[key]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//console.log(tmpApi[keys[0]]);
|
|
|
|
return tmpApi[keys[0]];
|
|
|
|
}
|
|
|
|
//console.log(tmpApi[keys[0]]);
|
|
|
|
return tmpApi[keys[0]];
|
|
|
|
}
|
|
|
|
function cache(key,val=-99999,timeout=-1){
|
|
|
|
if(val!=-99999){//写入
|
|
|
|
return new Promise((success,fail)=>{
|
|
|
|
let data={
|
|
|
|
data:val,
|
|
|
|
timeout:timeout==-1?-1:(Date.parse(new Date())/1000+timeout)
|
|
|
|
}
|
|
|
|
wx.setStorage({
|
|
|
|
key:key,
|
|
|
|
data:data,
|
|
|
|
success:()=>{
|
|
|
|
success()
|
|
|
|
},
|
|
|
|
fail:()=>{
|
|
|
|
fail()
|
|
|
|
}
|
|
|
|
});
|
|
|
|
})
|
|
|
|
}
|
|
|
|
let res=wx.getStorageSync(key);
|
|
|
|
let time=Date.parse(new Date())/1000;
|
|
|
|
if(res && (res.timeout==-1 || res.timeout>time) && res.data){
|
|
|
|
return res.data;
|
|
|
|
}else{
|
|
|
|
return -99999
|
|
|
|
}
|
|
|
|
|
|
|
|
function cache(key, val = -99999, timeout = -1) {
|
|
|
|
if (val != -99999) {//写入
|
|
|
|
return new Promise((success, fail) => {
|
|
|
|
let data = {
|
|
|
|
data: val,
|
|
|
|
timeout: timeout == -1 ? -1 : (Date.parse(new Date()) / 1000 + timeout)
|
|
|
|
}
|
|
|
|
wx.setStorage({
|
|
|
|
key: key,
|
|
|
|
data: data,
|
|
|
|
success: () => {
|
|
|
|
success()
|
|
|
|
},
|
|
|
|
fail: () => {
|
|
|
|
fail()
|
|
|
|
}
|
|
|
|
});
|
|
|
|
})
|
|
|
|
}
|
|
|
|
let res = wx.getStorageSync(key);
|
|
|
|
let time = Date.parse(new Date()) / 1000;
|
|
|
|
if (res && (res.timeout == -1 || res.timeout > time) && res.data) {
|
|
|
|
return res.data;
|
|
|
|
} else {
|
|
|
|
return -99999
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function msgSecCheck(host,params){
|
|
|
|
let content=JSON.stringify(params);
|
|
|
|
return new Promise(function(success,fail){
|
|
|
|
wx.request({
|
|
|
|
url: host + 'App.Wechat.MsgSecCheck',
|
|
|
|
method: 'POST',
|
|
|
|
data: {content:content},
|
|
|
|
header: {
|
|
|
|
'content-type': 'application/x-www-form-urlencoded'
|
|
|
|
},
|
|
|
|
success: res => {
|
|
|
|
if(res.data.data.errcode==0){
|
|
|
|
success()
|
|
|
|
}else{
|
|
|
|
fail()
|
|
|
|
}
|
|
|
|
},
|
|
|
|
fail: res => {
|
|
|
|
fail()
|
|
|
|
},
|
|
|
|
complete:res=>{
|
|
|
|
wx.hideLoading();
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
export default __api(); |
|
|
\ No newline at end of file |
...
|
...
|
|