gorden 9 місяців тому
батько
коміт
c405d73967

+ 15 - 5
app/admin/controller/coupon/CouponController.php

@@ -39,6 +39,16 @@ class CouponController extends Curd
         return $this->doFormat($query, $format, $limit);
     }
 
+    public function selectList()
+    {
+        $coupons = Coupon::where('coupon_status','ACTIVED')
+            ->select('coupon_id','coupon_name')
+            ->get()
+            ->toArray();
+
+        return json_success('',$coupons);
+    }
+
 //    public function afterQuery($items)
 //    {
 //        foreach ($items as &$item) {
@@ -52,9 +62,9 @@ class CouponController extends Curd
     protected function insertInput(Request $request): array
     {
         $data = $this->inputFilter($request->post());
-        $data['coupon_id'] = "CO".str_pad(SysSerial::getSerial(), 16, '0') . random_string(8,'up');
-        $data['coupon_begindate'] = date("Y-m-d H:i:s",strtotime($data['coupon_begindate']));
-        $data['coupon_enddate'] = date("Y-m-d H:i:s",strtotime($data['coupon_enddate']));
+        $data['coupon_id'] = "CO" . str_pad(SysSerial::getSerial(), 16, '0') . random_string(8, 'up');
+        $data['coupon_begindate'] = date("Y-m-d H:i:s", strtotime($data['coupon_begindate']));
+        $data['coupon_enddate'] = date("Y-m-d H:i:s", strtotime($data['coupon_enddate']));
 
         return $data;
     }
@@ -64,8 +74,8 @@ class CouponController extends Curd
         $primary_key = $this->model->getKeyName();
         $id = $request->post($primary_key);
         $data = $this->inputFilter($request->post());
-        $data['coupon_begindate'] = date("Y-m-d H:i:s",strtotime($data['coupon_begindate']));
-        $data['coupon_enddate'] = date("Y-m-d H:i:s",strtotime($data['coupon_enddate']));
+        $data['coupon_begindate'] = date("Y-m-d H:i:s", strtotime($data['coupon_begindate']));
+        $data['coupon_enddate'] = date("Y-m-d H:i:s", strtotime($data['coupon_enddate']));
         $model = $this->model->find($id);
         if (!$model) {
             throw new BusinessException('记录不存在', 2);

+ 22 - 0
app/admin/controller/member/RuleAddedComponentController.php

@@ -31,6 +31,28 @@ class RuleAddedComponentController extends Curd
         return $this->doFormat($query, $format, $limit);
     }
 
+    protected function afterQuery($items)
+    {
+        foreach ($items as &$item) {
+            $goodsIds = [];
+            if (!empty($item->rule_added_component_goods_json)) {
+                $goodsJson = json_decode($item->rule_added_component_goods_json, true);
+                foreach ($goodsJson as $item2) {
+                    if (isset($item2['goods_id'])) {
+                        $goodsIds[] = $item2['goods_id'];
+                    }elseif (isset($item2['coupon_id'])){
+                        $goodsIds[] = $item2['coupon_id'];
+                    }
+                }
+                $item->rule_added_component_goods_json = $goodsJson;
+            }
+
+            $item->goodsIds = $goodsIds;
+        }
+
+        return $items;
+    }
+
 
 //    protected function updateInput(Request $request): array
 //    {

+ 36 - 5
app/admin/controller/member/RuleAddedController.php

@@ -6,6 +6,7 @@ use app\admin\validate\member\RuleAddedValidate;
 use app\admin\validate\member\RulePricingValidate;
 use app\controller\Curd;
 use app\model\RuleAdded;
+use app\model\RuleAddedComponent;
 use app\model\RulePricing;
 use app\model\SysSerial;
 use support\exception\BusinessException;
@@ -40,6 +41,36 @@ class RuleAddedController extends Curd
         return json_success('', $data);
     }
 
+    public function info(Request $request): Response
+    {
+        $id = $request->get('rule_added_id');
+        $added = RuleAdded::find($id);
+        if (!$added) {
+            return json_fail('数据不存在');
+        }
+
+        $components = RuleAddedComponent::with(['goods', 'sku'])
+            ->where('join_component_rule_added_id', $id)
+            ->get()
+            ->toArray();
+
+        foreach ($components as &$component) {
+            if (!empty($component['sku']) && !empty($component['sku']['goods_sku_specs_json'])) {
+                $specsJson = json_decode($component['sku']['goods_sku_specs_json'], true);
+                $skuTitle = '';
+                foreach ($specsJson as $item) {
+                    if (is_array($item)) {
+                        $item = implode(',', $item);
+                    }
+                    $skuTitle .= $item . '-';
+                }
+                $skuTitle = rtrim($skuTitle, '-');
+                $component['sku']['goods_sku_title'] = $skuTitle;
+            }
+        }
+        return json_success('', $components);
+    }
+
     protected function insertInput(Request $request): array
     {
         $data = $this->inputFilter($request->post());
@@ -53,11 +84,11 @@ class RuleAddedController extends Curd
         $primary_key = $this->model->getKeyName();
         $id = $request->post($primary_key);
         $data = $this->inputFilter($request->post());
-        if (!empty($data['rule_pricing_goods_json'])) {
-            $data['rule_pricing_goods_json'] = json_encode(explode(',', $data['rule_pricing_goods_json']));
-        } else {
-            $data['rule_pricing_goods_json'] = '[]';
-        }
+//        if (!empty($data['rule_pricing_goods_json'])) {
+//            $data['rule_pricing_goods_json'] = json_encode(explode(',', $data['rule_pricing_goods_json']));
+//        } else {
+//            $data['rule_pricing_goods_json'] = '[]';
+//        }
         $model = $this->model->find($id);
         if (!$model) {
             throw new BusinessException('记录不存在', 2);

+ 5 - 10
app/admin/controller/member/RulePricingController.php

@@ -54,11 +54,11 @@ class RulePricingController extends Curd
     {
         $data = $this->inputFilter($request->post());
         $data['rule_pricing_id'] = "RP" . str_pad(SysSerial::getSerial(), 16, '0', STR_PAD_LEFT) . random_string(6, 'up');
-        if (!empty($data['rule_pricing_goods_json'])) {
-            $data['rule_pricing_goods_json'] = json_encode(explode(',', $data['rule_pricing_goods_json']));
-        } else {
-            $data['rule_pricing_goods_json'] = '[]';
-        }
+//        if (!empty($data['rule_pricing_goods_json'])) {
+//            $data['rule_pricing_goods_json'] = json_encode(explode(',', $data['rule_pricing_goods_json']));
+//        } else {
+//            $data['rule_pricing_goods_json'] = '[]';
+//        }
         return $data;
     }
 
@@ -67,11 +67,6 @@ class RulePricingController extends Curd
         $primary_key = $this->model->getKeyName();
         $id = $request->post($primary_key);
         $data = $this->inputFilter($request->post());
-        if (!empty($data['rule_pricing_goods_json'])) {
-            $data['rule_pricing_goods_json'] = json_encode(explode(',', $data['rule_pricing_goods_json']));
-        } else {
-            $data['rule_pricing_goods_json'] = '[]';
-        }
         $model = $this->model->find($id);
         if (!$model) {
             throw new BusinessException('记录不存在', 2);

+ 38 - 0
app/admin/service/goods/GoodsService.php

@@ -32,7 +32,45 @@ class GoodsService
 
     public static function selectAllByCategoryForRuleAddComponent($category = "GOODS")
     {
+        $categoryIds = [];
+        if ($category == 'GOODS') {
+            $categoryIds = [6, 7, 8, 10, 11, 12];
+        } elseif ($category == 'SERVICE') {
+            $categoryIds = [33, 34, 35, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 36, 37, 38, 39, 40, 41];
+        }
+
+        $goods = Goods::with('sku')
+//            ->where('goods_classify', $category)
+            ->when(!empty($categoryIds), function ($query) use ($categoryIds) {
+                $query->whereIn('join_goods_category_id',$categoryIds);
+            })->select('goods_id', 'goods_name', 'join_goods_category_id')
+            ->get()
+            ->toArray();
+
+        foreach ($goods as &$good) {
+            if (!empty($good['sku'])) {
+                foreach ($good['sku'] as $key => $sku) {
+                    if (!empty($sku['goods_sku_specs_json'])) {
+                        $specsJson = json_decode($sku['goods_sku_specs_json'], true);
+                        $skuTitle = '';
+                        foreach ($specsJson as $item) {
+                            if (is_array($item)) {
+                                $item = implode(',', $item);
+                            }
+                            $skuTitle .= $item . '-';
+                        }
+                        $good['sku'][$key]['goods_sku_id'] = strval($good['sku'][$key]['goods_sku_id']);
+                        $good['sku'][$key]['goods_sku_title'] = rtrim($skuTitle, '-');
+                    }
+                    unset($good['sku'][$key]['goods_sku_specs_json'], $good['sku'][$key]['join_sku_goods_id']);
+                }
+            } else {
+                $good['sku'] = [];
+            }
 
+        }
+
+        return json_success('', $goods);
     }
 
     public static function select(Request $request, $classify = "GOODS")

+ 12 - 0
app/model/RuleAddedComponent.php

@@ -21,4 +21,16 @@ class RuleAddedComponent extends Model
     {
         return $date->format('Y-m-d H:i:s');
     }
+
+    public function goods()
+    {
+        return $this->hasOne(Goods::class, 'goods_id', 'rule_added_component_goods_id')
+            ->select('goods_id', 'goods_name');
+    }
+
+    public function sku()
+    {
+        return $this->hasOne(GoodsSku::class, 'goods_sku_id', 'rule_added_component_goods_sku_id')
+            ->select('goods_sku_id', 'goods_sku_specs_json');
+    }
 }

+ 2 - 0
route/admin.php

@@ -33,6 +33,7 @@ Route::group('/admin', function () {
         /* 实物商品管理 */
         Route::group('/entity', function () {
             Route::get('/selectAll', [\app\admin\controller\goods\EntityGoodsController::class, 'selectAll']);
+            Route::get('/selectAllByCategoryForRuleAddComponent', [\app\admin\controller\goods\EntityGoodsController::class, 'selectAllByCategoryForRuleAddComponent']);
             Route::get('/list', [\app\admin\controller\goods\EntityGoodsController::class, 'select']);
             Route::get('/info', [\app\admin\controller\goods\EntityGoodsController::class, 'info']);
             Route::post('/add', [\app\admin\controller\goods\EntityGoodsController::class, 'insert']);
@@ -704,6 +705,7 @@ Route::group('/admin', function () {
     Route::group('/coupon', function () {
         Route::group('', function () {
             Route::get('/list', [\app\admin\controller\coupon\CouponController::class, 'select']);
+            Route::get('/selectList', [\app\admin\controller\coupon\CouponController::class, 'selectList']);
             Route::post('/add', [\app\admin\controller\coupon\CouponController::class, 'insert']);
             Route::post('/update', [\app\admin\controller\coupon\CouponController::class, 'update']);
             Route::delete('/delete', [\app\admin\controller\coupon\CouponController::class, 'delete']);