CpSub.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace App\Modules\CpSub\Models;
  3. use Illuminate\Database\Eloquent\Model;
  4. use DB;
  5. class CpSub extends Model
  6. {
  7. protected $table = 'cp_subs';
  8. protected $fillable = ['cp_user_id','month','bid','yestoday_charge_balance','yestoday_available_amount','yestoday_last_amount','yestoday_total_amount','current_month_book_num','total_amount','available_amount','last_amount','created_at','updated_at','book_name','cp_source','calculate_date'];
  9. public static function getCpSub($cp_source, $calculate_date,$bid) {
  10. return self::where(['cp_source'=>$cp_source,'calculate_date'=>$calculate_date,'bid'=>$bid])->first();
  11. }
  12. /**
  13. * 获取图书列表
  14. * @param $params[]
  15. * book_name: 书名 可选
  16. * book_id: 书名 可选
  17. * start_time:开始时间 可选
  18. * end_time:结束时间 可选
  19. * is_enabled: 0:不可用; 1:可用
  20. * @param $isAll
  21. * @return mixed
  22. */
  23. public static function getCpSubs($params=[], $isAll = false) {
  24. $search_object = self::orderBy('month','desc');
  25. if(isset($params['book_name']) && $params['book_name']) {
  26. $search_object->where('book_name', 'like', "%".$params['book_name']."%");
  27. }
  28. if(isset($params['book_id']) && $params['book_id']) {
  29. $search_object->where('bid', $params['book_id']);
  30. }
  31. if(isset($params['all_bid'])) {
  32. $search_object->whereIn('bid', $params['all_bid']);
  33. }
  34. if(isset($params['cp_user_id']) && $params['cp_user_id']) {
  35. $search_object->where('cp_user_id', $params['cp_user_id']);
  36. }
  37. if(isset($params['start_time']) && $params['start_time']) $search_object->where('month','>=', $params['start_time']);
  38. if(isset($params['end_time']) && $params['end_time']) $search_object->where('month','<=', $params['end_time']);
  39. $search_object->orderBy('calculate_date', 'desc');
  40. $search_object->orderBy('cp_source', 'desc');
  41. $search_object->orderBy('current_month_book_num','desc');
  42. $search_object->select('cp_subs.*',DB::raw('(select last_amount from cp_subs cp where cp_subs.cp_user_id=cp.cp_user_id and cp.bid=cp_subs.bid and cp.month=cp_subs.month and cp.calculate_date < cp_subs.calculate_date order by calculate_date desc limit 1 offset 0) as before_last_amount'));
  43. if($isAll) {
  44. return $search_object->get();
  45. } else {
  46. return $search_object->paginate();
  47. }
  48. }
  49. }