import {
	$hasPermission
} from '@/http/yskApi/shop.js'
import infoBox from '@/commons/utils/infoBox.js'

const $PermissionObj = {
	data: [{
			key: 'yun_xu_cha_kan_jing_ying_shu_ju',
			text: '允许查看经营数据'
		},
		{
			key: 'yun_xu_cha_kan_suo_you_jiao_ban_ji_lu',
			text: '允许查看所有交班记录'
		}
	],
	default: [{
			key: 'yun_xu_xia_dan',
			text: '允许下单'
		},
		{
			key: 'yun_xu_shou_kuan',
			text: '允许收款'
		},
		{
			key: 'yun_xu_tui_kuan',
			text: '允许退款'
		},
		{
			key: 'yun_xu_jiao_ban',
			text: '允许交班'
		}
	],
	goods: [{
			key: 'yun_xu_xiu_gai_shang_pin',
			text: '允许修改商品'
		},
		{
			key: 'yun_xu_shang_xia_jia_shang_pin',
			text: '允许上下架商品'
		},
		{
			key: 'yun_xu_xiu_gai_fen_lei',
			text: '允许修改分类'
		},
		{
			key: 'yun_xu_xiu_gai_fen_zu',
			text: '允许修改分组'
		}
	],
	discount:[
		{
			key: 'yun_xu_da_zhe',
			text: '允许打折'
		}
	],
	vip:[
		{
			text: '允许管理会员信息',
			key: 'yun_xu_guan_li_hui_yuan_xin_xi'
		},
		{
			key: 'yun_xu_xiu_gai_hui_yuan_yu_e',
			text: '允许修改会员余额'
		}
	],
	stock:[
		{
			text: '允许提交报损',
			key: 'yun_xu_ti_jiao_bao_sun'
		},
		{
			text: '允许沽清',
			key: 'yun_xu_gu_qing'
		},
		{
			text: '允许售罄商品',
			key: 'yun_xu_shou_qing_shang_pin'
		},
		{
			text:'允许修改商品库存',
			key:'yun_xu_xiu_gai_shang_pin_ku_cun'
		},
		{
			text: '允许耗材入库',
			key: 'yun_xu_hao_cai_ru_ku'
		},
		{
			text: '允许耗材出库',
			key: 'yun_xu_hao_cai_chu_ku'
		},
		{
			text: '允许耗材盘点',
			key: 'yun_xu_hao_cai_pan_dian'
		}
	]
}

function isChinese(str) {
	for (var i = 0; i < str.length; i++) {
		if (str.charCodeAt(i) >= 0x4E00 && str.charCodeAt(i) <= 0x9FFF) {
			return true; // 是中文
		}
	}
	return false; // 不是中文，全是英文或其他
}

function isObjectButNotArray(value) {
	return typeof value === 'object' && Array.isArray(value) === false;
}

function findPermissionObj(str) {
	for (let i in $PermissionObj) {
		const obj = $PermissionObj[i].find(v => v.key == str || v.text == str)
		if (obj) {
			return obj
			break
		}
	}
	console.error('未找到相关权限配置，请检查权限配置文件commons/utils/hasPermission.js文件进行修改或增加')
	return false
}

function returnFormatParams(params) {
	if (typeof params === 'string') {
		return findPermissionObj(params)
	} else {
		if (isObjectButNotArray(params)) {
			const obj=findPermissionObj(params.key || params.text)
			return {...params,...obj}
		} else {
			console.error('参数只能是字符串或者对象，不能是数组')
		}
	}
}

/**
 * 判断是否有某权限
 * @param {Object|String} params
 */
export async function hasPermission(params) {
	//如果是商户默认拥有全部权限
	const loginType=uni.getStorageSync('loginType')
	if(loginType=='0'){
		return true
	}
	params = returnFormatParams(params)
	if (!params) {
		return infoBox.showToast('未找到相关权限，请检查代码或在权限配置文件commons/utils/hasPermission.js文件进行修改或增加')
	}
	// const loginType=uni.getStorageSync('loginType')
	// if(loginType=='merchant'){
	// 	return true
	// }
	// params = returnFormatParams(params)
	// if (!params) {
	// 	return infoBox.showToast('未找到相关权限，请检查代码或在权限配置文件commons/utils/hasPermission.js文件进行修改或增加')
	// }
	// const option = Object.assign({
	// 	tips: true,
	// 	key: '',
	// 	text: ''
	// }, params)
	// const res = await $hasPermission({
	// 	code: params.key
	// })
	// if (!res && option.tips) {
	// 	infoBox.showToast('您没有' + params.text + '权限！')
	// }
	// return res
}

