123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 |
- <?php
- /**
- * Created by PhpStorm.
- * User: hp
- * Date: 2017/11/21
- * Time: 10:42
- */
- namespace App\Modules\Trade\Services;
- use App\Modules\Trade\Models\Order;
- use Redis;
- use DB;
- class OrderService
- {
- //获取派单累计充值(追踪用户)
- static function getMonthRechargeAmountChannelIds($params = [])
- {
- $end_time = isset($params['end_time']) ? $params['end_time'] : '';
- $begin_time = isset($params['begin_time']) ? $params['begin_time'] : '';
- $distribution_channel_ids = isset($params['distribution_channel_ids']) ? $params['distribution_channel_ids'] : 0;
- $distribution_channel_ids = implode(',', $distribution_channel_ids);
- if ($distribution_channel_ids && $begin_time && $end_time) {
- $sql = "SELECT SUM(price) as amount FROM send_orders JOIN orders ON orders.send_order_id=send_orders.id
- WHERE send_orders.distribution_channel_id IN (" . $distribution_channel_ids . ")
- AND orders.`status`='PAID' AND send_orders.send_time BETWEEN '{$begin_time}' AND '{$end_time}'
- ";
- if (isset($params['day_count']) && $params['day_count']) {
- $sql = $sql . " AND (UNIX_TIMESTAMP(orders.created_at)-UNIX_TIMESTAMP(send_orders.send_time))<=" . ($params['day_count'] * 86400);
- }
- $data = DB::select($sql);
- return (float) $data[0]->amount;
- }
- return 0;
- }
- //获取派单累计充值(追踪用户)
- static function getPromotionRegUserRechargeAmountChannelIds($params = [])
- {
- $end_time = isset($params['end_time']) ? $params['end_time'] : '';
- $begin_time = isset($params['begin_time']) ? $params['begin_time'] : '';
- $distribution_channel_ids = isset($params['distribution_channel_ids']) ? $params['distribution_channel_ids'] : 0;
- $distribution_channel_ids = implode(',', $distribution_channel_ids);
- if ($distribution_channel_ids && $begin_time && $end_time) {
- $sql = "SELECT SUM(price) as amount FROM send_orders JOIN users ON users.send_order_id=send_orders.id
- JOIN orders ON orders.uid=users.id
- WHERE send_orders.distribution_channel_id IN (" . $distribution_channel_ids . ")
- AND orders.`status`='PAID' AND send_orders.send_time BETWEEN '{$begin_time}' AND '{$end_time}'
- ";
- if (isset($params['day_count']) && $params['day_count']) {
- $sql = $sql . " AND (UNIX_TIMESTAMP(orders.created_at)-UNIX_TIMESTAMP(send_orders.send_time))<=" . ($params['day_count'] * 86400);
- }
- $data = DB::select($sql);
- return (float) $data[0]->amount;
- }
- return 0;
- }
- /**
- * 查询订单
- * @param array $params [distribution_channel_id、begin_time、end_time、uid(用户ID)、send_order_id(派单ID)、trade_no(订单号)]
- * @param boolean $is_all [是否返回全部,默认否]
- * @return [type] [description]
- */
- static function search($params = [], $is_all = false)
- {
- return Order::search($params, $is_all);
- }
- /**
- * 查询订单
- * @param array $params [distribution_channel_id、begin_time、end_time、uid(用户ID)、send_order_id(派单ID)、trade_no(订单号)]
- */
- static function searchObj($params = [])
- {
- return Order::searchObj($params);
- }
- /**
- * 获取订单总额
- * @param array $params [distribution_channel_id、begin_time、end_time、uid、send_order_id]
- */
- static function getAmount($params = [])
- {
- return Order::getAmount($params);
- }
- static function getAmountV2($params = [])
- {
- return Order::getAmountV2($params);
- }
- /**
- * 获取付费用户数
- * @param array $params [send_order_id]
- */
- static function getPayUserNum($send_order_id)
- {
- return Order::getPayUserNum($send_order_id);
- }
- /**
- * 获取VIP付费用户数
- * @param array $params [send_order_id]
- */
- static function getVipPayUserNum($send_order_id)
- {
- return Order::getVipPayUserNum($send_order_id);
- }
- /**
- * 获取普通付费用户数
- * @param array $params [send_order_id]
- */
- static function getNormaPayUserNum($send_order_id)
- {
- return Order::getNormalPayUserNum($send_order_id);
- }
- /**
- *获取派单下的订单总数
- * @param array $params [send_order_id]
- */
- static function getOrderCount($send_order_id)
- {
- return Order::getOrderCount($send_order_id);
- }
- /**
- *获取活动下的订单数
- * @param array $params [$activity_id]
- */
- static function getActivityOrderNum($params = [])
- {
- return Order::getActivityOrderNum($params);
- }
- /**
- *获取派单下的普通用户的订单总数
- * @param array $params [send_order_id]
- */
- static function getNormalOrderCount($send_order_id)
- {
- return Order::getNormalOrderCount($send_order_id);
- }
- /**
- *获取派单下的VIP用户的订单总数
- * @param array $params [send_order_id]
- */
- static function getVipOrderCount($send_order_id)
- {
- return Order::getVipOrderCount($send_order_id);
- }
- /**
- * 获取渠道当日数据
- * @param $distribution_channel_id 分销渠道ID
- * @return [成功订单总额、成功订单数]
- */
- static function getChannelToday($distribution_channel_id)
- {
- $data = Order::getChannelToday($distribution_channel_id);
- $data['total_num'] = Redis::hget('order_stat:' . $distribution_channel_id, 'order_num_' . date('Y-m-d'));
- return $data;
- }
- /**
- * 获取渠道当日数据 new
- * @param $distribution_channel_id 分销渠道ID
- * @return [成功订单总额、成功订单数]
- */
- static function getChannelTodayData($distribution_channel_id)
- {
- $data = Order::getChannelTodayData($distribution_channel_id);
- return $data;
- }
- /**
- * 获取渠道当日数据
- * @param $distribution_channel_id 分销渠道ID
- * @return [成功订单总额、成功订单数、总订单数]
- */
- static function getChannelDateOrderInfo($distribution_channel_id, $date)
- {
- $data = Order::getChannelDateOrderInfo($distribution_channel_id, $date);
- $data['total_num'] = Redis::hget('order_stat:' . $distribution_channel_id, 'order_num_' . $date);
- return $data;
- }
- /**
- * 获取渠道对应支付通道总额
- * @param array $params [distribution_channel_id、begin_time、end_time]
- * @return array
- * [
- * 'ALIPAY'=>121,
- * 'OFFICIAL'=2323
- * ]
- */
- static function getPayMerchantSourceAmount($params = [])
- {
- return Order::getPayMerchantSourceAmount($params);
- }
- //获取渠道日付费用户数
- static function getDayPayUserNumByChannelId($distribution_channel_id, $date)
- {
- return Order::getDayPayUserNumByChannelId($distribution_channel_id, $date);
- }
- //获取渠道日包年vip付费用户数
- static function getDayVipPayUserNumByChannelId($distribution_channel_id, $date)
- {
- return Order::getDayVipPayUserNumByChannelId($distribution_channel_id, $date);
- }
- //获取渠道日普通充值付费用户数
- static function getDayRechargePayUserNumByChannelId($distribution_channel_id, $date)
- {
- return Order::getDayRechargePayUserNumByChannelId($distribution_channel_id, $date);
- }
- //获取指定日期普通充值未支付订单数、支付订单数、总额
- static function getChannelDayTicketRechargeData($distribution_channel_id, $date)
- {
- return Order::getChannelDayTicketRechargeData($distribution_channel_id, $date);
- }
- //获取指定日期包年充值未支付订单数、支付订单数、总额
- static function getChannelDayYearRechargeData($distribution_channel_id, $date)
- {
- return Order::getChannelDayYearRechargeData($distribution_channel_id, $date);
- }
- //获取渠道日首充数据
- static function getChannelDayFirstRechargeData($distribution_channel_id, $date)
- {
- return Order::getChannelDayFirstRechargeData($distribution_channel_id, $date);
- }
- //获取派单累计充值(追踪用户)
- static function getPromotionRegUserRechargeAmount($params)
- {
- return Order::getPromotionRegUserRechargeAmount($params);
- }
- /**
- * 获取服务号下面的充值金额
- * @param $start_time 开始时间
- * @param $end_time 结束时间
- */
- static function getRechargeAmountGroupByOfficial($date)
- {
- return Order::getRechargeAmountGroupByOfficialAccount($date);
- }
- static function getRechargeAmountGroupByPayMerchant($params)
- {
- return Order::getRechargeAmountGroupByPayMerchant($params);
- }
- /**
- * 获取派单累计充值(追踪用户)
- * @param array $params
- * @return float
- */
- static function getPromotionRegUserRechargeAmountBySendOrerId($params = [])
- {
- $end_time = isset($params['end_time']) ? $params['end_time'] : '';
- $start_time = isset($params['start_time']) ? $params['start_time'] : '';
- $send_order_id = isset($params['send_order_id']) ? $params['send_order_id'] : 0;
- if ($send_order_id) {
- if ($start_time && $end_time) {
- $data = DB::select("select sum(price) amount from orders where status='PAID' and created_at >= '{$start_time}' and created_at <= '{$end_time}' and uid in (select id from users where send_order_id = '{$send_order_id}' )");
- } else {
- $data = DB::select("select sum(price) amount from orders where status='PAID' and uid in (select id from users where send_order_id = '{$send_order_id}' )");
- }
- return (float) $data[0]->amount;
- }
- }
- }
|