|
|
|
/**
|
|
|
|
* Created by goto9 on 2018/7/19.
|
|
|
|
*/
|
|
|
|
//接口地址,测试环境请修改以下地址
|
|
|
|
//const server_host='https://xt04.colorcun.com/?s=';
|
|
|
|
const api_timeout=2000; //接口超时时间,默认2s
|
|
|
|
|
|
|
|
//引入接口映射关系表
|
|
|
|
import api from './api.url'
|
|
|
|
import uri_dc from './uri'
|
|
|
|
const server_host=uri_dc.HOST__LINE;
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param act
|
|
|
|
* @param data
|
|
|
|
* @param fouce false|true 强制请求服务器,获取最新数据;默认优先使用缓存
|
|
|
|
* @param header 追加header
|
|
|
|
* @param silence loading
|
|
|
|
* @param cachetime 缓存时间
|
|
|
|
* @param timeout 接口超时
|
|
|
|
* @returns {Promise}
|
|
|
|
*/
|
|
|
|
function rpc(host='',act,data={},fouce=false,header={},silence=true,cachetime=0,timeout=api_timeout){
|
|
|
|
host=host?host:server_host;
|
|
|
|
let param="";
|
|
|
|
for(let key in data){
|
|
|
|
let val=data[key];
|
|
|
|
if(val!=""){
|
|
|
|
param+='&'+key+'='+val
|
|
|
|
}
|
|
|
|
}
|
|
|
|
let cache_key=act;
|
|
|
|
if(param){
|
|
|
|
cache_key+='?'+param.substr((param.length-1)*-1);
|
|
|
|
}
|
|
|
|
if(!fouce && cachetime!=0){//优先使用缓存
|
|
|
|
let getCache= cache(cache_key);
|
|
|
|
if(getCache!=-99999){
|
|
|
|
return new Promise((success,fail)=>{
|
|
|
|
if(true){
|
|
|
|
getCache.isCache=true;
|
|
|
|
console.log(cache_key+'->use cache',getCache);
|
|
|
|
success(getCache);
|
|
|
|
}else{
|
|
|
|
fail();
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(!silence){
|
|
|
|
wx.showLoading({
|
|
|
|
title: '数据加载中',
|
|
|
|
})
|
|
|
|
}
|
|
|
|
return new Promise((success,fail)=>{
|
|
|
|
let openid = wx.getStorageSync('openid');
|
|
|
|
let formids = wx.getStorageSync('formids');
|
|
|
|
if(formids){
|
|
|
|
wx.removeStorage({key:'formids'});
|
|
|
|
}
|
|
|
|
|
|
|
|
wx.request({
|
|
|
|
url: host+act,
|
|
|
|
method: 'POST',
|
|
|
|
data: data,
|
|
|
|
header: {
|
|
|
|
...header,
|
|
|
|
openid:openid,
|
|
|
|
formids:formids.toString(),
|
|
|
|
'content-type': 'application/x-www-form-urlencoded'
|
|
|
|
},
|
|
|
|
success: function (res) {
|
|
|
|
console.log('request.api==>',host+cache_key+'\nrequest.success',res.data);
|
|
|
|
// return;
|
|
|
|
if(cachetime!=0 && res.data.ret==200 && res.data.data.length>0){
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
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);
|
|
|
|
},
|
|
|
|
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,key,data,fouce,header,
|
|
|
|
api[key].silence,api[key].cachetime,api[key].timeout);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
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].host);
|
|
|
|
return rpc(api[key].host,key,data,fouce,header,
|
|
|
|
api[key].silence,api[key].cachetime,api[key].timeout);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//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.data){
|
|
|
|
return res.data;
|
|
|
|
}else{
|
|
|
|
return -99999
|
|
|
|
}
|
|
|
|
}
|
|
|
|
export default __api(); |
|
|
\ No newline at end of file |
...
|
...
|
|