Browse Source

'农场商品管理'

gorden 1 year ago
parent
commit
1a3a33350e

+ 87 - 0
app/admin/controller/life/FarmGoodsController.php

@@ -0,0 +1,87 @@
+<?php
+
+namespace app\admin\controller\life;
+
+use app\controller\Curd;
+use app\model\FarmGoods;
+use app\admin\validate\life\FarmGoodsValidate;
+use support\Request;
+use support\Response;
+
+class FarmGoodsController extends Curd
+{
+    public function __construct()
+    {
+        $this->model = new FarmGoods();
+        $this->validate = true;
+        $this->validateClass = new FarmGoodsValidate();
+    }
+
+    /**
+     * @Desc 列表
+     * @Author Gorden
+     * @Date 2024/2/28 10:21
+     *
+     * @param Request $request
+     * @return Response
+     * @throws \support\exception\BusinessException
+     */
+    public function select(Request $request): Response
+    {
+        [$where, $format, $limit, $field, $order] = $this->selectInput($request);
+        $where['goods_is_del'] = 0;
+        $query = $this->doSelect($where, $field, $order);
+        return $this->doFormat($query, $format, $limit);
+    }
+
+    /**
+     * @Desc 删除
+     * @Author Gorden
+     * @Date 2024/2/28 10:21
+     *
+     * @param Request $request
+     * @return Response
+     * @throws \support\exception\BusinessException
+     */
+    public function delete(Request $request): Response
+    {
+        $ids = $this->deleteInput($request);
+        $this->doSoftDelete($ids, ['goods_is_del' => 1]);
+
+        return json_success('success');
+    }
+
+    /**
+     * @Desc 修改商品状态
+     * @Author Gorden
+     * @Date 2024/2/28 10:35
+     *
+     * @param Request $request
+     * @return Response
+     */
+    public function updateStatus(Request $request)
+    {
+        return $this->updateField($request->post('goods_id'), 'goods_status', $request->post('goods_status'));
+    }
+
+    /**
+     * @Desc 执行插入数据
+     * @Author Gorden
+     * @Date 2024/2/28 10:10
+     *
+     * @param array $data
+     * @return mixed|null
+     */
+    protected function doInsert(array $data)
+    {
+        $primary_key = $this->model->getKeyName();
+        $model_class = get_class($this->model);
+        $model = new $model_class;
+        $data['goods_content'] = htmlspecialchars($data['goods_content']);
+        foreach ($data as $key => $val) {
+            $model->{$key} = $val;
+        }
+        $model->save();
+        return $primary_key ? $model->$primary_key : null;
+    }
+}

+ 35 - 0
app/admin/validate/life/FarmGoodsValidate.php

@@ -0,0 +1,35 @@
+<?php
+
+namespace app\admin\validate\life;
+
+use think\Validate;
+
+class FarmGoodsValidate extends Validate
+{
+    protected $rule = [
+        'goods_id' => 'require|integer',
+        'goods_name' => 'require|chsDash',
+        'goods_img' => 'require|regex:/^[0-9a-zA-Z\.\/]+$/',
+        'food_slide' => 'regex:/^[0-9a-zA-Z\.\/\,]+$/',
+        'goods_category_id' => 'require|integer',
+        'goods_shop_id' => 'require|integer',
+        'goods_is_new' => 'integer',
+        'goods_price' => 'require|float',
+        'goods_sell_num' => 'require|integer',
+        'goods_postage_id' => 'require|integer',
+        'goods_status' => 'integer',
+        'goods_weight' => 'float',
+        'goods_storage' => 'chsDash',
+        'goods_packaging' => 'chsDash',
+        'goods_varieties' => 'chsDash',
+        'goods_attr' => 'chsDash',
+        'goods_sort' => 'require|integer'
+    ];
+
+    protected $message = [];
+
+    protected $scene = [
+        'add' => ['goods_name', 'goods_img', 'food_slide', 'goods_category_id', 'goods_shop_id', 'goods_is_new', 'goods_price', 'goods_sell_num', 'goods_postage_id', 'goods_status', 'goods_weight', 'goods_storage', 'goods_packaging', 'goods_varieties', 'goods_attr', 'goods_sort'],
+        'update' => ['goods_id', 'goods_name', 'goods_img', 'food_slide', 'goods_category_id', 'goods_shop_id', 'goods_is_new', 'goods_price', 'goods_sell_num', 'goods_postage_id', 'goods_status', 'goods_weight', 'goods_storage', 'goods_packaging', 'goods_varieties', 'goods_attr', 'goods_sort'],
+    ];
+}

+ 24 - 2
app/controller/Curd.php

@@ -114,7 +114,7 @@ class Curd
     public function softDelete(Request $request): Response
     public function softDelete(Request $request): Response
     {
     {
         $ids = $this->deleteInput($request);
         $ids = $this->deleteInput($request);
-        $this->doSoftDelete($ids,['is_del'=>1]);
+        $this->doSoftDelete($ids, ['is_del' => 1]);
 
 
         return json_success('success');
         return json_success('success');
     }
     }
@@ -318,6 +318,28 @@ class Curd
         return [$id, $data];
         return [$id, $data];
     }
     }
 
 
+    /**
+     * @Desc 更新单个字段
+     * @Author Gorden
+     * @Date 2024/2/28 10:31
+     *
+     * @param $primaryValue
+     * @param $field
+     * @param $value
+     * @return Response
+     */
+    protected function updateField($primaryValue, $field, $value)
+    {
+        try {
+            $primaryKey = $this->model->getKeyName();
+            $this->model->where($primaryKey, $primaryValue)->update([$field => $value]);
+        } catch (\Exception $e) {
+            return json_fail($e->getMessage());
+        }
+
+        return json_success('success');
+    }
+
     /**
     /**
      * 执行更新
      * 执行更新
      * @param $id
      * @param $id
@@ -346,7 +368,7 @@ class Curd
         if (!$allow_column) {
         if (!$allow_column) {
             throw new BusinessException('表不存在', 2);
             throw new BusinessException('表不存在', 2);
         }
         }
-        $columns = array_column($allow_column, 'Type', 'FieldController');
+        $columns = array_column($allow_column, 'Type', 'Field');
         foreach ($data as $col => $item) {
         foreach ($data as $col => $item) {
             if (!isset($columns[$col])) {
             if (!isset($columns[$col])) {
                 unset($data[$col]);
                 unset($data[$col]);

+ 18 - 0
app/model/FarmGoods.php

@@ -0,0 +1,18 @@
+<?php
+
+namespace app\model;
+
+use support\Model;
+
+class FarmGoods extends Model
+{
+    protected $table = 'farm_goods';
+
+    protected $primaryKey = 'goods_id';
+
+    protected $dateFormat = 'U';
+
+    public const CREATED_AT = 'goods_addTime';
+
+    public const UPDATED_AT = 'goods_updateTime';
+}

+ 10 - 0
route/api.php

@@ -155,5 +155,15 @@ Route::group('/admin', function () {
         })->middleware([
         })->middleware([
             \app\middleware\AdminAuthCheck::class
             \app\middleware\AdminAuthCheck::class
         ]);
         ]);
+        /* 农户商品管理 */
+        Route::group('/farmGoods', function () {
+            Route::get('/list', [\app\admin\controller\life\FarmGoodsController::class, 'select']);
+            Route::post('/add', [\app\admin\controller\life\FarmGoodsController::class, 'insert']);
+            Route::post('/update', [\app\admin\controller\life\FarmGoodsController::class, 'update']);
+            Route::post('/updateStatus', [\app\admin\controller\life\FarmGoodsController::class, 'updateStatus']);
+            Route::delete('/delete', [\app\admin\controller\life\FarmGoodsController::class, 'delete']);
+        })->middleware([
+            \app\middleware\AdminAuthCheck::class
+        ]);
     });
     });
 });
 });