<script>
	import Vue from 'vue'
    import BASE_URL from './config.js'
    import {mapActions} from 'vuex'
	export default {
		onLaunch: function() {
			uni.getSystemInfo({
				success: function(e) {
					// #ifndef MP
					Vue.prototype.StatusBar = e.statusBarHeight;
					if (e.platform == 'android') {
						Vue.prototype.CustomBar = e.statusBarHeight + 50;
					} else {
						Vue.prototype.CustomBar = e.statusBarHeight + 45;
					};
					// #endif

					// #ifdef MP-WEIXIN
					Vue.prototype.StatusBar = e.statusBarHeight;
					let custom = wx.getMenuButtonBoundingClientRect();
					Vue.prototype.Custom = custom;
					Vue.prototype.CustomBar = custom.bottom + custom.top - e.statusBarHeight;
					// #endif

					// #ifdef MP-ALIPAY
					Vue.prototype.StatusBar = e.statusBarHeight;
					Vue.prototype.CustomBar = e.statusBarHeight + e.titleBarHeight;
					// #endif
				}
			})

			Vue.prototype.ColorList = [{
					title: '嫣红',
					name: 'red',
					color: '#e54d42'
				},
				{
					title: '桔橙',
					name: 'orange',
					color: '#f37b1d'
				},
				{
					title: '明黄',
					name: 'yellow',
					color: '#fbbd08'
				},
				{
					title: '橄榄',
					name: 'olive',
					color: '#8dc63f'
				},
				{
					title: '森绿',
					name: 'green',
					color: '#39b54a'
				},
				{
					title: '天青',
					name: 'cyan',
					color: '#1cbbb4'
				},
				{
					title: '海蓝',
					name: 'blue',
					color: '#0081ff'
				},
				{
					title: '姹紫',
					name: 'purple',
					color: '#6739b6'
				},
				{
					title: '木槿',
					name: 'mauve',
					color: '#9c26b0'
				},
				{
					title: '桃粉',
					name: 'pink',
					color: '#e03997'
				},
				{
					title: '棕褐',
					name: 'brown',
					color: '#a5673f'
				},
				{
					title: '玄灰',
					name: 'grey',
					color: '#8799a3'
				},
				{
					title: '草灰',
					name: 'gray',
					color: '#aaaaaa'
				},
				{
					title: '墨黑',
					name: 'black',
					color: '#333333'
				},
				{
					title: '雅白',
					name: 'white',
					color: '#ffffff'
				},
			]

		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		},
        created: async function() {
            // 获取 URL 中的 code 参数
            const urlParams = new URLSearchParams(window.location.search);
            const code = urlParams.get('code');

            console.log('传入 code -------');
            console.log(code);

            if (code) {
                try {
                    // 发起请求获取用户信息
                    const [err, res] = await uni.request({
                        url: BASE_URL + `/flowable-server/app/proxy?appid=wxa79f618dcaf992f7&secret=24f99f0d9ed67b9078cd545be50f9ccb&code=` + code,
                        method: 'GET'
                    });

                    if (res && res.statusCode === 200) {
                        console.log('用户信息获取成功-----------');
                        const data = res.data;
                        console.log(data);
                        console.log(data.openId);
                        // 将微信用户的 openId 存到本地
                        uni.setStorageSync('openId', data.openId);
                        console.log('getStorageSync-> ', uni.getStorageSync('openId'));
                    } else {
                        console.error('获取用户信息失败：', res.data);
                    }
                } catch (err) {
                    console.error('请求失败：', err);
                }
            }

            // 判断当前微信号的openId 是否已经存入到数据库了，如果存入了，那么就直接通过openId匹配登录，否则就进入登录页面
            const flag = true;
            const localOpenId = uni.getStorageSync('openId');
            if (localOpenId) {
                try {
                    // 发起请求获取库中的openId
                    const [err, res] = await uni.request({
                        url: BASE_URL + `/system-server/sys/user/allOpenIds`,
                        method: 'GET'
                    });

                    if (res && res.statusCode === 200) {
                        const data = res.data;
                        console.log('allOpenIds:', data);
                        // 确保 data 是数组
                        if (Array.isArray(data) && data.includes(localOpenId)) {
                            // 包含的话，则直接根据 openId来实现登录
                            console.log(`data 包含 openId: ${localOpenId}`);
                            const [err, res] = await uni.request({
                                url: BASE_URL + `/auth-server/user/sys/wxLogin`,
                                method: 'POST',
                                data: { openId: localOpenId },
                                header: {
                                    'domain': 'ydddl'
                                }
                            });
                            if (res && res.statusCode === 200) {
                                this.$store.commit('SET_TOKEN',res.data.token);
                                await this.refreshUserInfo();
                                uni.reLaunch({
                                    url: '../index/index',
                                });
                            }
                        }
                    }
                } catch (err) {
                    console.error('请求失败：', err);
                }
            }

            if (flag) {
                console.log('进来了');
            }

            // 获取 URL 中的 'flow' 参数
            const flowParam = this.$route.query.flow;
            // 将 URL 编码的 'flow' 参数解析为 JSON 对象
            const flowObject = JSON.parse(decodeURIComponent(flowParam));
            console.log("flowObject.openId---> ", flowObject.openId)
            if (flowObject.openId) {
                const [err, res] = await uni.request({
                    url: BASE_URL + `/auth-server/user/sys/wxLogin`,
                    method: 'POST',
                    data: { openId: flowObject.openId },
                    header: {
                        'domain': 'ydddl'
                    }
                });
                if (res && res.statusCode === 200) {
                    this.$store.commit('SET_TOKEN',res.data.token);
                    await this.refreshUserInfo();
                }
            }

        },
        methods: {
            ...mapActions(['refreshUserInfo']),
        }

	}
</script>

<style lang="scss">
	/*每个页面公共css */
	@import "@/uni_modules/uview-ui/index.scss";
	@import "static/css/jeeplus.scss";
	/* @import 'jeeplus-flowable/lib/jeeplus-flowable.css'; */
	@import "static/css/main.css";
	@import "static/css/icon.css";
	/*每个页面公共css */
</style>
