BusinessChannelStatService.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: tandunzhao
  5. * Date: 2017/12/26
  6. * Time: 下午4:14
  7. */
  8. namespace App\Modules\Channel\Services;
  9. use App\Modules\Channel\Models\BusinessChannelStat;
  10. use DB;
  11. class BusinessChannelStatService
  12. {
  13. /**
  14. * @param $channel_id
  15. * @param $params [yesterday_register_user_num, current_month_register_user_num,last_month_register_user_num,total_register_user_num,total_send_order_num]
  16. * @return mixed
  17. */
  18. public static function crateUpdate($channel_id, $params) {
  19. return BusinessChannelStat::crateUpdate($channel_id, $params);
  20. }
  21. /**
  22. * 商务渠道数据统计列表
  23. * @param $params[]
  24. * channel_id:渠道ID 可选
  25. * channel_name:渠道名称 可选
  26. * search_name: 搜索名称
  27. * start_date:开始时间 可选
  28. * end_date:结束时间 可选
  29. * is_enabled: 是否开通 0:未审核; 1:审核通过
  30. * distribution_manages_id: 管理员 可选
  31. * yesterday_register_user_num_sort: 0 1
  32. * current_month_register_user_num_sort: 0 1
  33. * last_month_register_user_num_sort: 0 1
  34. * total_register_user_num_sort: 0 1
  35. * total_send_order_num_sort: 0 1
  36. *
  37. * @param string $isAll
  38. * @return mixed
  39. */
  40. public static function getList($params, $isAll = '') {
  41. return BusinessChannelStat::getList($params, $isAll);
  42. }
  43. /**
  44. * 获取指定渠道列表汇总
  45. * @param array $channelIds
  46. * @return mixed
  47. */
  48. public static function getBusinessChannelStatSingle($channelIds=[]) {
  49. return BusinessChannelStat::getBusinessChannelStatSingle($channelIds);
  50. }
  51. /**
  52. *
  53. * @param $channel_id
  54. * @return int
  55. */
  56. public static function getServiceAccountNum($channel_id){
  57. $account = DB::table('official_accounts')
  58. ->join('distribution_channels','official_accounts.distribution_channel_id','=','distribution_channels.id')
  59. ->select(DB::raw('count(*) as account_num'))
  60. ->where([
  61. ['official_accounts.is_auth','=',1],
  62. ['distribution_channels.id','=',$channel_id]
  63. ])
  64. ->first();
  65. return $account?$account->account_num:0;
  66. }
  67. public static function getLoginDays($channel_id,$start_time,$end_time){
  68. $start_date = date('Y-m-d',strtotime($start_time.' +1 day'));
  69. $end_date = date('Y-m-d',strtotime($end_time.' +1 day'));
  70. $company = DB::table('distribution_channels')
  71. ->select('channel_users.company_id')
  72. ->where('distribution_channels.id',$channel_id)
  73. ->join('channel_users','channel_users.id','=','distribution_channels.channel_user_id')
  74. ->first();
  75. $login_info = '';
  76. if($company){
  77. $company_id = $company->company_id;
  78. $login_info = DB::table('business_channel_day_stats')
  79. ->join('distribution_channels','distribution_channels.id','=','business_channel_day_stats.distribution_channel_id')
  80. ->join('channel_users','channel_users.id','=','distribution_channels.channel_user_id')
  81. ->select(DB::raw("count(distinct business_channel_day_stats.date) as login_user_num"))
  82. ->where([
  83. ['business_channel_day_stats.is_login_yesterday','=',1],
  84. ['business_channel_day_stats.date','>=',$start_date],
  85. ['business_channel_day_stats.date','<=',$end_date],
  86. ['channel_users.company_id','=',$company_id]
  87. ])
  88. ->first();
  89. }
  90. /*DB::table('channel_operate_record')
  91. ->join('distribution_channels','distribution_channels.id','=','channel_operate_record.distribution_channel_id')
  92. ->join('channel_users','channel_users.id','=','distribution_channels.channel_user_id')
  93. ->where([
  94. ['channel_users.company_id','=',$company_id],
  95. ['distribution_channels.created_at','>=',$start_time],
  96. ['distribution_channels.created_at','<=',$end_time]
  97. ])
  98. ->select(DB::raw("count(distin)"))
  99. ->first();*/
  100. if($login_info) {
  101. return $login_info->login_user_num;
  102. }
  103. return $login_info;
  104. }
  105. public static function getListNew($params, $isAll = '') {
  106. return BusinessChannelStat::getListNew($params, $isAll);
  107. }
  108. public static function getLastMonthChannelRecharge($channel_id){
  109. /*$BusinessChannelStats = BusinessChannelStat::where('distribution_channel_id',$channel_id)
  110. ->whereNotNull('last_month_channels_recharge')
  111. ->first();*/
  112. $last_month_start = date('Y-m-01',strtotime('-1 month'));
  113. $last_month_end = date('Y-m-d H:i:s',strtotime(date('Y-m-01 23:59:59').' -1 day'));
  114. //if(!$BusinessChannelStats && date('d')){
  115. $order_sum = DB::table('orders')
  116. ->where('distribution_channel_id',$channel_id)
  117. ->where('status','PAID')
  118. ->whereBetween('created_at',[$last_month_start,$last_month_end])
  119. ->sum('price');
  120. return $order_sum?$order_sum:0;
  121. //}
  122. //return $BusinessChannelStats->last_month_channels_recharge;
  123. }
  124. public static function getByChannelID($channel_id)
  125. {
  126. return BusinessChannelStat::getByChannelID($channel_id);
  127. }
  128. }