PerfAdjustmentForm.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?php
  2. namespace common\models\forms;
  3. use common\components\Model;
  4. use common\helpers\Form;
  5. use common\libs\logging\operate\AdminOperate;
  6. use common\models\Period;
  7. use common\models\UserPerf;
  8. use common\models\UserPerfAdjustment;
  9. use yii\base\Exception;
  10. class PerfAdjustmentForm extends Model
  11. {
  12. public $USER_ID;
  13. public $USER_NAME;
  14. public $SURPLUS_1L;
  15. public $SURPLUS_1L_ZC;
  16. public $SURPLUS_1L_FX;
  17. public $SURPLUS_2L;
  18. public $SURPLUS_2L_ZC;
  19. public $SURPLUS_2L_FX;
  20. public $SURPLUS_3L;
  21. public $SURPLUS_3L_ZC;
  22. public $SURPLUS_3L_FX;
  23. public function init()
  24. {
  25. parent::init();
  26. $this->adminOperateLogger = new AdminOperate([
  27. 'fetchClass' => UserPerf::class,
  28. ]);
  29. }
  30. /**
  31. * @inheritdoc
  32. */
  33. public function rules()
  34. {
  35. return [
  36. [['USER_ID', 'SURPLUS_1L', 'SURPLUS_1L_ZC', 'SURPLUS_1L_FX', 'SURPLUS_2L', 'SURPLUS_2L_ZC', 'SURPLUS_2L_FX', 'SURPLUS_3L', 'SURPLUS_3L_ZC', 'SURPLUS_3L_FX'], 'required'],
  37. ];
  38. }
  39. /**
  40. * 指定场景
  41. * @return array
  42. */
  43. public function scenarios() {
  44. $parentScenarios = parent::scenarios();
  45. $customScenarios = [
  46. 'perfAdjustment' => ['USER_ID', 'USER_NAME', 'SURPLUS_1L', 'SURPLUS_1L_ZC', 'SURPLUS_1L_FX', 'SURPLUS_2L', 'SURPLUS_2L_ZC', 'SURPLUS_2L_FX', 'SURPLUS_3L', 'SURPLUS_3L_ZC', 'SURPLUS_3L_FX']
  47. ];
  48. return array_merge($parentScenarios, $customScenarios);
  49. }
  50. /**
  51. * @inheritdoc
  52. */
  53. public function attributeLabels()
  54. {
  55. return [
  56. 'USER_ID' => '会员ID',
  57. 'SURPLUS_1L' => '一市场综合结余业绩',
  58. 'SURPLUS_1L_ZC' => '一市场综合报单业绩',
  59. 'SURPLUS_1L_FX' => '一市场复消结余业绩',
  60. 'SURPLUS_2L' => '二市场综合结余业绩',
  61. 'SURPLUS_2L_ZC' => '二市场综合报单业绩',
  62. 'SURPLUS_2L_FX' => '二市场复消结余业绩',
  63. 'SURPLUS_3L' => '三市场综合结余业绩',
  64. 'SURPLUS_3L_ZC' => '三市场综合报单业绩',
  65. 'SURPLUS_3L_FX' => '三市场复消结余业绩',
  66. ];
  67. }
  68. /**
  69. * 调整会员业绩
  70. * @return bool|null
  71. */
  72. public function perfAdjustment(): ?bool
  73. {
  74. if (!$this->validate()) {
  75. return false;
  76. }
  77. $transaction = \Yii::$app->db->beginTransaction();
  78. try {
  79. // 修改前业绩
  80. $userPerf = UserPerf::find()
  81. ->where('USER_ID=:USER_ID', [':USER_ID' => $this->USER_ID])
  82. ->select('USER_ID,SURPLUS_1L,SURPLUS_1L_ZC,SURPLUS_1L_FX,SURPLUS_2L,SURPLUS_2L_ZC,SURPLUS_2L_FX,SURPLUS_3L,SURPLUS_3L_ZC,SURPLUS_3L_FX')
  83. ->one();
  84. if (!$userPerf->toArray()) {
  85. throw new Exception('Member performance does not exist'); // 会员业绩不存在
  86. }
  87. $this->adminOperateLogger->beforeUpdate($userPerf);
  88. $modernPerf = [
  89. 'SURPLUS_1L' => $this->SURPLUS_1L,
  90. 'SURPLUS_1L_ZC' => $this->SURPLUS_1L_ZC,
  91. 'SURPLUS_1L_FX' => $this->SURPLUS_1L_FX,
  92. 'SURPLUS_2L' => $this->SURPLUS_2L,
  93. 'SURPLUS_2L_ZC' => $this->SURPLUS_2L_ZC,
  94. 'SURPLUS_2L_FX' => $this->SURPLUS_2L_FX,
  95. 'SURPLUS_3L' => $this->SURPLUS_3L,
  96. 'SURPLUS_3L_ZC' => $this->SURPLUS_3L_ZC,
  97. 'SURPLUS_3L_FX' => $this->SURPLUS_3L_FX,
  98. ];
  99. if (!UserPerf::updateAll($modernPerf, 'USER_ID=:USER_ID', [':USER_ID' => $this->USER_ID])) {
  100. throw new Exception(Form::formatErrorsForApi($userPerf->getErrors()));
  101. }
  102. // 写入记录表
  103. $userPerfAdjust = new UserPerfAdjustment();
  104. $userPerfAdjust->USER_ID = $this->USER_ID;
  105. $userPerfAdjust->PERIOD_NUM = Period::instance()->getNowPeriodNum();
  106. $userPerfAdjust->ADMIN_ID = \Yii::$app->user->id;;
  107. $userPerfAdjust->CREATED_AT = time();
  108. $userPerfAdjust->ORIGIN_SURPLUS_1L = $userPerf->SURPLUS_1L;
  109. $userPerfAdjust->ORIGIN_SURPLUS_1L_ZC = $userPerf->SURPLUS_1L_ZC;
  110. $userPerfAdjust->ORIGIN_SURPLUS_1L_FX = $userPerf->SURPLUS_1L_FX;
  111. $userPerfAdjust->ORIGIN_SURPLUS_2L = $userPerf->SURPLUS_2L;
  112. $userPerfAdjust->ORIGIN_SURPLUS_2L_ZC = $userPerf->SURPLUS_2L_ZC;
  113. $userPerfAdjust->ORIGIN_SURPLUS_2L_FX = $userPerf->SURPLUS_2L_FX;
  114. $userPerfAdjust->ORIGIN_SURPLUS_3L = $userPerf->SURPLUS_3L;
  115. $userPerfAdjust->ORIGIN_SURPLUS_3L_ZC = $userPerf->SURPLUS_3L_ZC;
  116. $userPerfAdjust->ORIGIN_SURPLUS_3L_FX = $userPerf->SURPLUS_3L_FX;
  117. $userPerfAdjust->MODERN_SURPLUS_1L = $this->SURPLUS_1L;
  118. $userPerfAdjust->MODERN_SURPLUS_1L_ZC = $this->SURPLUS_1L_ZC;
  119. $userPerfAdjust->MODERN_SURPLUS_1L_FX = $this->SURPLUS_1L_FX;
  120. $userPerfAdjust->MODERN_SURPLUS_2L = $this->SURPLUS_2L;
  121. $userPerfAdjust->MODERN_SURPLUS_2L_ZC = $this->SURPLUS_2L_ZC;
  122. $userPerfAdjust->MODERN_SURPLUS_2L_FX = $this->SURPLUS_2L_FX;
  123. $userPerfAdjust->MODERN_SURPLUS_3L = $this->SURPLUS_3L;
  124. $userPerfAdjust->MODERN_SURPLUS_3L_ZC = $this->SURPLUS_3L_ZC;
  125. $userPerfAdjust->MODERN_SURPLUS_3L_FX = $this->SURPLUS_3L_FX;
  126. $userPerfAdjust->save();
  127. if (!$userPerfAdjust->save()) {
  128. $transaction->rollBack();
  129. throw new Exception($userPerfAdjust->getErrors());
  130. }
  131. $transaction->commit();
  132. $afterUpdate = UserPerf::find()
  133. ->where('USER_ID=:USER_ID', [':USER_ID' => $this->USER_ID])
  134. ->select('USER_ID,SURPLUS_1L,SURPLUS_1L_ZC,SURPLUS_1L_FX,SURPLUS_2L,SURPLUS_2L_ZC,SURPLUS_2L_FX,SURPLUS_3L,SURPLUS_3L_ZC,SURPLUS_3L_FX')
  135. ->one();
  136. $this->adminOperateLogger->afterUpdate($afterUpdate)->clean()->save([
  137. 'optType' => '调整业绩',
  138. 'userId' => $this->USER_ID,
  139. 'userName' => $this->USER_NAME,
  140. 'periodNum' => Period::instance()->getNowPeriodNum(),
  141. ]);
  142. } catch (Exception $e) {
  143. $transaction->rollBack();
  144. $this->addError('perfAdjustment', $e->getMessage());
  145. return false;
  146. }
  147. return true;
  148. }
  149. }