123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- <?php
- namespace app\api\controller;
- use think\facade\Request;
- use app\model\DailyTasks as DailyTasksModel;
- use app\model\Org;
- use app\model\Employee;
- use app\model\User;
- use app\model\MaterialCase;
- use app\model\MaterialEvidence;
- use app\model\Article;
- use app\model\Video;
- use app\model\DailyWechatArticle;
- class DailyTasks extends Base
- {
- //日常任务列表
- public function index(){
- $token = $this->request->token;
- $employee_id = $token['employee_id'];
- $org_id = $token['org_id'];
- $date = date('Y-m-d H:i:s');
- $param = Request::only(['type'=>'','page'=>1,'limit'=>6]);
- $w[] = ['root_id','=',$token['root_org']];
- $w[] = ['del','=',0];
- $w[] = ['end_date','>=',$date];
-
- if ($param['type']) {
- $param['type'] = $param['type']=='materialEvidence' ? 'evidencelist' : $param['type'];
- $param['type'] = $param['type']=='materialCase' ? 'material_case' : $param['type'];
- $w[] = ['type','=',$param['type']];
- }
- $list = DailyTasksModel::with(['content'])->whereRaw("(!FIND_IN_SET($employee_id,employee_ids) or employee_ids is null or employee_ids = '')")->whereRaw("FIND_IN_SET($org_id,org_ids)")->where($w)->page($param['page'],$param['limit'])->order('id desc')->select()->toArray();
- // $type_arr = ['material_case'=>'MaterialCase','evidencelist'=>'MaterialEvidence','video'=>'Video','article'=>'Article','wxshowlist'=>'abc'];
- $type_name = ['material_case'=>'装修案例','evidencelist'=>'客户见证','video'=>'视频素材','article'=>'图文素材','wxshowlist'=>'朋友圈'];
- $data = [];
- foreach ($list as $k => $v) {
- $save = [];
- $save['title'] = $save['con'] = $save['img'] = '';
- $save['end_date'] = $v['end_date'];
- $save['org_ids'] = $v['org_ids'];
- if ($v['type']=='material_case') {
- $save['title'] = $v['content']['title'];
- $save['con'] = strip_tags($v['content']['desc']);
- $save['img'] = $v['content']['cover_img'] ? [$v['content']['cover_img']] : [];
- }elseif ($v['type']=='evidencelist') {
- $save['title'] = $v['content']['title'];
- $save['con'] = strip_tags($v['content']['desc']);
- $save['img'] = $v['content']['pics'] ? $v['content']['pics'] : [];
- }elseif ($v['type']=='video') {
- $save['title'] = $v['content']['title'];
- $save['con'] = strip_tags($v['content']['description']);
- $save['img'] = $v['content']['video_url'] ? [$v['content']['video_url'].'?x-oss-process=video/snapshot,t_100,f_jpg,w_500,m_fast'] : [];
- }elseif ($v['type']=='article') {
- $save['title'] = $v['content']['title'];
- $save['con'] = strip_tags($v['content']['content']);
- $save['img'] = $v['content']['cover_img'] ? [$v['content']['cover_img']] : [];
- }elseif ($v['type']=='wxshowlist') {
- // $save['title'] = $v['content']['title'];//朋友圈没有标题
- $save['con'] = strip_tags($v['content']['content']);
- // 视频
- if ($v['content']['type']==1) {
- $img = $v['content']['picture'] ?: [];
- foreach ($img as $k2 => $v2) {
- $img[$k2] = $v2.'?x-oss-process=video/snapshot,t_100,f_jpg,w_500,m_fast';
- }
- $save['img'] = $img;
- }elseif ($v['content']['type']==2) {//图片
- $save['img'] = $v['content']['picture'] ? $v['content']['picture'] : [];
- }elseif ($v['content']['type']==3) {
- }
- }
- $save['id'] = $v['id'];
- if ($v['end_date'].' 23:59:59'>date('Y-m-d H:i:s')) {
- $save['state'] = '进行中';
- }else{
- $save['state'] = '已结束';
- }
- $unix = strtotime($v['end_date'])-time();
- $day = $this->date_switch($unix,$v['end_date']);
- $save['end_date'] = $day[0];
- $save['color'] = $day[1];
- //
- $save['type_name'] = $type_name[$v['type']];
- $orgids = $v['org_ids'] ? explode(',',$v['org_ids']) : [];
- $w1 = [];
- $w1[] = ['org_id','in',$orgids];
- $w1[] = ['root_id','=',$token['root_org']];
- $w1[] = ['state','=','在职'];
- $w1[] = ['uid','>',0];
- $eids = Employee::where($w1)->column('id');
- $save['all_count'] = count($eids);
- $w2 = [];
- $eids = $v['employee_ids'] ? explode(',',$v['employee_ids']) : [];
- $w2[] = ['root_id','=',$token['root_org']];
- $w2[] = ['id','in',$eids];
- $w2[] = ['state','=','在职'];
- $w2[] = ['uid','>',0];
- $save['count'] = Employee::where($w2)->count();
- $data[] = $save;
- }
- $count = DailyTasksModel::where($w)->whereRaw("(!FIND_IN_SET($employee_id,employee_ids) or employee_ids is null or employee_ids = '')")->whereRaw("FIND_IN_SET($org_id,org_ids)")->count();
- $w3[] = ['root_id','=',$token['root_org']];
- $w3[] = ['del','=',0];
- $W3[] = ['end_date','<',$date];
- //逾期
- $overdue = DailyTasksModel::where($w3)->whereRaw("(!FIND_IN_SET($employee_id,employee_ids) or employee_ids is null or employee_ids = '')")->whereRaw("FIND_IN_SET($org_id,org_ids)")->count();
- //已完成
- $w4[] = ['root_id','=',$token['root_org']];
- $w4[] = ['del','=',0];
- $complete = DailyTasksModel::where($w4)->whereRaw("(FIND_IN_SET($employee_id,employee_ids))")->count();
- return json(['code' => 0, 'data' => $data, 'count' =>$count,'overdue'=>$overdue,'complete'=>$complete]);
- }
- private function date_switch($time,$date)
- {
- $dur = $time;
- $date = date('Y-m-d',strtotime($date));
- if($dur <= 0){
- return ['',''];
- }elseif($dur < 60){
- $s = $dur.'秒内';
- return [$s,'red'];
- }elseif($dur < 3600){
- $s = floor($dur/60).'分钟内';
- return [$s,'red'];
- }elseif($dur < 86400){
- $s = floor($dur/3600).'小时内';
- return [$s,'red'];
- }elseif($dur < 2678400){
- $day = floor($dur/86400);
- if ($day==1) {
- $s = floor($dur/86400).'天内';
- return [$s,'red'];
- } elseif($day<=3) {
- $s = floor($dur/86400).'天内';
- return [$s,'grey'];
- }else{
- $s = floor($dur/86400).'天内';
- return [$date,'grey'];
- }
- // return floor($dur/86400).'天内';
- }elseif($dur < 2678400*12){
- $s = floor($dur/2678400).'月内';
- return [$date,'grey'];
- }else{
- $s = floor($dur/2678400/12).'年内';
- return [$date,'grey'];
- }
- }
- //id 详情
- public function read()
- {
- $id = input('id',0);
- $token = $this->request->token;
- $w[] = ['root_id','=',$token['root_org']];
- $w[] = ['id','=',$id];
- $row = DailyTasksModel::where($w)->findOrEmpty();
- $wid = 0;
- if ($row->isEmpty()) return json(['code' => 1, 'data' => '数据不存在', 'msg' => '数据不存在']);
- if ($row->type == 'material_case') {
- $info = MaterialCase::where('id',$row->con_id)->field('id,title,cover_img,desc')->find();
- $info->img = $info->cover_img;
- }elseif ($row->type == 'evidencelist') {
- $info = MaterialEvidence::where('id',$row->con_id)->field('id,title,pics,desc')->find();
- $info->img = $info->pics;
- }elseif ($row->type == 'article') {
- $info = Article::where('id',$row->con_id)->field('id,title,cover_img,content')->find();
- $info->img = $info->cover_img;
- $info->desc = $info->content;
- }elseif ($row->type=='video') {
- $info = Video::where('id',$row->con_id)->field('id,title,cover,description')->find();
- $info->img = $info->cover;
- $info->desc = $info->description;
- }elseif ($row->type=='wxshowlist') {
- $info = DailyWechatArticle::where('id',$row->con_id)->field('id,content,picture,type')->find();
- $info->desc = $info->content;
- $img = $info->picture ?: [];
- if ($info->type==1) {
- foreach ($img as $k2 => $v2) {
- $img[$k2] = $v2.'?x-oss-process=video/snapshot,t_100,f_jpg,w_500,m_fast';
- }
- $info->img = $img;
- }elseif ($info->type==2) {
- $info->img = $img;
- }else{
- $info->img = $img;
- }
- $wid = $info->id;
- }
- $row->img = is_array($info->img) ? $info->img : ($info->img ? [$info->img] : []);
- $row->con = $info->title;
- $row->desc = strip_tags(str_replace("<br>","",$info->desc));
- $row->wid = $wid;
- $org_ids = $row->employee_ids ? explode(',',$row->employee_ids) : [];
- $w1[] = ['id','in',$org_ids];
- $w1[] = ['state','=','在职'];
- $w1[] = ['uid','>',0];
- $row->employee = Employee::with(['userImg'=>function($query){
- $query->visible(['headimgurl']);
- }])->where($w1)->field('id,name,org_id,uid')->select()->toArray();
- $row->type = $row->type=='evidencelist' ? 'materialEvidence' : $row->type;
- $row->type = $row->type=='material_case' ? 'materialCase' : $row->type;
-
- $row->employee_count = count($row->employee);
- return json(['code' => 0, 'data' => $row]);
- }
- //完成任务
- public function sign(){
- $id = input('id',0);
- $token = $this->request->token;
- // $token['root_org'] = 23;
- // $token['employee_id'] = 25;
- $w[] = ['root_id','=',$token['root_org']];
- $w[] = ['id','=',$id];
- $row = DailyTasksModel::where($w)->findOrEmpty();
- if ($row->isEmpty()) return json(['code' => 1, 'data' => '任务不存在', 'msg' => '任务不存在']);
- $org_ids = $row->org_ids ? explode(',',$row->org_ids) : [];
- $w1[] = ['org_id','in',$org_ids];
- $w1[] = ['state','=','在职'];
- $w1[] = ['uid','>',0];
- $eids = Employee::where($w1)->column('id');
- $o_eids = $row->employee_ids ? explode(',',$row->employee_ids) : [];
- if(!in_array($token['employee_id'],$eids)) return json(['code' => 1, 'data' => '任务未指派', 'msg' => '任务未指派']);
- if(in_array($token['employee_id'],$o_eids)) return json(['code' => 1, 'data' => '任务已完成', 'msg' => '任务已完成']);
- $o_eids[] = $token['employee_id'];
- $o_eids = array_filter(array_unique($o_eids));
- $grawth = round(count($o_eids)/count($eids)*100,2);
- $row->employee_ids = implode(',',$o_eids);
- $row->grawth = $grawth;
- $row->save();
- return json(['code' => 1, 'data' => '任务完成', 'msg' => '任务完成']);
- }
- }
|