You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
3.8 KiB
96 lines
3.8 KiB
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use App\Admin\Transforms\YesNoTransform; // 引入 YesNoTransform 类,用于转换布尔值
|
|
use App\Models\CouponTemplate; // 引入优惠券模板模型
|
|
use Carbon\Carbon; // 引入 Carbon 日期时间处理库
|
|
use Encore\Admin\Controllers\AdminController; // 引入管理员控制器基类
|
|
use Encore\Admin\Form; // 引入表单构建器
|
|
use Encore\Admin\Grid; // 引入网格构建器
|
|
use Encore\Admin\Show; // 引入展示构建器
|
|
|
|
class CouponTemplateController extends AdminController
|
|
{
|
|
/**
|
|
* 当前资源的标题.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $title = '优惠券'; // 控制器标题
|
|
|
|
/**
|
|
* 创建网格构建器.
|
|
*
|
|
* @return Grid 返回网格实例
|
|
*/
|
|
protected function grid()
|
|
{
|
|
$grid = new Grid(new CouponTemplate); // 创建新的网格实例,基于 CouponTemplate 模型
|
|
|
|
$grid->model()->latest('start_date'); // 按照开始日期降序排列优惠券模板
|
|
|
|
// 定义网格列
|
|
$grid->column('id', __('Id')); // 显示记录ID
|
|
$grid->column('title', __('Title')); // 显示优惠券标题
|
|
$grid->column('amount', '优惠金额'); // 显示优惠金额
|
|
$grid->column('full_amount', __('Full amount')); // 显示满额金额
|
|
$grid->column('score', '需兑换积分'); // 显示需兑换的积分
|
|
|
|
// 显示有效日期范围
|
|
$grid->column('exp_date', '有效日期')->display(function () {
|
|
return $this->start_date . ' ~ ' . $this->end_date; // 显示开始日期和结束日期
|
|
});
|
|
|
|
$today = Carbon::today(); // 获取今天的日期
|
|
|
|
// 显示优惠券是否有效(未过期)
|
|
$grid->column('overtime', '是否有效(未过期)')->display(function () use ($today) {
|
|
$endDate = Carbon::make($this->end_date); // 将结束日期转换为 Carbon 实例
|
|
$startDate = Carbon::make($this->start_date); // 将开始日期转换为 Carbon 实例
|
|
|
|
// 检查是否有结束日期和开始日期
|
|
if (is_null($endDate) || is_null($startDate)) {
|
|
$isOver = true; // 如果没有结束日期,代表永远不过期
|
|
} else {
|
|
// 检查今天的日期是否在有效日期范围内
|
|
$isOver = $today->gte($startDate) && $today->lte($endDate);
|
|
}
|
|
|
|
return YesNoTransform::trans($isOver); // 使用 YesNoTransform 转换布尔值为可读格式
|
|
});
|
|
|
|
$grid->column('created_at', __('Created at')); // 显示创建时间
|
|
|
|
// 定义过滤器
|
|
$grid->filter(function (Grid\Filter $filter) {
|
|
$filter->like('title', __('Title')); // 允许通过优惠券标题进行模糊查询
|
|
});
|
|
|
|
return $grid; // 返回构建好的网格
|
|
}
|
|
|
|
/**
|
|
* 创建表单构建器.
|
|
*
|
|
* @return Form 返回表单实例
|
|
*/
|
|
protected function form()
|
|
{
|
|
$form = new Form(new CouponTemplate); // 创建新的表单实例,基于 CouponTemplate 模型
|
|
|
|
$form->text('title', __('Title')); // 输入优惠券标题
|
|
$form->decimal('amount', '优惠金额'); // 输入优惠金额
|
|
$form->decimal('full_amount', __('Full amount')); // 输入满额金额
|
|
$form->number('score', __('Score')) // 输入需兑换积分
|
|
->default(0) // 默认值为 0
|
|
->help('设置为 0 代表无需积分即可兑换优惠券'); // 帮助提示
|
|
$form->date('start_date', __('Start date')) // 输入开始日期
|
|
->default(date('Y-m-d')); // 默认设置为今天
|
|
$form->date('end_date', __('End date')) // 输入结束日期
|
|
->default(Carbon::today()->addMonth()); // 默认设置为一个月后
|
|
|
|
return $form; // 返回构建好的表单
|
|
}
|
|
}
|