Sfoglia il codice sorgente

[智价云] 人员信息管理-员工管理

tangyuanwang 1 settimana fa
parent
commit
d41bdd69f6

+ 185 - 0
app/Http/Controllers/Manager/Personnel/Employee.php

@@ -0,0 +1,185 @@
+<?php
+
+namespace App\Http\Controllers\Manager\Personnel;
+
+use App\Http\Controllers\Controller;
+use App\Http\Requests\Manager\Personnel\Employee as Request;
+use App\Models\Manager\Personnel\Employee as EmployeeModel;
+
+/**
+ * @author 唐远望
+ * @version 1.0
+ * @date 2025-12-04
+ */
+class Employee extends Controller
+{
+    /**
+     * 列表
+     * @author    唐远望
+     * @version   1.0
+     * @date      2025-12-04
+     * 
+     */
+    public function list(Request $request, EmployeeModel $EmployeeModel)
+    {
+        $request->scene('list')->validate();
+        // 查询条件
+        $map  = [];
+        $limit = request('limit', config('page_num', 10));
+        $status    = request('status', '');
+        $start_time = request('start_time', '');
+        $end_time = request('end_time', '');
+        $name = request('name', '');
+        $mobile = request('mobile', '');
+        $department_id = request('department_id', '');
+        $role_id = request('role_id', '');
+        $open_notice = request('open_notice', '');
+        $employee_code = request('employee_code', '');
+        // 时间条件
+        if ($start_time) $map[] = ['insert_time', '>=', strtotime($start_time)];
+        if ($end_time) $map[]   = ['insert_time', '<=', strtotime($end_time)];
+        // 其他条件
+        if ($status) $map[] = ['status', '=', $status];
+        if ($name) $map[] = ['name', 'like', "%$name%"];
+        if ($mobile) $map[] = ['mobile', 'like', "%$mobile%"];
+        if ($department_id) $map[] = ['department_id', '=', $department_id];
+        if ($role_id) $map[] = ['role_id', '=', $role_id];
+        if ($open_notice) $map[] = ['open_notice', '=', $open_notice];
+        if ($employee_code) $map[] = ['employee_code', 'like', "%$employee_code%"];
+        $field = ['id','employee_code', 'name','mobile', 'department_id', 'role_id', 'city_ids', 'open_notice','insert_time','update_time','status'];
+        // 查询数据
+        $result = $EmployeeModel->query()
+            ->where($map)
+            ->select($field)
+            ->orderByDesc('id')
+            ->paginate($limit);
+        // 分配数据
+        if (!$result)  return json_send(['code' => 'error', 'msg' => '暂无数据']);
+        // 加载模板
+        return        json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $result]);
+    }
+
+    /**
+     * 详情
+     * @author    唐远望
+     * @version   1.0
+     * @date      2025-12-04
+     */
+    public function detail(Request $request, EmployeeModel $EmployeeModel)
+    {
+        $request->scene('detail')->validate();
+        // 接收参数
+        $id = request('id', 0);
+        $map = ['id' => $id];
+        $field = ['id','employee_code', 'name','mobile', 'department_id', 'role_id', 'city_ids', 'open_notice','insert_time','update_time','status'];
+        $data = $EmployeeModel->where($map)->select($field)->first();
+        if (!$data)     return json_send(['code' => 'error', 'msg' => '记录不存在']);
+        // 加载模板
+        return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $data]);
+    }
+
+    /**
+     * 添加
+     * @author    唐远望
+     * @version   1.0
+     * @date      2025-12-04
+     * 
+     */
+    public function add(Request $request, EmployeeModel $EmployeeModel)
+    {
+        $request->scene('add')->validate();
+        // 接收数据
+        $all_data = request()->all();
+        //查询是否存在
+        $map = ['name' => $all_data['name']];
+        $data = $EmployeeModel->where($map)->first();
+        if ($data)     return json_send(['code' => 'error', 'msg' => '员工姓名记录已存在']);
+        $map = ['mobile' => $all_data['mobile']];
+        $data = $EmployeeModel->where($map)->first();
+        if ($data)     return json_send(['code' => 'error', 'msg' => '员工手机号记录已存在']);
+        // 写入数据表
+        $result     =  $EmployeeModel->addEmployee($all_data);
+        // 如果操作失败
+        if (!$result)     return json_send(['code' => 'error', 'msg' => '新增失败']);
+        // 告知结果
+        return json_send(['code' => 'success', 'msg' => '新增成功']);
+    }
+
+    /**
+     * 修改
+     * @author    唐远望
+     * @version   1.0
+     * @date      2025-12-04
+     * 
+     */
+    public function edit(Request $request, EmployeeModel $EmployeeModel)
+    {
+        $request->scene('edit')->validate();
+        // 接收参数
+        $id         = request('id', 0);
+        // 接收数据
+        $all_data = request()->all();
+        //查询是否存在
+        $map = ['name' => $all_data['name']];
+        $data = $EmployeeModel->where($map)->where('id', '!=', $id)->first();
+        if ($data)     return json_send(['code' => 'error', 'msg' => '员工姓名记录已存在']);
+        $map = ['mobile' => $all_data['mobile']];
+        $data = $EmployeeModel->where($map)->where('id', '!=', $id)->first();
+        if ($data)     return json_send(['code' => 'error', 'msg' => '员工手机号记录已存在']);
+        // 更新数据表
+        $where = ['id' => $id];
+        $result =  $EmployeeModel->updateEmployee($where, $all_data);
+        // 如果操作失败
+        if (!$result)     return json_send(['code' => 'error', 'msg' => '修改失败']);
+        // 告知结果
+        return json_send(['code' => 'success', 'msg' => '修改成功']);
+    }
+
+    /**
+     * 修改状态
+     * @author    唐远望
+     * @version   1.0
+     * @date      2025-12-04
+     * 
+     */
+    public function set_status(Request $request, EmployeeModel $EmployeeModel)
+    {
+        // 验证参数
+        $request->scene('set_status')->validate();
+        // 接收数据
+        $id                = request('id', 0);
+        $status            = request('status', 0);
+        // 查询用户
+        $where = ['id' => $id];
+        // 执行修改
+        $result            =  $EmployeeModel->changeStatus($where, $status);
+        // 提示新增失败
+        if (!$result)    return json_send(['code' => 'error', 'msg' => '设置失败']);
+        // 告知结果
+        return             json_send(['code' => 'success', 'msg' => '设置成功']);
+    }
+
+
+    /**
+     * 删除
+     * @author    唐远望
+     * @version   1.0
+     * @date      2025-12-04
+     * 
+     */
+    public function delete(Request $request, EmployeeModel $EmployeeModel)
+    {
+        // 验证参数
+        $request->scene('delete')->validate();
+        // 接收数据
+        $id = request('id', 0);
+        // 查询用户
+        $where = ['id' => $id];
+        // 执行删除
+        $result =  $EmployeeModel->deleteEmployee($where);
+        // 提示删除失败
+        if (!$result)    return json_send(['code' => 'error', 'msg' => '删除失败']);
+        // 告知结果
+        return             json_send(['code' => 'success', 'msg' => '删除成功']);
+    }
+}

+ 89 - 0
app/Http/Requests/Manager/Personnel/Employee.php

@@ -0,0 +1,89 @@
+<?php
+
+namespace App\Http\Requests\Manager\Personnel;
+
+use App\Http\Requests\BaseRequest;
+
+/**
+ * 人员管理-员工管理-请求类
+ * @author 唐远望
+ * @version 1.0
+ * @date 2025-12-04
+ * 
+ */
+class Employee extends BaseRequest
+{
+    /**
+     * 获取应用于请求的规则
+     *
+     * @return array
+     */
+    public function rules()
+    {
+        // 返回结果
+        return      [
+            'name'                 => 'required',
+            'id'                => 'required|integer|gt:0',
+            'status'            => 'required|integer|in:0,1',
+            'page'              => 'integer|min:1',
+            'limit'             => 'integer|min:1',
+            'image_url'         => 'required',
+            'link_url'          => 'required',
+            'sort'              => 'required|integer|min:0',
+            'mobile'            => 'required',
+            'department_id'     => 'required|integer|gt:0',
+            'role_id'           => 'required|integer|gt:0',
+            'password'          => 'required',
+            'open_notice'       => 'required|integer|in:0,1',
+        ];
+    }
+
+
+    // 场景列表
+    protected   $scenes         = [
+        'detail'             => ['id'],
+        'list'               => ['page', 'limit'],
+        'add'                      => ['name', 'mobile','department_id','role_id','password','open_notice'],
+        'edit'                  => ['id','name', 'mobile','department_id','role_id','password','open_notice'],
+        'set_status'              => ['id', 'status'],
+        'delete'                  => ['id'],
+    ];
+
+    /**
+     * 获取已定义验证规则的错误消息
+     *
+     * @return array
+     */
+    public function messages()
+    {
+        return [
+            'name.required'     => '姓名必填',
+            'id.required'       => 'ID未知',
+            'id.integer'        => 'ID格式错误',
+            'id.gt'               => 'ID格式错误',
+            'status.required'   => '状态未知',
+            'status.integer'    => '状态格式错误',
+            'status.in'         => '状态格式错误',
+            'page.integer'      => '页码格式错误',
+            'page.min'          => '页码格式错误',
+            'limit.integer'     => '每页数量格式错误',
+            'limit.min'         => '每页数量格式错误',
+            'image_url.required'    => '图片链接未知',
+            'link_url.required'     => '链接地址未知',
+            'sort.required'         => '排序未知',
+            'sort.integer'          => '排序格式错误',
+            'sort.min'              => '排序格式错误',
+            'mobile.required'       => '手机号未知',
+            'department_id.required'    => '部门未知',
+            'department_id.integer'     => '部门格式错误',
+            'department_id.gt'          => '部门格式错误',
+            'role_id.required'        => '角色未知',
+            'role_id.integer'         => '角色格式错误',
+            'role_id.gt'              => '角色格式错误',
+            'password.required'       => '密码未知',
+            'open_notice.required'    => '通知未知',
+            'open_notice.integer'     => '通知格式错误',
+            'open_notice.in'          => '通知格式错误',
+        ];
+    }
+}

+ 192 - 0
app/Models/Manager/Personnel/Employee.php

@@ -0,0 +1,192 @@
+<?php
+
+namespace App\Models\Manager\Personnel;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+use Illuminate\Support\Facades\DB;
+
+/**
+ * 添加
+ * @author 唐远望
+ * @version 1.0
+ * @date 2025-12-04
+ */
+class Employee extends Model
+{
+    use HasFactory;
+    // 与模型关联的表名
+    protected $table = 'personnel_employee';
+    // 是否主动维护时间戳
+    public $timestamps = false;
+    // 定义时间戳字段名
+    // const CREATED_AT = 'insert_time';
+    // const UPDATED_AT = 'update_time';
+
+
+    /**
+     * 添加
+     * @author 唐远望
+     * @version 1.0
+     * @date 2025-12-04
+     */
+    public function addEmployee_content($data)
+    {
+        $insert_data = [
+            'name' => $data['name'],
+            'mobile'    => $data['mobile'],
+            'password'  => md5($data['password']),
+            'role_id'     => $data['role_id'],
+            'city_ids'    => isset($data['city_ids'])? $data['city_ids'] : '',
+            'department_id' => $data['department_id'],
+            'open_notice' => $data['open_notice'],
+            'insert_time' => time(),
+        ];
+        $Employee_id = $this->insertGetId($insert_data);
+        if($Employee_id){
+            $this->where('id', $Employee_id)->update(['employee_code' => $this->employee_idToCode($Employee_id)]);
+        }
+        return $Employee_id;
+    }
+
+    /**
+     * id转编码
+     * @author 唐远望
+     * @version 1.0
+     * @date 2025-12-04
+     * @param  int  $id 编码
+     * 
+     */
+    public function employee_idToCode($id)
+    {
+        return 'RH' . str_pad($id, 9, '0', STR_PAD_LEFT);
+    }
+
+    /**
+     * 编码转id
+     * @author 唐远望
+     * @version 1.0
+     * @date 2025-12-04
+     * @param  string $code 编码
+     * 
+     */
+    public function employee_codeToId($code)
+    {
+        return intval(str_ireplace('RH', '', $code));
+    }
+
+
+    /**
+     * 写入数据
+     * @author 唐远望
+     * @version 1.0
+     * @date 2025-12-04
+     * @param $data
+     * @return bool
+     */
+    public function addEmployee($data)
+    {
+        DB::beginTransaction();
+        try {
+            $this->addEmployee_content($data);
+            DB::commit();
+            return true;
+            // 成功处理...
+        } catch (\Exception $e) {
+            DB::rollBack();
+            // 错误处理...
+            return false;
+        }
+    }
+
+
+    /**
+     * 编辑内容
+     * @author 唐远望
+     * @version 1.0
+     * @date 2025-12-04
+     * @param $data
+     * @return bool
+     */
+    public function editEmployee_content($where, $data)
+    {
+        $Employee = $this->where($where)->first();
+        if (!$Employee) {
+            return false;
+        }
+        $Employee->name = $data['name'];
+        $Employee->mobile = $data['mobile'];
+        if(isset($data['password']) && $data['password']!='') $Employee->password = md5($data['password']);
+        $Employee->role_id = $data['role_id'];
+        $Employee->city_ids = isset($data['city_ids'])? $data['city_ids'] : '';
+        $Employee->department_id = $data['department_id'];
+        $Employee->open_notice = $data['open_notice'];
+        $Employee->update_time = time();
+        $Employee->save();
+        return true;
+    }
+
+
+
+    /**
+     * 更新数据
+     * @author 唐远望
+     * @version 1.0
+     * @date 2025-12-04
+     * @param $data
+     * @return bool
+     */
+    public function updateEmployee($where, $data)
+    {
+        DB::beginTransaction();
+        try {
+            $this->editEmployee_content($where, $data);
+            DB::commit();
+            return true;
+            // 成功处理...
+        } catch (\Exception $e) {
+            DB::rollBack();
+            // 错误处理...
+            return false;
+        }
+    }
+
+    /**
+     * 修改状态
+     * @author 唐远望
+     * @version 1.0
+     * @date 2025-12-04
+     * @param $id
+     * @param $status
+     * @return bool
+     */
+    public function changeStatus($where, $status)
+    {
+        $Employee = $this->where($where)->first();
+        if (!$Employee) {
+            return false;
+        }
+        $Employee->status = $status;
+        $Employee->update_time = time();
+        $Employee->save();
+        return true;
+    }
+
+    /**
+     * 删除数据
+     * @author 唐远望
+     * @version 1.0
+     * @date 2025-12-04
+     * @param $id
+     * @return bool
+     */
+    public function deleteEmployee($where)
+    {
+        $Employee = $this->where($where)->first();
+        if (!$Employee) {
+            return false;
+        }
+        $Employee->delete();
+        return true;
+    }
+}

+ 15 - 1
routes/manager.php

@@ -70,4 +70,18 @@ Route::any('violation_store/edit', [App\Http\Controllers\Manager\WashConfig\Viol
 // 违规店铺-状态
 Route::any('violation_store/set_status', [App\Http\Controllers\Manager\WashConfig\ViolationStore::class, 'set_status']);
 // 违规店铺-删除
-Route::any('violation_store/delete', [App\Http\Controllers\Manager\WashConfig\ViolationStore::class, 'delete']);
+Route::any('violation_store/delete', [App\Http\Controllers\Manager\WashConfig\ViolationStore::class, 'delete']);
+
+// ------人员信息管理------
+// 员工管理-列表
+Route::any('personnel_employee/list', [App\Http\Controllers\Manager\Personnel\Employee::class, 'list']);
+// 员工管理-详情
+Route::any('personnel_employee/detail', [App\Http\Controllers\Manager\Personnel\Employee::class, 'detail']);
+// 员工管理-添加
+Route::any('personnel_employee/add', [App\Http\Controllers\Manager\Personnel\Employee::class, 'add']);
+// 员工管理-修改
+Route::any('personnel_employee/edit', [App\Http\Controllers\Manager\Personnel\Employee::class, 'edit']);
+// 员工管理-状态
+Route::any('personnel_employee/set_status', [App\Http\Controllers\Manager\Personnel\Employee::class, 'set_status']);
+// 员工管理-删除
+Route::any('personnel_employee/delete', [App\Http\Controllers\Manager\Personnel\Employee::class, 'delete']);