ChapterOrderService.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. namespace App\Services\Subscribe;
  3. use App\Models\Subscribe\ChapterOrder;
  4. use App\Models\User\User;
  5. use App\Modules\User\Services\UserService;
  6. use Illuminate\Support\Facades\DB;
  7. class ChapterOrderService
  8. {
  9. //判断是否订购
  10. public static function checkIsOrdered($uid, $bid, $cid)
  11. {
  12. return (new ChapterOrder($uid))->checkIsOrdered($bid, $cid);
  13. }
  14. //判断本书是否订购过
  15. public static function checkBookIsOrdered($uid, $bid)
  16. {
  17. return (new ChapterOrder($uid))->checkBookIsOrdered($bid);
  18. }
  19. /**
  20. * 根据uid章节订购信息
  21. * @return
  22. */
  23. public function getByUid($uid, $page_size)
  24. {
  25. return (new ChapterOrder($uid))->getByUid($page_size);
  26. }
  27. /**
  28. * 获取用户订阅消费总额
  29. * @param $uid
  30. * @return mixed
  31. */
  32. public function getUserCostSum($uid)
  33. {
  34. $chapter_model = new ChapterOrder($uid);
  35. return $chapter_model->where('uid', $uid)->sum('fee');
  36. }
  37. /**
  38. * 根据用户id获取用户的订购记录
  39. * @param $uid 用户id
  40. * @param string $startTime 开始时间
  41. * @param string $endTime 结束时间
  42. * @param bool $isAll 获取所有
  43. * @return mixed
  44. */
  45. public static function getRecordByUid($uid, $startTime = "", $endTime = "", $isAll = false)
  46. {
  47. $chapter_model = new ChapterOrder($uid);
  48. $chapter = $chapter_model->where('uid', $uid)->orderBy('updated_at', 'desc');
  49. if ($startTime) {
  50. $chapter->where('updated_at', '>=', $startTime);
  51. }
  52. if ($endTime) {
  53. $chapter->where('updated_at', '<=', $endTime . ' 23:59:59');
  54. }
  55. if ($isAll) {
  56. return $chapter->get();
  57. } else {
  58. return $chapter->paginate();
  59. }
  60. }
  61. /**
  62. * 获取章节消费总额
  63. * @param $uid
  64. * @return mixed
  65. */
  66. public static function getChapterTotalConsume($uid)
  67. {
  68. $chapter_model = new ChapterOrder($uid);
  69. return $chapter_model->where('uid', $uid)->sum('fee');
  70. }
  71. /**
  72. * 获取章节消费总额
  73. * @param $uid
  74. * @return mixed
  75. */
  76. public static function getChapterTotalConsumeByUserIdAndTime($uid, $startTime = "", $endTime = "")
  77. {
  78. $chapter_model = new ChapterOrder($uid);
  79. $chapter = $chapter_model->where('uid', $uid);
  80. if ($startTime) {
  81. $chapter->where('updated_at', '>=', $startTime);
  82. }
  83. if ($endTime) {
  84. $chapter->where('updated_at', '<=', $endTime . ' 23:59:59');
  85. }
  86. return $chapter->sum('fee');
  87. }
  88. /**
  89. * 获取订购章节数
  90. * @param $uid
  91. * @return mixed
  92. */
  93. public static function getUserRecordCount($uid)
  94. {
  95. $chapter_model = new ChapterOrder($uid);
  96. return $chapter_model->where('uid', $uid)->count();
  97. }
  98. /**
  99. * 根据uid章节订购信息
  100. * @return
  101. */
  102. public static function addChapterOrder($data)
  103. {
  104. $chapterOrder = new ChapterOrder($data['uid']);
  105. $chapterOrder->uid = $data['uid'];
  106. $chapterOrder->bid = $data['bid'];
  107. $chapterOrder->cid = $data['cid'];
  108. $chapterOrder->fee = $data['fee'];
  109. $chapterOrder->chapter_name = $data['chapter_name'];
  110. $chapterOrder->book_name = $data['book_name'];
  111. $chapterOrder->send_order_id = $data['send_order_id'];
  112. $chapterOrder->distribution_channel_id = $data['distribution_channel_id'];
  113. $chapterOrder->charge_balance = $data['charge_balance'];
  114. $chapterOrder->reward_balance = $data['reward_balance'];
  115. return $chapterOrder->save();
  116. }
  117. public static function getRecentChapterOrderCount(int $uid)
  118. {
  119. $chapterOrder = new ChapterOrder($uid);
  120. $count = $chapterOrder->where('uid', $uid)->where('created_at', '>=', date('Y-m-d', strtotime('-1 month')))->count();
  121. return $count;
  122. }
  123. }