generated from liutk/owl-admin-base
完善活动管理新增编辑删除
parent
8619ae7e4d
commit
0d322304ac
|
|
@ -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'))
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue