Browse Source

完善功能

gorden 9 months ago
parent
commit
de2cce8a56

+ 23 - 0
app/admin/controller/goods/RechargeGoodsController.php

@@ -3,7 +3,9 @@
 namespace app\admin\controller\goods;
 
 use app\admin\service\goods\GoodsService;
+use app\admin\validate\goods\GoodsValidate;
 use support\Request;
+use support\Response;
 
 class RechargeGoodsController
 {
@@ -11,4 +13,25 @@ class RechargeGoodsController
     {
         return GoodsService::select($request, 'RECHARGE');
     }
+
+    public function insert(Request $request): Response
+    {
+        $params = $request->post();
+        $validate = new GoodsValidate();
+        if (!$validate->scene('add')->check($params)) {
+            return json_fail($validate->getError());
+        }
+
+        return GoodsService::insertRecharge($params);
+    }
+
+    public function update(Request $request): Response
+    {
+        $validate = new GoodsValidate();
+        if (!$validate->scene('update')->check($request->post())) {
+            return json_fail($validate->getError());
+        }
+
+        return GoodsService::updateRecharge($request->post());
+    }
 }

+ 82 - 2
app/admin/service/goods/GoodsService.php

@@ -116,7 +116,7 @@ class GoodsService
             'supplier' => function ($query) {
                 $query->select('supplier_id', 'supplier_name');
             }
-        ])->select('goods_id', 'join_goods_category_id', 'join_goods_supplier_id', 'goods_status', 'goods_sales_price', 'goods_category', 'goods_name', 'goods_title', 'goods_cover', 'goods_sort', 'goods_addtimes')
+        ])->select('goods_id', 'join_goods_category_id', 'join_goods_supplier_id', 'goods_status', 'goods_sales_price', 'goods_category', 'goods_name', 'goods_title', 'goods_cover', 'goods_sort', 'goods_attribute_json', 'goods_addtimes')
             ->when($goodsName != '', function ($query) use ($goodsName) {
                 $query->where(function ($q) use ($goodsName) {
                     $q->where('goods_name', 'like', '%' . $goodsName . '%')
@@ -162,6 +162,9 @@ class GoodsService
             if (isset($row['running'])) {
                 $row['running']['goods_running_storage'] = intval($row['running']['goods_running_storage']);
             }
+            if (!empty($row['goods_attribute_json'])) {
+                $row['goods_attribute_json'] = json_decode($row['goods_attribute_json']);
+            }
         }
 
         return json_success('', compact('rows', 'page', 'pageSize', 'total'));
@@ -234,7 +237,7 @@ class GoodsService
             }
             $categoryIds = SysCategory::where('category_super_path', 'like', '%' . $category->category_super_path)->pluck('category_id');
             $categoryIds = $categoryIds ? $categoryIds->toArray() : [];
-            $categoryIds = array_merge($categoryIds,[$categorySuperId]);
+            $categoryIds = array_merge($categoryIds, [$categorySuperId]);
         } elseif (!is_array($categoryIds)) {
             $categoryIds = [$categoryIds];
         }
@@ -742,6 +745,83 @@ class GoodsService
         return json_success('success');
     }
 
+    public static function insertRecharge($params)
+    {
+        try {
+            Db::beginTransaction();
+            $goods = new Goods();
+            $goods->goods_id = "GD" . date('YmdHis') . random_string(6, 'up');
+            $goods->join_goods_category_id = 59;
+            $goods->goods_classify = 'RECHARGE';
+            $goods->goods_status = $params['goods_status'];
+            $goods->goods_sort = $params['goods_sort'];
+            $goods->goods_category = $params['goods_category'];
+            $goods->goods_name = $params['goods_name'];
+            $goods->goods_market_price = $params['goods_sales_price'];
+            $goods->goods_sales_price = $params['goods_sales_price'];
+            $goods->goods_sku_json = json_encode(['规格' => [$params['goods_sales_price'] . '元']]);
+            $goods->goods_attribute_json = json_encode(['added' => ['nbr' => $params['goods_rate'] / 100, 'mode' => 'rate'], 'min-count' => 1]);
+            $goods->goods_cover = '/images/app/common/null-service.png';
+            $goods->goods_process_json = json_encode(['mode' => 'do_shopping']);
+            $goods->goods_addtimes = time();
+            $goods->save();
+
+            $sku = new GoodsSku();
+            $sku->join_sku_goods_id = $goods->goods_id;
+            $sku->goods_sku_status = $params['goods_status'];
+            $sku->goods_sku_specs_json = json_encode(['规格' => $params['goods_sales_price'] . '元']);
+            $sku->goods_sku_market_price = $params['goods_sales_price'];
+            $sku->goods_sku_sales_price = $params['goods_sales_price'];
+            $sku->goods_sku_storage_json = json_encode(['storage' => 9999]);
+            $sku->save();
+
+            Db::commit();
+
+            return json_success('success');
+        } catch (\Exception $e) {
+
+            Db::rollBack();
+
+            return json_fail('添加充值产品失败');
+        }
+    }
+
+    public static function updateRecharge($params)
+    {
+        try {
+            Db::beginTransaction();
+            $goods = Goods::where('goods_id', $params['goods_id'])->first();
+            if (!$goods) {
+                return json_fail("数据异常");
+            }
+            $goods->goods_market_price = $params['goods_sales_price'];
+            $goods->goods_sales_price = $params['goods_sales_price'];
+            $goods->goods_status = $params['goods_status'];
+            $goods->goods_sku_json = json_encode(['规格' => [$params['goods_sales_price'] . '元']]);
+            $goods->goods_sort = $params['goods_sort'];
+            if (!empty($goods->goods_attribute_json)) {
+                $attributeJson = json_decode($goods->goods_attribute_json, true);
+                $attributeJson['added']['nbr'] = $params['goods_rate'] / 100;
+                $goods->goods_attribute_json = json_encode($attributeJson);
+            }
+            $goods->save();
+            $sku = GoodsSku::where('join_sku_goods_id',$params['goods_id'])->first();
+            $sku->goods_sku_status = $params['goods_status'];
+            $sku->goods_sku_specs_json = json_encode(['规格' => $params['goods_sales_price'] . '元']);
+            $sku->goods_sku_market_price = $params['goods_sales_price'];
+            $sku->goods_sku_sales_price = $params['goods_sales_price'];
+            $sku->save();
+
+            Db::commit();
+
+            return json_success("success");
+        } catch (\Exception $e) {
+            Db::rollBack();
+            dump($e->getMessage());
+            return json_fail('编辑充值产品失败');
+        }
+    }
+
     public static function insertPackage($params): Response
     {
         Db::beginTransaction();

+ 1 - 1
app/admin/validate/goods/GoodsValidate.php

@@ -18,7 +18,7 @@ class GoodsValidate extends Validate
         'goods_market_price|市场价' => 'float',
         'goods_sales_price|销售价' => 'float',
 //        'goods_sku_json' => 'isJson',
-        'goods_attribute_json|属性' => 'isJson',
+//        'goods_attribute_json|属性' => 'isJson',
         'goods_service_json|服务' => 'isJson',
         'goods_title|标题' => 'max:128',
         'goods_cover|封面' => 'url',

+ 2 - 0
route/admin.php

@@ -44,6 +44,8 @@ Route::group('/admin', function () {
         ]);
         Route::group('/recharge', function () {
             Route::get('/list', [\app\admin\controller\goods\RechargeGoodsController::class, 'select']);
+            Route::post('/add', [\app\admin\controller\goods\RechargeGoodsController::class, 'insert']);
+            Route::post('/update', [\app\admin\controller\goods\RechargeGoodsController::class, 'update']);
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);