ServeProcess.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?php
  2. namespace common\models;
  3. use common\helpers\snowflake\SnowFake;
  4. use Exception;
  5. use Yii;
  6. /**
  7. * This is the model class for table "{{%SERVE_PROCESS}}".
  8. *
  9. * @property string $ID
  10. * @property string $TASK_TYPE 任务类型 serve_statistical 服务统计信息,比如总人数,总业绩 perf 业绩单信息 bonus 奖金信息
  11. * @property string $START_AT 开始时间
  12. * @property string $END_AT 结束时间
  13. * @property string $PERIOD_NUM 业绩期
  14. * @property string $TASK_DESCRIBE 描述信息
  15. * @property string $USE_MEMORY 使用内存大小
  16. * @property string $USE_TIME 耗时
  17. * @property string $CALC_USER_TOTAL 总人数
  18. * @property string $CALC_PERF_TOTAL 业绩单中总业绩
  19. * @property string $CREATE_AT 创建时间
  20. */
  21. class ServeProcess extends \common\components\ActiveRecord
  22. {
  23. /**
  24. * {@inheritdoc}
  25. */
  26. public static function tableName()
  27. {
  28. return '{{%SERVE_PROCESS}}';
  29. }
  30. /**
  31. * {@inheritdoc}
  32. */
  33. public function rules()
  34. {
  35. return [
  36. [['PERIOD_NUM', 'TASK_TYPE'], 'required'],
  37. [['ID'], 'unique'],
  38. ];
  39. }
  40. /**
  41. * {@inheritdoc}
  42. */
  43. public function attributeLabels()
  44. {
  45. return [
  46. 'ID' => 'ID',
  47. 'TASK_TYPE' => '任务类型', // 记录类型 serve 服务统计信息,比如总人数,总业绩 perf 业绩单信息 bonus 奖金信息
  48. 'START_AT' => '开始时间',
  49. 'END_AT' => '结束时间',
  50. 'PERIOD_NUM' => '业绩期',
  51. 'TASK_DESCRIBE' => '描述信息',
  52. 'CALC_USER_TOTAL' => '总人数',
  53. 'CALC_PERF_TOTAL' => '总业绩',
  54. ];
  55. }
  56. // ------以下为记录操作流程
  57. // 记录请求时间
  58. public static function recordRequest($time, $periodNum, $desc = '', $needCheck = false) {
  59. // 查询此期是否存在计算中,如果在计算中则不用记录
  60. if ($needCheck) {
  61. $hasPerpare = Period::findUseSlaves()
  62. ->select('ID')
  63. ->where('PERIOD_NUM=:PERIOD_NUM AND IS_PREPARE=1', [':PERIOD_NUM'=>$periodNum])
  64. ->asArray()
  65. ->one();
  66. if (empty($hasPerpare)) {
  67. return true;
  68. }
  69. }
  70. $logData[] = [
  71. 'ID' => SnowFake::instance()->generateId(),
  72. 'PERIOD_NUM' => $periodNum ?: 0,
  73. 'TASK_TYPE' => 'serve',
  74. 'TASK_DESCRIBE' => $desc ?: '请求服务开始',
  75. 'START_AT' => $time
  76. ];
  77. ServeProcess::batchInsert($logData);
  78. return true;
  79. }
  80. // 记录计算基础数据
  81. public static function recordDataInfo($time, $periodNum) {
  82. $userCount = User::find()->where('1=1')->count('ID'); // user表总数
  83. $perfSum = PerfOrder::find()->where('1=1')->sum('PV');// 业绩单总业绩
  84. $infoCount = UserInfo::find()->where('1=1')->count('ID'); // userinfo表总数
  85. $networkConut = UserNetwork::find()->where('1=1')->count('ID'); // UserNetwork总数
  86. $relationCount = UserRelation::find()->where('1=1')->count('ID'); // UserRelation
  87. $logData[] = [
  88. 'ID' => SnowFake::instance()->generateId(),
  89. 'PERIOD_NUM' => $periodNum ?: 0,
  90. 'TASK_TYPE' => 'serve',
  91. 'TASK_DESCRIBE' => '统计业务系统数据信息',
  92. 'START_AT' => $time,
  93. 'CALC_USER_TOTAL' => $userCount,
  94. 'CALC_PERF_TOTAL' => $perfSum,
  95. 'CALC_USERINFO_TOTAL' => $infoCount,
  96. 'CALC_NETWORK_TOTAL' => $networkConut,
  97. 'CALC_RELATION_TOTAL' => $relationCount
  98. ];
  99. ServeProcess::batchInsert($logData);
  100. }
  101. // 记录流程
  102. public static function recordProcess($start, $end, $periodNum, $desc, $type='perf') {
  103. try {
  104. $logData[] = [
  105. 'ID' => SnowFake::instance()->generateId(),
  106. 'PERIOD_NUM' => $periodNum ?: 0,
  107. 'TASK_TYPE' => $type,
  108. 'START_AT' => date('Y-m-d H:i:s', $start),
  109. 'END_AT' => date('Y-m-d H:i:s', $end),
  110. 'TASK_DESCRIBE' => $desc,
  111. ];
  112. ServeProcess::batchInsert($logData);
  113. } catch (Exception $e) {
  114. var_dump($e->getMessage());
  115. }
  116. }
  117. }