BookOrderService.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. namespace App\Modules\Subscribe\Services;
  3. use App\Modules\Subscribe\Models\BookOrder;
  4. use DB;
  5. class BookOrderService
  6. {
  7. /**
  8. * 获取订购记录
  9. * @param $uid
  10. * @return mixed
  11. */
  12. public static function getRecord($uid, $page_size = 15)
  13. {
  14. return BookOrder::getRecord($uid, $page_size);
  15. }
  16. /**
  17. * 获取订购记录
  18. * @param $uid
  19. * @return mixed
  20. */
  21. public static function getRecordByuidBid($uid, $bid)
  22. {
  23. return BookOrder::getRecordByuidBid($uid, $bid);
  24. }
  25. /**
  26. * 是否订阅短片
  27. * @param $uid
  28. * @return mixed
  29. */
  30. public static function isHasBookOrder($uid){
  31. $result = BookOrder::where('uid',$uid)->select('id')->first();
  32. if($result){
  33. return true;
  34. }
  35. return false;
  36. }
  37. /**
  38. * 三日内是否订阅短片 crm上架状态需要
  39. * @param $uid
  40. * @return mixed
  41. */
  42. public static function isHasBookOrderInThreeDay($uid){
  43. $result = BookOrder::where('uid',$uid)->select('id')->where('created_at','>=',date('Y-m-d',time()-86400*3))->first();
  44. if($result){
  45. return true;
  46. }
  47. return false;
  48. }
  49. /**
  50. * 根据用户id获取用户的订购记录
  51. * @param $uid 用户id
  52. * @param string $startTime 开始时间
  53. * @param string $endTime 结束时间
  54. * @param bool $isAll 获取所有
  55. * @return mixed
  56. */
  57. public static function getRecordByUid($uid, $startTime = "", $endTime = "", $isAll = false)
  58. {
  59. return BookOrder::getRecordByUid($uid, $startTime, $endTime, $isAll);
  60. }
  61. static function save_book_order($data)
  62. {
  63. $insert_data = array();
  64. $insert_data['uid'] = $data['uid'];
  65. $insert_data['distribution_channel_id'] = $data['distribution_channel_id'];
  66. $insert_data['fee'] = $data['fee'];
  67. $insert_data['bid'] = $data['bid'];
  68. $insert_data['book_name'] = $data['book_name'];
  69. $insert_data['send_order_id'] = $data['send_order_id'];
  70. $insert_data['charge_balance'] = $data['charge_balance'];
  71. $insert_data['reward_balance'] = $data['reward_balance'];
  72. return BookOrder::save_book_order($insert_data);
  73. }
  74. /**
  75. * data = [uid,fee,u,distribution_channel_id,bid,book_name,send_order_id]
  76. * 单本订购并扣余额
  77. * @param $uid
  78. * @return mixed
  79. */
  80. public static function addOrderRecodeAndDecrUserBalance(array $data, $uid)
  81. {
  82. return BookOrder::addOrderRecodeAndDecrUserBalance($data, $uid);
  83. }
  84. public static function getBookTotalConsume($uid)
  85. {
  86. return BookOrder::where('uid', $uid)->sum('fee');
  87. }
  88. /**
  89. * 根据用户id获取用户的一段时间内的消费总额
  90. * @param $uid 用户id
  91. * @param string $startTime 开始时间
  92. * @param string $endTime 结束时间
  93. * @return mixed
  94. */
  95. public static function getBookTotalConsumeByUserIdAndTime($uid, $startTime = "", $endTime = "")
  96. {
  97. return BookOrder::getBookTotalConsumeByUserIdAndTime($uid, $startTime, $endTime);
  98. }
  99. /**
  100. * @param $send_order_id
  101. * @param $start_time
  102. * @param $end_time
  103. * @return array ['total'=>133,'charge_balance'=>45,'reward_balance'=>$reward_balance]
  104. */
  105. public static function getSendorderTotal($send_order_id, $start_time, $end_time)
  106. {
  107. //$charge_balance = BookOrder::where('send_order_id', $send_order_id)->whereBetween('created_at', [$start_time, $end_time])->sum('charge_balance');
  108. //$reward_balance = BookOrder::where('send_order_id', $send_order_id)->whereBetween('created_at', [$start_time, $end_time])->sum('reward_balance');
  109. //$fee = BookOrder::where('send_order_id', $send_order_id)->whereBetween('created_at', [$start_time, $end_time])->sum('fee');
  110. $res = BookOrder::select(DB::raw('sum(charge_balance) as charge_balance_sum,sum(reward_balance) as reward_balance_sum,sum(fee) as fee_sum'))
  111. ->where('send_order_id', $send_order_id)
  112. ->whereBetween('created_at', [$start_time, $end_time])
  113. ->first();
  114. return [
  115. 'total' => $res->fee_sum,
  116. 'charge_balance' => $res->charge_balance_sum,
  117. 'reward_balance' => $res->reward_balance_sum
  118. ];
  119. //return ['total' => $fee, 'charge_balance' => $charge_balance, 'reward_balance' => $reward_balance];
  120. }
  121. public static function getOrderInfos($id_begin, $id_end)
  122. {
  123. return BookOrder::getOrderInfos($id_begin, $id_end);
  124. }
  125. public static function getCount()
  126. {
  127. return BookOrder::getOrderInfoCount();
  128. }
  129. }