Nav apraksta

JxStarVideoOrderList.php 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. namespace App\Models;
  3. use App\Support\Log;
  4. use Illuminate\Database\Eloquent\Factories\HasFactory;
  5. use Illuminate\Database\Eloquent\Model;
  6. use Illuminate\Support\Facades\DB;
  7. class JxStarVideoOrderList extends Model
  8. {
  9. public $timestamps = false;
  10. protected $table = 'jx_star_video_order_list';
  11. protected static $unguarded = true;
  12. # 星视频订单数据入库队列
  13. const JUXING_STAR_VIDEO_ORDER_INDB_LIST = 'juxingStarVideoOrderIndbList';
  14. /**
  15. * 通过任务id集合查询对应订单
  16. * */
  17. public static function getOrderListByTaskIds($advertiserIds, $taskIds, $startTime, $endTime)
  18. {
  19. return self::select('advertiser_id', 'task_id', 'order_id', 'order_status', 'order_type', 'amount', 'star_name', 'kwai_id', 'user_id', 'star_release_time', 'caption', 'video_url', 'star_institution', 'video_status', 'support_supplement', 'has_supplement')
  20. ->whereIn('advertiser_id', $advertiserIds)
  21. ->where(function ($query) use ($startTime, $endTime) {
  22. if($startTime) $query->where('star_release_time', '>=', $startTime);
  23. if($endTime) $query->where('star_release_time', '<=', $endTime);
  24. })
  25. ->where('enable', 1)->whereIn('task_id', $taskIds)->get();
  26. }
  27. /**
  28. * 根据订单id获取对应的任务id
  29. * @param $advertiserIds array 广告账号id集合
  30. * @param $orderId string 星视频任务id
  31. * */
  32. public static function getTaskIdByOrderId($advertiserIds, $orderId)
  33. {
  34. return self::where('order_id', $orderId)->whereIn('advertiser_id', $advertiserIds)
  35. ->where('enable', 1)->value('task_id');
  36. }
  37. /**
  38. * 根据订单id获取对应的任务id
  39. * @param $advertiserIds array 广告账号id集合
  40. * @param $orderId string 星视频任务id集合
  41. * */
  42. public static function getTaskIdByStarName($advertiserIds, $starName)
  43. {
  44. return self::where('star_name', 'like', '%'. $starName . '%')->whereIn('advertiser_id', $advertiserIds)
  45. ->where('enable', 1)->pluck('task_id');
  46. }
  47. /**
  48. * 筛选广告账号符合条件的订单id
  49. * */
  50. public static function getOrderData($advertiserId, $filter)
  51. {
  52. $queryModel = self::where('enable' , 1)->where('advertiser_id', $advertiserId);
  53. # 按订单id筛选
  54. if(isset($filter['order_ids']) && !empty($filter['order_ids'])) {
  55. $queryModel->whereIn('order_id', $filter['order_ids']);
  56. } else {
  57. # 按关键词筛选
  58. if(isset($filter['keyword']) && $filter['keyword']) {
  59. if(is_numeric($filter['keyword'])) { // 按任务ID或订单id搜索
  60. $queryModel->where('task_id', $filter['keyword'])->orWhere('order_id', $filter['keyword']);
  61. } else { // 通过达人昵称或任务名搜索
  62. # 按任务名
  63. $taskIds = JxStarVideoTaskList::where('task_name', 'like', '%'.$filter['keyword'].'%')->pluck('task_id');
  64. $queryModel->where('star_name', 'like', '%'.$filter['keyword'].'%')->orWhere(function($query) use($taskIds) {
  65. if(!empty($taskIds)) $query->whereIn('task_id', $taskIds);
  66. });
  67. }
  68. }
  69. # 按创建时间筛选
  70. if(isset($filter['start_date']) && $filter['start_date'] && isset($filter['end_date']) && $filter['end_date']) {
  71. $taskIds = JxStarVideoTaskList::where('create_time', '>=', $filter['start_date'] . ' 00:00:00')
  72. ->where('create_time', '<=', $filter['end_date'] . ' 23:59:59')->pluck('task_id');
  73. $queryModel->whereIn('task_id', $taskIds);
  74. }
  75. }
  76. $data = $queryModel->select('task_id', 'order_id')->get();
  77. return $data;
  78. }
  79. }