db, $this->def); return $CacheM -> GetCache($whereData); } /** * @desc 新增业务员任务 * @param array $data * @return array */ public function addWaitingTask($data = array()) { if (!empty($data)) { if(empty($data['auid']) || empty($data['uid']) || empty($data['comid'])){ $return = array( 'errcoder' => 8, 'msg' => '参数错误,请重试!' ); } if (empty($data['type'])) { $return = array( 'errcoder' => 8, 'msg' => '请选择任务类型!' ); } if (empty($data['stime']) && $data['type']=="22") { $return = array( 'errcoder' => 8, 'msg' => '请填写任务时间!' ); } if (empty($data['content'])) { $return = array( 'errcoder' => 8, 'msg' => '请填写任务描述!' ); } $auid = intval($data['auid']); $uid = intval($data['uid']); $comid = intval($data['comid']); $value = array( 'auid' => $auid, 'uid' => $uid, 'comid' => $comid, 'type' => intval($data['type']), 'content' => $data['content'], 'ctime' => time(), 'status' => '1', ); if($data['stime']){ $value['stime'] = $data['stime']; } $cache = $this -> GetCache(array('crm')); $return['id'] = $this->insert_into('crm_work_plan', $value); $lContent = '【添加计划任务】任务(ID:'.$return['id'].'),任务类型:'.$cache['crmclass_name'][$data['type']]; $this->addCrmLog($lContent, '5', $comid, $auid); $return['errcode'] = $return['id'] ? 9 : 8; $msg = $return['id'] ? '成功' : '失败'; $return['msg'] = '任务新建'.$msg; return $return; } } /** * @desc 查询任务数量 * @param array $whereData * @return array|bool|false|string|void */ function getTaskNum($whereData = array()) { return $this -> select_num('crm_work_plan', $whereData); } /** * @desc 查询任务记录 * @param array $where * @param array $data * @return array|bool|false|string|void */ function getTaskInfo($where = array(), $data = array()) { $select = $data['field'] ? $data['field'] : '*'; $Info = $this -> select_once('crm_work_plan', $where, $select); if($Info['stime']){ $Info['stime_n'] = date('Y-m-d H:m:s',$Info['stime']); } return $Info; } /** * @desc 查询任务记录 * @param array $where * @param array $data * @return array|bool|false|string|void */ function getTaskList($where = array(), $data = array()) { $select = $data['field'] ? $data['field'] : '*'; $taskList = $this -> select_all('crm_work_plan', $where, $select); $auids = $uids = $comids = array(); if (!empty($taskList) && isset($data['utype']) && $data['utype'] == 'crm') { foreach ($taskList as $value){ $comids[] = $value['comid']; $uids[] = $value['uid']; $auids[] = $value['auid']; } $auids = array_unique(array_merge($auids, $uids)); require_once 'company.model.php'; $companyM = new company_model($this->db, $this->def); $list = $companyM -> getList(array('uid' => array('in', pylode(',', $comids))),array('field' => '`uid`, `name`')); $list = $list['list']; $awhere = array( 'uid' => array('in', pylode(',', $auids)) ); $ausers = $this -> select_all('admin_user', $awhere, '`uid`,`name`,`crm_uid`'); $weekarray = array('日','一','二','三','四','五','六'); foreach ($taskList as $k => $v){ if($v['stime']!=''){ $stime = date('n月j日',$v['stime']).'(周'.$weekarray[date("w",$v['stime'])].')'.date('G点',$v['stime']); $sfen = intval(date('i',$v['stime'])); if($sfen){ $stime .= $sfen.'分'; }else{ $stime .= '整'; } $taskList[$k]['stime_n'] = $stime; if ($v['stime'] >= strtotime(date('Y-m-d'))) { $taskList[$k]['taskDay'] = format_datetime($v['stime'], 2, 2, ''); }else{ $taskList[$k]['taskDay'] = format_datetime($v['stime'], 2, 1, ''); } } if($v['ctime']){ $ctime = date('n月j日',$v['ctime']).'(周'.$weekarray[date("w",$v['ctime'])].')'.date('G点',$v['ctime']); $cfen = intval(date('i',$v['ctime'])); if($cfen){ $ctime .= $cfen.'分'; }else{ $ctime .= '整'; } $taskList[$k]['ctime_n'] = $ctime; if ($v['ctime'] >= strtotime(date('Y-m-d'))) { $taskList[$k]['addDay'] = format_datetime($v['ctime'], 2, 2, ''); }else{ $taskList[$k]['addDay'] = format_datetime($v['ctime'], 2, 1, ''); } } foreach ($list as $uv){ if ($v['comid'] == $uv['uid']) { $taskList[$k]['name'] = $uv['name']; $taskList[$k]['crm_uid'] = $uv['crm_uid']; } } foreach ($ausers as $av){ if ($v['uid'] == $av['uid']) { $taskList[$k]['cname'] = $av['name']; } if ($v['auid'] == $av['uid']) { $taskList[$k]['aname'] = $av['name']; } } } } return $taskList; } /** * @desc 更新任务 * @param array $data :tValue->更新数据 :auid 业务员uid * @param array $where * @return bool */ function upTask($data = array(), $where = array()) { if(!empty($data)){ $tValue = $data['tValue']; $result = $this -> update_once('crm_work_plan', $tValue, $where); if($result){ $auid = $data['auid']; $status_n = $tValue['status'] == '2' ? '完成' : $tValue['status'] == '3' ? '未完成 ' : '取消'; $lContent = "业务员(UID:".$auid."),标记任务ID:".$where['id']."状态 -> ".$status_n; $this->addCrmLog($lContent, '5', '', $auid); } } return $result; } /** * @desc 删除任务 * @param array $where * @param array $data * @return bool */ function delTask($where = array(), $data = array()) { $result = $this->delete_all('crm_work_plan', $where, ''); if($result){ $lContent = "业务员(UID:".$data['auid'].")删除任务ID:".$where['id']; $this->addCrmLog($lContent, '5', '', $data['auid']); } return $result; } /** * @desc 新增业务员跟进记录 * @param array $data * @return bool */ public function addConcern($data = array()) { if (!empty($data)) { $value = array( 'uid' => intval($data['uid']), 'comid' => intval($data['comid']), 'time' => strtotime($data['time']), 'type' => intval($data['type']), 'content' => $data['content'], 'status' => intval($data['status']), 'note' => $data['note'], 'atime' => time() ); $nid = $this -> insert_into('crmnew_concern', $value); if ($nid) { $this->update_once('company', array('isfollow' => 1), array('uid' => $data['comid'])); } return $nid; } } /** * @desc 查询跟进记录数量 * @param array $whereData * @return array|bool|false|string|void */ function getConcernNum($whereData = array()) { return $this -> select_num('crmnew_concern', $whereData); } /** * @desc 查询跟进记录 * @param array $where * @param array $data * @return array|bool|false|string|void */ function getConcernInfo($where = array(), $data = array()) { $select = $data['field'] ? $data['field'] : '*'; $concernInfo = $this -> select_once('crmnew_concern', $where, $select); return $concernInfo; } /** * @desc 查询跟进记录 * @param array $where * @param array $data * @return array|bool|false|string|void */ function getConcernList($where = array(), $data = array()) { $select = $data['field'] ? $data['field'] : '*'; $concernList = $this -> select_all('crmnew_concern', $where, $select); if (!empty($concernList)) { if(isset($data['utype']) && $data['utype'] == 'crm'){ $cache = $this -> GetCache(array('crm')); $comids = $auids = array(); foreach ($concernList as $value){ $comids[] = $value['uid']; $auids[] = $value['auid']; } $comList = $this->select_all('company', array('uid' => array('in', pylode(',', $comids))),'`uid`,`name`, `linkman`,`linktel`'); $ausers = $this->select_all('admin_user', array('uid' => array('in', pylode(',', $auids))),'`uid`,`name`'); foreach ($concernList as $k => $v){ if($v['type']){ $concernList[$k]['type_n'] = $cache['crmclass_name'][$v['type']]; } if($v['ftime']){ $concernList[$k]['ftime_n'] = date('Y-m-d H:i:s', $v['ftime']); }else{ $concernList[$k]['ftime_n'] = date('Y-m-d H:i:s', $v['atime']); } $concernList[$k]['atime_n'] = date('Y-m-d H:i:s', $v['atime']); foreach ($comList as $cv){ if ($v['uid'] == $cv['uid']) { $concernList[$k]['name'] = $cv['name']; $concernList[$k]['linkman'] = $cv['linkman']; $concernList[$k]['moblie'] = $cv['linktel']; } } foreach ($ausers as $av){ if ($v['auid'] == $av['uid']) { $concernList[$k]['aname'] = $av['name']; } } } } } return $concernList; } /** * @desc 删除跟进记录 * @param $delId * @param array $data * @return array */ public function delConcern($delId, $data = array()) { if (empty($delId)) { $return = array( 'errcode' => 8, 'msg' => '请选择要删除的数据!', ); } else { if (is_array($delId)) { $delId = pylode(',', $delId); $return['layertype'] = 1; } else { $return['layertype'] = 0; } $nid = $this->delete_all('crmnew_concern', array('id' => array('in', $delId)), ''); // 同步跟新任务数据关联的跟进记录ID if ($nid) { $this->update_once('crm_work_plan', array('cid' => '0'), array('cid' => array('in', $delId))); if (!empty($data['auid'])) { $lContent = "业务员(UID:" . $data['auid'] . ")删除跟进记录(ID:" . $delId . ")"; $this->addCrmLog($lContent, '3', '', $data['auid']); } } $return['msg'] = '跟进记录'; $return['errcode'] = $nid ? '9' : '8'; $return['msg'] .= $nid ? '删除成功!' : '删除失败!'; } return $return; } /** * @desc CRM 业务员 新开通客户会员等级 订单记录 * @param array $data * @return array */ public function addDeal($data = array()) { if (!empty($data)) { if (empty($data['uid']) || empty($data['auid'])) { $return = array( 'errcode' => 8, 'msg' => '参数错误,请重试' ); } if (empty($data['rating'])) { $return = array( 'errcode' => 8, 'msg' => '请选择会员套餐' ); }else{ $rating = $this->select_once('company_rating', array('id' => intval($data['rating'])), '`name`'); if (empty($rating)) { $return = array( 'errcode' => 8, 'msg' => '请选择正确的会员套餐' ); } } if (empty($data['order_type'])) { $return = array( 'errcode' => 8, 'msg' => '请选择支付方式' ); } if (!empty($return)) { return $return; } $uid = intval($data['uid']); $auid = intval($data['auid']); if (!empty($data['order_price']) && round($data['order_price'], 2) > 0) { if (empty($data['id'])) { $dingdan = time().rand(10000, 99999); $orderData = array( 'uid' => $uid, 'order_id' => $dingdan, 'order_type' => $data['order_type'], 'order_price' => round($data['order_price'], 2), 'order_time' => time(), 'order_state' => '3', // 业务员开通订单 'order_remark' => $data['order_remark'], 'type' => 1, 'rating' => $data['rating'], 'crm_uid' => $auid, 'usertype' => 2, 'did' => $this->config['did'] ); $return['id'] = $this->insert_into('company_order', $orderData); }else{ $oldOrder = $this->select_once('company_order', array('id' => $data['id'], 'crm_uid' => $auid), '`rating`, `order_type`, `order_price`'); $oldrating = $this->select_once('company_rating', array('id' => intval($oldOrder['rating']))); $orderData = array( 'order_type' => $data['order_type'], 'order_price' => round($data['order_price'], 2), 'order_time' => time(), 'order_remark' => $data['order_remark'], 'rating' => $data['rating'] ); $return['id'] = $this->update_once('company_order', $orderData, array('id' => $data['id'])); } if ($return['id']) { if(empty($data['id'])){ // 修改订单,不记录 $logData = array( 'auid' => $auid, 'uid' => $uid, 'type' => 8, 'content' => '开通会员【'.$rating['name'].'】, 录入订单【'.$dingdan.'】', 'remark' => $data['order_remark'], 'ctime' => time() ); $this->addCrmComLog($logData); } if(empty($data['id'])){ $lContent = '【录入订单】:开通会员《'.$rating['name'].'》, 订单:'.$dingdan; }else{ $dingDan = $oldrating['order_id']; $lContent = '【修改订单】'; if($data['rating'] != $oldOrder['rating']){ $lContent .= '会员等级:'.$oldrating['name'].' -> '.$rating['name'].';'; } if($data['order_type'] != $oldOrder['order_type']){ include(CONFIG_PATH.'db.data.php'); $lContent .= '支付方式:'.$arr_data['pay'][$oldOrder['order_type']].' -> '.$arr_data['pay'][$data['order_type']].';'; } if(round($data['order_price'], 2) != $oldOrder['order_price']){ $lContent .= '付款金额:'.$oldrating['order_price'].' -> '.$data['order_price'].';'; } $lContent .= '订单【'.$dingDan.'】'; } $this->addCrmLog($lContent, '4', $uid, $auid); } $return['errcode'] = $return['id'] ? 9 : 8; $msg = $return['id'] ? '录入成功' : '录入失败,请重试!'; $return['msg'] = '客户订单'.$msg; return $return; } } } /** * @desc 查询数据,返回工作台简报数目 * @param array $data * @return array */ function getWorkReport($data = array()) { if (!empty($data)) { $return = array(); $sdate = $data['sdate']; $edate = $data['edate']; $auid = intval($data['auid']); $timeArr = array( '0' => array('>', $sdate, 'AND'), '1' => array('<', $edate, 'AND') ); $comWhere = array( 'crm_time' => $timeArr, 'crm_uid' => $auid ); $return['khNum'] = $this->select_num('company', $comWhere); $concernWhere = array( 'atime' => $timeArr, 'auid' => $auid ); $return['followNum'] = $this->select_num('crmnew_concern', $concernWhere); $orderWhere = array( 'order_time' => $timeArr, 'crm_uid' => $auid, 'order_price' => array('>', 0), 'order_state' => 2 ); $orderAll = $this->select_all('company_order', $orderWhere, '`order_price`'); $orderSum = 0; foreach ($orderAll as $v) { $orderSum += $v['order_price']; } if ($orderSum > 0) { $return['orderDealPrice'] = floatval($orderSum); } else { $return['orderDealPrice'] = 0; } $return['orderNum'] = $this->select_num('company_order', $orderWhere); return $return; } } public function getReleaseLogList($where = array(), $data = array()){ $field = $data['field'] ? $data['field'] : '*'; $List = $this->select_all('crm_release_log', $where, $field); if (!empty($List)) { foreach ($List as $v) { $auids[] = $v['auid']; $uids[] = $v['uid']; } $users = $this->select_all('admin_user', array('uid' => array('in', pylode(',', $auids))), '`uid`,`name`'); foreach ($List as $k => $v) { foreach ($users as $val) { if ($v['auid'] == $val['uid']) { $List[$k]['name'] = $val['name']; } } } $companys = $this->select_all('company', array('uid' => array('in', pylode(',', $uids))), '`uid`,`name`'); foreach ($List as $k => $v) { foreach ($companys as $val) { if ($v['uid'] == $val['uid']) { $List[$k]['comname'] = $val['name']; } } } } return $List; } public function delReleaseLog($delId, $data = array()){ if(empty($delId)){ $return = array( 'errcode' => 8, 'msg' => '请选择要删除的数据!', ); }else{ if(is_array($delId)){ $delId = pylode(',',$delId); $return['layertype'] = 1; }else{ $return['layertype'] = 0; } $nid = $this -> delete_all('crm_release_log',array('id' => array('in',$delId)),''); if($nid && !empty($data['auid'])){ $lContent = "业务员(UID:".$data['auid'].")删除释放记录(ID:".$delId.")"; $this->addCrmLog($lContent, '6', '', $data['auid']); } $return['msg'] = '释放记录'; $return['errcode'] = $nid ? '9' :'8'; $return['msg'] .= $nid ? '删除成功!' : '删除失败!'; } return $return; } /** * @desc 获取crm工作日志列表 * @param array $where * @param array $data * @return array|bool|false|string|void */ public function getWorkLogList($where = array(), $data = array()) { $field = $data['field'] ? $data['field'] : '*'; $List = $this->select_all('crm_work_log', $where, $field); if (!empty($List)) { foreach ($List as $v) { $auids[] = $v['auid']; } $users = $this->select_all('admin_user', array('uid' => array('in', pylode(',', $auids))), '`uid`,`name`'); foreach ($List as $k => $v) { foreach ($users as $val) { if ($v['auid'] == $val['uid']) { $List[$k]['name'] = $val['name']; } } } } return $List; } /** * @desc 新增工作日志 * @param array $data * @return array */ public function addWorkLog($data = array()) { if (!empty($data)) { $return = array(); $value = array( 'auid' => intval($data['auid']), 'title' => trim($data['title']), 'content' => $data['content'], 'ctime' => time() ); $return['id'] = $this->insert_into('crm_work_log', $value); $lContent = "【添加工作日志】 日志编号:" . $return['id']; $this->addCrmLog($lContent, '6', '', $data['auid']); if ($return['id']) { $return['errcode'] = 9; $return['msg'] = '添加成功'; } else { $return['errcode'] = 8; $return['msg'] = '添加失败'; } return $return; } } /** * @desc 查询任务记录 * @param array $where * @param array $data * @return array|bool|false|string|void */ function getWorkLogInfo($where = array(), $data = array()) { $select = $data['field'] ? $data['field'] : '*'; return $this->select_once('crm_work_log', $where, $select); } /** * @desc 删除工作日志 * @param $delId * @param array $data * @return array */ public function delWorkLog($delId, $data = array()){ if(empty($delId)){ $return = array( 'errcode' => 8, 'msg' => '请选择要删除的数据!', ); }else{ if(is_array($delId)){ $delId = pylode(',',$delId); $return['layertype'] = 1; }else{ $return['layertype'] = 0; } $nid = $this -> delete_all('crm_work_log',array('id' => array('in',$delId)),''); if($nid && !empty($data['auid'])){ $lContent = "业务员(UID:".$data['auid'].")删除工作日志(ID:".$delId.")"; $this->addCrmLog($lContent, '6', '', $data['auid']); } $return['msg'] = '工作日志'; $return['errcode'] = $nid ? '9' :'8'; $return['msg'] .= $nid ? '删除成功!' : '删除失败!'; } return $return; } /** * @desc 获取外出申请列表 * @param array $where * @param array $data * @return array|bool|false|string|void */ public function getOutList($where = array(), $data = array()) { $field = $data['field'] ? $data['field'] : '*'; $List = $this->select_all('crm_out', $where, $field); if (!empty($List)) { $uids = $comids = array(); foreach ($List as $v) { if ($v['auid'] && !in_array($v['auid'], $uids)) { $uids[] = $v['auid']; } if ($v['uid'] && !in_array($v['uid'], $comids)) { $comids[] = $v['uid']; } } $user = $this->select_all('admin_user', array('uid' => array('in', pylode(',', $uids))), '`uid`,`name`'); $com = $this->select_all('company', array('uid' => array('in', pylode(',', $comids))), '`uid`,`name`,`linkman`,`linktel`'); foreach ($List as $k => $v) { foreach ($user as $val) { if ($v['auid'] == $val['uid']) { $List[$k]['name'] = $val['name']; } } foreach ($com as $value) { if ($v['uid'] == $value['uid']) { $List[$k]['comname'] = $value['name']; $List[$k]['linkman'] = $value['linkman']; $List[$k]['linktel'] = $value['linktel']; } } } } return $List; } /** * @desc 新增外出申请 * @param array $data */ public function addOut($data = array()){ if (!empty($data)) { $return = array(); $value = array( 'auid' => intval($data['auid']), 'uid' => intval($data['uid']), 'reason' => intval($data['reason']), 'remark' => $data['remark'], 'stime' => $data['stime'], 'etime' => $data['etime'], 'status' => 1, 'ctime' => time() ); $return['id'] = $this -> insert_into('crm_out', $value); $lContent = "【外出申请】业务员(UID:".$data['auid'].")申请外出"; $this->addCrmLog($lContent, '10', $data['uid'], $data['auid']); $return['errcode'] = $return['id'] ? 9 : 8; $msg = $return['id'] ? '成功' : '失败'; $return['msg'] = '添加外出申请'.$msg; return $return; } } /** * @desc 更新外出记录 */ function upOut($data = array(), $where = array()) { return $this -> update_once('crm_out', $data, $where); } /** * @desc 删除外出申请 */ public function delOut($delId, $data = array()){ if(empty($delId)){ $return = array( 'errcode' => 8, 'msg' => '请选择要删除的数据!', ); }else{ if(is_array($delId)){ $delId = pylode(',',$delId); $return['layertype'] = 1; }else{ $return['layertype'] = 0; } $nid = $this -> delete_all('crm_out',array('id' => array('in',$delId)),''); if($nid && !empty($data['auid'])){ $lContent = "业务员(UID:".$data['auid'].")取消外出申请(ID:".$delId.")"; $this -> addCrmLog($lContent, '10', '', $data['auid']); } $return['msg'] = '外出申请'; $return['errcode'] = $nid ? '9' :'8'; $return['msg'] .= $nid ? '取消成功!' : '取消失败!'; } return $return; } /** * @desc CRM客户管理操作记录 * @param array $data * @return bool */ function addCrmComLog($data = array()) { if (!empty($data)) { return $this->insert_into('crm_comlog', $data); } } /** * @desc 获取客户操作记录(顾问对客户的操作) * @param array $where * @param array $data */ function getComLogList($where = array(), $data = array()){ $field = $data['field'] ? $data['field'] : '*'; $logList = array(); if (!empty($where)) { $logList = $this->select_all('crm_comlog', $where, $field); $cache = $this -> GetCache(array('crm')); $comids = $auids = array(); foreach ($logList as $value){ $comids[] = $value['uid']; $auids[] = $value['auid']; } $comList = $this->select_all('company', array('uid' => array('in', pylode(',', $comids))),'`uid`,`name`, `linkman`,`linktel`'); $ausers = $this->select_all('admin_user', array('uid' => array('in', pylode(',', $auids))),'`uid`,`name`'); foreach ($logList as $k => $v){ if($v['type'] == 1){ $logList[$k]['type_n'] = '【转交】 业务员:【】'; }else if($v['type'] == 2){ $logList[$k]['type_n'] = '【放弃】'; }else if($v['type'] == 3){ $logList[$k]['type_n'] = '【开通订单:金牌会员】'; }else if($v['type'] == 4){ $logList[$k]['type_n'] = '【跟进/访问】'; }else if($v['type'] == 5){ $logList[$k]['type_n'] = '【修改企业资料】'; }else if($v['type'] == 6){ $logList[$k]['type_n'] = '【修改联系方式】'; }else if($v['type'] == 7){ $logList[$k]['type_n'] = '【'.$v['content'].'】'; }else if($v['type'] == 8){ $logList[$k]['type_n'] = '【最新反馈备注】'; }else if($v['type'] == 9){ $logList[$k]['type_n'] = $v['content']; } foreach ($comList as $cv){ if ($v['uid'] == $cv['uid']) { $logList[$k]['name'] = $cv['name']; $logList[$k]['linkman'] = $cv['linkman']; $logList[$k]['moblie'] = $cv['linktel']; } } foreach ($ausers as $av){ if ($v['auid'] == $av['uid']) { $logList[$k]['aname'] = $av['name']; } } } } return $logList; } /** * @desc 转交客户 * @param array $data|crm_uid 转移到顾问UID; uid 客户(企业)ID; auid 转移顾问本人UID */ function deliverUser($data = array()){ if (!empty($data)){ if (empty($data['crm_uid'])) { $return = array( 'errcode' => 8, 'msg' => '请选择转交客户顾问' ); return $return; } if (empty($data['uid'])) { $return = array( 'errcode' => 8, 'msg' => '请选择需要转交的客户' ); return $return; } $crm_uid = intval($data['crm_uid']); $crm_name = trim($data['crm_name']); $uid = explode(',', $data['uid']); $auid = intval($data['auid']); $remark = $data['remark']; $return['id'] = $this->update_once('company', array('crm_uid' => $crm_uid), array('uid' => array('in', pylode(',', $uid)))); if ($return['id']) { $logData = array(); foreach ($uid as $k => $v){ $logData[$k]['auid'] = $auid; $logData[$k]['uid'] = $v; $logData[$k]['type'] = 1; $logData[$k]['content'] = '【售后转交客户】给【业务员:'.$crm_name.'】'; $logData[$k]['remark'] = $remark; $logData[$k]['ctime'] = time(); } $this->DB_insert_multi('crm_comlog', $logData); $lContent = "【转交客户】 业务员(UID:".$auid.")转交客户(UID:".pylode(',', $uid).")给".$crm_name; $this->addCrmLog($lContent, '7', '', $auid); } $return['errcode'] = $return['id'] ? 9 : 8; $msg = $return['id'] ? '成功' : '失败'; $return['msg'] = '客户转交'.$msg; return $return; } } /** * @desc 放弃客户 * @param array $data|uid 客户(企业)ID; auid 操作人UID */ function giveUpUser($data = array()){ if (!empty($data)){ if (empty($data['uid'])) { $return = array( 'errcode' => 8, 'msg' => '请选择需要放弃的客户' ); return $return; } $uid = explode(',', $data['uid']); $auid = intval($data['auid']); $remark = $data['remark']; $return['id'] = $this->update_once('company', array('crm_uid' => '0', 'crm_time' => '0', 'isfollow' => '0', 'f_time' => '', 'pcrmuid' => $auid, 'release_time' => time()), array('uid' => array('in', pylode(',', $uid)))); if ($return['id']) { $this->delete_all('crm_work_plan', array('comid' => array('in', pylode(',', $uid))), ''); $logData = array(); foreach ($uid as $k => $v){ $logData[$k]['auid'] = $auid; $logData[$k]['uid'] = $v; $logData[$k]['type'] = 2; $logData[$k]['content'] = '【放弃客户】'; $logData[$k]['remark'] = $remark; $logData[$k]['ctime'] = time(); } $this->DB_insert_multi('crm_comlog', $logData); $lContent = "【放弃客户】 业务员(UID:".$auid.")放弃客户(UID:". pylode(',', $uid).")"; $this->addCrmLog($lContent, '8', '', $auid); } $return['errcode'] = $return['id'] ? 9 : 8; $msg = $return['id'] ? '成功' : '失败'; $return['msg'] = '放弃客户'.$msg; return $return; } } /** * @desc 修改客户状态/等级 * @param array $data|uid 客户(企业)ID; auid 操作人UID; st 客户状态/等级ID st_n 状态/等级名称 */ function upComST($data = array()){ if (!empty($data)){ if (empty($data['st'])) { $return = array( 'errcode' => 8, 'msg' => $data['isSt'] == 'status' ? '请选择客户状态' : '请选择客户等级' ); return $return; } if (empty($data['uid'])) { $return = array( 'errcode' => 8, 'msg' => '请选择需要修改等级的客户' ); return $return; } $uid = explode(',', $data['uid']); $auid = intval($data['auid']); $st = intval($data['st']); $st_n = $data['st_n']; $remark = $data['remark']; $value = $data['isSt'] == 'status' ? array('crm_status' => $st) : array('crm_type' => $st); //$oCom = $this->select_all('company',array('uid' => array('in', pylode(',', $uid))), '`uid`,`crm_status`, `crm_type`'); $return['id'] = $this->update_once('company', $value, array('uid' => array('in', pylode(',', $uid)))); if ($return['id']) { $logData = array(); $type = $data['isSt'] == 'status' ? 9 : 7; $content = $data['isSt'] == 'status' ? '【修改客户状态】为:【'.$st_n.'】' : '【标记客户等级】为:【'.$st_n.'】'; foreach ($uid as $k => $v){ $logData[$k]['auid'] = $auid; $logData[$k]['uid'] = $v; $logData[$k]['type'] = $type; $logData[$k]['content'] = $content; $logData[$k]['remark'] = $remark; $logData[$k]['ctime'] = time(); } $this->DB_insert_multi('crm_comlog', $logData); $lContent = $data['isSt'] == 'status' ? '【修改客户状态】业务员(UDI:'.$auid.')更新客户状态为:【'.$st_n.'】' : '【标记客户等级】业务员(UDI:'.$auid.')更新客户等级为:【'.$st_n.'】'; $this->addCrmLog($lContent, '9', '', $auid); } $return['errcode'] = $return['id'] ? 9 : 8; $msg = $data['isSt'] == 'status' ?'客户状态修改' : '客户等级修改'; $msg .= $return['id'] ? '成功' : '失败'; $return['msg'] = $msg; return $return; } } /** * @desc 客户管理 -> 联系跟进记录添加 * @param array $data |uid 客户(企业)ID; auid 操作人UID; * @return array */ function addFollow($data = array()){ if (!empty($data)){ if (empty($data['uid'])) { $return = array( 'errcode' => 8, 'msg' => '参数错误,请重试!' ); return $return; } if (empty($data['type'])) { $return = array( 'errcode' => 8, 'msg' => '请选择跟进方式!' ); return $return; } if (empty($data['ftime'])) { $return = array( 'errcode' => 8, 'msg' => '请填写跟进时间!' ); return $return; } if (empty($data['remark'])) { $return = array( 'errcode' => 8, 'msg' => '请填写跟进描述!' ); return $return; } require_once 'company.model.php'; $comM = new company_model($this->db, $this->def); $uid = intval($data['uid']); $comInfo= $comM -> getInfo($uid, array('field' => '`uid`, `crm_uid`, `linkman`, `linktel`')); $auid = intval($data['auid']); if ($auid != $comInfo['crm_uid']) { $crmInfo = $this->select_once('admin_user', array('uid' => $comInfo['crm_uid']), 'org'); $auids = array(); // 有编辑跟进权限的UID $lastOrg = $this->select_once('crmorg', array('id' => $crmInfo['org']), 'id, level, fid'); if ($lastOrg['level'] == 3){ $threeCrmArr = $this->select_all('admin_user', array('org' => $lastOrg['id'], 'power' => 1), 'uid'); $twoOrg = $this->select_once('crmorg', array('id' => $lastOrg['fid']), 'id, fid'); $twoCrmArr = $this->select_all('admin_user', array('org' => $twoOrg['id'], 'spower' => 1), 'uid'); $oneCrmArr = $this->select_all('admin_user', array('org' => 1, 'spower' => 1), 'uid'); }else if ($lastOrg['level'] == 2){ $twoCrmArr = $this->select_all('admin_user', array('org' => $lastOrg['id'], 'power' => 1), 'uid'); $oneCrmArr = $this->select_all('admin_user', array('org' => 1, 'spower' => 1), 'uid'); }else if ($lastOrg['level'] == 1){ $oneCrmArr = $this->select_all('admin_user', array('org' => 1, 'spower' => 1), 'uid'); } if (isset($threeCrmArr)){ foreach ($threeCrmArr as $three) { $auids[] = $three['uid']; } } if (isset($twoCrmArr)){ foreach ($twoCrmArr as $two) { $auids[] = $two['uid']; } } if (isset($oneCrmArr)){ foreach ($oneCrmArr as $one) { $auids[] = $one['uid']; } } if (!in_array($auid, $auids)) { $return = array( 'errcode' => 8, 'msg' => '非自己客户,暂无权限添加跟进!' ); return $return; } } if (!empty($data['crmtid'])) { // 完成任务,添加跟进反馈说明 $data['remark'] = '完成任务,添加跟进反馈:'.$data['remark']; } $value = array( 'uid' => $uid, 'auid' => $auid, 'ftime' => strtotime($data['ftime']), 'type' => intval($data['type']), 'content' => $data['remark'], 'atime' => time() ); if ($data['follow'] == 1 && !empty($data['ptime'])) { $value['time'] = strtotime($data['ptime']); if (strtotime($data['ptime']) < time()) { $return = array( 'errcode' => 8, 'msg' => '跟进时间需在当前时间之后!' ); return $return; } $taskValue = array( 'auid' => $auid, 'uid' => $auid, 'comid' => $uid, 'type' => 22, // 跟进任务类型字段 值22 跟进任务 'content' => $data['remark'].';需要进一步跟进【'.$data['ptime'].'】', 'stime' => strtotime($data['ptime']), 'ctime' => time() ); } if ($data['id']) { // 修改跟进 $value['uptime'] = time(); $return['id'] = $this -> update_once('crmnew_concern', $value, array('id' => intval($data['id']))); if(empty($data['taskid'])){ if (isset($taskValue) && !empty($taskValue)) { $taskValue['cid'] = intval($data['id']); $arr = $this->addWaitingTask($taskValue); if ($arr['id']) { $this->update_once('crmnew_concern', array('taskid' => $arr['id']), array('id' => intval($data['id']))); } } }else{ $this -> upTask($taskValue, array('id' => intval($data['taskid']))); } }else{ // 新增跟进 $return['id'] = $this -> insert_into('crmnew_concern', $value); if(isset($taskValue) && !empty($taskValue)){ $taskValue['cid'] = $return['id']; $arr = $this -> addWaitingTask($taskValue); if ($arr['id']) { $this->update_once('crmnew_concern', array('taskid' => $arr['id']), array('id' => $return['id'])); } } } if ($return['id']) { $mC = ''; if(isset($data['linkman']) && $data['linkman'] != $comInfo['linkman']){ $comValue['linkman'] = $data['linkman']; $mC .= '联系人:'.$comInfo['linkman'].'→'.$data['linkman']; } if(isset($data['linktel']) && $data['linktel'] != $comInfo['linktel'] && CheckMobile($data['linktel'])){ $comValue['linktel'] = $data['linktel']; $mC .= '联系电话:'.$comInfo['linktel'].'→'.$data['linktel']; } if (isset($comValue) && !empty($comValue)){ $this->update_once('company', $comValue, array('uid' => $comInfo['uid'])); $this->addCrmLog('跟进客户,修改联系方式;'.$mC, 11, $comInfo['uid'], $auid); } $pMsg = $data['follow'] == '1' && empty($data['taskid'])? '【添加新计划任务:跟进('.$data["ptime"].')】' : ''; $content = $data['id'] ? '【跟进记录】业务员(UDI:'.$auid.')更新跟进记录(ID:'.$data['id'].')'.$pMsg : '【跟进记录】业务员(UDI:'.$auid.')新增跟进记录(ID:'.$return['id'].')'.$pMsg; $logData = array( 'auid' => intval($data['auid']), 'uid' => $uid, 'type' => 4, 'content' => $content, 'remark' => $data['remark'], 'ctime' => time() ); $this->addCrmComLog($logData); $lContent = $content; $this->addCrmLog($lContent, 3, $uid, $data['auid']); if(!empty($data['crmtid'])){ $this->update_once('crm_work_plan',array('status' => 2, 'etime' => time()), array('id' => $data['crmtid'])); }else if ($auid == $comInfo['crm_uid']){ $this->update_once('crm_work_plan',array('status' => 2, 'etime' => time()), array('stime' => array('<', strtotime(date('Y-m-d 23:59:59'))), 'uid' => $auid, 'comid' => $uid, 'type' => 22, 'status' => 1)); } $this->update_once('company', array('isfollow' => 1, 'f_time' => time()), array('uid' => $uid)); } $return['errcode'] = $return['id'] ? 9 : 8; $msg = $data['id'] ? '修改' : '添加'; $msg .= $return['id'] ? '成功' : '失败'; $return['msg'] = '客户跟进'.$msg; return $return; } } /** * @desc 修改客户联系方式 * @param array $data |uid 客户(企业)ID; auid 操作人UID; * @return array */ function upComLink($data = array()){ if (!empty($data)){ if (empty($data['linktel'])) { $return = array( 'errcode' => 8, 'msg' => '请填写客户联系手机' ); return $return; }elseif(!CheckMobile($data['linktel'])){ $return = array( 'errcode' => 8, 'msg' => '客户联系手机格式错误,请重新填写' ); return $return; } if (!empty($data['linkphone']) && !CheckTell($data['linkphone'])) { $return = array( 'errcode' => 8, 'msg' => '客户固话格式错误,请重新填写' ); return $return; } if (!empty($data['linkmail']) && !CheckRegEmail($data['linkmail'])) { $return = array( 'errcode' => 8, 'msg' => '客户邮箱格式错误,请重新填写' ); return $return; } if (empty($data['uid'])) { $return = array( 'errcode' => 8, 'msg' => '参数错误,请重试' ); return $return; } $uid = intval($data['uid']); $auid = intval($data['auid']); $upData = array( 'linkman' => $data['linkman'], 'linkjob' => $data['linkjob'], 'linktel' => $data['linktel'], 'linkphone' => $data['linkphone'], 'linkmail' => $data['linkmail'] ); $comInfo = $this -> select_once('company', array('uid' => $uid), '`uid`,`linkman`,`linkjob`,`linktel`,`linkphone`,`linkmail`'); $return['id'] = $this -> update_once('company', $upData , array('uid' => $uid)); if ($return['id']) { $logData = array( 'auid' => $auid, 'uid' => $uid, 'type' => 6, 'content' => '【修改企业联系方式】', 'remark' => '联系人:'.$data['linkman'].',职称:'.$data['linkjob'].',手机:'.$data['linktel'].',固话:'.$data['linkphone'].',邮箱:'.$data['linkmail'], 'ctime' => time() ); $this->addCrmComLog($logData); $keyArr = array('linkman','linkjob','linktel','linkphone','linkmail'); $nameArr = array('linkman' => '联系人', 'linkjob' => '职称', 'linktel' => '手机', 'linkphone' => '固话', 'linkmail' => '邮箱'); $lContent = ""; foreach($comInfo as $ck => $cv){ if($cv != $data[$ck] && in_array($ck, $keyArr)){ $lContent .= $nameArr[$ck].":".$cv." -> ".$data[$ck].";"; } } if($lContent!=""){ $this->addCrmLog("【联系方式】业务员(UID:".$auid.")更新企业联系方式:".$lContent, 11, $uid, $auid); } } $return['errcode'] = $return['id'] ? 9 : 8; $msg = $return['id'] ? '成功' : '失败'; $return['msg'] = '客户联系方式修改'.$msg; return $return; } } /** * @desc 联系反馈-》添加备注 * @param array $data|uid 客户(企业)ID; auid 操作人UID; */ function remarkCom($data = array()){ if (!empty($data)){ if (empty($data['uid'])) { $return = array( 'errcode' => 8, 'msg' => '参数错误,请重试!' ); return $return; } $uid = intval($data['uid']); $auid = intval($data['auid']); $remark = $data['crm_remark']; $return['id'] = $this->update_once('company', array('crm_remark' => $remark), array('uid' => $uid)); if ($return['id']) { $logData = array( 'auid' => $auid, 'uid' => $uid, 'type' => 8, 'content' => '【添加备注反馈】', 'remark' => $remark, 'ctime' => time() ); $this->addCrmComLog($logData); } $return['errcode'] = $return['id'] ? 9 : 8; $msg = $return['id'] ? '成功' : '失败'; $return['msg'] = '客户备注'.$msg; return $return; } } /** * @desc 获取短信模板 * @param array $data: uid, auid, tp; */ function getMsgTpl($data = array()){ if (!empty($data)) { if (empty($data['uid']) || empty($data['auid']) || empty($data['tp'])) { $return = array( 'errcode' => 8, 'msg' => '参数错误,请重试' ); return $return; } $uid = intval($data['uid']); $auid = intval($data['auid']); $tp = trim($data['tp']); $msgData= array(); $crm = $this->select_once('admin_user', array('uid' => $auid), '`name`,`moblie`'); if (!empty($crm) && is_array($crm)) { $msgData['aname'] = $crm['name']; $msgData['aphone'] = $crm['moblie']; } if ($tp == 'crmreg') { $member = $this->select_once('member', array('uid' => $uid), '`username`'); $msgData['username'] = $member['username']; } $msgData['type'] = $tp; require_once 'notice.model.php'; $noticeM = new notice_model($this->db, $this->def); $msgTpl = $noticeM -> getTpl($msgData, 'msg'); if ($msgTpl['status'] == '-1') { $return['errcode'] = 8; $return['msg'] = $msgTpl['msg']; }else{ $return['errcode'] = 9; $return['content'] = $msgTpl['content']; $return['length'] = mb_strlen($msgTpl['content'], 'UTF-8'); } return $return; } } /** * @desc CRM管理客户,发送短信 * @param array $data */ function sendCrmMsg($data = array()) { if (!empty($data)) { if (empty($data['uid']) || empty($data['auid']) || empty($data['tp']) || empty($data['mobile']) || empty($data['content'])) { $return = array( 'errcode' => 8, 'msg' => '参数错误,请重试!' ); return $return; } require_once 'notice.model.php'; $noticeM = new notice_model($this->db, $this->def); $msgData = array( 'mobile' => $data['mobile'], 'content' => $data['content'], 'uid' => $data['uid'], 'type' => $data['tp'], 'port' => '5' ); $arr = $noticeM ->sendSMSType($msgData, $data['content']); $return['errcode'] = $arr['status'] == '1' ? 9 : 8; $return['msg'] = $arr['msg']; return $return; } } /** * @desc 客户管理,修改密码 * @param array $data */ function upPassword($data = array()) { $return = array(); $uid = intval($data['uid']); $pass = trim($data['password']); require_once 'userinfo.model.php'; $userinfoM = new userinfo_model($this->db, $this->def); $passA = $userinfoM -> generatePwd(array('password'=>$pass)); $password = $passA['pwd']; $salt = $passA['salt']; $return['id'] = $this -> update_once('member',array('password'=>$password, 'salt'=>$salt), array('uid'=>$uid)); if ($return['id']) { require_once 'sysmsg.model.php'; $sysmsgM = new sysmsg_model($this->db, $this->def); $sysmsgM -> addInfo(array('uid' => $uid, 'usertype'=>2, 'content' => '管理员为您修改密码:'.$pass)); } $return['errcode'] = $return['id'] ? 9 : 8 ; $return['msg'] = $return['id'] ? '密码修改成功!': '密码修改失败!' ; return $return; } /** * @desc 公众号通知业务员 crm * @desc $this -> MODEL('admin')->sendCrmWxMsg(); */ public function sendCrmWxMsg($auid='',$data=array('type'=>'','first'=>'','title'=>'')) { if ($auid && $data['first']) { if($auid!='' && $auid>0){ $awhere = array('uid' => $auid); }else{ //$awhere = array('m_id' => 1); if($data['type']){ $wmtype = $this->select_once('admin_wmtype', array('type' =>$data['type']), '`uid`'); } if($wmtype['uid']){ $awhere = array('uid' => array('in',$wmtype['uid'])); } } if(!empty($awhere)){ $user = $this->select_all('admin_user', $awhere, '`uid`,`name`,`moblie`,`r_status`,`wxid`,`qy_userid`'); } if (! empty($user)) { require_once ('weixin.model.php'); $weixinM = new weixin_model($this->db, $this->def); if($this->config["sy_admin_wmtype"]==1){ foreach ($user as $v) { if ($v['wxid']) { $weixinM->sendWxAdmin(array( 'uid' => $v['uid'], 'type' => $data['type'], 'first' => $data['first'], 'wxid' => $v['wxid'], 'title' => $data['title'], )); } } }else if($this->config["sy_admin_wmtype"]==2){ $uids = $userids = array(); foreach ($user as $v) { if ($v['qy_userid']) { $uids[] = $v['uid']; $userids[] = $v['qy_userid']; } } $weixinM->sendWxQyAdmin(array( 'type' => $data['type'], 'first' => $data['first'], 'userids' => $userids, 'uids' => $uids, 'title' => $data['title'], )); } } } } /** * @desc 我的客户数量查询: 客户总数,待审核客户,未通过客户,锁定客户 * @param array $data * @return string */ function getMyCustomerNum($data = array()) { $crmUid = intval($data['crm_uid']); $arr = array(); //企业总数 $companyAllNum = $this->select_num('company', array('crm_uid' => $crmUid)); if ($companyAllNum > 0) { $arr['companyAllNum'] = $companyAllNum; } //待审核企业 $companyStatusNum1 = $this->select_num('company', array('crm_uid' => $crmUid, 'r_status' => '0')); if ($companyStatusNum1 > 0) { $arr['companyStatusNum1'] = $companyStatusNum1; } //未通过企业 $companyStatusNum2 = $this->select_num('company', array('crm_uid' => $crmUid, 'r_status' => '3')); if ($companyStatusNum2 > 0) { $arr['companyStatusNum2'] = $companyStatusNum2; } //锁定企业 $companyStatusNum3 = $this->select_num('company', array('crm_uid' => $crmUid, 'r_status' => '2')); if ($companyStatusNum3 > 0) { $arr['companyStatusNum3'] = $companyStatusNum3; } return json_encode($arr); } /** * @desc 认领客户 * @param array $uids * @param null $auid * @return string[] */ function claimCom($uids = array(), $auid = null){ if(empty($uids) || empty($auid)){ $return = array( 'errcode' => '8', 'msg' => '领取失败,参数错误' ); }else{ $aInfo = $this->select_once('admin_user', array('uid' => $auid), '`num`,`name`'); if ((int)$aInfo['num'] > 0){ $khs = $this->select_num('company', array('crm_uid' => $auid)); if ($khs >= (int)$aInfo['num']){ return array('errcode' => '8', 'msg' => '客户数量已达上限,暂时无法领取更多客户'); } } // 释放资源,限定期限不能领取; $comAll = $this->select_all('company', array('pcrmuid' => $auid, 'release_time' => array('>', '0') ,'uid' => array('in', pylode(',', $uids))), '`uid`,`rating`,`release_time`'); $claim = $this->select_all('crmset', array('claim_day' => array('>', '0'))); $cuids = array(); foreach ($claim as $ck => $cv){ foreach ($comAll as $cav) { $cav['rating'] = $cav['rating'] == '0' ? '999' : $cav['rating']; if (in_array($cav['rating'], explode(',', $cv['rating'])) && $cav['release_time'] > strtotime("-".$cv['claim_day']." day")){ $cuids[] = $cav['uid']; } } } if(!empty($cuids)){ $uids = array_diff($uids, $cuids); } if(!empty($uids)){ $result = $this->update_once('company', array('crm_uid' => $auid, 'crm_time' => time(), 'release_time' => ''), array('uid' => array('in', pylode(',', $uids)))); if ($result) { $logData = array(); foreach ($uids as $k => $v){ $logData[$k]['auid'] = $auid; $logData[$k]['uid'] = $v; $logData[$k]['type'] = 12; $logData[$k]['content'] = '业务员:'.$aInfo["name"].'【领取客户】'; $logData[$k]['ctime'] = time(); } $this->DB_insert_multi('crm_comlog', $logData); $lContent = "【领取客户】 业务员".$aInfo['name']."(UID:".$auid.")领取客户(UID:".pylode(',', $uids).")"; $this->addCrmLog($lContent, '12', '', $auid); } $return = array( 'errcode' => $result ? '9' : '8', 'msg' => $result ? '客户领取成功!' : '客户领取失败!' ); }else{ $return = array( 'errcode' => '8', 'msg' => '刚释放资源客户,近期无法领取' ); } } return $return; } /** * 计划任务 * * CRM资源释放:1 未跟进客户 2 会员未变动客户 */ function releaseCom(){ $crmSet = $this->select_all('crmset', array('release_day' => array('>', '0'))); foreach ($crmSet as $k => $v) { if((int)$v['release_day'] > 0){ /* 周期内,未跟进客户进行释放 */ $fWhere[$k]['crm_uid'] = array('>', '0'); // 暂停的用户不释放 $fWhere[$k]['r_status'] = array('<>', '4'); $fWhere[$k]['rating'] = array('in', $v['rating']); $fWhere[$k]['PHPYUNBTWSTART'] = ''; $fWhere[$k]['uid'] = array('>', '0'); $fWhere[$k]['PHPYUNBTWSTART_A'] = ''; $fWhere[$k]['isfollow'] = array('=', '0'); $fWhere[$k]['crm_time'] = array('<', strtotime('-'.$v["release_day"].' days'),''); $fWhere[$k]['PHPYUNBTWEND_A'] = ''; $fWhere[$k]['PHPYUNBTWSTART_B'] = 'or'; $fWhere[$k]['f_time'][] = array('<', strtotime('-'.$v["release_day"].' days'),'AND'); $fWhere[$k]['f_time'][] = array('>', '0','AND'); $fWhere[$k]['PHPYUNBTWEND_B'] = ''; $fWhere[$k]['PHPYUNBTWEND'] = ''; $fComs = $this->select_all('company', $fWhere[$k], '`uid`,`crm_uid`'); if(!empty($fComs)){ foreach($fComs as $fk => $fv){ $this->update_once('company', array('crm_uid' => '0', 'crm_time' => '0', 'isfollow' => '0', 'f_time' => '', 'pcrmuid' => $fv['crm_uid'], 'release_time' => time()), array('uid' => $fv['uid'])); $this->insert_into('crm_release_log',array('auid'=>$fv['crm_uid'],'uid'=>$fv['uid'],'ctime'=>time(),'content'=>'释放计划任务')); } } } } $crmDealSet = $this->select_all('crmset', array('deal_day' => array('>', '0'))); foreach ($crmDealSet as $k1 => $v1) { if ((int)$v1['deal_day'] > 0) { /* 周期内,会员未变动释放 */ $fWhere[$k1]['crm_uid'] = array('<>', '0'); // 暂停的用户不释放 $fWhere[$k1]['r_status'] = array('<>', '4'); if (!strpos($v1['rating'], '999')) { $fWhere[$k1]['PHPYUNBTWSTART_A']= ''; $fWhere[$k1]['vipetime'][] = array('<', time(), ''); $fWhere[$k1]['vipetime'][] = array('<', strtotime('-' . $v1["deal_day"] . ' days'), ''); $fWhere[$k1]['PHPYUNBTWEND_A'] = ''; } else { $fWhere[$k1]['rating'] = array('in', $v1['rating']); $fWhere[$k1]['vipstime'] = array('<', strtotime('-' . $v1["deal_day"] . ' days'), ''); } $fWhere[$k1]['crm_time'] = array('<', strtotime('-' . $v1["deal_day"] . ' days'), ''); $RComs = $this->select_all('company', $fWhere[$k1], '`uid`,`crm_uid`'); if (!empty($RComs)) { foreach ($RComs as $Rk => $Rv) { $this->update_once('company', array('crm_uid' => '0', 'crm_time' => '0', 'isfollow' => '0', 'f_time' => '', 'pcrmuid' => $Rv['crm_uid'], 'release_time' => time()), array('uid' => $Rv['uid'])); $this->insert_into('crm_release_log', array('auid' => $Rv['crm_uid'], 'uid' => $Rv['uid'], 'ctime' => time(), 'content' => '释放计划任务')); } } } } } /** * 添加CRM操作日志 * * @param $content 内容 * @param string $type 1-录入客户,2- ,3- ,4- ,5- ,6- ,7- ,8- ,9- ,10- ,11- * @param string $uid 操作对象,客户uid * @param string $auid 业务员UID */ function addCrmLog($content, $type='', $uid='', $auid = ''){ if ($auid && $type && $content){ $data = array( 'uid' => $uid, 'content' => $content, 'type' => $type, 'auid' => $auid, 'ctime' => time() ); $this -> insert_into('crm_log', $data); } } /** * 查询CRM操作日志 * @param array $where 查询条件 * @param array $data * @return array|bool|false|string|void */ function getCrmLogList($where = array(), $data = array()){ $field = $data['field'] ? $data['field'] : '*'; $logList = array(); if (!empty($where)) { $typeArr = array('1' => '用户录入', '2' => '客户信息', '3' => '跟进记录' , '4' => '订单数据', '5' => '工作任务', '6' => '工作日志', '7' => '转交客户', '8' => '放弃客户', '9' => '等级状态', '10' => '外出申请', '11' => '联系方式', '12' => '领取客户'); $logList = $this->select_all('crm_log', $where, $field); $auids = array(); foreach ($logList as $value){ $auids[] = $value['auid']; } $ausers = $this->select_all('admin_user', array('uid' => array('in', pylode(',', $auids))),'`uid`,`name`'); foreach ($logList as $k => $v){ $logList[$k]['type_n'] = $typeArr[$v['type']]; foreach ($ausers as $av){ if ($v['auid'] == $av['uid']) { $logList[$k]['aname'] = $av['name']; } } } } return $logList; } /** * 删除CRM操作日志 * @param $delId * @param array $data * @return array */ function delCrmLog($delId, $data=array()){ if (empty($delId)) { $return = array( 'errcode' => 8, 'msg' => '请选择要删除的数据!'); } else { if (is_array($delId)) { $delId = pylode(',', $delId); $return['layertype'] = 1; } else { $return['layertype'] = 0; } $result = $this -> delete_all('crm_log', array('id' => array('in', $delId)), ''); $return['msg'] = 'CRM 操作记录'; $return['errcode'] = $result ? '9' : '8'; $return['msg'] = $result ? $return['msg'].'删除成功!' : $return['msg'].'删除失败!'; } return $return; } /** * * @desc 查询资源配置数据 * @param $where * @param $data */ function getCrmsetList($where = array(), $data = array()){ $data['field'] = empty($data['field']) ? '*' : $data['field']; $List = $this -> select_all('crmset', $where, $data['field']); if (!empty($List)){ require_once 'rating.model.php'; $ratingM = new rating_model($this->db, $this->def); $ratings = $ratingM -> getList(array('category' => '1'), '`id`, `name`'); $ratingArr = array(); foreach ($ratings as $v) { $ratingArr[$v['id']] = $v['name']; } $ratingArr['999'] = '过期会员'; foreach ($List as $key => $value) { $ratingIDArr = @explode(',', $value['rating']); $ratingName = array(); foreach ($ratingIDArr as $rv){ $ratingName[] = $ratingArr[$rv]; } $List[$key]['rating_name'] = @implode(',', $ratingName); } } return $List; } /** * * @desc 查询资源配置数据 * @param $where * @param $data * @return array|bool|false|string|void */ function getCrmsetInfo($where = array(), $data = array()) { $data['field'] = empty($data['field']) ? '*' : $data['field']; return $this -> select_once('crmset', $where, $data['field']); } /** * @desc 添加资源配置数据 * @param $data * @return string[] */ function addCrmset($data = array()){ if (!empty($data)){ $id = $data['id']; $value = $data['value']; if (!empty($id)){ $return['id'] = $this->update_once('crmset', $value, array('id' => $id)); }else{ $return['id'] = $this -> insert_into('crmset', $value); } $return['errcode'] = $return['id'] ? '9' : '8'; $return['msg'] = $return['id'] ? '资源配置成功!' : '资源配置失败!'; }else{ $return = array('errcode' => '8', 'msg' => '参数错误!'); } return $return; } /** * @desc 删除CRM资源池配置数据 * @param $delId * @return string[] */ function delCrmset($delId = null) { if ($delId == null) { $return = array( 'errcode' => '8', 'msg' => '参数错误' ); } else { $result = $this->delete_all('crmset', array('id' => $delId), ''); $return['errcode'] = $result ? '9' : '8'; $return['msg'] = $result ? '配置数据删除成功!' : '配置数据删除失败!'; } return $return; } function addCrmOrg($data = array()){ if (!empty($data)){ $vData = array( 'name' => $data['name'], 'level' => $data['level'], 'fid' => $data['fid'] ? $data['fid'] : '0', 'sort' => $data['sort'] ); $return['id'] = $this->insert_into('crmorg', $vData); $return['errcode'] = $return['id'] ? '9' : '8'; $return['msg'] = $return['id'] ? '添加成功!' : '添加失败!'; }else{ $return['errcode'] = '8'; $return['msg'] = '参数错误!'; } return $return; } function upCrmOrg($id, $data = array()){ if (!empty($id) && !empty($data)){ $result = $this->update_once('crmorg', $data, array('id' => $id)); $return['errcode'] = $result ? '9' : '8'; $return['msg'] = $result ? '更新成功!' : '更新失败!'; }else{ $return['errcode'] = '8'; $return['msg'] = '参数错误!'; } return $return; } function getOrgInfo($where = array(), $data = array()){ $select = $data['field'] ? $data['field'] : '*'; if (!empty($where)){ $orgInfo = $this->select_once('crmorg', $where, $select); if ($orgInfo['level'] == '3'){ $fOrg = $this->select_once('crmorg', array('id' => $orgInfo['fid'])); // 二级 $ffOrg = $this->select_once('crmorg', array('id' => $fOrg['fid'])); // 一级 $orgInfo['fname'] = $fOrg['name']; $orgInfo['ffname'] = $ffOrg['name']; $orgInfo['ffid'] = $ffOrg['id']; }elseif ($orgInfo['level'] == '2'){ $fOrg = $this->select_once('crmorg', array('id' => $orgInfo['fid'])); // 一级 $orgInfo['fname'] = $fOrg['name']; } if ((int)$orgInfo['level']<3){ $orgSList = $this->select_all('crmorg', array('fid' => $orgInfo['id']), $select); foreach ($orgSList as $ok => $ov) { $orgSList[$ok]['num'] = $this->select_num('admin_user', array('org' => $ov['id'])); } $orgInfo['list']= $orgSList; } // 部门成员 $musers = $this -> select_all('admin_user', array('org' => $orgInfo['id'])); foreach ($musers as $mv) { $muserids[] = $mv['uid']; } $aWhere = array( 'is_crm' => '1', 'PHPYUNBTWSTART_A' => '', 'org' => array( '0' => array('=', $orgInfo['id'], 'OR'), '1' => array('isnull', '', 'OR'), '2' => array('=', '0', 'OR') ), 'PHPYUNBTWEND_A' => '' ); $ausers = $this -> select_all('admin_user', $aWhere, '`uid`,`name`'); $orgInfo['musers'] = $musers; $orgInfo['muserids']= $muserids; $orgInfo['ausers'] = $ausers; } return $orgInfo; } function getOrgList($where = array(), $type=null){ $data['field'] = empty($data['field']) ? '*' : $data['field']; $orgList = $this -> select_all('crmorg', $where, $data['field']); if ($type == 'org'){ $oneArr = $twoArr = $threeArr = array(); foreach ($orgList as $ok => $ov) { $orgList[$ok]['num'] = $this->select_num('admin_user', array('org' => $ov['id'])); } foreach ($orgList as $k => $v) { if ($v['level'] == '1'){ $Arr[$v['level']][] = $v; }else if ($v['level'] == '2'){ $Arr[$v['level']][] = $v; }else if ($v['level'] == '3'){ $Arr[$v['level']][] = $v; } } foreach ($Arr[2] as $k => $v) { foreach ($Arr[3] as $vv) { if ($v['id'] == $vv['fid']){ $Arr[2][$k]['num'] += $vv['num']; $Arr[2][$k]['part'][] = $vv; } } } foreach ($Arr[1] as $k => $v) { foreach ($Arr[2] as $vv) { if ($v['id'] == $vv['fid']){ $Arr[1][$k]['num'] += $vv['num']; $Arr[1][$k]['part'][] = $vv; } } } $orgList['orgArr'] = $Arr[1]; } return $orgList; } function configCrmOrg($data = array()){ if (!empty($data)){ $id = intval($data['id']); $puser = $this->select_all('admin_user', array('org' => $id), '`uid`'); // 部门成员 if ($puser){ $puids = array(); foreach ($puser as $pv) { $puids[] = $pv['uid']; } $this->update_once('admin_user', array('org' => ''), array('uid' => array('in', pylode(',', $puids)))); } $result = $this->update_once('admin_user', array('org' => $id), array('uid' => array('in', pylode(',', $data['uids'])))); $code = $result ? 1 : 2; }else{ $code = 3; } return $code; } function delOrgUser($delId, $data=array()){ if (empty($delId)) { $return = array( 'errcode' => 8, 'msg' => '请选择要删除的成员数据!'); } else { if (is_array($delId)) { $delId = pylode(',', $delId); $return['layertype'] = 1; } else { $return['layertype'] = 0; } $result = $this -> update_once('admin_user', array('org' => '', 'power' => '', 'spower' => ''), array('uid' => array('in', $delId))); $return['msg'] = '部门成员'; $return['errcode'] = $result ? '9' : '8'; $return['msg'] = $result ? $return['msg'].'删除成功!' : $return['msg'].'删除失败!'; } return $return; } function delOrg($delId){ if (empty($delId)) { $return = array( 'errcode' => 8, 'msg' => '参数错误,请重试!'); } else { $return['layertype'] = 0; $org = $this -> select_once('crmorg', array('id' => $delId)); $result = $this -> delete_all('crmorg', array('id' => $delId), ''); if ($result){ $this -> update_once('admin_user', array('org' => '', 'power' => '', 'spower' => ''), array('org' => $delId)); if ($org['level'] == '2'){ $orgS = $this->select_all('crmorg', array('fid' => $delId), '`id`'); foreach ($orgS as $v) { $oid[] = $v['id']; } $this->delete_all('crmorg', array('fid' => $delId), ''); $this->update_once('admin_user', array('org' => '', 'power' => '', 'spower' => ''), array('org' => array('in', pylode(',', $oid)))); } } $return['msg'] = 'CRM部门'; $return['org'] = $result ? $org['fid'] : $delId; $return['errcode'] = $result ? '9' : '8'; $return['msg'] = $result ? $return['msg'].'删除成功!' : $return['msg'].'删除失败!'; } return $return; } function configCrmPower($uid = null, $data = array()){ if ($uid!=null && !empty($data)) { $result = $this->update_once('admin_user', $data, array('uid' => $uid)); $code = $result ? 1 : 2; }else{ $code = 3; } return $code; } /** * @param $crmId * @return false|string */ function getNotice($crmId) { $comList = $this->select_all('company', array('crm_uid' => $crmId), '`uid`,`f_time`,`rating`,`rating_name`,`vipstime`,`vipetime`'); include PLUS_PATH.'comrating.cache.php'; $ratingArr = array(); foreach ($comrat as $k => $v) { $ratingArr[$v['id']] = $v['name']; } $ratingArr['999'] = '过期会员'; if (isset($comList) && !empty($comList)){ $ids = array(); foreach ($comList as $k1 => $v1){ $ids[] = $v1['uid']; } $toFollowList = $this->select_all('crm_work_plan', array('uid' => $crmId, 'type' => '22', 'status' => '1', 'stime' => array('<', strtotime(date('Y-m-d 23:59:59'))), 'comid' => array('in', pylode(',', $ids))),'`comid`'); $toFUids = array(); foreach ($toFollowList as $toV) { $toFUids[$toV['comid']] = $toV['comid']; } // 今天需要跟进数量 $todayFollowNum = count($toFUids) > 0 ? count($toFUids) : 0; // 到期未续费 $endWhere = array( 'uid' => array('in', pylode(',', $ids)), 'PHPYUNBTWSTART_A' => '', 'vipetime' => array( '0' => array('>', '0', ''), '1' => array('<', time(), '') ), 'PHPYUNBTWEND_A' => '' ); $vipedNum = $this->select_num('company', $endWhere); // 15天内到期客户 $willWhere = array( 'uid' => array('in', pylode(',', $ids)), 'PHPYUNBTWSTART_A' => '', 'vipetime' => array( '0' => array('>', time(), ''), '1' => array('<', strtotime('+15 days'), '') ), 'PHPYUNBTWEND_A' => '' ); $willDoneNum = $this->select_num('company', $willWhere); // 从未跟进客户 $noWhere = array( 'uid' => array('in', pylode(',', $ids)), 'PHPYUNBTWSTART_A' => '', 'f_time' => array('=', '', 'or'), 'isfollow' => array('=', '0', 'or'), 'PHPYUNBTWEND_A' => '' ); $noFollowNum = $this->select_num('company', $noWhere); $html = ''; // CRM设置:X天未跟进,提醒跟进 $followSet = $this->select_all('crmset', array('follow_day' => array('>', '0'))); $followData = array(); foreach ($followSet as $ck => $cv) { foreach ($comList as $k => $v) { $v['rating'] = $v['rating'] == '0' ? '999' : $v['rating']; if (in_array($v['rating'], @explode(',', $cv['rating'])) && $v['f_time'] < strtotime("-" . $cv['follow_day'] . " days")) { $followData[$ratingArr[$v['rating']]]['num']++; $followData[$ratingArr[$v['rating']]]['day'] = $cv['follow_day']; $followData[$ratingArr[$v['rating']]]['rating'] = $v['rating'] == '999' ? '0' : $v['rating']; } } } foreach ($followData as $fk => $fv) { $html .= "
您有 ".$fv['num']."个 ".$fk.",超过 ".$fv['day']."天 未跟进,需要您及时跟进哦
查看
"; } // CRM设置:X天未跟进,释放提醒 $releaseSet = $this->select_all('crmset', array('release_day' => array('>', '0'))); $releaseData = array(); foreach ($releaseSet as $ck => $cv) { foreach ($comList as $k => $v) { $v['rating'] = $v['rating'] == '0' ? '999' : $v['rating']; if (in_array($v['rating'], @explode(',', $cv['rating'])) && $v['f_time'] < strtotime("-" . $cv['release_day'] . " days")) { $releaseData[$ratingArr[$v['rating']]]['num']++; $releaseData[$ratingArr[$v['rating']]]['day'] = $cv['release_day']; $releaseData[$ratingArr[$v['rating']]]['rating'] = $v['rating'] == '999' ? '0' : $v['rating']; } } } foreach ($releaseData as $rk => $rv) { $html .= "
您有 ".$rv['num']."个 ".$rk.",超过 ".$rv['day']."天 未跟进,即将释放
查看
"; } // CRM设置:X天会员未变更,释放提醒 $dealSet = $this->select_all('crmset', array('deal_day' => array('>', '0'))); $dealData = array(); foreach ($dealSet as $ck => $cv) { foreach ($comList as $k => $v) { $v['rating'] = $v['rating'] == '0' ? '999' : $v['rating']; if($v['rating'] == '999' && in_array('999', @explode(',', $cv['rating']))){ if($v['vipetime'] < strtotime("-" . $cv['deal_day'] . " days")) { $dealData[$ratingArr[$v['rating']]]['num']++; $dealData[$ratingArr[$v['rating']]]['day'] = $cv['deal_day']; $dealData[$ratingArr[$v['rating']]]['rating'] = '0'; } }else if (in_array($v['rating'], @explode(',', $cv['rating']))){ if ($v['vipstime'] < strtotime("-" . $cv['deal_day'] . " days")){ $dealData[$ratingArr[$v['rating']]]['num']++; $dealData[$ratingArr[$v['rating']]]['day'] = $cv['deal_day']; $dealData[$ratingArr[$v['rating']]]['rating'] = $v['rating']; } } } } foreach ($dealData as $dk => $dv) { $html .= "
您有 ".$dv['num']."个 ".$dk.",超过 ".$dv['day']."天 未变更会员,即将释放
查看
"; } return json_encode(array('todayFollowNum' => $todayFollowNum, 'vipedNum' => (int)$vipedNum, 'willDoneNum' => (int)$willDoneNum, 'noFollowNum' => (int)$noFollowNum, 'html' => $html, 'followData' => $followData, 'releaseData' => $releaseData, 'dealData' => $dealData)); } } function getMyCom($crmId){ $comList = $this->select_all('company', array('crm_uid' => $crmId), '`uid`,`f_time`,`rating`,`rating_name`,`vipstime`,`vipetime`'); include PLUS_PATH.'comrating.cache.php'; $ratingArr = array(); foreach ($comrat as $k => $v) { $ratingArr[$v['id']] = $v['name']; } $ratingArr['999'] = '过期会员'; if (isset($comList) && !empty($comList)){ $ids = array(); foreach ($comList as $k => $v){ $ids[] = $v['uid']; } $toFollowList = $this->select_all('crm_work_plan', array('uid' => $crmId, 'type' => '22', 'status' => '1', 'stime' => array('<', strtotime(date('Y-m-d 23:59:59'))), 'comid' => array('in', pylode(',', $ids))),'`comid`'); $toFUids = array(); foreach ($toFollowList as $toV) { $toFUids[$toV['comid']] = $toV['comid']; } $html = ''; // 今日需要跟进数量 $todayNum = count($toFUids) > 0 ? count($toFUids) : 0; $html .= "
今天需要您立即跟进的客户有 ".$todayNum."
"; $followSet = $this->select_all('crmset', array('follow_day' => array('>', '0'))); $followData = array(); foreach ($followSet as $ck => $cv) { foreach ($comList as $k=> $v) { $v['rating'] = $v['rating'] == '0' ? '999' : $v['rating']; if (in_array($v['rating'], @explode(',', $cv['rating'])) && $v['f_time'] < strtotime("-".$cv['follow_day']." days")){ $followData[$ratingArr[$v['rating']]]['num']++; $followData[$ratingArr[$v['rating']]]['day'] = $cv['follow_day']; } } } foreach ($followData as $fk => $fv) { $html .= "
您有 ".$fv['num']."个 ".$fk.",超过 ".$fv['day']."天 未跟进,需要您及时跟进哦
"; } $releaseSet = $this->select_all('crmset', array('release_day' => array('>', '0'))); $releaseData = array(); foreach ($releaseSet as $ck => $cv) { foreach ($comList as $k=> $v) { $v['rating'] = $v['rating'] == '0' ? '999' : $v['rating']; if (in_array($v['rating'], @explode(',', $cv['rating'])) && $v['f_time'] < strtotime("-".$cv['release_day']." days")){ $releaseData[$ratingArr[$v['rating']]]['num']++; $releaseData[$ratingArr[$v['rating']]]['day'] = $cv['release_day']; } } } foreach ($releaseData as $rk => $rv) { $html .= "
您有 ".$rv['num']."个 ".$rk.",超过 ".$rv['day']."天 未跟进,即将释放
"; } return json_encode(array('html' => $html)); } } function getKhbList($time){ $timeA = explode('-', $time); $month = (int)$timeA[1]; $sTime = mktime(0, 0, 0, $month, 1, $timeA[0]); $eTime = mktime(23, 59, 59, $month+1, 0, $timeA[0]); $where = array( 'crm_uid' => array('>', 0), 'PHPYUNBTWSTART_A' => '', 'crm_time' => array( 0 => array('>=', $sTime, ''), 1 => array('<', $eTime, ''), ), 'PHPYUNBTWEND_A' => '', 'groupby' => 'crm_uid', 'orderby' => 'khnum, desc' ); $khb = $this->select_all('company', $where, '`crm_uid`, count(`uid`) as khnum'); $nWhere = array( 'crm_uid' => array('>', 0), 'PHPYUNBTWSTART_A' => '', 'crm_time' => array( '0' => array('>=', $sTime, ''), '1' => array('<', $eTime, ''), ), 'PHPYUNBTWEND_A' => '' ); $kbNUm = $this->select_num('company', $nWhere); if (!empty($khb)){ $crmUids = array(); foreach ($khb as $k => $v) { $crmUids[] = $v['crm_uid']; } $crmUsers = $this->select_all('admin_user', array('uid' => array('in', pylode(',', $crmUids))), '`name`,`uid`'); foreach ($khb as $k => $v) { foreach ($crmUsers as $ck => $cv) { if ($v['crm_uid'] == $cv['uid']){ $khb[$k]['name'] = $cv['name']; $khb[$k]['per'] = round($v['khnum'] / $kbNUm * 100,2)."%"; $khb[$k]['url'] = 'index.php?m=crm_salesman_list&c=customer_list&auid='.$cv['uid'].'&crm_time='.$time; } } } } $result['data'] = $khb; $result['total'] = $kbNUm; return $result; } function getJebList($time){ $timeA = explode('-', $time); $month = (int)$timeA[1]; $sTime = mktime(0, 0, 0, $month, 1, $timeA[0]); $eTime = mktime(23, 59, 59, $month+1, 0, $timeA[0]); $where = array( 'order_state' => 2, 'PHPYUNBTWSTART_A' => '', 'order_time' => array( '0' => array('>=', $sTime, ''), '1' => array('<', $eTime, '') ), 'PHPYUNBTWEND_A' => '', 'groupby' => 'crm_uid', 'orderby' => 'total, desc' ); $jeb = $this->select_all('company_order', $where, '`crm_uid`, sum(`order_price`) as total'); $nWhere = array( 'order_state' => 2, 'PHPYUNBTWSTART_A' => '', 'order_time' => array( '0' => array('>=', $sTime, ''), '1' => array('<', $eTime, '') ), 'PHPYUNBTWEND_A' => '' ); $jeArr = $this->select_all('company_order', $nWhere, 'sum(`order_price`) as total'); if (!empty($jeb)){ $crmUids = array(); foreach ($jeb as $k => $v) { if ($v['crm_uid'] > 0){ $crmUids[] = $v['crm_uid']; } } $crmUsers = $this->select_all('admin_user', array('uid' => array('in', pylode(',', $crmUids))), '`name`,`uid`'); foreach ($jeb as $k => $v) { if ($v['crm_uid'] > 0) { foreach ($crmUsers as $ck => $cv) { if ($v['crm_uid'] == $cv['uid']) { $jeb[$k]['name'] = $cv['name']; $jeb[$k]['per'] = round($v['total'] / $jeArr[0]['total'] * 100, 2) . "%"; $jeb[$k]['url'] = 'index.php?m=crm_statis&c=amount&uid=' . $cv['uid'] . '&stime=' . date('Y-m-01') . '&etime=' . date('Y-m-d'); } } }else{ $jeb[$k]['name'] = '系统'; $jeb[$k]['per'] = round($v['total'] / $jeArr[0]['total'] * 100,2)."%"; $jeb[$k]['url'] = 'index.php?m=crm_audit&stime='.date('Y-m-01').'&etime='.date('Y-m-d'); } } } $result['data'] = $jeb; $result['total'] = isset($jeArr[0]['total']) ? $jeArr[0]['total'] : 0; return $result; } /** * @desc CRM - 数据看板 * @param array $where * @return array|bool|false|string|void */ function getCrmList($where = array()) { $rows = $this->select_all('admin_user', $where); if (!empty($rows)){ $allKh = $this->select_all('company', array('crm_uid' => array('>', 0)), '`crm_uid`'); $newList = $this->select_all('member', array('usertype' => 2, 'reg_date' => array('>', strtotime(date('Y-m-d')))), '`uid`'); $newUids = array(); foreach ($newList as $nk=>$nv) { $newUids[] = $nv['uid']; } $newKh = $this->select_all('company', array('crm_uid' => array('>', 0), 'uid' => array('in', pylode(',', $newUids))), '`crm_uid`'); $newFollow = $this->select_all('company', array('crm_uid' => array('>', 0), 'f_time' => array('>', strtotime(date('Y-m-d')))),'`crm_uid`'); $willWhere = array( 'crm_uid' => array('>', 0), 'PHPYUNBTWSTART_A' => '', 'vipetime' => array( '0' => array('<', strtotime('+15 days'), 'and'), '1' => array('>', time(), 'and'), ), 'PHPYUNBTWEND_A' => '' ); $willDoneKh = $this->select_all('company', $willWhere, '`crm_uid`'); $recentFollowKh = $this->select_all('company', array('crm_uid' => array('>', 0), 'f_time' => array('>', strtotime('-7 days'))), '`crm_uid`'); $vipWhere = array( 'crm_uid' => array('>', 0), 'PHPYUNBTWSTART_A' => '', 'rating' => array( '0' => array('>', 0), '1' => array('<>', $this->config['sy_free_id']) ), 'PHPYUNBTWEND_A' => '' ); $vipKh = $this->select_all('company', $vipWhere, '`crm_uid`'); $freeKh = $this->select_all('company', array('crm_uid' => array('>', 0), 'rating' => $this->config['sy_free_id']), '`crm_uid`'); $vipDoneWhere = array( 'crm_uid' => array('>', 0), 'PHPYUNBTWSTART_A' => '', 'vipetime' => array( '0' => array('>', 0, ''), '1' => array('<', time(), '') ), 'PHPYUNBTWEND_A' => '' ); $vipDoneKh = $this->select_all('company', $vipDoneWhere); foreach ($rows as $k => $v) { $rows[$k]['allNum'] = 0; $rows[$k]['newNum'] = 0; $rows[$k]['newFollowNum'] = 0; $rows[$k]['willDoneNum'] = 0; $rows[$k]['recentFollowNum'] = 0; $rows[$k]['vipNum'] = 0; $rows[$k]['freeNum'] = 0; $rows[$k]['vipDoneNum'] = 0; foreach ($allKh as $val){ if ($v['uid'] == $val['crm_uid']){ $rows[$k]['allNum']++; } } foreach ($newKh as $val){ if ($v['uid'] == $val['crm_uid']){ $rows[$k]['newNum']++; } } foreach ($newFollow as $val){ if ($v['uid'] == $val['crm_uid']){ $rows[$k]['newFollowNum']++; } } foreach ($willDoneKh as $val){ if ($v['uid'] == $val['crm_uid']){ $rows[$k]['willDoneNum']++; } } foreach ($recentFollowKh as $val){ if ($v['uid'] == $val['crm_uid']){ $rows[$k]['recentFollowNum']++; } } foreach ($vipKh as $val){ if ($v['uid'] == $val['crm_uid']){ $rows[$k]['vipNum']++; } } foreach ($freeKh as $val){ if ($v['uid'] == $val['crm_uid']){ $rows[$k]['freeNum']++; } } foreach ($vipDoneKh as $val){ if ($v['uid'] == $val['crm_uid']){ $rows[$k]['vipDoneNum']++; } } } } return $rows; } function getManageData() { $allNum = $this->select_num('company'); $newNum = $this->select_num('member', array('usertype' => 2, 'reg_date' => array('>', strtotime(date('Y-m-d'))))); $crmNum = $this->select_num('company', array('crm_uid' => array('>', 0))); $noCrmNum = $this->select_num('company', array('crm_uid' => 0)); $orderAllPrice = $this->select_once('company_order', array('order_price' => array('>', '0'), 'order_state' => 2, 'crm_uid' => array('>', 0)), 'sum(`order_price`) as `pricesum`'); if (floatval($orderAllPrice['pricesum']) > 0) { $allPrice = floatval($orderAllPrice['pricesum']); } $orderNewPrice = $this->select_once('company_order', array('order_price' => array('>', '0'), 'order_state' => 2, 'crm_uid' => array('>', 0), 'order_time' => array('>', strtotime(date('Y-m-d')))), 'sum(`order_price`) as `pricesum`'); if (floatval($orderNewPrice['pricesum']) > 0) { $newPrice = floatval($orderNewPrice['pricesum']); } $newFollow = $this->select_num('crmnew_concern', array('ftime' => array('>', strtotime(date('Y-m-d'))))); // 15天内到期客户 $willWhere = array( 'PHPYUNBTWSTART_A' => '', 'vipetime' => array( '0' => array('>', time(), ''), '1' => array('<', strtotime('+15 days'), '') ), 'PHPYUNBTWEND_A' => '' ); $willDone = $this->select_num('company', $willWhere); // 到期未续费 $endWhere = array( 'PHPYUNBTWSTART_A' => '', 'vipetime' => array( '0' => array('>', '0', ''), '1' => array('<', time(), '') ), 'PHPYUNBTWEND_A' => '' ); $vipDone = $this->select_num('company', $endWhere); // 30天未跟进 $needFollow = $this->select_num('company', array('isfollow' => 1,'f_time' => array('<' , strtotime('-30 days')))); // 从未跟进 $noFollow = $this->select_num('company', array('isfollow' => '0')); $arr = array( 'allNum' => $allNum, 'newNum' => $newNum, 'crmNum' => $crmNum, 'noCrmNum' => $noCrmNum, 'allPrice' => $allPrice, 'newPrice' => $newPrice, 'newFollow' => $newFollow, 'willDone' => $willDone, 'vipDone' => $vipDone, 'needFollow'=> $needFollow, 'noFollow' => $noFollow ); return $arr; } function getStatisData($data = array()) { $timeBegin = $data['timeBegin']; $timeEnd = $data['timeEnd']; if (!empty($data['timeBegin'])){ $allWhere = array( 'crm_uid' => array('>', 0), 'PHPYUNBTWSTART_A' => '', 'crm_time' => array( 0 => array('>=', $timeBegin, ''), 1 => array('<=', $timeEnd, '') ), 'PHPYUNBTWEND_A' => '' ); }else{ $allWhere = array('crm_uid' => array('>', 0)); } $allNum = $this->select_num('company', $allWhere); if (!empty($data['timeBegin'])) { $concernWhere = array( 'crm_uid' => array('>', 0), 'isfollow' => '0' ); }else{ $concernWhere = array('crm_uid' => array('>', 0), 'isfollow' => '0'); } $concernNum = $this->select_num('company', $concernWhere); if (!empty($data['timeBegin'])) { $concernedWhere = array( 'crm_uid' => array('>', 0), 'isfollow' => '1', 'PHPYUNBTWSTART_A' => '', 'f_time' => array( 0 => array('>=', $timeBegin, ''), 1 => array('<=', $timeEnd, '') ), 'PHPYUNBTWEND_A' => '' ); }else{ $concernedWhere = array('crm_uid' => array('>', 0), 'isfollow' => '1'); } $concernedNum = $this->select_num('company', $concernedWhere); if (!empty($timeBegin)) { $endT = mktime(23, 59, 59, date('m'), date('d'), date('Y')); if ($timeBegin == $endT || $timeEnd <= $endT){ $vitWhere = array( 'type' => 22, 'status' => 1, 'PHPYUNBTWSTART_A' => '', 'stime' => array( 0 => array('<=', $timeEnd, ''), 1 => array('isnull','','OR') ), 'PHPYUNBTWEND_A' => '' ); }else{ $vitWhere = array( 'type' => 22, 'status' => 1, 'PHPYUNBTWSTART_A' => '', 'stime' => array( 0 => array('>=', $timeBegin, ''), 1 => array('<=', $timeEnd, '') ), 'PHPYUNBTWEND_A' => '' ); } }else{ $vitWhere = array('type' => 22, 'status' => 1); } $visitNum = $this->select_num('crm_work_plan', $vitWhere); if (!empty($timeBegin)) { $orderWhere = array( 'crm_uid' => array('>', 0), 'order_state' => 2, 'PHPYUNBTWSTART_A' => '', 'order_time' => array( 0 => array('>=', $timeBegin, ''), 1 => array('<=', $timeEnd, '') ), 'PHPYUNBTWEND_A' => '' ); }else{ $orderWhere = array( 'crm_uid' => array('>', 0), 'order_state' => 2); } $orderNum = $this->select_num('company_order', $orderWhere); $orderPrice = $this->select_once('company_order', $orderWhere, 'sum(`order_price`) as `pricesum`'); $arr = array( 'allNum' => $allNum, 'concernNum' => $concernNum, 'concernedNum' => $concernedNum, 'visitNum' => $visitNum, 'orderNum' => $orderNum, 'orderPrice' => $orderPrice['pricesum'] ); return $arr; } } ?>