// 引用vuex
import store from '@/store/index.js';
// 小程序登录
export default function appLogin(options, hasLogin = false) {
	return new Promise((resolve, reject) => {
		// 如果没有登录过
		if (!hasLogin) {
			// 登录
			getLogin();
		} else {
			// 如果参数不为空
			if (options.clientId) {
				// 处理参数
				handleScanOpts(options);
			} else {
				resolve(true);
			}
		}
		async function getLogin() {
			// 调用登录
			const isGetOpenId = await store.dispatch('ACTI_GETOPENID');
			if (isGetOpenId) {
				// 如果参数不为空
				if (options.clientId) {
					// 处理参数
					handleScanOpts(options);
				} else {
					resolve(true);
				}
			} else {
				resolve(true);
			}
		};
		/*
		*处理步骤：
		*1、有机器码，调用接口查询机器开机状态
		*2、如果存在优惠券，检查优惠券有没有领取过了
		*3、如果没有领取过，调用接口查询优惠券列表
		*/
		// 处理参数
		async function handleScanOpts(options) {
			const {
				clientId,
				flag
			} = options;
			if (clientId) {
				// 储存机器编码
				await store.commit('MUTA_SETCLIENTID', clientId);
				// 查看机器的开机状态
				const equipStatus = await store.dispatch('ACTI_SETCLIENTSTATUS', clientId);
				// 调用开机接口成功
				if (equipStatus) {
					// 如果存在优惠券
					if (flag) {
						// 储存优惠券
						await store.commit('MUTA_SETCOUPON', flag);
						// 查询用户有没有领取过优惠券
						const hasReceCoup = await store.dispatch('ACTI_HASRECECOUP');
						if (hasReceCoup) {
							// 获取优惠券列表
							const hasCoupList = await store.dispatch('ACTI_SETCOUPONLIST');
							if (hasCoupList) {
								resolve(true);
							} else {
								resolve(true);
							}
						} else {
							resolve(true);
						}
					} else {
						resolve(true);
					}
				} else {
					resolve(true);
				}
			}
		}
	});
}
