ソースを参照

标记茶宝转账

afa 7 ヶ月 前
コミット
7795b181a9

+ 7 - 3
application/api/controller/Airdrop.php

@@ -3,14 +3,17 @@
 namespace app\api\controller;
 
 use app\common\model\UserAirdrop;
+use think\Db;
 use think\Exception;
 use app\api\logic\WelfareLoginc;
 use app\common\model\UserModel;
 use app\common\controller\Api;
 use app\common\model\UserWelfare;
-use app\common\model\LedgerTokenChangeModel;
+use app\common\model\LedgerFrozenChangeModel;
 use app\common\model\LedgerWalletModel;
 use app\common\model\ProductOrder;
+use fast\Asset;
+
 //空投
 class Airdrop extends Api
 {
@@ -61,7 +64,7 @@ class Airdrop extends Api
 
 
     //超级福利
-    public function setSuperWeal(UserWelfare $userWelfare, UserModel $userModel, ProductOrder $productOrder)
+    public function setSuperWeal(UserWelfare $userWelfare, UserModel $userModel, ProductOrder $productOrder, LedgerWalletModel $ledgerWalletModel)
     {
         $row = $userWelfare::getIsWelfare();
         if(empty($row->is_super)) $this->error(__('暂未开启'));
@@ -73,7 +76,8 @@ class Airdrop extends Api
         Db::startTrans();
         try {
             //把9.9茶宝转入冻结账号
-            if($row->frozen > 0) (new LedgerWalletModel)->sendUserSubFrozen($this->auth->id, $row->frozen, LedgerTokenChangeModel::Super, '-');
+            if($row->frozen > 0) $ledgerWalletModel->setChangeFrozen($this->auth->id, $row->frozen, LedgerFrozenChangeModel::Super, '+');
+            
 
             //添加Rwa茶记录
             $result = WelfareLoginc::setUserWelfareLos($this->auth->id, $row->super_product_id, $row->super_num, time(), $this->lan, $productOrder::Super);

+ 15 - 14
application/api/controller/Ledger.php

@@ -3,7 +3,7 @@
 namespace app\api\controller;
 
 use app\common\controller\Api;
-use app\common\model\LedgerQubicChangeModel;
+use app\common\model\LedgerFrozenChangeModel;
 use app\common\model\UserModel;
 use app\common\model\LedgerSmhChangeModel;
 use app\common\model\LedgerTeacChangeModel;
@@ -68,16 +68,9 @@ class Ledger extends Api
     {
         $type_id  = $this->request->post('query.action'); // 账变类型
         $coin_type  = $this->request->post('query.coin_type'); // 資金类型
-        $where = ['user_id' => $this->auth->getTokenUserID()];
+        $where = ['user_id' => 1275];
         if ($type_id > 0) $where['action'] = $type_id;
         switch ($coin_type){
-            case 'usdt':
-                $paginator = (new LedgerUsdtChangeModel());
-                break;
-            case 'teac':
-                $paginator = Loader::model('LedgerTeacChangeModel');
-                $res['data'] = $paginator->where($where)->order('id DESC')->paginate($this->pageSize);
-                break;
             case 'token':
                 $paginator = Loader::model('LedgerTokenChangeModel');
                 $res['data'] = $paginator->alias('a')
@@ -86,12 +79,20 @@ class Ledger extends Api
                     ->where($where)
                     ->order('a.id DESC')->paginate($this->pageSize);
                 break;
+            case 'frozen':
+                $paginator = (new LedgerFrozenChangeModel());
+                $res['data'] = $paginator->where($where)->order('id DESC')->paginate($this->pageSize);
+                break;
+            case 'teac':
+                $paginator = Loader::model('LedgerTeacChangeModel');
+                $res['data'] = $paginator->where($where)->order('id DESC')->paginate($this->pageSize);
+                break;
+            case 'usdt':
+                $paginator = (new LedgerUsdtChangeModel());
+                break;
             case 'smh':
                 $paginator = (new LedgerSmhChangeModel());
                 break;
-            case 'qubic':
-                $paginator = (new LedgerQubicChangeModel());
-                break;
             default:
                 $this->error(__('Invalid parameters'));
                 break;
@@ -127,9 +128,9 @@ class Ledger extends Api
             if(bccomp($amount, $available, 2) > 0) throw new Exception(__("余额不足请前往充值"), 15001);
             
             // 更新USDT和账变
-            $ledgerWalletModel->changeWalletAccount($this->auth->id, Asset::FROZEN, -$amount, LedgerTokenChangeModel::FroTrans, $user['id']);
+            $ledgerWalletModel->changeWalletAccount($this->auth->id, Asset::FROZEN, -$amount, LedgerFrozenChangeModel::Payment, $user['id']);
 
-            $ledgerWalletModel->changeWalletAccount($user['id'], Asset::FROZEN, $real, LedgerTokenChangeModel::FroRecei, $this->auth->id);
+            $ledgerWalletModel->changeWalletAccount($user['id'], Asset::FROZEN, $real, LedgerFrozenChangeModel::Receive, $this->auth->id);
             // 提交事务
             Db::commit();
         } catch (Exception $e) {

+ 6 - 6
application/api/controller/Order.php

@@ -6,7 +6,7 @@ use app\common\controller\Api;
 use app\common\model\ProductTransfer;
 use app\common\model\ProductOrder;
 use app\common\model\ProductPopular;
-use app\common\model\ProductArea;
+use app\common\model\LedgerFrozenChangeModel;
 use app\common\model\LedgerWalletModel;
 use app\common\model\UserArea;
 use app\common\model\UserModel;
@@ -106,8 +106,8 @@ class Order extends Api
             if($order_info->popular_price > config('min_rwa_price')) $userModel::updateForRwaNum($order_info->user_id, $userModel::getByParentId($order_info->user_id), 1, '-');
 
             //扣除运费
-            if($order_info->freight > 0) $ledgerWalletModel->changeWalletAccount($this->auth->id, Asset::TOKEN, -$order_info->freight, LedgerTokenChangeModel::Freight, $this->auth->id);
-
+            if($order_info->freight > 0) $ledgerWalletModel->setChangeFrozen($this->auth->id, $order_info->freight, LedgerFrozenChangeModel::Freight, '-');
+  
             $order_info->status= $productOrder::Shipped; 
             $order_info->save();
             // 提交事务
@@ -125,7 +125,7 @@ class Order extends Api
      * 订单寄售转让
      * @return void
      */
-    public function transfer(ProductOrder $productOrder, ProductTransfer $productTransfer, ProductPopular $productPopular)
+    public function transfer(ProductOrder $productOrder, ProductTransfer $productTransfer)
     {   
         $params = $this->request->post();
         $validate = \think\Loader::validate('Order');
@@ -235,8 +235,8 @@ class Order extends Api
             if($order_info->popular_price > config('min_rwa_price')) $userModel::updateForRwaNum($user['id'], $userModel::getByParentId($user['id']), 1, '+');
 
             //扣除手续费
-            $ledgerWalletModel->changeWalletAccount($this->auth->id, Asset::TOKEN, -$fees, LedgerTokenChangeModel::Giveaway, $user['id']);
-
+            $ledgerWalletModel->setChangeFrozen($this->auth->id, $fees, LedgerFrozenChangeModel::Giveaway, '-');
+        
             //扣除Rwa有效-1
             if($order_info->popular_price > config('min_rwa_price')) $userModel::updateForRwaNum($this->auth->id, $this->auth->parent_id, 1, '-');
 

+ 0 - 13
application/common/model/LedgerDeclarationChangeModel.php

@@ -1,13 +0,0 @@
-<?php
-
-namespace app\common\model;
-
-use think\Model;
-
-class LedgerDeclarationChangeModel extends Model
-{
-
-    protected $name = "ledger_declaration_change";
-
-
-}

+ 35 - 0
application/common/model/LedgerFrozenChangeModel.php

@@ -0,0 +1,35 @@
+<?php
+
+namespace app\common\model;
+
+use think\Model;
+
+class LedgerFrozenChangeModel extends Model
+{
+
+    //LedgerDeclarationChangeModel
+    protected $name = "ledger_frozen_change";
+
+    const Giveaway          = 0; //赠送手续费
+    const Super             = 1; //茶宝标记激活
+    const Freight           = 2; //物流运费
+    const Payment           = 3; //转让
+    const Receive           = 4; //资产转让收款
+
+
+    public static function getStatusList()
+    {
+        return [
+  
+            self::Giveaway => __('赠送'),
+            self::Super => __('茶宝标记激活'),
+            self::Freight => __('物流运费'),
+            self::Payment  => __('转账支付'),
+            self::Receive => __('转账收款')
+        ];
+    }
+
+
+
+
+}

+ 9 - 12
application/common/model/LedgerTokenChangeModel.php

@@ -52,7 +52,7 @@ class LedgerTokenChangeModel extends Model
      const Withdraw          = 4;
      const Share             = 5;
      const Return            = 6;
-     const Giveaway          = 7;
+  
      const Direct            = 8;
      const System            = 9;
      const GiftPay           = 10; //赠送支出
@@ -60,10 +60,9 @@ class LedgerTokenChangeModel extends Model
      const Community         = 12; //社区津贴
      const Service           = 13; //服务津贴
      const Together          = 14; //共创津贴
-     const Freight           = 15; //物流运费
-     const Super             = 16; //茶宝标记激活 
-     const FroTrans          = 17; //冻结资产转让
-     const FroRecei          = 18; //冻结资产转让收款
+   
+ 
+   
      /*
       * 支付状态
       * 0未支付 100支付中 200支付成功 400支付失败
@@ -77,7 +76,6 @@ class LedgerTokenChangeModel extends Model
          self::Withdraw          => '提现',
          self::Share             => '分享',
          self::Return            => '退回',
-         self::Giveaway          => '赠送手续费',
          self::Direct            => '布道津贴', //直推
          self::System            => '系统调整',
          self::GiftPay           => '转账支出',
@@ -85,8 +83,8 @@ class LedgerTokenChangeModel extends Model
          self::Community         => '社区津贴',
          self::Service           => '服务津贴',
          self::Together          => '共创津贴',
-         self::Freight           => '物流运费',
-         self::Super             => '茶宝标记激活',
+       
+        
 
      ];
 
@@ -101,16 +99,15 @@ class LedgerTokenChangeModel extends Model
             self::Withdraw  => __('提现'),
             self::Share => __('分享'),
             self::Return => __('退回'),
-            self::Giveaway => __('赠送'),
             self::Direct => __('布道津贴'),
             self::System => __('系统调整'),
             self::GiftPay => __('转账支出'),
             self::GiftReceipt => __('转账收款'),
             self::Community => __('社区津贴'),
             self::Service => __('服务津贴'),
-            self::Together => __('共创津贴'),
-            self::Freight => __('物流运费'),
-            self::Super => __('茶宝标记激活')];
+            self::Together => __('共创津贴')
+       
+           ];
     }
    
 

+ 59 - 51
application/common/model/LedgerWalletModel.php

@@ -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){