// pages/login/login.ts
import { post } from '../../utils/request';
import { API } from '../../config/api';

Page({
  data: {
    loginLoading: false,
    agreed: false
  },

  onLoad() {
    // 检查是否已登录（检查token）
    const token = wx.getStorageSync('token');
    if (token) {
      wx.switchTab({
        url: '/pages/home/home'
      });
    }
  },

  // 同意协议
  onAgreeChange(e: any) {
    this.setData({
      agreed: e.detail.value.length > 0
    });
  },

  // 跳转到用户协议
  goToUserAgreement() {
    wx.navigateTo({
      url: '/pages/agreement/user-agreement/user-agreement'
    });
  },

  // 跳转到隐私政策
  goToPrivacyPolicy() {
    wx.navigateTo({
      url: '/pages/agreement/privacy-policy/privacy-policy'
    });
  },

  // 未同意协议时点击登录
  handleAgreeFirst() {
    if (this.data.loginLoading) return
    
    // 弹窗提示用户同意协议
    wx.showModal({
      title: '用户协议',
      content: '请阅读并同意《用户协议》和《隐私政策》后再登录',
      confirmText: '同意',
      cancelText: '不同意',
      success: (res) => {
        if (res.confirm) {
          // 用户点击了同意，勾选协议
          this.setData({ agreed: true });
        }
      }
    });
  },

  // 微信登录（已同意协议后触发）
  handleWechatLogin(e: any) {
    if (this.data.loginLoading) return
    
    // 检查用户是否授权了手机号
    if (e.detail.errMsg && e.detail.errMsg !== 'getPhoneNumber:ok') {
      // 用户拒绝授权手机号
      console.log('用户拒绝授权手机号:', e.detail.errMsg);
      wx.showToast({
        title: '需要授权手机号才能登录',
        icon: 'none',
        duration: 2000
      });
      return;
    }
    
    // 用户已授权手机号，直接登录
    this.performLogin(e.detail);
  },

  // 执行登录逻辑
  async performLogin(phoneDetail?: any) {
    
    this.setData({ loginLoading: true });

    try {
      // 1. 调用微信登录获取code
      const loginRes = await wx.login();
      
      if (!loginRes.code) {
        throw new Error('获取微信code失败');
      }

      // 2. 处理手机号（如果用户授权了）
      let phone = '';
      if (phoneDetail && phoneDetail.code) {
        // 用户授权了手机号，将 code 发送给后端解密
        phone = phoneDetail.code; // 这是加密的code，需要后端解密
      } else if (phoneDetail && phoneDetail.errMsg && phoneDetail.errMsg !== 'getPhoneNumber:ok') {
        // 用户拒绝授权手机号
        console.log('用户拒绝授权手机号');
      }

      // 3. 调用后端登录API
      const response = await post(API.auth.wechatLogin, {
        code: loginRes.code,
        phone_code: phone // 将手机号code发送给后端
      }, false);

      if (response.code === 200 && response.data) {
        // 保存token
        wx.setStorageSync('token', response.data.token);
        
        // 保存员工信息
        if (response.data.employee) {
          wx.setStorageSync('employeeInfo', response.data.employee);
          wx.setStorageSync('username', response.data.employee.name);
        }

        wx.showToast({
          title: '登录成功',
          icon: 'success',
          duration: 1500
        });

        setTimeout(() => {
          wx.switchTab({
            url: '/pages/home/home'
          });
        }, 1500);
      } else {
        throw new Error(response.message || '登录失败');
      }
    } catch (error: any) {
      console.error('登录失败:', error);
      
      this.setData({ loginLoading: false });
      
      wx.showToast({
        title: error.errMsg || error.message || '登录失败',
        icon: 'none'
      });
    }
  }
})
