瀏覽代碼

转让订单购买

afa 7 月之前
父節點
當前提交
c8a53b3466
共有 3 個文件被更改,包括 58 次插入36 次删除
  1. 6 35
      application/api/controller/Order.php
  2. 51 0
      application/api/logic/OrderLogic.php
  3. 1 1
      application/common/model/ProductMarket.php

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

@@ -153,7 +153,7 @@ class Order extends Api
      * 转让订单购买
      * @return void
      */
-    public function transferOrder(ProductOrder $productOrder, ProductTransfer $productTransfer, LedgerWalletModel $ledgerWalletModel, UserModel $userModel)
+    public function transferOrder(OrderLogic $orderLogic)
     {
         $params = $this->request->post();
         $validate = \think\Loader::validate('Order');
@@ -161,41 +161,10 @@ class Order extends Api
         //启动事务
         Db::startTrans();
         try {
-            $order_info = $productTransfer->where('id', $params['order_id'])->where('status', $productTransfer::Normal)->find();
-            if(empty($order_info)) throw new Exception(__("订单不存在"));
-            if($order_info['user_id'] == $this->auth->id) throw new Exception(__("不能购买自己寄售的商品"));
-            $chabao = $ledgerWalletModel::getWalletChaBao($this->auth->id);
-            if(bccomp($order_info['price'], $chabao, 2) > 0) throw new Exception(__("余额不足请前往充值"), 15001);
-
-            //抢购订单
-            $popular_order = $productOrder->where('id', $order_info['order_id'])->find();
-
-            // 生成订单
-            $popularPrice = empty($popular_order->popular_price)? $order_info->price: $popular_order->popular_price;
-            $productOrder::setCreateOrder($params['order_id'], $order_info, $productOrder::Transfer, $this->auth->id, $order_info['user_id'], $popular_order->order_no, $order_info['fees'], $popularPrice);
-           
-            //扣除余额记录 
-            $ledgerWalletModel->changeWalletAccount($this->auth->id, Asset::TOKEN, -$order_info['price'], LedgerTokenChangeModel::Payment, $order_info['user_id']);
-            
-
-            //增加转让人余额
-            $amount = bcsub($order_info['price'], $order_info['fees'], 2);
-            $ledgerWalletModel->changeWalletAccount($order_info['user_id'], Asset::TOKEN, $amount, LedgerTokenChangeModel::Receive, $this->auth->id);
 
-            if($popular_order->popular_price > config('min_rwa_price')) {
-                //扣除转让人Rwa有效  
-                $userModel::updateForRwaNum($order_info['user_id'], $userModel::getByParentId($order_info['user_id']), 1, '-');
-                //增加购买Rwa有效
-                $userModel::updateForRwaNum($this->auth->id, $this->auth->parent_id, 1, '+');
-            }
-
-            //修改原订单状态
-            $popular_order->status=$productOrder::Closure;
-            $popular_order->save();
-
-            //修改状态
-            $order_info->status = $productTransfer::Stop;
-            $order_info->save();
+            //dingdang订单
+            $orderLogic::getProductTransferOrder($params['order_id'], $this->auth->id, $this->auth->parent_id);
+       
             Db::commit();
         } catch (Exception $e) {
             Db::rollback();
@@ -204,6 +173,8 @@ class Order extends Api
         $this->success('ok');
     }
 
+
+
     //赠送
     public function giveaway(ProductOrder $productOrder, UserModel $userModel, LedgerWalletModel $ledgerWalletModel)
     {

+ 51 - 0
application/api/logic/OrderLogic.php

@@ -10,6 +10,7 @@ use fast\Asset;
 use app\common\model\ProductOrder;
 use app\common\model\LedgerTeacChangeModel;
 use app\common\model\ProductPopular;
+use app\common\model\ProductTransfer;
 
 //订单
 class OrderLogic
@@ -60,5 +61,55 @@ class OrderLogic
       }
 
 
+      //获取转让产品订单列表
+      public static function getProductTransferOrder(string $orderId, int $uid, int $puid)//: array
+      {     
+            $productOrder = Loader::model('ProductOrder');
+            $productTransfer = Loader::model('ProductTransfer');
+            $userModel = Loader::model('UserModel');
+            $ledgerWalletModel = Loader::model('LedgerWalletModel');
+            $ledgerTokenChangeModel = Loader::model('LedgerTokenChangeModel');
+            $result = $productTransfer::whereIn('id', $orderId)->where('status', ProductTransfer::Normal)->select();
+            if (count($result) !=  count(explode(",", $orderId))) {
+                  if(empty($order_info)) throw new Exception(__("订单不存在"));
+            }
+            $totalAmount = 0; //总金额
+            foreach ($result as $item) {
+
+                  if($item->user_id == $uid) throw new Exception(__("不能购买自己寄售的商品"));
+                  $totalAmount = bcadd($totalAmount, $item->price, 2);
+                  //抢购订单
+                  $popular_order = $productOrder->where('id', $item->order_id)->find();
+
+                  // 生成订单
+                  $popularPrice = empty($popular_order->popular_price)? $item->price: $popular_order->popular_price;
+
+                  $productOrder::setCreateOrder($item->order_id, $item, $productOrder::Transfer, $uid, $item->user_id, $popular_order->order_no, $item->fees, $popularPrice);
+            
+                  //扣除余额记录 
+                  $ledgerWalletModel->changeWalletAccount($uid, Asset::TOKEN, -$item->price, $ledgerTokenChangeModel::Payment, $item->user_id);
+                  
+                  //增加转让人余额
+                  $amount = bcsub($item->price, $item->fees, 2);
+                  $ledgerWalletModel->changeWalletAccount($item->user_id, Asset::TOKEN, $amount, $ledgerTokenChangeModel::Receive, $uid);
+                  if($popular_order->popular_price > config('min_rwa_price')) {
+                        //扣除转让人Rwa有效  
+                        $userModel::updateForRwaNum($item->user_id, $userModel::getByParentId($item->user_id), 1, '-');
+                        //增加购买Rwa有效
+                        $userModel::updateForRwaNum($uid, $puid, 1, '+');
+                  }
+
+                  //修改原订单状态
+                  $popular_order->status=$productOrder::Closure;
+                  $popular_order->save();
+
+                  //修改状态
+                  $item->status = $productTransfer::Stop;
+                  $item->save();
+            }
+            $chabao = $ledgerWalletModel::getWalletChaBao($uid);
+            if(bccomp($totalAmount, $chabao, 2) > 0) throw new Exception(__("余额不足请前往充值"), 15001);
+            return true;
+      }
 
 }

+ 1 - 1
application/common/model/ProductMarket.php

@@ -50,7 +50,7 @@ class ProductMarket extends Model
     {   
         $header = Request::instance()->header('Accept-Language');
         $lan    = !empty($header)? substr($header, 0, 2):'zh' ;
-        return $this->hasOne('ProductLists', 'id', 'product_id', [], 'LEFT')->field('id,'.$lan .'_name as name,thum');
+        return $this->hasOne('ProductLists', 'id', 'product_id', [], 'LEFT')->field('id,'.$lan .'_name as name,thum,details');
     }