StoreCensus.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. namespace addons\Happiness\common\logic\store;
  3. use addons\Happiness\common\models\HappinessStore;
  4. use addons\Happiness\common\models\HappinessStoreCommission;
  5. use addons\Happiness\common\models\HappinessWithdrawLog;
  6. use common\enums\StatusEnum;
  7. use common\models\common\CommissionLog;
  8. class StoreCensus
  9. {
  10. public $mall_id = null;
  11. public $start = 0;
  12. public $end = 0;
  13. public function __construct($mall_id, $start = 0, $end = 0)
  14. {
  15. $this->mall_id = $mall_id;
  16. $this->end = $end;
  17. $this->start = $start;
  18. }
  19. public function getRealPayAmounts()
  20. {
  21. $query = HappinessStoreCommission::find()->where(['mall_id' => $this->mall_id, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED], 'is_settlement' => [0,1]]);
  22. if (!empty($this->start)) $query->andWhere(['>=', 'created_at', $this->start]);
  23. if (!empty($this->end)) $query->andWhere(['<=', 'created_at', $this->end]);
  24. $realPayAmounts = $query->sum('amount_received');
  25. return $realPayAmounts ?? 0;
  26. }
  27. public function getNotSettleAmounts()
  28. {
  29. $query = HappinessStoreCommission::find()->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'is_settlement' => 0]);
  30. if (!empty($this->start)) $query->andWhere(['>=', 'created_at', $this->start]);
  31. if (!empty($this->end)) $query->andWhere(['<=', 'created_at', $this->end]);
  32. $not_settle_amounts = $query->sum('amount_received');
  33. return $not_settle_amounts ?? 0;
  34. }
  35. public function getSettleAmounts()
  36. {
  37. $query = CommissionLog::find()->where(['mall_id' => $this->mall_id, 'source_table' => ['store_order_detail', 'store_cashier_order']]);
  38. if (!empty($this->start)) $query->andWhere(['>=', 'created_at', $this->start]);
  39. if (!empty($this->end)) $query->andWhere(['<=', 'created_at', $this->end]);
  40. $settle_amounts = $query->sum('change_num');
  41. return $settle_amounts ?? 0;
  42. }
  43. public function getPayPeopleNumbers()
  44. {
  45. $mall_id = $this->mall_id;
  46. $start = $this->start;
  47. $end = $this->end;
  48. $sql = "select count(*) as counts from (
  49. select user_id from qimall_addons_happiness_store_commission where mall_id = {$mall_id} and status in(0,1)";
  50. if (!empty($start)) $sql .= " and created_at >={$start}";
  51. if (!empty($end)) $sql .= " and created_at <= {$end}";
  52. $sql .= " group by user_id ) t";
  53. $result = \Yii::$app->db->createCommand($sql)->queryAll();
  54. return $result[0]['counts'] ?? 0;
  55. }
  56. public function getPayOrderNumbers()
  57. {
  58. $query = HappinessStoreCommission::find()->where(['mall_id' => $this->mall_id, 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]);
  59. if (!empty($this->start)) $query->andWhere(['>=', 'created_at', $this->start]);
  60. if (!empty($this->end)) $query->andWhere(['<=', 'created_at', $this->end]);
  61. $pay_order_numbers = $query->count();
  62. return $pay_order_numbers ?? 0;
  63. }
  64. public function getWithdrawData()
  65. {
  66. $list = HappinessWithdrawLog::lists([
  67. 'where' => [
  68. ['mall_id' => $this->mall_id],
  69. ['status' => StatusEnum::ENABLED], ['withdraw_status' => [0, 1]],
  70. ['>=', 'created_at', $this->start],
  71. ['<=', 'created_at', $this->end]
  72. ],
  73. 'group' => 'withdraw_status',
  74. 'select' => 'withdraw_status,sum(num) as num'
  75. ]);
  76. $waiting_audit_withdraw_amounts = 0;
  77. $waiting_pay_withdraw_amounts = 0;
  78. foreach ($list as $item) {
  79. if ($item['withdraw_status'] == 0) {
  80. $waiting_audit_withdraw_amounts = $item['num'];
  81. }
  82. if ($item['withdraw_status'] == 1) {
  83. $waiting_pay_withdraw_amounts = $item['num'];
  84. }
  85. }
  86. return [$waiting_audit_withdraw_amounts, $waiting_pay_withdraw_amounts];
  87. }
  88. public function getWaitingAuditStoreNumbers()
  89. {
  90. $waiting_audit_store_numbers = HappinessStore::find()->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED])
  91. ->andWhere(['>=', 'created_at', $this->start])
  92. ->andWhere(['<=', 'created_at', $this->end])
  93. ->count();
  94. return $waiting_audit_store_numbers ?? 0;
  95. }
  96. }