['periodNum'], 'perf' => ['periodNum'], 'calc' => ['periodNum'], 'send' => ['periodNum'], 'autoClose' => ['periodNum'], ]; return array_merge($parentScenarios, $customScenarios); } public function attributeLabels() { return [ 'periodNum' => '期数', ]; } public function isPeriod($attributes){ $periodModel = Period::findOne(['PERIOD_NUM' => $this->periodNum]); if(!$periodModel){ $this->addError($attributes, '所传期数不存在'); } $this->_periodModel = $periodModel; } // /** // * 页面请求异步处理生成业绩单 // * @return string | null // */ // public function perfWebToAsync(){ // if(!$this->validate()){ // return null; // } // $model = $this->_periodModel; // $model->IS_PERFING = 1; // $model->PERF_ADMIN_ID = \Yii::$app->user->id; // if(!$model->save()){ // $this->addError('perf', Form::formatErrorsForApi($model->getErrors())); // return null; // } // // 异步处理添加任务 // $settings = \Yii::$app->params['swooleAsyncTimer']; // $bonusSettings = \Yii::$app->params['swooleBonusConfig']; // $settings = array_merge($settings, $bonusSettings); // $taskKey = \Yii::$app->swooleAsyncTimer->asyncHandle('bonus/prepare-perf', \Yii::$app->request->get(), $settings); // if($taskKey === false){ // $this->addError('perf', '请求失败'); // return null; // } // return $model; // } /** * 异步处理逻辑 * @param $handleUserId * @return bool|null * @throws Exception * @throws \yii\db\Exception */ public function perfAsync($handleUserId,$periodNum){ if(!$this->validate()){ return null; } $bonusCalc = CalcServePerfCalc::instance(); $periodNum = $periodNum ? $periodNum : $this->periodNum; $asyncResult = $bonusCalc->calcStep($periodNum, $handleUserId); if($asyncResult){ $bonusCalc->endCalcTask(); } else { $bonusCalc->errorCalcTask(); $this->addErrors($bonusCalc->getErrors()); } return $asyncResult; } }