RechargeClass.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace bizMall\recharge\classes;
  3. use bizHd\order\classes\SettleClass;
  4. use bizMall\base\classes\BaseClass;
  5. use common\components\imgUtil;
  6. use common\components\lakala\Lakala;
  7. use common\components\noticeUtil;
  8. use common\components\util;
  9. use yii\db\Expression;
  10. class RechargeClass extends BaseClass
  11. {
  12. public static $baseFile = '\bizMall\recharge\models\Recharge';
  13. public static function cancelMyRecharge($recharge, $shop)
  14. {
  15. }
  16. public static function getRechargeList($where)
  17. {
  18. $data = self::getList('*', $where, 'addTime DESC');
  19. if (!empty($data['list'])) {
  20. foreach ($data['list'] as $key => $value) {
  21. $data['list'][$key]['hdSmallAvatar'] = imgUtil::groupImg('') . "?x-oss-process=image/resize,m_fill,h_80,w_80";
  22. }
  23. }
  24. return $data;
  25. }
  26. /**
  27. * 一次聚合查出各状态充值单数量,供商城列表顶部 Tab 展示。
  28. * 条件中不要带 status,否则会把其它 Tab 数量算成 0。
  29. * status:0 待付款、1 已充值、2 已取消。
  30. *
  31. * @param array $condition 与列表相同的业务范围(如 mainId、customId)
  32. * @return array{all:int,waitPay:int,recharged:int,cancelled:int}
  33. */
  34. public static function getStatusCounts($condition)
  35. {
  36. $model = self::getModel();
  37. $row = $model->conditionQuery($condition)
  38. ->select([
  39. 'allCnt' => new Expression('COUNT(*)'),
  40. 'waitPayCnt' => new Expression('SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END)'),
  41. 'rechargedCnt' => new Expression('SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END)'),
  42. 'cancelledCnt' => new Expression('SUM(CASE WHEN status = 2 THEN 1 ELSE 0 END)'),
  43. ])
  44. ->asArray()
  45. ->one();
  46. return [
  47. 'all' => (int)($row['allCnt'] ?? 0),
  48. 'waitPay' => (int)($row['waitPayCnt'] ?? 0),
  49. 'recharged' => (int)($row['rechargedCnt'] ?? 0),
  50. 'cancelled' => (int)($row['cancelledCnt'] ?? 0),
  51. ];
  52. }
  53. }