| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- <?php
- namespace bizHd\balance\classes;
- use bizHd\order\classes\SettleClass;
- use bizHd\recharge\classes\RechargeClass;
- use common\components\dict;
- use Yii;
- use bizHd\base\classes\BaseClass;
- class BalanceChangeClass extends BaseClass
- {
- public static $baseFile = '\bizHd\balance\models\BalanceChange';
- public static function getChangeList($where)
- {
- $data = self::getList('*', $where, 'addTime DESC,id DESC');
- if (!empty($data['list'])) {
- foreach ($data['list'] as $k => $v) {
- $v = is_array($v) ? $v : (array)$v;
- $v = self::fillSettleAuditFromRecharge($v);
- $settleAmount = $v['settleAmount'] ?? 0;
- $amount = $v['amount'] ?? 0;
- $io = $v['io'] ?? 0;
- $becomeBalance = 0;
- if ($io == 1) {
- $becomeBalance = bcsub($amount, $settleAmount, 2);
- $becomeBalance = floatval($becomeBalance);
- }
- $v['becomeBalance'] = $becomeBalance;
- $data['list'][$k] = $v;
- }
- }
- return $data;
- }
- /**
- * 零售会员充值流水补全结账单(对照 ghs CustomBalanceChangeClass::fillClearAuditFromRecharge)
- */
- public static function fillSettleAuditFromRecharge($row)
- {
- if (empty($row) || !is_array($row)) {
- return $row;
- }
- if (intval($row['settleId'] ?? 0) > 0) {
- return self::normalizeSettleAuditRow($row);
- }
- if (intval($row['io'] ?? 0) !== 1) {
- return $row;
- }
- $relateId = intval($row['relateId'] ?? 0);
- if ($relateId <= 0 || !self::isRechargeCapitalType($row['capitalType'] ?? 0)) {
- return $row;
- }
- $recharge = RechargeClass::getById($relateId, true);
- if (!empty($recharge)) {
- $settleId = intval(is_object($recharge) ? ($recharge->settleId ?? 0) : ($recharge['settleId'] ?? 0));
- if ($settleId > 0) {
- $row['settleId'] = $settleId;
- $settle = SettleClass::getById($settleId, true);
- if (!empty($settle)) {
- $row['settleNo'] = is_object($settle) ? ($settle->orderSn ?? '') : ($settle['orderSn'] ?? '');
- $row['settleAmount'] = is_object($settle) ? ($settle->actPrice ?? 0) : ($settle['actPrice'] ?? 0);
- }
- return self::normalizeSettleAuditRow($row);
- }
- }
- return $row;
- }
- protected static function normalizeSettleAuditRow(array $row)
- {
- $settleId = intval($row['settleId'] ?? 0);
- if ($settleId > 0 && (empty($row['settleNo']) || bccomp((string)($row['settleAmount'] ?? 0), '0', 2) <= 0)) {
- $settle = SettleClass::getById($settleId, true);
- if (!empty($settle)) {
- $row['settleNo'] = is_object($settle) ? ($settle->orderSn ?? '') : ($settle['orderSn'] ?? '');
- $row['settleAmount'] = is_object($settle) ? ($settle->actPrice ?? 0) : ($settle['actPrice'] ?? 0);
- }
- }
- return $row;
- }
- protected static function isRechargeCapitalType($capitalType)
- {
- $capitalType = intval($capitalType);
- return $capitalType === intval(dict::getDict('capitalType', 'xhRecharge', 'id'));
- }
- }
|