|
|
@@ -161,56 +161,47 @@ class LedgerWalletModel extends Model
|
|
|
$available = $this->getWallet($uid);
|
|
|
$ledgerWalletModel = new LedgerWalletModel();
|
|
|
if (empty($available)) $ledgerWalletModel->insertGetId(['user_id' => $uid]); // 创建钱包
|
|
|
-
|
|
|
+ $walletUpdate = [];
|
|
|
+ $result = false;
|
|
|
//运费/手续费:扣除
|
|
|
- $totalAmount = bcadd($available['token'], $available['frozen'], 6);
|
|
|
- if($totalAmount < $amount) throw new Exception('茶宝不足');
|
|
|
-
|
|
|
- //扣除冻结金额
|
|
|
- if($available['frozen'] > $amount) $walletUpdate['frozen'] = bcsub($available['frozen'], $amount, 6);
|
|
|
-
|
|
|
- if($available['frozen'] <= $amount) {
|
|
|
- //扣除所需茶宝
|
|
|
- $subAmount = bcsub($amount, $available['frozen'], 6);
|
|
|
- $walletUpdate = ['token' => bcadd($totalAmount, -$amount, 6), 'frozen' => 0];
|
|
|
- // 创建茶宝账变记录
|
|
|
- $insertRs = (new LedgerTokenChangeModel())->insert([
|
|
|
- 'user_id' => $uid,
|
|
|
- 'from_id' => $from_id,
|
|
|
- 'change_amount' => $icn.$subAmount,
|
|
|
- 'present_amount' => bcsub($available['token'], $subAmount, 6),
|
|
|
- 'create_time' => time(),
|
|
|
- 'action' => $action
|
|
|
- ]);
|
|
|
+ if($icn == '-'){
|
|
|
+ $totalAmount = bcadd($available['token'], $available['frozen'], 6);
|
|
|
+ //扣除冻结金额
|
|
|
+ if($available['frozen'] > $amount) $walletUpdate['frozen'] = bcsub($available['frozen'], $amount, 6);
|
|
|
+ if($available['frozen'] <= $amount) {
|
|
|
+ $walletUpdate = ['token'=> bcadd($totalAmount, -$amount, 6), 'frozen' => 0];
|
|
|
+ //添加账变记录
|
|
|
+ $subAmount = bcsub($amount, $available['frozen'], 6);
|
|
|
+ $this->changeWalletAccount($uid, Asset::TOKEN, -$subAmount, LedgerTokenChangeModel::Giveaway, $from_id);
|
|
|
+ }
|
|
|
+ //添加冻结
|
|
|
+ $newAmount = $walletUpdate['frozen'];
|
|
|
+ if($available['frozen'] > 0) $result = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ //手续费
|
|
|
+ if($icn == '+' && $available['frozen'] < $amount){
|
|
|
+ if($available->token < $amount) throw new Exception('茶宝不足');
|
|
|
+ $newAmount = bcadd($available->frozen, $amount, 6);
|
|
|
+ //添加冻结
|
|
|
+ $walletUpdate =['frozen' =>$newAmount];
|
|
|
+ //添加账变记录
|
|
|
+ $this->changeWalletAccount($uid, Asset::TOKEN, -$amount, LedgerTokenChangeModel::Super, $from_id);
|
|
|
+ $result = true;
|
|
|
}
|
|
|
-
|
|
|
- //添加冻结
|
|
|
- /* if($available->token < $amount) throw new Exception('茶宝不足');
|
|
|
- $newAmount = bcadd($available->frozen, $amount, 6);
|
|
|
- $chabao = bcsub($available['token'], $amount, 6);
|
|
|
- //添加冻结
|
|
|
- $walletUpdate =['frozen' =>$newAmount ];
|
|
|
-
|
|
|
- //添加账变记录
|
|
|
- $this->changeWalletAccount($uid, Asset::TOKEN, -$amount, LedgerTokenChangeModel::Super, $from_id);
|
|
|
- */
|
|
|
-
|
|
|
- $ledgerWalletModel->where('user_id', $uid)->update($walletUpdate);
|
|
|
-
|
|
|
- // 手续费账变记录
|
|
|
- if ($available['frozen'] > 0) {
|
|
|
- $insertRs = (new LedgerFrozenChangeModel())->insert([
|
|
|
+
|
|
|
+ // 创建账变记录
|
|
|
+ if (count($walletUpdate) > 0) $ledgerWalletModel->where('user_id', $uid)->update($walletUpdate);
|
|
|
+ if($result){
|
|
|
+ return (new LedgerFrozenChangeModel())->insert([
|
|
|
'user_id' => $uid,
|
|
|
'from_id' => $from_id,
|
|
|
'change_amount' => $icn.$amount,
|
|
|
- 'present_amount' => $walletUpdate['frozen'],
|
|
|
+ 'present_amount' => $newAmount,
|
|
|
'create_time' => time(),
|
|
|
'action' => $action
|
|
|
]);
|
|
|
}
|
|
|
- if (empty($insertRs)) {
|
|
|
- throw new Exception('创建账变记录失败');
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
/**
|