Эх сурвалжийг харах

营业场所管理(部门表)

gorden 1 жил өмнө
parent
commit
168d59ba71

+ 106 - 0
app/admin/controller/marketing/DeptPremisesController.php

@@ -0,0 +1,106 @@
+<?php
+
+namespace app\admin\controller\marketing;
+
+use app\admin\service\sys_manage\DeptService;
+use app\admin\validate\sys_manage\DeptValidate;
+use app\controller\Curd;
+use app\model\SysDept;
+use support\Db;
+use support\exception\BusinessException;
+use support\Request;
+use support\Response;
+
+class DeptPremisesController extends Curd
+{
+    public function __construct()
+    {
+        $this->model = new SysDept();
+        $this->validate = true;
+        $this->validateClass = new DeptValidate();
+    }
+
+    /**
+     * @Desc 营业场所列表
+     * @Author Gorden
+     * @Date 2024/3/7 13:17
+     *
+     * @param Request $request
+     * @return Response
+     * @throws BusinessException
+     */
+    public function select(Request $request): Response
+    {
+        [$where, $format, $limit, $field, $order] = $this->selectInput($request);
+        $order = $request->get('order', 'desc');
+        $field = $request->get('field','dept_addtimes');
+        $where['dept_super_id'] = 0;
+        $where['dept_category'] = '营业场所';
+        $query = $this->doSelect($where, $field, $order);
+        return $this->doFormat($query, $format, $limit);
+    }
+
+    /**
+     * @Desc 添加营业场所
+     * @Author Gorden
+     * @Date 2024/3/7 11:48
+     *
+     * @param Request $request
+     * @return Response
+     */
+    public function insert(Request $request): Response
+    {
+        if ($this->validate && !$this->validateClass->scene('add_premises')->check($request->post())) {
+            return json_fail($this->validateClass->getError());
+        }
+
+        Db::beginTransaction();
+        try {
+            $data = $this->insertInput($request);
+            $data['dept_super_id'] = 0;
+            $deptId = $this->doInsert($data);
+            if (!$deptId) {
+                throw new BusinessException('创建营业场所失败');
+            }
+            // 更新部门path
+            $path = '/0/' . $deptId . '/';
+            if (!SysDept::where('dept_id', $deptId)->update(['dept_super_path' => $path])) {
+                throw new BusinessException('创建营业场所失败');
+            }
+            Db::commit();
+        } catch (BusinessException $customException) {
+            Db::rollBack();
+            return json_fail($customException->getMessage());
+        } catch (\Exception $exception) {
+            Db::rollBack();
+            return json_fail('创建营业场所失败');
+        }
+        return json_success('success');
+    }
+
+    /**
+     * @Desc 更新
+     * @Author Gorden
+     * @Date 2024/3/7 13:14
+     *
+     * @param Request $request
+     * @return Response
+     */
+    public function update(Request $request): Response
+    {
+        if ($this->validate && !$this->validateClass->scene('update_premises')->check($request->post())) {
+            return json_fail($this->validateClass->getError());
+        }
+
+        try {
+            [$id, $data] = $this->updateInput($request);
+            $this->doUpdate($id, $data);
+        } catch (BusinessException $customException) {
+            return json_fail($customException->getMessage());
+        } catch (\Exception $e) {
+            return json_fail('数据更新失败');
+        }
+
+        return json_success('success');
+    }
+}

+ 14 - 12
app/admin/validate/sys_manage/DeptValidate.php

@@ -7,17 +7,17 @@ use think\Validate;
 class DeptValidate extends Validate
 {
     protected $rule = [
-        'dept_id'           => 'require|integer',
-        'dept_super_id'     => 'require|integer',
-        'dept_status'       => 'require|in:ACTIVED,DISABLED',
-        'dept_category'     => 'require|in:职能部门,财务部门,仓库货仓,外延部门,营业场所,其他',
-        'dept_code'         => 'require|alphaDash',
-        'dept_city'         => 'require|chsDash',
-        'dept_name'         => 'require|chsDash',
-        'dept_telephone'    => 'mobile',
-        'dept_position'     => 'regex:/^[0-9\.]+$/',
-        'dept_address'      => 'chsDash',
-        'dept_remark'       => 'chsDash'
+        'dept_id' => 'require|integer',
+        'dept_super_id' => 'require|integer',
+        'dept_status' => 'require|in:ACTIVED,DISABLED',
+        'dept_category' => 'require|in:职能部门,财务部门,仓库货仓,外延部门,营业场所,其他',
+        'dept_code' => 'require|alphaDash',
+        'dept_city' => 'require|chsDash',
+        'dept_name' => 'require|chsDash',
+        'dept_telephone' => 'mobile',
+        'dept_position' => 'regex:/^[0-9\.]+$/',
+        'dept_address' => 'chsDash',
+        'dept_remark' => 'chsDash'
     ];
 
     protected $message = [];
@@ -25,6 +25,8 @@ class DeptValidate extends Validate
     protected $scene = [
         'add' => ['dept_super_id', 'dept_status', 'dept_category', 'dept_code', 'dept_city', 'dept_name', 'dept_telephone', 'dept_position', 'dept_address', 'dept_remark'],
         'update' => ['dept_super_id', 'dept_status', 'dept_category', 'dept_code', 'dept_city', 'dept_name', 'dept_telephone', 'dept_position', 'dept_address', 'dept_remark'],
-        'update_status' => ['dept_status']
+        'update_status' => ['dept_status'],
+        'add_premises' => ['dept_status', 'dept_category', 'dept_code', 'dept_city', 'dept_name', 'dept_telephone', 'dept_position', 'dept_address', 'dept_remark'],
+        'update_premises' => ['dept_id', 'dept_status', 'dept_category', 'dept_code', 'dept_city', 'dept_name', 'dept_telephone', 'dept_position', 'dept_address', 'dept_remark']
     ];
 }

+ 0 - 1
app/controller/Curd.php

@@ -97,7 +97,6 @@ class Curd
         } catch (BusinessException $customException) {
             return json_fail($customException->getMessage());
         } catch (\Exception $e) {
-            dd($e->getMessage());
             return json_fail('数据更新失败');
         }
 

+ 5 - 1
app/model/SysDept.php

@@ -11,5 +11,9 @@ class SysDept extends Model
 
     protected $primaryKey = 'dept_id';
 
-    public const UPDATED_AT = null;
+    protected $dateFormat = 'U';
+
+    const CREATED_AT = 'dept_addtimes';
+
+    const UPDATED_AT = null;
 }

+ 11 - 1
route/admin.php

@@ -39,6 +39,7 @@ Route::group('/admin', function () {
             Route::get('/list', [\app\admin\controller\sys_manage\DeptController::class, 'deptList']);
             Route::get('/info/{id:\d+}', [\app\admin\controller\sys_manage\DeptController::class, 'deptInfo']);
             Route::post('/add', [\app\admin\controller\sys_manage\DeptController::class, 'addDept']);
+            Route::post('/addPremises', [\app\admin\controller\sys_manage\DeptController::class, 'addPremises']);
             Route::post('/update/{id:\d+}', [\app\admin\controller\sys_manage\DeptController::class, 'updateDept']);
             Route::post('/updateStatus/{id:\d+}', [\app\admin\controller\sys_manage\DeptController::class, 'updateStatus']);
             Route::delete('/delete/{id:\d+}', [\app\admin\controller\sys_manage\DeptController::class, 'delDept']);
@@ -327,7 +328,7 @@ Route::group('/admin', function () {
     });
     /* 营销管理 */
     Route::group('/marketing', function () {
-        /* 家庭管理 */
+        /* 营业场所管理 */
         Route::group('/premises', function () {
             Route::get('/list', [\app\admin\controller\marketing\PremisesController::class, 'select']);
             Route::post('/add', [\app\admin\controller\marketing\PremisesController::class, 'insert']);
@@ -336,5 +337,14 @@ Route::group('/admin', function () {
         })->middleware([
             \app\middleware\AdminAuthCheck::class
         ]);
+        /* 营业场所管理(部门表) */
+        Route::group('/deptPremises', function () {
+            Route::get('/list', [\app\admin\controller\marketing\DeptPremisesController::class, 'select']);
+            Route::post('/add', [\app\admin\controller\marketing\DeptPremisesController::class, 'insert']);
+            Route::post('/update', [\app\admin\controller\marketing\DeptPremisesController::class, 'update']);
+            Route::delete('/delete', [\app\admin\controller\marketing\DeptPremisesController::class, 'delete']);
+        })->middleware([
+            \app\middleware\AdminAuthCheck::class
+        ]);
     });
 });