## 控制器
> 控制器只接收參數并返回,不處理任何業務邏輯。
### Api 控制器
**目錄**: apps
**命名空間**:Apps
*****
### Adm 控制器
**目錄**: apps_adm
**命名空間**:Adm
*****
### 控制器模塊
控制器需根據模塊定義不同的文件夾,且需要在配置文件預先配置到白名單。
位置: conf/cfg_xxxxx.php
```
$aclmod = ['default', 'index', 'shop', 'order', 'pay', 'goods', 'course', 'props', 'power', 'misc', 'activity', 'card', 'teacher', 'task', 'courseware'];
```
### Api 控制器定義
``` php
<?php
/**
* 默認控制器
*/
namespace Apps\Index;
class Index extends Common
{
/**
* orderLib constructor.
*/
public function __construct()
{
}
public function index()
{
return self::showMsg("Not Found", 404);
}
}
```
### Adm 控制器定義
``` php
<?php
namespace Adm\Shop;
use Adm\WithController;
/**
* 優惠券
*
* Class Coupon
* @package Adm\Shop
*/
class Coupon extends Common
{
// 繼承后臺控制器基礎方法
use WithController;
// 配置對應的數據操作層
public $repositoryClassName = '\Mod\Order\Repositorys\CouponRepository';
/**
* 定義結構字段
*
* @var array
*/
public $fields
= [
'id' => 'integer|ID', // ID
'title' => 'string|優惠券標題或者說明|required', // 優惠券標題或者說明
'gids' => 'string|可用商品|required', // 可用商品
'cid' => 'integer|學科分類|required', // 學科分類
'type' => 'integer|類型|required', // 類型:1滿減 2折扣
'full_price' => 'integer|滿多少金額可用|required', // 滿多少金額可用,0為不限制金額
'cut_price' => 'integer|減的金額|required', // 減的金額(type=1時是減的額度,type=2時是最多減多少)
'discount' => 'integer|折扣|required', // 折扣,0則不打折
'cateids' => 'string|商品分類', // 商品分類ID集合
'sum' => 'integer|庫存數量', // 庫存數量
'get_num' => 'integer|已領數量', // 已領數量
'url' => 'string|去使用鏈接', // 去使用鏈接
'limit_sum' => 'integer|限領數量', // 限領數量
'repeateday' => 'string|重復截止日期', // 重復截止日期
'sort' => 'integer|排序', // 排序
'intro' => 'string|介紹說明', // 介紹說明
'state' => 'integer|狀態', // 狀態:0下線 1上線 2隱藏
'sday' => 'string|開始日期', // 開始日期
'eday' => 'string|截止日期', // 截止日期
];
}
```
> 后臺控制器邏輯大多都是通用的,所以引入 `WithController` 配置數據源 和 字段規則 就可以了實現標準的增刪改查,如果默認的不滿足,直接重寫即可。