BusinessChannelStatService.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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. /*->join('channel_users','channel_users.id','=','distribution_channels.channel_user_id')
  60. ->groupBy('channel_users.company_id')*/
  61. ->select(DB::raw('count(*) as account_num'))
  62. ->where([
  63. ['official_accounts.is_auth','=',1],
  64. ['distribution_channels.id','=',$channel_id]
  65. ])
  66. ->first();
  67. return $account?$account->account_num:0;
  68. }
  69. public static function getLoginDays($channel_id,$start_time,$end_time){
  70. $start_date = date('Y-m-d',strtotime($start_time.' +1 day'));
  71. $end_date = date('Y-m-d',strtotime($end_time.' +1 day'));
  72. $company = DB::table('distribution_channels')
  73. ->select('channel_users.company_id')
  74. ->where('distribution_channels.id',$channel_id)
  75. ->join('channel_users','channel_users.id','=','distribution_channels.channel_user_id')
  76. ->first();
  77. $login_info = '';
  78. if($company){
  79. $company_id = $company->company_id;
  80. $login_info = DB::table('business_channel_day_stats')
  81. ->join('distribution_channels','distribution_channels.id','=','business_channel_day_stats.distribution_channel_id')
  82. ->join('channel_users','channel_users.id','=','distribution_channels.channel_user_id')
  83. ->select(DB::raw("count(distinct business_channel_day_stats.date) as login_user_num"))
  84. ->where([
  85. ['business_channel_day_stats.is_login_yesterday','=',1],
  86. ['business_channel_day_stats.date','>=',$start_date],
  87. ['business_channel_day_stats.date','<=',$end_date],
  88. ['channel_users.company_id','=',$company_id]
  89. ])
  90. ->first();
  91. }
  92. /*DB::table('channel_operate_record')
  93. ->join('distribution_channels','distribution_channels.id','=','channel_operate_record.distribution_channel_id')
  94. ->join('channel_users','channel_users.id','=','distribution_channels.channel_user_id')
  95. ->where([
  96. ['channel_users.company_id','=',$company_id],
  97. ['distribution_channels.created_at','>=',$start_time],
  98. ['distribution_channels.created_at','<=',$end_time]
  99. ])
  100. ->select(DB::raw("count(distin)"))
  101. ->first();*/
  102. if($login_info) {
  103. return $login_info->login_user_num;
  104. }
  105. return $login_info;
  106. }
  107. public static function getListNew($params, $isAll = '') {
  108. return BusinessChannelStat::getListNew($params, $isAll);
  109. }
  110. public static function getLastMonthChannelRecharge($channel_id){
  111. $BusinessChannelStats = BusinessChannelStat::where('distribution_channel_id',$channel_id)
  112. ->whereNotNull('last_month_channels_recharge')
  113. ->first();
  114. $last_month_start = date('Y-m-01',strtotime('-1 month'));
  115. $last_month_end = date('Y-m-d H:i:s',strtotime(date('Y-m-01 23:59:59').' -1 day'));
  116. if(!$BusinessChannelStats){
  117. $order_sum = DB::table('orders')
  118. ->where('distribution_channel_id',$channel_id)
  119. ->where('status','PAID')
  120. ->whereBetween('created_at',[$last_month_start,$last_month_end])
  121. ->sum('price');
  122. return $order_sum?$order_sum:0;
  123. }
  124. return $BusinessChannelStats->last_month_channels_recharge;
  125. }
  126. public static function getLastMonthNewChannelRecharge($channel_id) {
  127. $last_month_start = date('Y-m-01',strtotime('-1 month'));
  128. $last_month_end = date('Y-m-d H:i:s',strtotime(date('Y-m-01 23:59:59').' -1 day'));
  129. $BusinessChannelStats = BusinessChannelStat::where('distribution_channel_id',$channel_id)
  130. ->select('last_month_new_channel_recharge')
  131. ->whereNotNull('last_month_new_channel_recharge')
  132. ->first();
  133. if(!$BusinessChannelStats) {
  134. $order_sum = DB::table('orders')
  135. ->join('distribution_channels','distribution_channels.id','=','orders.distribution_channel_id')
  136. ->where([
  137. ['distribution_channels.id','=',$channel_id],
  138. ['orders.status','=','PAID'],
  139. //['distribution_channels.created_at','>=',date('Y-m-01 00:00:00')]
  140. ])
  141. ->whereBetween('distribution_channels.created_at',[$last_month_start,$last_month_end])
  142. ->whereBetween('orders.created_at',[$last_month_start,$last_month_end])
  143. ->sum('price');
  144. return $order_sum;
  145. }
  146. return $BusinessChannelStats->last_month_new_channel_recharge;
  147. }
  148. }