You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wkcrm/application/oa/controller/Announcement.php

163 lines
5.3 KiB

<?php
// +----------------------------------------------------------------------
// | Description: 公告
// +----------------------------------------------------------------------
// | Author: yyk
// +----------------------------------------------------------------------
namespace app\oa\controller;
use app\admin\controller\ApiCommon;
use think\Hook;
use think\Request;
use think\Db;
class Announcement extends ApiCommon
{
/**
* 用于判断权限
* @permission 无限制
* @allow 登录用户可访问
* @other 其他根据系统设置
**/
public function _initialize()
{
$action = [
'permission'=>[''],
'allow'=>['index','read']
];
Hook::listen('check_auth',$action);
$request = Request::instance();
$a = strtolower($request->action());
if (!in_array($a, $action['permission'])) {
parent::_initialize();
}
}
/**
* 公告列表
* @author Michael_xu
* @return
*/
public function index()
{
$announcementModel = model('Announcement');
$param = $this->param;
$userInfo = $this->userInfo;
$param['user_id'] = $userInfo['id'];
$data = $announcementModel->getDataList($param);
$data['is_create'] = 0;
//权限判断
if (checkPerByAction('oa', 'announcement', 'save')) {
$data['is_create'] = 1;
}
return resultArray(['data' => $data]);
}
/**
* 添加公告
* @author Michael_xu
* @return
*/
public function save()
{
$announcementModel = model('Announcement');
$param = $this->param;
$userInfo = $this->userInfo;
$param['create_user_id'] = $userInfo['id'];
# 时间设置
$param['start_time'] = !empty($param['start_time']) ? strtotime($param['start_time']) : time();
$param['end_time'] = !empty($param['end_time']) ? strtotime($param['end_time']) : time();
//开始时间不能小于结束时间
// if ($param['start_time'] && $param['end_time']) {
// if ($param['start_time'] > $param['end_time']) resultArray(['error' => '开始时间不能大于结束时间']);
// }
$res = $announcementModel->createData($param);
if ($res) {
$res['realname'] = $userInfo['realname'];
return resultArray(['data' => $res]);
} else {
return resultArray(['error' => $announcementModel->getError()]);
}
}
/**
* 公告详情
* @author Michael_xu
* @return
*/
public function read()
{
$announcementModel = model('Announcement');
$param = $this->param;
$userInfo = $this->userInfo;
$user_id = $userInfo['id'];
if(!$param['announcement_id']) {
return resultArray(['error'=>'参数错误']);
}
$data = $announcementModel->getDataById($param['announcement_id']);
$adminTypes = adminGroupTypes($user_id);
//判断权限
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'])) {
header('Content-Type:application/json; charset=utf-8');
exit(json_encode(['code'=>102,'error'=>'没有权限']));
}
if (!$data) {
return resultArray(['error' => $announcementModel->getError()]);
}
//标记已读
$read_user_ids = stringToArray($data['read_user_ids']) ? array_merge(stringToArray($data['read_user_ids']),array($user_id)) : array($user_id);
$res = Db::name('OaAnnouncement')->where(['announcement_id' => $param['announcement_id']])->update(['read_user_ids' => arrayToString($read_user_ids)]);
return resultArray(['data' => $data]);
}
/**
* 编辑公告
* @author Michael_xu
* @return
*/
public function update()
{
$announcementModel = model('Announcement');
$param = $this->param;
if (!$param['announcement_id']) {
return resultArray(['error' => '参数错误']);
}
if (!trim($param['content'])) {
return resultArray(['error' => '请填写公告正文']);
}
# 时间设置
$param['start_time'] = !empty($param['start_time']) ? strtotime($param['start_time']) : time();
$param['end_time'] = !empty($param['end_time']) ? strtotime($param['end_time']) : time();
$res = $announcementModel->updateDataById($param, $param['announcement_id']);
if ($res) {
return resultArray(['data' => '编辑成功']);
} else {
return resultArray(['error' => $announcementModel->getError()]);
}
}
/**
* 删除公告
* @author Michael_xu
* @return
*/
public function delete()
{
$announcementModel = model('Announcement');
$param = $this->param;
$userInfo = $this->userInfo;
$param['user_id'] = $userInfo['id'];
$data = $announcementModel->delDataById($param);
if (!$data) {
return resultArray(['error' => $announcementModel->getError()]);
}
return resultArray(['data' => '删除成功']);
}
}