BookGiftsSend.php 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace App\Modules\Book\Models;
  3. use Illuminate\Database\Eloquent\Model;
  4. use DB;
  5. class BookGiftsSend extends Model
  6. {
  7. protected $table = 'book_gifts_send';
  8. protected $fillable = ['id','name_desc','icon','cost','uid','bid','gift_id','cost_recharge','cost_reward'];
  9. /**
  10. * @param $param
  11. * @return mixed
  12. */
  13. public static function addGift($param) {
  14. return self::create($param);
  15. }
  16. /**
  17. * @param $uid
  18. * @param $bid
  19. * @return mixed
  20. */
  21. public static function getSendRecords($bid){
  22. return self::join('users','users.id','=','book_gifts_send.uid')
  23. ->select(DB::raw('users.nickname,book_gifts_send.*'))
  24. ->where([
  25. //['uid','=',$uid],
  26. ['bid','=',$bid]
  27. ])
  28. ->orderBy('book_gifts_send.created_at','desc')
  29. ->paginate();
  30. }
  31. /**
  32. * @param $uid
  33. * @param $bid
  34. * @return mixed
  35. */
  36. public static function getSendRecordsV2($bid){
  37. $rank = DB::select("SELECT t.*,users.nickname,users.head_img FROM (SELECT uid,bid,sum(cost) as cost_sum FROM book_gifts_send WHERE bid= $bid GROUP BY uid ORDER BY cost_sum desc LIMIT 3) t LEFT JOIN users on users.id = t.uid");
  38. $record = self::join('users','users.id','=','book_gifts_send.uid')
  39. ->select(DB::raw('users.nickname,book_gifts_send.*'))
  40. ->where([
  41. //['uid','=',$uid],
  42. ['bid','=',$bid]
  43. ])
  44. ->orderBy('book_gifts_send.created_at','desc')
  45. ->limit(8)
  46. ->get();
  47. return compact('rank','record');
  48. }
  49. /**
  50. * @param $uid
  51. * @return mixed
  52. */
  53. public static function getConsumeSendRecords($uid) {
  54. return self::leftjoin('book_configs','book_configs.bid','=','book_gifts_send.bid')
  55. ->leftjoin('users','users.id','=','book_gifts_send.uid')
  56. ->where('book_gifts_send.uid',$uid)
  57. ->select(['book_gifts_send.id','book_gifts_send.name_desc',
  58. 'book_gifts_send.icon','book_gifts_send.cost',
  59. 'book_gifts_send.gift_id','book_configs.book_name',
  60. 'book_configs.bid','book_gifts_send.created_at',
  61. 'users.nickname','book_gifts_send.uid'])
  62. ->orderBy('book_gifts_send.created_at','desc')
  63. ->paginate();
  64. }
  65. /**
  66. * 获取送礼按书统计数据
  67. * @param $start
  68. * @param $end
  69. * @return mixed
  70. */
  71. public static function getGiftsSendStatisticByBook($start,$end) {
  72. return self::select(DB::raw("bid,count(book_gifts_send.id) as send_times,COUNT(DISTINCT book_gifts_send.uid) as send_user_num,sum(book_gifts_send.cost) as cost_sum"))
  73. ->whereBetween('created_at',[$start,$end])
  74. ->groupBy('bid')
  75. ->paginate();
  76. }
  77. public static function getGiftsSendStatisticByGift($start,$end) {
  78. return self::select(DB::raw("gift_id,name_desc as gift_name,count(book_gifts_send.id) as send_times,COUNT(DISTINCT book_gifts_send.uid) as send_user_num,sum(book_gifts_send.cost) as cost_sum"))
  79. ->whereBetween('created_at',[$start,$end])
  80. ->groupBy('gift_id')
  81. ->paginate();
  82. }
  83. }