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; } }