model) { $this->model = new \app\common\Model\Events(); } } /** * 显示资源日程 * @return void * @throws DataNotFoundException * @throws ModelNotFoundException * @throws DbException */ public function index() { $where = []; $code = Request::post('projectCode'); if ($code) { $where[] = ['project_code', '=', $code]; } $where[] = ['deleted', '=', 0]; $list = $this->model->_list($where); // $eventMember = new EventsMember(); // $list = $eventMember->_list($where); if ($list['list']) { foreach ($list['list'] as &$item) { $item['memberList'] = []; $item['projectName'] = ''; $members = EventsMember::where(['events_code' => $item['code']])->order('is_owner desc, status desc, id asc')->all(); if ($members) { $item['memberList'] = $members; } $project = \app\common\Model\Project::where('code', $item['project_code'])->field('name')->find(); if ($project) { $item['projectName'] = $project['name']; } } } $this->success('', $list); } public function myList() { $where = []; $code = Request::post('projectCode'); if ($code) { $where[] = ['project_code', '=', $code]; } $status = Request::post('status', -1); $where[] = ['deleted', '=', 0]; $where[] = ['end_time', '>=', nowTime()]; $memberWhere = [['member_code', '=', getCurrentMember()['code']]]; if ($status != -1) { $memberWhere[] = ['status', '=', $status]; } else { $memberWhere[] = ['status', '<>', 2]; } $memberCode = getCurrentMember()['code']; $eventCodes = EventsMember::where($memberWhere)->column('events_code'); $where[] = ['code', 'in', $eventCodes]; $list = $this->model->_list($where); if ($list['list']) { foreach ($list['list'] as &$item) { $item['memberList'] = []; $item['projectName'] = ''; $item['waitConfirm'] = 1; $waitConfirm = EventsMember::where(['events_code' => $item['code'], 'member_code' => $memberCode, 'status' => 0])->find(); if (!$waitConfirm) { $item['waitConfirm'] = 0; } $members = EventsMember::where(['events_code' => $item['code']])->order('is_owner desc, status desc, id asc')->all(); if ($members) { $item['memberList'] = $members; } $project = \app\common\Model\Project::where('code', $item['project_code'])->field('name')->find(); if ($project) { $item['projectName'] = $project['name']; } } } $this->success('', $list); } public function confirmList() { $where = []; $code = Request::post('projectCode'); if ($code) { $where[] = ['project_code', '=', $code]; } $where[] = ['deleted', '=', 0]; $eventCodes = EventsMember::where(['status' => 0, 'member_code' => getCurrentMember()['code']])->column('events_code'); $where[] = ['code', 'in', $eventCodes]; $list = $this->model->_list($where); if ($list['list']) { foreach ($list['list'] as &$item) { $item['memberList'] = []; $item['projectName'] = ''; $members = EventsMember::where(['events_code' => $item['code']])->all(); if ($members) { $item['memberList'] = $members; } $project = \app\common\Model\Project::where('code', $item['project_code'])->field('name')->find(); if ($project) { $item['projectName'] = $project['name']; } } } $this->success('', $list); } /** * 新增 * @param Request $request * @return void * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public function save(Request $request) { $data = $request::only('project_code,title,description,begin_time,end_time,all_day,position'); if (!$request::post('title')) { $this->error("请填写日程名称"); } $result = $this->model->createData($data['project_code'], $data['title'], $data['description'], $data['position'], $data['all_day'], getCurrentOrganizationCode(), $data['begin_time'], $data['end_time'], getCurrentMember()['code']); if (!isError($result)) { \app\common\Model\Events::eventsHook(getCurrentMember()['code'], $result['code'], 'create'); $memberList = $request::post('member_list', ""); if ($memberList) { $memberCode = getCurrentMember()['code']; $memberList = json_decode($memberList, JSON_UNESCAPED_UNICODE); foreach ($memberList as $item) { EventsMember::inviteMember($item, $result['code'], $item == $memberCode ? 1 : 0); } } $this->success('添加成功', $result); } $this->error($result['msg']); } /** * 保存 * @param Request $request * @return void * @throws DataNotFoundException * @throws ModelNotFoundException * @throws DbException */ public function edit(Request $request) { $data = $request::only('project_code,title,description,begin_time,end_time,all_day,position'); $eventsCode = $request::param('code'); if (isset($data['title']) && !$data['title']) { $this->error("请填写日程名称"); } if (!$eventsCode) { $this->error("请选择一个日程"); } $events = $this->model->where(['code' => $eventsCode])->field('id,project_code')->find(); if (!$events) { $this->error("该日程已失效"); } $result = $this->model->_edit($data, ['code' => $eventsCode]); if ($result) { $eventsMemberCodes = EventsMember::where(['events_code' => $eventsCode])->column('member_code'); $memberList = $request::post('member_list', ""); if ($memberList) { $memberCode = getCurrentMember()['code']; $memberList = json_decode($memberList, JSON_UNESCAPED_UNICODE); foreach ($memberList as $item) { if (!in_array($item, $eventsMemberCodes)) { EventsMember::inviteMember($item, $eventsCode, $item == $memberCode ? 1 : 0); } } } if ($eventsMemberCodes) { foreach ($eventsMemberCodes as $item) { if (!in_array($item, $memberList)) { EventsMember::removeMember($item, $eventsCode); } } } $member = getCurrentMember(); $type = 'title'; if (isset($data['title'])) { $type = 'title'; } if (isset($data['description'])) { $type = 'content'; if (!$data['description']) { $type = 'clearContent'; } } if (isset($data['begin_time'])) { $type = 'setBeginTime'; if (!$data['begin_time']) { $type = 'clearBeginTime'; } } if (isset($data['end_time'])) { $type = 'setEndTime'; if (!$data['end_time']) { $type = 'clearEndTime'; } } \app\common\Model\Events::eventsHook($member['code'], $eventsCode, $type); $this->success(''); } $this->error("操作失败,请稍候再试!"); } /** * 详情 * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public function read() { $code = Request::post('eventsCode'); $events = $this->model->where(['code' => $code])->field('id', true)->find(); if ($events) { $events['memberList'] = []; $members = EventsMember::where(['events_code' => $events['code']])->all(); if ($members) { $events['memberList'] = $members; } } $this->success('', $events); } public function confirmJoin() { $eventsCode = Request::post('eventsCode'); $status = Request::post('status'); $memberCode = getCurrentMember()['code']; $result = EventsMember::confirmJoin($memberCode, $eventsCode, $status); if (isError($result)) { $this->error($result['msg'], $result['errno']); } $this->success(); } public function removeMember() { $eventsCode = Request::post('eventsCode'); $memberCode = Request::post('memberCode'); $result = EventsMember::removeMember($memberCode, $eventsCode); if (isError($result)) { $this->error($result['msg'], $result['errno']); } $this->success(); } public function inviteMember() { $eventsCode = Request::post('eventsCode'); $memberCode = Request::post('memberCode'); $result = EventsMember::inviteMember($memberCode, $eventsCode, 0); if (isError($result)) { $this->error($result['msg'], $result['errno']); } $this->success(); } public function getEventsListByCalendar() { $date = Request::post('date'); $dateTimestamp = strtotime($date); $month = DateService::unixtime('month', -1, 'begin', date('Y', $dateTimestamp), date('m', $dateTimestamp)); $month2 = DateService::unixtime('month', 2, 'begin', date('Y', $dateTimestamp), date('m', $dateTimestamp)); $begin = date('Y-m-d H:i:s', $month); $end = date('Y-m-d H:i:s', $month2); $memberCodes = Request::post('memberCodes'); if ($memberCodes) { $memberCodes = json_decode($memberCodes, JSON_UNESCAPED_UNICODE); } $where[] = ['deleted', '=', 0]; $memberWhere = [['member_code', 'in', $memberCodes]]; $memberWhere[] = ['status', '<>', 2]; $eventCodes = EventsMember::where($memberWhere)->column('events_code'); $where[] = ['code', 'in', $eventCodes]; // $list = $this->model->_list($where); $dateRange = DateService::getDateFromRange($begin, $end); $rows = intval(Request::param('pageSize', cookie('pageSize'))); if (!$rows) { $rows = 10; } cookie('pageSize', $rows); $list = $this->model->where($where)->where(function ($query) use ($begin, $end) { $where1 = [['begin_time', '<=', $begin], ['end_time', '>=', $begin]]; $where2 = [['begin_time', '>=', $begin], ['end_time', '<=', $end]]; $where3 = [['begin_time', '<=', $end], ['end_time', '>=', $end]]; $query->whereOr(function($query) use ($where1){ $query->where($where1); })->whereOr(function ($query) use ($where2, $where3) { $query->where($where2); })->whereOr(function ($query) use ($where3) { $query->where($where3); }); })->select(); // $list = $page->all(); $newList = []; $memberCode = getCurrentMember()['code']; $dateRangeList = []; if ($dateRange) { foreach ($dateRange as $dateItem) { if (!isset($dateRange[$dateItem])) { $dateRangeList[$dateItem] = []; } if ($list) { foreach ($list as &$item) { $item['visible'] = false; $item['visibleInner'] = false; $item['visibleMore'] = false; $item['waitConfirm'] = 1; $item['myStatus'] = 0; $waitConfirm = EventsMember::where(['events_code' => $item['code'], 'member_code' => $memberCode])->find(); if ($waitConfirm) { if ($waitConfirm['status'] != 0) { $item['waitConfirm'] = 0; } $item['myStatus'] = $waitConfirm['status']; }else{ $item['waitConfirm'] = 0; } $item['memberList'] = []; $members = EventsMember::where(['events_code' => $item['code']])->order('is_owner desc, status desc, id asc')->all(); if ($members) { $item['memberList'] = $members; } if (($dateItem >= date('Y-m-d', strtotime($item['begin_time']))) && ($dateItem <= date('Y-m-d', strtotime($item['end_time'])))) { $dateRangeList[$dateItem][] = $item; } } } } } $result = ['list' => $dateRangeList, 'dateRange' => $dateRange]; $this->success('', $result); } /** * 日程日志 * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public function _getEventsLog() { $code = Request::post('eventsCode'); $showAll = Request::post('all', 0); $where = []; $where[] = ['source_code', '=', $code]; $eventsModel = new EventsLog(); if ($showAll) { $list = []; $list['list'] = $eventsModel->where($where)->order('id asc')->select()->toArray(); $list['total'] = count($list['list']); } else { $list = $eventsModel->_list($where, 'id desc'); if ($list['list']) { $list['list'] = array_reverse($list['list']); } } if ($list['list']) { foreach ($list['list'] as &$item) { $member = Member::where(['code' => $item['member_code']])->field('id,name,avatar,code')->find(); !$member && $member = []; $item['member'] = $member; } } $this->success('', $list); } /** * 删除日程 * @return void */ public function delete() { $code = Request::post('eventsCode'); if (!$code) { $this->error("请选择一个日程"); } $result = $this->model->deleteEvents($code); if (isError($result)) { $this->error($result['msg'], $result['errno']); } $this->success(); } }