diff --git a/app/admin/controller/v1/Banner.php b/app/admin/controller/v1/Banner.php index 495bfa7a..80faac0a 100644 --- a/app/admin/controller/v1/Banner.php +++ b/app/admin/controller/v1/Banner.php @@ -31,6 +31,7 @@ class Banner ->withSearch(['name'], [ 'name' => $param['name'] ?? null ]) + ->language(request()->lang_id) ->order(['sort' => 'asc', 'id' => 'desc']) ->paginate([ 'list_rows' => $param['size'], diff --git a/app/admin/controller/v1/BannerItem.php b/app/admin/controller/v1/BannerItem.php index 672a9327..e22aa20d 100644 --- a/app/admin/controller/v1/BannerItem.php +++ b/app/admin/controller/v1/BannerItem.php @@ -23,29 +23,41 @@ class BannerItem 'size/d' => 10 ]); - $banner_items = SysBannerItemModel::field([ - 'id', - 'banner_id', - 'title', - 'image', - 'sort', - 'created_at' + $banner_items = SysBannerItemModel::alias('item') + ->field([ + 'item.id', + 'item.title', + 'item.image', + 'item.sort', + 'item.created_at', + 'banner.name' => 'banner_name' ]) - ->with(['banner' => function ($query) { - $query->field(['id', 'name' => 'banner_name']); - }]) - ->withSearch(['title', 'created_at'], [ - 'title' => $param['title'] ?? null, - 'created_at' => !empty($param['created_at']) ? explode(',', $param['created_at']) : null - ]) - ->bannerId($param['banner_id'] ?? null) - ->order(['sort' => 'asc', 'id' => 'desc']) + ->join('sys_banner banner', 'banner.id = item.banner_id') + ->where('banner.language_id', '=', request()->lang_id) + ->where(function($query) use($param){ + if (!empty($param['banner_id'])) { + $query->where('item.banner_id', '=', $param['banner_id']); + } + if (!empty($param['title'])) { + $query->where('item.title', 'like', "%{$param['title']}%"); + } + if (!empty($param['created_at'])) { + $value = explode(',', $param['created_at']); + if (count($value) > 1) { + if ($value[1] == $value[0]) { + $value[1] = date('Y-m-d 23:59:59', strtotime($value[1])); + } + $query->whereBetweenTime('item.created_at', $value[0], $value[1]); + } else { + $query->whereTime('item.created_at', '>=', $value[0]); + } + } + }) + ->order(['item.sort' => 'asc', 'item.id' => 'desc']) ->paginate([ 'list_rows' => $param['size'], 'page' => $param['page'] - ]) - ->bindAttr('banner', ['banner_name']) - ->hidden(['banner_id', 'banner']); + ]); return success('获取成功', $banner_items); } @@ -191,22 +203,46 @@ class BannerItem 'banner_id', 'created_at' ]); - return SysBannerItemModel::withoutField([ - 'updated_at', - 'deleted_at' + return SysBannerItemModel::alias('item') + ->field([ + 'item.id', + 'banner.name' => 'banner_name', + 'item.title', + 'item.title_txt_color', + 'item.desc', + 'item.desc_txt_color', + 'item.type', + 'item.image', + 'item.video', + 'item.link_to', + 'item.link', + 'item.sort' , + 'item.status', + 'item.created_at' ]) - ->with(['banner' => function ($query) { - $query->field(['id', 'name' => 'banner_name']); - }]) - ->withSearch(['title', 'created_at'], [ - 'title' => $param['title'] ?? null, - 'created_at' => !empty($param['created_att']) ? explode(',', $param['created_att']) : null, - ]) - ->bannerId($param['banner_id'] ?? null) - ->order(['sort' => 'asc', 'id' => 'desc']) - ->select() - ->bindAttr('banner', ['banner_name']) - ->hidden(['banner_id', 'banner']); + ->join('sys_banner banner', 'banner.id = item.banner_id') + ->where('banner.language_id', '=', request()->lang_id) + ->where(function($query) use($param){ + if (!empty($param['banner_id'])) { + $query->where('item.banner_id', '=', $param['banner_id']); + } + if (!empty($param['title'])) { + $query->where('item.title', 'like', "%{$param['title']}%"); + } + if (!empty($param['created_at'])) { + $value = explode(',', $param['created_at']); + if (count($value) > 1) { + if ($value[1] == $value[0]) { + $value[1] = date('Y-m-d 23:59:59', strtotime($value[1])); + } + $query->whereBetweenTime('item.created_at', $value[0], $value[1]); + } else { + $query->whereTime('item.created_at', '>=', $value[0]); + } + } + }) + ->order(['item.sort' => 'asc', 'item.id' => 'desc']) + ->select(); } // 删除 diff --git a/app/admin/model/v1/SysBannerModel.php b/app/admin/model/v1/SysBannerModel.php index 995b085c..603580bd 100644 --- a/app/admin/model/v1/SysBannerModel.php +++ b/app/admin/model/v1/SysBannerModel.php @@ -17,6 +17,13 @@ class SysBannerModel extends SysBannerBaseModel // 软删除字段 protected $deleteTime = 'deleted_at'; + // 按语言查询 + public function scopeLanguage($query, $value) + { + if (is_null($value)) return; + $query->where('language_id', $value); + } + // 按名称搜索 public function searchNameAttr($query, $value, $data) {