Forráskód Böngészése

订单系统完成购物车相关接口

15313670163 4 hónapja
szülő
commit
6ff31c82d4

+ 141 - 25
app/JsonRpc/OrderService.php

@@ -6,6 +6,7 @@ use App\Model\AdSize;
 use App\Model\AdPlace;
 use App\Model\Order;
 use App\Model\OrderAd;
+use App\Model\ShoppingCart;
 use App\Model\Website;
 use App\Tools\Result;
 use Carbon\Carbon;
@@ -56,12 +57,12 @@ class OrderService implements OrderServiceInterface
                 }
                 $rep = AdPlace::whereIn('ad_place.id', $place_id)
                     ->leftJoin('website', 'ad_place.website_id', 'website.id')
-                    ->leftJoin('ad_size','ad_place.ad_size_id','ad_size.id')
-                    ->select('ad_place.*', 'website.website_name', 'website.id')
+                    ->leftJoin('ad_size', 'ad_place.ad_size_id', 'ad_size.id')
+                    ->select('ad_place.*', 'website.website_name', 'website.id', 'ad_size.*')
                     ->selectSub('website.id', 'webid')
                     ->selectSub('ad_place.id', 'pid')
-                    ->selectSub('ad_size.width','size_width')
-                    ->selectSub('ad_size.height','size_height')
+                    ->selectSub('ad_size.width', 'size_width')
+                    ->selectSub('ad_size.height', 'size_height')
                     ->orderBy("website.id", "asc")
                     ->limit($data['pageSize'])
                     ->offset(($data['page'] - 1) * $data['pageSize'])
@@ -70,12 +71,12 @@ class OrderService implements OrderServiceInterface
             } else {
                 $rep = AdPlace::where($where)
                     ->leftJoin('website', 'ad_place.website_id', 'website.id')
-                    ->leftJoin('ad_size','ad_place.ad_size_id','ad_size.id')
-                    ->select('ad_place.*', 'website.website_name', 'website.id')
+                    ->leftJoin('ad_size', 'ad_place.ad_size_id', 'ad_size.id')
+                    ->select('ad_place.*', 'website.website_name', 'website.id', 'ad_size.*')
                     ->selectSub('website.id', 'webid')
                     ->selectSub('ad_place.id', 'pid')
-                    ->selectSub('ad_size.width','size_width')
-                    ->selectSub('ad_size.height','size_height')
+                    ->selectSub('ad_size.width', 'size_width')
+                    ->selectSub('ad_size.height', 'size_height')
                     ->orderBy("website.id", "asc")
                     ->limit($data['pageSize'])
                     ->offset(($data['page'] - 1) * $data['pageSize'])
@@ -87,24 +88,25 @@ class OrderService implements OrderServiceInterface
             $time = ($endTime - $startTime) / (24 * 60 * 60);
             $roundedValue = round($time, 2);
             $days = number_format($roundedValue, 2, '.', '');
-            $data = [
+            $result = [
                 'rows' => $rep->toArray(),
                 'count' => $count,
                 'days' => $days,
             ];
 
-            if (empty($data['rows'])) {
+            if (empty($result['rows'])) {
                 return Result::error("暂无符合您条件的广告位!");
 
             }
         } else {
-            $data = AdSize::get();
-            if (empty($data)) {
+            $result = AdSize::get();
+            if (empty($result)) {
                 return Result::error('暂无广告尺寸!');
             }
         }
 
-        return Result::success($data);
+        return Result::success($result);
+
     }
     /**
      * 添加订单
@@ -186,7 +188,7 @@ class OrderService implements OrderServiceInterface
                 'admin_user.user_name as admin_user_name',
                 'user.user_name as user_name'
             )
-            ->orderBy('order.id');
+            ->orderBy('order.id', 'desc');
 
         // 执行分页查询
         $result = $query->paginate($perPage, ['*'], 'page', $page);
@@ -441,7 +443,7 @@ class OrderService implements OrderServiceInterface
             }
             //去掉时间冲突并且符合图片尺寸的广告位
             $placeids = AdPlace::whereNotIn('id', $pid)->where($where)->select('id', 'website_id')->get()->all();
-           if(empty($placeids)){
+            if (empty($placeids)) {
                 return Result::error('暂无数据!');
             }
 
@@ -461,12 +463,12 @@ class OrderService implements OrderServiceInterface
                     ->whereIn('ad_place.id', $place_id)
                     ->where('ad_place.website_id', $data['website_id'])
                     ->leftJoin('website', 'ad_place.website_id', 'website.id')
-                    ->leftJoin('ad_size','ad_place.ad_size_id','ad_size.id')
-                    ->select('ad_place.*', 'website.website_name', 'website.id')
+                    ->leftJoin('ad_size', 'ad_place.ad_size_id', 'ad_size.id')
+                    ->select('ad_place.*', 'website.website_name', 'website.id', 'ad_size.*')
                     ->selectSub('website.id', 'webid')
                     ->selectSub('ad_place.id', 'pid')
-                    ->selectSub('ad_size.width','size_width')
-                    ->selectSub('ad_size.height','size_height')
+                    ->selectSub('ad_size.width', 'size_width')
+                    ->selectSub('ad_size.height', 'size_height')
                     ->orderBy("website.id", "asc")
                     ->limit($data['pageSize'])
                     ->offset(($data['page'] - 1) * $data['pageSize'])
@@ -481,12 +483,12 @@ class OrderService implements OrderServiceInterface
                 $rep = AdPlace::where($where)
                     ->where('ad_place.website_id', $data['website_id'])
                     ->leftJoin('website', 'ad_place.website_id', 'website.id')
-                    ->leftJoin('ad_size','ad_place.ad_size_id','ad_size.id')
-                    ->select('ad_place.*', 'website.website_name', 'website.id')
+                    ->leftJoin('ad_size', 'ad_place.ad_size_id', 'ad_size.id')
+                    ->select('ad_place.*', 'website.website_name', 'website.id', 'ad_size.*')
                     ->selectSub('website.id', 'webid')
                     ->selectSub('ad_place.id', 'pid')
-                    ->selectSub('ad_size.width','size_width')
-                    ->selectSub('ad_size.height','size_height')
+                    ->selectSub('ad_size.width', 'size_width')
+                    ->selectSub('ad_size.height', 'size_height')
                     ->orderBy("website.id", "asc")
                     ->limit($data['pageSize'])
                     ->offset(($data['page'] - 1) * $data['pageSize'])
@@ -514,7 +516,7 @@ class OrderService implements OrderServiceInterface
         $result = [
             'rows' => $rep->toArray(),
             'count' => $count,
-            'days' => $days
+            'days' => $days,
         ];
         return Result::success($result);
     }
@@ -657,7 +659,6 @@ class OrderService implements OrderServiceInterface
         if (empty($rep)) {
             return Result::error("您暂时还没有下单");
         } else {
-
             $data = [
                 'rows' => $rep,
                 'count' => $count,
@@ -754,5 +755,120 @@ class OrderService implements OrderServiceInterface
         }
         return Result::success($order);
     }
+    /**
+     * 创建购物车
+     * @param
+     * @return void
+     */
+    public function addShoppingCart(array $data): array
+    {
+        $shop = ShoppingCart::where('user_id', $data['user_id'])->get()->all();
+        $time = time();
+        $timestamp = date('YmdHis', $time);
+        $randomNumber = mt_rand(100, 999);
+        $shopping_id = $randomNumber . $timestamp; // 时间戳与随机数拼接   
+        Db::beginTransaction();
+        try {
+            if (!empty($shop)) {
+                $del_shop = ShoppingCart::where('user_id', $data['user_id'])->delete();
+                if (empty($del_shop)) {
+                    return Result::error("删除失败");
+                }
+            }
+            $shop = [
+                'user_id' => $data['user_id'],
+                'shopping_id' => $shopping_id,
+                'created_at' => date('Y-m-d H:i:s', time()),
+                'updated_at' => date('Y-m-d H:i:s', time())
+            ];
+            $result = ShoppingCart::insert($shop);
+            Db::commit();
+        } catch (\Exception $e) {
+            Db::rollBack();
+            return Result::error($e->getMessage());
+        }
+        if(empty($result)){
+            return Result::error("创建失败");
+        }else{
+            return Result::success($shopping_id);
+        }
+
+    }
+    /**
+     * 获取购物车中的广告位
+     * @param
+     * @return void
+     */
+    public function getShoppingCartAD(array $data): array
+    {
+        $result = ShoppingCart::where('shopping_id', $data['shopping_id'])
+        ->where('user_id',$data['user_id'])
+        ->orderBy('pid')
+        ->get()
+        ->toArray();
+        if (empty($result)) {
+            return Result::error("购物车id错误");
+        }else{
+            return Result::success($result);
+        }
+    }
+    /**
+     * 添加购物车中的广告位
+     * @param
+     * @return void
+     */
+    public function addShoppingCartAD(array $data): array
+    {
+        $shop = ShoppingCart::where('shopping_id', $data['shopping_id'])->where('user_id',$data['user_id'])->first();
+        if (empty($shop)) {
+            return Result::error("购物车id错误");
+        }else{
+            $ad = AdPlace::where('ad_place.id', $data['pid'])
+            ->leftJoin('website','ad_place.website_id','website.id')
+            ->select('ad_place.id as pid','website.id as website_id')
+            ->first();
+            if(empty($ad)) {
+                return Result::error("广告位id错误"); 
+            }
+            if(empty($shop['pid']) && empty($shop['website_id'])){
+                $result = ShoppingCart::where('shopping_id', $shop['shopping_id'])->where('user_id',$data['user_id'])->update(['pid' => $ad['pid'],'website_id' => $ad['website_id']]);
+            }else{
+                if($data['pid'] == $shop['pid']){
+                    return Result::error("购物车中已存在该广告位"); 
+                }
+                $shop_ad = [
+                    'pid' => $ad['pid'],
+                    'website_id' => $ad['website_id'],
+                    'shopping_id' => $shop['shopping_id'],
+                    'user_id' => $data['user_id']
+                ];
+                $result = ShoppingCart::insertGetId($shop_ad);
+            }
+        }
+        if(empty($result)){
+            return Result::error("添加失败"); 
+        }else{
+            return Result::success($result);
+        }
 
+    }
+    /**
+     * 删除购物车中的广告位
+     * @param
+     * @return void
+     */
+    public function delShoppingCartAD(array $data): array
+    {
+        $shop = ShoppingCart::where('shopping_id', $data['shopping_id'])->where('user_id',$data['user_id'])->where('pid',$data['pid'])->first();
+        if (empty($shop)) {
+            return Result::error("不存在此条记录!(参数错误)"); 
+        }else{
+            $result = ShoppingCart::where('shopping_id', $shop['shopping_id'])->where('user_id',$data['user_id'])->where('pid',$data['pid'])->delete();
+        }
+        if(empty($result)){
+            return Result::error("删除失败"); 
+        }else{
+            return Result::success($result);
+         }
+    }
 }

+ 26 - 0
app/JsonRpc/OrderServiceInterface.php

@@ -81,4 +81,30 @@ interface OrderServiceInterface
      */
     public function delOrderAD(array $data): array;
 
+
+
+     /**
+     * @param array $data
+     *  @return array
+     */
+    public function addShoppingCart(array $data): array;
+
+     /**
+     * @param array $data
+     *  @return array
+     */
+    public function getShoppingCartAD(array $data): array;
+
+     /**
+     * @param array $data
+     *  @return array
+     */
+    public function addShoppingCartAD(array $data): array;
+
+     /**
+     * @param array $data
+     *  @return array
+     */
+    public function delShoppingCartAD(array $data): array;
+
 }

+ 27 - 0
app/Model/ShoppingCart.php

@@ -0,0 +1,27 @@
+<?php
+
+declare(strict_types=1);
+
+namespace App\Model;
+
+use Hyperf\DbConnection\Model\Model;
+
+/**
+ */
+class ShoppingCart extends Model
+{
+    /**
+     * The table associated with the model.
+     */
+    protected ?string $table = 'order_shopping_cart';
+
+    /**
+     * The attributes that are mass assignable.
+     */
+    protected array $fillable = [];
+
+    /**
+     * The attributes that should be cast to native types.
+     */
+    protected array $casts = [];
+}