BaseBusiness.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace common\helpers\bonus\Calc;
  3. use common\models\Period;
  4. use common\traits\ResponseTrait;
  5. class BaseBusiness
  6. {
  7. use ResponseTrait;
  8. protected $_periodNum = 0;
  9. protected $_calc_db_name = 'dbCalc';
  10. const CALC_DB_NAME = 'dbCalc';
  11. protected $_limit = 10000;
  12. public function __construct($periodNum)
  13. {
  14. if (is_numeric($periodNum)) {
  15. $this->_periodNum = $periodNum;
  16. $periodObj = Period::instance();
  17. // $periodDataArr = $periodObj->setPeriodNum($periodNum);
  18. // $this->_periodId = $periodDataArr['ID'];
  19. $this->_isCalcMonth = $periodObj->isCalcMonth($periodNum);
  20. // $this->_calcYear = $periodObj->getYear($periodNum);
  21. // $this->_calcMonth = $periodObj->getMonth($periodNum);
  22. $this->_calcYearMonth = $periodObj->getYearMonth($periodNum);
  23. } else {
  24. //todo
  25. return false;
  26. }
  27. }
  28. /**
  29. * 从结算系统拉取周期信息并更新
  30. * @return int
  31. */
  32. public static function pullPeriodForUpdate($periodNum = 0): int
  33. {
  34. if (empty($periodNum) || !is_numeric($periodNum)) {
  35. return 0;
  36. }
  37. $db = self::CALC_DB_NAME;
  38. //同步字段去掉 IS_CALCULATED, 否则自动拉取的轮询间隔之间奖金计算完成后更新该字段则会认为已经拉取过奖金数据
  39. $period = \Yii::$app->$db->createCommand("SELECT
  40. PERIOD_NUM,
  41. IS_PERFED,
  42. IS_PERFING,
  43. IS_CALCING,
  44. PERF_PERCENT,
  45. CALC_PERCENT,
  46. PERF_STARTED_AT,
  47. PERFED_AT,
  48. CALCULATE_STARTED_AT,
  49. CALCULATED_AT
  50. FROM AR_PERIOD where PERIOD_NUM = $periodNum")->queryOne();
  51. return Period::updateAll($period, ['PERIOD_NUM' => $periodNum]);
  52. }
  53. public function getCalcPeriod()
  54. {
  55. $db = $this->_calc_db_name;
  56. return \Yii::$app->$db->createCommand("SELECT * FROM AR_PERIOD where PERIOD_NUM = $this->_periodNum")->queryOne();
  57. }
  58. }