OrderService.php 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: hp
  5. * Date: 2017/11/21
  6. * Time: 10:42
  7. */
  8. namespace App\Modules\Trade\Services;
  9. use App\Modules\Trade\Models\Order;
  10. use Redis;
  11. use DB;
  12. class OrderService
  13. {
  14. //获取派单累计充值(追踪用户)
  15. static function getMonthRechargeAmountChannelIds($params = [])
  16. {
  17. $end_time = isset($params['end_time']) ? $params['end_time'] : '';
  18. $begin_time = isset($params['begin_time']) ? $params['begin_time'] : '';
  19. $distribution_channel_ids = isset($params['distribution_channel_ids']) ? $params['distribution_channel_ids'] : 0;
  20. $distribution_channel_ids = implode(',', $distribution_channel_ids);
  21. if ($distribution_channel_ids && $begin_time && $end_time) {
  22. $sql = "SELECT SUM(price) as amount FROM send_orders JOIN orders ON orders.send_order_id=send_orders.id
  23. WHERE send_orders.distribution_channel_id IN (" . $distribution_channel_ids . ")
  24. AND orders.`status`='PAID' AND send_orders.send_time BETWEEN '{$begin_time}' AND '{$end_time}'
  25. ";
  26. if (isset($params['day_count']) && $params['day_count']) {
  27. $sql = $sql . " AND (UNIX_TIMESTAMP(orders.created_at)-UNIX_TIMESTAMP(send_orders.send_time))<=" . ($params['day_count'] * 86400);
  28. }
  29. $data = DB::select($sql);
  30. return (float) $data[0]->amount;
  31. }
  32. return 0;
  33. }
  34. //获取派单累计充值(追踪用户)
  35. static function getPromotionRegUserRechargeAmountChannelIds($params = [])
  36. {
  37. $end_time = isset($params['end_time']) ? $params['end_time'] : '';
  38. $begin_time = isset($params['begin_time']) ? $params['begin_time'] : '';
  39. $distribution_channel_ids = isset($params['distribution_channel_ids']) ? $params['distribution_channel_ids'] : 0;
  40. $distribution_channel_ids = implode(',', $distribution_channel_ids);
  41. if ($distribution_channel_ids && $begin_time && $end_time) {
  42. $sql = "SELECT SUM(price) as amount FROM send_orders JOIN users ON users.send_order_id=send_orders.id
  43. JOIN orders ON orders.uid=users.id
  44. WHERE send_orders.distribution_channel_id IN (" . $distribution_channel_ids . ")
  45. AND orders.`status`='PAID' AND send_orders.send_time BETWEEN '{$begin_time}' AND '{$end_time}'
  46. ";
  47. if (isset($params['day_count']) && $params['day_count']) {
  48. $sql = $sql . " AND (UNIX_TIMESTAMP(orders.created_at)-UNIX_TIMESTAMP(send_orders.send_time))<=" . ($params['day_count'] * 86400);
  49. }
  50. $data = DB::select($sql);
  51. return (float) $data[0]->amount;
  52. }
  53. return 0;
  54. }
  55. /**
  56. * 查询订单
  57. * @param array $params [distribution_channel_id、begin_time、end_time、uid(用户ID)、send_order_id(派单ID)、trade_no(订单号)]
  58. * @param boolean $is_all [是否返回全部,默认否]
  59. * @return [type] [description]
  60. */
  61. static function search($params = [], $is_all = false)
  62. {
  63. return Order::search($params, $is_all);
  64. }
  65. /**
  66. * 查询订单
  67. * @param array $params [distribution_channel_id、begin_time、end_time、uid(用户ID)、send_order_id(派单ID)、trade_no(订单号)]
  68. */
  69. static function searchObj($params = [])
  70. {
  71. return Order::searchObj($params);
  72. }
  73. /**
  74. * 获取订单总额
  75. * @param array $params [distribution_channel_id、begin_time、end_time、uid、send_order_id]
  76. */
  77. static function getAmount($params = [])
  78. {
  79. return Order::getAmount($params);
  80. }
  81. static function getAmountV2($params = [])
  82. {
  83. return Order::getAmountV2($params);
  84. }
  85. /**
  86. * 获取付费用户数
  87. * @param array $params [send_order_id]
  88. */
  89. static function getPayUserNum($send_order_id)
  90. {
  91. return Order::getPayUserNum($send_order_id);
  92. }
  93. /**
  94. * 获取VIP付费用户数
  95. * @param array $params [send_order_id]
  96. */
  97. static function getVipPayUserNum($send_order_id)
  98. {
  99. return Order::getVipPayUserNum($send_order_id);
  100. }
  101. /**
  102. * 获取普通付费用户数
  103. * @param array $params [send_order_id]
  104. */
  105. static function getNormaPayUserNum($send_order_id)
  106. {
  107. return Order::getNormalPayUserNum($send_order_id);
  108. }
  109. /**
  110. *获取派单下的订单总数
  111. * @param array $params [send_order_id]
  112. */
  113. static function getOrderCount($send_order_id)
  114. {
  115. return Order::getOrderCount($send_order_id);
  116. }
  117. /**
  118. *获取活动下的订单数
  119. * @param array $params [$activity_id]
  120. */
  121. static function getActivityOrderNum($params = [])
  122. {
  123. return Order::getActivityOrderNum($params);
  124. }
  125. /**
  126. *获取派单下的普通用户的订单总数
  127. * @param array $params [send_order_id]
  128. */
  129. static function getNormalOrderCount($send_order_id)
  130. {
  131. return Order::getNormalOrderCount($send_order_id);
  132. }
  133. /**
  134. *获取派单下的VIP用户的订单总数
  135. * @param array $params [send_order_id]
  136. */
  137. static function getVipOrderCount($send_order_id)
  138. {
  139. return Order::getVipOrderCount($send_order_id);
  140. }
  141. /**
  142. * 获取渠道当日数据
  143. * @param $distribution_channel_id 分销渠道ID
  144. * @return [成功订单总额、成功订单数]
  145. */
  146. static function getChannelToday($distribution_channel_id)
  147. {
  148. $data = Order::getChannelToday($distribution_channel_id);
  149. $data['total_num'] = Redis::hget('order_stat:' . $distribution_channel_id, 'order_num_' . date('Y-m-d'));
  150. return $data;
  151. }
  152. /**
  153. * 获取渠道当日数据 new
  154. * @param $distribution_channel_id 分销渠道ID
  155. * @return [成功订单总额、成功订单数]
  156. */
  157. static function getChannelTodayData($distribution_channel_id)
  158. {
  159. $data = Order::getChannelTodayData($distribution_channel_id);
  160. return $data;
  161. }
  162. /**
  163. * 获取渠道当日数据
  164. * @param $distribution_channel_id 分销渠道ID
  165. * @return [成功订单总额、成功订单数、总订单数]
  166. */
  167. static function getChannelDateOrderInfo($distribution_channel_id, $date)
  168. {
  169. $data = Order::getChannelDateOrderInfo($distribution_channel_id, $date);
  170. $data['total_num'] = Redis::hget('order_stat:' . $distribution_channel_id, 'order_num_' . $date);
  171. return $data;
  172. }
  173. /**
  174. * 获取渠道对应支付通道总额
  175. * @param array $params [distribution_channel_id、begin_time、end_time]
  176. * @return array
  177. * [
  178. * 'ALIPAY'=>121,
  179. * 'OFFICIAL'=2323
  180. * ]
  181. */
  182. static function getPayMerchantSourceAmount($params = [])
  183. {
  184. return Order::getPayMerchantSourceAmount($params);
  185. }
  186. //获取渠道日付费用户数
  187. static function getDayPayUserNumByChannelId($distribution_channel_id, $date)
  188. {
  189. return Order::getDayPayUserNumByChannelId($distribution_channel_id, $date);
  190. }
  191. //获取渠道日包年vip付费用户数
  192. static function getDayVipPayUserNumByChannelId($distribution_channel_id, $date)
  193. {
  194. return Order::getDayVipPayUserNumByChannelId($distribution_channel_id, $date);
  195. }
  196. //获取渠道日普通充值付费用户数
  197. static function getDayRechargePayUserNumByChannelId($distribution_channel_id, $date)
  198. {
  199. return Order::getDayRechargePayUserNumByChannelId($distribution_channel_id, $date);
  200. }
  201. //获取指定日期普通充值未支付订单数、支付订单数、总额
  202. static function getChannelDayTicketRechargeData($distribution_channel_id, $date)
  203. {
  204. return Order::getChannelDayTicketRechargeData($distribution_channel_id, $date);
  205. }
  206. //获取指定日期包年充值未支付订单数、支付订单数、总额
  207. static function getChannelDayYearRechargeData($distribution_channel_id, $date)
  208. {
  209. return Order::getChannelDayYearRechargeData($distribution_channel_id, $date);
  210. }
  211. //获取渠道日首充数据
  212. static function getChannelDayFirstRechargeData($distribution_channel_id, $date)
  213. {
  214. return Order::getChannelDayFirstRechargeData($distribution_channel_id, $date);
  215. }
  216. //获取派单累计充值(追踪用户)
  217. static function getPromotionRegUserRechargeAmount($params)
  218. {
  219. return Order::getPromotionRegUserRechargeAmount($params);
  220. }
  221. /**
  222. * 获取服务号下面的充值金额
  223. * @param $start_time 开始时间
  224. * @param $end_time 结束时间
  225. */
  226. static function getRechargeAmountGroupByOfficial($date)
  227. {
  228. return Order::getRechargeAmountGroupByOfficialAccount($date);
  229. }
  230. static function getRechargeAmountGroupByPayMerchant($params)
  231. {
  232. return Order::getRechargeAmountGroupByPayMerchant($params);
  233. }
  234. /**
  235. * 获取派单累计充值(追踪用户)
  236. * @param array $params
  237. * @return float
  238. */
  239. static function getPromotionRegUserRechargeAmountBySendOrerId($params = [])
  240. {
  241. $end_time = isset($params['end_time']) ? $params['end_time'] : '';
  242. $start_time = isset($params['start_time']) ? $params['start_time'] : '';
  243. $send_order_id = isset($params['send_order_id']) ? $params['send_order_id'] : 0;
  244. if ($send_order_id) {
  245. if ($start_time && $end_time) {
  246. $data = DB::select("select sum(price) amount from orders where status='PAID' and created_at >= '{$start_time}' and created_at <= '{$end_time}' and uid in (select id from users where send_order_id = '{$send_order_id}' )");
  247. } else {
  248. $data = DB::select("select sum(price) amount from orders where status='PAID' and uid in (select id from users where send_order_id = '{$send_order_id}' )");
  249. }
  250. return (float) $data[0]->amount;
  251. }
  252. }
  253. }