| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- <?php
-
- namespace app\admin\logic;
-
- use think\Db;
-
- class MessageLogic
- {
- private function label($label)
- {
- $where = '';
- switch ($label) {
-
- case '1': //任务
- $where = array('in', [1, 2, 3,27]);//
- break;
- case '2': //日志
- $where = array('in', [4, 5]);//27项目导入
- break;
- case '3': //办公审批
- $where = array('in', [6, 7, 8]);
- break;
- case '4': //公告
- $where = 9;
- break;
- case '5' : //日程
- $where = 10;
- break;
- case '6' : //客户管理
- $where = array('in', [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30]);
- break;
- case '4' :
- break;
- default:
- $where = array('in', [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]);//17181920
- }
- return $where;
- }
-
- public function getDataList($param)
- {
- $userId = $param['user_id'];
- unset($param['user_id']);
- //types 1表示已读 0表示未读
- if (isset($param['is_read'])) {
- $where['m.read_time'] = 0;
- }
- $where['m.to_user_id'] = $userId;
- $where['m.is_delete'] = ['eq', 1];
- $order = [
- 'm.send_time' => 'DESC',
- ];
- $where['m.type'] = $this->label($param['label']);
- if ($param['label'] == 4) {
- $where['m.type'] = 9;
- $list = db('admin_message')
- ->alias('m')
- ->join('__ADMIN_USER__ user', 'user.id=m.from_user_id', 'LEFT')
- ->where($where)
- ->field('m.*,user.realname as user_name')
- ->page($param['page'], $param['limit'])
- ->order($order)
- ->select();
- $dataCount = db('admin_message')
- ->alias('m')
- ->join('__ADMIN_USER__ user', 'user.id=m.from_user_id', 'LEFT')
- ->where($where)->count();
- } else {
- $list = db('admin_message')
- ->alias('m')
- ->join('__ADMIN_USER__ user', 'user.id=m.from_user_id', 'LEFT')
- ->where($where)
- ->field('m.*,user.realname as user_name')
- ->page($param['page'], $param['limit'])
- ->order($order)
- ->select();
- $dataCount = db('admin_message')
- ->alias('m')
- ->join('__ADMIN_USER__ user', 'user.id=m.from_user_id', 'LEFT')
- ->where($where)->count();
- }
- //1表示已读 0表示未读
- foreach ($list as $k => $v) {
- if ($v['read_time'] == 0) {
- $list[$k]['is_read'] = 0;
- } else {
- $list[$k]['is_read'] = 1;
- }
- $list[$k]['create_time'] = date('Y-m-d H:i:s', $v['send_time']);
- if ($v['type'] == 4) {
- $content = db('admin_comment')
- ->where(
- ['status' => 1,
- 'type_id' => $v['action_id'],
- 'type' => ['like', '%' . $v['controller_name' . '%']],
- 'user_id' => $v['from_user_id']
- ])
- ->select();
- $list[$k]['content'] = $content[$k]['content'];
- } elseif (in_array($v['type'], [7,12, 15,25])) {
- $content = db('admin_examine_record')->where(['types_id' => $v['action_id'], 'types' => ['like', '%' . $v['controller_name'] . '%'], 'check_user_id' => $v['from_user_id']])->field('content')->find();
- if ($content['content']) {
- $list[$k]['content'] = $content['content'];
- }
- }
- if ($v['type'] == 10 && $v['advance_time'] < time()) {
- $item = db('oa_event_notice')->where('id', $v['action_id'])->find();
- if ($item) {
- $type['value'] = $item['number'];
- $type['type'] = $item['noticetype'];
- $list[$k]['content'] = $type;
- $list[$k]['action_id'] = $item['event_id'];
- }
- } elseif($v['type'] == 10 && $v['advance_time'] > time()) {
- unset($list[$k]);
- }
- $time=time();
- if (in_array($v['type'], ['17', '18', '19', '20', '27'])) {
- $error_file_path = db('admin_import_record')->where('id', $v['action_id'])->find();
- $week = strtotime("+7 day", $error_file_path['create_time']);
- if ($time > (int)$week && $error_file_path['error_data_file_path'] != '') {
- $list[$k]['valid'] = 0;
- } else {
- $list[$k]['valid'] = 1;
- }
- $list[$k]['error_file_path'] = $error_file_path['error_data_file_path'];
- }
- }
- $data = [];
- $data['page']['list'] = $list;
- $data['page']['dataCount'] = $dataCount ?: 0;
- if ($param['page'] != 1 && ($param['page'] * $param['limit']) >= $dataCount) {
- $data['page']['firstPage'] = false;
- $data['page']['lastPage'] = true;
- } else if ($param['page'] != 1 && (int)($param['page'] * $param['limit']) < $dataCount) {
- $data['page']['firstPage'] = false;
- $data['page']['lastPage'] = false;
- } else if ($param['page'] == 1) {
- $data['page']['firstPage'] = true;
- $data['page']['lastPage'] = false;
- }
- return $data;
- }
-
- /**
- * 修改状态变为已读
- * @param $param
- * @return array
- * @throws \think\Exception
- * @throws \think\exception\PDOException
- */
- public function endMessage($param)
- {
- $where = [
- 'to_user_id' => $param['id'],
- 'message_id' => ['IN', (array)$param['message_id']],
- 'read_time' => 0,
- ];
- $list = db('admin_message')
- ->where($where)
- ->update(['read_time' => time()]);
- $data = [];
- $data['list'] = $list;
- return $data;
- }
-
- /**
- * 删除
- *
- * @param $messageId
- * @return array|int|string
- * @throws \think\Exception
- * @throws \think\exception\PDOException
- */
- public function delete($param)
- {
- $res = db('admin_message')->where(['message_id' => $param['message_id']])->find();
- if ($res['to_user_id'] != $param['user_id']) {
- return resultArray(['error' => '没有权限!']);
- }
- return db('admin_message')->where(['message_id' => $param['message_id']])->update(['is_delete' => 2]);
- }
-
- /**
- * 批量更新
- * @param $param
- * @return array
- * @throws \think\Exception
- * @throws \think\exception\PDOException
- */
- public function readAllMessage($param)
- {
-
- $where = [
- 'to_user_id' => $param['user_id'],
- 'read_time' => 0
- ];
- if ($param['label'] == 4) {
- $list = db('admin_message')
- ->where('type', 9)
- ->where($where)
- ->update(['read_time' => time()]);
- } else {
- $where['type'] = $this->label($param['label']);
- $list = db('admin_message')
- ->where($where)
- ->update(['read_time' => time()]);
- }
- $data = [];
- $data['list'] = $list;
- return $data;
- }
-
- /**
- * 批量删除已读
- * @param $param
- * @return array
- * @throws \think\Exception
- * @throws \think\exception\PDOException
- */
- public function clear($param)
- {
- $where = [];
- $where = [
- 'to_user_id' => $param['user_id'],
- 'is_delete' => 1,
- 'read_time' => ['neq', 0],
- ];
- $where['type'] = $this->label($param['label']);
- $list = db('admin_message')
- ->where($where)
- ->update(['is_delete' => 2]);
- $data = [];
- $data['list'] = $list;
- return $data;
- }
-
- public function unreadCount($param)
- {
- $userId = $param['user_id'];
- //types 1表示已读 0表示未读
- $where['read_time'] = ['=', 0];
- $label = '';
- $where['to_user_id'] = ['eq', $userId];
- $where['is_delete'] = ['eq', 1];
-
- $where['type'] = $this->label('');
- $allCount = db('admin_message')->where($where)->count();
- $where['type'] = $this->label(1);
- $taskCount = db('admin_message')->where($where)->count();
- $where['type'] = $this->label(2);
- $logCount = db('admin_message')->where($where)->count();
- $where['type'] = $this->label(3);
- $jxcCount = db('admin_message')->where($where)->count();
- $where['type'] = 9;
- $announceCount = db('admin_message')->where($where)->count();
- $where['type'] = $this->label(5);
- $eventCount = db('admin_message')->where($where)->where(['advance_time'=>['<', time()],'advance_time'=>['<>',0]])->count();
- $where['type'] = $this->label(6);
- $crmCount = db('admin_message')->where($where)->count();
-
- $data = [];
- $data['allCount'] = $allCount ?: 0;
- $data['taskCount'] = $taskCount ?: 0;
- $data['logCount'] = $logCount ?: 0;
- $data['examineCount'] = $jxcCount ?: 0;
- $data['announceCount'] = $announceCount ?: 0;
- $data['eventCount'] = $eventCount ?: 0;
- $data['crmCount'] = $crmCount ?: 0;
- return $data;
- }
- }
|