xieruidong 2 years ago
parent
commit
3bf65d4568

+ 6 - 4
application/admin/controller/Goods.php

@@ -192,15 +192,17 @@ class Goods extends Backend
         }else{
             $data=input('row/a');
             foreach ($data as $goods_sku_id=>$info){
-                $goodsIds=array_filter(explode(',',$info['goods_id']));
+                $skuIds=array_filter(explode(',',$info['goods_id']));
                 $sku=GoodsSku::find($goods_sku_id);
                 $arr=[];
-                foreach ($goodsIds as $goodsId){
-                    $arr[$goodsId]=[
+                foreach ($skuIds as $skuId){
+                    $bind_sku=GoodsSku::find($skuId);
+                    $arr[$skuId]=[
                         'goods_id'=>$ids,
+                        'bind_goods_id'=>$bind_sku['goods_id'],
                     ];
                 }
-                $sku->bindGoods()->sync($arr);
+                $sku->bindSku()->sync($arr);
             }
             $this->success();
         }

+ 54 - 0
application/admin/controller/GoodsSku.php

@@ -0,0 +1,54 @@
+<?php
+
+namespace app\admin\controller;
+
+use app\common\controller\Backend;
+
+/**
+ * 商品列管理
+ *
+ * @icon fa fa-circle-o
+ */
+class GoodsSku extends Backend
+{
+    protected $noNeedRight=['bindList'];
+    public function _initialize()
+    {
+        parent::_initialize(); // TODO: Change the autogenerated stub
+        $this->model=new \app\common\model\GoodsSku();
+    }
+
+    public function bind_list(){
+        $name=input('name');
+        $page=input('pageNumber')?:1;
+        $limit=input('pageSize')?:10;
+        $map=input('custom/a')?:[];
+        $value=input('searchValue');
+        if($name){
+            $map[]=[
+                ['goods.name','like',"{$name}"],
+                ['goods_sku.name','like',"{$name}"],
+                'or'
+            ];
+        }
+        if($value){
+            $map['goods_sku.id']=['in',$value];
+        }
+        $info=\app\common\model\GoodsSku::show()
+            ->join('goods','goods.id=goods_sku.goods_id')
+            ->where($map)
+            ->field([
+                'goods_sku.id','goods.name as goods_name','goods_sku.name',
+            ])
+            ->paginate($limit,false,['page'=>$page]);
+
+        foreach ($info->items() as &$sku){
+            $sku['name']=sprintf("%s-%s",$sku['goods_name'],$sku['name']);
+        }
+
+        return json([
+            'list'=>$info->items(),
+            'total'=>$info->total(),
+        ]);
+    }
+}

+ 3 - 3
application/admin/view/goods/bind_goods.html

@@ -14,13 +14,13 @@
             <input
                     id="c-name"
                     data-rule=""
-                    data-params='{"custom[id]":["neq",{$row.id}]}'
-                    data-source="goods"
+                    data-params='{"custom[goods.id]":["<>",{$row.id}]}'
+                    data-source="goods_sku/bind_list"
                     class="form-control selectpage"
                     name="row[{$a.id}][goods_id]"
                     data-multiple="true"
                     type="text"
-                    value="{:implode(',',$a->bindGoods()->column('id'))}"
+                    value="{:implode(',',$a->binds()->column('bind_goods_sku_id'))}"
             >
         </div>
     </div>

+ 4 - 0
application/api/controller/mall/GoodsCart.php

@@ -10,8 +10,12 @@ use app\common\controller\Api;
  */
 class GoodsCart extends Api
 {
+    protected $noNeedRight="*";
     /**
      * 添加到购物车
+     * @ApiMethod (POST)
+     * @ApiParams (name=sku,type=array,description=规格数组)
+     * @ApiParams (name=sku[*][sku_id],type=array,description=规格数组)
      */
     public function add(){
 

+ 12 - 0
application/common/model/GoodsSku.php

@@ -16,4 +16,16 @@ class GoodsSku Extends Model
     public function bindGoods(){
         return $this->belongsToMany(Goods::class,GoodsBind::class,'bind_goods_id','goods_sku_id');
     }
+    public function bindSku(){
+        return $this->belongsToMany(GoodsSku::class,GoodsBind::class,'bind_goods_sku_id','goods_sku_id');
+    }
+    public function binds(){
+        return $this->hasMany(GoodsBind::class);
+    }
+    public static function show(){
+        return self::where('is_del',0);
+    }
+    public function goods(){
+        return $this->belongsTo(Goods::class);
+    }
 }

+ 34 - 17
public/api.html

@@ -216,7 +216,6 @@
                                         <a href="#商城购物车" class="list-group-item" data-toggle="collapse" data-parent="#sidebar">商城购物车  <i class="fa fa-caret-down"></i></a>
                     <div class="child collapse" id="商城购物车">
                                                 <a href="#c87df26977ba0eb58acbe3af13c8939a" md5="c87df26977ba0eb58acbe3af13c8939a" data-id="16" class="list-group-item api-list">添加到购物车                            <span class="tag">
-                                                                    <span class="label label-danger pull-right">鉴</span>
                                                                     <span class="label label-success pull-right noneedlogin">登</span>
                                                             </span>
                         </a>
@@ -2576,12 +2575,6 @@
                                                 </thead>
                                                 <tbody>
                                                                                                         <tr>
-                                                        <td>id</td>
-                                                        <td>string</td>
-                                                        <td>是</td>
-                                                        <td>商品ID</td>
-                                                    </tr>
-                                                                                                        <tr>
                                                         <td>sku_id</td>
                                                         <td>string</td>
                                                         <td>是</td>
@@ -2610,10 +2603,6 @@
                                                 <div class="panel-body">
                                                     <form enctype="application/x-www-form-urlencoded" role="form" action="/api/mall.goods/bind_goods" method="get" name="form15" id="form15">
                                                                                                                 <div class="form-group">
-                                                            <label class="control-label" for="id">id</label>
-                                                            <input type="string" class="form-control input-sm" id="id" required placeholder="商品ID" name="id">
-                                                        </div>
-                                                                                                                <div class="form-group">
                                                             <label class="control-label" for="sku_id">sku_id</label>
                                                             <input type="string" class="form-control input-sm" id="sku_id" required placeholder="商品规格ID" name="sku_id">
                                                         </div>
@@ -2662,7 +2651,7 @@
                                 <div class="panel panel-default">
                     <div class="panel-heading" id="heading-16">
                         <h4 class="panel-title">
-                            <span class="label label-success">GET</span>
+                            <span class="label label-primary">POST</span>
                             <a data-toggle="collapse" data-parent="#accordion16" href="#collapseOne16"> 添加到购物车 <span class="text-muted">/api/mall.goods_cart/add</span></a>
                         </h4>
                     </div>
@@ -2693,7 +2682,7 @@
                                                 </tr>
                                                 <tr>
                                                     <td>鉴权</td>
-                                                    <td></td>
+                                                    <td></td>
                                                 </tr>
                                                 </tbody>
                                             </table>
@@ -2708,7 +2697,30 @@
                                     <div class="panel panel-default">
                                         <div class="panel-heading"><strong>参数</strong></div>
                                         <div class="panel-body">
-                                                                                        无
+                                                                                        <table class="table table-hover">
+                                                <thead>
+                                                    <tr>
+                                                        <th>名称</th>
+                                                        <th>类型</th>
+                                                        <th>必选</th>
+                                                        <th>描述</th>
+                                                    </tr>
+                                                </thead>
+                                                <tbody>
+                                                                                                        <tr>
+                                                        <td>sku</td>
+                                                        <td>array</td>
+                                                        <td>是</td>
+                                                        <td>规格数组</td>
+                                                    </tr>
+                                                                                                        <tr>
+                                                        <td>sku[*][sku_id]</td>
+                                                        <td>array</td>
+                                                        <td>是</td>
+                                                        <td>规格数组</td>
+                                                    </tr>
+                                                                                                    </tbody>
+                                            </table>
                                                                                     </div>
                                     </div>
                                     <div class="panel panel-default">
@@ -2728,9 +2740,14 @@
                                                 </div>
                                                 </div>
                                                 <div class="panel-body">
-                                                    <form enctype="application/x-www-form-urlencoded" role="form" action="/api/mall.goods_cart/add" method="get" name="form16" id="form16">
+                                                    <form enctype="application/x-www-form-urlencoded" role="form" action="/api/mall.goods_cart/add" method="POST" name="form16" id="form16">
                                                                                                                 <div class="form-group">
-                                                            无
+                                                            <label class="control-label" for="sku">sku</label>
+                                                            <input type="array" class="form-control input-sm" id="sku" required placeholder="规格数组" name="sku">
+                                                        </div>
+                                                                                                                <div class="form-group">
+                                                            <label class="control-label" for="sku[*][sku_id]">sku[*][sku_id]</label>
+                                                            <input type="array" class="form-control input-sm" id="sku[*][sku_id]" required placeholder="规格数组" name="sku[*][sku_id]">
                                                         </div>
                                                                                                                 <div class="form-group form-group-submit">
                                                             <button type="submit" class="btn btn-success send" rel="16">提交</button>
@@ -7479,7 +7496,7 @@
 
                 </div>
                 <div class="col-md-6" align="right">
-                    Generated on 2022-09-20 14:53:22 <a href="./" target="_blank">后台管理</a>
+                    Generated on 2022-09-20 15:51:23 <a href="./" target="_blank">后台管理</a>
                 </div>
             </div>