import React, { Component } from 'react';
import { connect } from 'react-redux';
import { Link } from 'react-router-dom';
import { http, getParam, SendMessageToApp } from '@/utils';
import { Toast } from "antd-mobile";
import ListFrame from './../listFrame/index';
import ListHeader from './../listHeader';
import './index.scss';

@connect(({user})=> ({
  uid: user && user.data && user.data.uid ? user.data.uid :''
}))
class CollectBlessing extends Component {

  constructor(props) {
    super(props);
    this.state = {
      rules: [
        'app/h5/pc端活动页签到+5点福气值（每天一次）',
        '关注七月在线微信服务号+30点福气值（仅限一次）',
        '分享活动页到朋友圈、qq，分别+2点福气值（每个平台每天一次）',
        '浏览指定课程详情页，一门课程+2点福气值（每天一次）',
        '邀请好友注册，+10点福气值/人（无上限）',
        '活动期间每购买一门课程+20点福气值',
      ],
      welfareRuleList: [
        {
          range: '50~100',
          rules: [
            {id: 1, text: '1.每天一次抽奖机会；'},
            {id: 2, text: '2.中奖概率翻2倍', des: '（热力值越高，中奖概率越大）；'},
            {id: 3, text: '3.满111减11、满1111减111。'},
          ]
        },
        {
          range: '101~190',
          rules: [
            {id: 1, text: '1.每天两次抽奖机会；'},
            {id: 2, text: '2.中奖概率翻3倍', des: '（热力值越高，中奖概率越大）；'},
            {id: 3, text: '3.满111减31、满1111减211；'},
            {id: 4, text: '4.AI水平测试增加1次。'},
          ]
        },
        {
          range: '>190',
          rules: [
            {id: 1, text: '1.每天三次抽奖机会；'},
            {id: 2, text: '2.中奖概率翻4倍', des: '（热力值越高，中奖概率越大）；'},
            {id: 3, text: '3.满111减51、满1111减411；'},
            {id: 4, text: '4.AI水平测试增加2次。'},
          ]
        }
      ],
      seconds: 5,
    };
  }

  qqToShare = () => {
    const { uid, history } = this.props;
    if(getParam('version')) {
      if(!uid) {
        SendMessageToApp("toLogin");
      }else {
        SendMessageToApp("QQshare", {
          title: 'AI充电节，积福气享1折秒课，超10万元奖品来就送！！',
          desc: '把这门超5万人报名的【Python基础入门 升级版】课程送给你，附200元红包，请笑纳！--七月在线',
          link: 'https://m.julyedu.com/blessingPreheat',
          imgUrl: 'https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/index-share-img.png',
        });
      }
    }else {
      if(!uid) {
        history.push('/passport');
      }else {
        history.push('/blessingPreheat?utm_source=qq&utm_medium=11&utm_campaign=QQ11&utm_content=11&utm_term=11')
        this.fetchUserBlessing(3, () => {
          this.handleToAddBlessing(3);
        });
      }
    }
  }

  wechatToShare = () => {
    const { uid, history } = this.props;
    if(getParam('version')) {
      if(!uid) {
        SendMessageToApp("toLogin");
      }else {
        SendMessageToApp("WXshare", {
          title: 'AI充电节，积福气享1折秒课，超10万元奖品来就送！！',
          desc: '把这门超5万人报名的【Python基础入门 升级版】课程送给你，附200元红包，请笑纳！--七月在线',
          link: 'https://m.julyedu.com/blessingPreheat',
          imgUrl: 'https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/index-share-img.png',
        });
      }
    }else {
      if(!uid) {
        history.push('/passport');
      }else {
        history.push('/blessingPreheat?utm_source=1&utm_medium=1&utm_campaign=11&utm_content=1&utm_term=1');
        this.fetchUserBlessing(1, () => {
          this.handleToAddBlessing(1);
        });
      }
    }
  }

  weiboToShare = () => {
    const { uid, history } = this.props;
    if(getParam('version')) {
      if(!uid) {
        SendMessageToApp("toLogin");
      }else {
        SendMessageToApp("WBshare",  {
          title: 'AI充电节，积福气享1折秒课，超10万元奖品来就送！！',
          desc: '把这门超5万人报名的【Python基础入门 升级版】课程送给你，附200元红包，请笑纳！--七月在线',
          link: 'https://m.julyedu.com/blessingPreheat',
          imgUrl: 'https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/active19_1111/m/index-share-img.png',
        });
      }
    }else {
      if(!uid) {
        history.push('/passport');
      }else {
        history.push('/blessingPreheat?utm_source=sina&utm_medium=11&utm_campaign=sina11&utm_content=1&utm_term=11');
        this.fetchUserBlessing(2, () => {
          this.handleToAddBlessing(2);
        });
      }
    }
  }

  fetchUserBlessing(key, cb) {
    const { handleToShowShare } = this.props;
    let { seconds } = this.state;
    http.get(`${API.home}/sys/user/blessing`).then(res => {
      const { code, data } = res.data;
      if(code === 200) {
        if(data.today_shared_platforms.some(item => item === key)) {
          handleToShowShare();
          Toast.info('今日已分享，记得明天来~', 2, null, false);
        }else {
          handleToShowShare();
          this.shareTimer = setInterval(() => {
            this.setState(
              {
                seconds: (--seconds)
              },
              () => {
                if (seconds === 0) {
                  typeof cb === 'function' && cb();
                  clearInterval(this.shareTimer);
                }
              }
            );
          }, 1000);
        }
      }
    });
  }

  handleToAddBlessing = (key) => {
    http.post(`${API.home}/sys/add/blessing`, {
      share_platform: key, // 1 朋友圈 2 微博 3 qq
      type: 3 // 1：签到；3：分享；4：浏览课程；
    }).then(res => {
      const {code } = res.data;
      if (code === 200) {
        Toast.info('+2点福气值~', 2, null, false);
      }
    });
  }

  handleToInvite = () => {
    const { uid, history } = this.props;
    if(!uid) {
      if(getParam('version')) {
        SendMessageToApp("toLogin");
      }else {
        history.push('/passport')
      }
    }else {
      if(getParam('version')) {
        history.push('/invite?version=' + getParam('version'))
      } else {
        history.push('/invite')
      }
    }
  }

  render() {
    const {
      isSign,
      userInfo: {blessingVal = 0, buyBlessing = 0, inviteBlessing = 0, isFollow = 0 },
      isLogin,
      handleToShowNotice,
      handleToShowList,
      toLogin,
      toSection
    } = this.props;
    const { rules, welfareRuleList, seconds } = this.state;
    return (
      <div className="collect-blessing">
        {
          isLogin
          ? (
            <ListHeader text={`我的福气值： ${blessingVal}分`} size="middle" styles={{margin: '20px 0 0 0'}} />
          )
          : (
            <ListHeader size="middle" styles={{margin: '20px 0 0 0'}} >
              <span className="text_nologin">我的福气值：</span>
              <span onClick={toLogin} className="login__btn">登录</span>
            </ListHeader>
          )
        }
        <p className='activity__over'>活动结束前福气榜前50名可获奖品一份</p>
        {
          welfareRuleList.map((item, index) => (
            <div className="rules__item" key={index}>
              <div className="item__left">
                <div className='tip__bubble'>
                  <div className="tip__text">福气值</div>
                  <div className='tip__style'></div>
                </div>
                <div className='range__number'>{item.range}</div>
              </div>
              <div className="item__right">
                {
                  item.rules.map(item => {
                    return (
                      <p key={item.id}>
                        {item.text}
                        <span>{item.des}</span>
                      </p>
                    )
                  })
                }
              </div>
            </div>
          ))
        }
        <ListHeader text="福气值积攒规则" size="middle" styles={{margin: '30px 0 0'}} />
        {
          rules.map((item, index) => (
            <div className="collect-blessing__item" key={index}>
              <i className="collect-blessing__num">{index+1}</i>
              <p className="collect-blessing__title">{item}</p>
              {
                index === 0 &&
                <>
                  {
                    (isLogin && isSign)
                    ? (
                      <button className="collect-blessing__content" data-status="done">
                        +5点<br/>福气值
                      </button>
                    )
                    : (
                      <button onClick={toLogin} className="collect-blessing__content">
                        点击<br/>签到
                      </button>
                    )
                  }
                </>
              }
              {
                index === 1 && 
                <>
                  {
                    isFollow === 1
                    ? (
                      <button className="collect-blessing__content" data-status="done" onClick={handleToShowNotice}>
                        已加30点
                      </button>
                    )
                    : (
                      <button className="collect-blessing__content" onClick={handleToShowNotice}>
                        关注<br/>二维码
                      </button>
                    )
                  }
                </>
              }
              {
                index === 2 &&
                <div className="collect-blessing__content" data-layout="column">
                  <p className="collect-blessing__label">去分享</p>
                  <div className="collect-blessing__share">
                    <button
                    className="collect-blessing__share-button"
                    data-type="qq"
                    onClick={this.qqToShare}
                    ></button>
                    <button
                      className="collect-blessing__share-button"
                      data-type="wechat"
                      onClick={this.wechatToShare}
                    ></button>
                    <button
                      className="collect-blessing__share-button"
                      data-type="weibo"
                      onClick={this.weiboToShare}
                    ></button>
                  </div>
                </div>
              }
              {
                index === 3 &&
                <button className="collect-blessing__content" onClick={handleToShowList}>
                  浏览课程<br/>详情页
                </button>
              }
              {
                index === 4 &&
                <button className="collect-blessing__content" onClick={this.handleToInvite}>
                  <span>邀请链接</span>
                  {
                    inviteBlessing > 0 && <i>已加{inviteBlessing}点</i>
                  }
                </button>
              }
              {
                index === 5 &&
                <button className="collect-blessing__content" onClick={toSection}>
                  <span>去选课</span>
                  {
                    buyBlessing > 0 && <i>已加{buyBlessing}点</i>
                  }
                </button>
              }
            </div>
          ))
        }
      </div>
    )
  }
}

export default ListFrame(CollectBlessing);