generated from liutk/owl-admin-base
完善活动管理新增编辑删除
parent
8619ae7e4d
commit
0d322304ac
|
|
@ -31,6 +31,7 @@ class ActivityController extends AdminController
|
||||||
->placeholder(__('admin.activities.name')),
|
->placeholder(__('admin.activities.name')),
|
||||||
]),
|
]),
|
||||||
]))
|
]))
|
||||||
|
->itemCheckableOn('${state === 0}')
|
||||||
->columns([
|
->columns([
|
||||||
amis()->TableColumn('id', __('admin.id'))->width('50px')->sortable(),
|
amis()->TableColumn('id', __('admin.id'))->width('50px')->sortable(),
|
||||||
amis()->TableColumn('name', __('admin.activities.name')),
|
amis()->TableColumn('name', __('admin.activities.name')),
|
||||||
|
|
@ -43,6 +44,8 @@ class ActivityController extends AdminController
|
||||||
//发布活动-todo
|
//发布活动-todo
|
||||||
//结算活动(参与时间结束后,且最后一场竞猜结束,点击结算则发送奖品)-todo
|
//结算活动(参与时间结束后,且最后一场竞猜结束,点击结算则发送奖品)-todo
|
||||||
$this->rowShowTypeButton('drawer', 'xl'),//活动详情-todo-//竞猜赛程//活动奖品
|
$this->rowShowTypeButton('drawer', 'xl'),//活动详情-todo-//竞猜赛程//活动奖品
|
||||||
|
$this->rowEditTypeButton('drawer', 'xl'),
|
||||||
|
$this->rowDeleteButton()->visibleOn('${state === 0}'),
|
||||||
])
|
])
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
@ -53,7 +56,7 @@ class ActivityController extends AdminController
|
||||||
{
|
{
|
||||||
return $this->baseForm()->body([
|
return $this->baseForm()->body([
|
||||||
amis()->TextControl('name', __('admin.activities.name'))->required(true),
|
amis()->TextControl('name', __('admin.activities.name'))->required(true),
|
||||||
Components::make()->cropImageControl('cover', __('admin.activities.cover'))->required(true),
|
Components::make()->cropImageControl('cover', __('admin.activities.cover'), 1.5)->required(true),
|
||||||
amis()->DateRangeControl('activity_at', __('admin.activities.activity_at'))->clearable(false)->format('YYYY-MM-DD HH:mm:ss')->required(true),
|
amis()->DateRangeControl('activity_at', __('admin.activities.activity_at'))->clearable(false)->format('YYYY-MM-DD HH:mm:ss')->required(true),
|
||||||
amis()->TextareaControl('rules', __('admin.activities.rules'))
|
amis()->TextareaControl('rules', __('admin.activities.rules'))
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
|
|
@ -9,4 +9,11 @@ use EloquentFilter\Filterable;
|
||||||
class Activity extends Model
|
class Activity extends Model
|
||||||
{
|
{
|
||||||
use HasFactory,Filterable;
|
use HasFactory,Filterable;
|
||||||
|
|
||||||
|
public function scopeSort($q)
|
||||||
|
{
|
||||||
|
$q->orderBy('state', 'asc')
|
||||||
|
->orderBy('end_at', 'desc')
|
||||||
|
->orderBy('created_at', 'desc');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ namespace App\Services\Admin;
|
||||||
use App\Models\Activity;
|
use App\Models\Activity;
|
||||||
use App\Models\Filters\ActivityFilter;
|
use App\Models\Filters\ActivityFilter;
|
||||||
use Illuminate\Support\Arr;
|
use Illuminate\Support\Arr;
|
||||||
|
use App\Traits\UploadTrait;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @method Activity getModel()
|
* @method Activity getModel()
|
||||||
|
|
@ -12,7 +13,69 @@ use Illuminate\Support\Arr;
|
||||||
*/
|
*/
|
||||||
class ActivityService extends BaseService
|
class ActivityService extends BaseService
|
||||||
{
|
{
|
||||||
|
use UploadTrait;
|
||||||
|
|
||||||
protected string $modelName = Activity::class;
|
protected string $modelName = Activity::class;
|
||||||
|
|
||||||
protected string $modelFilterName = ActivityFilter::class;
|
protected string $modelFilterName = ActivityFilter::class;
|
||||||
|
|
||||||
|
protected bool $modelSortAble = true;
|
||||||
|
|
||||||
|
public function store($data): bool
|
||||||
|
{
|
||||||
|
$columns = $this->getTableColumns();
|
||||||
|
$model = $this->getModel();
|
||||||
|
|
||||||
|
$activityAt = explode(',', Arr::get($data, 'activity_at'));
|
||||||
|
$data['start_at'] = Arr::get($activityAt, 0) ?? null;
|
||||||
|
$data['end_at'] = Arr::get($activityAt, 1) ?? null;
|
||||||
|
|
||||||
|
$data['cover'] = $this->saveImage('cover', 'activities/cover')[0] ?? '';
|
||||||
|
|
||||||
|
foreach ($data as $k => $v) {
|
||||||
|
if (!in_array($k, $columns)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$model->setAttribute($k, $v);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $model->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update($primaryKey, $data): bool
|
||||||
|
{
|
||||||
|
$columns = $this->getTableColumns();
|
||||||
|
$model = $this->query()->whereKey($primaryKey)->first();
|
||||||
|
if(isset($data['activity_at'])){
|
||||||
|
$activityAt = explode(',', Arr::get($data, 'activity_at'));
|
||||||
|
$data['start_at'] = Arr::get($activityAt, 0) ?? null;
|
||||||
|
$data['end_at'] = Arr::get($activityAt, 1) ?? null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isset($data['cover'])){
|
||||||
|
$data['cover'] = $this->saveImage('cover', 'activities/cover')[0] ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($data as $k => $v) {
|
||||||
|
if (!in_array($k, $columns)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$model->setAttribute($k, $v);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $model->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function delete(string $ids): mixed
|
||||||
|
{
|
||||||
|
$ids = explode(',', $ids);
|
||||||
|
//判断活动未发布,才可删除
|
||||||
|
if($this->query()->whereIn('id', $ids)->where('state', '<>', 0)->exists()){
|
||||||
|
$this->setError('已发布活动不能删除');
|
||||||
|
}
|
||||||
|
return $this->query()->whereIn('id', $ids)->delete();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -18,7 +18,7 @@ return new class extends Migration
|
||||||
$table->timestamp('start_at')->comment('开始时间');
|
$table->timestamp('start_at')->comment('开始时间');
|
||||||
$table->timestamp('end_at')->comment('结束时间');
|
$table->timestamp('end_at')->comment('结束时间');
|
||||||
$table->text('rules')->nullable()->comment('规则内容');
|
$table->text('rules')->nullable()->comment('规则内容');
|
||||||
$table->unsignedTinyInteger('state')->comment('状态:0未发布,1进行中,2已开奖');
|
$table->unsignedTinyInteger('state')->default(0)->comment('状态:0未发布,1进行中,2已开奖');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ return new class extends Migration
|
||||||
$table->string('name')->comment('名称');
|
$table->string('name')->comment('名称');
|
||||||
$table->string('logo')->nullable()->comment('图片');
|
$table->string('logo')->nullable()->comment('图片');
|
||||||
$table->unsignedInteger('rank')->comment('第几名获得');
|
$table->unsignedInteger('rank')->comment('第几名获得');
|
||||||
|
$table->text('explain')->nullable()->comment('说明');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue