Commit 58fddd481e9e9d660255bf80ebdd20d7154656fd

Authored by vking
1 parent 460a6e44

fix map & api

... ... @@ -13,7 +13,6 @@
enable-zoom
enable-scroll
enable-rotate
show-compass
subkey="SDEBZ-I74W4-QLGUX-XXYXU-HIR23-3QFBJ"
style="width: 100%; height: {{map.height}}px;"></map>
<formids url="/pages/reserve/search" style="position: fixed;">
... ...
... ... @@ -3,12 +3,59 @@
*/
//接口地址,测试环境请修改以下地址
//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 = parseInt((new Date() / 1000))
if (this.tasks[key]) {
if (nt <= this.tasks[key].timeout) {
return true
}
}
return false
}
get(key) {
return new Promise((success, fail) => {
let resSetInterval=setInterval(()=>{
//console.log('resSetInterval',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 = parseInt((new Date() / 1000))
this.tasks[key] = {
timeout: nt + 1000
}
if(type){
this.tasks[key]['type']=type
this.tasks[key]['res']=res
}
}
}
const RMT = new rpcm()
/**
*
... ... @@ -21,178 +68,184 @@ 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((success, fail) => {
let openid = wx.getStorageSync('customer_openid');
let formids = wx.getStorageSync('formids');
if (formids) {
wx.removeStorage({key: 'formids'});
}
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 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(!silence){
wx.showLoading({
title: '处理中',
mask:true
})
if (api.openid) {
data[api.openid] = data[api.openid] || openid;
}
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);
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
}
}
export default __api();
\ No newline at end of file
... ...