OrderDayStatController.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: hp
  5. * Date: 2017/12/1
  6. * Time: 11:37
  7. */
  8. namespace App\Http\Controllers\Channel\Trade;
  9. use App\Http\Controllers\Channel\BaseController;
  10. use App\Http\Controllers\Channel\Trade\Transformers\OrderDayStatTransformer;
  11. use App\Modules\Trade\Services\OrderDayStatService;
  12. use App\Modules\Channel\Services\ChannelService;
  13. use Illuminate\Http\Request;
  14. class OrderDayStatController extends BaseController
  15. {
  16. /**
  17. * @apiDefine Trade 订单
  18. */
  19. /**
  20. * @apiVersion 1.0.0
  21. * @api {GET} trade/orderDayStats 获取日订单统计数据
  22. * @apiGroup Trade
  23. * @apiName orderDayStats
  24. * @apiParam {Number} begin_time 开始时间.
  25. * @apiParam {Number} end_time 结束时间.
  26. * @apiSuccess {Number} date 日期.
  27. * @apiSuccess {String} pay_success_user_num 总付费用户数
  28. * @apiSuccess {String} ticket_recharge_user_num 普通充值用户数.
  29. * @apiSuccess {String} year_recharge_user_num 包年VIP充值用户数.
  30. * @apiSuccess {String} total_recharge_amount 总充值金额.
  31. * @apiSuccess {Number} unpaid_num 未支付用户数
  32. * @apiSuccess {String} paid_num 付费用用户数
  33. * @apiSuccess {String} promotion_total_uv uv
  34. * @apiSuccess {String} promotion_total_pv pv
  35. * @apiSuccess {String} force_user_num 强关用户数
  36. * @apiSuccessExample {json} Success-Response:
  37. *
  38. * {
  39. * "code": 0,
  40. * "msg": "",
  41. *
  42. * "data": [
  43. * {
  44. * "date": "2017-12-01",
  45. * "pay_success_user_num": 1212,
  46. * "ticket_recharge_user_num": 1212,
  47. * "year_recharge_user_num": 1212,
  48. * "total_recharge_amount": 1212,
  49. * "unpaid_num": 0,
  50. * "paid_num": 12,
  51. * "promotion_total_uv": 1512094804,
  52. * "promotion_total_pv": 1512094804,
  53. * "force_user_num": 1512094804
  54. * }
  55. * ]
  56. * }
  57. */
  58. function search(Request $request)
  59. {
  60. $begin_time = $request->has('begin_time') ? $request->input('begin_time') : '';
  61. $end_time = $request->has('end_time') ? $request->input('end_time') : '';
  62. if(!$begin_time || !$end_time){
  63. //return response()->error('PARAM_ERROR');
  64. }
  65. //if()
  66. $distribution_channel_id = $this->getChannelId();
  67. if(!$distribution_channel_id) return response()->error('PARAM_ERROR');
  68. $stats = OrderDayStatService::search(compact('distribution_channel_id','begin_time','end_time'));
  69. return response()->pagination(new OrderDayStatTransformer(), $stats);
  70. }
  71. /**
  72. * 账号级别的日统计
  73. * @param Request $request
  74. */
  75. function accountSearch(Request $request)
  76. {
  77. $begin_time = $request->has('begin_time') ? $request->input('begin_time') : '';
  78. $end_time = $request->has('end_time') ? $request->input('end_time') : '';
  79. if(!$begin_time || !$end_time){
  80. //return response()->error('PARAM_ERROR');
  81. }
  82. $channel_user_id = $this->getChannelUserId();
  83. if(!$channel_user_id) return response()->error('PARAM_ERROR');
  84. $channels = ChannelService::getByChannelUserId($channel_user_id);
  85. $stats = [];
  86. $distribution_channel_id = [];
  87. foreach($channels as $channel){
  88. $distribution_channel_id[] = $channel->id;
  89. }
  90. \Log::info('AccountSearch:$channel_user_id:'.$channel_user_id.' $distribution_channel_id:'.json_encode($distribution_channel_id));
  91. $stats = OrderDayStatService::AccountSearch(compact('distribution_channel_id','begin_time','end_time'));
  92. return response()->pagination(new OrderDayStatTransformer(), $stats);
  93. }
  94. /**
  95. * @apiVersion 1.0.0
  96. * @api {GET} trade/exportOrderDayStats 导出日订单统计数据
  97. * @apiGroup Trade
  98. * @apiName exportOrderDayStats
  99. * @apiParam {Number} begin_time 开始时间.
  100. * @apiParam {Number} end_time 结束时间.
  101. * @apiSuccess {Number} date 日期.
  102. * @apiSuccess {String} pay_success_user_num 总付费用户数
  103. * @apiSuccess {String} ticket_recharge_user_num 普通充值用户数.
  104. * @apiSuccess {String} year_recharge_user_num 包年VIP充值用户数.
  105. * @apiSuccess {String} total_recharge_amount 总充值金额.
  106. * @apiSuccess {Number} unpaid_num 未支付用户数
  107. * @apiSuccess {String} paid_num 付费用用户数
  108. * @apiSuccess {String} promotion_total_uv uv
  109. * @apiSuccess {String} promotion_total_pv pv
  110. * @apiSuccess {String} force_user_num 强关用户数
  111. */
  112. function export(Request $request)
  113. {
  114. $begin_time = $request->has('begin_time') ? $request->input('begin_time') : '';
  115. $end_time = $request->has('end_time') ? $request->input('end_time') : '';
  116. $distribution_channel_id = $this->getChannelId();
  117. if(!$distribution_channel_id) return response()->error('PARAM_ERROR');
  118. $stats = OrderDayStatService::search(compact('distribution_channel_id','begin_time','end_time'),true);
  119. header("Content-type:application/vnd.ms-excel");
  120. header("Content-Disposition:attachment;filename=" . "订单列表" . date("YmdHis") . ".csv");
  121. echo iconv("UTF-8","GBK","\"日期\",\"充值总额\",\"普通充值用户数\",\"年费VIP人数\",\"成功订单数\",\"订单总数\",\"当日新增用户\",\"当日新用户关注\"\r\n");
  122. if($stats)
  123. {
  124. foreach($stats as $stat){
  125. echo("\"" . $stat->date . "\",");
  126. echo("\"" . $stat->total_recharge_amount . "\",");
  127. echo("\"" . $stat->ticket_recharge_user_num . "\",");
  128. echo("\"" . $stat->year_recharge_user_num . "\",");
  129. echo("\"" . $stat->paid_num . "\",");
  130. echo("\"" . ($stat->unpaid_num+$stat->paid_num) . "\",");
  131. echo("\"" . $stat->promotion_total_uv . "\",");
  132. echo("\"" . $stat->force_user_num . "\"\r\n");
  133. }
  134. }
  135. exit();
  136. }
  137. }