request->token; $data = $this->request->only(['agentid', 'status', 'type']); $where[] = ['agent_employee_id', '=', $token['employee_id']]; $where[] = ['root_id', '=', $token['root_org']]; $where[] = ['id', '=', $data['agentid']]; $where[] = ['is_review', '=', 1]; //$ms=AgentUser::where($where)->update(['is_review'=>$data['status'],'type'=>$data['type'],'review_time'=>time()]); $ms = AgentUser::where($where)->update(['is_review' => $data['status'], 'review_time' => time()]); if ($ms) { return json(['code' => 0, 'msg' => '审核成功.']); } else { return json(['code' => 1, 'msg' => '审核失败.']); } } //待审核经纪人列表 public function review_agt_list() { $token = $this->request->token; $list = AgentUser::where([['is_review', '=', 1], ['agent_employee_id', '=', $token['employee_id']], ['root_id', '=', $token['root_org']]])->select(); return json(['code' => 0, 'msg' => '获取成功', 'data' => $list]); } /** * 业务员下的经纪人列表 */ public function agent_list() { $token = $this->request->token; $data = $this->request->only(['agentid', 'page', 'limit', 'type', 'keyword', 'order', 'join_date', 'is_review']); if (!empty($data['type'])) { $where[] = ['type', '=', $data['type']]; } //关键字 if (!empty($data['keyword'])) { $where[] = ['agent_name|agent_phone', 'like', '%' . $data['keyword'] . '%']; } //加入时间 if (!empty($data['join_date'])) { $where[] = ['addtime', 'like', $data['join_date'] . '%']; } //审核状态 if (!empty($data['is_review'])) { $where[] = ['is_review', '=', $data['is_review']]; } $where[] = ['agent_employee_id', '=', $token['employee_id']]; $where[] = ['status', '=', 1]; $list = AgentUser::with(['user' => function ($query) { $query->field('id,nickname,headimgurl'); }, 'customer' => function ($query) { $query->field('id,agents_id'); }, 'agenttype']) ->where($where) ->field('id,agent_name,type,is_review,addtime,uid,agent_phone,cards_num,wechat') //->page($data['page'], $data['limit']) ->order('is_review asc,id desc') ->select()->toArray(); //排行筛选 if (!empty($data['order']) && !empty($list)) { foreach ($list as $key => $val) { $ph = AgentCustomerLog::where([['status', '=', 1], ['type', '=', $data['order']], ['agent_id', '=', $val['id']]])->count(); $list[$key]['ph'] = $ph; $parr[] = $ph; } array_multisort($parr, SORT_DESC, $list); } $review_num = 0; foreach ($list as $key => $val) { //客户数量 $list[$key]['customer_num'] = count($val['customer']); //当前积分 $integral = AgentIntegralLog::where([['agt_id', '=', $val['id']]])->order('id desc')->value('now_integral'); //$integral=AgentIntegralLog::where([['agt_id','=',$val['id']],['type','=',1]])->sum('integral'); $wait_integral = AgentIntegral::where([['agent_id', '=', $val['id']], ['status', '=', 1]])->sum('integral'); $now_integral = $integral + $wait_integral; $list[$key]['now_integral'] = $now_integral ? $now_integral : 0; //已兑换 $list[$key]['reduce_integral'] = AgentIntegralLog::where([['agt_id', '=', $val['id']], ['type', '=', 2]])->sum('integral'); //分享数量 $list[$key]['share_num'] = ShareLog::where('agent_id', $val['id'])->count(); //线索数量 $list[$key]['clue_num'] = CustomerClue::where(['agent_id' => $val['id']])->count(); //建档数量 $list[$key]['clue_crm_num'] = CustomerClue::where(['agent_id' => $val['id'], 'state' => 1])->count(); if ($val['is_review'] == 1) $review_num++; $list[$key]['type_name'] = !empty($val['agenttype']['type_name']) ? $val['agenttype']['type_name'] : ''; } return json(['code' => 0, 'msg' => '获取成功', 'data' => $list, 'review_num' => $review_num]); } //统计员工下属经济人总数 public function agent_count() { $token = $this->request->token; $data = $this->request->only(['agentid', 'status', 'page', 'limit']); $where[] = ['agent_employee_id', '=', $token['employee_id']]; $where[] = ['is_review', '=', 2]; $where[] = ['status', '=', 1]; $list = AgentUser::where($where)->column('id'); $where1[] = ['agent_id', 'in', (implode(',', $list))]; $list = AgentCustomerLog::where($where1)->fieldRaw('count(id) as alls')->group('type')->order('alls desc')->select()->toArray(); //客户数量 $customer = Customer::where(['agents_id', 'in', (implode(',', $list))])->count(); } /** * 业务员端经纪人客户头部统计 */ public function ctm_count() { $token = $this->request->token; $data = $this->request->only(['agent_id']); if (empty($data['agent_id'])) { $where[] = ['agent_employee_id', '=', $token['employee_id']]; } else { $where[] = ['id', '=', $data['agent_id']]; } $where[] = ['is_review', '=', 2]; $where[] = ['status', '=', 1]; $list = AgentUser::where($where)->column('id'); //查询出属于我的客户 $customer_id = Customer::where([['employee_id', '=', $this->request->token['employee_id']], ['agents_id', 'in', $list]])->column('id'); // 确认到店数量统计 $visit = CustomerVisitLog::where(array_merge([CustomerVisitLog::changeState(['state', '=', '确认到店'])], [['customer_id', 'in', $customer_id]]))->count(); // 交定数量统计 $ding = CustomerVisitLog::where(array_merge([CustomerVisitLog::changeState(['state', '=', '交定'])], [['customer_id', 'in', $customer_id]]))->count(); // 签单数量统计 $sign = CustomerVisitLog::where(array_merge([CustomerVisitLog::changeState(['state', '=', '签单'])], [['customer_id', 'in', $customer_id]]))->count(); return json(['code' => 0, 'data' => ['visit' => $visit, 'ding' => $ding, 'sign' => $sign, 'count' => $customer_id ? count($customer_id) : 0], 'msg' => '获取成功']); } //获取经纪人的类别 public function agent_typelist() { $token = $this->request->token; $list = AgentType::where([['root_id', '=', $token['root_org']], ['status', '=', 1]])->field('id,type_name')->select()->toArray(); return json(['code' => 0, 'data' => $list, 'msg' => '获取成功']); } //员工生成邀请经纪人二维码 public function invitation_qrcode() { $token = $this->request->token; $param = $this->request->only(['type']); if (empty($param['type'])) return json(['code' => 1, 'msg' => '参数错误']); $class = Employee::where([['id', '=', $token['employee_id']], ['root_id', '=', $token['root_org']]])->field('id,name,invitation_qrcode')->find(); if (empty($class)) return json(['code' => 1, 'msg' => '员工信息不存在']); $qrcodedata = AgentEmpInvitationQrcode::where([['root_id', '=', $token['root_org']], ['employee_id', '=', $token['employee_id']], ['type', '=', $param['type']]])->find(); if (empty($qrcodedata['invitation_qrcode'])) { // 生成二维码 $mini = Miniprogram::where([['root_id', '=', $token['root_org']]])->find(); $qrObj = new Qrcode; $params = [ 'scene' => 'cli=' . $mini['notify'] . '&id=' . $class['id'] . '&type=' . $param['type'], //该参数最长32位,如果无法生成二维码请排查是否超出长度 'page' => 'customer/pages/brokerindex/brokerindex', 'width' => '280px', ]; $qr = $qrObj->getUnlimited($mini->accesstoken, $params); $rs = json_decode($qr, true); if (!is_null($rs)) { return json(['code' => 1, 'msg' => '二维码生成失败']); } $path = 'agentinvitationQrcode/' . uniqid() . '.jpeg'; ossContentUpload($path, $qr); //$class->invitation_qrcode = $path; //$class->save(); $add = [ 'employee_id' => $token['employee_id'], 'root_id' => $token['root_org'], 'type' => $param['type'], 'invitation_qrcode' => $path ]; AgentEmpInvitationQrcode::insertGetId($add); $qrcode = 'https://' . config('app.ali_oss_bindurl') . '/' . $path; } else { $qrcode = 'https://' . config('app.ali_oss_bindurl') . '/' . $qrcodedata['invitation_qrcode']; } return json(['code' => 0, 'msg' => '获取成功', 'data' => $qrcode]); } //员工下属经纪人客户列表 public function agent_customer_list_two() { $token = $this->request->token; $data = $this->request->only(['page', 'limit', 'state', 'addtime', 'agent_source_type', 'agent_id', 'keyword']); if (!empty($data['state'])) { $where[] = ['state', 'in', Customer::changeState($data['state'], 'chaos')]; } if (!empty($data['addtime'])) { $where[] = ['addtime', '>=', $data['addtime'] . ' 00:00:00']; $where[] = ['addtime', '<=', $data['addtime'] . ' 23:59:59']; } if (!empty($data['agent_source_type'])) { $where[] = ['agent_source_type', '=', $data['agent_source_type']]; } if (!empty($data['keyword'])) { $where[] = ['agent_name|agent_phone', 'like', '%' . $data['keyword'] . '%']; } $all_agt = AgentUser::where([['agent_employee_id', '=', $token['employee_id']], ['is_review', '=', 2]])->column('id'); if (!empty($data['agent_id'])) { if (in_array($data['agent_id'], $all_agt)) { $agt_id = array($data['agent_id']); } else { return json(['code' => 1, 'data' => null, 'msg' => '经纪人参数错误']); } } else { $agt_id = $all_agt; } $where[] = ['agents_id', 'in', (implode(',', $agt_id))]; $list = Customer::with(['visitLog' => function ($query) { $query->field('customer_id,state')->group('state'); }]) ->where($where) ->field('id,name,state,square,phone,level,updatetime,community_name,addtime,sex,agent_source_type,agents_id') ->page($data['page'], $data['limit']) ->order('addtime desc') ->select() ->toArray(); //var_dump($list); //exit; return json(['code' => 0, 'data' => $list, 'msg' => '请求成功.']); } //员工单独查看下属经纪人积分详情 public function agent_integral_list() { $token = $this->request->token; $data = $this->request->only(['page', 'limit', 'agent_id']); $daoday = 0; (new AgentsLogic())->call_agt_integral($daoday, $data['agent_id'], $token['root_org']); $list = AgentIntegral::with(['customer' => function ($query) { $query->field('id,name,sex'); }]) ->where([['agent_id', '=', $data['agent_id']]]) ->page($data['page'], $data['limit']) ->order('addtime desc')->select()->toArray(); foreach ($list as $key => $val) { $list[$key]['addtime'] = date('Y-m-d H:i:s', $val['addtime']); $list[$key]['status'] = $val['status'] == 1 ? '待确认' : '到账'; } return json(['code' => 0, 'data' => $list, 'msg' => '请求成功.']); } //员工单独查看下属经纪人积分核销详情 public function agent_already_list() { $token = $this->request->token; $data = $this->request->only(['page', 'limit', 'agent_id']); $list = AgentIntegralLog::where([['agt_id', '=', $data['agent_id']], ['type', '=', 2]]) ->field('integral,addtime') ->page($data['page'], $data['limit']) ->select()->toArray(); foreach ($list as $key => $val) { $list[$key]['addtime'] = date('Y-m-d H:i:s', $val['addtime']); $list[$key]['status'] = '兑换成功'; } return json(['code' => 0, 'data' => $list, 'msg' => '请求成功.']); } /** * 修改经纪人名称 */ public function upagent_name() { $token = $this->request->token; $param = $this->request->only(['name', 'id']); $agent = AgentUser::where([['root_id', '=', $token['root_org']], ['id', '=', $param['id']]])->find(); $agent->agent_name = $param['name']; $ms = $agent->save(); if ($ms) { return json(['code' => 0, 'msg' => '修改成功']); } else { return json(['code' => 1, 'msg' => '修改失败']); } } //经纪人核销申请列表 public function agent_wipen_list() { $token = $this->request->token; $data = $this->request->only(['page' => 1, 'limit' => 10, 'id', 'status']); $where[] = ['empid', '=', $token['employee_id']]; if (!empty($data['status'])) $where[] = ['status', '=', $data['status']]; $list = AgentApplyIntegral::with(['agent' => function ($query) { $query->field('id,agent_name'); }])->where($where)->page($data['page'], $data['limit'])->order('id desc')->select()->toArray(); $rule_type = 'reduce_integral'; $already_rule = CreditsSetting::where([['code', '=', $rule_type], ['root_id', '=', $token['root_org']]])->value('value'); $already_rule = $already_rule ? json_decode($already_rule, true) : ['jifen' => 1, 'money' => 1]; foreach ($list as $key => $val) { $list[$key]['money'] = bcdiv($val['integral'], $already_rule['jifen'], 1) * $already_rule['money']; $list[$key]['review_time'] = !empty($val['review_time']) ? date('Y-m-d H:i:s', $val['review_time']) : ''; $list[$key]['good_name'] = !empty($val['good_id']) ? AgentPrize::where([['root_id', '=', $token['root_org']], ['id', '=', $val['good_id']]])->value('good_name') : ''; } return json(['code' => 0, 'data' => $list, 'msg' => '请求成功.']); } //员工提报经纪人的核销申请 public function present_agent_wipen() { $token = $this->request->token; $data = $this->request->only(['id']); $ms = AgentApplyIntegral::where('id', $data['id'])->update(['status' => 2]); return json(['code' => 0, 'msg' => '提报成功']); } //员工单独查看下属经纪人积分头部统计 public function agent_intregral_total() { $token = $this->request->token; $data = $this->request->only(['agent_id']); $agtdata = AgentUser::where('id', $data['agent_id'])->find(); if (empty($agtdata)) return json(['code' => 1, 'msg' => '经纪人信息错误']); //$rule_type=$agtdata['type']==1?'reduce_integral':'wang_reduce_integral'; $rule_type = 'reduce_integral'; $already_rule = CreditsSetting::where([['code', '=', $rule_type], ['root_id', '=', $agtdata['root_id']]])->value('value'); $already_rule = $already_rule ? json_decode($already_rule, true) : ['jifen' => 1, 'money' => 1]; $integral = AgentIntegralLog::where([['agt_id', '=', $agtdata['id']]])->fieldRaw('sum(integral) as at,type')->group('type')->select()->toArray(); $all_integral = $all_already = 0; if (!empty($integral)) { foreach ($integral as $key => $val) { if ($val['type'] == 1) { $all_integral = $val['at'] ? $val['at'] : 0; } if ($val['type'] == 2) { $all_already = $val['at'] ? $val['at'] : 0; } } } $wait_integral = AgentIntegral::where([['agent_id', '=', $agtdata['id']], ['status', '=', 1]])->sum('integral'); $all_integral = $all_integral + $wait_integral; $no_already = AgentIntegralLog::where('agt_id', '=', $agtdata['id'])->order('id desc')->value('now_integral'); $no_already = $no_already ? $no_already : 0; $no_already_money = bcdiv($no_already, $already_rule['jifen'], 1) * $already_rule['money']; $data = array('all_intregral' => $all_integral, 'all_already' => $all_already, 'no_already' => $no_already, 'no_already_money' => $no_already_money); return json(['code' => 0, 'data' => $data, 'msg' => '请求成功.']); } /** * 客户列表 * @param state integer 1全部, 2待确认, 3未到访 4已到访,5定金,6签单,7无效 */ public function agent_customer_list() { $token = $this->request->token; $param = $this->request->only([ 'state' => '', 'page' => 1, 'limit' => 20, 'keyword' => '', 'date' => '', 'visit' => '', 'addtime' => '', 'following' => '', 'protected' => '', 'agent_id' => '', 'agent_source_type' => '' ]); $all_agt = AgentUser::where([['root_id', '=', $token['root_org']], ['agent_employee_id', '=', $token['employee_id']], ['is_review', '=', 2]])->column('id'); if (!empty($param['agent_id'])) { if (in_array($param['agent_id'], $all_agt)) { $agt_id = array($param['agent_id']); } else { return json(['code' => 1, 'data' => null, 'msg' => '经纪人参数错误']); } } else { $agt_id = $all_agt; } // 1)查询条件 $condition = [ ['agents_id', 'in', $agt_id], //['employee_id', '=', $token['employee_id']], ['org_id', 'in', orgSubIds($token['root_org'])], //['state', 'not in', Customer::changeState('无效', 'chaos')], //['died', '<>', 2] ]; empty($param['agent_source_type']) ?: $condition[] = ['agent_source_type', '=', $param['agent_source_type']]; // 可回收列表 if (!empty($param['protected'])) { $orgids = orgSubIds($this->request->token['org_id']); $condition[] = ['org_id', 'in', $orgids]; } // 2)状态筛选 // empty($param['state']) ? $logCondition[] = ['state', 'not in', CustomerVisitLog::changeState('无效', 'chaos')] : $condition[] = ['state', 'in', CustomerVisitLog::changeState($param['state'], 'chaos')]; // 5)待回访 empty($param['visit']) ?: $condition[] = empty($param['date']) ? ['revisit_time', '=', date('Y-m-d') . ' 00:00:00'] : ['revisit_time', '=', $param['date'] . ' 00:00:00']; // 6)录入时间筛选 empty($param['addtime']) ?: $condition[] = ['addtime', 'like', date('Y-m-d', strtotime($param['addtime'])) . '%']; //增加按跟进时间排序 $order = 'addtime desc'; empty($param['following']) ?: $order = 'last_contact_date ' . $param['following'] . ',' . $order; //关键词搜索 if (!empty($param['keyword'])) { $list = Customer::where($condition)->order($order)->field('id,name,community_name,phone')->select()->toArray(); $customersIdList = []; foreach ($list as $k => $v) { $str = $v['name'] . $v['community_name'] . $v['phone']; if (strpos($str, trim($param['keyword'])) !== false) $customersIdList[] = $v['id']; } } else { $customersIdList = Customer::where($condition)->order($order)->column('id'); } // 剔除掉未经历该状态的客户id if (!empty($param['state'])) { if (CustomerVisitLog::changeState($param['state']) == '回访' || $param['state'] == '有效') { // 查询经历过回访以外所有状态的客户id(有效) $expectCustomersIdList = CustomerVisitLog::where([['customer_id', 'in', $customersIdList], ['state', 'not in', CustomerVisitLog::changeState('回访', 'chaos')], ['employee_id', '=', $token['employee_id']]])->group('customer_id')->column('customer_id'); if ($param['state'] == '有效') { $customersIdList = $expectCustomersIdList; } else { $customersIdList = array_diff($customersIdList, $expectCustomersIdList); } } else { $customersIdList = CustomerVisitLog::where([['customer_id', 'in', $customersIdList], ['state', 'in', CustomerVisitLog::changeState($param['state'], 'chaos')]])->group('customer_id')->column('customer_id'); } } // 置顶数据获取 $top = CustomerTop::where([['root_id', '=', $token['root_org']], ['employee_id', '=', $token['employee_id']]])->where([['customer_id', 'in', $customersIdList]])->order('addtoptime asc')->column('customer_id'); // 新数据获取 $new = Customer::where([['id', 'in', $customersIdList], ['fresh', '=', 1]])->order($order)->column('id'); // 剔除不应该出现的客户 $top = array_diff($top, array_diff($top, $customersIdList)); // 剔除不应该出现的新客户 $new = array_diff($new, array_diff($new, $customersIdList)); // 剔除置顶的客户 $notTop = array_diff($customersIdList, $top); // 剔除新客户 $notNew = array_diff($notTop, $new); // 将置顶客户放置到前面 $customersIdList = array_unique(array_merge($top, $new, $notNew)); // 总数获取 $count = Customer::where($condition)->count(); //返回到特定位置 $id = input('id', 0); if ($id) { $ids = array_chunk($customersIdList, $param['limit']); foreach ($ids as $k => $v) { $a = false; foreach ($v as $k2 => $v2) { if ($id == $v2) { $a = true; $param['page'] = $k + 1; break; } } if ($a) break; } } // 分页 $pageIdList = array_slice($customersIdList, ($param['page'] - 1) * $param['limit'], $param['limit']); $condition[] = ['id', 'in', $pageIdList]; $customers = Customer::with(['designer', 'designerOrg', 'agent' => function ($query) { $query->field('id,agent_name'); }])->where($condition)->select(); // 总数获取 $count = $customers->count(); $customers = $customers->visible(['id', 'employee_id', 'name', 'sex', 'level', 'community_name', 'state', 'addtime', 'revisit_time', 'designer.name', 'designerOrg.name', 'fresh', 'square', 'last_contact_date', 'updatetime'])->toArray(); if (!empty($setting)) { $setting_content = json_decode($setting['content'], true); } else { $setting_content = []; } foreach ($customers as $k => $v) { $customers[$k]['un_protected'] = 0; $customers[$k]['protected_tips'] = ''; if (!empty($v['protected_to']) && time() > strtotime($v['protected_to'])) { $state_n = Customer::changeState($v['state'], 'n'); if (!empty($setting_content[$state_n]['state']) && $setting_content[$state_n]['state'] == 1) { $customers[$k]['un_protected'] = 1; $customers[$k]['protected_tips'] = '已过期'; } } if (!empty($v['protected_to']) && time() < strtotime($v['protected_to'])) { $day = floor((strtotime($v['protected_to']) - time()) / (24 * 3600)); $customers[$k]['protected_tips'] = $day ? '保护期' . $day . '天' : '即将过期'; } } $customers = array_combine(array_column($customers, 'id'), $customers); // 状态统计获取 $customersStateList = CustomerVisitLog::where([['customer_id', 'in', $pageIdList]])->group('state,customer_id')->field('count(state) as num, state, customer_id')->select()->toArray(); $customersState = []; foreach ($customersStateList as $s) { if (!isset($customersState[$s['customer_id']])) $customersState[$s['customer_id']] = ['count' => 0, 'shop' => 0, 'measure' => 0, 'activity' => 0, 'deposit' => 0, 'signed' => 0]; $customersState[$s['customer_id']]['count'] += $s['num']; // 到店,量房,活动,定金,签单 if ($s['state'] == '已到店') $customersState[$s['customer_id']]['shop'] += $s['num']; elseif ($s['state'] == '已量房') $customersState[$s['customer_id']]['measure'] += $s['num']; elseif ($s['state'] == '已到场') $customersState[$s['customer_id']]['activity'] += $s['num']; elseif ($s['state'] == '已交定') $customersState[$s['customer_id']]['deposit'] += $s['num']; elseif ($s['state'] == '已签单') $customersState[$s['customer_id']]['signed'] += $s['num']; } // 排序(按每页id顺序取值) $listData = []; foreach ($pageIdList as $customerId) { $customers[$customerId]['top'] = 0; $customers[$customerId]['is_new'] = $customers[$customerId]['fresh'] == 1 ? 1 : 0; $customers[$customerId]['addtoptime'] = null; if (in_array($customerId, $top)) $customers[$customerId]['addtoptime'] = 1; $customers[$customerId]['stateNum'] = $customersState[$customerId] ?? ['count' => 0, 'shop' => 0, 'measure' => 0, 'activity' => 0, 'deposit' => 0, 'signed' => 0]; $listData[] = $customers[$customerId]; } $data = [ 'list' => $listData, 'count' => $count ]; return json(['code' => 0, 'data' => $data, 'page' => $param['page'], 'employee_id' => $token['employee_id']]); } /** * 业务员上传分享文章 * type上传类型:1视频,2图片 */ public function upload_article() { $param = $this->request->only(['title', 'file_media_id', 'content', 'talkskill', 'type']); $token = $this->request->token; $param['root_id'] = $token['root_org']; $param['employee_id'] = $token['employee_id']; $param['addtime'] = time(); //上传文件 if (!empty($param['file_media_id'])) { $file_media_id = []; foreach ($param['file_media_id'] as $k => $v) { $file_media_id[$k] = [ 'serverId' => !empty($v['serverId']) ? $v['serverId'] : '', 'img' => !empty($v['img']) ? str_replace('https://' . config('app.ali_oss_bindurl') . '/', '', $v['img']) : '', 'video' => !empty($v['video']) ? str_replace('https://' . config('app.ali_oss_bindurl') . '/', '', $v['video']) : '' ]; } $param['down_status'] = 1; $param['file_media_id'] = json_encode($file_media_id); } $add = AgentArticle::create($param); AgentShareContent::create(['root_id' => $token['root_org'], 'employee_id' => $token['employee_id'], 'data_id' => $add->id, 'type' => 'AgentArticle']); Console::call('download', ['agent_article_file']); if ($add) { return json(['code' => 0, 'msg' => '保存成功']); } else { return json(['code' => 1, 'msg' => '保存失败']); } } /** * 分享内容展示列表 */ public function article_list() { $param = $this->request->only(['page' => 1, 'limit' => 10, 'date' => '', 'share_order' => '', 'clue_order' => '', 'keyword' => '']); $token = $this->request->token; $where = [ ['root_id', '=', $token['root_org']], ['employee_id', '=', $token['employee_id']] ]; if (!empty($param['date'])) { list($start, $end) = explode(' - ', $param['date']); $startdate = strtotime($start); $enddate = strtotime($end); $start_time = date('Y-m-d H:i:s', $startdate); $end_time = date('Y-m-d H:i:s', $enddate + 86400); $where[] = ['addtime', '>=', $start_time]; $where[] = ['addtime', '<', $end_time]; } $field = 'addtime'; $order = 'desc'; if (!empty($param['share_order'])) { $field = 'share_num'; $order = $param['share_order']; } if (!empty($param['clue_order'])) { $field = 'clue_num'; $order = $param['clue_order']; } $data = AgentShareContent::where($where)->order('addtime desc')->select()->toArray(); foreach ($data as &$item) { //分享量 $item['share_num'] = ShareLog::where([['type', '=', $item['type']], ['data_id', '=', $item['data_id']], ['agent_id', '<>', 'NULL']])->count(); //线索 $item['clue_num'] = CustomerClue::where([['pipe_type', '=', $item['type']], ['pipe_id', '=', $item['data_id']], ['agent_id', '<>', 0]])->count(); switch ($item['type']) { case 'Article': $find = Article::where([ ['root_id', '=', $token['root_org']], ['delete_time', '=', 0], ['publish', '=', 1], ['id', '=', $item['data_id']] ])->field('id,title,cover_img')->find(); if (empty($find)) { $item['content_id'] = $item['data_id']; $item['title'] = ''; $item['cover'] = ''; break; } $item['content_id'] = $find['id']; $item['title'] = $find['title']; $item['cover'] = $find['cover_img']; break; case 'MaterialCase': $find = MaterialCase::where([ ['root_id', '=', $token['root_org']], ['del', '=', 0], ['publish', '=', 1], ['id', '=', $item['data_id']] ])->field('id,title,cover_img')->find(); if (empty($find)) { $item['content_id'] = $item['data_id']; $item['title'] = ''; $item['cover'] = ''; break; } $item['content_id'] = $find['id']; $item['title'] = $find['title']; $item['cover'] = $find['cover_img']; break; case 'Video': $find = Video::where([ ['root_id', '=', $token['root_org']], ['delete_time', '=', 0], ['publish', '=', 1], ['id', '=', $item['data_id']] ])->field('id,title,video_url')->find(); if (empty($find)) { $item['content_id'] = $item['data_id']; $item['title'] = ''; $item['cover'] = ''; break; } $item['content_id'] = $find['id']; $item['title'] = $find['title']; $item['cover'] = $find['video_url']; break; case 'CompanyStrength': $find = CompanyStrength::where([ ['root_id', '=', $token['root_org']], ['del', '=', 0], ['publish', '=', 1], ['id', '=', $item['data_id']] ])->field('id,title,cover,difference')->find(); if (empty($find)) { $item['content_id'] = $item['data_id']; $item['title'] = ''; $item['cover'] = ''; $item['difference'] = 2; break; } $item['content_id'] = $find['id']; $item['title'] = $find['title']; $item['cover'] = $find['cover']; $item['difference'] = $find['difference']; break; case 'MaterialEvidence': $find = MaterialEvidence::where([ ['root_id', '=', $token['root_org']], ['del', '=', 0], ['publish', '=', 1], ['id', '=', $item['data_id']] ])->field('id,title,pics,difference')->find(); if (empty($find)) { $item['content_id'] = $item['data_id']; $item['title'] = ''; $item['cover'] = ''; $item['difference'] = 2; break; } $item['content_id'] = $find['id']; $item['title'] = $find['title']; $item['cover'] = $find['pics']; $item['difference'] = $find['difference']; break; case 'Building': $find = Building::where([ ['root_id', '=', $token['root_org']], ['del', '=', 0], ['id', '=', $item['data_id']] ])->field('id,community_id,name,cover')->find(); if (empty($find)) { $item['content_id'] = $item['data_id']; $item['title'] = ''; $item['cover'] = ''; break; } $item['content_id'] = $find['id']; $item['title'] = $find['name']; $item['cover'] = $find['cover']; break; case 'AgentArticle': $find = AgentArticle::where([ ['root_id', '=', $token['root_org']], ['id', '=', $item['data_id']] ])->field('id,title,file,type')->find(); if (empty($find)) { $item['content_id'] = $item['data_id']; $item['title'] = ''; $item['cover'] = ''; $item['file_type'] = ''; break; } $item['content_id'] = $find['id']; $item['title'] = $find['title']; $item['cover'] = $find['file']; $item['file_type'] = $find['type']; break; default: break; } } if (!empty($param['keyword'])) { foreach ($data as $key => $item) { if (stripos($item['title'], $param['keyword']) == false) { unset($data[$key]); } } } $sort = array_column($data, $field); $order == 'desc' ? array_multisort($sort, SORT_DESC, $data) : array_multisort($sort, SORT_ASC, $data); $data = array_slice($data, ($param['page'] - 1) * $param['limit'], $param['limit']); return json(['code' => 0, 'data' => $data]); } /** * 分享任务内容展示详情 */ public function article_details() { $id = $this->request->param('id'); $token = $this->request->token; $where = [ ['root_id', '=', $token['root_org']], ['employee_id', '=', $token['employee_id']], ['id', '=', $id] ]; $data = AgentArticle::where($where)->field('id,title,file,content,talkskill,type')->find(); return json(['code' => 0, 'data' => $data]); } /** * 审核分享记录列表 * type:Article文章、Video视频、MaterialCase案例、CompanyStrength实力、MaterialEvidence客户好评、Building楼盘、AgentArticle业务员上传 */ public function share_list() { //内容id $article_id = $this->request->param('id'); //类型来源 $type = $this->request->param('type'); $token = $this->request->token; $where = [ ['root_id', '=', $token['root_org']], ['employee_id', '=', $token['employee_id']], ['article_id', '=', $article_id], ['status', '=', 0], ['type', '=', $type] ]; $data = AgentShareLog::with(['user', 'agentUser'])->where($where)->field('id,employee_id,uid,img,addtime,remarks')->order('addtime desc')->select()->toArray(); return json(['code' => 0, 'data' => $data]); } /** * 员工下面所有经纪人分享记录列表 */ public function allshare_list() { $param = $this->request->only(['page' => 1, 'limit' => 10]); $token = $this->request->token; $where = [ ['root_id', '=', $token['root_org']], ['employee_id', '=', $token['employee_id']], ['status', '=', 0] ]; $data = AgentShareLog::with(['user', 'agentUser'])->where($where)->field('id,employee_id,uid,img,addtime,remarks')->page($param['page'], $param['limit'])->order('addtime desc')->select()->toArray(); foreach ($data as $key => $val) { $data[$key]['type_name'] = AgentType::where([['root_id', '=', $token['root_org']], ['id', '=', $val['type']]])->value('type_name'); } return json(['code' => 0, 'data' => $data]); } /** * 审核分享记录 */ public function validate_share() { $share_id = $this->request->param('share_id'); $status = $this->request->param('status'); $token = $this->request->token; // $token['employee_id'] = 4165; // $token['root_org'] = 994; $where = [ ['root_id', '=', $token['root_org']], ['employee_id', '=', $token['employee_id']], ['id', '=', $share_id], ['status', '=', 0] ]; $log = AgentShareLog::where($where)->find(); if (empty($log)) { return json(['code' => 1, 'msg' => '分享记录已被审核']); } else { //审核通过增加积分 if ($status == 1) { $agent = AgentUser::where(['uid' => $log['uid'], 'root_id' => $token['root_org']])->field('id,type')->find(); //$type = $agent['type'] == 1 ? 'ptagentshare_integral' : 'whagentshare_integral'; $type = 'ptagentshare_integral'; $rule = AgentType::where([['root_id', '=', $token['root_org']], ['id', '=', $agent['type']]])->find(); $rule_list = !empty($rule['count']) ? json_decode($rule['count'], true) : ''; $jifen = !empty($rule_list) ? $rule_list[$type] : 0; //$jifen = CreditsSetting::where(['code' => $type, 'root_id' => $token['root_org']])->value('value'); if (!empty($jifen)) { // switch($log['type']){ // case 'Article': // $new = new Article(); // $field = 'title'; // break; // case 'Video': // $new = new Video(); // $field = 'title'; // break; // case 'MaterialCase': // $new = new MaterialCase(); // $field = 'title'; // break; // case 'CompanyStrength': // $new = new CompanyStrength(); // $field = 'title'; // break; // case 'MaterialEvidence': // $new = new MaterialEvidence(); // $field = 'title'; // break; // case 'Building': // $new = new Building(); // $field = 'name'; // break; // case 'AgentArticle': // $new = new AgentArticle(); // $field = 'title'; // break; // default: // break; // } // $model = $new; // $title = $model->where('id', $log['article_id'])->find(); $add = [ 'agent_id' => $agent['id'], 'type' => 5, 'integral' => $jifen, 'addtime' => time(), //'state' => '审核《'.$title[$field].'》上传记录', 'state' => '审核上传记录', 'customer_id' => NULL ]; AgentIntegral::insert($add); $log->score = $jifen; } } $log->status = $status == 1 ? 1 : 2; $log->verify_time = time(); $log->save(); return json(['code' => 0, 'msg' => '审核成功']); } } /** * 分享内容开关键 */ public function disable($id) { $token = $this->request->token; $where = [ ['root_id', '=', $token['root_org']], ['employee_id', '=', $token['employee_id']], ['id', '=', $id] ]; $data = AgentShareContent::where($where)->field('disable')->find(); $data->disable = $data['disable'] == 1 ? 0 : 1; $data->save(); return json(['code' => 0, 'msg' => '操作成功']); } /** * 业务员端获取线索列表来自经纪人分享 * state:0、1、2 * phone:has、hasno * getDate:Y-m-d */ public function clue_list($page, $limit, $getDate = '', $state = '', $phone = '') { $token = $this->request->token; $count = [ 'count_clue' => 0, 'creat_clue' => 0, 'day_clue' => 0 ]; //总线索 $count['count_clue'] = CustomerClue::where([['employee_id', '=', $token['employee_id']], ['agent_id', '>', 0]])->count(); //已建档 $count['creat_clue'] = CustomerClue::where([['employee_id', '=', $token['employee_id']], ['agent_id', '>', 0], ['state', '=', 1]])->count(); //今日线索 $count['day_clue'] = CustomerClue::where([['employee_id', '=', $token['employee_id']], ['agent_id', '>', 0], ['addtime', 'between', [date('Y-m-d 00:00:00'), date('Y-m-d 23:59:59')]]])->count(); $condition = [ ['employee_id', '=', $token['employee_id']], ['agent_id', '>', 0], //['pipe_type', '=', 'agentArticle'] ]; if (isset($state)) $condition[] = ['state', '=', $state]; if (!empty($getDate)) $condition[] = ['addtime', 'like', $getDate . '%']; if ($phone == 'has') $condition[] = ['phone', 'not null', '']; elseif ($phone == 'hasno') $condition[] = ['phone', 'null', '']; $data = CustomerClue::field('id,uid,phone,addtime,updatetime,state')->with(['user'])->withCount(['subscribe' => function ($query) use ($token) { $query->where('root_id', $token['root_org']); }, 'footprints'])->where($condition)->order('updatetime desc')->page($page, $limit)->select(); foreach ($data as $k => $v) { $data[$k]['updatetime'] = $v['updatetime'] ? explode(' ', $v['updatetime']) : explode(' ', $v['addtime']); } return json(['code' => 0, 'msg' => '获取成功', 'data' => ['count' => $count, 'data' => $data]]); } /** * 员工设置内容为分享任务 * type:Article文章、Video视频、MaterialCase案例、CompanyStrength实力、MaterialEvidence客户好评、Building楼盘 */ public function set_share_content($content_id, $type) { $token = $this->request->token; $data = AgentShareContent::where(['root_id' => $token['root_org'], 'employee_id' => $token['employee_id'], 'data_id' => $content_id, 'type' => $type])->find(); if (!empty($data)) { $data->delete(); return json(['code' => 0, 'msg' => '已取消任务']); } else { AgentShareContent::create(['root_id' => $token['root_org'], 'employee_id' => $token['employee_id'], 'data_id' => $content_id, 'type' => $type]); return json(['code' => 0, 'msg' => '设置成功']); } } }