## 控制器
> 控制器只接收参数并返回,不处理任何业务逻辑。
### 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` 配置数据源 和 字段规则 就可以了实现标准的增删改查,如果默认的不满足,直接重写即可。