<script>
import initApp from "@/util/router.js";
import {interceptor} from "@/util/interceptor";
import {baseURL,apiURL,cffpURL,companyInfo} from "@/environments/environment";
import api from './api/api';
export default {
  data() {
    return {
      invitationHandled: false // 在data中明确定义
    }
  },
  onLaunch: function() {
    console.log('App Launch');
    if(!uni.getStorageSync('loginType')){
      uni.clearStorageSync();
      uni.setStorageSync('loginType','visitor');
    }
    // 处理外部链接参数
    this.handleExternalUrlParams();
    // #ifdef APP-PLUS
    plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {
      uni.getSystemInfo({
        success:(systemInfo)=> {
          uni.request({
            url: `${apiURL}/appVersion/checkIsUpdate`,
            method:'POST',
            data: {
              appType: 1,
              version: wgtinfo.version,
              systemType:systemInfo.osName.toLowerCase() === 'ios' ? 2 : 1
            },
            success: (result) => {
              const data = result.data.data['appVersionInfo'];
              if (data.status==1 && data.isForceUpdate && data.wgtUrl) {
                uni.downloadFile({
                  url: `${baseURL}${data.wgtUrl}`,
                  success: (downloadResult) => {
                    if (downloadResult.statusCode === 200) {
                      plus.runtime.install(downloadResult.tempFilePath, {
                        force: true
                      }, function() {
                        plus.runtime.restart();
                      }, function(e) {
                        console.error('install fail...');
                      });
                    }
                  }
                });
              }
            }
          });
        }
      })
    })
    // #endif
    interceptor();
    initApp();
  },

  onShow: function(options) {
    console.log('App Show', options);
    // 每次进应用显示时检查用户状态
    this.checkUserStatus();
    // App平台从options获取参数
    // #ifdef APP-PLUS
    if(options && options.query) {
      this.saveUrlParams(options.query);
    }
    // #endif
  },
  onHide: function() {
    console.log('App Hide')
  },
  methods: {
    // 检查用户状态的方法
    async checkUserStatus() {
      // 只有已登录用户才需要检查
      if(uni.getStorageSync('loginType') == 'codelogin' && uni.getStorageSync('cffp_userId')) {
        try {
          const res = await api.queryInfo({userId: uni.getStorageSync('cffp_userId')});
          if(!res['success']) {
            // 用户已注销，清除缓存
            this.clearLoginState();

            // 如果不是在白名单页面，跳转到登录页
            const pages = getCurrentPages();
            if(pages.length > 0) {
              const currentRoute = pages[pages.length - 1].route;
              console.log('currentRoute',currentRoute);
              const whiteList = [
                '/myPackageA/login/login',
                '/pages/invitationRegister/invitationlogin',
                '/myPackageA/applyFranchise/applyFranchise',
                '/pages/applyFranchise/applyFranchise',
                '/myPackageA/ruleAndContract/clause',
                '/pages/courselist/courselist',
                '/pages/courseDetail/courseDetail',
                '/pages/orderDetail/orderDetail',
                '/pages/orderStatus/orderStatus',
                '/pages/index/index'
              ]; // 分号结束
              if(!whiteList.includes(currentRoute)) {
                uni.navigateTo({
                  url: '/myPackageA/login/login'
                });
              }
            }
          }
          if (res['success']) {
            const cffp_userInfo = {
              name: res['data']['realName'],
              mobile: res['data']['mobile'],
              partnerType:res['data']['partnerType'],
              nickName:res['data']['nickName'],
            }
            uni.setStorageSync('cffp_userInfo', JSON.stringify(cffp_userInfo))
          }
        } catch (err) {
          console.error('检查用户状态失败:', err);
        }
      }
    },
    // 清除登录状态
    clearLoginState() {
      uni.clearStorageSync();
      uni.setStorageSync('loginType', 'visitor');
    },
    // 处理外部链接参数
    handleExternalUrlParams() {
      // #ifdef H5
      this.handleH5UrlParams();
      // #endif

      // #ifdef APP-PLUS
      this.handleAppUrlParams();
      // #endif
    },

    // 处理H5平台的URL参数
    handleH5UrlParams() {
      const url = window.location.href;
      if(url.indexOf('?') > -1) {
        const queryString = url.split('?')[1];
        const params = this.parseQueryString(queryString);
        this.saveUrlParams(params);
      }
    },

    // 处理App平台的URL参数
    handleAppUrlParams() {
      // 处理冷启动参数
      plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
        const args = plus.runtime.arguments;
        if(args) {
          const params = this.parseAppLaunchArgs(args);
          this.saveUrlParams(params);
        }
      });

      // 监听热启动事件
      plus.runtime.addEventListener('newintent', (e) => {
        const args = e.arguments;
        if(args) {
          const params = this.parseAppLaunchArgs(args);
          this.saveUrlParams(params);
        }
      });
    },

    // 解析H5的查询字符串
    parseQueryString(queryString) {
      const params = {};
      const pairs = queryString.split('&');
      for(let i = 0; i < pairs.length; i++) {
        const pair = pairs[i].split('=');
        if(pair.length === 2) {
          params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');
        }
      }
      return params;
    },

    // 解析App启动参数
    parseAppLaunchArgs(args) {
      // 处理 scheme://path?key=value 格式
      if(args.indexOf('?') > -1) {
        const queryString = args.split('?')[1];
        return this.parseQueryString(queryString);
      }
      return {};
    },

    // 保存URL参数到本地存储
    saveUrlParams(params) {
      if(Object.keys(params).length > 0) {
        console.log('获取到外部链接参数:', params);
        try {
          if(params.addSystemType){
            uni.setStorageSync('addSystemType', params.addSystemType);
          }
        } catch(e) {
          console.error('存储外部链接参数失败:', e);
        }
      }
    }
  }
}
</script>

<style>
@import "@/static/font1/iconfont.css";
@import "@/static/font/iconfont.css";

/* 基础样式 */
.iconfont{
  font-family:"iconfont" !important;
  font-size:16px;
  font-style:normal;
  -webkit-font-smoothing: antialiased;
  -webkit-text-stroke-width: 0.2px;
  -moz-osx-font-smoothing: grayscale;
}
image{
  width: 100%!important;
}

/* 容器样式 */
.container {
  background-color: rgba(235, 239, 247, 1);
  min-height: 100vh;
  height: auto !important;
  width: 100%;
  max-width: 100%;
  margin: 0 auto;
  padding: 0;
  box-sizing: border-box;
  font-size: 28rpx;
}

/* 响应式设计 */
@media (min-width: 768px) and (max-width: 1023px) and (orientation: landscape) {
  .container {
    max-width: 1024px;
    display: flex;
    align-items: center;
    flex-direction: column;
  }
}

@media (min-width: 1024px) and (max-width: 1279px) {
  .container {
    max-width: 1000px;
  }
}

@media (min-width: 1280px) {
  .container {
    max-width: 1200px;
  }
}

/* 弹窗样式 */
.uni-popup .uni-popup__wrapper{
  border-radius: 30rpx;
}
.popupContainer .uni-popup .uni-popup__wrapper{
  /* 弹窗样式 */
}

/* 组件样式 */
.richTextContent img{
  width: 100% !important;
}
.container uni-slider{
  margin: 0;
}
.container uni-slider .uni-slider-value{
  text-align: right;
}
.noListTip{
  text-align: center;
  margin-top: 10%;
  color: #999;
}
.container uni-slider .uni-slider-value{
  width: 5ch;
}
.btn{
  background: #3671F4;
  color: #fff;
  width: 60%;
  margin: 0 auto;
  height: 80rpx;
  line-height: 80rpx;
  text-align: center;
  border-radius: 40rpx;
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
}
.uni-calendar-item--extra{
  white-space: nowrap !important;
}
.zuojiantou{
  display: inline-block;
  transform: rotate(180deg)!important;
  font-size: 30rpx;
  z-index: 1;
  position: absolute;
  left: 20rpx;
  width: 50rpx;
  height: 50rpx;
  text-align: center;
  line-height: 50rpx;
}
.iconStyle{
  color: rgba(51, 51, 51, 1);
  font-size: 28rpx;
}
.commonTitle{
  font-size: 30rpx;
}
</style>
