CommissionMonthBillingController.php 3.0 KB

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