// 导入TDesign弹窗
import Toast from 'tdesign-miniprogram/toast/index';
const app = getApp();//新建页面时 默认引入
const req = app.simpleReq();//初始化一个的request() 实例
// 导入RSA加密包
import WxmpRsa from 'wxmp-rsa'

Page({
    data: {
        showFail: false
    },
    // 此处为周期事件
    /**
     * 生命周期函数--监听页面加载
     */
    closeShowFail(){
        this.setData({
            showFail: false
        })
    },

    onLoad(options) {
        // 绑定情侣时为未登入状态
        if (options.loveMac) {
            this.setData({
                showFail: true
            })
        }

        if(options&&options.sn&&options.sn!=null&&options.sn!=''){
            console.log('有数据'+options.sn)
            wx.showToast({
                title:options.sn,
                icon: 'none',
                duration: 5000
            })
            this.login('nfc',options.sn)
        }else{
            console.log('无数据')
        }
    },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },
    /*---------------------------------------------*/
    //以下为自定义事件
    /**跳转到获取晶石页面 */
    go2Get(){
        // wx.navigateTo({
        //     url: '/pages/index/out/out'
        //     })
        console.log('跳转获取晶石页面');
    },
    /**
     * 登录失败提示
     */
    loginErrorToast(mode) {
        Toast({
          context: this,
          selector: '#t-toast',
          message: mode=='scan'?'扫码登录失败\n 二维码有误':'精灵链接失败\n 请再试一次',
          theme: 'error',
          direction: 'column',
        });
    },
    /**扫码事件 */
    scanCodeEvent(){
        //扫码代码
        wx.scanCode({
            onlyFromCamera: true,// 只允许从相机扫码
            success: (res) => {
                this.login('scan',res.result)
            },
        })
    },

    /**
     * 登录事件,
     * mode为模式参数，scan为扫码，nfc为nfc模式
     * code为用户码参数，用户码为空则代表为扫码登录
     */
    login(mode,code){
        let DEV_CODE = code
        let PUBLIC_KEY = ""
        req.getRequest('/api/dict/value/login-public-key',{}).then((res)=>{
            if(res.data.code === 200){
                //获取公钥成功
                PUBLIC_KEY = res.data.data        
                // 实例化rsa
                const rsa = new WxmpRsa()
                // 设置公钥
                rsa.setPublicKey(PUBLIC_KEY)
                // 加密
                const mac = rsa.encryptLong(DEV_CODE)
                wx.setStorageSync('mac-key', mac)

                // 此处执行登录获取token操作
                req.postRequest('/api/user/login',{'mac':mac}).then((res)=>{
                    if(res.data.code === 200){
                        wx.setStorageSync('token', res.data.data.token)
                        wx.setStorageSync('isFirst', res.data.data.isFirst)
                        // 设置当前设备码
                        wx.setStorageSync('code', DEV_CODE)
                        // 设置为初次识别NFC
                        wx.setStorageSync('nfc', false)
                        // 判断用户是否有未读信札
                        this.getLetter()
                    }else if(res.data.code==500){
                        this.loginErrorToast(mode)
                    }else{
                        this.loginErrorToast(mode)
                    } 
                }
            )
            }else{
              wx.showToast({
                  title:'扫码失败，请确认您的二维码是否正确！',
                  icon: 'none',
                  duration: 1000
                })
            }
           }).catch((err)=>{
                console.log(err);
           })
    },

    // 判断是否用未读信札
    getLetter(){
        wx.request({
            url: 'https://xzjl-api.windymuse.cn/api/user/curt',
            header: {'Authorization': wx.getStorageSync('token')},
            method: 'GET',
            success: res => {
                const letterStatus = res.data.data.letterStatus
                // 这里可以判断是否有未读信札
                if (letterStatus === 'sending') {
                    wx.redirectTo({
                        url: '/pages/xz/index'
                    })
                }else {
                    wx.switchTab({
                        url: '/pages/home/xy/index'
                    })
                }
            }
        })
    }
})