SendStatistics.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: z_yang
  5. * Date: 2018/03/09
  6. * Time: 20:18
  7. */
  8. namespace App\Modules\Statistic\Services;
  9. use Redis;
  10. use DB;
  11. use App\Modules\Statistic\Services\WapVisitStatService;
  12. class SendStatistics
  13. {
  14. /**
  15. * 获取强关前一章和vip前一章的uv
  16. */
  17. public static function getBeforeForceSubAndBeforeVipUv($bid,$send_order_id,$date,$one_day=true){
  18. $info = WapVisitStatService::getBeforeForceSubAndBeforeVipUv($bid,$send_order_id,$date,$one_day);
  19. $before_vip = $info['beforevipuv'];
  20. $before_forcesub = $info['beforeforcesubuv'];
  21. return compact('before_vip','before_forcesub');
  22. }
  23. public static function getWechatMsgUseRecord($distribution_channel_id,$from,$start_date,$end_date,$allsum=false){
  24. if($allsum){
  25. $start_date = '2018-04-17';
  26. }
  27. $origin_start_time = $start_date;
  28. if(strtotime($start_date) > strtotime($end_date)){
  29. return [];
  30. }
  31. if($allsum){
  32. $uvpv_info = WapVisitStatService::getSitePvAndUv($distribution_channel_id,$from,null,null);
  33. }else{
  34. $uvpv_info = WapVisitStatService::getSitePvAndUv($distribution_channel_id,$from,$start_date,$end_date);
  35. }
  36. $pv = $uvpv_info['pv'];
  37. $uv = $uvpv_info['uv'];
  38. $order_num_sql_format = 'select count(*) as count from orders where distribution_channel_id =%s and from_type ="%s" and created_at BETWEEN "%s" and "%s"';
  39. $success_order_num_sql_format = 'select count(*) as count,ifnull(sum(price),0) as sum,count(DISTINCT uid) as user_num from orders where distribution_channel_id =%s and from_type ="%s" and created_at BETWEEN "%s" and "%s" and status = "PAID"';
  40. $second_pay_order_num_sql_format = 'select count(*) as count from orders a where distribution_channel_id =%s and from_type ="%s" and created_at BETWEEN "%s" and "%s" and status = "PAID"
  41. and exists (select uid from orders b WHERE created_at <="%s" and b.uid=a.uid and status = "PAID" limit 1)';
  42. $order_num_sql = sprintf($order_num_sql_format,$distribution_channel_id,$from,$origin_start_time,$end_date);
  43. if($allsum){
  44. $success_order_num_sql = sprintf($success_order_num_sql_format,$distribution_channel_id,$from,'2018-04-17 18:09:35',date('Y-m-d H:i:s'));
  45. }else{
  46. $success_order_num_sql = sprintf($success_order_num_sql_format,$distribution_channel_id,$from,$origin_start_time,$end_date);
  47. }
  48. $second_pay_order_num_sql = sprintf($second_pay_order_num_sql_format,$distribution_channel_id,$from,$origin_start_time,$end_date,$origin_start_time);
  49. $order_num_info = DB::select($order_num_sql);
  50. $success_order_info = DB::select($success_order_num_sql);
  51. $second_pay_info = DB::select($second_pay_order_num_sql);
  52. $order_count = $order_num_info[0]->count;
  53. $success_order_count = $success_order_info[0]->count;
  54. $success_order_sum = $success_order_info[0]->sum;
  55. $user_num = $success_order_info[0]->user_num;
  56. $second_pay_count = $second_pay_info[0]->count;
  57. return compact('uv','order_count','success_order_count','success_order_sum','second_pay_count','pv','user_num');
  58. }
  59. }