SendOrderBreakevenStatsController.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: hp
  5. * Date: 2017/12/1
  6. * Time: 14:17
  7. */
  8. namespace App\Http\Controllers\Channel\SendOrder;
  9. use App\Http\Controllers\Channel\BaseController;
  10. use App\Http\Controllers\Channel\SendOrder\Transformers\SendOrderBreakevenStatsTransformer;
  11. use App\Modules\Statistic\Services\SendOrderBreakevenStatsService;
  12. use Illuminate\Http\Request;
  13. class SendOrderBreakevenStatsController extends BaseController
  14. {
  15. /**
  16. * @apiDefine sendOrder 派单
  17. */
  18. /**
  19. * @apiVersion 1.0.0
  20. * @api {GET} sendOrder/getSendOrderBreakevenStats 获取30日回本率数据
  21. * @apiGroup sendOrder
  22. * @apiName getSendOrderBreakevenStats
  23. * @apiParam {String} [start_date] 开始日期
  24. * @apiParam {String} [end_date] 结束日期
  25. *
  26. * @apiSuccess {Number} id id.
  27. * @apiSuccess {Number} distribution_channel_id 渠道id.
  28. * @apiSuccess {Number} official_account_id 服务号id.
  29. * @apiSuccess {String} official_account_name 服务号名称.
  30. * @apiSuccess {String} date 日期
  31. * @apiSuccess {Number} force_user_num 粉丝数
  32. * @apiSuccess {Number} total_force_user_num 总粉丝数
  33. * @apiSuccess {Number} unsubscribe_in_one_day_user_num 24小时取关用户数
  34. * @apiSuccess {String} created_at 创建时间
  35. * @apiSuccess {String} updated_at 更新时间
  36. * @apiSuccess {Number} recharge_amount_in_one_day 24小时充值
  37. * @apiSuccess {Number} recharge_amount_in_three_days 72小时充值
  38. * @apiSuccess {Number} recharge_amount_in_one_month 30天充值
  39. * @apiSuccess {Number} recharge_amount_in_two_months 60天充值
  40. * @apiSuccess {Number} recharge_amount_in_three_months 90天充值
  41. * @apiSuccessExample {json} Success-Response:
  42. *
  43. * {
  44. * "code": 0,
  45. * "msg": "",
  46. * "data": [
  47. * {
  48. * "id": 2,
  49. * "distribution_channel_id": 2,
  50. * "official_account_id": 1233,
  51. * "official_account_name": "杭州掌维",
  52. * "date": "2018-2-9",
  53. * "force_user_num": 11,
  54. * "total_force_user_num": 111,
  55. * "unsubscribe_in_one_day_user_num": 5,
  56. * "created_at": ""2017-12-01 10:20:04"",
  57. * "updated_at": ""2017-12-01 10:20:04"",
  58. * "recharge_amount_in_one_day": 9,
  59. * "recharge_amount_in_three_days": 6,
  60. * "recharge_amount_in_one_month": 23,
  61. * "recharge_amount_in_two_months":11,
  62. * "recharge_amount_in_three_months": 112
  63. * }
  64. * ]
  65. * }
  66. */
  67. function getSendOrderBreakevenStats(Request $request)
  68. {
  69. $params = [];
  70. $distribution_channel_id = $this->getChannelId();
  71. $request->has('end_date') && $request->input('end_date') && $params['end_date'] = $request->input('end_date');
  72. $request->has('start_date') && $request->input('start_date') && $params['start_date'] = $request->input('start_date');
  73. $params['distribution_channel_id'] = $distribution_channel_id;
  74. $data = SendOrderBreakevenStatsService::getInfos($params, false);
  75. return response()->pagination(new SendOrderBreakevenStatsTransformer(), $data);
  76. }
  77. /**
  78. * @apiVersion 1.0.0
  79. * @api {GET} sendOrder/exportSendOrderBreakevenStats 导出30日回本率数据
  80. * @apiGroup sendOrder
  81. * @apiName exportSendOrderBreakevenStats
  82. *
  83. * @apiParam {String} [start_date] 开始日期
  84. * @apiParam {String} [end_date] 结束日期
  85. * @apiSuccess {Number} id id.
  86. * @apiSuccess {Number} distribution_channel_id 渠道id.
  87. * @apiSuccess {Number} official_account_id 服务号id.
  88. * @apiSuccess {String} official_account_name 服务号名称.
  89. * @apiSuccess {String} date 日期
  90. * @apiSuccess {Number} force_user_num 粉丝数
  91. * @apiSuccess {Number} total_force_user_num 总粉丝数
  92. * @apiSuccess {Number} unsubscribe_in_one_day_user_num 24小时取关用户数
  93. * @apiSuccess {String} created_at 创建时间
  94. * @apiSuccess {String} updated_at 更新时间
  95. * @apiSuccess {Number} recharge_amount_in_one_day 24小时充值
  96. * @apiSuccess {Number} recharge_amount_in_three_days 72小时充值
  97. * @apiSuccess {Number} recharge_amount_in_one_month 30天充值
  98. * @apiSuccess {Number} recharge_amount_in_two_months 60天充值
  99. * @apiSuccess {Number} recharge_amount_in_three_months 90天充值
  100. * @apiSuccessExample {json} Success-Response:
  101. *
  102. * {
  103. * "code": 0,
  104. * "msg": "",
  105. * "data": [
  106. * {
  107. * "id": 2,
  108. * "distribution_channel_id": 2,
  109. * "official_account_id": 1233,
  110. * "official_account_name": "杭州掌维",
  111. * "date": "2018-2-9",
  112. * "force_user_num": 11,
  113. * "total_force_user_num": 111,
  114. * "unsubscribe_in_one_day_user_num": 5,
  115. * "created_at": ""2017-12-01 10:20:04"",
  116. * "updated_at": ""2017-12-01 10:20:04"",
  117. * "recharge_amount_in_one_day": 9,
  118. * "recharge_amount_in_three_days": 6,
  119. * "recharge_amount_in_one_month": 23,
  120. * "recharge_amount_in_two_months":11,
  121. * "recharge_amount_in_three_months": 112
  122. * }
  123. * ]
  124. * }
  125. */
  126. function exportSendOrderBreakevenStats(Request $request)
  127. {
  128. $params = [];
  129. $distribution_channel_id = $this->getChannelId();
  130. $params['distribution_channel_id'] = $distribution_channel_id;
  131. $request->has('end_date') && $request->input('end_date') && $params['end_date'] = $request->input('end_date');
  132. $request->has('start_date') && $request->input('start_date') && $params['start_date'] = $request->input('start_date');
  133. $data = SendOrderBreakevenStatsService::getInfos($params, true);
  134. header("Content-type:application/vnd.ms-excel");
  135. header("Content-Disposition:attachment;filename=" . "数据统计" . date("YmdHis") . ".csv");
  136. echo("\"" . mb_convert_encoding("\"日期\",\"渠道id\",\"服务号id\",\"服务号名称\",\"粉丝数\",\"总粉丝数\",\"24小时取关用户数\",\"创建时间\",\"更新时间\",\"24小时充值\",\"72小时充值\",\"30天充值\",\"60天充值\",\"90天充值\"\r\n", "GBK", "UTF-8") . "\",");
  137. if ($data) {
  138. foreach ($data as $item) {
  139. echo("\"" . mb_convert_encoding(date('Y-m-d', strtotime($item->date)), "GBK", "UTF-8") . "\",");
  140. echo("\"" . $item->distribution_channel_id . "\",");
  141. echo("\"" . $item->official_account_id . "\",");
  142. echo("\"" . mb_convert_encoding($item->official_account_name, "GBK", "UTF-8") . "\",");
  143. echo("\"" . $item->force_user_num . "\",");
  144. echo("\"" . $item->total_force_user_num . "\",");
  145. echo("\"" . $item->unsubscribe_in_one_day_user_num . "\",");
  146. echo("\"" . mb_convert_encoding(date('Y-m-d H:i:s', strtotime($item->created_at)), "GBK", "UTF-8") . "\",");
  147. echo("\"" . mb_convert_encoding(date('Y-m-d H:i:s', strtotime($item->updated_at)), "GBK", "UTF-8") . "\",");
  148. echo("\"" . $item->recharge_amount_in_one_day . "\",");
  149. echo("\"" . $item->recharge_amount_in_three_days . "\",");
  150. echo("\"" . $item->recharge_amount_in_one_month . "\",");
  151. echo("\"" . $item->recharge_amount_in_two_months . "\",");
  152. echo("\"" . $item->recharge_amount_in_three_months . "\"\r\n");
  153. }
  154. }
  155. exit();
  156. }
  157. }