| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- <?php
- namespace App\Module\Activity\AdminControllers\Actions;
- use App\Module\Activity\Enums\ACTIVITY_STATUS;
- use App\Module\Activity\Models\ActivityConfig;
- use Dcat\Admin\Grid\RowAction;
- use Illuminate\Http\Request;
- /**
- * 复制活动操作
- */
- class DuplicateActivityAction extends RowAction
- {
- /**
- * 操作按钮标题
- *
- * @var string
- */
- protected $title = '<i class="fa fa-copy"></i> 复制';
- /**
- * 处理请求
- *
- * @param Request $request
- * @return mixed
- */
- public function handle(Request $request)
- {
- try {
- $id = $this->getKey();
-
- // 查找原始活动及其条件
- $activity = ActivityConfig::with('conditions')->findOrFail($id);
-
- // 复制活动基本信息
- $newActivity = $activity->replicate();
- $newActivity->name = $activity->name . ' (复制)';
- $newActivity->status = ACTIVITY_STATUS::NOT_STARTED;
- $newActivity->save();
-
- // 复制活动条件
- foreach ($activity->conditions as $condition) {
- $newCondition = $condition->replicate();
- $newCondition->activity_id = $newActivity->id;
- $newCondition->save();
- }
-
- return $this->response()
- ->success("已成功复制活动 [{$newActivity->name}]")
- ->refresh();
- } catch (\Exception $e) {
- return $this->response()
- ->error('复制失败: ' . $e->getMessage());
- }
- }
- /**
- * 确认信息
- *
- * @return array|string|void
- */
- public function confirm()
- {
- return ['确定要复制此活动吗?', '复制操作将创建一个新的活动记录,包括所有条件配置'];
- }
- }
|