'加', self::TYPE_DEC => '减', ]; function newPlatformBalance($platform_id, $currency_code): \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Builder|bool { $resModel = $this->findItemByWhere(['platform_id' => $platform_id, 'currency_code' => $currency_code]); if ($resModel) return $resModel; $oWalletCurrencyModel = new WalletCurrencyModel(); $resWalletCurrencyModel = $oWalletCurrencyModel->findByCode($currency_code); if (!$resWalletCurrencyModel) throw new ModelException('currency_code error'); $insert = [ 'platform_id' => $platform_id, 'currency_id' => $oWalletCurrencyModel->id, 'currency_code' => $oWalletCurrencyModel->code, 'created_at' => Times::getNowDateTime(), 'updated_at' => Times::getNowDateTime(), ]; return $this->addItem($insert); } function findPlatformBalance($platform_id, $currency_code): \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Builder|null { return $this->findItemByWhere(['platform_id' => $platform_id, 'currency_code' => $currency_code]); } function findPlatformBalanceOrCreate($platform_id, $currency_code): \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Eloquent\Builder|bool|array|null { $resModel = $this->findItemByWhere(['platform_id' => $platform_id, 'currency_code' => $currency_code]); if (!$resModel) { //不存在就创建一个 $resModel = $this->newPlatformBalance($platform_id, $currency_code); } return $resModel; } function frozenAmount($id,$amount): bool|int { $amount = abs($amount); $updateItem = [ 'id' => $id, 'frozen_amount' => DB::raw('frozen_amount + '. $amount), 'available_amount' => DB::raw('available_amount - '. $amount), ]; return $this->updateItem($updateItem); } function unFrozenAmount($id,$amount): bool|int { $amount = abs($amount); $updateItem = [ 'id' => $id, 'frozen_amount' => DB::raw('frozen_amount - '. $amount), 'available_amount' => DB::raw('available_amount + '. $amount), ]; return $this->updateItem($updateItem); } function subFrozenAmount($id, $amount): bool|int { $amount = abs($amount); $updateItem = [ 'id' => $id, 'total_amount' => DB::raw('total_amount - '. $amount), 'frozen_amount' => DB::raw('frozen_amount - '. $amount), ]; return $this->updateItem($updateItem); } function addFrozenAmount($id, $amount): bool|int { $amount = abs($amount); $updateItem = [ 'id' => $id, 'total_amount' => DB::raw('total_amount + '. $amount), 'frozen_amount' => DB::raw('frozen_amount + '. $amount), ]; return $this->updateItem($updateItem); } function subAvailableAmount($id, $amount): bool|int { $amount = abs($amount); $updateItem = [ 'id' => $id, 'total_amount' => DB::raw('total_amount - '. $amount), 'available_amount' => DB::raw('available_amount - '. $amount), ]; return $this->updateItem($updateItem); } function addAvailableAmount($id, $amount): bool|int { $amount = abs($amount); $updateItem = [ 'id' => $id, 'total_amount' => DB::raw('total_amount + '. $amount), 'available_amount' => DB::raw('available_amount + '. $amount), ]; return $this->updateItem($updateItem); } }