model = new \app\admin\model\zy\game\Activity; parent::__construct(); } public function index() { $params = $this->request->param(); $model = $this->model; if (isset($params['name'])) { $model->where('name', 'like', '%' . $params['name'] . '%'); } if (isset($params['club_id'])) { $model->where('club_id', $params['club_id']); } if (isset($params['week'])) { $model->where('week', $params['week']); } if (isset($params['pid'])) { $model->where('pid', $params['pid']); } else { $model->where('pid', 0); } $res = $model->select(); foreach ($res as &$v) { $v['public_time'] = json_decode($v['public_time'] ?? '[]', true); $v['join_start_time'] = json_decode($v['join_start_time'] ?? '[]', true); $v['join_end_time'] = json_decode($v['join_end_time'] ?? '[]', true); $v['quit_time'] = json_decode($v['quit_time'] ?? '[]', true); $v['cost'] = json_decode($v['cost'] ?? '[]', true); $v['referee'] = explode(',', $v['referee']); } $this->success('Success', $res); } public function view() { $model = $this->model->get($this->request->param('id')); if (empty($model)) { $this->error(__('No rows were found')); } $model['public_time'] = json_decode($model['public_time'] ?? '[]', true); $model['join_start_time'] = json_decode($model['join_start_time'] ?? '[]', true); $model['join_end_time'] = json_decode($model['join_end_time'] ?? '[]', true); $model['quit_time'] = json_decode($model['quit_time'] ?? '[]', true); $model['cost'] = json_decode($model['cost'] ?? '[]', true); $model['referee'] = explode(',', $model['referee']); $this->success('Success', $model); } // 启动周期性活动创建比赛任务 public function test() { if (!\think\Cache::has('addons\shopro\job\Test@zy')) { $res = \think\Queue::push('\addons\shopro\job\Test@zy', time(), 'shopro'); \think\Cache::set('addons\shopro\job\Test@zy', $res); $this->success('Success', $res); } $this->success('Success', '任务已存在'); } // 比赛报名 public function gameJoin() { Db::startTrans(); try { $params = $this->request->param(); $game = Game::where('id', $params['act_id'] ?? NULL) ->where('date', $params['date'] ?? NULL)->find(); if (empty($game)) { $this->error('活动不存在'); } if ($game['join_start_time'] > date('Y-m-d H:i:s')) { $this->error('活动报名时间未开始'); } $this->svalidate($params, ".create"); $orderCreate = new OrderCreate($params); $result = $orderCreate->calc('create'); $order = $orderCreate->create($result); $join = new GameJoin; $join->allowField(true)->save([ 'act_id' => $game['act_id'], 'game_id' => $game['id'], 'user_id' => $this->auth->id, 'orer_id' => $order['order_sn'], 'status' => 1, 'users' => json_encode($params['users'] ?? []) ]); Db::commit(); } catch (ValidateException | PDOException | Exception $e) { Db::rollback(); $this->error($e->getMessage(), $e); } $this->success('Success', $join); } }