123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- <?php
- namespace app\api\controller;
- use think\Controller;
- use think\facade\Request;
- use think\facade\Db;
- use app\model\DailyWork as DailyWorkModel;
- use app\model\DailyWorkComment;
- use app\model\Employee;
- use app\model\Org;
- class DailyWork extends Base
- {
- /*
- * 发送日报抄送上级
- * 默认@抄送我的上级管理员
- */
- public function reporting_object($keyword)
- {
- $uid = $this->request->token['uid'];
- $Employee = Employee::with(['org'])->where(['uid'=>$uid])->find();
- if(!$Employee) return json(['code'=>1 , 'msg'=>'获取信息失败']);
- $where = [
- 'org_id' => $Employee['is_manager'] == 0 ? $Employee['org_id'] : $Employee['org']['pid'],
- 'is_manager' => 1
- ];
- $lastId = Employee::where($where)->column('id');
- if(!empty($keyword))
- {
- $condition[] = ['name','like','%'.$keyword.'%'];
- }
- if($Employee['org']['pid'] == 0){
- $condition[] = ['org_id' , '=' , $Employee['org']['id']];
- }else{
- $orgId = orgParentIds($Employee['org_id']);
- $condition[] = ['org_id','in',$orgId];
- }
- $condition[] = ['is_manager', '=', 1];
- $condition[] = ['state', '=', '在职'];
- $condition[] = ['grant_id', '=', '0'];
- $list = Employee::with(['user' => function ($query) {
- $query->field('id,headimgurl');
- }])->where('uid','<>',$uid)
- ->where($condition)
- ->group('id')
- ->field('id,name,uid')
- ->select()->toArray();
- $SortArray = [];
- foreach($list as $rs)
- {
- if ($rs['name']) {
- $letter = strtoupper(hanziInitials($rs['name']));
- $data = [
- 'id'=>$rs['id'],
- 'name'=>$rs['name'],
- 'uid'=>$rs['uid'],
- 'headimgurl'=>$rs['user']['headimgurl'],
- 'checked'=>in_array($rs['id'] , $lastId) ? true : false
- ];
- $SortArray[$letter][] = $data;
- }
- }
- //首字母排序
- ksort($SortArray);
- // 上次选择的审核人
- $last_where['uid'] = $uid;
- $last = (new DailyWorkModel())->where($last_where)->order('addtime desc')->findOrEmpty();
- if (!$last->isEmpty()) {
- $last_user = explode(',', $last['reporting_object']);
- } else {
- $last_user = [];
- }
- return json(['code'=>0 , 'msg'=>'抄送人员列表' , 'data'=>$SortArray, 'last'=> $last_user]);
- }
-
- /*
- * 提交日报
- * type: day每天 , week周 , month月
- */
- public function submit_daily()
- {
- $data = Request::only(['type' , 'current_work' , 'next_plan' , 'other_matters' , 'enclosure_file' , 'reporting_object','weixin_media'=>'','media_id'=>'']);
- $data['uid'] = $this->request->token['uid'];
- DailyWorkModel::insert($data);
- return json(['code'=>0 , 'msg'=>'汇报成功']);
- }
-
- /*
- * 我发送、收到的列表
- * option : sendout 发送 , received 收到
- */
- public function send_record($page , $option)
- {
- $uid = $this->request->token['uid'];
- $list = DailyWorkModel::with(['user' => function ($query) {
- $query->field('id,headimgurl');
- },'employee']);
-
- $option == 'received' ? $list->whereRaw("FIND_IN_SET($uid , reporting_object) and del=0") : $list->where(['uid'=>$uid , 'del'=>0]);
- $data = $list->field('id,uid,current_work,next_plan,addtime,unread_comments,type,reporting_object_view')->order('addtime','desc')->page($page , 20)->select()->toArray();
-
- $dateArray = [];
- foreach($data as &$rs)
- {
- //我收到的日报记录是否已经阅读
- $rs['view'] = in_array($uid , explode(',',$rs['reporting_object_view'])) ? true : false;
-
- $rs['date'] = date('Y-m-d',strtotime($rs['addtime']));
- $rs['time'] = date('H:i',strtotime($rs['addtime']));
- if($rs['date'] == date('Y-m-d')){
- $dateArray['今天'][] = $rs;
- }elseif($rs['date'] == date("Y-m-d",strtotime("-1 day"))){
- $dateArray['昨天'][] = $rs;
- }else{
- $dateArray[$rs['date']][] = $rs;
- }
- }
- return json(['code'=>0 , 'msg'=>'发送列表' , 'data'=>$dateArray]);
- }
-
- /*
- * 日报内容详情
- */
- public function details($id)
- {
- $uid = $this->request->token['uid'];
- $data = DailyWorkModel::with(['user' => function ($query) {
- $query->field('id,headimgurl');
- },'employee'])
- ->where(['id'=>$id , 'del'=>0])
- ->field('id,uid,type,current_work,next_plan,other_matters,enclosure_file,reporting_object,addtime,unread_comments,reporting_object_view')
- ->find();
- $reporting_object = Employee::with(['user' => function ($query) {
- $query->field('id,headimgurl');
- }])->where('uid','in',$data['reporting_object'])->field('name,uid')->select();
-
- //自己查看详情评论阅读数清零
- if($data['uid'] == $uid && $data['unread_comments'] > 0)
- {
- $data->unread_comments = 0;
- $data->save();
- }
- //抄送人查看详情浏览记录
- $rs = array_values(explode(',',$data['reporting_object']));
- $rsview = array_values(explode(',',$data['reporting_object_view']));
- if(in_array($uid , $rs) && !in_array($uid , $rsview))
- {
- $data->reporting_object_view = empty($data['reporting_object_view']) ? $uid : $data['reporting_object_view'].','.$uid;
- $data->save();
- }
-
- //汇报对象展示
- $data['reporting_object'] = $reporting_object;
-
- return json(['code'=>0 , 'msg'=>'详情' , 'data'=>$data]);
-
- }
-
- /*
- * 评论列表
- */
- public function comment_list()
- {
- $param = Request::only(['id','page']);
- $list = DailyWorkComment::with(['employee','joinemployee','user'])->where(['join_id'=>$param['id']])->field('id,uid,comment,pid,parent_uid,addtime')->page($param['page'] , 20)->order('addtime')->select();
- return json(['code'=>0 , 'msg'=>'评论列表' , 'data'=>$list]);
- }
-
- /*
- * 发送评论
- */
- public function send_comments()
- {
- $param = Request::only(['daily_work_id','parent_id','parent_uid','comment']);
- $work = DailyWorkModel::where(['id'=>$param['daily_work_id'] , 'del'=>0])->field('id,unread_comments')->find();
- if(!$work) return json(['code'=>1 , 'msg'=>'日报内容不存在']);
-
- if(empty($param['comment'])) return json(['code'=>1 , 'msg'=>'请输入评论内容']);
-
- $data = [
- 'uid' => $this->request->token['uid'],
- 'comment' => $param['comment'],
- 'join_id' => $param['daily_work_id'],
- 'pid' => $param['parent_id'],
- 'parent_uid' => $param['parent_uid']
- ];
- DailyWorkComment::insert($data);
-
- //评论时日报评论数增加
- $work->unread_comments += 1;
- $work->save();
-
- return json(['code'=>0 , 'msg'=>'评论成功']);
- }
- }
- ?>
|