123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297 |
- <?php
- /**
- * Created by PhpStorm.
- * User: hp
- * Date: 2017/12/1
- * Time: 11:37
- */
- namespace App\Http\Controllers\Channel\Trade;
- use App\Http\Controllers\Channel\BaseController;
- use App\Http\Controllers\Channel\Trade\Transformers\OrderTransformer;
- use App\Modules\Trade\Services\OrderService;
- use App\Modules\SendOrder\Services\SendOrderService;
- use App\Modules\Channel\Services\ChannelService;
- use App\Modules\OfficialAccount\Services\ForceSubscribeService;
- use App\Modules\Activity\Services\ActivityService;
- use Illuminate\Http\Request;
- class OrderController extends BaseController
- {
- /**
- * @apiDefine Trade 订单
- */
- /**
- * @apiVersion 1.0.0
- * @api {GET} trade/orders 获取订单列表
- * @apiGroup Trade
- * @apiName getOrders
- * @apiParam {Number} [send_order_id] 派单ID
- * @apiParam {String} [begin_time] 开始时间
- * @apiParam {String} [end_time] 结束时间
- * @apiSuccess {Number} uid 用户id.
- * @apiSuccess {String} price 价格.
- * @apiSuccess {String} status '状态 PAID:已支付 UNPAID未支付'.
- * @apiSuccess {String} trade_no 平台交易ID.
- * @apiSuccess {String} pay_end_at 支付完成时间.
- * @apiSuccess {Number} send_order_id 派单id
- * @apiSuccess {String} send_order_name 派单名称
- * @apiSuccess {String} created_at 创建时间
- * @apiSuccessExample {json} Success-Response:
- *
- * {
- * "code": 0,
- * "msg": "",
- *
- * "data": [
- * {
- * "uid": 1,
- * "price": "1.00",
- * "status": "PAID",
- * "trade_no": "201711301125401585459852216605",
- * "pay_end_at": "2017-12-01 10:20:04",
- * "send_order_id": 0,
- * "send_order_name": "",
- * "created_at": 1512094804,
- * }
- * ]
- * }
- */
- function getOrders(Request $request)
- {
- $params = [];
- $request->has('start_time') && $request->input('start_time') && $params['begin_time'] = trim($request->input('start_time'));
- $request->has('end_time') && $request->input('end_time') && $params['end_time'] = date('Y-m-d H:i:s', strtotime(trim($request->input('end_time'))) + 86400 - 1);
- $request->has('send_order_id') && $request->input('send_order_id') && $params['send_order_id'] = (int)$request->input('send_order_id');
- $name = $request->has('activity_name') && trim($request->input('activity_name')) ? trim($request->input('activity_name')) : '';
- // 模板
- $from_custom_id = $request->has('from_custom_id') && trim($request->input('from_custom_id')) ? trim($request->input('from_custom_id')) : '';
- $params['inner_send_order_id'] = $from_custom_id;
-
- if(!$params['begin_time'] || !$params['end_time'] ){
- return response()->error('PARAM_ERROR');
- }
- if( strtotime($params['end_time']) - strtotime($params['begin_time']) >= 31*86400 ){
- return response()->error('PARAM_ERROR');
- }
- //活动
- if ($name) $params['activity_id'] = ActivityService::getActivityIds(compact('name'));
- if ($request->has('status') && $request->input('status') && in_array(strtoupper($request->input('status')), ['UNPAID', 'PAID'])) {
- $params['status'] = strtoupper($request->input('status'));
- }
- $params['distribution_channel_id'] = $this->getChannelId();
- $orders = OrderService::search($params);
- return response()->pagination(new OrderTransformer(), $orders);
- }
- /**
- * @apiVersion 1.0.0
- * @api {GET} trade/exportOrders 导出订单列表
- * @apiGroup Trade
- * @apiName exportOrders
- * @apiParam {Number} [send_order_id] 派单ID
- * @apiParam {String} [begin_time] 开始时间
- * @apiParam {String} [end_time] 结束时间
- * @apiSuccess {Number} uid 用户id.
- * @apiSuccess {String} price 价格.
- * @apiSuccess {String} status '状态 PAID:已支付 UNPAID未支付'.
- * @apiSuccess {String} trade_no 平台交易ID.
- * @apiSuccess {String} pay_end_at 支付完成时间.
- * @apiSuccess {Number} send_order_id 派单id
- * @apiSuccess {String} send_order_name 派单名称
- * @apiSuccess {String} created_at 创建时间
- */
- function exportOrders(Request $request)
- {
- $params = [];
- $request->has('start_time') && $request->input('start_time') && $params['begin_time'] = trim($request->input('start_time'));
- $request->has('end_time') && $request->input('end_time') && $params['end_time'] = date('Y-m-d H:i:s', strtotime(trim($request->input('end_time'))) + 86400 - 1);
- $request->has('send_order_id') && $request->input('send_order_id') && $params['send_order_id'] = (int)$request->input('send_order_id');
- if ($request->has('status') && $request->input('status') && in_array(strtoupper($request->input('status')), ['UNPAID', 'PAID'])) {
- $params['status'] = strtoupper($request->input('status'));
- }
- if(!$params['begin_time'] || !$params['end_time'] ){
- return response()->error('PARAM_ERROR');
- }
- if( strtotime($params['end_time']) - strtotime($params['begin_time']) >= 31*86400 ){
- return response()->error('PARAM_ERROR');
- }
- $name = $request->has('activity_name') && trim($request->input('activity_name')) ? trim($request->input('activity_name')) : '';
- //活动
- if ($name) $params['activity_id'] = ActivityService::getActivityIds(compact('name'));
- $params['distribution_channel_id'] = $this->getChannelId();
- $orders = OrderService::search($params, true);
- header("Content-type:application/vnd.ms-excel");
- header("Content-Disposition:attachment;filename=" . "订单列表" . date("YmdHis") . ".csv");
- echo iconv("UTF-8", "GBK", "\"商户订单号\",\"用户ID\",\"金额\",\"支付状态\",\"创建时间\",\"支付时间\",\"派单id\",\"派单名称\",\"活动名称\"\r\n");
- if ($orders) {
- foreach ($orders as $order) {
- echo("\"" . iconv("UTF-8", "GBK", $order->trade_no) . "\",");
- echo("\"" . iconv("UTF-8", "GBK", $order->uid) . "\",");
- echo("\"" . iconv("UTF-8", "GBK", $order->price) . "\",");
- echo("\"" . iconv("UTF-8", "GBK", $order->status == 'PAID' ? '已支付' : '未支付') . "\",");
- echo("\"" . $order->created_at . "\",");
- echo("\"" . $order->pay_end_at . "\",");
- echo("\"" . iconv("UTF-8", "GBK", $order->send_order_id) . "\",");
- echo("\"" . iconv("UTF-8", "GBK//IGNORE", (string)$order->send_order_name) . "\",");
- echo("\"" . iconv("UTF-8", "GBK", $order->name) . "\"\r\n");
- }
- }
- exit();
- }
- /**
- * @apiVersion 1.0.0
- * @api {GET} trade/getChannelToday 获取当日订单数据
- * @apiGroup Trade
- * @apiName getChannelToday
- * @apiSuccess {Number} paid_number 成功订单数
- * @apiSuccess {Number} success_amount 成功总额
- * @apiSuccess {Number} unpaid_number 未支付订单数
- * @apiSuccessExample {json} Success-Response:
- *
- * {
- * "code": 0,
- * "msg": "",
- * "data": [
- * {
- * "paid_number": 2,
- * "unpaid_number": 112,
- * "success_amount": 120212,
- * }
- * ]
- * }
- */
- function channelTodayStat()
- {
- $today_data = OrderService::getChannelToday($this->getChannelId());
- $data = [
- 'unpaid_number' => (float)$today_data['total_num'] - (float)$today_data['paid_number'],
- 'success_amount' => (float)$today_data['success_amount'],
- 'paid_number' => (int)$today_data['paid_number'],
- ];
- return response()->success($data);
- }
- /**
- * @apiVersion 1.0.0
- * @api {GET} trade/getChannelTodayData 获取当日订单数据
- * @apiGroup Trade
- * @apiName getChannelTodayData
- * @apiSuccess {Number} amount 总成功总额
- * @apiSuccess {Number} paid_num 总成功订单数
- * @apiSuccess {Number} total_order_num 总订单数
- * @apiSuccess {Number} recharge_unpaid_number 普通未支付订单数
- * @apiSuccess {Number} recharge_paid_number 普通已支付订单数
- * @apiSuccess {Number} recharge_success_amount 普通充值总额
- * @apiSuccess {Number} total_order_num 总订单数
- * @apiSuccess {Number} total_order_num 总订单数
- * @apiSuccessExample {json} Success-Response:
- *
- * {
- * "code": 0,
- * "msg": "",
- * "data": [
- * {
- * "paid_number": 2,
- * "unpaid_number": 112,
- * "success_amount": 120212,
- * }
- * ]
- * }
- */
- function channelTodayData()
- {
- $distribution_channel_id = $this->getChannelId();
- $data = self::getChannelTodayData($distribution_channel_id);
-
- return response()->success($data);
- }
- /**
- * 账号级别的今日数据
- */
- function accountChannelTodayData()
- {
- $channel_user_id = $this->getChannelUserId();
- $channels = ChannelService::getByChannelUserId($channel_user_id);
- $data = [
- 'amount' => 0,
- 'paid_num' => 0,
- 'total_order_num' => 0,
- 'recharge_unpaid_number' => 0,
- 'recharge_paid_number' => 0,
- 'recharge_success_amount' => 0,
- 'year_unpaid_number' => 0,
- 'year_paid_number' => 0,
- 'year_success_amount' => 0,
- 'new_user_num' => 0,
- 'new_subscribe_user_num' => 0
- ];
- foreach($channels as $channel){
- $distribution_channel_id = $channel->id;
- \Log::info('getChannelTodayData:'.$distribution_channel_id);
- $one_data = self::getChannelTodayData($distribution_channel_id);
- $data['amount'] += $one_data['amount'];
- $data['paid_num'] += $one_data['paid_num'];
- $data['total_order_num'] += $one_data['total_order_num'];
- $data['recharge_unpaid_number'] += $one_data['recharge_unpaid_number'];
- $data['recharge_paid_number'] += $one_data['recharge_paid_number'];
- $data['recharge_success_amount'] += $one_data['recharge_success_amount'];
- $data['year_unpaid_number'] += $one_data['year_unpaid_number'];
- $data['year_paid_number'] += $one_data['year_paid_number'];
- $data['year_success_amount'] += $one_data['year_success_amount'];
- $data['new_user_num'] += $one_data['new_user_num'];
- $data['new_subscribe_user_num'] += $one_data['new_subscribe_user_num'];
- }
- $data['amount'] = round($data['amount'],2);
- $data['recharge_success_amount'] = round($data['recharge_success_amount'],2);
- $data['year_success_amount'] = round($data['year_success_amount'],2);
-
- return response()->success($data);
-
- }
-
- public static function getChannelTodayData($distribution_channel_id){
- $date = date('Y-m-d');
- $today_data = OrderService::getChannelTodayData($distribution_channel_id);
- $uv_pv = SendOrderService::getChannelPromotionTotalUvPv($distribution_channel_id, $date);
- $force_user_num = ForceSubscribeService::forceSubscribeUserCountByChannelIdAndDate($distribution_channel_id, $date, '');
-
- $data = [
- 'amount' => $today_data['amount'],
- 'paid_num' => $today_data['paid_num'],
- 'total_order_num' => $today_data['total_order_num'],
-
- 'recharge_unpaid_number' => $today_data['recharge_unpaid_number'],
- 'recharge_paid_number' => $today_data['recharge_paid_number'],
- 'recharge_success_amount' => $today_data['recharge_success_amount'],
-
- 'year_unpaid_number' => $today_data['year_unpaid_number'],
- 'year_paid_number' => $today_data['year_paid_number'],
- 'year_success_amount' => $today_data['year_success_amount'],
-
- 'new_user_num' => $uv_pv['uv'],
- 'new_subscribe_user_num' => $force_user_num
- ];
- return $data;
- }
-
- }
|