Commit 662a6ce5 by haojie

1

parent 00a7b938
<?php
namespace App\Admin\Actions\Form;
use App\Admin\Forms\CreateBlindBoxForm;
use Dcat\Admin\Actions\Response;
use Dcat\Admin\Form\AbstractTool;
use Dcat\Admin\Traits\HasPermissions;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
use Dcat\Admin\Widgets\Modal;
class CreateBlindBox extends AbstractTool
{
protected $title = "添加盲盒";
protected $button = '<button class="btn btn-primary filter-btn-IuhkezMU btn-outline">添加盲盒</button>';
public function handle(Request $request)
{
// dump($this->getKey());
return $this->response()
->success('Processed successfully.')
->redirect('/');
}
/**
* @return string|void
*/
protected function href()
{
// return admin_url('auth/users');
}
/**
* @return string|array|void
*/
public function confirm()
{
// return ['Confirm?', 'contents'];
}
/**
* @param Model|Authenticatable|HasPermissions|null $user
*
* @return bool
*/
protected function authorize($user): bool
{
return true;
}
/**
* @return array
*/
protected function parameters()
{
return [];
}
public function render()
{
// 实例化表单类并传递自定义参数
# $form = CreateBlindBoxForm::make()->payload(['id' => $this->getKey()]);
$form = CreateBlindBoxForm::make();
return Modal::make()
->lg()
->title($this->title)
->body($form)
->button($this->button);
}
}
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
namespace App\Admin\Controllers; namespace App\Admin\Controllers;
use App\Admin\Actions\Form\CreateBlindBox;
use Dcat\Admin\Form; use Dcat\Admin\Form;
use Dcat\Admin\Grid; use Dcat\Admin\Grid;
use Dcat\Admin\Show; use Dcat\Admin\Show;
...@@ -43,6 +44,9 @@ protected function grid() ...@@ -43,6 +44,9 @@ protected function grid()
$grid->filter(function (Grid\Filter $filter) { $grid->filter(function (Grid\Filter $filter) {
$filter->equal('id'); $filter->equal('id');
}); });
$grid->tools(function (Grid\Tools $tools) {
$tools->append(new CreateBlindBox());
});
}); });
} }
......
<?php
namespace App\Admin\Forms;
use App\Models\BlindBoxList;
use Dcat\Admin\Contracts\LazyRenderable;
use Dcat\Admin\Traits\LazyWidget;
use Dcat\Admin\Widgets\Form;
use Illuminate\Support\Facades\Log;
class CreateBlindBoxForm extends Form implements LazyRenderable
{
use LazyWidget;
public function CreateBox($form, $status)
{
BlindBoxList::query()->create([
'projectName' => $form['projectName'],
'price' => $form['price'],
'max_participants_num' => $form['max_participants_num'],
'min_participants_num' => $form['min_participants_num'],
'start_time' => $form['start_time'],
'end_time' => $form['end_time'],
'winner_num' => $form['winner_num'],
'project_icon' => $form['project_icon'],
'box_num' => $form['box_num'],
'rules' => $form['rules'],
'status' => $status
]);
}
// 处理请求
public function handle(array $form)
{
if (app()->isLocal()) {
$form['project_icon'] = url("/uploads/{$form['project_icon']}");
} else {
# 线上环境
$form['project_icon'] = url("/storage/{$form['project_icon']}");
}
$start_time = ToTimestamp($form['start_time']);
$end_time = ToTimestamp($form['end_time']);
$status = getBlindBoxStatus($start_time, $end_time);
# 创建盲盒
for ($i = 0; $i < $form['box_num']; $i++) {
self::CreateBox($form, $status);
}
return $this->response()->success('添加成功')->redirect('/blindBoxSetting/setting');
}
public
function form()
{
$this->text('projectName')->required();
$this->text('price')->required();
$this->number('max_participants_num')->default(5)->min(0);
$this->number('min_participants_num')->default(1)->min(0);
$this->datetime('start_time')->required();
$this->datetime('end_time')->required();
$this->number('winner_num', '中奖人数')->default(1)->min(0);
$this->number('box_num', '生成盲盒数量')->default(1)->min(0);
$this->number('can_invite_num', '最高邀请人数')->default(1)->min(0);
$this->number('invite_up_rate', '单次邀请增加的几率')->default(1)->min(0);
$this->file('project_icon', '项目图片')->accept('jpg,png,gif,jpeg', 'image/*')
->disk('admin')->autoUpload(true)->uniqueName()->required();
$this->textarea('rules', '规则')->required();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment