OrderTransformer.php 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Date: 2017/3/31
  5. * Time: 14:02
  6. */
  7. namespace General\Controllers\CompanyAuth\Transformers;
  8. use General\Helpers\CommonHelper;
  9. use General\Models\OfficialAccount\ForceSubscribeUsers;
  10. use General\Models\OfficialAccount\OfficialAccount;
  11. use General\Models\OfficialAccount\WechatKeywordMsgs;
  12. use General\Models\Order\Order;
  13. use General\Models\User\User;
  14. use General\Services\Order\OrderService;
  15. class OrderTransformer
  16. {
  17. public function transform($item)
  18. {
  19. $service = new OrderService();
  20. $uid = $item->uid;
  21. $app_id = $item->user && $item->user->force_subscribe_user ? $item->user->force_subscribe_user->appid : '';
  22. $opend_id = $item->user && $item->user->force_subscribe_user ? $item->user->force_subscribe_user->openid : '';
  23. if($app_id == ''){
  24. $app_id = empty($item->app_ids) ? '' : $item->app_ids[0];
  25. }
  26. if ($opend_id == ''){
  27. $res = $service->getUserOpenidsData($uid,$app_id);
  28. if ($res){
  29. $opend_id = $res['openid'];
  30. }
  31. }
  32. return [
  33. 'uid' => $uid,
  34. 'price' => (float) $item->price,
  35. 'trade_no' => $item->trade_no,
  36. 'status' => $item->status,
  37. 'created_at' => (string)$item->created_at,
  38. 'pay_end_at' => $item->pay_end_at,
  39. 'send_order_id' => $item->send_order_id,
  40. 'send_order_name' => $item->send_order_name,
  41. 'push_msg_id' => $item->inner_send_order_id,
  42. 'ip' => $item->create_ip,
  43. 'activity_id' => $item->activity_id,
  44. 'order_type' => $this->getOrderType($item->order_type),
  45. 'activity_name' => ($item->pay_merchant_source == 'MONTH') ? '包月' : ($item->activity ? (string) $item->activity->name : ''),
  46. 'keyword' => $this->getKeyword($item),
  47. 'user_charge_times' => (isset($item->pay_type) && $item->status == 'PAID') ? $item->pay_type : 0,
  48. 'bid' => CommonHelper::book_hash_encode($item->from_bid),
  49. 'register_time' => $item->user ? (string)$item->user->created_at : '',
  50. 'book_name' => $item->book_config ? $item->book_config->book_name : '',
  51. 'promotion_url' => $item->send_order ? CommonHelper::getPromotionUrl($item->send_order) : '',
  52. 'app_id' => $app_id,
  53. 'opend_id' => $opend_id,
  54. 'register_open_id' => $item->user ? $item->user->openid : '',
  55. 'subscribe_time' => $item->user && $item->user->force_subscribe_user ? $item->user->force_subscribe_user->subscribe_time : '',
  56. 'wechat_name' => $item->user && $item->user->force_subscribe_user && $item->user->force_subscribe_user->official_account ? $item->user->force_subscribe_user->official_account->nickname : '',
  57. ];
  58. }
  59. protected function getOrderType(string $type)
  60. {
  61. switch ($type) {
  62. case 'RECHARGE':
  63. return '普通充值';
  64. case 'MONTH':
  65. return '包月';
  66. case 'QUARTER':
  67. return '包季';
  68. case 'YEAR':
  69. return '包年';
  70. }
  71. }
  72. protected function getKeyword(Order $order)
  73. {
  74. if ($order->from_type && starts_with($order->from_type, 'keyword')) {
  75. $key_array = explode('_', $order->from_type);
  76. if (isset($key_array[1]) && !empty($key_array[1])) {
  77. $keyword_info = WechatKeywordMsgs::find($key_array[1]);
  78. return sprintf('%s(%s)', $keyword_info->keyword, $keyword_info->book_name);
  79. }
  80. }
  81. return '';
  82. }
  83. }