### 一、列表答疑
**(1)為什么控制器繼承了應用基礎控制器后我們可以直接使用$this->dataList() ?**
因為應用基礎控制器繼承了BaseLikeShopController,而BaseLikeShopController中存在dataLists方法,所以只要我們自己的控制器繼承了應用基礎控制器就可以直接調用該方法。
**(2)調用了$this->dataList()方法就能馬上得到數據嗎?還要做什么?**
不會馬上得到數據,還要創建相應的列表類。原因可從dataLists()這個方法的實現中可以看出:
調用方法不傳參數,需創建以當前控制器名+Lists的列表類
調用方法傳了指定列表類實例,實現指定列表類即可
列表類通常存放于當前應用的 lists目錄中
**(3)列表請求方式必須是GET嗎**?是的!
(4) 特別注意: 分頁改為用limit()方法,不要再使用page()**
原因:底層導出功能設計需要limit()支持,而page()無法滿足需求
前端傳遞分頁參數不變,仍然是 page_no/page_size, 底層會自動獲取前端分頁參數并計算出$this->limitOffset, $this->limitLength的值
```
limit($this->limitOffset, $this->limitLength)
```
**(5)參考例子: 文章列表類**
```
<?php
namespace app\adminapi\lists;
use app\common\lists\ListsSearchInterface;
use app\common\model\Article;
class ArticleLists extends BaseAdminDataLists implements ListsSearchInterface
{
/**
* @notes 設置搜索
* @return \string[][]
* @author Tab
* @date 2021/7/14 9:48
*/
public function setSearch() : array
{
return [
'=' => ['type', 'cid', 'is_notice'],
'%like%' => ['title']
];
}
/**
* @notes 文章/幫助列表
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
* @author Tab
* @date 2021/7/14 9:48
*/
public function lists() : array
{
$lists = Article::field('id,title,image,cid,is_notice,is_show,visit,likes,sort,create_time')
->where($this->searchWhere)
->limit($this->limitOffset, $this->limitLength)
->select()
->toArray();
return $lists;
}
/**
* @notes 文章/幫助總記錄數
* @return int
* @author Tab
* @date 2021/7/14 9:48
*/
public function count() : int
{
return Article::where($this->searchWhere)->count();
}
}
```
### 二、搜索接口使用
**(1) 須實現`ListsSearchInterface`接口,該接口包含一個需要實現的`setSearch()`**,該方法用于設置搜索條件
```
public function setSearch() : array
{
return [
'=' => ['type', 'cid'],
'%like%' => ['title']
];
}
```
**(2) 組裝后的搜索條件通過!!#ff0000 $this->searchWhere!!屬性接收**
具體組裝邏輯可參考:app/common/lists/ListsSearchTrait.php
多個條件關系是: and關系
例 : 前端傳過來的值 type = 1, cid = 10
后端:['=' =>[ 'type', 'cid']] 組裝后生成 $this->searchWhere = [ ['type', '=', '1'], ['cid', '=', '10'] ]
后端:['<>' => [ 'type', 'cid']] 組裝后生成 $this->searchWhere = [ ['type', '<>', '1'], ['cid', '<>', '10'] ]
后端:['>' => [ 'type', 'cid']] 組裝后生成 $this->searchWhere = [ ['type', '>', '1'], ['cid', '>', '10'] ]
后端:['>=' => [ 'type', 'cid']] 組裝后生成 $this->searchWhere = [ ['type', '>=', '1'], ['cid', '>=', '10'] ]
后端:['<' => [ 'type', 'cid']] 組裝后生成 $this->searchWhere = [ ['type', '<', '1'], ['cid', '<', '10'] ]
后端:['<=' => [ 'type', 'cid']] 組裝后生成 $this->searchWhere = [ ['type', '<=', '1'], ['cid', '<=', '10'] ]
后端:['in' => [ 'type', 'cid']] 組裝后生成 $this->searchWhere = [ ['type', 'in', '1'], ['cid', 'in', '10'] ]
例 : 前端傳過來的值 name = 好象
后端:['%like%' => ['name']] 組裝后生成 $this->searchWhere = [ 'name', 'like', '%好象%' ]
后端:['%like' => ['name']] 組裝后生成 $this->searchWhere = [ 'name', 'like', '%好象' ]
后端:['like%' => ['name']] 組裝后生成 $this->searchWhere = [ 'name', 'like', '好象%' ]
例 : 前端傳過來的值 start_time = 2021-07-01 end_time = 2021-07-31
后端:['between_time' => 'create_time'] 組裝后生成 $this->searchWhere = [ 'create_time', 'between', [66666666,88888888]] 注:66666666對應的是2021-07-01的時間戳,88888888對應的是2021-07-01的時間戳
例 : 前端傳過來的值 start = 10 end = 100
后端:['between' => 'sort'] 組裝后生成 $this->searchWhere = [ 'sort', 'between', [10,100]]
**例:支持別名**
后端:['=' => [ 'a.type', 'a.cid']] 組裝后生成 $this->searchWhere = [ ['a.type', '=', '1'], ['a.cid', '=', '10'] ]
**(3) 使用參考 **
Admin::where(!!#ff0000 $this->searchWhere!!)->select();
**(4)、更復雜的條件**
若setSearch()方法中無法實現的搜索條件,可不實現搜索接口,在lists()及count()方法中自行定義自己需要的搜索條件即可
```
public function lists() : array
{
// $where[] = [xxx,xxx,xx]; 這里疊加自已搜索條件
$lists = Footprint::where($where)->select()->toArray();
return $lists;
}
public function count() : int
{
// $where[] = [xxx,xxx,xx]; 這里疊加自已搜索條件
return Footprint::where( $where)->count();
}
```
### 三、排序接口使用
**(1) 列表須實現`ListsSortInterface`接口,該接口中包含兩個需要實現的方法`setSortFields()`、`setDefaultOrder()`**
`setSortFields()` 設置允許的排序字段,例:
```
public function setSortFields(): array
{
// 格式: ['前端傳過來的字段名' => '數據庫中的字段名'];
// 前端傳過來create_time,后端會根據create_time排序
// 前端傳過來id,但后端會根據user_id排序
return ['create_time' => 'create_time','id'=>'user_id'];
}
```
`setDefaultOrder()` 設置默認排序規則
什么情況下會使用默認排序:
1.1、前端未傳排序字段 field時
1.2、前端未傳排序規則 order_by時
1.3、后端setSortFileds()方法返回 空數組時
1.4、前端傳過來的排序字段不在允許的排序字段中時,例:前端傳過來排序字段money, 但允許的排序字段數組 ['create_time' => 'create_time'] 中并沒有money這個字段
1.5、允許排序字段格式設置不正確時,例: ['create_time' => 'create_time'] 設置成了 ['create_time']
```
public function setDefaultOrder(): array
{
return ['id' => 'desc'];
}
```
**(2) 前端必須傳的兩個參數**
order_by排序規則(desc-倒序 asc-升序) ,field排序字段
**(3) 后端組裝后的排序規則通過 $this->sortOrder屬性接收**
具本的排序組裝邏輯請參考: app/common/lists/ListsSortTrait.php
例:前端傳 { order_by: desc, field: create_time }
后端:$this->sortOrder = [‘create_time’ => ‘desc’];
前端傳 { order_by: desc, field: id }
后端:$this->sortOrder = [‘user_id’ => ‘desc’];
前端不傳排序相關參數 或 符合設置默認排序中說明的情況時
后端:$this->sortOrder = [‘id’ => ‘desc’];
**(4) 使用參考 **
Admin::order(!!#ff0000 $this->sortOrder!!)->select();
- 文檔說明(必看!!!!)
- 部署配置
- 各種賬號準備工作
- 項目部署
- 線上服務器寶塔面板環境下部署①(推薦)
- 寶塔面板下安裝
- 阿里云①
- 騰訊云②
- 寶塔環境下項目部署①
- 寶塔環境下一鍵部署②
- windows下docker環境下部署②
- macos下docker環境下部署③
- windows下PhpStudy環境下部署④
- macos下PhpStudy環境下部署⑤
- 其他環境下部署⑥
- 程序安裝
- 二開必看
- 接口文檔
- PC管理后臺
- 工作臺
- 登錄頁
- 獲取配置
- 登錄
- 退出登錄
- 商品
- 商品品牌
- 添加
- 編輯
- 刪除
- 列表
- 修改顯示狀態
- 詳情
- 商品管理
- 添加商品
- 獲取商品詳情
- 獲取商品列表
- 編輯商品
- 設置商品狀態
- 刪除商品
- 商品其他列表
- 設置商品排序
- 修改商品名稱
- 供應商
- 添加供應商分類
- 供應商分類列表
- 刪除供應商分類
- 編輯供應商分類
- 供應商分類詳情
- 添加供應商
- 供應商列表
- 刪除供應商
- 編輯供應商
- 供應商詳情
- 商品分類
- 添加商品分類
- 商品分類列表
- 修改商品分類狀態
- 刪除商品分類
- 編輯商品分類
- 商品分類詳情
- 商品單位
- 添加商品單位
- 商品單位列表
- 刪除商品單位
- 編輯商品單位
- 商品單位詳情
- 商品評價
- 商品評價列表
- 商品回復
- 刪除商品評價
- 評價審核
- 訂單管理
- 訂單其他列表
- 訂單列表
- 訂單詳情
- 訂單確認收貨
- 物流查詢
- 發貨信息
- 取消訂單
- 修改價格-訂單詳情
- 修改運費-訂單詳情
- 訂單發貨
- 修改地址
- 商家備注
- 售后
- 售后列表
- 賣家同意售后
- 賣家拒絕售后
- 賣家確認收貨
- 賣家拒絕收貨
- 賣家同意退款
- 賣家拒絕退款
- 賣家確認退款
- 售后詳情
- 用戶
- 用戶等級
- 用戶等級列表
- 添加用戶等級
- 用戶等級詳情
- 編輯用戶等級
- 刪除用戶等級
- 用戶標簽
- 用戶標簽列表
- 添加用戶標簽
- 用戶標簽詳情
- 編輯用戶標簽
- 刪除用戶標簽
- 用戶列表
- 用戶搜索條件列表
- 批量設置用戶標簽
- 用戶概況
- 用戶詳情
- 更新用戶基本信息
- 更新用戶標簽
- 調整用戶錢包
- 用戶粉絲
- 用戶信息-用于邀請人列表
- 我的邀請人列表
- 選擇用戶列表
- 調整上級分銷商
- 營銷玩法
- 優惠券
- 新增優惠券
- 編輯優惠券
- 刪除優惠券
- 優惠券詳情
- 優惠券列表
- 優惠券信息
- 開始領取
- 結束領取
- 賣家發放
- 優惠券概況
- 領取記錄
- 作廢優惠券
- 秒殺
- 新建秒殺
- 編輯秒殺
- 秒殺詳情
- 秒殺數據
- 秒殺列表
- 秒殺概況
- 刪除秒殺
- 開始秒殺
- 關閉秒殺
- 拼團
- 拼團概況
- 新建拼團
- 編輯拼團
- 拼團列表
- 拼團詳情
- 拼團數據
- 開啟拼團
- 關閉拼團
- 拼團記錄
- 結束拼團
- 砍價
- 選擇商品
- 添加砍價活動
- 砍價活動詳情
- 編輯砍價活動
- 確認砍價活動
- 結束砍價活動
- 刪除砍價活動
- 砍價活動列表
- 砍價數據
- 活動記錄
- 結束砍價
- 砍價概覽
- 獲取營銷模塊
- 幸運抽獎
- 獲取獎品類型
- 添加活動
- 活動詳情
- 編輯活動
- 開始活動
- 結束活動
- 刪除活動
- 活動列表
- 活動抽獎記錄
- 應用中心
- 分銷
- 分銷設置
- 獲取分銷設置
- 設置分銷
- 分銷商
- 分銷商申請列表
- 分銷申請詳情
- 審核通過
- 審核拒絕
- 分銷商列表
- 開通分銷
- 凍結/恢復分銷資格
- 分銷商詳情
- 調整分銷商界面
- 調整分銷商等級
- 查看下級
- 下級列表
- 分銷會員等級
- 分銷會員等級列表
- 添加分銷會員等級
- 分銷會員等級詳情
- 編輯分銷會員等級
- 刪除分銷會員等級
- 分銷商品
- 分銷商品列表
- 分銷商品詳情
- 設置商品傭金
- 參與/取消分銷
- 分銷訂單
- 分銷訂單列表
- 分銷概覽
- 充值
- 獲取充值設置
- 充值設置
- 充值記錄列表
- 充值數據中心
- 簽到
- 獲取簽到設置
- 設置簽到規則
- 添加連續簽到規則
- 查看連續簽到規則詳情
- 編輯連續簽到規則
- 刪除連續簽到規則
- 重置說明
- 簽到記錄
- 數據概覽
- 門店自提
- 自提門店
- 添加自提門店
- 編輯自提門店
- 自提門店詳情
- 自提門店列表
- 修改自提門店狀態
- 刪除自提門店
- 騰訊地圖區域搜索
- 核銷員
- 添加核銷員
- 編輯核銷員
- 核銷員詳情
- 核銷員列表
- 修改核銷員狀態
- 刪除核銷員
- 提貨核銷
- 提貨核銷列表
- 提貨核銷1
- 核銷查詢
- 核銷詳情
- 商城公告
- 公告管理
- 添加公告
- 公告列表
- 編輯公告
- 公告詳情
- 修改商城公告狀態
- 刪除公告
- 在線客服
- 獲取客服設置
- 客服設置
- 消息通知
- 通知設置列表
- 通知設置詳情
- 通知設置
- 獲取短信設置列表
- 短信設置詳情
- 短信設置
- 獲取應用模塊
- 快遞助手
- 獲取面單類型
- 獲取面單配置
- 面單設置
- 面單運費支付方式
- 添加電子面單模板
- 電子面單模板詳情
- 編輯電子面單模板
- 刪除電子面單模板
- 電子面單模板列表
- 添加發件人
- 發件人詳情
- 編輯發件人
- 刪除發件人
- 發件人列表
- 電子面單打印
- 直播
- 直播間列表(同步直播間)
- 創建直播間
- 上傳素材
- 直播商品列表(同步直播間)
- 添加直播商品
- 刪除直播商品
- 刪除直播間
- 小票打印
- 獲取打印機類型
- 添加打印機
- 編輯打印機
- 刪除打印機
- 打印機列表
- 添加模板
- 編輯模板
- 刪除模板
- 模板列表
- 打印機詳情
- 模板詳情
- 測試打印
- 訂單小票打印
- 自動打印狀態切換
- 渠道
- 微信公眾號
- 獲取微信公眾號設置
- 公眾號設置
- 獲取菜單詳情
- 保存/保存并發布
- 新增回復(關注/關詞詞/默認)
- 編輯回復(關注/關鍵詞/默認)
- 獲取回復詳情
- 刪除回復
- 更新排序
- 回復列表
- 更新狀態
- 微信小程序
- 獲取小程序配置
- 小程序設置
- H5商城
- 獲取H5設置
- H5設置
- APP商城
- 獲取APP設置
- APP設置
- 設置
- 商品設置
- 獲取商品設置
- 獲取交易設置
- 交易設置
- 支付配置
- 獲取支付配置
- 支付配置列表
- 獲取支付方式
- 設置支付方式
- 獲取存儲配置信息
- 修改存儲參數
- 切換默認存儲引擎
- 存儲引擎列表
- 獲取店鋪信息
- 設置店鋪信息
- 獲取備案信息
- 設置備案信息
- 獲取分享設置
- 分享設置
- 獲取政策協議
- 添加快遞公司
- 快遞公司列表
- 編輯快遞公司
- 刪除快遞公司
- 快遞公司詳情
- 獲取物流配置
- 設置物流配置
- 添加運費模版
- 運費模版列表
- 編輯運費模版
- 運費模版詳情
- 刪除運費模版
- 獲取配送方式配置
- 設置配送方式配置
- 獲取用戶設置
- 設置用戶配置
- 獲取登錄注冊配置
- 設置登錄注冊配置
- 獲取提現配置
- 設置提現配置
- 系統日志列表
- 清除系統緩存
- 獲取系統更新列表
- 下載更新包
- 一鍵更新
- 定時任務列表
- 添加定時任務
- 查看定時任務詳情
- 編輯定時任務
- 刪除定時任務
- 獲取規則執行時間
- 操作定時任務
- 添加角色
- 編輯角色
- 刪除角色
- 角色列表
- 獲取角色詳情
- 管理員列表
- 添加管理員
- 編輯管理員
- 刪除管理員
- 獲取管理員詳情
- 店鋪DIY
- 移動端
- 獲取裝修配置
- 設置裝修配置
- 裝修頁面列表
- 新增裝修頁面
- 編輯裝修頁面
- 設置裝修主頁
- 獲取裝修頁面
- 刪除裝修頁面
- 系統主題頁列表
- 獲取商城頁面
- 主題首頁
- pc端
- 獲取首頁裝修
- 獲取頁面
- 設置頁面
- 獲取pc端頁面
- 財務
- 財務概覽
- 提現記錄
- 提現列表
- 提現詳情
- 提現審核拒絕
- 提現審核通過
- 查詢結果
- 轉賬成功
- 轉賬失敗
- 賬戶流水記錄(余額/積分/成長值)
- 獲取所有變動類型
- 獲取不可提現余額變動類型
- 獲取積分類型
- 文件
- 添加文件分類
- 編輯文件分類
- 刪除文件分類
- 文件列表
- 移動文件
- 刪除文件
- 上傳圖片
- 獲取文件分類列表
- 重命名文件
- 公共接口
- 商品列表
- 公共商品分類列表
- 優惠券列表接口
- 權限
- 獲取菜單
- 角色列表1
- 添加權限
- 編輯角色1
- 刪除角色1
- 獲取角色
- 獲取權限
- 數據
- 流量分析
- 用戶分析
- 交易分析
- 商品分析
- 商品排行榜
- 小程序
- 登錄注冊
- 手機號密碼/手機號驗證碼登錄
- 退出登錄1
- 小程序-靜默登錄
- 小程序-授權登錄
- 公眾號-獲取授權url
- 公眾號-授權登錄
- 手機號注冊
- 發送驗證碼-手機號注冊
- 發送驗證碼-手機號登錄
- 發送驗證碼 - 重置登錄密碼
- 重置登錄密碼
- 首頁
- 商城公告-
- 公告列表-
- 公告詳情-
- 訪客記錄
- 購物車
- 購物車列表
- 添加購物車
- 刪除購物車
- 修改購物車商品數量
- 選中購物車
- 購物車數量
- 個人中心
- 優惠券-
- 領券中心
- 領取優惠券
- 我的優惠券
- 結算頁優惠券
- 收貨地址
- 收貨地址列表
- 收貨地址詳情
- 獲取默認地址
- 設置默認地址
- 添加收貨地址
- 編輯收貨地址
- 刪除收貨地址
- 省市區名稱轉id
- 售后-
- 子訂單商品信息
- 申請商品售后
- 買家取消售后
- 買家確認退貨
- 售后列表-
- 售后詳情-
- 分銷-
- 填寫邀請碼
- 申請分銷
- 申請詳情
- 分銷推廣主頁
- 分銷訂單列表-
- 月度賬單
- 月度賬單明細
- 我的粉絲
- 傭金明細
- 收藏
- 收藏列表
- 收藏商品、取消收藏商品
- 提現
- 獲取提現配置-
- 提現申請
- 提現申請列表
- 提現申請詳情
- 個人設置
- 獲取用戶信息
- 設置用戶信息
- 獲取微信手機號
- 設置/修改支付密碼
- 發送驗證碼-找回支付密碼
- 重置支付密碼
- 獲取服務協議
- 獲取隱私政策
- 獲取版本號
- 發送驗證碼-綁定手機號
- 綁定手機號
- 個人中心首頁
- 會員等級
- 錢包
- 余額轉賬
- 最近轉賬記錄
- 收款用戶信息
- 轉賬記錄
- 賬戶明細
- 錢包首頁
- 判斷用戶是否有支付密碼
- 評價
- 添加商品評價
- 商品評價分類
- 商品評價列表-
- 評價商品列表
- 評價商品信息
- 訂單
- 提交訂單
- 訂單列表-
- 訂單詳情-
- 取消訂單-
- 確認收貨
- 物流查詢-
- 獲取配送方式
- 刪除訂單
- 充值-
- 充值模板列表
- 充值--
- 充值記錄列表-
- 核銷
- 核銷訂單列表
- 訂單核銷
- 確認提貨
- 簽到-
- 簽到列表
- 簽到--
- 獲取簽到說明
- 積分明細
- 獲取客服設置-
- 獲取分銷海報
- 商品-
- 商品列表-
- 商品詳情-
- 搜索記錄
- 商品分類列表-
- 商品營銷接口
- 清空搜索記錄
- 商品品牌列表
- 秒殺-
- 秒殺列表-
- 秒殺詳情-
- 拼團-
- 拼團商品列表
- 拼團商品詳細情
- 拼團記錄-
- 砍價-
- 砍價商品列表
- 砍價商品詳情
- 發起砍價
- 幫助砍價
- 砍價記錄
- 砍價進度
- 分享幫砍詳情
- 店鋪DIY-
- 獲取主頁
- 獲取個人中心或商品分類頁面
- 獲取配置-
- 獲取微頁面
- 支付
- 支付方式列表
- 預支付
- 公共配置
- 直播間
- 直播間列表
- 小程序碼
- 獲取字節跳動小程序碼
- 獲取小程序碼
- 幸運抽獎
- 抽獎
- 抽獎記錄
- 獲取抽獎活動信息
- 中獎名單
- PC端接口
- 裝修頁面
- 接口說明
- 列表類使用
- 導出功能