|
|
@@ -71,7 +71,7 @@ class LedgerWalletModel extends Model
|
|
|
{
|
|
|
$available = $this->getWallet($uid);
|
|
|
if (empty($available)) (new LedgerWalletModel())->insertGetId(['user_id' => $uid]); // 创建钱包
|
|
|
- $frozen = 0; //冻结金额
|
|
|
+ $frozen = ''; //冻结金额
|
|
|
// 账变资产模型
|
|
|
switch ($asset) {
|
|
|
case Asset::USDT:
|
|
|
@@ -79,7 +79,6 @@ class LedgerWalletModel extends Model
|
|
|
break;
|
|
|
case Asset::TOKEN:
|
|
|
$changeModel = new LedgerTokenChangeModel();
|
|
|
- if($action == $changeModel::Giveaway || $action == $changeModel::Freight) $frozen = $available->frozen; //冻结
|
|
|
break;
|
|
|
case Asset::TEAC:
|
|
|
$changeModel = new LedgerTokenChangeModel();
|
|
|
@@ -88,14 +87,15 @@ class LedgerWalletModel extends Model
|
|
|
$changeModel = new LedgerSmhChangeModel();
|
|
|
break;
|
|
|
case Asset::FROZEN:
|
|
|
- $changeModel = new LedgerTokenChangeModel();
|
|
|
+ //扣掉赠送手续费
|
|
|
+ $changeModel = new LedgerFrozenChangeModel();
|
|
|
break;
|
|
|
default:
|
|
|
throw new Exception('币种错误:' . $asset);
|
|
|
}
|
|
|
|
|
|
// 更新钱包余额
|
|
|
- $newAmount = $this->changeWalletOnly($uid, $asset, $amount, $frozen);
|
|
|
+ $newAmount = $this->changeWalletOnly($uid, $asset, $amount);
|
|
|
|
|
|
// 创建账变记录
|
|
|
$insertRs = $changeModel->insert([
|
|
|
@@ -112,39 +112,6 @@ class LedgerWalletModel extends Model
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 冻结茶宝
|
|
|
- * @param int $uid 服务器算力的用户ID
|
|
|
- * @param string $usdt 报单金额
|
|
|
- * @return void
|
|
|
- * @throws Exception
|
|
|
- */
|
|
|
- public function sendUserSubFrozen(int $uid, string $amount, int $action, string $icn)
|
|
|
- {
|
|
|
- $available = $this->getWallet($uid);
|
|
|
- $ledgerWalletModel = new LedgerWalletModel();
|
|
|
- if (empty($available)) $ledgerWalletModel->insertGetId(['user_id' => $uid]); // 创建钱包
|
|
|
-
|
|
|
- $newAmount = $available->token;
|
|
|
- if($newAmount < $amount) throw new Exception('茶宝不足');
|
|
|
- // 创建账变记录
|
|
|
- $insertRs = $ledgerWalletModel->where('user_id', $uid)->update(['token' => bcsub($newAmount, $amount, 6), 'frozen' => bcadd($available->frozen, $amount, 6)]);
|
|
|
-
|
|
|
- // 创建账变记录
|
|
|
- $insertRs = (new LedgerTokenChangeModel)->insert([
|
|
|
- 'user_id' => $uid,
|
|
|
- 'from_id' => 0,
|
|
|
- 'change_amount' => $icn.$amount,
|
|
|
- 'present_amount' => $newAmount,
|
|
|
- 'create_time' => time(),
|
|
|
- 'action' => $action
|
|
|
- ]);
|
|
|
-
|
|
|
- if (empty($insertRs)) {
|
|
|
- throw new Exception('创建账变记录失败');
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 仅更新钱包余额,没有账变
|
|
|
* @param int $uid 用户ID
|
|
|
@@ -153,7 +120,7 @@ class LedgerWalletModel extends Model
|
|
|
* @return string 变动后的金额
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
- public function changeWalletOnly(int $uid, string $asset, string $amount, string $freeze): string
|
|
|
+ public function changeWalletOnly(int $uid, string $asset, string $amount ): string
|
|
|
{
|
|
|
$available = $this->getWalletTX($uid);
|
|
|
if (empty($available)) {
|
|
|
@@ -165,26 +132,68 @@ class LedgerWalletModel extends Model
|
|
|
throw new Exception('金额变动为0');
|
|
|
}
|
|
|
|
|
|
- //总金额+冻结金额
|
|
|
- $totalAmount = bcadd($available[$asset], $freeze, 6);
|
|
|
// 余额不足的判断
|
|
|
- if ($amount < 0 && $totalAmount < -$amount) {
|
|
|
+ if ($amount < 0 && $available[$asset] < -$amount) {
|
|
|
throw new Exception($asset . '余额不足');
|
|
|
}
|
|
|
- //扣除冻结金额
|
|
|
- if($freeze > 0){
|
|
|
- if($freeze > -$amount) $walletUpdate['frozen'] = bcsub($freeze, -$amount, 6);
|
|
|
- if($freeze <= -$amount) $walletUpdate = [$asset => bcadd($totalAmount, $amount, 6), 'frozen' => 0];
|
|
|
- }else{
|
|
|
- $newAmount = bcadd($totalAmount, $amount, 6); // 新余额
|
|
|
- $walletUpdate = [$asset => $newAmount, 'update_time' => time()];
|
|
|
- }
|
|
|
+
|
|
|
+ $newAmount = bcadd($available[$asset], $amount, 6); // 新余额
|
|
|
+ $walletUpdate = [$asset => $newAmount, 'update_time' => time()];
|
|
|
+
|
|
|
// 更新余额
|
|
|
$changeRs = $this->save($walletUpdate, ['user_id' => $uid]);
|
|
|
if (empty($changeRs)) {
|
|
|
throw new Exception('更新' . $asset . '余额失败');
|
|
|
}
|
|
|
- return $totalAmount;
|
|
|
+ return $newAmount;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 冻结茶宝
|
|
|
+ * @param int $uid 用户ID
|
|
|
+ * @param string $amount 报单金额
|
|
|
+ * @return void
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public function setChangeFrozen(int $uid, string $amount, int $action, string $icn, int $from_id = 0)
|
|
|
+ {
|
|
|
+ $available = $this->getWallet($uid);
|
|
|
+ $ledgerWalletModel = new LedgerWalletModel();
|
|
|
+ if (empty($available)) $ledgerWalletModel->insertGetId(['user_id' => $uid]); // 创建钱包
|
|
|
+
|
|
|
+ //运费/手续费:扣除
|
|
|
+ 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];
|
|
|
+ //添加冻结
|
|
|
+ $newAmount = $walletUpdate['frozen'];
|
|
|
+ }else{
|
|
|
+
|
|
|
+ if($available->token < $amount) throw new Exception('茶宝不足');
|
|
|
+ $newAmount = bcadd($available->frozen, $amount, 6);
|
|
|
+ //添加冻结
|
|
|
+ $walletUpdate =['token' => bcsub($newAmount, $amount, 6), 'frozen' => bcadd($available->frozen, $amount, 6)];
|
|
|
+ }
|
|
|
+
|
|
|
+ // 创建账变记录
|
|
|
+ $insertRs = $ledgerWalletModel->where('user_id', $uid)->update($walletUpdate);
|
|
|
+
|
|
|
+ // 创建账变记录
|
|
|
+ $insertRs = (new LedgerTokenChangeModel)->insert([
|
|
|
+ 'user_id' => $uid,
|
|
|
+ 'from_id' => $from_id,
|
|
|
+ 'change_amount' => $icn.$amount,
|
|
|
+ 'present_amount' => $newAmount,
|
|
|
+ 'create_time' => time(),
|
|
|
+ 'action' => $action
|
|
|
+ ]);
|
|
|
+
|
|
|
+ if (empty($insertRs)) {
|
|
|
+ throw new Exception('创建账变记录失败');
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -238,7 +247,6 @@ class LedgerWalletModel extends Model
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
$directPower = $power * $directProfitFloat; // 可获得的直推奖励(算力)
|
|
|
|
|
|
if($directPower > 0){
|