['<', $today]]; $where2 = ['UpdateTime' => ['>', $yesterday]]; $yesterday_data = $finance->getNewOne(); $fields = " ProductId, PackageName, sum( CASE OrderType WHEN 1 THEN ConnectCount WHEN 2 THEN ConnectCount ELSE 0 END) 'NewBuyCount', sum( CASE OrderType WHEN 3 THEN ConnectCount WHEN 4 THEN ConnectCount 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 = []; 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; } } //强子讯连专门处理退款 $qx_where = array_merge($where2, ['ProductId' => ['in', $product_enum::$qx], 'OrderState' => ['in', $product_order_enum::$Refunds], 'ConnectCount' => 1, 'OrderType' => $product_order_enum::$New]); $refund_qx_info = $product_order_model->field('ProductId,PackageName,RefundRestTime')->where($qx_where)->where($where1)->fetchAll(); $qiangzi_refund = []; $xunlian_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; } } //天天老鹰先锋的退款 $tlx_where = array_merge($where2, ['ProductId' => ['in', $product_enum::$tlx], 'OrderState' => ['in', $product_order_enum::$Refunds]]); $refund_tlx_info = $product_order_model->field('ProductId,PackageName,RefundRestTime,ConnectCount')->where($qx_where)->where($where1)->fetchAll(); $tiantian_refund = []; $laoying_refund = []; $xianfeng_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; } } $list = []; $list['xingxing'] = $yesterday_data['xingxing']-no_jike($xingxing); $list['jike'] = $yesterday_data['jike']-jike($jike); $list['wujin'] = $yesterday_data['wujin']-no_jike($wujin); $list['wanmei'] = $yesterday_data['wanmei']-no_jike($wanmei); $list['jinqiao'] = $yesterday_data['jinqiao']-no_jike($jinqiao); $list['wuxian'] = $yesterday_data['wuxian']-no_jike($wuxian); $list['shihui'] = $yesterday_data['shihui']-no_jike($shihui); $list['gongxiang'] = $yesterday_data['gongxiang']-no_jike($gongxiang); $qiangzi_rule_result = qx_rule($qiangzi,$qiangzi_refund); $xunlian_rule_result = qx_rule($xunlian,$xunlian_refund); $list['qiangzi'] = $yesterday_data['qiangzi']-$qiangzi_rule_result['cost']+$qiangzi_rule_result['refund']; $list['xunlian'] = $yesterday_data['xunlian']-$xunlian_rule_result['cost']+$xunlian_rule_result['refund']; $tiantian_rule_result = tl_rule($tiantian,$tiantian_refund); $laoying_rule_result = tl_rule($laoying,$laoying_refund); $list['tiantian'] = $yesterday_data['tiantian']-$tiantian_rule_result['cost']+$tiantian_rule_result['refund']; $list['laoying'] = $yesterday_data['laoying']-$laoying_rule_result['cost']+$laoying_rule_result['refund']; $xianfeng_rule_result = xianfeng($xianfeng,$xianfeng_refund); $list['xianfeng'] = $yesterday_data['xianfeng']-$xianfeng_rule_result['cost']+$xianfeng_rule_result['refund']; dump($list); //极客每日消费规则 function jike($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']) * 50; break; case '季卡': $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 150; break; case '年卡': $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 600; break; } } return $count; } //星星,无尽,完美,金桥,无限,实惠,共享通用规则 function no_jike($product) { $count = 0; foreach ($product as $package) { switch ($package['PackageName']) { case '天卡': $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 4; break; case '周卡': $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 28; break; case '月卡': $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 100; break; case '季卡': $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 300; break; case '年卡': $count += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 1200; break; } } return $count; } //强子,讯连规则 function qx_rule($product, $refunds) { $cost = 0; foreach ($product as $package) { switch ($package['PackageName']) { case '天卡': $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 10; break; case '周卡': $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 60; break; case '月卡': $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 200; break; case '季卡': $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 600; break; case '年卡': $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 2400; break; } } $refund = 0; foreach ($refunds as $info) { switch ($info['PackageName']) { case '天卡': $refund += handle_time($info['RefundRestTime'])/86400 * 10; break; case '周卡': $refund += handle_time($info['RefundRestTime'])/86400 * (60 / 7); break; case '月卡': $refund += handle_time($info['RefundRestTime'])/86400 * (200 / 30); break; case '季卡': $refund += handle_time($info['RefundRestTime'])/86400 * (600 / 90); break; case '年卡': $refund += handle_time($info['RefundRestTime'])/86400 * (2400 / 365); break; } } $count['cost'] = $cost; $count['refund'] = $refund; return $count; } //天天,老鹰退款规则 function tl_rule($product, $refunds) { $cost = 0; foreach ($product as $package) { switch ($package['PackageName']) { case '天卡': $cost += ($package['NewBuyCount'] + $package['AgainBuyCount']) * 4; 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) { switch ($info['PackageName']) { case '天卡': if ((86400-handle_time( $info['RefundRestTime'])) <1800) { $refund += $info['ConnectCount'] * 4; } else { $refund += $info['ConnectCount'] * 4 - (86400-handle_time( $info['RefundRestTime'])) * $info['ConnectCount'] * 4; } break; case '周卡': if ((86400*7-handle_time( $info['RefundRestTime'])) <1800) { $refund += $info['ConnectCount'] * 20; } else { $refund += $info['ConnectCount'] * 20 -(86400*7-handle_time( $info['RefundRestTime'])) * $info['ConnectCount'] * 4; } break; case '月卡': if ((86400*30-handle_time( $info['RefundRestTime'])) <1800) { $refund += $info['ConnectCount'] * 60; } else { $refund += $info['ConnectCount'] * 60 -(86400*30-handle_time( $info['RefundRestTime'])) * $info['ConnectCount'] * 4; } break; case '季卡': if ((86400*90-handle_time( $info['RefundRestTime'])) <1800) { $refund += $info['ConnectCount'] * 180; } else { $refund += $info['ConnectCount'] * 180 -(86400*90-handle_time( $info['RefundRestTime'])) * $info['ConnectCount'] * 4; } break; case '年卡': if ((86400*365-handle_time( $info['RefundRestTime'])) <1800) { $refund += $info['ConnectCount'] * 7200; } else { $refund += $info['ConnectCount'] * 720 -(86400*365-handle_time( $info['RefundRestTime'])) * $info['ConnectCount'] * 4; } 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; } } $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*365-handle_time( $info['RefundRestTime'])) <10800) { $refund += $info['ConnectCount'] * 636; } break; } } $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 * 60; return $time; }