CommissionYearsBillingController.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. namespace console\controllers;
  3. use common\enums\StatusEnum;
  4. use common\helpers\DateHelper;
  5. use common\models\common\CommissionYearsBilling;
  6. use common\models\user\User;
  7. use yii\console\Controller;
  8. use yii\console\ExitCode;
  9. class CommissionYearsBillingController extends Controller
  10. {
  11. //初始化
  12. public function actionInit()
  13. {
  14. $s = date('m-d');
  15. if($s!='01-01') return false;
  16. $res = DateHelper::lastYear();
  17. $start = $res['start'];
  18. $end = $res['end'];
  19. $i = 1;
  20. $page_size = 1000;
  21. while ($user_list = User::find()
  22. ->andWhere(['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])
  23. ->select('id')
  24. ->offset(($i - 1) * $page_size)
  25. ->orderBy('id asc')
  26. ->limit($page_size)->all()) {
  27. $user_ids = array_column($user_list, 'id');
  28. $user_id_str = implode(',', $user_ids);
  29. $sql = "SELECT FROM_UNIXTIME(created_at,'%Y') as years,mall_id,user_id,change_type,sum(change_num) as SUM3,count(*) as COUNT4
  30. FROM qimall_commission_log where created_at <='{$end}' and created_at>'{$start}' and user_id in({$user_id_str}) GROUP BY mall_id,user_id,change_type,years";
  31. $list = \Yii::$app->db->createCommand($sql)->queryAll();
  32. foreach ($list as $item) {
  33. CommissionYearsBilling::setData($item);
  34. }
  35. $i++;
  36. }
  37. return ExitCode::OK;
  38. }
  39. //统计每年
  40. public function actionIndex()
  41. {
  42. try {
  43. $y = date('Y', strtotime("-1 year"));
  44. $start_time = strtotime(date($y . '-01-01 00:00:00'));
  45. $end_time = strtotime(date($y . '-12-31 23:59:59'));
  46. $i = 1;
  47. $page_size = 1000;
  48. while ($user_list = User::find()
  49. ->andWhere(['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]])
  50. ->select('id')
  51. ->offset(($i - 1) * $page_size)
  52. ->orderBy('id asc')
  53. ->limit($page_size)->all()) {
  54. $user_ids = array_column($user_list, 'id');
  55. $user_id_str = implode(',', $user_ids);
  56. $sql = "SELECT mall_id,user_id,change_type,sum(change_num) as SUM3,count(*) as COUNT4
  57. FROM qimall_commission_log where created_at <='{$end_time}' and created_at>{$start_time} and user_id in({$user_id_str}) GROUP BY mall_id,user_id,change_type";
  58. $list = \Yii::$app->db->createCommand($sql)->queryAll();
  59. foreach ($list as $item) {
  60. $item['years'] = $y;
  61. CommissionYearsBilling::setData($item);
  62. }
  63. $i++;
  64. }
  65. return ExitCode::OK;
  66. } catch (\Exception $e) {
  67. \Yii::error('CommissionYearsBillingController:actionIndex', $e->getMessage() . $e->getFile() . $e->getLine());
  68. return ExitCode::UNSPECIFIED_ERROR;
  69. }
  70. }
  71. }