hrjy 3 лет назад
Родитель
Сommit
bfcde38246

+ 21 - 16
app/admin/model/auction/AuctionOrder.php

@@ -93,9 +93,6 @@ class AuctionOrder extends BaseModel
                 'balance' => $spread['integral']
 
             ]);
-
-            $productModel->where('id', $product['id'])->save(['price' => $price, 'hanging_price' => ($price+$price*($product['rise']/100))]); //修改当前画价
-
             $anticipate = $user['anticipate'];
             $user['anticipate'] = $user['anticipate']-$price*($product['deduct']/100); // 扣除当前卖出价格百分比的预约卷
             $user->save();
@@ -111,6 +108,7 @@ class AuctionOrder extends BaseModel
                 'balance' => $user['anticipate']
             ]);
         }
+        $productModel->where('id', $product['id'])->save(['price' => $price, 'hanging_price' => ($price+$price*($product['rise']/100))]); //修改当前画价
 
     }
 
@@ -128,25 +126,32 @@ class AuctionOrder extends BaseModel
         $userModel = new User();
         $productModel = new AuctionProduct();
         $auctionModel = new Auction();
+        $bookingModel = new AuctionBooking();
 
 
         $user = $userModel->find($data['uid']);
         $product = $productModel->where('id', $data['product_id'])->find();
         $auction = $auctionModel->where('id', $product['auction_id'])->find();
+        $booking = $bookingModel->where('auction_id', $auction['id'])->whereBetweenTime('create_time', date('Y-m-d H:i:s', strtotime(date('Y-m-d'))), date('Y-m-d H:i:s', strtotime('+1 day')))->find();
+        if ($booking['status'] == 1){
+            $booking['status'] = 0;
+            $booking->save();
+            $user['anticipate'] = $user['anticipate'] + $auction['anticipate'];// 退还预约卷
+            $user->save();
 
-        $user['anticipate'] = $user['anticipate'] + $auction['anticipate'];// 退还预约卷
-        $user->save();
-        UserBill::create([
-            'uid' => $user['uid'],
-            'pm' => 1,
-            'title' => '预约卷退还',
-            'category' => '预约卷退还',
-            'type' => '预约卷',
-            'mark' => '退还预约卷',
-            'add_time' => time(),
-            'number' => $auction['anticipate'],
-            'balance' => $user['anticipate']
-        ]);
+
+            UserBill::create([
+                'uid' => $user['uid'],
+                'pm' => 1,
+                'title' => '预约卷退还',
+                'category' => '预约卷退还',
+                'type' => '预约卷',
+                'mark' => '退还预约卷',
+                'add_time' => time(),
+                'number' => $auction['anticipate'],
+                'balance' => $user['anticipate']
+            ]);
+        }
     }
 
 

+ 5 - 1
app/admin/view/auction/auction_booking/index.php

@@ -106,10 +106,14 @@
                         <button type="button" name="status" class="layui-btn-disabled layui-btn-xs" id="">
                             已退回
                         </button>
-                        {{#  } else { }}
+                        {{#  } else if (d.status === 1){ }}
                         <button type="button" name="status" class="layui-btn layui-btn-xs layui-btn-danger" id="">
                             正常
                         </button>
+                        {{#  } else{ }}
+                        <button type="button" name="status" class="layui-btn layui-btn-xs layui-btn-danger" id="">
+                            扣除
+                        </button>
                         {{#  } }}
                     </script>
                     <script type="text/html" id="act">

+ 16 - 0
app/api/common.php

@@ -1,2 +1,18 @@
 <?php
 
+// 应用公共文件
+if (!function_exists('getNewOrderId')) {
+    /**
+     * 生成订单唯一id
+     * @param $uid 用户uid
+     * @return string
+     */
+    function getNewOrderId()
+    {
+        list($msec, $sec) = explode(' ', microtime());
+        $msectime = number_format((floatval($msec) + floatval($sec)) * 1000, 0, '', '');
+        $orderId = 'wx' . $msectime . mt_rand(10000, 99999);
+        if (\app\models\auction\AuctionOrder::where('order_id', $orderId)) $orderId = 'wx' . $msectime . mt_rand(10000, 99999);
+        return $orderId;
+    }
+}

+ 108 - 0
app/api/controller/auction/AuctionProductController.php

@@ -0,0 +1,108 @@
+<?php
+
+namespace app\api\controller\auction;
+
+
+use app\models\auction\Auction;
+use app\models\auction\AuctionBooking;
+use app\models\auction\AuctionOrder;
+use app\models\auction\AuctionProduct;
+use app\models\user\User;
+use app\models\user\UserBill;
+use app\Request;
+use Monolog\Handler\Curl\Util;
+use think\facade\Cache;
+use crmeb\services\{
+    CacheService,
+    ExpressService,
+    SystemConfigService,
+};
+use crmeb\services\UtilService;
+use crmeb\repositories\OrderRepository;
+
+
+class AuctionProductController
+{
+    /**
+     * 获取商品列表
+     * @param Request $request
+     * @return mixed
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public function auction_product(Request $request)
+    {
+        $data = UtilService::getMore([
+            [['page', 'd'], 0],
+            [['limit', 'd'], 0],
+            ['id'],
+            ['user']
+        ]);
+        if (!$data['id']) return app('json')->fail('数据传入错误');
+        return app('json')->successful(AuctionProduct::list($data, $request->uid()));
+    }
+
+
+    /**
+     * 购买商品
+     * @param Request $request
+     * @return mixed
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public function purchase(Request $request)
+    {
+        $data = UtilService::getMore([
+            ['product_id'],
+        ]);
+        if (!$data['product_id']) return app('json')->fail('数据传入错误');
+
+        $product = AuctionProduct::where('id', $data['product_id'])->find();
+        if ($product['uid'] == $request->uid()) return app('json')->fail('无法购买自己商品');
+        if ($product){
+            AuctionOrder::beginTrans();
+            // 查询商品是否以卖出
+            $order = AuctionOrder::where('product_id', $data['product_id'])->whereBetweenTime('create_time', date('Y-m-d H:i:s', strtotime(date('Y-m-d'))), date('Y-m-d H:i:s', strtotime('+1 day')))->find();
+            if ($order){
+                return app('json')->fail('商品以卖出');
+            }
+            $res = AuctionOrder::create([
+                'uid' => $request->uid(),
+                'collection_id' => $product['uid'],// 商品用有人
+                'order_id' => getNewOrderId(),
+                'name' => $product['name'],
+                'product_id' => $product['id'],
+                'image'=> $product['image'],
+                'price' => $product['hanging_price'],
+            ]);
+            if ($res){
+                AuctionOrder::commitTrans();
+                return app('json')->successful('购买成功');
+            }else{
+                AuctionOrder::rollbackTrans();
+                return app('json')->fail('购买失败');
+            }
+        }else{
+            return app('json')->fail('购买商品不存在');
+        }
+
+
+    }
+
+    public function user_auction_order(Request $request)
+    {
+
+        $data = UtilService::getMore([
+            [['type', 'd'], 1],
+            [['page', 'd'], 0],
+            [['limit', 'd'], 0],
+        ]);
+
+
+        return app('json')->successful(AuctionOrder::userOrder($data,$request->uid()));
+    }
+
+
+}

+ 27 - 0
app/models/auction/AuctionOrder.php

@@ -30,6 +30,33 @@ class AuctionOrder extends BaseModel
     protected $autoWriteTimestamp = true;
 
 
+    /**
+     * 用户订单
+     * @param $data
+     * @param $uid
+     * @return \think\Collection
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public static function userOrder($data,$uid)
+    {
+        if ($data['type'] == 1){
+            $list = self::where([['uid', '=', $uid], ['status', '=', 1]])->select()->toArray(); //待上传订单
+
+        }else if($data['type'] == 2){
+            $list = self::where([['uid', '=', $uid], ['status', '=', 2]])->select()->toArray(); //待审核订单
+
+        }else if($data['type'] == 3) {
+            $list = self::where([['uid', '=', $uid], ['status', '=', 3]])->select()->toArray(); //完成订单
+        }else{
+
+            $list = self::where([['uid', '=', $uid], ['status', '=', 3]])->select()->toArray(); //过期订单
+        }
+
+        return $list;
+    }
+
 
 
 

+ 31 - 1
app/models/auction/AuctionProduct.php

@@ -26,7 +26,37 @@ class AuctionProduct extends BaseModel
     protected $name = 'auction_product';
     protected $autoWriteTimestamp = true;
 
-
+    /**
+     * 竞拍商品列表
+     * @param $data
+     * @param $uid
+     * @return array
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public static function list($data, $uid){
+        $model = self::where('is_show', 1)->where('auction_id', $data['id'])->order('sort DESC,id DESC');
+        if ($data['user']){
+            $model->where('uid', $uid); // 获取用户拥有商品
+        }
+        $list = $model->select()->toArray();
+        if (!$data['user']){
+            if ($list){
+                foreach ($list as $k => $v) {
+                    $order = AuctionOrder::where('product_id', $v['id'])->whereBetweenTime('create_time', date('Y-m-d H:i:s', strtotime(date('Y-m-d'))), date('Y-m-d H:i:s', strtotime('+1 day')))->find();
+                    if ($order){
+                        $list[$k]['status'] = 2;// 已被购买
+                        $list[$k]['str'] = '已卖完';
+                    }else{
+                        $list[$k]['status'] = 1;// 能购买
+                        $list[$k]['str'] = '购买';
+                    }
+                }
+            }
+        }
+        return $list;
+    }
 
 
 }

+ 4 - 0
route/api/route.php

@@ -162,6 +162,10 @@ Route::group(function () {
 
     Route::post('auction/subscribe', 'auction.auctionController/subscribe')->name('subscribe');// 预约场馆
     Route::get('auction/advance', 'auction.auctionController/advance')->name('advance');// 进入场馆
+    Route::get('auction/auction_product', 'auction.auctionProductController/auction_product')->name('auction_product');// 场馆商品
+    Route::post('auction/purchase', 'auction.auctionProductController/purchase')->name('purchase');// 抢购商品
+
+    Route::get('auction/user_auction_order', 'auction.auctionProductController/user_auction_order')->name('user_auction_order');// 用户竞拍订单
 })->middleware(\app\http\middleware\AllowOriginMiddleware::class)->middleware(\app\http\middleware\AuthTokenMiddleware::class, true);
 //未授权接口
 Route::group(function () {

+ 6 - 2
runtime/admin/temp/560dc87b85112a97e70f4f7bed1c686b.php

@@ -1,4 +1,4 @@
-<?php /*a:5:{s:74:"D:\phpstudy_pro\WWW\CRMEB\app\admin\view\auction\auction_booking\index.php";i:1648091100;s:61:"D:\phpstudy_pro\WWW\CRMEB\app\admin\view\public\container.php";i:1595820902;s:62:"D:\phpstudy_pro\WWW\CRMEB\app\admin\view\public\frame_head.php";i:1595820902;s:57:"D:\phpstudy_pro\WWW\CRMEB\app\admin\view\public\style.php";i:1595820902;s:64:"D:\phpstudy_pro\WWW\CRMEB\app\admin\view\public\frame_footer.php";i:1595820902;}*/ ?>
+<?php /*a:5:{s:74:"D:\phpstudy_pro\WWW\CRMEB\app\admin\view\auction\auction_booking\index.php";i:1648194776;s:61:"D:\phpstudy_pro\WWW\CRMEB\app\admin\view\public\container.php";i:1595820902;s:62:"D:\phpstudy_pro\WWW\CRMEB\app\admin\view\public\frame_head.php";i:1595820902;s:57:"D:\phpstudy_pro\WWW\CRMEB\app\admin\view\public\style.php";i:1595820902;s:64:"D:\phpstudy_pro\WWW\CRMEB\app\admin\view\public\frame_footer.php";i:1595820902;}*/ ?>
 <!DOCTYPE html>
 <html lang="zh-CN">
 <head>
@@ -180,10 +180,14 @@
                         <button type="button" name="status" class="layui-btn-disabled layui-btn-xs" id="">
                             已退回
                         </button>
-                        {{#  } else { }}
+                        {{#  } else if (d.status === 1){ }}
                         <button type="button" name="status" class="layui-btn layui-btn-xs layui-btn-danger" id="">
                             正常
                         </button>
+                        {{#  } else{ }}
+                        <button type="button" name="status" class="layui-btn layui-btn-xs layui-btn-danger" id="">
+                            扣除
+                        </button>
                         {{#  } }}
                     </script>
                     <script type="text/html" id="act">

+ 5 - 0
runtime/log/202203/25.log

@@ -18,3 +18,8 @@
   'auction_id' => 2,
 )[D:\phpstudy_pro\WWW\CRMEB\vendor\topthink\think-orm\src\db\Builder.php:359]
 [2022-03-25T13:53:33+08:00][error] [8]未定义变量: id[D:\phpstudy_pro\WWW\CRMEB\app\models\auction\Auction.php:51]
+[2022-03-25T14:34:52+08:00][error] [10501]SQLSTATE[42S22]: Column not found: 1054 Unknown column 'status' in 'where clause'[D:\phpstudy_pro\WWW\CRMEB\vendor\topthink\think-orm\src\db\PDOConnection.php:713]
+[2022-03-25T14:48:52+08:00][error] [0]Call to undefined function app\models\auction\pr()[D:\phpstudy_pro\WWW\CRMEB\app\models\auction\AuctionProduct.php:46]
+[2022-03-25T15:16:57+08:00][error] [0]Call to undefined function app\api\controller\auction\pr()[D:\phpstudy_pro\WWW\CRMEB\app\api\controller\auction\AuctionProductController.php:53]
+[2022-03-25T16:00:13+08:00][error] [0]语法错误: unexpected '}'[D:\phpstudy_pro\WWW\CRMEB\app\api\controller\auction\AuctionProductController.php:99]
+[2022-03-25T16:49:45+08:00][error] [8192]Non-static method app\models\auction\AuctionOrder::userOrder() should not be called statically[D:\phpstudy_pro\WWW\CRMEB\app\api\controller\auction\AuctionProductController.php:104]