import React, { Component } from 'react'
import './togroup.scss'
import { HeaderBar, VList } from '../../../common'

import { getParam, http, browser} from "@/utils";
import { connect } from "react-redux"
import { Link } from "react-router-dom"
import { WingBlank, WhiteSpace, Flex, Toast } from 'antd-mobile'
import {getCourses} from './../../detail/actions';

@connect()
class ToGroup extends Component {
    constructor(props) {
        super(props)
        this.state = {
            data: {},
            share: false,
            pdd_price: 0,
            groupon_member: [],
            person_num: 0, // 共多少人成团
            is_success: false, // 是否拼团成功
            userInfo: {},
            number: 0, // 差几人成团
        }
    }

    invitedFriends = () => {
        const {pdd_price, number, data} = this.state;
        if(browser.isWeixin) {
            let share = this.state.share;
            this.setState({
                share: !share,
            });
            let shareData = {
                title: `【仅剩${number}个名额】我${pdd_price}元拼了《${data.course_title}》`,
                desc: data.course_title,                               //  分享描述
                // 直接进入课程详情页，isIn: 1
                link: location.origin + `/detail?id=${data.course_id}&isIn=1`, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                imgUrl: data.image_name, // 分享图标
            };
            http.post(`${API['base-api']}/m/sale/signature`).then(res => {
                const {nonce_str, signature, timestamp} = res.data;
                wx.config({
                    "debug": false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
                    "appId": 'wx23dac6775ac82877', // 必填，公众号的唯一标识
                    "timestamp": timestamp, // 必填，生成签名的时间戳
                    "nonceStr": nonce_str, // 必填，生成签名的随机串
                    "signature": signature, // 必填，签名
                    jsApiList: [
                        'hideMenuItems',
                        'showMenuItems',
                        'updateAppMessageShareData',
                        'updateTimelineShareData',
                        'onMenuShareWeibo',
                        'onMenuShareAppMessage',
                    ], // 必填，需要使用的JS接口列表
                });
            });
            wx.ready(function () {   //需在用户可能点击分享按钮前就先调用
                wx.hideAllNonBaseMenuItem();
                wx.showMenuItems({
                    menuList: ['menuItem:share:appMessage' , 'menuItem:share:timeline'] // 要显示的菜单项，所有menu项见附录3
                  });
                wx.updateAppMessageShareData({ 
                    ...shareData,
                    success: function () {
                      // 设置成功
                    }
                })
                wx.updateTimelineShareData({
                    ...shareData,
                    success: function () {
                      // 设置成功
                    }
                })
            });
        }else{
            Toast.info('请在微信中使用分享功能！', 2);
        }
    }

    componentDidMount() {
        Promise.all([http.get(`${API['base-api']}/pdd/goupon_pay_page/${getParam('id')}`), http.get(`${API.home}/m/user_info`)]).then(resultList => {
            console.log(resultList);
            let res = resultList[0],
            userInfo = resultList[1];
            if(res.data.errno !== 0) {
                Toast.info(res.data.msg, 2);
                return;
            }
            if(userInfo.data.code !== 200) {
                Toast.info(res.data.msg, 2);
                return;
            }
            this.setState({
                data: res.data.data.course_info,
                pdd_price: res.data.data.pdd_price,
                groupon_member: res.data.data.groupon_member,
                is_success: res.data.data.is_success,
                person_num: res.data.data.person_num,
                course_list: res.data.data.course_list,
                userInfo,
                number: res.data.data.number,
                countdown: '',
            });

            if(res.data.data.is_success === 0) {
                let date = res.data.data.end_time * 1000,
                hours = 0,
                minutes = 0,
                seconds = 0;
                setInterval(() => {
                    date -= 1000
                    hours = `${parseInt(date / (60 * 60 * 1000))}`.padStart(2, 0);
                    minutes = `${parseInt((date - hours * 3600000) / 60000)}`.padStart(2, 0);
                    seconds = `${parseInt((date - hours * 3600000 - minutes * 60000 ) / 1000)}`.padStart(2, 0);
                    this.setState({
                        countdown: `${hours}:${minutes}:${seconds}`
                    });
                }, 1000)
            }
        });
    }

    toCourseDetail = (id) => {
        const { dispatch, history } = this.props;
        dispatch(getCourses(id, () => {
            history.push(`/detail?id=${id}`);
            return false;
        }));
    }

    render() {
        const { data: { course_id, course_title, simpledescription, price0, price1 }, pdd_price, is_success, person_num, groupon_member, course_list } = this.state;
        const Info = (
            <div className="info">
                <p className='title' onClick={() => this.toCourseDetail(course_id)}>
                    {/* <Link to={`/detail?id=${course_id}`}> */}
                        {course_title}
                    {/* </Link> */}
                </p>
                <p className='contact text-overflow-2'>{simpledescription}</p>
                <div className='des'>
                    <p className="course-price">
                        <span className="new">¥{price1}</span>
                        <span className="old">¥{price0}</span>
                    </p>
                </div>
            </div>
        )
        return (
            <div className='to-group-box'>
                <HeaderBar title='拼团' arrow={true} cart={false}></HeaderBar>
                {
                    !is_success && 
                    <VList 
                        img={this.state.data.image_name} 
                        id={this.state.data.course_id} 
                        info={Info}
                        toDetail={this.toCourseDetail}
                    />
                }

                <GorupContent data={this.state} invitedFriends={this.invitedFriends} />

                <WhiteSpace></WhiteSpace>
                <div className="group-course">
                    <div className="top-title">
                        <span>本周特惠</span>
                        <Link to={`/preferential`} className='more'>更多<i className='iconfont iconiconfront-70'></i></Link>
                    </div>
                    {
                        (course_list && course_list.length > 0) && (course_list[0].course && course_list[0].course.length > 0) && course_list[0].course.slice(0, 4).map(item => {

                            let weekInfo = <div className="info">
                            <p className='title' onClick={() => this.toCourseDetail(item.course_id)}>
                                {/* <Link to={`/detail?id=${item.course_id}`}> */}
                                    {item.course_title}
                                {/* </Link> */}
                            </p>
                            <p className='contact text-overflow-2'>{item.simpledescription}</p>
                            <div className='des'>
                                <p className="course-price">
                                    <span className="new">¥{item.price1}</span>
                                    <span className="old">¥{item.price0}</span>
                                </p>
                            </div>
                            </div>
                            return (
                                <VList 
                                    img={item.image_name} 
                                    key={item.uid} 
                                    id={item.course_id} 
                                    info={weekInfo}
                                    toDetail={this.toCourseDetail}
                                />
                            )
                        })
                    }

                </div>
            </div>
        )
    }
}

function GorupContent(props) {
    let tip, btn, dec, groupTip, shareTip, groupSuccessMbc;
    const { pdd_price, data, groupon_member, is_success, person_num, userInfo, share, number, countdown } = props.data;
    let ary=[],num = number;
    while(num != 0) {
        ary.push(num);
        num--;
    }
    groupTip = (<div className='group-user-list'>
        <Flex justify='center' className='imgList'>
            {
                groupon_member.map(item => {
                    return (
                        <div className='imgContainer' key={Math.random()}>
                            <img className='imgname' src={item.avatar} alt='' />
                            {
                                item.user_type === 1 ? (
                                    <div className='leaderFlag'>
                                        <span>团长</span>
                                    </div>
                                ) : null
                            }
                        </div>);
                })
            }
            {
                ary.map(item => {
                    return (<div className='imgContainer' key={Math.random()}>
                        <div className='imgname'>
                            <i className='iconfont iconwode-xianxing no-body'></i>
                        </div>
                    </div>)
                })
            }
        </Flex>
    </div>);

    if (groupon_member && groupon_member.length > 0) {
        let uid = '';
        groupon_member.map(item=>{
            if(item.user_type === 1) {
                uid = `${item.uid}`;
            }
        })

        if(uid === userInfo.data.data.uid) {
            tip = <p className='tip'>{`拼团省￥${pdd_price}元`}</p>
            btn = <span className='group-btn' onClick={props.invitedFriends}>邀请好友参团 {countdown} 后结束</span>
            dec = <p className='dec'>分享到3个群后，成团率高达98%</p>
        } else {
            tip = <p className='tip'>{`拼团省￥${pdd_price}元`}</p>
            btn = <Link to={`/order?id=${data.course_id}`} className='group-btn'>一键参团</Link>
        }
    }

    if (is_success === 1) {
        tip = <p className='success'>拼团成功</p>
        btn = <Link to={`/play`} className='tostudy'>去学习</Link>
    }
    return (
        <div className='gorup-content'>
            {
                share ? (
                    <div className='groupSuccessMbc' onClick={props.invitedFriends}>
                        <div className='tipContent'>
                            
                            {`还差${number}人，分享到3个群，成团率高达98%`}
                        </div>
                        <div className='tipArrow'>
                            <i className='iconfont iconyindao'></i>
                        </div>
                    </div>
                ) : null
            }

            {tip}
            <WingBlank>
                {groupTip}
            </WingBlank>
            <WingBlank>
                {btn}
            </WingBlank>
            {dec}
            {
                !is_success &&
                <div className="group-dec">
                    <span>
                        <i className='iconfont iconiconfront-1'></i>
                        ·好友参团  ·人满成交  ·人不满退款
                        </span>
                    <span className='allNum'>{`累计${person_num}人成团`}</span>
                </div>
            }
        </div>
    )
}

export default ToGroup
