ServeProcess.php 4.2 KB

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