完善活动管理新增编辑删除

main
liutk 2024-05-17 12:08:48 +08:00
parent 8619ae7e4d
commit 0d322304ac
5 changed files with 76 additions and 2 deletions

View File

@ -31,6 +31,7 @@ class ActivityController extends AdminController
->placeholder(__('admin.activities.name')),
]),
]))
->itemCheckableOn('${state === 0}')
->columns([
amis()->TableColumn('id', __('admin.id'))->width('50px')->sortable(),
amis()->TableColumn('name', __('admin.activities.name')),
@ -43,6 +44,8 @@ class ActivityController extends AdminController
//发布活动-todo
//结算活动(参与时间结束后,且最后一场竞猜结束,点击结算则发送奖品)-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([
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()->TextareaControl('rules', __('admin.activities.rules'))
]);

View File

@ -9,4 +9,11 @@ use EloquentFilter\Filterable;
class Activity extends Model
{
use HasFactory,Filterable;
public function scopeSort($q)
{
$q->orderBy('state', 'asc')
->orderBy('end_at', 'desc')
->orderBy('created_at', 'desc');
}
}

View File

@ -5,6 +5,7 @@ namespace App\Services\Admin;
use App\Models\Activity;
use App\Models\Filters\ActivityFilter;
use Illuminate\Support\Arr;
use App\Traits\UploadTrait;
/**
* @method Activity getModel()
@ -12,7 +13,69 @@ use Illuminate\Support\Arr;
*/
class ActivityService extends BaseService
{
use UploadTrait;
protected string $modelName = Activity::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();
}
}

View File

@ -18,7 +18,7 @@ return new class extends Migration
$table->timestamp('start_at')->comment('开始时间');
$table->timestamp('end_at')->comment('结束时间');
$table->text('rules')->nullable()->comment('规则内容');
$table->unsignedTinyInteger('state')->comment('状态0未发布1进行中2已开奖');
$table->unsignedTinyInteger('state')->default(0)->comment('状态0未发布1进行中2已开奖');
$table->timestamps();
});
}

View File

@ -17,6 +17,7 @@ return new class extends Migration
$table->string('name')->comment('名称');
$table->string('logo')->nullable()->comment('图片');
$table->unsignedInteger('rank')->comment('第几名获得');
$table->text('explain')->nullable()->comment('说明');
$table->timestamps();
});
}