// +---------------------------------------------------------------------- namespace App\Services\Common; use App\Models\AdModel; use App\Models\ActionLogModel; use App\Services\BaseService; use App\Services\RedisService; /** * 广告管理-服务类 * @author laravel开发员 * @since 2020/11/11 * Class AdService * @package App\Services\Common */ class AdService extends BaseService { /** * 构造函数 * @author laravel开发员 * @since 2020/11/11 * AdService constructor. */ public function __construct() { $this->model = new AdModel(); } /** * 按广告位获取缓存列表 * @param $position * @param int $num * @return array|mixed */ public function getListByPosition($position, $num = 0) { $cacheKey = "caches:banners:{$position}"; $datas = RedisService::get($cacheKey); if ($datas) { return $datas; } $showNum = \App\Services\ConfigService::make()->getConfigByCode('show_banner_num', 6); $num = $num ? $num : $showNum; $datas = $this->model->where(['position' => $position, 'status' => 1, 'mark' => 1]) ->select(['id', 'cover', 'title','link_type','mp_appid', 'url', 'description', 'type']) ->limit($num) ->get() ->each(function ($item, $k) { $item['cover'] = $item['cover'] ? get_image_url($item['cover']) : ''; }); $datas = $datas ? $datas->toArray() : []; if ($datas) { RedisService::set($cacheKey, $datas, rand(5, 10)); } return $datas; } /** * 添加或编辑 * @return array * @since 2020/11/11 * @author laravel开发员 */ public function edit() { $data = request()->all(); // 图片处理 if (isset($data['cover'])) { $data['cover'] = get_image_path($data['cover']); } // 开始时间 if (isset($data['start_time'])) { // 如果是时间戳(整数),直接使用 if (is_numeric($data['start_time'])) { $data['start_time'] = (int)$data['start_time']; } else { $data['start_time'] = strtotime($data['start_time']); } } // 结束时间 if (isset($data['end_time'])) { // 如果是时间戳(整数),直接使用 if (is_numeric($data['end_time'])) { $data['end_time'] = (int)$data['end_time']; } else { $data['end_time'] = strtotime($data['end_time']); } } return parent::edit($data); // TODO: Change the autogenerated stub } /** * 删除七天之前标记软删除的数据 */ public function delete() { // 设置日志标题 ActionLogModel::setRecord(session('userId'), ['type' => 1, 'title' => "删除广告信息", 'content' => json_encode(request()->post(), 256), 'module' => 'admin']); ActionLogModel::record(); $this->model->where('mark', 0)->where('update_time', '<=', time() - 7 * 86400)->delete(); return parent::delete(); } }