<?php
/*
 * @Descripttion:
 * @version:
 * @Author: kangkang
 * @Date: 2020-10-03 18:23:43
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2021-10-25 14:40:46
 */
$is_script = 1;
include_once __DIR__ . '/../index.php';

use app\api\model\Finance as FinanceModel;
use app\api\model\ProductOrder as ProductOrderModel;
use app\order\model\FinanceOperation as FinanceOperationModel;
use enum\order\ProductOrder as ProductOrderEnum;
use enum\product\Product as ProductEnum;

$finance = new FinanceModel;
$finance_operation = new FinanceOperationModel;

$product_order_model = new ProductOrderModel;
$product_order_enum = new ProductOrderEnum;
$product_enum = new ProductEnum;

$today = date('Y-m-d 00:00:00', time());
$yesterday = date('Y-m-d 00:00:00', (time() - 86400));
$where1 = ['UpdateTime' => ['<', $today]];
$where2 = ['UpdateTime' => ['>', $yesterday]];

$yesterday_data = $finance->getNewOne();
$buyis = $finance_operation->field('product,sum(money) money')->where(['finance_id' => ['IS', NULL]])->group(['product'])->fetchAll();

$buyi_data = [];
foreach ($buyis as $buyi) {
    $buyi_data[$buyi['product']] = $buyi['money'];
}

$fields = "
ProductId, PackageName,
    sum(
	CASE OrderType
	WHEN 1 THEN ConnectCount*AccountCount
    WHEN 2 THEN ConnectCount*AccountCount
	ELSE 0 END) 'NewBuyCount',

	sum(
    CASE OrderType
    WHEN 3 THEN ConnectCount*AccountCount
    WHEN 4 THEN ConnectCount*AccountCount
    ELSE 0 END) 'AgainBuyCount'

";

$data = $product_order_model->field($fields)->where(array_merge($where2, ['OrderState' => ['in', $product_order_enum::$PayComplete]]))->where($where1)->group(['ProductId', 'PackageName'])->fetchAll();

$qiangzi = $xunlian = $jinqiao = $jinrui = $laoying = $xianfeng = $wujin = $xingxing = $wanmei = $wuxian = $jike = $tiantian = $gongxiang = $shihui = $xigua = $mogu = $huohu = [];

foreach ($data as $product) {
    switch ($product['ProductId']) {
        case $product_enum::$qiangzi:
            $qiangzi[] = $product;
            break;
        case $product_enum::$xunlian:
            $xunlian[] = $product;
            break;
        case $product_enum::$jinqiao:
            $jinqiao[] = $product;
            break;
        case $product_enum::$jinrui:
            $jinrui[] = $product;
            break;
        case $product_enum::$laoying:
            $laoying[] = $product;
            break;
        case $product_enum::$xianfengpptp:
            $xianfeng[] = $product;
            break;
        case $product_enum::$wujin:
            $wujin[] = $product;
            break;
        case $product_enum::$xingxing:
            $xingxing[] = $product;
            break;
        case $product_enum::$wanmei:
            $wanmei[] = $product;
            break;
        case $product_enum::$wuxian:
            $wuxian[] = $product;
            break;
        case $product_enum::$jike:
            $jike[] = $product;
            break;
        case $product_enum::$tiantian:
            $tiantian[] = $product;
            break;
        case $product_enum::$gongxiang:
            $gongxiang[] = $product;
            break;
        case $product_enum::$shihui:
            $shihui[] = $product;
            break;
        case $product_enum::$xigua:
            $xigua[] = $product;
            break;
        case $product_enum::$mogu:
            $mogu[] = $product;
            break;
        case $product_enum::$huohu:
            $huohu[] = $product;
            break;
    }
}

//强子讯连专门处理退款
$qx_where = array_merge($where2, ['ProductId' => ['in', $product_enum::$qx], 'OrderState' => $product_order_enum::$AutoRefundOver, 'ConnectCount' => 1, 'OrderType' => $product_order_enum::$Refund]);
$refund_qx_info = $product_order_model->field('ProductId,PackageName,RefundRestTime')->where($qx_where)->where($where1)->fetchAll();
$qiangzi_refund = [];
$xunlian_refund = [];
$huohu_refund = [];
foreach ($refund_qx_info as $info) {
    switch ($info['ProductId']) {
        case $product_enum::$qiangzi:
            $qiangzi_refund[] = $info;
            break;
        case $product_enum::$xunlian:
            $xunlian_refund[] = $info;
            break;
        case $product_enum::$huohu:
            $huohu_refund[] = $info;
            break;
    }
}

//天天老鹰先锋的退款  金瑞 蘑菇
$tlx_where = array_merge($where2, ['ProductId' => ['in', $product_enum::$tlxj], 'OrderState' => ['in',$product_order_enum::$Refunds]]);
$refund_tlx_info = $product_order_model->field('ProductId,PackageName,RefundRestTime,ConnectCount')->where($tlx_where)->where($where1)->fetchAll();
$tiantian_refund = [];
$laoying_refund = [];
$xianfeng_refund = [];
$jinrui_refund = [];
$mogu_refund = [];
foreach ($refund_tlx_info as $info) {
    switch ($info['ProductId']) {
        case $product_enum::$tiantian:
            $tiantian_refund[] = $info;
            break;
        case $product_enum::$laoying:
            $laoying_refund[] = $info;
            break;
        case $product_enum::$xianfengpptp:
            $xianfeng_refund[] = $info;
            break;
        case $product_enum::$jinrui:
            $jinrui_refund[] = $info;
            break;
        case $product_enum::$mogu:
            $mogu_refund[] = $info;
            break;
    }
}
$list = [];
$list['xingxing'] = $yesterday_data['xingxing'] - no_jike($xingxing) + ($buyi_data['xingxing'] ?? 0);
$list['jike'] = $yesterday_data['jike'] - jike($jike) + ($buyi_data['jike'] ?? 0);
$list['xigua'] = $yesterday_data['xigua'] - xigua($xigua) + ($buyi_data['xigua'] ?? 0);
$list['wujin'] = $yesterday_data['wujin'] - wujin($wujin) + ($buyi_data['wujin'] ?? 0);
$list['wanmei'] = $yesterday_data['wanmei'] - no_jike($wanmei) + ($buyi_data['wanmei'] ?? 0);
$list['jinqiao'] = $yesterday_data['jinqiao'] - no_jike($jinqiao) + ($buyi_data['jinqiao'] ?? 0);
$list['wuxian'] = $yesterday_data['wuxian'] - no_jike($wuxian) + ($buyi_data['wuxian'] ?? 0);
$list['shihui'] = $yesterday_data['shihui'] - no_jike($shihui) + ($buyi_data['shihui'] ?? 0);
$list['gongxiang'] = $yesterday_data['gongxiang'] - no_jike($gongxiang) + ($buyi_data['gongxiang'] ?? 0);

$qiangzi_rule_result = qx_rule($qiangzi, $qiangzi_refund, false);
$xunlian_rule_result = xunlian($xunlian, $xunlian_refund);
$huohu_rule_result = huohu($huohu, $huohu_refund);
$list['qiangzi'] = $yesterday_data['qiangzi'] - $qiangzi_rule_result['cost'] + $qiangzi_rule_result['refund'] + ($buyi_data['qiangzi'] ?? 0);
$list['xunlian'] = $yesterday_data['xunlian'] - $xunlian_rule_result['cost'] + $xunlian_rule_result['refund'] + ($buyi_data['xunlian'] ?? 0);
$list['huohu'] = $yesterday_data['huohu'] - $huohu_rule_result['cost'] + $huohu_rule_result['refund'] + ($buyi_data['huou'] ?? 0);

$tiantian_rule_result = tl_rule($tiantian, $tiantian_refund);
$laoying_rule_result = laoying($laoying, $laoying_refund, true);
$list['tiantian'] = $yesterday_data['tiantian'] - $tiantian_rule_result['cost'] + $tiantian_rule_result['refund'] + ($buyi_data['tiantian'] ?? 0);
$list['laoying'] = $yesterday_data['laoying'] - $laoying_rule_result['cost'] + $laoying_rule_result['refund'] + ($buyi_data['laoying'] ?? 0);

$xianfeng_rule_result = xianfeng($xianfeng, $xianfeng_refund);
$list['xianfeng'] = $yesterday_data['xianfeng'] - $xianfeng_rule_result['cost'] + $xianfeng_rule_result['refund'] + ($buyi_data['xianfeng'] ?? 0);

$mogu_rule_result = mogu($mogu, $mogu_refund);
$list['mogu'] = $yesterday_data['mogu'] - $mogu_rule_result['cost'] + $mogu_rule_result['refund'] + ($buyi_data['mogu'] ?? 0);

$jinrui_rule_result = jinrui($jinrui, $jinrui_refund);
$list['jinrui'] = $yesterday_data['jinrui'] - $jinrui_rule_result['cost'] + $jinrui_rule_result['refund'] + ($buyi_data['jinrui'] ?? 0);

$list['riqi'] = date('Y-m-d H:i:s');

$finance->add($list);
$finance_operation->where('finance_id IS NULL')->update(['finance_id' => ($yesterday_data['id'] + 1)]);

//极客每日消费规则
function jike($product)
{
    $count = 0;
    foreach ($product as $package) {
        switch ($package['PackageName']) {
            case '天卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 6;
                break;
            case '周卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 24;
                break;
            case '月卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 60;
                break;
            case '季卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 162;
                break;
            case '双月卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 162;
                break;
            case '双月卡(活动)':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 162;
                break;
            case '年卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 600;
                break;
        }
    }
    return $count;
}

//西瓜每日消费规则
function xigua($product)
{
    $count = 0;
    foreach ($product as $package) {
        switch ($package['PackageName']) {
            case '天卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 5;
                break;
            case '周卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 20;
                break;
            case '月卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 60;
                break;
            case '季卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 165;
                break;
            case '双月卡(活动)':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 165;
                break;
            case '年卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 550;
                break;
        }
    }
    return $count;
}

//星星，无尽，完美，金桥，无限，实惠，共享通用规则
function no_jike($product)
{
    $count = 0;
    foreach ($product as $package) {
        switch ($package['PackageName']) {
            case '天卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 3;
                break;
            case '周卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 18;
                break;
            case '月卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 50;
                break;
            case '双月卡(活动)':
            case '季卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 135;
                break;
            case '年卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 500;
                break;
        }
    }
    return $count;
}

function wujin($product)
{
    $count = 0;
    foreach ($product as $package) {
        switch ($package['PackageName']) {
            case '天卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 4;
                break;
            case '周卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 25;
                break;
            case '月卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 60;
                break;
            case '双月卡(活动)':
            case '季卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 162;
                break;
            case '年卡':
                $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 600;
                break;
        }
    }
    return $count;
}

//强子，讯连规则
function qx_rule($product, $refunds, $product_type = true)
{
    $cost = 0;
    foreach ($product as $package) {
        switch ($package['PackageName']) {
            case '天卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 6.6;

                break;
            case '周卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 34;

                break;
            case '月卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 100;

                break;
            case '季卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 270;

                break;
            case '月卡(活动)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 200;

                break;
            case '季卡(活动)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 600;

                break;
            case '双月卡(活动)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 400;

                break;
            case '年卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 900;

                break;
        }
    }
    $refund = 0;
    
    $count['cost'] = $cost;
    $count['refund'] = $refund;
    return $count;
}
function xunlian($product, $refunds, $product_type = true)
{
    $cost = 0;
    foreach ($product as $package) {
        switch ($package['PackageName']) {
            case '天卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 5.5;

                break;
            case '周卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 28;

                break;
            case '月卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 80;

                break;
            case '季卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 220;

                break;
            case '月卡(活动)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 200;

                break;
            case '季卡(活动)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 600;

                break;
            case '双月卡(活动)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 400;

                break;
            case '年卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 800;

                break;
        }
    }
    $refund = 0;
    
    $count['cost'] = $cost;
    $count['refund'] = $refund;
    return $count;
}
function huohu($product, $refunds, $product_type = true)
{
    $cost = 0;
    foreach ($product as $package) {
        switch ($package['PackageName']) {
            case '天卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 10;

                break;
            case '周卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 45;

                break;
            case '月卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 120;

                break;
            case '季卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 330;

                break;
            // case '月卡(活动)':
            //     $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 200;

            //     break;
            // case '季卡(活动)':
            //     $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 600;

            //     break;
            // case '双月卡(活动)':
            //     $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 400;

            //     break;
            case '年卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 1200;

                break;
        }
    }
    $refund = 0;
    
    $count['cost'] = $cost;
    $count['refund'] = $refund;
    return $count;
}
//天天，老鹰退款规则
function tl_rule($product, $refunds, $product_type = false)
{
    $month = 30;
    $cost = 0;
    foreach ($product as $package) {
        switch ($package['PackageName']) {
            case '天卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 3.5;

                break;
            case '周卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 17;

                break;
            case '月卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 50;

                break;
            case '季卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 150;

                break;
            case '年卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 600;

                break;
            case '双月卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 120;

                break;
            case '天卡(高级)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 3;

                break;
            case '周卡(高级)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 15;

                break;
            case '月卡(高级)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 40;

                break;
            case '季卡(高级)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 120;

                break;
            case '年卡(高级)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 480;

                break;
            case '天卡(普通)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 2.5;

                break;
            case '周卡(普通)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 13;

                break;
            case '月卡(普通)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 30;

                break;
            case '季卡(普通)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 90;

                break;
            case '年卡(普通)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 360;

                break;
        }
    }
    $refund = 0;
    foreach ($refunds as $info) {
        switch ($info['PackageName']) {
            case '天卡':
                if ((86400 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 3.5;
                } else {
                    $refund += $info['ConnectCount'] * 3.5 - ceil((86400 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 3.5;
                }
                break;
            case '周卡':
                if ((86400 * 7 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 17;
                } else {
                    $refund += $info['ConnectCount'] * 17 - ceil((86400 * 7 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 3.5;
                }
                break;
            case '月卡':
                if ((86400 * $month - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 50;
                } else {
                    $refund += $info['ConnectCount'] * 50 - ceil((86400 * $month - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 3.5;
                }
                break;
            case '季卡':
                if ((86400 * 90 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 150;
                } else {
                    $refund += $info['ConnectCount'] * 150 - ceil((86400 * 90 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 3.5;
                }
                break;
            case '年卡':
                if ((86400 * 365 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 600;
                } else {
                    $refund += $info['ConnectCount'] * 600 - ceil((86400 * 365 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 3.5;
                }
                break;
            case '双月卡':
                if ((86400 * 90 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 120;
                } else {
                    $refund += $info['ConnectCount'] * 120 - ceil((86400 * 90 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 3.5;
                }
                break;
            case '天卡(高级)':
                if ((86400 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 3;
                } else {
                    $refund += $info['ConnectCount'] * 3 - ceil((86400 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 3;
                }
                break;
            case '周卡(高级)':
                if ((86400 * 7 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 15;
                } else {
                    $refund += $info['ConnectCount'] * 15 - ceil((86400 * 7 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 3;
                }
                break;
            case '月卡(高级)':
                if ((86400 * $month - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 40;
                } else {
                    $refund += $info['ConnectCount'] * 40 - ceil((86400 * $month - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 3;
                }
                break;
            case '季卡(高级)':
                if ((86400 * 90 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 120;
                } else {
                    $refund += $info['ConnectCount'] * 120 - ceil((86400 * 90 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 3;
                }
                break;
            case '年卡(高级)':
                if ((86400 * 365 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 480;
                } else {
                    $refund += $info['ConnectCount'] * 480 - ceil((86400 * 365 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 3;
                }
                break;
            case '天卡(普通)':
                if ((86400 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 2.5;
                } else {
                    $refund += $info['ConnectCount'] * 2.5 - ceil((86400 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 2.5;
                }
                break;
            case '周卡(普通)':
                if ((86400 * 7 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 13;
                } else {
                    $refund += $info['ConnectCount'] * 13 - ceil((86400 * 7 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 2.5;
                }
                break;
            case '月卡(普通)':
                if ((86400 * $month - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 30;
                } else {
                    $refund += $info['ConnectCount'] * 30 - ceil((86400 * $month - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 2.5;
                }
                break;
            case '季卡(普通)':
                if ((86400 * 90 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 90;
                } else {
                    $refund += $info['ConnectCount'] * 90 - ceil((86400 * 90 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 2.5;
                }
                break;
            case '年卡(普通)':
                if ((86400 * 365 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 360;
                } else {
                    $refund += $info['ConnectCount'] * 360 - ceil((86400 * 365 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 2.5;
                }
                break;
        }
    }
    $count['cost'] = $cost;
    $count['refund'] = $refund;
    return $count;
}
//老鹰退款规则
function laoying($product, $refunds, $product_type = false)
{
    $month = 30;
    $cost = 0;
    foreach ($product as $package) {
        switch ($package['PackageName']) {
            case '天卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 1.5;

                break;
            case '周卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 9;

                break;
            case '月卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 30;

                break;
            case '季卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 84;

                break;
            case '年卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 300;

                break;
            case '双月卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 120;

                break;
        }
    }
    $refund = 0;
    // foreach ($refunds as $info) {
    //     switch ($info['PackageName']) {
    //         case '天卡':
    //             if ((86400 - handle_time($info['RefundRestTime'])) < 7200) {
    //                 $refund += $info['ConnectCount'] * 1.5;
    //             } else {
    //                 $refund += $info['ConnectCount'] * 1.5 - round((86400 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 1.5;
    //             }
    //             break;
    //         case '周卡':
    //             if ((86400 * 7 - handle_time($info['RefundRestTime'])) < 7200) {
    //                 $refund += $info['ConnectCount'] * 9;
    //             } else {
    //                 $refund += round($info['ConnectCount'] * (9 / 7) * floor((handle_time($info['RefundRestTime'])/86400)),2);
    //             }
    //             break;
    //         case '月卡':
    //             if ((86400 * $month - handle_time($info['RefundRestTime'])) < 7200) {
    //                 $refund += $info['ConnectCount'] * 30;
    //             } else {
    //                 $refund += round($info['ConnectCount'] * (30 / 30) * floor((handle_time($info['RefundRestTime'])/86400)),2);
    //             }
    //             break;
    //         case '季卡':
    //             if ((86400 * 90 - handle_time($info['RefundRestTime'])) < 7200) {
    //                 $refund += $info['ConnectCount'] * 90;
    //             } else {
    //                 $refund += round($info['ConnectCount'] * (90 / 90) * floor((handle_time($info['RefundRestTime'])/86400)),2);
    //             }
    //             break;
    //         case '年卡':
    //             if ((86400 * 365 - handle_time($info['RefundRestTime'])) < 7200) {
    //                 $refund += $info['ConnectCount'] * 300;
    //             } else {
    //                 $refund += round($info['ConnectCount'] * (300 / 365) * floor((handle_time($info['RefundRestTime'])/86400)),2);
    //             }
    //             break;
    //         case '双月卡':
    //             if ((86400 * 90 - handle_time($info['RefundRestTime'])) < 7200) {
    //                 $refund += $info['ConnectCount'] * 120;
    //             } else {
    //                 $refund += round($info['ConnectCount'] * (120 / 90) * floor((handle_time($info['RefundRestTime'])/86400)),2);
    //             }
    //             break;
    //     }
    // }
    $count['cost'] = $cost;
    $count['refund'] = $refund;
    return $count;
}
//先锋规则
function xianfeng($product, $refunds)
{
    $cost = 0;
    foreach ($product as $package) {
        switch ($package['PackageName']) {
            case '天卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 3;

                break;
            case '周卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 18;

                break;
            case '月卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 60;

                break;
            case '季卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 168;

                break;
            case '年卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 636;

                break;

            case '双月卡(活动)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 108;
                
                break;
        }
    }
    $refund = 0;
    // foreach ($refunds as $info) {
    //     switch ($info['PackageName']) {
    //         case '天卡':
    //             if ((86400 - handle_time($info['RefundRestTime'])) < 10800) {
    //                 $refund += $info['ConnectCount'] * 3;
    //             }
    //             break;
    //         case '周卡':
    //             if ((86400 * 7 - handle_time($info['RefundRestTime'])) < 10800) {
    //                 $refund += $info['ConnectCount'] * 18;
    //             }
    //             break;
    //         case '月卡':
    //             if ((86400 * 30 - handle_time($info['RefundRestTime'])) < 10800) {
    //                 $refund += $info['ConnectCount'] * 60;
    //             }
    //             break;
    //         case '季卡':
    //             if ((86400 * 90 - handle_time($info['RefundRestTime'])) < 10800) {
    //                 $refund += $info['ConnectCount'] * 168;
    //             }
    //             break;
    //         case '双月卡(活动)':
    //             if ((86400 * 90 - handle_time($info['RefundRestTime'])) < 10800) {
    //                 $refund += $info['ConnectCount'] * 120;
    //             }
    //             break;
    //         case '年卡':
    //             if ((86400 * 365 - handle_time($info['RefundRestTime'])) < 10800) {
    //                 $refund += $info['ConnectCount'] * 636;
    //             }
    //             break;
    //     }
    // }
    $count['cost'] = $cost;
    $count['refund'] = $refund;
    return $count;
}

//蘑菇规则
function mogu($product, $refunds)
{
    $cost = 0;
    foreach ($product as $package) {
        switch ($package['PackageName']) {
            case '天卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 3;

                break;
            case '周卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 15;

                break;
            case '月卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 40;

                break;
            case '月卡(活动)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 40;

                break;
            case '季卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 120;

                break;
            case '季卡(活动)':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 120;

                break;

            case '双月卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 80;
                
                break;
        }
    }
    $refund = 0;
    foreach ($refunds as $info) {
        switch ($info['PackageName']) {
            case '周卡':

                if ((86400 * 7 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 15;
                } else {
                    $refund += $info['ConnectCount'] * 15 - round((86400 * 7 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 3;
                }
                break;
            case '月卡':

                if ((86400 * 30 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 40;
                } else {
                    $refund += $info['ConnectCount'] * 40 - round((86400 * 30 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 3;
                }
                break;
            case '月卡(活动)':
                if ((86400 * 37 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 40;
                } else {
                    $refund += $info['ConnectCount'] * 40 - round((86400 * 37 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 3;
                }
                break;
            case '季卡':

                if ((86400 * 90 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 120;
                } else {
                    $refund += $info['ConnectCount'] * 120 - round((86400 * 90 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 3;
                }

                break;
            case '季卡(活动)':
                if ((86400 * 150 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 120;
                } else {
                    $refund += $info['ConnectCount'] * 120 - round((86400 * 150 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 3;
                }
                break;
            case '双月卡':
                if ((86400 * 90 - handle_time($info['RefundRestTime'])) < 1800) {
                    $refund += $info['ConnectCount'] * 120;
                } else {
                    $refund += $info['ConnectCount'] * 120 - round((86400 * 90 - handle_time($info['RefundRestTime']))/86400) * $info['ConnectCount'] * 3;
                }
                break;
        }
    }
    $count['cost'] = $cost;
    $count['refund'] = $refund;
    return $count;
}
//金瑞规则
function jinrui($product, $refunds)
{
    $cost = 0;
    foreach ($product as $package) {
        switch ($package['PackageName']) {
            case '天卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 3;

                break;
            case '周卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 20;

                break;
            case '月卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 60;

                break;
            case '季卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 180;

                break;
            case '年卡':
                $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 720;

                break;
        }
    }
    $refund = 0;
    foreach ($refunds as $info) {
        $refund += intval(handle_time($info['RefundRestTime']) / 86400) * 2 * $info['ConnectCount'];
    }
    $count['cost'] = $cost;
    $count['refund'] = $refund;
    return $count;
}

//将剩余时间进行处理切割转换为秒
function handle_time($rest_time)
{
    $time1 = explode('天', $rest_time);
    $time2 = explode('时', $time1[1]);
    $time3 = explode('分', $time2[1]);

    $time = $time1[0] * 86400 + $time2[0] * 3600 + $time3[0] * 60;
    return $time;
}
