BalanceChangeClass.php 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace bizHd\balance\classes;
  3. use bizHd\order\classes\SettleClass;
  4. use bizHd\recharge\classes\RechargeClass;
  5. use common\components\dict;
  6. use Yii;
  7. use bizHd\base\classes\BaseClass;
  8. class BalanceChangeClass extends BaseClass
  9. {
  10. public static $baseFile = '\bizHd\balance\models\BalanceChange';
  11. public static function getChangeList($where)
  12. {
  13. $data = self::getList('*', $where, 'addTime DESC,id DESC');
  14. if (!empty($data['list'])) {
  15. foreach ($data['list'] as $k => $v) {
  16. $v = is_array($v) ? $v : (array)$v;
  17. $v = self::fillSettleAuditFromRecharge($v);
  18. $settleAmount = $v['settleAmount'] ?? 0;
  19. $amount = $v['amount'] ?? 0;
  20. $io = $v['io'] ?? 0;
  21. $becomeBalance = 0;
  22. if ($io == 1) {
  23. $becomeBalance = bcsub($amount, $settleAmount, 2);
  24. $becomeBalance = floatval($becomeBalance);
  25. }
  26. $v['becomeBalance'] = $becomeBalance;
  27. $data['list'][$k] = $v;
  28. }
  29. }
  30. return $data;
  31. }
  32. /**
  33. * 零售会员充值流水补全结账单(对照 ghs CustomBalanceChangeClass::fillClearAuditFromRecharge)
  34. */
  35. public static function fillSettleAuditFromRecharge($row)
  36. {
  37. if (empty($row) || !is_array($row)) {
  38. return $row;
  39. }
  40. if (intval($row['settleId'] ?? 0) > 0) {
  41. return self::normalizeSettleAuditRow($row);
  42. }
  43. if (intval($row['io'] ?? 0) !== 1) {
  44. return $row;
  45. }
  46. $relateId = intval($row['relateId'] ?? 0);
  47. if ($relateId <= 0 || !self::isRechargeCapitalType($row['capitalType'] ?? 0)) {
  48. return $row;
  49. }
  50. $recharge = RechargeClass::getById($relateId, true);
  51. if (!empty($recharge)) {
  52. $settleId = intval(is_object($recharge) ? ($recharge->settleId ?? 0) : ($recharge['settleId'] ?? 0));
  53. if ($settleId > 0) {
  54. $row['settleId'] = $settleId;
  55. $settle = SettleClass::getById($settleId, true);
  56. if (!empty($settle)) {
  57. $row['settleNo'] = is_object($settle) ? ($settle->orderSn ?? '') : ($settle['orderSn'] ?? '');
  58. $row['settleAmount'] = is_object($settle) ? ($settle->actPrice ?? 0) : ($settle['actPrice'] ?? 0);
  59. }
  60. return self::normalizeSettleAuditRow($row);
  61. }
  62. }
  63. return $row;
  64. }
  65. protected static function normalizeSettleAuditRow(array $row)
  66. {
  67. $settleId = intval($row['settleId'] ?? 0);
  68. if ($settleId > 0 && (empty($row['settleNo']) || bccomp((string)($row['settleAmount'] ?? 0), '0', 2) <= 0)) {
  69. $settle = SettleClass::getById($settleId, true);
  70. if (!empty($settle)) {
  71. $row['settleNo'] = is_object($settle) ? ($settle->orderSn ?? '') : ($settle['orderSn'] ?? '');
  72. $row['settleAmount'] = is_object($settle) ? ($settle->actPrice ?? 0) : ($settle['actPrice'] ?? 0);
  73. }
  74. }
  75. return $row;
  76. }
  77. protected static function isRechargeCapitalType($capitalType)
  78. {
  79. $capitalType = intval($capitalType);
  80. return $capitalType === intval(dict::getDict('capitalType', 'xhRecharge', 'id'));
  81. }
  82. }