VideoStatController.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace Modules\Statistic\Http\Controllers;
  3. use Carbon\Carbon;
  4. use Catch\Base\CatchController;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\DB;
  7. use Modules\User\Http\Controllers\UserTrait;
  8. use Modules\Statistic\Models\VideoStatByCompany;
  9. /**
  10. * 短剧统计
  11. */
  12. class VideoStatController extends CatchController
  13. {
  14. use UserTrait;
  15. public function __construct(protected readonly VideoStatByCompany $videoStatByCompany)
  16. {
  17. }
  18. public function index(Request $request)
  19. {
  20. if(!$this->isCompanyManager()){
  21. return [];
  22. }
  23. $limit = $request->get('limit',15);
  24. $is_export = $request->get('is_export');
  25. $where = $this->requestParam($request);
  26. if($is_export){
  27. $result = $this->videoStatByCompany->where($where)
  28. ->select('day','video_name','video_id','amount','charge_count','charge_user_num','play_count', 'click_uv')->get();
  29. }else{
  30. $result = $this->videoStatByCompany->where($where)
  31. ->select('day','video_name','video_id','amount','charge_count','charge_user_num','play_count', 'click_uv')->paginate($limit);
  32. }
  33. return $result;
  34. }
  35. public function stats(Request $request){
  36. $stats_obj = [
  37. 'amount'=>0,
  38. 'charge_count'=>0,
  39. 'charge_user_num'=>0
  40. ];
  41. if(!$this->isCompanyManager()){
  42. return $stats_obj;
  43. }
  44. $where = $this->requestParam($request);
  45. $stats = $this->videoStatByCompany->where($where)->select(DB::raw('sum(amount) as amount,sum(charge_count) as charge_count,sum(charge_user_num) as charge_user_num'))->first();
  46. if($stats){
  47. $stats_obj = [
  48. 'amount'=>$stats->amount,
  49. 'charge_count'=>$stats->charge_count,
  50. 'charge_user_num'=>$stats->charge_user_num
  51. ];
  52. }
  53. return $stats_obj;
  54. }
  55. private function requestParam(Request $request){
  56. $default_end_time = Carbon::now();
  57. $user_id = $this->getLoginUser()->id;
  58. $video_name = $request->get('video_name');
  59. $start_date = $request->get('start_date');
  60. $end_date = $request->get('end_date');
  61. if(!$end_date){
  62. $end_date = $default_end_time;
  63. }else{
  64. $end_date = Carbon::createFromTimeString($end_date.' 00:00:00');
  65. }
  66. if($start_date){
  67. $start_date = Carbon::createFromTimeString($start_date.' 00:00:00');
  68. }else{
  69. $start_date = $end_date->clone()->subDays(7);
  70. }
  71. $where = [
  72. ['user_id','=',$user_id],
  73. ['is_delete','=',0],
  74. ['day','>=',$start_date->format('Y-m-d')],
  75. ['day','<=',$end_date->format('Y-m-d')]
  76. ];
  77. if(trim($video_name)){
  78. $where[] = ['video_name','like','%'.trim($video_name).'%'];
  79. }
  80. return $where;
  81. }
  82. }