Przeglądaj źródła

接口对接调整

gorden 11 miesięcy temu
rodzic
commit
f3ea23e402

+ 120 - 0
app/admin/controller/life/CollegeCoursesController.php

@@ -10,6 +10,12 @@ use support\Response;
 
 class CollegeCoursesController extends Curd
 {
+
+    const COURSES_TYPE = [
+        1 => '线上课程',
+        2 => '线下课程'
+    ];
+
     public function __construct()
     {
         $this->model = new CollegeCourseModel();
@@ -34,6 +40,120 @@ class CollegeCoursesController extends Curd
         return $this->doFormat($query, $format, $limit);
     }
 
+    /**
+     * @Desc 联表
+     * @Author Gorden
+     * @Date 2024/3/20 14:53
+     *
+     * @param array $where
+     * @param string|null $field
+     * @param string $order
+     * @return \Illuminate\Database\Query\Builder
+     */
+    protected function doSelect(array $where, string $field = null, string $order = 'desc')
+    {
+        $model = $this->model->with([
+            'category' => function ($query) {
+                $query->select('category_id', 'category_name');
+            },
+            'teacher' => function ($query) {
+                $query->select('teacher_id', 'teacher_name');
+            }
+        ]);
+        foreach ($where as $column => $value) {
+            if (is_array($value)) {
+                if ($value[0] === 'like' || $value[0] === 'not like') {
+                    $model = $model->where($column, $value[0], "%$value[1]%");
+                } elseif (in_array($value[0], ['>', '=', '<', '<>'])) {
+                    $model = $model->where($column, $value[0], $value[1]);
+                } elseif ($value[0] == 'in' && !empty($value[1])) {
+                    $valArr = $value[1];
+                    if (is_string($value[1])) {
+                        $valArr = explode(",", trim($value[1]));
+                    }
+                    $model = $model->whereIn($column, $valArr);
+                } elseif ($value[0] == 'not in' && !empty($value[1])) {
+                    $valArr = $value[1];
+                    if (is_string($value[1])) {
+                        $valArr = explode(",", trim($value[1]));
+                    }
+                    $model = $model->whereNotIn($column, $valArr);
+                } elseif ($value[0] == 'null') {
+                    $model = $model->whereNull($column);
+                } elseif ($value[0] == 'not null') {
+                    $model = $model->whereNotNull($column);
+                } elseif ($value[0] !== '' || $value[1] !== '') {
+                    $model = $model->whereBetween($column, $value);
+                }
+            } else {
+                $model = $model->where($column, $value);
+            }
+        }
+        if ($field) {
+            $model = $model->orderBy($field, $order);
+        }
+        return $model;
+    }
+
+    protected function afterQuery($items)
+    {
+        foreach ($items as &$item) {
+            $item->courses_week = !empty($item->courses_week) ? explode(',', $item->courses_week) : '';
+            $item->courses_label = !empty($item->courses_label) ? explode(',', $item->courses_label) : '';
+            $item->courses_time = !empty($item->courses_time) ? explode('~', $item->courses_time) : '';
+            $item->courses_type = self::COURSES_TYPE[$item->courses_type];
+        }
+        return $items;
+    }
+
+    /**
+     * @Desc insert input
+     * @Author Gorden
+     * @Date 2024/3/20 14:15
+     *
+     * @param Request $request
+     * @return array
+     * @throws \support\exception\BusinessException
+     */
+    protected function insertInput(Request $request): array
+    {
+        $data = $this->inputFilter($request->post());
+        $coursesTime = json_decode($data['courses_time'], true);
+        $data['courses_time'] = $coursesTime['start'] . '~' . $coursesTime['end'];
+        // 教学时长
+        $timeCut = strtotime(date('Y-m-d') . $coursesTime['end']) - strtotime(date('Y-m-d') . $coursesTime['start']);
+        $data['courses_long'] = $timeCut / 3600;
+
+        return $data;
+    }
+
+    /**
+     * @Desc update input
+     * @Author Gorden
+     * @Date 2024/3/20 14:15
+     *
+     * @param Request $request
+     * @return array
+     * @throws \support\exception\BusinessException
+     */
+    protected function updateInput(Request $request): array
+    {
+        $primary_key = $this->model->getKeyName();
+        $id = $request->post($primary_key);
+        $data = $this->inputFilter($request->post());
+        $coursesTime = json_decode($data['courses_time'], true);
+        $data['courses_time'] = $coursesTime['start'] . '~' . $coursesTime['end'];
+        // 教学时长
+        $timeCut = strtotime(date('Y-m-d') . $coursesTime['end']) - strtotime(date('Y-m-d') . $coursesTime['start']);
+        $data['courses_long'] = $timeCut / 3600;
+        $model = $this->model->find($id);
+        if (!$model) {
+            throw new BusinessException('记录不存在', 2);
+        }
+        unset($data[$primary_key]);
+        return [$id, $data];
+    }
+
     /**
      * @Desc 删除课程
      * @Author Gorden

+ 33 - 0
app/admin/controller/life/CollegeTeacherController.php

@@ -34,6 +34,39 @@ class CollegeTeacherController extends Curd
         return $this->doFormat($query, $format, $limit);
     }
 
+    /**
+     * @Desc
+     * @Author Gorden
+     * @Date 2024/3/20 11:55
+     *
+     * @param $items
+     * @return mixed
+     */
+    protected function afterQuery($items)
+    {
+        foreach ($items as &$item){
+            $item->teacher_img = getenv("STORAGE_DOMAIN").$item->teacher_img;
+        }
+        return $items;
+    }
+
+    /**
+     * @Desc
+     * @Author Gorden
+     * @Date 2024/3/20 11:55
+     *
+     * @param Request $request
+     * @return array
+     * @throws \support\exception\BusinessException
+     */
+    protected function insertInput(Request $request): array
+    {
+        $data = $this->inputFilter($request->post());
+        $data['teacher_img'] = str_replace(getenv('STORAGE_DOMAIN'),'',$data['teacher_img']);
+
+        return $data;
+    }
+
     /**
      * @Desc 删除教师
      * @Author Gorden

+ 52 - 0
app/admin/controller/life/CollegeTeachingController.php

@@ -34,6 +34,58 @@ class CollegeTeachingController extends Curd
         return $this->doFormat($query, $format, $limit);
     }
 
+    /**
+     * @Desc 联表
+     * @Author Gorden
+     * @Date 2024/3/20 14:53
+     *
+     * @param array $where
+     * @param string|null $field
+     * @param string $order
+     * @return \Illuminate\Database\Query\Builder
+     */
+    protected function doSelect(array $where, string $field = null, string $order = 'desc')
+    {
+        $model = $this->model->with([
+            'course' => function ($query) {
+                $query->select('courses_id', 'courses_name');
+            },
+        ]);
+        foreach ($where as $column => $value) {
+            if (is_array($value)) {
+                if ($value[0] === 'like' || $value[0] === 'not like') {
+                    $model = $model->where($column, $value[0], "%$value[1]%");
+                } elseif (in_array($value[0], ['>', '=', '<', '<>'])) {
+                    $model = $model->where($column, $value[0], $value[1]);
+                } elseif ($value[0] == 'in' && !empty($value[1])) {
+                    $valArr = $value[1];
+                    if (is_string($value[1])) {
+                        $valArr = explode(",", trim($value[1]));
+                    }
+                    $model = $model->whereIn($column, $valArr);
+                } elseif ($value[0] == 'not in' && !empty($value[1])) {
+                    $valArr = $value[1];
+                    if (is_string($value[1])) {
+                        $valArr = explode(",", trim($value[1]));
+                    }
+                    $model = $model->whereNotIn($column, $valArr);
+                } elseif ($value[0] == 'null') {
+                    $model = $model->whereNull($column);
+                } elseif ($value[0] == 'not null') {
+                    $model = $model->whereNotNull($column);
+                } elseif ($value[0] !== '' || $value[1] !== '') {
+                    $model = $model->whereBetween($column, $value);
+                }
+            } else {
+                $model = $model->where($column, $value);
+            }
+        }
+        if ($field) {
+            $model = $model->orderBy($field, $order);
+        }
+        return $model;
+    }
+
     /**
      * @Desc 新增
      * @Author Gorden

+ 5 - 2
app/admin/controller/medical/DeptController.php

@@ -96,8 +96,11 @@ class DeptController extends Curd
                 $model->{$key} = $val;
             }
             // 上级
-            $superior = $this->model->getByPrimaryKey($model->dept_pid);
-            $model->dept_path = $superior->dept_path . $model->dept_id . '/';
+            if ($model->dept_pid != 0){
+                $superior = $this->model->getByPrimaryKey($model->dept_pid);
+                $model->dept_path = $superior->dept_path . $model->dept_id . '/';
+            }
+
             $model->save();
             // pid变动,如果有下级,path应跟着变
             if ($data['dept_pid'] != $oldDeptPid) {

+ 62 - 0
app/admin/controller/medical/SalesmanController.php

@@ -18,6 +18,68 @@ class SalesmanController extends Curd
         $this->validateClass = new SalesmanValidate();
     }
 
+    public function select(Request $request): Response
+    {
+        [$where, $format, $limit, $field, $order] = $this->selectInput($request);
+        $order = $request->get('order', 'desc');
+        $field = $field ?? 'salesman_addTime';
+        $where['salesman_is_del'] = 0;
+        $query = $this->doSelect($where, $field, $order);
+        return $this->doFormat($query, $format, $limit);
+    }
+
+    protected function doSelect(array $where, string $field = null, string $order = 'desc')
+    {
+        $model = $this->model->with([
+            'shop' => function ($query) {
+                $query->select('shop_id', 'shop_name');
+            }
+        ]);
+        
+        foreach ($where as $column => $value) {
+            if (is_array($value)) {
+                if ($value[0] === 'like' || $value[0] === 'not like') {
+                    $model = $model->where($column, $value[0], "%$value[1]%");
+                } elseif (in_array($value[0], ['>', '=', '<', '<>'])) {
+                    $model = $model->where($column, $value[0], $value[1]);
+                } elseif ($value[0] == 'in' && !empty($value[1])) {
+                    $valArr = $value[1];
+                    if (is_string($value[1])) {
+                        $valArr = explode(",", trim($value[1]));
+                    }
+                    $model = $model->whereIn($column, $valArr);
+                } elseif ($value[0] == 'not in' && !empty($value[1])) {
+                    $valArr = $value[1];
+                    if (is_string($value[1])) {
+                        $valArr = explode(",", trim($value[1]));
+                    }
+                    $model = $model->whereNotIn($column, $valArr);
+                } elseif ($value[0] == 'null') {
+                    $model = $model->whereNull($column);
+                } elseif ($value[0] == 'not null') {
+                    $model = $model->whereNotNull($column);
+                } elseif ($value[0] !== '' || $value[1] !== '') {
+                    $model = $model->whereBetween($column, $value);
+                }
+            } else {
+                $model = $model->where($column, $value);
+            }
+        }
+        if ($field) {
+            $model = $model->orderBy($field, $order);
+        }
+        return $model;
+    }
+
+    protected function afterQuery($items)
+    {
+        foreach ($items as &$item) {
+            unset($item->salesman_password);
+        }
+
+        return $items;
+    }
+
     /**
      * @Desc insert 数据处理
      * @Author Gorden

+ 1 - 1
app/admin/controller/medical/ShopController.php

@@ -19,7 +19,7 @@ class ShopController extends Curd
     }
 
     /**
-     * @Desc 删除
+     * @Desc 列表
      * @Author Gorden
      * @Date 2024/3/1 9:15
      *

+ 2 - 2
app/admin/validate/life/CollegeCoursesValidate.php

@@ -9,12 +9,12 @@ class CollegeCoursesValidate extends Validate
     protected $rule = [
         'courses_id' => 'require|integer',
         'courses_name' => 'require|chsDash',
-        'courses_img' => 'regex:/^[A-Za-z0-9\-\_\.\/\\\]+$/',
+        'courses_img' => 'url',
         'courses_introduction' => 'require',
         'courses_type' => 'integer',
 //        'courses_time' => '',
 //        'courses_long'=>'',
-        'courses_week' => 'integer',
+//        'courses_week' => 'integer',
         'courses_category_id' => 'require|integer',
         'courses_teacher_id' => 'require|integer',
         'courses_num' => 'require|integer',

+ 1 - 1
app/admin/validate/life/CollegeTeacherValidate.php

@@ -10,7 +10,7 @@ class CollegeTeacherValidate extends Validate
         'teacher_id' => 'require|integer',
         'teacher_name' => 'require|chsDash',
         'teacher_title' => 'chsDash',
-        'teacher_img' => 'require|regex:/^[A-Za-z0-9\-\_\.\/\\\]+$/',
+        'teacher_img' => 'require|url',
         'teacher_introduction' => 'chsDash',
         'teacher_is_del' => 'integer',
     ];

+ 1 - 1
app/admin/validate/medical/SalesmanValidate.php

@@ -21,7 +21,7 @@ class SalesmanValidate extends Validate
     protected $scene = [
         'add' => ['salesman_shop_id', 'salesman_name', 'salesman_username', 'salesman_password',
             'salesman_phone', 'salesman_status'],
-        'update' => ['salesman_id', 'salesman_shop_id', 'salesman_name', 'salesman_username', 'salesman_password',
+        'update' => ['salesman_id', 'salesman_shop_id', 'salesman_name', 'salesman_username',
             'salesman_phone', 'salesman_status'],
     ];
 }

+ 2 - 2
app/controller/Curd.php

@@ -123,8 +123,8 @@ class Curd
         try {
             [$id, $data] = $this->updateInput($request);
             $this->doUpdate($id, $data);
-        } catch (BusinessException $customException) {
-            return json_fail($customException->getMessage());
+        } catch (BusinessException $e) {
+            return json_fail($e->getMessage());
         } catch (\Exception $e) {
             return json_fail('数据更新失败');
         }

+ 10 - 0
app/model/CollegeCourses.php

@@ -15,4 +15,14 @@ class CollegeCourses extends Model
     public const CREATED_AT = 'courses_addTime';
 
     public const UPDATED_AT = 'courses_updateTime';
+
+    public function category()
+    {
+        return $this->hasOne(SysCategory::class, 'category_id', 'courses_category_id');
+    }
+
+    public function teacher()
+    {
+        return $this->hasOne(CollegeTeacher::class, 'teacher_id', 'courses_teacher_id');
+    }
 }

+ 4 - 0
app/model/CollegeTeaching.php

@@ -15,4 +15,8 @@ class CollegeTeaching extends Model
     public const CREATED_AT = 'teaching_addTime';
 
     public const UPDATED_AT = 'teaching_updateTime';
+
+    public function course(){
+        return $this->hasOne(CollegeCourses::class,'courses_id','teaching_courses_id');
+    }
 }

+ 4 - 0
app/model/MedicalDept.php

@@ -16,6 +16,10 @@ class MedicalDept extends Model
 
     public const UPDATED_AT = 'dept_updateTime';
 
+    public function getDeptAddTimeAttribute($value){
+        return date('Y-m-d H:i:s',$value);
+    }
+
     /**
      * @Desc 根据主键获取数据
      * @Author Gorden

+ 10 - 5
app/model/MedicalSalesman.php

@@ -16,6 +16,11 @@ class MedicalSalesman extends Model
 
     public const UPDATED_AT = 'salesman_updateTime';
 
+    public function shop()
+    {
+        return $this->hasOne(MedicalShop::class,'shop_id','salesman_shop_id');
+    }
+
     /**
      * @Desc 手机号是否已存在
      * @Author Gorden
@@ -53,8 +58,8 @@ class MedicalSalesman extends Model
      */
     public function phoneIsInOtherAccountExist($phone, $id)
     {
-        return self::where('salesman_phone',$phone)
-            ->where('salesman_id','<>',$id)
+        return self::where('salesman_phone', $phone)
+            ->where('salesman_id', '<>', $id)
             ->exists();
     }
 
@@ -67,10 +72,10 @@ class MedicalSalesman extends Model
      * @param $id
      * @return bool
      */
-    public function usernameIsInOtherAccountExist($username,$id)
+    public function usernameIsInOtherAccountExist($username, $id)
     {
-        return self::where('salesman_username',$username)
-            ->where('salesman_id','<>',$id)
+        return self::where('salesman_username', $username)
+            ->where('salesman_id', '<>', $id)
             ->exists();
     }
 }