'无', '1' => '巨量账户级回传', ]; $name = $request->input('name'); $isConfig = $request->input('is_config', 1); $id = $request->input('id'); $videoName = $request->input('video_name'); $starTime = $request->input('start_time'); $endTime = $request->input('endTime'); $miniprogramId = $request->input('miniprogram_id'); $result = DB::table('promotions') ->leftJoin('videos', 'videos.id', '=', 'promotions.video_id') ->where(['promotions.is_enabled' => 1, 'promotions.uid' => $this->getLoginUserId()]) ->when($miniprogramId, function ($query, $miniprogramId) { return $query->where('promotions.miniprogram_id', $miniprogramId); }) ->when($isConfig, function ($query) { return $query->where('promotions.callback_config_id', '<>', 0); }, function ($query) { return $query->where('promotions.callback_config_id', 0); })->when($name, function ($query, $name){ return $query->where('promotions.name', 'like', '%'. $name . '%'); })->when($id, function ($query, $id) { return $query->where('promotions.id', $id); })->when($videoName, function ($query, $videoName) { return $query->where('videos.name', 'like', '%'. $videoName . '%'); })->when($starTime, function ($query, $startTime) { return $query->where('promotions.created_at', '>=', $startTime); })->when($endTime, function ($query, $endTime){ return $query->where('promotions.created_at', '<=', $endTime); })->select('promotions.id', 'promotions.name', 'promotions.created_at', 'videos.name as video_name', 'promotions.series_sequence', 'promotions.callback_type', 'promotions.callback_config_id') ->paginate($request->input('limit', 15)); foreach ($result as $item) { $item->callback_type_str = $callbackTypeMap[$item->callback_type] ?? ''; // todo: 待完善 $item->promotion_path = ''; $item->track_url = ''; } return $result; } public function delete(Request $request) { $this->validate($request, ['id' => 'required']); DB::table('promotions') ->where(['id' => $request->input('id'), 'uid' => $this->getLoginUserId(), 'is_enabled' => 1]) ->update(['is_enabled' => 0, 'updated_at' => date('Y-m-d H:i:s')]); return 'ok'; } public function updateSeriesSequence(Request $request) { $this->validate($request, ['id' => 'required', 'series_sequence' => 'required']); DB::table('promotions') ->where(['id' => $request->input('id'), 'uid' => $this->getLoginUserId(), 'is_enabled' => 1]) ->update(['series_sequence' => $request->input('series_sequence') , 'updated_at' => date('Y-m-d H:i:s')]); return 'ok'; } public function add(Request $request) { $this->validate($request, [ 'video_id' => 'required', 'series_sequence' => 'required', 'name' => 'required', 'miniprogram_id' => 'required', ]); $now = date('Y-m-d H:i:s'); DB::table('promotions') ->insert([ 'uid' => $this->getLoginUserId(), 'miniprogram_id' => $request->input('miniprogram_id'), 'name' => $request->input('name'), 'video_id' => $request->input('video_id'), 'series_sequence' => $request->input('series_sequence'), 'created_at' => $now, 'updated_at' => $now, ]); return 'ok'; } public function updateCallbackConfig(Request $request) { $this->validate($request, [ 'id' => 'required', 'callback_type' => 'required|in:1', 'callback_config_id' => 'required' ]); DB::table('promotions') ->where(['id' => $request->input('id'), 'uid' => $this->getLoginUserId(), 'is_enabled' => 1]) ->update([ 'callback_type' => $request->input('callback_type'), 'callback_config_id' => $request->input('callback_config_id'), 'updated_at' => date('Y-m-d') ]); return 'ok'; } }