// const ENV = process.env.NODE_ENV; 
const ENV = process.env; 
console.log(ENV,2);
let hostapi = '';
// #ifdef MP-WEIXIN
	let hInfo = wx.getAccountInfoSync();
	// console.log(hInfo.envVersion);//develop:开发版	trial：体验版	release：正式版
	if(hInfo.miniProgram.envVersion == "develop" || hInfo.miniProgram.envVersion == "trial"){
		// (开发版,体验版)域名
		hostapi = 'https://hengmei.scdxtc.cn/api/';
		// hostapi = 'https://hm.hmzfyy.cn/api/';
	} else { 
		// 正式版-域名
		hostapi = 'https://hm.hmzfyy.cn/api/';
	}
// #endif
// 清理所有缓存并前往授权页
const goLogin = () => {
    // uni.clearStorageSync();
	// uni.showToast({
	// 	title:'信息错误请重新登录',
	// 	icon:'none'
	// })
	// setTimeout(()=>{
	// 	uni.reLaunch({
	// 	    url: '/pages/login/login'
	// 	})
	// },1000)
}
// 请求错误处理
let errorFlag = true;
const checkError = (e) => {
	console.log(e,'接口错误');
    if (e.data) {
        if (e.data.code) {
            switch (Number(e.data.code)) {
                case 4003:
				// 参数错误
				console.log('4003参数错误');
                    break;
				case 4004:
				// 记录不存在
				console.log('4004记录不存在');
				    break;
				case 5001:
				// xxx错误
				console.log('5001xxx错误');
				    break;
				case 5050:
				// 服务器错误，请稍后重试
				console.log('5050服务器错误，请稍后重试');
				    break;
				case 5051:
				// 未知错误
				console.log('5051未知错误');
				    break;
				case 6001:
				// token验证失败或已失效
				console.log('6001token验证失败或已失效');
				goLogin();
				    break;
            }
        }
    } else {
		if(e.errMsg=="request:fail 对应的服务器证书无效。" || e.errno==600001) {
			uni.request({
				url: `${hostapi}index/err-log`,
				method: 'POST',
				data:{
					log:`接口：${uni.getStorageSync('apiurl')}，错误信息：${e}`
				},
				headers:{
				    'Content-Type': 'application/json; charset=UTF-8',
					'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
				},
				success: (res) => {
					if(res.code==0){
						uni.removeStorageSync('apiurl');
					}
				}
			})
			// if(errorFlag) {
			// 	errorFlag = false;
			// 	uni.showModal({
			// 		title:'服务器证书无效',
			// 		confirmText:'确定',
			// 		showCancel:false,
			// 		success:(e)=> {
			// 			if(e.confirm) {
			// 				// 退出小程序
			// 				wx.exitMiniProgram();
			// 			}
			// 		}
			// 	})
			// }
		}
	}
}
let flag = true;
// 封装请求
const request = (method, url, options, ifLogin) => {
    let methods = '';
    let headers = {};
    switch (method) {
        case 'get':
            methods = 'GET'
            headers = {
                'Content-Type': 'application/json; charset=UTF-8',
				'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
            }
            break;
        case 'post':
            methods = 'POST'
            headers = {
                'Content-Type': 'application/json; charset=UTF-8',
				'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
            }
            break;
        case 'postForm':
            methods = 'POST'
            headers = {
                'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
				'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
            }
            break;
    }
	return new Promise((resolve, reject) => {
		// 不需要登录
		if(flag) {
			uni.request({
				url: `${hostapi}${url}`,
				method: methods,
				data: options,
				header: headers,
				success: res => {
					console.log(`${url}接口返的结果===>`,res);
					if (res.statusCode == 200) {
						if (res.data.code == 0) {
							resolve(res.data)
						} else {
							if(res.data.code==6001) {
								flag = false;
								uni.login({
									provider: 'weixin',
									success: (res)=> {
										var params = {code:res.code}
										uni.request({
											url: `${uni.getStorageSync('hostapi')}user/login`,
											method: 'post',
											data: params,
											success: res => {
												if(res.data.data.token!=''){
													flag = true;
													uni.setStorageSync('token',res.data.data.token); // 缓存token
													uni.setStorageSync('openid',res.data.data.openid)//缓存openid
													uni.setStorageSync('expire',res.data.data.expire); // 缓存失效时间（时间戳格式）
													uni.setStorageSync('phone_active',res.data.data.phone_active); // 是否绑定手机号
													uni.setStorageSync('is_active',res.data.data.is_active)//是否第一次授权
													uni.reLaunch({ // 重新进入当前页面
														url:uni.getStorageSync('paramsUrl')
													})
												}
											}
										})
									},
								});
							} else {
								checkError(res)
								uni.showToast({
									title:res.data.msg,
									icon:'none'
								})
							}
						}
					} else if(res.statusCode==500) {
						flag = false;
						uni.login({
							provider: 'weixin',
							success: (res)=> {
								var params = {code:res.code}
								uni.request({
									url: `${uni.getStorageSync('hostapi')}user/login`,
									method: 'post',
									data: params,
									success: res => {
										if(res.data.data.token!=''){
											flag = true;
											uni.setStorageSync('token',res.data.data.token); // 缓存token
											uni.setStorageSync('openid',res.data.data.openid)//缓存openid
											uni.setStorageSync('expire',res.data.data.expire); // 缓存失效时间（时间戳格式）
											uni.setStorageSync('phone_active',res.data.data.phone_active); // 是否绑定手机号
											uni.setStorageSync('is_active',res.data.data.is_active)//是否第一次授权
											uni.reLaunch({ // 重新进入当前页面
												url:uni.getStorageSync('paramsUrl')
											})
										}
									}
								})
							},
						});
						uni.showToast({
							title:'接口错误',
							icon:'none'
						})
					} else {
						checkError(res)
						uni.showToast({
							title:'接口错误',
							icon:'none'
						})
					}
				},
				fail: e => {
					uni.setStorageSync('apiurl',url);
					checkError(e)
				},
				complete: rest => {
					// console.log(rest);
				}
			})
		}
	})
}

// 上传文件 封装请求
const uploadFile = (url, options) => {
    let tempData = options || {}
    return new Promise((resolve, reject) => {
        uni.uploadFile({
            url: `${hostapi}${url}`,
            filePath: tempData.file,
            name: 'image',
			fileType:'image',
            formData: tempData,
			header: {
				'Content-Type': 'multipart/form-data;charset=UTF-8',
				'Authorization': 'Bearer '+uni.getStorageSync('token') || ''
			},
            success: res => {
                if (res.statusCode == 200) {
                    let temp = JSON.parse(res.data)
                    if (temp.code == 0) {
                        resolve(temp)
                    } else {
                        reject(temp)
                        uni.showToast({
                            title: temp.msg || '接口错误(' + temp.code + ')',
                            icon: 'none'
                        })
                    }
                } else {
                    uni.showToast({
                        title: `未知错误(${res.statusCode})`,
                        icon: 'none'
                    })
                }
            },
            fail(e) {
                // uni.showToast({
                //     title: '接口请求超时',
                //     icon: 'none'
                // })
                // reject(e.data)
            },
            complete: () => {
                uni.hideLoading()
            }
        });
    })
}


export default {
    get: (url, options, ifLogin=true) => {
        return request('get', url, options, ifLogin)
    },
    // JOSN格式
    post: (url, options, ifLogin=true) => {
        return request('post', url, options, ifLogin)
    },
    // form-data格式
    postForm: (url, options, ifLogin=true) => {
        return request('postForm', url, options, ifLogin)
    },
    // 上传
    upload: (url, options, ifLogin=true) => {
        return uploadFile(url, options, ifLogin)
    }
}
