BusinessChannelDayStat.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: tandunzhao
  5. * Date: 2017/12/26
  6. * Time: 下午3:24
  7. */
  8. namespace App\Modules\Channel\Models;
  9. use Illuminate\Database\Eloquent\Model;
  10. /**
  11. * 商务渠道数据日统计
  12. * Class BusinessChannelDayStat
  13. * @package App\Modules\Channel\Models
  14. */
  15. class BusinessChannelDayStat extends Model
  16. {
  17. protected $table = 'business_channel_day_stats';
  18. protected $fillable = ['distribution_channel_id', 'date', 'register_user_num', 'send_order_num','is_login_yesterday',
  19. 'whole_site_uv','whole_site_pv','auto_force_sub_num','self_force_sub_num','subscribe_user_num','subscribe_amount'];
  20. /**
  21. * 商务渠道数据日统计列表
  22. * @param $params[]
  23. * channel_id:渠道ID 可选
  24. * channel_name:渠道名称 可选
  25. * search_name: 搜索名称
  26. * start_date:开始时间 可选
  27. * end_date:结束时间 可选
  28. * start_dateA:统计开始时间 可选
  29. * end_dateA:统计结束时间 可选
  30. * is_enabled: 是否开通 0:未审核; 1:审核通过
  31. * distribution_manages_id: 管理员 可选
  32. * @param $isAll
  33. * @return mixed
  34. */
  35. public static function getList($params, $isAll = '') {
  36. $search_object = Channel::select([
  37. 'distribution_channels.id',
  38. 'distribution_channels.name',
  39. 'distribution_channels.pay_merchant_id',
  40. 'distribution_channels.phone',
  41. 'distribution_channels.nickname',
  42. 'distribution_channels.person_in_charge_name',
  43. 'distribution_channels.latest_login_time',
  44. 'distribution_channels.remark',
  45. 'distribution_channels.latest_login_ip',
  46. 'distribution_channels.password',
  47. 'distribution_channels.register_ip',
  48. 'distribution_channels.is_enabled',
  49. 'distribution_channels.distribution_manages_id',
  50. 'distribution_channels.created_at',
  51. 'distribution_manages.account as distribution_manages_account',
  52. 'distribution_manages.number as distribution_manages_number',
  53. 'distribution_manages.nickname as distribution_manages_nickname',
  54. 'business_channel_day_stats.date as business_channel_day_stats_date',
  55. 'business_channel_day_stats.register_user_num as business_channel_day_stats_register_user_num',
  56. 'business_channel_day_stats.send_order_num as business_channel_day_stats_send_order_num',
  57. ])
  58. ->leftjoin('distribution_manages','distribution_manages.id','=','distribution_channels.distribution_manages_id')
  59. ->leftjoin('business_channel_day_stats','business_channel_day_stats.distribution_channel_id','=','distribution_channels.id')
  60. ->orderBy('distribution_channels.id','asc');
  61. $search_object->where(function ($query) use($params) {
  62. $query->where('distribution_manages.role', 'business')
  63. ->orWhereNull('distribution_manages.role');
  64. });
  65. if(isset($params['channel_id']) && $params['channel_id']) $search_object->where('distribution_channels.id', $params['channel_id']);
  66. if(isset($params['channel_name']) && $params['channel_name']) $search_object->where('distribution_channels.name','like', "%".$params['channel_name']."%");
  67. if(isset($params['search_name']) && $params['search_name']) {
  68. $search_object->where(function ($query) use($params) {
  69. $query->where('distribution_channels.name','like', "%".$params['search_name']."%")
  70. ->orWhere('distribution_channels.nickname', 'like', "%".$params['search_name']."%")
  71. ->orWhere('distribution_channels.person_in_charge_name', 'like', "%".$params['search_name']."%");
  72. });
  73. }
  74. if(isset($params['start_date']) && $params['start_date']) $search_object->where('distribution_channels.created_at','>=', $params['start_date']);
  75. if(isset($params['end_date']) && $params['end_date']) $search_object->where('distribution_channels.created_at','<=', $params['end_date']);
  76. if(isset($params['start_dateA']) && $params['start_dateA']) $search_object->where('business_channel_day_stats.date','>=', $params['start_date']);
  77. if(isset($params['end_dateA']) && $params['end_dateA']) $search_object->where('business_channel_day_stats.date','<=', $params['end_date']);
  78. if(isset($params['is_enabled']) && is_numeric($params['is_enabled'])) {
  79. $search_object->where('distribution_channels.is_enabled', $params['is_enabled']);
  80. }
  81. if(isset($params['distribution_manages_id']) && is_numeric($params['distribution_manages_id'])) {
  82. $search_object->where('distribution_channels.distribution_manages_id', $params['distribution_manages_id']);
  83. }
  84. if($isAll) {
  85. return $search_object->get();
  86. } else {
  87. return $search_object->paginate();
  88. }
  89. }
  90. }