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.
aquaculture/app/Admin/Controllers/CouponTemplateController.php

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; // 返回构建好的表单
}
}