Преглед изворни кода

[智价云] 通知配置更新

tangyuanwang пре 9 часа
родитељ
комит
b890801adb

+ 131 - 0
app/Http/Controllers/Manager/Personnel/NoticeConfig.php

@@ -0,0 +1,131 @@
+<?php
+
+namespace App\Http\Controllers\Manager\Personnel;
+
+use App\Http\Controllers\Controller;
+use App\Http\Requests\Manager\Personnel\NoticeConfig as Request;
+use App\Models\Manager\Personnel\NoticeConfig as NoticeConfigModel;
+
+/**
+ * 人员管理-消息通知配置-控制器
+ * @author    唐远望
+ * @version   1.0
+ * @date      2026-04-10
+ */
+class NoticeConfig extends Controller
+{
+    /**
+     * 详情
+     * @author    唐远望
+     * @version   1.0
+     * @date      2026-04-10
+     */
+    public function detail(Request $request, NoticeConfigModel $NoticeConfigModel)
+    {
+        $request->scene('detail')->validate();
+        $admin_company_id = request('admin_company_id', '0');
+        $company_id = request('access_token.company_id', '0');
+        $is_admin = request('access_token.is_admin', '0');
+        // 权限判断
+        if ($is_admin != 1 && $company_id != 0) {
+            $map['company_id'] = $company_id;
+        } else {
+            $map['company_id'] = $admin_company_id;
+        }
+        $notice_week_config = [
+            'week_1' => '1', //状态 0=开启 1=关闭
+            'week_2' => '1', //状态 0=开启 1=关闭
+            'week_3' => '1', //状态 0=开启 1=关闭
+            'week_4' => '1', //状态 0=开启 1=关闭
+            'week_5' => '1', //状态 0=开启 1=关闭
+            'week_6' => '1', //状态 0=开启 1=关闭
+            'week_7' => '1', //状态 0=开启 1=关闭
+        ];
+        $data = $NoticeConfigModel->where($map)->first();
+        if (!$data) {
+            //计算开启天数
+            $open_day = 0;
+            foreach ($notice_week_config as $key => $value) {
+                if ($value == '0') {
+                    $open_day++;
+                }
+            }
+            //自动创建
+            $insert_data = [
+                'company_id' => $map['company_id'],
+                'open_day' => $open_day,
+                'notice_week_config' => json_encode($notice_week_config),
+                'insert_time' => time(),
+            ];
+            $NoticeConfigModel->insert($insert_data);
+            $data = $NoticeConfigModel->where($map)->first();
+        }
+        $data->notice_week_config = json_decode($data->notice_week_config, true);
+        // 加载模板
+        return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $data]);
+    }
+
+    /**
+     * 修改
+     * @author    唐远望
+     * @version   1.0
+     * @date      2026-04-10
+     * 
+     */
+    public function update(Request $request, NoticeConfigModel $NoticeConfigModel)
+    {
+        $request->scene('update')->validate();
+        $admin_company_id = request('admin_company_id', '0');
+        $company_id = request('access_token.company_id', '0');
+        $is_admin = request('access_token.is_admin', '0');
+        //接收参数
+        $week_config = request('week_config', '');
+        $push_time = trim(request('push_time', ''));
+        // 权限判断
+        if ($is_admin != 1 && $company_id != 0) {
+            $map['company_id'] = $company_id;
+        } else {
+            $map['company_id'] = $admin_company_id;
+        }
+        $notice_week_config = [
+            'week_1' => isset($week_config['week_1']) ? $week_config['week_1'] : '1', //状态 0=开启 1=关闭
+            'week_2' => isset($week_config['week_2']) ? $week_config['week_2'] : '1', //状态 0=开启 1=关闭
+            'week_3' => isset($week_config['week_3']) ? $week_config['week_3'] : '1', //状态 0=开启 1=关闭
+            'week_4' => isset($week_config['week_4']) ? $week_config['week_4'] : '1', //状态 0=开启 1=关闭
+            'week_5' => isset($week_config['week_5']) ? $week_config['week_5'] : '1', //状态 0=开启 1=关闭
+            'week_6' => isset($week_config['week_6']) ? $week_config['week_6'] : '1', //状态 0=开启 1=关闭
+            'week_7' => isset($week_config['week_7']) ? $week_config['week_7'] : '1', //状态 0=开启 1=关闭
+        ];
+        //计算开启天数
+        $open_day = 0;
+        foreach ($notice_week_config as $key => $value) {
+            if ($value == '0') {
+                $open_day++;
+            }
+        }
+        if($open_day > 0 && empty($push_time)){
+            return json_send(['code' => 'error', 'msg' => '请设置推送时间', 'data' => '']);
+        }
+        $data = $NoticeConfigModel->where($map)->first();
+        if (!$data) {
+            //自动创建
+            $insert_data = [
+                'company_id' => $map['company_id'],
+                'open_day' => $open_day,
+                'notice_week_config' => json_encode($notice_week_config),
+                'push_time' => $push_time,
+                'insert_time' => time(),
+            ];
+            $NoticeConfigModel->insert($insert_data);
+            $data = $NoticeConfigModel->where($map)->first();
+        } else {
+            $data->notice_week_config = json_encode($notice_week_config);
+            $data->open_day = $open_day;
+            $data->push_time = $push_time;
+            $data->update_time = time();
+            $data->save();
+        }
+        // 加载模板
+        return json_send(['code' => 'success', 'msg' => '操作成功', 'data' => '']);
+    }
+}

+ 92 - 0
app/Http/Requests/Manager/Personnel/NoticeConfig.php

@@ -0,0 +1,92 @@
+<?php
+
+namespace App\Http\Requests\Manager\Personnel;
+
+use App\Http\Requests\BaseRequest;
+
+/**
+ * 人员管理-消息通知配置-请求类
+ * @author 唐远望
+ * @version 1.0
+ * @date 2026-04-10
+ * 
+ */
+class NoticeConfig 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',
+            'week_config'       => 'required|array',
+            'week_config.week_1' => 'required|in:0,1', //状态 0=开启 1=关闭
+            'week_config.week_2' => 'required|in:0,1', //状态 0=开启 1=关闭
+            'week_config.week_3' => 'required|in:0,1', //状态 0=开启 1=关闭
+            'week_config.week_4' => 'required|in:0,1', //状态 0=开启 1=关闭
+            'week_config.week_5' => 'required|in:0,1', //状态 0=开启 1=关闭
+            'week_config.week_6' => 'required|in:0,1', //状态 0=开启 1=关闭
+            'week_config.week_7' => 'required|in:0,1', //状态 0=开启 1=关闭
+        ];
+    }
+
+
+    // 场景列表
+    protected   $scenes         = [
+        'detail'             => [''],
+        'list'               => ['page', 'limit'],
+        'add'                      => [''],
+        'edit'                  => [''],
+        'set_status'              => [''],
+        'delete'                  => ['id'],
+        'update'                 => ['week_config', 'week_config.week_1', 'week_config.week_2', 'week_config.week_3', 'week_config.week_4', 'week_config.week_5', 'week_config.week_6', 'week_config.week_7'],
+    ];
+
+    /**
+     * 获取已定义验证规则的错误消息
+     *
+     * @return array
+     */
+    public function messages()
+    {
+        return [
+            'id.required'       => 'ID未知',
+            'id.integer'        => 'ID格式错误',
+            'id.gt'               => 'ID格式错误',
+            'status.required'   => '状态未知',
+            'status.integer'    => '状态格式错误',
+            'status.in'         => '状态格式错误',
+            'page.integer'      => '页码格式错误',
+            'page.min'          => '页码格式错误',
+            'limit.integer'     => '每页数量格式错误',
+            'limit.min'         => '每页数量格式错误',
+            'week_config.required' => '消息通知配置未知',
+            'week_config.array' => '消息通知配置格式错误',
+            'week_config.week_1.required' => '消息通知配置未知',
+            'week_config.week_1.in' => '消息通知配置格式错误',
+            'week_config.week_2.required' => '消息通知配置未知',
+            'week_config.week_2.in' => '消息通知配置格式错误',
+            'week_config.week_3.required' => '消息通知配置未知',
+            'week_config.week_3.in' => '消息通知配置格式错误',
+            'week_config.week_4.required' => '消息通知配置未知',
+            'week_config.week_4.in' => '消息通知配置格式错误',
+            'week_config.week_5.required' => '消息通知配置未知',
+            'week_config.week_5.in' => '消息通知配置格式错误',
+            'week_config.week_6.required' => '消息通知配置未知',
+            'week_config.week_6.in' => '消息通知配置格式错误',
+            'week_config.week_7.required' => '消息通知配置未知',
+            'week_config.week_7.in' => '消息通知配置格式错误',
+
+        ];
+    }
+}

+ 18 - 0
app/Models/Manager/Personnel/NoticeConfig.php

@@ -0,0 +1,18 @@
+<?php
+
+namespace App\Models\Manager\Personnel;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+class NoticeConfig extends Model
+{
+    use HasFactory;
+    // 与模型关联的表名
+    protected $table = 'personnel_employee_notice_config';
+    // 是否主动维护时间戳
+    public $timestamps = false;
+    // 定义时间戳字段名
+    // const CREATED_AT = 'insert_time';
+    // const UPDATED_AT = 'update_time';
+}

+ 5 - 0
routes/manager.php

@@ -284,6 +284,11 @@ Route::any('process/notice/message_count', [App\Http\Controllers\Manager\Process
 //违规处理-消息类型数统计
 Route::any('process/notice/message_type_count', [App\Http\Controllers\Manager\Process\Notice::class, 'message_type_count']);
 
+//违规处理-消息通知修改
+Route::any('personnel/notice_config/update', [App\Http\Controllers\Manager\Personnel\NoticeConfig::class,'update']);
+//违规处理-消息通知详情
+Route::any('personnel/notice_config/detail', [App\Http\Controllers\Manager\Personnel\NoticeConfig::class,'detail']);
+
 // 获取签名上传地址
 Route::any('upload/get_sign_url',[App\Http\Controllers\Manager\Upload::class,'get_sign_url']);
 // 普通图片上传