import {useEffect, useState} from "react";
import Taro from '@tarojs/taro';
import {Space} from '@nutui/nutui-react-taro'
import {NavBar} from '@nutui/nutui-react-taro'
import {getWxOpenId} from "@/api/layout";
// import {TenantId} from "@/config/app";
import {getOrganization} from "@/api/system/organization";
import {myUserVerify} from "@/api/system/userVerify";
import {useShopInfo} from '@/hooks/useShopInfo';
import {useUser} from '@/hooks/useUser';
// import {handleInviteRelation} from "@/utils/invite";
import {View, Text} from '@tarojs/components'
import MySearch from "./MySearch";
import './Header.scss';
import navTo from "@/utils/common";
import UnifiedQRButton from "@/components/UnifiedQRButton";
import {getShopDealerRefereeByUserId} from "@/api/shop/shopDealerReferee";

const Header = (props: any) => {
  // 使用新的useShopInfo Hook
  const {
    getWebsiteName
  } = useShopInfo();

  // 使用useUser Hook管理用户状态
  const {
    user,
    isLoggedIn,
    fetchUserInfo
  } = useUser();

  const [statusBarHeight, setStatusBarHeight] = useState<number>()

  const reload = async () => {
    Taro.getSystemInfo({
      success: (res) => {
        setStatusBarHeight(res.statusBarHeight)
      },
    })

    // 检查用户是否已登录并且有头像和昵称
    if (isLoggedIn) {
      const hasAvatar = user?.avatar || Taro.getStorageSync('Avatar');
      const hasNickname = user?.nickname || Taro.getStorageSync('Nickname');

      if (!hasAvatar || !hasNickname) {
        Taro.showToast({
          title: '您还没有上传头像和昵称',
          icon: 'none'
        })
        setTimeout(() => {
          Taro.navigateTo({
            url: '/user/profile/profile'
          })
        }, 3000)
        return false;
      }
    }

    // 如果已登录，获取最新用户信息
    if (isLoggedIn) {
      try {
        const data = await fetchUserInfo();
        if (data) {
          console.log('用户信息>>>', data.phone)
          // 获取openId
          if (!data.openid) {
            Taro.login({
              success: (res) => {
                getWxOpenId({code: res.code}).then(() => {
                })
              }
            })
          }
          // 是否已认证
          if (data.certification) {
            Taro.setStorageSync('Certification', '1')
          }
          // 机构ID
          Taro.setStorageSync('OrganizationId', data.organizationId)
          // 父级机构ID
          if (Number(data.organizationId) > 0) {
            getOrganization(Number(data.organizationId)).then(res => {
              Taro.setStorageSync('OrganizationParentId', res.parentId)
            })
          }
          // 管理员
          const isKdy = data.roles?.findIndex(item => item.roleCode == 'admin')
          if (isKdy != -1) {
            Taro.setStorageSync('RoleName', '管理')
            Taro.setStorageSync('RoleCode', 'admin')
            return false;
          }
          // 注册用户
          const isUser = data.roles?.findIndex(item => item.roleCode == 'user')
          if (isUser != -1) {
            Taro.setStorageSync('RoleName', '注册用户')
            Taro.setStorageSync('RoleCode', 'user')
            return false;
          }
          // 认证信息
          myUserVerify({status: 1}).then(data => {
            if (data?.realName) {
              Taro.setStorageSync('RealName', data.realName)
            }
          })
        }
      } catch (error) {
        console.error('获取用户信息失败:', error)
      }
    }
    // 查找上级推荐人
    if(Taro.getStorageSync('UserId')){
      const dealer = await getShopDealerRefereeByUserId(Taro.getStorageSync('UserId'))
      if(dealer){
        Taro.setStorageSync('DealerId', dealer.dealerId)
        Taro.setStorageSync('Dealer', dealer)
      }
    }

  }

  /* 获取用户手机号 */
  // const handleGetPhoneNumber = ({detail}: { detail: { code?: string, encryptedData?: string, iv?: string } }) => {
  //   const {code, encryptedData, iv} = detail
  //   Taro.login({
  //     success: (loginRes) => {
  //       if (code) {
  //         Taro.request({
  //           url: 'https://server.websoft.top/api/wx-login/loginByMpWxPhone',
  //           method: 'POST',
  //           data: {
  //             authCode: loginRes.code,
  //             code,
  //             encryptedData,
  //             iv,
  //             notVerifyPhone: true,
  //             refereeId: 0,
  //             sceneType: 'save_referee',
  //             tenantId: TenantId
  //           },
  //           header: {
  //             'content-type': 'application/json',
  //             TenantId
  //           },
  //           success: async function (res) {
  //             if (res.data.code == 1) {
  //               Taro.showToast({
  //                 title: res.data.message,
  //                 icon: 'error',
  //                 duration: 2000
  //               })
  //               return false;
  //             }
  //             // 登录成功
  //             const token = res.data.data.access_token;
  //             const userData = res.data.data.user;
  //
  //             // 使用useUser Hook的loginUser方法更新状态
  //             loginUser(token, userData);
  //
  //             // 处理邀请关系
  //             if (userData?.userId) {
  //               try {
  //                 const inviteSuccess = await handleInviteRelation(userData.userId)
  //                 if (inviteSuccess) {
  //                   Taro.showToast({
  //                     title: '邀请关系建立成功',
  //                     icon: 'success',
  //                     duration: 2000
  //                   })
  //                 }
  //               } catch (error) {
  //                 console.error('处理邀请关系失败:', error)
  //               }
  //             }
  //
  //             // 显示登录成功提示
  //             Taro.showToast({
  //               title: '登录成功',
  //               icon: 'success',
  //               duration: 1500
  //             })
  //
  //             // 不需要重新启动小程序，状态已经通过useUser更新
  //             // 可以选择性地刷新当前页面数据
  //             reload();
  //           }
  //         })
  //       } else {
  //         console.log('登录失败！')
  //       }
  //     }
  //   })
  // }

  useEffect(() => {
    reload().then()
  }, [])

  // 监听用户信息变化，当用户信息更新后重新检查
  useEffect(() => {
    if (isLoggedIn && user) {
      console.log('用户信息已更新:', user);
      // 检查是否设置头像和昵称
      if (user.nickname === '微信用户') {
        Taro.showToast({
          title: '请设置头像和昵称',
          icon: 'none'
        })
        setTimeout(() => {
          Taro.navigateTo({
            url: '/user/profile/profile'
          });
        }, 2000)
      }
    }
  }, [user, isLoggedIn])

  return (
    <>
      <View className={'fixed top-0 header-bg'} style={{
        height: !props.stickyStatus ? '180px' : '148px',
      }}>
        <MySearch/>
        {/*{!props.stickyStatus && <MySearch done={reload}/>}*/}
      </View>
      <NavBar
        style={{marginTop: `${statusBarHeight}px`, marginBottom: '0px', backgroundColor: 'transparent'}}
        onBackClick={() => {
        }}
        left={
          <Space>
            {/*统一扫码入口 - 支持登录和核销*/}
            <UnifiedQRButton
              size="small"
              onSuccess={(result) => {
                console.log('统一扫码成功:', result);
                // 根据扫码类型给出不同的提示
                if (result.type === 'verification') {
                  // 核销成功，可以显示更多信息或跳转到详情页
                  Taro.showModal({
                    title: '核销成功',
                    content: `已成功核销的品类：${result.data.goodsName || '礼品卡'}，面值￥${result.data.faceValue}`
                  });
                }
              }}
              onError={(error) => {
                console.error('统一扫码失败:', error);
              }}
            />
          </Space>
        }
      >
        {isLoggedIn ? (
          <Space onClick={() => navTo(`/user/profile/profile`, true)}>
            <Text className={'text-white'}>{getWebsiteName()}</Text>
          </Space>
        ) : (
          <View style={{display: 'flex', alignItems: 'center'}}>
            <Text className={'text-lg'} style={{color: '#ffffff'}}>{getWebsiteName()}</Text>
          </View>
        )}
      </NavBar>
    </>
  )
}
export default Header
