XcxSendOrderController.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <?php
  2. namespace App\Http\Controllers\Channel\XChengXu;
  3. use App\Http\Controllers\Channel\BaseController;
  4. use App\Modules\Xcx\Services\XcxSendOrderService;
  5. use App\Modules\User\Models\Xcxuser;
  6. use App\Modules\Xcx\Models\XcxSendOrder;
  7. use App\Modules\Xcx\Models\XcxOrder;
  8. use Hashids;
  9. use Illuminate\Http\Request;
  10. use SimpleSoftwareIO\QrCode\Facades\QrCode;
  11. use App\Http\Controllers\Channel\XChengXu\Transformers\XcxSendOrderTransformer;
  12. class XcxSendOrderController extends BaseController
  13. {
  14. /**
  15. * @apiDefine sendOrder 派单
  16. */
  17. /**
  18. * @apiVersion 1.0.0
  19. * @api {GET} getSendOrders 获取派单列表
  20. * @apiGroup sendOrder
  21. * @apiName getSendOrders
  22. * @apiParam{Number} [sendOrder_id] 派单id(可不传)
  23. * @apiParam{String} [start_time] 开始时间(可不传)
  24. * @apiParam{String} [end_time] 结束时间(可不传)
  25. * @apiParam{String} [pre_send_date_start] 预计发布时间开始(可不传)
  26. * @apiParam{String} [pre_send_date_end] 预计发布时间结束(可不传)
  27. * @apiSuccess {Number} id 派单id.
  28. * @apiSuccess {String} distribution_channel_id 渠道id
  29. * @apiSuccess {String} name 渠道名称
  30. * @apiSuccess {String} updated_at 更新时间
  31. * @apiSuccess {String} created_at 创建时间
  32. * @apiSuccess {String} pre_send_date 预计发布时间
  33. * @apiSuccess {Number} remark 备注
  34. * @apiSuccess {Number} star_num 星星数
  35. * @apiSuccess {Number} cost 成本
  36. * @apiSuccess {Number} totalChargeAmount 充值总额数
  37. * @apiSuccess {Number} totalOrderNum 订单总数
  38. * @apiSuccess {Number} sucOrderNum 成功订单数
  39. * @apiSuccess {Number} addUserNum 新增用户
  40. * @apiSuccessExample {json} Success-Response:
  41. *
  42. * {
  43. * "code": 0,
  44. * "msg": "",
  45. *
  46. * "data": [
  47. * {
  48. * }
  49. */
  50. function getSendOrders(Request $request)
  51. {
  52. $distribution_channel_id = $this->getChannelId();
  53. $name = $request->has('name') ? $request->input('name') : '';
  54. $id = $sendOrderId = $request->has('sendOrder_id') ? $request->input('sendOrder_id') : '';
  55. $promotion_type = $request->has('promotion_type') ? $request->input('promotion_type') : '';
  56. $pre_send_date_end = $request->has('pre_send_date_end') ? $request->input('pre_send_date_end') : '';
  57. $pre_send_date_start = $request->has('pre_send_date_start') ? $request->input('pre_send_date_start') : '';
  58. $start_time = $request->has('start_time') && !empty($request->input('start_time')) ? $request->input('start_time') : '';
  59. $end_time = $request->has('end_time') && !empty($request->input('end_time')) ? date('Y-m-d H:i:s', strtotime($request->input('end_time')) + 86400 - 1) : '';
  60. $data = array();
  61. $data = XcxSendOrderService::search(compact(
  62. 'distribution_channel_id',
  63. 'name',
  64. 'pre_send_date_end',
  65. 'pre_send_date_start',
  66. 'promotion_type',
  67. 'pre_send_date',
  68. 'start_time',
  69. 'end_time',
  70. 'id'
  71. ));
  72. foreach ($data as $item) {
  73. $sendOrderId = $item->id;
  74. //充值总额数
  75. $item->totalChargeAmount = XcxOrder::getTotalChargeAmount($sendOrderId,$distribution_channel_id);
  76. //订单总数
  77. $item->totalOrderNum = XcxOrder::getTotalOrderNum($sendOrderId,$distribution_channel_id);
  78. //成功订单数
  79. $item->sucOrderNum = XcxOrder::getSucOrderNum($sendOrderId,$distribution_channel_id);
  80. //新增用户
  81. $item->addUserNum = Xcxuser::getAddUserNum($sendOrderId,$distribution_channel_id);
  82. // 海报
  83. if($item->promotion_type == 'POSTER_EXTEND'){
  84. $item->promotion_type_name = '海报推广';
  85. $item->promotion_url = 'http://channel.zhuishuyun.com/xcx/yun?channel_id='.$distribution_channel_id.'&xcx_send_order_id='.$sendOrderId;
  86. }
  87. // U参
  88. else{
  89. $item->promotion_type_name = '参数推广';
  90. $item->promotion_url = 'pages/index/index?xcx_send_order_id='.$sendOrderId;
  91. }
  92. \Log::info($item);
  93. }
  94. return response()->pagination(new XcxSendOrderTransformer, $data);
  95. }
  96. /**
  97. * @apiVersion 1.0.0
  98. * @apiDescription 派单列表导出
  99. * @api {GET} sendOrder/exportSendOrders 派单列表导出
  100. * @apiGroup sendOrder
  101. * @apiName exportSendOrders
  102. * @apiParam{Number} [sendOrder_id] 派单id(可不传)
  103. * @apiParam{Number} [book_id] 书本id(可不传)
  104. * @apiParam{String} [book_name] 书名(可不传)
  105. * @apiParam{String} [name] 派单名称(可不传)
  106. * @apiParam{String} [pre_send_date_start] 预计发布时间开始(可不传)
  107. * @apiParam{String} [pre_send_date_end] 预计发布时间结束(可不传)
  108. * @apiParam{String} [start_time] 开始时间(可不传)
  109. * @apiParam{String} [end_time] 结束时间(可不传)
  110. * @apiParam{String} [promotion_point] 派单源 微信(默认)or浏览器(微信:1,浏览器:2)
  111. * @apiSuccess {Number} id 派单id.
  112. * @apiSuccess {String} distribution_channel_id 渠道id
  113. * @apiSuccess {String} entrance 入口
  114. * @apiSuccess {String} name 渠道名称
  115. * @apiSuccess {Number} book_id 书本id
  116. * @apiSuccess {String} channel_type 渠道类型
  117. * @apiSuccess {Number} document_cover_id 文案封面id
  118. * @apiSuccess {Number} headline_id 标题id
  119. * @apiSuccess {Number} body_template_id ID. 内容模板id
  120. * @apiSuccess {Number} original_guide_id 原文引导id
  121. * @apiSuccess {Number} subscribe_chapter_id 关注章节ID
  122. * @apiSuccess {String} book_name 图书名称
  123. * @apiSuccess {String} chapter_name 章节名称
  124. * @apiSuccess {Number} cost 成本
  125. * @apiSuccess {String} updated_at 更新时间
  126. * @apiSuccess {String} created_at 创建时间
  127. * @apiSuccess {String} subscribe_chapter_name 关注章节名称
  128. * @apiSuccess {String} subscribe_chapter_seq 关注章节序号
  129. * @apiSuccess {Number} remark 备注
  130. * @apiSuccess {Number} star_num 星星数
  131. * @apiSuccess {Number} totalChargeAmount 充值总额数
  132. * @apiSuccess {Number} registerNum 注册数
  133. * @apiSuccess {Number} payUserNum 付费用户数
  134. * @apiSuccess {Number} clickNum 点击数数
  135. * @apiSuccess {Number} fansNum 粉丝数
  136. * @apiSuccess {Number} promotion_page_id 推广页面id
  137. * @apiSuccess {String} redirect_url 重定向url
  138. * @apiSuccessExample {json} Success-Response:
  139. *
  140. * {
  141. * "code": 0,
  142. * "msg": "",
  143. *
  144. * "data": [
  145. * {
  146. * }
  147. * ]
  148. * }
  149. */
  150. function exportSendOrders(Request $request)
  151. {
  152. set_time_limit(0);
  153. $distribution_channel_id = $this->getChannelId();
  154. exit();
  155. }
  156. /**
  157. * @apiVersion 1.0.0
  158. * @apiDescription 生成推广的派单
  159. * @api {POST} createOrder 生成推广的派单
  160. * @apiGroup sendOrder
  161. * @apiName createOrder
  162. * @apiParam{Number} cost 成本(可选).
  163. * @apiParam{String} name 派单渠道名称.
  164. * @apiParam{String} promotion_type 推广类型[POSTER_EXTEND、PARAM_EXTEND]. 海报推广、参数推广
  165. * @apiSuccess {Number} id 派单id(推广U参)
  166. * @apiSuccess {String} name 派单名称
  167. * @apiSuccessExample {json} Success-Response:
  168. * {
  169. * "code": 0,
  170. * "msg": "",
  171. * "data":{"id":5,"name":"派单名称", "promotion_url":"promotion_url"}
  172. * }
  173. */
  174. function createOrder(Request $request)
  175. {
  176. $name = $request->has('name') ? $request->input('name') : '';
  177. $cost = $request->has('cost') ? $request->input('cost') : 0;
  178. $promotion_type = $request->has('promotion_type') ? $request->input('promotion_type') : '';
  179. if (!$name || !$promotion_type) return response()->error('PARAM_EMPTY');
  180. $distribution_channel_id = $this->getChannelId();
  181. $sendOrder = XcxSendOrderService::createOrder(compact('name', 'promotion_type', 'cost', 'distribution_channel_id'));
  182. $sendOrderId = $sendOrder->id;
  183. // 海报
  184. if($promotion_type == 'POSTER_EXTEND'){
  185. $promotion_url = 'http://channel.zhuishuyun.com/xcx/yun?channel_id='.$distribution_channel_id.'&xcx_send_order_id='.$sendOrderId;
  186. }
  187. // U参
  188. else{
  189. $promotion_url = 'pages/index/index?xcx_send_order_id='.$sendOrderId;
  190. }
  191. return response()->success(['id' => $sendOrder->id, 'name' => $name,'promotion_url'=>$promotion_url]);
  192. }
  193. }