import { defineStore } from 'pinia'; import { ref } from 'vue'; import { APIuserlogin, APIuser } from '@/common/api/api.js' import { APIproductqueryShop, APIshopUserInfo } from '@/common/api/member.js' export const Storelogin = defineStore('login', { state: () => ({ token: '', miniAppOpenId: '', userInfo: '' }), actions: { actionslogin() { return new Promise(async (resolve, reject) => { // #ifdef MP-WEIXIN uni.login({ provider: 'weixin', success: (data) => { // 微信小程序环境 uni.getUserInfo({ provider: 'weixin', success: async (infoRes) => { let res = await APIuserlogin({ code: data.code, //临时登录凭证 rawData: infoRes.rawData, source: 'wechat' }) if (res) { this.token = res.token this.miniAppOpenId = res.userInfo .miniAppOpenId this.userInfo = res.userInfo uni.cache.set('token', res.token); uni.cache.set('userInfo', res.userInfo); } resolve(true); }, fail: (err) => { reject(false); } }); } }); // #endif // #ifdef MP-ALIPAY my.getAuthCode({ scopes: 'auth_base', success: async (data) => { // 支付宝小程序环境 // my.getAuthUserInfo({ // success: async (infoRes) => { let res = await APIuserlogin({ code: data.authCode, //临时登录凭证 // rawData: JSON.stringify(infoRes), source: 'alipay' }) if (res) { this.token = res.token this.miniAppOpenId = res.userInfo.miniAppOpenId this.userInfo = res.userInfo uni.cache.set('token', res.token); uni.cache.set('openId', res.userInfo .alipayOpenId) uni.cache.set('userInfo', res.userInfo); resolve(true); } }, fail: () => { reject(false); } }) // #endif }) } } }); export const productStore = defineStore('product', { actions: { getQueryString(url, name) { //解码 var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i') var r = url.substr(1).match(reg) if (r != null) { return r[2] } return null; }, // 扫码请求 scanCodeactions(q) { return new Promise(async (resolve, reject) => { if (q) { // #ifdef MP-WEIXIN let tableCode = this.getQueryString(decodeURIComponent(q), 'code') // #endif // #ifdef MP-ALIPAY let tableCode = q // #endif // 储存卓玛 uni.cache.set('tableCode', tableCode) if (tableCode) { let data = await this.actionsproductqueryShop() // -4请求登录 const store = Storelogin() if (data.code == '-4') { if (await store.actionslogin()) { // 成功 接着在调用 await this.actionsproductqueryShop() } } // 是否免除桌位费 0否1是 if (uni.cache.get('shopInfo').isTableFee == 0) { uni.pro.navigateTo('product/choosetable') } else { uni.pro.navigateTo( 'product/index', { tableCode: tableCode, }) } } } else { // #ifdef APP || MP-WEIXIN || MP-ALIPAY uni.scanCode({ success: async (res) => { let tableCode = this.getQueryString( decodeURIComponent(res.result), 'code') // 储存卓玛 uni.cache.set('tableCode', tableCode) if (tableCode) { let data = await this.actionsproductqueryShop() // -4请求登录 const store = Storelogin() if (data.code == '-4') { if (await store.actionslogin()) { // 成功 接着在调用 await this.actionsproductqueryShop() } } // 是否免除桌位费 0否1是 if (uni.cache.get('shopInfo').isTableFee == 0) { uni.pro.navigateTo('product/choosetable') } else { uni.pro.navigateTo( 'product/index', { tableCode: tableCode, }) } } }, fail: (res) => { console.log(res) } }); // #endif } // #ifdef H5 if (uni.cache.get('tableCode')) { let data = await this.actionsproductqueryShop() // -4请求登录 const store = Storelogin() if (data.code == '-4') { if (await store.actionslogin()) { // 成功 接着在调用 await this.actionsproductqueryShop() } } // idle-空闲 using-使用中 subscribe预定,closed--关台, opening 开台中,cleaning 台桌清理中 if (uni.cache.get('shopTable').status == 'cleaning' || uni.cache.get( 'shopTable').status == 'cleaning') { uni.showToast({ title: '此台桌暂不可用...', icon: 'none' }) return false; } if (uni.cache.get('shopInfo').isTableFee == 0) { uni.pro.navigateTo('product/choosetable') } else { uni.pro.navigateTo('product/index', { tableCode: uni.cache.get('tableCode'), }) } } // #endif }) }, // /通过桌码获取当前店铺信息 actionsproductqueryShop() { return new Promise(async (resolve, reject) => { // try { let res = await APIproductqueryShop({ tableCode: uni.cache.get('tableCode'), }) res.shopInfo.isVip = res.vip ? '1' : '0' res.shopTable.shopExtendMap = res.shopExtendMap // 店铺信息 uni.cache.set('shopTable', res.shopTable) // 台桌信息 uni.cache.set('shopInfo', res.shopInfo) uni.cache.set('shopId', res.shopTable.shopId, 30) // 当前用户距离店铺的米数 uni.cache.set('distance', res.distance) resolve(res) // } catch (e) { // reject(false) // } }) }, // 通过shopId 获取店铺会员信息 actionsproductqueryProduct() { return new Promise(async (resolve, reject) => { try { let res = await APIshopUserInfo() uni.cache.set('shopUserInfo', res); uni.cache.set('orderVIP', res) uni.cache.set('ordershopUserInfo', res.shopInfo) resolve(true) } catch (e) { reject(false) } }) }, // 用户信息获取 actionsAPIuser() { return new Promise(async (resolve, reject) => { try { // 获取店铺用户会员信息 if (uni.cache.get('shopId')) { this.actionsproductqueryProduct() } else { let res = await APIuser() uni.cache.set('userInfo', res); } resolve(true) } catch (e) { reject(false) } }) } } });