public function fendan_dpt_auto_task() { // $orderList = $this->Baoming->find("all", ['conditions' => ['is_fp' => 0, 'zx_tuijian' => 1], 'fields' => ['id', 'ownercs', 'area']]); /* $userRedisList = $this->Redis->get("auto_remind_userRedisList"); print_r(json_decode($userRedisList));exit;*/ /* $this->Redis->del("auto_remind_userRedisList"); $this->Redis->del("auto_remind_userAllotList"); exit;*/ $orderList = $this->Baoming->findAsPlus('all', array('conditions' => array( 'BaomingPlus.track_is_fp' => 0, 'Baoming.is_qy !=' => 1, 'Baoming.is_fp' => 1, 'Baoming.mes_bak' => 5, 'Baoming.allow' => 0, 'Baoming.status' => array(0,1), 'Baoming.status_trace' => array(0,1), 'Baoming.invalid' => array(0,2), 'BaomingPlus.is_wh !=' => 1, 'Baoming.lf_cs' => NULL, 'BaomingPlus.is_old_fpd' => 0, 'OR' => array( 'Baoming.can_not_go' => 1, 'Baoming.stage >=' => 1, 'Baoming.ck_nums >= Baoming.limits + BaomingPlus.cxfp_limiits', )),'fields'=>array('Baoming.id','Baoming.lf_time','Baoming.fdtime'))); // print_r($orderList);exit; if (empty($orderList)) { exit("无可分配数据!"); } // $userList = $this->Member->find("all", ['conditions' => ['status' => 0]]); //根据所有待分配的客服信息 $userList = $this->Member->find('all', array('conditions' => array('js_type' => 37, 'fp_type' => 1, 'status' => 0), 'fields' => array('id','fp_nums', 'is_plus_minus','lf_time_interval'), 'order' => 'id ASC')); if (empty($userList)) { exit("无可分配客服!"); } //print_r($userList);exit; $userRedisList = $this->Redis->get("auto_remind_userRedisList"); $userRedisList = $this->object2array(json_decode($userRedisList)); // 每位客服分配总次数 $userAllAllotList = $this->Redis->get("auto_remind_userAllotList"); $userAllAllotList = $this->object2array(json_decode($userAllAllotList)); foreach ($userList as $uk => $uv) { if (empty($userRedisList[$uv['Member']['id']])) { $userRedisList[$uv['Member']['id']] = ['limit' => $uv['Member']['fp_nums'], 'alloted' => 0]; } if (empty($userAllAllotList[$uv['Member']['id']])) { $userAllAllotList[$uv['Member']['id']] = 0; } } /* echo "<pre>";print_r($userRedisList);exit;*/ /* echo "<pre>"; print_r($userAllAllotList);exit;*/ foreach ($orderList as $key => $val) { // 计算量房间隔时间 $lf_time_arr = strtotime($val['Baoming']['lf_time'] != '0000-00-00' ? $val['Baoming']['lf_time']:''); //分单时间 $fd_time_arr = strtotime(substr($val['Baoming']['fdtime'],0,10)); if( !empty($lf_time_arr) && !empty($fd_time_arr) && $lf_time_arr > $fd_time_arr ){ $lf_jg_time = floor( ($lf_time_arr - $fd_time_arr) / 86400); //天数 }else{ $lf_jg_time = 0; } // $userList = $this->Member->find('all', array('conditions' => array('js_type' => 37, 'fp_type' => 1, 'status' => 0), 'fields' => array('id','fp_nums', 'is_plus_minus','lf_time_interval'), 'order' => 'id ASC')); $conditions['js_type'] = 37; $conditions['fp_type'] = 1; $conditions['status'] = 0; $userListArr = $this->Member->find('all', array('conditions' => $conditions), 'fields' => array('id','fp_nums', 'is_plus_minus','lf_time_interval'), 'order' => 'id ASC')); // 面积符合的 foreach ($userList as $k => $v) { $updateSave = []; if ( ( ($v['Member']['is_plus_minus'] == 1 && $lf_jg_time >= $v['Member']['lf_time_interval']) || ($v['Member']['is_plus_minus'] == 2 && $lf_jg_time <= $v['Member']['lf_time_interval'] ) ) && (array_search(max($userAllAllotList), $userAllAllotList) != $v['Member']['id'] || count($userAllAllotList) <= 1) && $userRedisList[$v['Member']['id']]['alloted'] < $userRedisList[$v['Member']['id']]['limit']) { $userRedisList[$v['Member']['id']]['alloted'] ++; if ($userRedisList[$v['Member']['id']]['alloted'] == $userRedisList[$v['Member']['id']]['limit']) { $userRedisList[$v['Member']['id']]['alloted'] = 0; $userAllAllotList[$v['Member']['id']] ++; } $updateSave = ['id' => $val['Baoming']['id'], 'ownercs' => $v['Member']['id']]; } else { continue; } if (!empty($updateSave)) { echo "<<<<<<<客户编号:" . $v['Member']['id'] . ">>>>>业主编号:" . $val['Baoming']['id']."<br/>"; } break; } # 顺序分配 if (empty($updateSave)) { foreach ($userList as $k => $v) { if (array_search(min($userAllAllotList), $userAllAllotList) == $v['Member']['id'] && $userRedisList[$v['Member']['id']]['alloted'] < $userRedisList[$v['Member']['id']]['limit']) { $userRedisList[$v['Member']['id']]['alloted'] ++; } else { continue; } if ($userRedisList[$v['Member']['id']]['alloted'] == $userRedisList[$v['Member']['id']]['limit']) { $userRedisList[$v['Member']['id']]['alloted'] = 0; $userAllAllotList[$v['Member']['id']] ++; } $updateSave = ['id' => $val['Baoming']['id'], 'ownercs' => $v['Member']['id']]; echo "<<<<<<<客户编号:" . $v['Member']['id'] . ">>>>>业主编号:" . $val['Baoming']['id']."<br/>"; break; } } /* print_r($userRedisList);*/ // $this->Baoming->save($updateSave); } $this->Redis->setex("auto_remind_userRedisList", (strtotime(date("Y-m-d") . "23:59:59") - time()), json_encode($userRedisList)); $this->Redis->setex("auto_remind_userAllotList", (strtotime(date("Y-m-d") . "23:59:59") - time()), json_encode($userAllAllotList)); }