NoticeConfig.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. namespace App\Http\Controllers\Manager\Personnel;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\Manager\Personnel\NoticeConfig as Request;
  5. use App\Models\Manager\Personnel\NoticeConfig as NoticeConfigModel;
  6. /**
  7. * 人员管理-消息通知配置-控制器
  8. * @author 唐远望
  9. * @version 1.0
  10. * @date 2026-04-10
  11. */
  12. class NoticeConfig extends Controller
  13. {
  14. /**
  15. * 详情
  16. * @author 唐远望
  17. * @version 1.0
  18. * @date 2026-04-10
  19. */
  20. public function detail(Request $request, NoticeConfigModel $NoticeConfigModel)
  21. {
  22. $request->scene('detail')->validate();
  23. $admin_company_id = request('admin_company_id', '0');
  24. $company_id = request('access_token.company_id', '0');
  25. $is_admin = request('access_token.is_admin', '0');
  26. // 权限判断
  27. if ($is_admin != 1 && $company_id != 0) {
  28. $map['company_id'] = $company_id;
  29. } else {
  30. $map['company_id'] = $admin_company_id;
  31. }
  32. $notice_week_config = [
  33. 'week_1' => '1', //状态 0=开启 1=关闭
  34. 'week_2' => '1', //状态 0=开启 1=关闭
  35. 'week_3' => '1', //状态 0=开启 1=关闭
  36. 'week_4' => '1', //状态 0=开启 1=关闭
  37. 'week_5' => '1', //状态 0=开启 1=关闭
  38. 'week_6' => '1', //状态 0=开启 1=关闭
  39. 'week_7' => '1', //状态 0=开启 1=关闭
  40. ];
  41. $data = $NoticeConfigModel->where($map)->first();
  42. if (!$data) {
  43. //计算开启天数
  44. $open_day = 0;
  45. foreach ($notice_week_config as $key => $value) {
  46. if ($value == '0') {
  47. $open_day++;
  48. }
  49. }
  50. //自动创建
  51. $insert_data = [
  52. 'company_id' => $map['company_id'],
  53. 'open_day' => $open_day,
  54. 'notice_week_config' => json_encode($notice_week_config),
  55. 'insert_time' => time(),
  56. ];
  57. $NoticeConfigModel->insert($insert_data);
  58. $data = $NoticeConfigModel->where($map)->first();
  59. }
  60. $data->notice_week_config = json_decode($data->notice_week_config, true);
  61. // 加载模板
  62. return json_send(['code' => 'success', 'msg' => '获取成功', 'data' => $data]);
  63. }
  64. /**
  65. * 修改
  66. * @author 唐远望
  67. * @version 1.0
  68. * @date 2026-04-10
  69. *
  70. */
  71. public function update(Request $request, NoticeConfigModel $NoticeConfigModel)
  72. {
  73. $request->scene('update')->validate();
  74. $admin_company_id = request('admin_company_id', '0');
  75. $company_id = request('access_token.company_id', '0');
  76. $is_admin = request('access_token.is_admin', '0');
  77. //接收参数
  78. $week_config = request('week_config', '');
  79. $push_time = trim(request('push_time', ''));
  80. // 权限判断
  81. if ($is_admin != 1 && $company_id != 0) {
  82. $map['company_id'] = $company_id;
  83. } else {
  84. $map['company_id'] = $admin_company_id;
  85. }
  86. $notice_week_config = [
  87. 'week_1' => isset($week_config['week_1']) ? $week_config['week_1'] : '1', //状态 0=开启 1=关闭
  88. 'week_2' => isset($week_config['week_2']) ? $week_config['week_2'] : '1', //状态 0=开启 1=关闭
  89. 'week_3' => isset($week_config['week_3']) ? $week_config['week_3'] : '1', //状态 0=开启 1=关闭
  90. 'week_4' => isset($week_config['week_4']) ? $week_config['week_4'] : '1', //状态 0=开启 1=关闭
  91. 'week_5' => isset($week_config['week_5']) ? $week_config['week_5'] : '1', //状态 0=开启 1=关闭
  92. 'week_6' => isset($week_config['week_6']) ? $week_config['week_6'] : '1', //状态 0=开启 1=关闭
  93. 'week_7' => isset($week_config['week_7']) ? $week_config['week_7'] : '1', //状态 0=开启 1=关闭
  94. ];
  95. //计算开启天数
  96. $open_day = 0;
  97. foreach ($notice_week_config as $key => $value) {
  98. if ($value == '0') {
  99. $open_day++;
  100. }
  101. }
  102. if($open_day > 0 && empty($push_time)){
  103. return json_send(['code' => 'error', 'msg' => '请设置推送时间', 'data' => '']);
  104. if(in_array($push_time, ['09:00', '11:00', '14:00','18:00']) == false){
  105. return json_send(['code' => 'error', 'msg' => '推送时间格式错误', 'data' => '']);
  106. }
  107. }
  108. $data = $NoticeConfigModel->where($map)->first();
  109. if (!$data) {
  110. //自动创建
  111. $insert_data = [
  112. 'company_id' => $map['company_id'],
  113. 'open_day' => $open_day,
  114. 'notice_week_config' => json_encode($notice_week_config),
  115. 'push_time' => $push_time,
  116. 'insert_time' => time(),
  117. ];
  118. $NoticeConfigModel->insert($insert_data);
  119. $data = $NoticeConfigModel->where($map)->first();
  120. } else {
  121. $data->notice_week_config = json_encode($notice_week_config);
  122. $data->open_day = $open_day;
  123. $data->push_time = $push_time;
  124. $data->update_time = time();
  125. $data->save();
  126. }
  127. // 加载模板
  128. return json_send(['code' => 'success', 'msg' => '操作成功', 'data' => '']);
  129. }
  130. }