OrderStat.php 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Modules\Trade\Models;
  3. use Illuminate\Database\Eloquent\Model;
  4. use DB;
  5. class OrderStat extends Model
  6. {
  7. protected $table = 'order_stats';
  8. protected $fillable = [
  9. 'distribution_channel_id', 'pay_success_user_num', 'unpaid_num', 'paid_num','total_recharge_amount',
  10. 'yesterday_paid_num','yesterday_unpaid_num','yesterday_recharge_amount','yesterday_ticket_recharge_paid_num','yesterday_ticket_recharge_unpaid_num','yesterday_ticket_recharge_amount','yesterday_year_recharge_paid_num','yesterday_year_recharge_unpaid_num','yesterday_year_recharge_amount',
  11. 'current_month_paid_num','current_month_unpaid_num','current_month_recharge_amount','current_month_ticket_recharge_paid_num','current_month_ticket_recharge_unpaid_num','current_month_ticket_recharge_amount','current_month_year_recharge_paid_num','current_month_year_recharge_unpaid_num','current_month_year_recharge_amount',
  12. 'last_month_paid_num','last_month_unpaid_num','last_month_recharge_amount','last_month_ticket_recharge_paid_num','last_month_ticket_recharge_unpaid_num','last_month_ticket_recharge_amount','last_month_year_recharge_paid_num','last_month_year_recharge_unpaid_num','last_month_year_recharge_amount',
  13. 'send_order_num','register_user_num','ticket_recharge_pay_user_num','year_pay_user_num','force_user_num','promotion_total_uv','promotion_total_pv','official_account_num','official_account_names',
  14. 'yesterday_season_recharge_amount','yesterday_season_recharge_paid_num','yesterday_season_recharge_unpaid_num',
  15. 'current_month_season_recharge_amount','current_month_season_recharge_paid_num','current_month_season_recharge_unpaid_mum',
  16. 'last_month_season_recharge_amount','last_month_season_recharge_paid_num','last_month_season_recharge_unpaid_num'
  17. ];
  18. //通过分销渠道ID获取
  19. static function getByChannelId($distribution_channel_id)
  20. {
  21. return self::where('distribution_channel_id',$distribution_channel_id)->first();
  22. }
  23. //更新创建
  24. static function add($distribution_channel_id,$params)
  25. {
  26. return self::updateOrCreate(compact('distribution_channel_id'),$params);
  27. }
  28. //获取渠道列表数据
  29. static function getList($distribution_channel_id,$phone,$is_all=false)
  30. {
  31. $fields = ['order_stats.*','distribution_channels.phone','distribution_channels.nickname'];
  32. $search_obj = self::select($fields)->leftjoin('distribution_channels','distribution_channels.id','=','order_stats.distribution_channel_id')->orderBy('total_recharge_amount','desc');
  33. if($distribution_channel_id) $search_obj->where('order_stats.distribution_channel_id',$distribution_channel_id);
  34. if($phone) $search_obj->where('distribution_channels.phone',$phone);
  35. if ($is_all)
  36. {
  37. return $search_obj->get();
  38. }else{
  39. return $search_obj->paginate();
  40. }
  41. }
  42. //获取多个渠道汇总数据
  43. static function getChannelTotalStat($distribution_channel_ids)
  44. {
  45. $fields = [
  46. DB::raw("
  47. sum(total_recharge_amount) total_recharge_amount,
  48. sum(unpaid_num) unpaid_num,
  49. sum(paid_num) paid_num,
  50. sum(ticket_recharge_pay_user_num) ticket_recharge_pay_user_num,
  51. sum(promotion_total_uv) promotion_total_uv,
  52. sum(force_user_num) force_user_num,
  53. sum(year_pay_user_num) year_pay_user_num
  54. ")
  55. ];
  56. return self::select($fields)->whereIn('distribution_channel_id',$distribution_channel_ids)->first();
  57. }
  58. static function getRechargeAmount($distribution_channel_ids){
  59. return self::select(DB::raw('sum(total_recharge_amount) as total_recharge_amount_sum,sum(current_month_recharge_amount) as current_month_recharge_amount_sum'))
  60. ->whereIn('distribution_channel_id',$distribution_channel_ids)
  61. ->first();
  62. }
  63. }