OrderStat.php 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. //通过分销渠道ID获取
  15. static function getByChannelId($distribution_channel_id)
  16. {
  17. return self::where('distribution_channel_id',$distribution_channel_id)->first();
  18. }
  19. //更新创建
  20. static function add($distribution_channel_id,$params)
  21. {
  22. return self::updateOrCreate(compact('distribution_channel_id'),$params);
  23. }
  24. //获取渠道列表数据
  25. static function getList($distribution_channel_id,$phone,$is_all=false)
  26. {
  27. $fields = ['order_stats.*','distribution_channels.phone','distribution_channels.nickname'];
  28. $search_obj = self::select($fields)->leftjoin('distribution_channels','distribution_channels.id','=','order_stats.distribution_channel_id')->orderBy('total_recharge_amount','desc');
  29. if($distribution_channel_id) $search_obj->where('order_stats.distribution_channel_id',$distribution_channel_id);
  30. if($phone) $search_obj->where('distribution_channels.phone',$phone);
  31. if ($is_all)
  32. {
  33. return $search_obj->get();
  34. }else{
  35. return $search_obj->paginate();
  36. }
  37. }
  38. //获取多个渠道汇总数据
  39. static function getChannelTotalStat($distribution_channel_ids)
  40. {
  41. $fields = [
  42. DB::raw("
  43. sum(total_recharge_amount) total_recharge_amount,
  44. sum(unpaid_num) unpaid_num,
  45. sum(paid_num) paid_num,
  46. sum(ticket_recharge_pay_user_num) ticket_recharge_pay_user_num,
  47. sum(promotion_total_uv) promotion_total_uv,
  48. sum(force_user_num) force_user_num,
  49. sum(year_pay_user_num) year_pay_user_num
  50. ")
  51. ];
  52. return self::select($fields)->whereIn('distribution_channel_id',$distribution_channel_ids)->first();
  53. }
  54. static function getRechargeAmount($distribution_channel_ids){
  55. 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'))
  56. ->whereIn('distribution_channel_id',$distribution_channel_ids)
  57. ->first();
  58. }
  59. }