* @since 2021-08-01 */ namespace App\Http\Controllers\Admin\Stencil; use App\Http\Controllers\Controller; use App\Http\Services\TemplateLibraryApiService; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Contracts\View\Factory; use Illuminate\View\View; use Illuminate\Http\JsonResponse; class AdvertiseController extends Controller { private $templateLibraryApiService; /** * 模版站服务类 * TplController constructor. * @param TemplateLibraryApiService $templateLibraryApiService */ public function __construct(TemplateLibraryApiService $templateLibraryApiService) { $this->templateLibraryApiService = $templateLibraryApiService; } /** * 广告设置 * @param Request $request * @param $siteId * @return Factory|View */ public function index(Request $request, $siteId) { $connection = DB::connection($this->templateLibraryApiService->connection($siteId)); if (!$request->ajax()) { return view('admin.stencil.advertise', [ 'siteId' => $siteId, ]); } $advertList = $connection->table('advert')->paginate(10); foreach ($advertList as $value) { $value->size = $value->width . '*' . $value->height; $value->date = date('Y-m-d H:i:s', $value->create_time); } return response()->json([ 'rows' => $advertList->items(), 'total' => $advertList->total(), ]); } /** * 编辑 * @param Request $request * @param $id * @param $siteId * @return Factory|JsonResponse|View */ public function advertiseEdit(Request $request, $id, $siteId) { $connection = DB::connection($this->templateLibraryApiService->connection($siteId)); if (!$request->ajax()) { $info = $connection->table('advert')->where('id', $id)->first() ?? []; if (!empty($info)) { $info->advertise_name = $info->name ?? ''; $info->advertise_code = $info->code ?? ''; } return view('admin.stencil.advertise_edit', [ 'siteId' => $siteId, 'info' => $info, ]); } $request = $request->all(); $update = [ 'code' => $request['advertise_code'] ?? '', 'name' => $request['advertise_name'] ?? '', 'width' => $request['width'] ?? 0, 'height' => $request['height'] ?? 0, 'limit' => $request['limit'] ?? 0, 'site_id' => 0, 'create_time' => time(), ]; if (empty($id)) { $connection->table('advert')->insert($update); } else { $connection->table('advert')->where('id', $id)->update($update); } return response()->json(['message' => '操作成功']); } /** * 广告设置 * @param Request $request * @param $id * @param $siteId * @return Factory|JsonResponse|View */ public function setting(Request $request, $id, $siteId) { $connection = DB::connection($this->templateLibraryApiService->connection($siteId)); if (!$request->ajax()) { return view('admin.stencil.advertise_setting', [ 'siteId' => $siteId, 'advertId' => $id, ]); } $advertList = $connection->table('advert')->pluck('name', 'id'); $advertElementList = $connection->table('advert_element')->where('advert_id', $id)->paginate(10); foreach ($advertElementList as $value) { $value->status = '启用'; if ($value->is_enabled == 1) { $value->status = '禁用'; } $value->startDate = ''; if (!empty($value->start_time)) { $value->startDate = date('Y-m-d H:i:s', $value->start_time); } $value->endDate = ''; if (!empty($value->end_time)) { $value->endDate = date('Y-m-d H:i:s', $value->end_time); } $value->pushDate = $value->startDate . ' - ' . $value->endDate; $value->advert = $advertList[$value->advert_id] ?? ''; } return response()->json([ 'rows' => $advertElementList->items(), 'total' => $advertElementList->total(), ]); } /** * 广告设置编辑 * @param Request $request * @param $id * @param $siteId * @param $advertId * @return Factory|View */ public function settingEdit(Request $request, $id, $siteId, $advertId) { $connection = DB::connection($this->templateLibraryApiService->connection($siteId)); if (!$request->ajax()) { $advertList = $connection->table('advert')->get(); $info = $connection->table('advert_element')->where('id', $id)->first() ?? []; if (!empty($info)) { $info->start_time = date('Y-m-d H:i:s', $info->start_time); $info->end_time = date('Y-m-d H:i:s', $info->end_time); } return view('admin.stencil.setting_edit', [ 'advertList' => $advertList, 'advertId' => $advertId, 'siteId' => $siteId, 'info' => $info, 'id' => $id, ]); } $request = $request->all(); $data = [ 'theme' => $request['theme'] ?? 0, 'advert_id' => $request['advert_id'] ?? 0, 'type' => $request['type'] ?? 'none', 'description' => $request['description'] ?? '', 'start_time' => strtotime($request['start_time'] ?? date('Y-m-d H:i:s')), 'end_time' => strtotime($request['end_time'] ?? date('Y-m-d H:i:s')), 'is_enabled' => $request['is_enabled'] ?? 0, 'html' => '', ]; if ($request['type'] == 'text') { $data['description'] = $request['text_description'] ?? ''; $data['link'] = $request['text_link'] ?? ''; } if ($request['type'] == 'image') { $data['source'] = $request['source'] ?? ''; $data['description'] = $request['description'] ?? ''; $data['description_two'] = $request['description_two'] ?? ''; $data['description_three'] = $request['description_three'] ?? ''; $data['link'] = $request['link'] ?? ''; $data['button'] = $request['button'] ?? ''; $data['button_link'] = $request['button_link'] ?? ''; $data['button_two'] = $request['button_two'] ?? ''; $data['button_two_link'] = $request['button_two_link'] ?? ''; } if ($request['type'] == 'html') { $data['html'] = $request['html'] ?? ''; } if (empty($id)) { $connection->table('advert_element')->insert($data); } else { $connection->table('advert_element')->where('id', $id)->update($data); } return response()->json(['message' => '操作成功']); } }