CalcServePeriodForm.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. namespace common\models\forms;
  3. use common\components\Model;
  4. use common\helpers\bonus\CalcServeBonusCalc;
  5. use common\helpers\bonus\CalcServePerfCalc;
  6. use common\models\Period;
  7. use yii\base\Exception;
  8. class CalcServePeriodForm extends Model
  9. {
  10. public $periodNum;
  11. private $_periodModel;
  12. /**
  13. * @inheritdoc
  14. */
  15. public function rules()
  16. {
  17. return [
  18. [['periodNum'], 'trim'],
  19. [['periodNum'], 'required'],
  20. [['periodNum'], 'integer'],
  21. [['periodNum'], 'isPeriod'],
  22. ];
  23. }
  24. public function scenarios()
  25. {
  26. $parentScenarios = parent::scenarios();
  27. $customScenarios = [
  28. 'close' => ['periodNum'],
  29. 'perf' => ['periodNum'],
  30. 'calc' => ['periodNum'],
  31. 'send' => ['periodNum'],
  32. 'autoClose' => ['periodNum'],
  33. ];
  34. return array_merge($parentScenarios, $customScenarios);
  35. }
  36. public function attributeLabels()
  37. {
  38. return [
  39. 'periodNum' => '期数',
  40. ];
  41. }
  42. public function isPeriod($attributes){
  43. $periodModel = Period::findOne(['PERIOD_NUM' => $this->periodNum]);
  44. if(!$periodModel){
  45. $this->addError($attributes, '所传期数不存在');
  46. }
  47. $this->_periodModel = $periodModel;
  48. }
  49. /**
  50. * 累计用户业绩
  51. * @param $handleUserId
  52. * @return bool|null
  53. * @throws Exception
  54. * @throws \yii\db\Exception
  55. */
  56. public function perfAsync($handleUserId,$periodNum){
  57. if(!$this->validate()){
  58. return null;
  59. }
  60. $bonusCalc = CalcServePerfCalc::instance();
  61. $periodNum = $periodNum ? $periodNum : $this->periodNum;
  62. $asyncResult = $bonusCalc->calcStep($periodNum, $handleUserId);
  63. if($asyncResult){
  64. $bonusCalc->endCalcTask();
  65. } else {
  66. $bonusCalc->errorCalcTask();
  67. // $this->addErrors($bonusCalc->getErrors());
  68. }
  69. return $asyncResult;
  70. }
  71. /**
  72. * 计算用户奖金
  73. * @param $handleUserId
  74. * @return bool|null
  75. * @throws Exception
  76. * @throws \yii\db\Exception
  77. */
  78. public function calcAsync($handleUserId){
  79. if(!$this->validate()){
  80. return null;
  81. }
  82. $bonusCalc = CalcServeBonusCalc::instance();
  83. $asyncResult = $bonusCalc->calcStep($this->periodNum, $handleUserId);
  84. if($asyncResult){
  85. $bonusCalc->endCalcTask();
  86. } else {
  87. $bonusCalc->errorCalcTask();
  88. $this->addErrors($bonusCalc->getErrors());
  89. }
  90. return $asyncResult;
  91. }
  92. }