123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Description: 公告
  4. // +----------------------------------------------------------------------
  5. // | Author: yyk
  6. // +----------------------------------------------------------------------
  7. namespace app\oa\controller;
  8. use app\admin\controller\ApiCommon;
  9. use think\Hook;
  10. use think\Request;
  11. use think\Db;
  12. class Announcement extends ApiCommon
  13. {
  14. /**
  15. * 用于判断权限
  16. * @permission 无限制
  17. * @allow 登录用户可访问
  18. * @other 其他根据系统设置
  19. **/
  20. public function _initialize()
  21. {
  22. $action = [
  23. 'permission'=>[''],
  24. 'allow'=>['index','read']
  25. ];
  26. Hook::listen('check_auth',$action);
  27. $request = Request::instance();
  28. $a = strtolower($request->action());
  29. if (!in_array($a, $action['permission'])) {
  30. parent::_initialize();
  31. }
  32. }
  33. /**
  34. * 公告列表
  35. * @author Michael_xu
  36. * @return
  37. */
  38. public function index()
  39. {
  40. $announcementModel = model('Announcement');
  41. $param = $this->param;
  42. $userInfo = $this->userInfo;
  43. $param['user_id'] = $userInfo['id'];
  44. $data = $announcementModel->getDataList($param);
  45. $data['is_create'] = 0;
  46. //权限判断
  47. if (checkPerByAction('oa', 'announcement', 'save')) {
  48. $data['is_create'] = 1;
  49. }
  50. return resultArray(['data' => $data]);
  51. }
  52. /**
  53. * 添加公告
  54. * @author Michael_xu
  55. * @return
  56. */
  57. public function save()
  58. {
  59. $announcementModel = model('Announcement');
  60. $param = $this->param;
  61. $userInfo = $this->userInfo;
  62. $param['create_user_id'] = $userInfo['id'];
  63. # 时间设置
  64. $param['start_time'] = !empty($param['start_time']) ? strtotime($param['start_time']) : time();
  65. $param['end_time'] = !empty($param['end_time']) ? strtotime($param['end_time']) : time();
  66. //开始时间不能小于结束时间
  67. // if ($param['start_time'] && $param['end_time']) {
  68. // if ($param['start_time'] > $param['end_time']) resultArray(['error' => '开始时间不能大于结束时间']);
  69. // }
  70. $res = $announcementModel->createData($param);
  71. if ($res) {
  72. $res['realname'] = $userInfo['realname'];
  73. return resultArray(['data' => $res]);
  74. } else {
  75. return resultArray(['error' => $announcementModel->getError()]);
  76. }
  77. }
  78. /**
  79. * 公告详情
  80. * @author Michael_xu
  81. * @return
  82. */
  83. public function read()
  84. {
  85. $announcementModel = model('Announcement');
  86. $param = $this->param;
  87. $userInfo = $this->userInfo;
  88. $user_id = $userInfo['id'];
  89. if(!$param['announcement_id']) {
  90. return resultArray(['error'=>'参数错误']);
  91. }
  92. $data = $announcementModel->getDataById($param['announcement_id']);
  93. $adminTypes = adminGroupTypes($user_id);
  94. //判断权限
  95. if (!in_array($user_id, stringToArray($data['owner_user_ids'])) && !in_array($userInfo['structure_id'], stringToArray($data['structure_ids'])) && !in_array(1,$adminTypes) && ($data['owner_user_ids'] && $data['structure_id'])) {
  96. header('Content-Type:application/json; charset=utf-8');
  97. exit(json_encode(['code'=>102,'error'=>'没有权限']));
  98. }
  99. if (!$data) {
  100. return resultArray(['error' => $announcementModel->getError()]);
  101. }
  102. //标记已读
  103. $read_user_ids = stringToArray($data['read_user_ids']) ? array_merge(stringToArray($data['read_user_ids']),array($user_id)) : array($user_id);
  104. $res = Db::name('OaAnnouncement')->where(['announcement_id' => $param['announcement_id']])->update(['read_user_ids' => arrayToString($read_user_ids)]);
  105. return resultArray(['data' => $data]);
  106. }
  107. /**
  108. * 编辑公告
  109. * @author Michael_xu
  110. * @return
  111. */
  112. public function update()
  113. {
  114. $announcementModel = model('Announcement');
  115. $param = $this->param;
  116. if (!$param['announcement_id']) {
  117. return resultArray(['error' => '参数错误']);
  118. }
  119. if (!trim($param['content'])) {
  120. return resultArray(['error' => '请填写公告正文']);
  121. }
  122. # 时间设置
  123. $param['start_time'] = !empty($param['start_time']) ? strtotime($param['start_time']) : time();
  124. $param['end_time'] = !empty($param['end_time']) ? strtotime($param['end_time']) : time();
  125. $res = $announcementModel->updateDataById($param, $param['announcement_id']);
  126. if ($res) {
  127. return resultArray(['data' => '编辑成功']);
  128. } else {
  129. return resultArray(['error' => $announcementModel->getError()]);
  130. }
  131. }
  132. /**
  133. * 删除公告
  134. * @author Michael_xu
  135. * @return
  136. */
  137. public function delete()
  138. {
  139. $announcementModel = model('Announcement');
  140. $param = $this->param;
  141. $userInfo = $this->userInfo;
  142. $param['user_id'] = $userInfo['id'];
  143. $data = $announcementModel->delDataById($param);
  144. if (!$data) {
  145. return resultArray(['error' => $announcementModel->getError()]);
  146. }
  147. return resultArray(['data' => '删除成功']);
  148. }
  149. }