|
@@ -0,0 +1,121 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace Modules\Tuiguang\Http\Controllers;
|
|
|
+
|
|
|
+use Catch\Base\CatchController;
|
|
|
+use Illuminate\Foundation\Validation\ValidatesRequests;
|
|
|
+use Illuminate\Http\Request;
|
|
|
+use Illuminate\Support\Facades\DB;
|
|
|
+use Modules\Common\Errors\Errors;
|
|
|
+use Modules\Common\Exceptions\CommonBusinessException;
|
|
|
+use Modules\User\Http\Controllers\UserTrait;
|
|
|
+
|
|
|
+class PromotionController extends CatchController
|
|
|
+{
|
|
|
+ use UserTrait;
|
|
|
+ use ValidatesRequests;
|
|
|
+
|
|
|
+ public function list(Request $request) {
|
|
|
+ $callbackTypeMap = [
|
|
|
+ '0' => '无',
|
|
|
+ '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';
|
|
|
+ }
|
|
|
+}
|