const app = getApp();

Page({
  data: {
    inputValue: '',          // 输入框的内容
    detectResult: '',        // 识别结果
    detectType: 'text',      // 默认识别类型为文本
    maxLength: 20000,        // 最大允许的字节数
    inputLength: 0,          // 当前输入的字节数
    task_id: '',             // 任务ID
    detectButtonDisabled: false,  // 文本检测按钮是否禁用
    modifyButtonDisabled: false   // 智能修改按钮是否禁用
  },

  onLoad: function(e) {
    wx.showShareMenu({
      withShareTicket: true,
      menus: ["shareAppMessage", "shareTimeline"]
    });
  },

  onShow: function() {
    var t = this;
    t.resetData()
    app.getCurrentTabbar(2, this);
    app.checkUpdateVersion();
    app.getUserInfo().then(() => {
      console.log('获取用户信息完成');
      console.log(wx.getStorageSync('defaultDailyFreeParseNum'));
      const rewrittenText = wx.getStorageSync('rewrittenText');  // 从缓存中获取存储的文案
      if (rewrittenText) {
        this.setData({
          inputValue: rewrittenText  // 设置到页面的数据中
        });
        wx.removeStorageSync('rewrittenText');  // 清除数据，避免下次重复加载
        wx.showToast({
          title: '点击开始检测按钮检测文本违规词。',
          icon: 'none'
        });
      }

    }).catch(error => {
      console.error('获取用户信息失败:', error);
    }).finally(() => {
      console.log('getUserInfo调用完成');
    });
  },
  resetData: function() {
    // 重置页面数据为默认值
    this.setData({
      inputValue: '',          // 输入框的内容
      detectResult: '',        // 识别结果
      detectType: 'text',      // 默认识别类型为文本
      inputLength: 0,          // 当前输入的字节数
      task_id: '',             // 任务ID
      detectButtonDisabled: false,  // 文本检测按钮是否禁用
      modifyButtonDisabled: false   // 智能修改按钮是否禁用
    });
  },
  // 切换识别类型
  switchDetectType(e) {
    const detectType = e.currentTarget.dataset.type;
    this.recordClick(detectType);
    this.setData({
      detectType,
      detectResult: '' // 切换时清空结果
    });

    if (detectType === 'audio' || detectType === 'video') {
      wx.showToast({
        title: '该功能正在开发中',
        icon: 'none'
      });
    } else {
      wx.showToast({
        title: '切换到文本识别',
        icon: 'none'
      });
    }
  },

  // 文本识别函数
  detectText() {
    const { inputValue, maxLength } = this.data;
    const byteSize = this.getByteLength(inputValue);

    // 检查文本是否为空或长度过短
    if (!inputValue.trim() || this.getByteLength(inputValue) < 10) {
      wx.showToast({
        title: '请输入有效的文本',
        icon: 'none'
      });
      return;
    }

    // 超出字节长度检测
    if (byteSize > maxLength) {
      wx.showToast({
        title: `内容不能超过 ${maxLength} 字节`,
        icon: 'none'
      });
      return;
    }

    // 禁用检测按钮
    this.setData({ detectButtonDisabled: true });

    wx.showLoading({
      title: '正在检测...',
    });

    // 调用后端审核接口
    app.apiRequest({
      url: '/myapp/text_review/',
      method: 'POST',
      data: {
        text: inputValue,
        openid: wx.getStorageSync('openid'),
        nickname: wx.getStorageSync('uuid')
      },
      success: (res) => {
        wx.hideLoading();
        this.setData({ detectButtonDisabled: false });  // 启用检测按钮
        if (res.data.code === 200) {
          // 审核成功
          this.setData({
            detectResult: res.data.data.result,
            task_id: res.data.task_id
          });
          console.log(res.data.data.result);
          wx.showToast({
            title: '检测成功',
            icon: 'success'
          });
          if (res.data.data.result.conclusion === '不合规') {
            wx.showModal({
              title: "提示",
              content: "检测结果不合规，是否使用智能合规功能一键修改文案？",
              confirmText: "一键修改",
              cancelText: "取消",
              success: (modalRes) => {
                if (modalRes.confirm) {
                  this.modifyContent();  // 调用一键合规函数
                }
              }
            });
          }
        } else if (res.data.code === 400 && res.data.message === '余额不足') {
          // 积分不足，提示充值
          wx.showModal({
            title: "检测文本",
            content: '创意点不足！',
            confirmColor: "#00B269",
            cancelColor: "#858585",
            success: function(e) {
              if (e.confirm) {
                console.log("确定");
                wx.navigateTo({
                  url: "../vip_recharge/vip_recharge?show=true"
                });
              } else {
                console.log("取消");
              }
            }
          });
        } else {
          // 其他失败情况
          wx.showToast({
            title: res.data.message || '检测失败，请稍后重试',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        wx.hideLoading();
        this.setData({ detectButtonDisabled: false });  // 启用检测按钮
        console.error('请求失败:', err);
        wx.showToast({
          title: '网络异常，请稍后重试',
          icon: 'none'
        });
      }
    });
  },

  // 计算文本的字节长度（区分中英文）
  getByteLength(text) {
    return text.replace(/[^\x00-\xff]/g, 'aa').length;
  },

  // 处理输入框内容变化
  bindInput(e) {
    const inputValue = e.detail.value;
    const inputLength = this.getByteLength(inputValue);

    // 更新输入内容和字节长度
    this.setData({
      inputValue,
      inputLength
    });

    // 如果字数超出最大限制，提示用户
    if (inputLength > this.data.maxLength) {
      wx.showToast({
        title: `已超出 ${this.data.maxLength} 字节`,
        icon: 'none'
      });
    }
  },

  // 复制内容
  copyContent() {
    wx.setClipboardData({
      data: this.data.inputValue,
      success() {
        wx.showToast({
          title: '内容已复制',
          icon: 'none'
        });
      }
    });
  },

  // 清空输入框内容
  clearInput() {
    wx.showModal({
      title: "提示",
      content: "确定要清空所有内容吗？",
      success: (res) => {
        if (res.confirm) {
          this.setData({
            inputValue: '',
            inputLength: 0,
            detectResult: ''
          });
          wx.showToast({
            title: '已清空内容',
            icon: 'none'
          });
        }
      }
    });
  },

  // 调用智能修改（AI合规）
  modifyContent() {
    // 禁用智能修改按钮
    this.setData({ modifyButtonDisabled: true });

    wx.showLoading({
      title: '正在修改...',
    });

    app.apiRequest({
      url: '/myapp/ai_modify_text/',
      method: 'POST',
      data: {
        task_id: this.data.task_id,
        openid: wx.getStorageSync('openid')
      },
      success: (res) => {
        wx.hideLoading();
        this.setData({ modifyButtonDisabled: false });  // 启用智能修改按钮
        if (res.data.code === 200) {
          // 修改成功
          this.setData({
            inputValue: res.data.data.modified_text,
            detectResult: '' // 清空检测结果
          });
          wx.showToast({
            title: '修改成功',
            icon: 'success'
          });
        }else if (res.data.code === 400 && res.data.message === '积分不足，请充值') {
          // 积分不足，提示用户充值并引导
          wx.showModal({
            title: "提示",
            content: "您的积分不足，无法进行智能修改，请充值后再尝试。",
            confirmText: "去充值",
            cancelText: "取消",
            success: (modalRes) => {
              if (modalRes.confirm) {
                wx.navigateTo({
                  url: "../vip_recharge/vip_recharge?show=true"
                });
              }
            }
          });
        } else {
          // 其他失败情况
          wx.showToast({
            title: res.data.message || '修改失败，请稍后重试',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        wx.hideLoading();
        this.setData({ modifyButtonDisabled: false });  // 启用智能修改按钮
        console.error('请求失败:', err);
        wx.showToast({
          title: '网络异常，请稍后重试',
          icon: 'none'
        });
      }
    });
  },

  // 记录点击的功能类型
  recordClick(functionClicked) {
    app.apiRequest({
      url: `/myapp/record_click/`, // 点击统计接口
      method: 'POST',
      data: {
        openid: wx.getStorageSync('openid'),
        nickname: wx.getStorageSync('uuid'),
        function_clicked: functionClicked
      },
      header: {
        'content-type': 'application/json'
      },
      success: (res) => {

      }
    });
  }

});
