import { DOMAIN_PREFIX } from '../config/api'
import { showLoading, hideLoading } from './plugIn/globalLoading'
import { J_STORAGE_KEY } from '../config/constant'

const request = (base_url) => function (url, data = {}, method = 'GET', cb) {
	return new Promise((resolve, reject) => {
		const header = {
			'Content-Type': 'application/json'
		}
		const res = uni.getStorageSync(J_STORAGE_KEY)
		const token = res.token
		if (token) {
			header.Authorization = token
		}
		showLoading()
		uni.request({
			url: base_url + url,
			data,
			method,
			header,
			success: (res) => {
				// console.log('拦截器', JSON.stringify(res))
				// console.log('拦截器', res)
				hideLoading()
				if (res.statusCode == 200) {
					if (res.data.code === '200' || res.data.code === '') {
						resolve(res.data)
					} else if (res.data.code === '20004' || res.data.code === '20005') {
						uni.removeStorageSync(J_STORAGE_KEY)
						uni.navigateTo({
							url: '/pages_category_page2/userModule/login'
						})
						reject(res.data)
					} else {
						uni.showToast({
							title: res.data.message,
							icon: 'none'
						})
						reject(res.data)
					}
				} else {
					reject(res)
				}
			},
			fail: (res) => {
				hideLoading()
				reject(res)
			},
			complete: () => {
				cb && typeof cb === 'function' && cb()
			}
		})
	})
}

// 不带token接口请求,首页
const request1 = (base_url) => function (url, data = {}, method = 'GET', cb) {
	return new Promise((resolve, reject) => {
		const header = {
			'Content-Type': 'application/json',
			'tenant': 'MDAwMA=='
		}
		showLoading()
		uni.request({
			url: base_url + url,
			data,
			method,
			header,
			success: (res) => {
				hideLoading()
				if (res.data.code === '200' || data.code === '') {
					resolve(res.data)
				} else {
					reject(res)
				}
			},
			fail: (res) => {
				hideLoading()
				reject(res)
			},
			complete: () => {
				cb && typeof cb === 'function' && cb()
			}
		})
	})
}

export const MainRequest = request(DOMAIN_PREFIX)
export const IndexRequest = request1(DOMAIN_PREFIX)