| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- <?php
- namespace common\models\forms;
- use common\components\Model;
- use common\helpers\bonus\CalcServeBonusCalc;
- use common\helpers\bonus\CalcServePerfCalc;
- use common\models\Period;
- use yii\base\Exception;
- class CalcServePeriodForm extends Model
- {
- public $periodNum;
- private $_periodModel;
- /**
- * @inheritdoc
- */
- public function rules()
- {
- return [
- [['periodNum'], 'trim'],
- [['periodNum'], 'required'],
- [['periodNum'], 'integer'],
- [['periodNum'], 'isPeriod'],
- ];
- }
- public function scenarios()
- {
- $parentScenarios = parent::scenarios();
- $customScenarios = [
- 'close' => ['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;
- }
- /**
- * 累计用户业绩
- * @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;
- }
- /**
- * 计算用户奖金
- * @param $handleUserId
- * @return bool|null
- * @throws Exception
- * @throws \yii\db\Exception
- */
- public function calcAsync($handleUserId){
- if(!$this->validate()){
- return null;
- }
- $bonusCalc = CalcServeBonusCalc::instance();
- $asyncResult = $bonusCalc->calcStep($this->periodNum, $handleUserId);
- if($asyncResult){
- $bonusCalc->endCalcTask();
- } else {
- $bonusCalc->errorCalcTask();
- $this->addErrors($bonusCalc->getErrors());
- }
- return $asyncResult;
- }
- }
|