StoreCensusController.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. namespace addons\Store\console\controllers;
  3. use addons\Store\common\enums\StoreEnum;
  4. use addons\Store\common\logic\store\StoreCensus;
  5. use addons\Store\common\models\StoreCommission;
  6. use common\enums\StatusEnum;
  7. use common\helpers\DateHelper;
  8. use common\models\mall\Mall;
  9. use yii\console\Controller;
  10. use yii\console\ExitCode;
  11. use yii;
  12. class StoreCensusController extends Controller
  13. {
  14. //初始化
  15. public function actionIndex()
  16. {
  17. try {
  18. $malls = Mall::getEnableMallList();
  19. foreach ($malls as $mall) {
  20. $obj = new StoreCensus($mall['id']);
  21. $pay_order_numbers = $obj->getPayOrderNumbers();
  22. $pay_people_numbers = $obj->getPayPeopleNumbers();
  23. $real_pay_amounts = $obj->getRealPayAmounts();
  24. $not_settle_amounts = $obj->getNotSettleAmounts();
  25. $settle_amounts = $obj->getSettleAmounts();
  26. $key = StoreEnum::STORE_REAL_PAY_AMOUNTS . ':' . $mall['id'];
  27. Yii::$app->redis->set($key, $real_pay_amounts);//实收金额
  28. $key = StoreEnum::STORE_NOT_SETTLE_AMOUNTS . ':' . $mall['id'];
  29. Yii::$app->redis->set($key, $not_settle_amounts);//待结算
  30. $key = StoreEnum::STORE_SETTLE_AMOUNTS . ':' . $mall['id'];
  31. Yii::$app->redis->set($key, $settle_amounts);//给会员的佣金
  32. $key = StoreEnum::STORE_PAY_ORDER_NUMBERS . ':' . $mall['id'];
  33. Yii::$app->redis->set($key, $pay_order_numbers);//支付订单数
  34. $key = StoreEnum::STORE_PAY_PEOPLE_NUMBERS . ':' . $mall['id'];
  35. Yii::$app->redis->set($key, $pay_people_numbers);//支付人数
  36. $page = 1;
  37. $limit = 200;
  38. $query_com = StoreCommission::find()->where(['mall_id' => $mall['id'], 'status' => StatusEnum::ENABLED]);
  39. $key = StoreEnum::STORE_PAY_PEOPLE_NUMBERS_SET . ':' . $mall['id'];
  40. do {
  41. $offset = ($page - 1) * $limit;
  42. $page++;
  43. $commissions = $query_com->limit($limit)->offset($offset)->all();
  44. if (!empty($commissions)) {
  45. foreach ($commissions as $commission) {
  46. Yii::$app->redis->setbit($key, $commission['user_id'], 1);
  47. }
  48. }
  49. } while ($commissions);
  50. }
  51. return ExitCode::OK;
  52. } catch (\Exception $e) {
  53. \Yii::getLogger()->flush(true);
  54. return false;
  55. }
  56. }
  57. /**
  58. * 统计实时概况-昨天数据
  59. **/
  60. public function actionYesterdayIndex()
  61. {
  62. try {
  63. $yesterday = date('Y-m-d',strtotime("-1 days"));
  64. $time_nodes = DateHelper::yesterDay();
  65. $malls = Mall::getEnableMallList();
  66. foreach ($malls as $mall) {
  67. $obj = new StoreCensus($mall['id'], $time_nodes['start'], $time_nodes['end']);
  68. $yesterday_pay_order_numbers = $obj->getPayOrderNumbers();
  69. $yesterday_pay_people_numbers = $obj->getPayPeopleNumbers();
  70. $yesterday_real_pay_amounts = $obj->getRealPayAmounts();
  71. $yesterday_not_settle_amounts = $obj->getNotSettleAmounts();
  72. $yesterday_settle_amounts = $obj->getSettleAmounts();
  73. list($yesterday_waiting_audit_withdraw_amounts, $yesterday_waiting_pay_withdraw_amounts) = $obj->getWithdrawData();
  74. $yesterday_waiting_audit_store_numbers = $obj->getWaitingAuditStoreNumbers();
  75. $data = [
  76. 'yesterday_pay_order_numbers' => $yesterday_pay_order_numbers,
  77. 'yesterday_pay_people_numbers' => $yesterday_pay_people_numbers,
  78. 'yesterday_real_pay_amounts' => $yesterday_real_pay_amounts,
  79. 'yesterday_not_settle_amounts' => $yesterday_not_settle_amounts,
  80. 'yesterday_settle_amounts' => $yesterday_settle_amounts,
  81. 'yesterday_waiting_audit_withdraw_amounts' => $yesterday_waiting_audit_withdraw_amounts,
  82. 'yesterday_waiting_pay_withdraw_amounts' => $yesterday_waiting_pay_withdraw_amounts,
  83. 'yesterday_waiting_audit_store_numbers' => $yesterday_waiting_audit_store_numbers,
  84. ];
  85. $key = StoreEnum::STORE_GLOBAL_STATISTICS_YESTERDAY . ':' . $mall['id'].':'.$yesterday;
  86. \Yii::$app->redis->set($key, json_encode($data));
  87. }
  88. return ExitCode::OK;
  89. } catch (\Exception $e) {
  90. \Yii::getLogger()->flush(true);
  91. return false;
  92. }
  93. }
  94. }