123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673 |
- <?php
- namespace app\client\controller;
- use app\event\FootPrints;
- use app\model\Activity as ActivityModel;
- use app\model\ActivityOrder;
- use app\model\Footprints as FootprintsModel;
- use app\model\Employee;
- use app\model\Customer;
- use app\model\CustomerClue;
- use app\model\Org;
- use app\model\Setting;
- use app\model\User;
- use app\model\CustomerVisitLog;
- use app\event\Msg;
- use app\model\CustomersSubscribe;
- use toolkits\Aec;
- use app\model\EmployeeMsg;
- use app\model\ActivitySign;
- class Activity extends Base
- {
- /*
- * 活动列表
- * type : 报名->1,收定->2
- */
- public function list()
- {
- $param = $this->request->only(['page', 'type']);
- $data = ActivityModel::withAttr('timestate')->where(['type' => $param['type'], 'del' => 0, 'show' => 1, 'root_id' => request()->token['root_org']])
- ->field('id,cover,title,start_date,end_date,end_date as timestate')
- ->order(['id' => 'desc'])
- ->page($param['page'], 6)
- ->select();
- return json(['code' => 0, 'data' => $data, 'msg' => '获取成功']);
- }
- public function details($id)
- {
- $token = request()->token;
- $data = ActivityModel::where(['id' => $id, 'del' => 0, 'root_id' => $token['root_org']])->field('id,cover,title,content,type,start_date,end_date, end_date as timestate,view,money,address,poster,cate,show')->find();
- // 添加足迹
- if (!empty($token['uid']) && !$token['isEmployee']) {
- event(new FootPrints($token['uid'], $token['share_employee'] ?? 0, $token['share_org'] ?? 0, $data));
- }
- // 判断是否交定
- $hadPay = ActivityOrder::where(['user_id' => $token['uid'], 'activity_id' => $data['id'], 'state' => 1])->count();
- if ($hadPay) $data['had_pay'] = 1;
- else $data['had_pay'] = 0;
- //是否报名
- $data['is_activity'] = 0;
- // $aw[] = ['uid','=',$token['uid']];
- // $org = Org::where([['path', 'like', $token['root_org'] . '-%']])->column('id');
- // $aw[] = ['org_id','in',$org];
- // $is = Customer::where($aw)->value('id');
- $cw[] = ['type', 'in', ['activity_sign_up', 'activitySignUp']];
- $is = EmployeeMsg::where($cw)->whereRaw('data->"$.aid"=' . $id . ' and data->"$.uid"=' . $token['uid'])->order('id desc')->find();
- if ($is) {
- $data['is_activity'] = 1;
- }
- $qrcode = ActivitySign::where([['aid', '=', $id], ['uid', '=', $token['uid']]])->value('qrcode');
- $ali_oss_bindurl = config('app.ali_oss_bindurl');
- $url = 'https://' . $ali_oss_bindurl . '/';
- $data['qrcode'] = $qrcode ? $url . $qrcode : '';
- ActivityModel::where('id', $id)->inc('view')->update();
- return json(['code' => 0, 'data' => $data, 'msg' => '获取成功']);
- }
- /*
- * 活动报名客户列表
- * auth kjl
- * date 2022/01/10
- * type已交定,已到访,未到访已签单
- * 查询自己跟踪的所有客户
- */
- public function activity_users()
- {
- $param = $this->request->only(['id', 'type', 'p', 'pagesize']);
- $token = request()->token;
- $param['type'] = $param['type'] ?: '全部';
- // $where[] = ['reg_info','like','%aid'.'":'.$param['id'].',%'];
- $where[] = ['pipe_type', 'in', ['activity_sign_up', 'activitySignUp']];
- $where[] = ['employee_id', '=', $token['employee_id']]; //自己邀请的人员
- $field = 'customer.id,customer.uid,customer.state,customer.verify,customer.verify_employee_id,customer.verify_addtime,employee.root_id';
- if ($param['type'] && $param['type'] != '全部') {
- $c_where[] = ['customer.state', 'like', '%' . $param['type'] . '%'];
- $c_where[] = ['employee.root_id', '=', $token['root_org']];
- $c_where[] = ['customer.uid', '>', 0];
- $uids = Customer::where($c_where)->withJoin(['employee' => []], 'inner')
- ->field($field)->select()->toArray();
- if (!$uids) return json(['code' => 0, 'data' => [], 'msg' => '获取成功']);
- $where[] = ['uid', 'in', array_column($uids, 'uid')];
- }
- $footprints = FootprintsModel::with(['customer', 'employee', 'user'])->where($where)->where(function ($query) use ($param) {
- $query->where("reg_info->'$.aid'=" . $param['id']);
- })->field('id,uid,employee_id,reg_info reg_infos,addtime')->order('id', 'desc')->page($param['p'], $param['pagesize'])->select()->toArray();
- $verify = [0 => '未核实', 1 => '核实有效', 2 => '核实无效'];
- $employees = Employee::where([['root_id', '=', $token['root_org']]])->column('name', 'id');
- foreach ($footprints as $k => $v) {
- $json = json_decode($v['reg_infos'], true);
- unset($footprints[$k]['reg_infos']);
- $footprints[$k]['name'] = $json['name'];
- $footprints[$k]['phone'] = $json['phone'];
- $footprints[$k]['addtime'] = date('Y-m-d', strtotime($v['addtime']));
- $footprints[$k]['state'] = $v['customer'] ? $v['customer']['state'] : '';
- $footprints[$k]['verify'] = $v['customer'] ? $v['customer']['verify'] : 0;
- $footprints[$k]['verify_name'] = $v['customer'] ? $verify[$v['customer']['verify']] : '未核实';
- $footprints[$k]['verify_employee_id'] = $eid = $v['customer'] ? $v['customer']['verify_employee_id'] : 0;
- $footprints[$k]['verify_employee_name'] = !$eid ? '' : $employees[$eid];
- unset($footprints[$k]['customer']);
- }
- return json(['code' => 0, 'data' => $footprints, 'msg' => '获取成功']);
- }
- /*
- * 确认到访客户列表
- * auth kjl
- * date 2022/01/10
- * is_manager是否是管理者,org_id组织结构id
- * 管理者查询本部门所有人员的客户列表
- * 非管理者查询自己的客户列表
- */
- public function confirm()
- {
- $param = $this->request->only(['id', 'p', 'pagesize']);
- $token = request()->token;
- // $token['employee_id'] = 1;
- // $token['root_org'] = 1;
- // $token['is_manager'] = 1;
- if ($token['is_manager']) {
- $u_where[] = ['org_id', '=', $token['root_org']];
- } else {
- $u_where[] = ['id', '=', $token['employee_id']];
- }
- $eids = Employee::where($u_where)->field('id,name')->select()->toArray();
- $where[] = ['employee_id', 'in', array_column($eids, 'id')];
- $where[] = ['pipe_type', 'in', ['activity_sign_up', 'activitySignUp']];
- // $where[] = ['reg_info','like','%aid'.'":"'.$param['id'].'"%'];
- $p = (int)$param['p'] ?: 1;
- $pagesize = (int)$param['pagesize'] ?: 10;
- $footprints = FootprintsModel::with(['customer', 'employee', 'user'])->where($where)->where(function ($query) use ($param) {
- $query->where("reg_info->'$.aid'=" . $param['id']);
- })->field('id,uid,employee_id,reg_info reg_infos,addtime')->order('id', 'desc')->page($p, $pagesize)->select()->toArray();
- $verify = [0 => '未核实', 1 => '核实有效', 2 => '核实无效'];
- $employees = Employee::where([['root_id', '=', $token['root_org']]])->column('name', 'id');
- foreach ($footprints as $k => $v) {
- $json = json_decode($v['reg_infos'], true);
- unset($footprints[$k]['reg_infos']);
- $footprints[$k]['name'] = $json['name'];
- $footprints[$k]['phone'] = $json['phone'];
- $footprints[$k]['addtime'] = date('Y-m-d', strtotime($v['addtime']));
- $footprints[$k]['state'] = $v['customer'] ? $v['customer']['state'] : '';
- $footprints[$k]['verify'] = $v['customer'] ? $v['customer']['verify'] : 0;
- $footprints[$k]['verify_name'] = $v['customer'] ? $verify[$v['customer']['verify']] : '未核实';
- $footprints[$k]['verify_employee_id'] = $eid = $v['customer'] ? $v['customer']['verify_employee_id'] : 0;
- $footprints[$k]['verify_employee_name'] = !$eid ? '' : $employees[$eid];
- unset($footprints[$k]['customer']);
- }
- return json(['code' => 0, 'data' => $footprints, 'msg' => '获取成功']);
- }
- /*
- * 核实是否到访
- * auth kjl
- * date 2022/01/11
- */
- public function verify()
- {
- $param = $this->request->only(['uid', 'verify']);
- $token = request()->token;
- Customer::update(['verify' => $param['verify'], 'verify_employee_id' => $token['employee_id']], ['uid' => $param['uid']]);
- return json(['code' => 0, 'msg' => '操作成功']);
- }
- /*
- * 活动排行榜
- * auth kjl
- * date 2022/01/11
- * type 邀约,到访,收订,签单
- */
- public function ranking_list()
- {
- $param = $this->request->only(['id', 'type', 'is_org', 'p', 'pagesize']);
- $token = request()->token;
- // $token['employee_id'] = 1;
- // $token['root_org'] = 1;
- if ($param['type'] && $param['type'] != '邀约') {
- $cc_where[] = ['state', 'like', '%' . $param['type'] . '%'];
- $uids = Customer::where($cc_where)->column('uid');
- $where[] = ['uid', 'in', $uids];
- }
- //团队排行
- if (isset($param['is_org']) && $param['is_org']) {
- $ee_where[] = ['org_id', '=', $token['root_org']];
- $eids = Employee::where($ee_where)->column('id');
- $where[] = ['employee_id', 'in', $eids];
- }
- //排行榜
- $where[] = ['pipe_type', 'in', ['activity_sign_up', 'activitySignUp']];
- $res = FootprintsModel::with(['employee'])->where($where)->where(function ($query) use ($param) {
- $query->where("reg_info->'$.aid'=" . $param['id']);
- })->field("employee_id,count('id') as count")->group('employee_id')->order("count desc")->select()->toArray();
- foreach ($res as $k => $v) {
- $res[$k]['ranking'] = $k + 1;
- $res[$k]['headimgurl'] = $v['img'];
- }
- $result['my_ranking'] = ['count' => 0, 'employee_name' => '', 'headimgurl' => '', 'ranking' => '无排名', 'employee_id' => $token['employee_id']];
- foreach ($res as $k => $v) {
- if ($v['employee_id'] == $token['employee_id']) {
- $result['my_ranking']['count'] = $v['count'];
- $result['my_ranking']['ranking'] = $v['ranking'];
- $result['my_ranking']['headimgurl'] = $v['headimgurl'];
- $result['my_ranking']['employee_name'] = $v['employee_name'];
- break;
- }
- }
- $res = $res ? array_slice($res, ($param['p'] - 1) * $param['pagesize'], $param['pagesize']) : [];
- // if ($res) {
- // $c_where[] = ['id','in',array_column($res,'employee_id')];
- // $user = Employee::with('user')->where($c_where)->select()->toArray();
- // $users = array_column($user,'user','id');
- // $names = array_column($user,'name','id');
- // foreach ($res as $k => $v) {
- // $res[$k]['headimgurl'] = isset($users[$v['employee_id']]) ? $users[$v['employee_id']]['headimgurl'] : '';
- // $res[$k]['employee_name'] = isset($names[$v['employee_id']]) ? $names[$v['employee_id']] : '';
- // }
- // }
- $result['ranking'] = $res;
- // $result['my_ranking']['headimgurl'] = isset($users[$param['eid']]) ? $users[$param['eid']]['headimgurl'] : '';
- // $result['my_ranking']['employee_name'] = isset($names[$param['eid']]) ? $names[$param['eid']] : '';
- return json(['code' => 0, 'data' => $result, 'msg' => '获取成功']);
- }
- /*
- * 团队邀约排行榜
- * auth kjl
- * date 2022/01/11
- * id活动id,type邀约,到访,收订,签单,eid,p,pagesize,org_id
- */
- public function team_ranking_list()
- {
- $param = $this->request->only(['id', 'type', 'p', 'pagesize']);
- $token = request()->token;
- $token['root_org'] = 1;
- if ($param['type'] && $param['type'] != '邀约') {
- $cc_where[] = ['state', 'like', '%' . $param['type'] . '%'];
- $uids = Customer::where($cc_where)->column('uid');
- $where[] = ['footprints.uid', 'in', $uids];
- }
- $org_info = Org::find($token['root_org'])->toArray();
- $leave = explode('-', $org_info['path'])[0];
- // $where[] = ['f.reg_info','like','%aid'.'":"'.$param['id'].'"%'];//活动id
- $where[] = ['org.path', 'like', $leave . '-%']; //全公司
- $field = 'org.id org_id,org.name,footprints.id,count(footprints.id) count';
- $row = Employee::withJoin(['org' => [], 'footprints' => []], 'inner')
- // ->where($where)
- // ->where(function ($query) use ($param) {
- // $query->where("footprints.reg_info->'$.aid'=".$param['id']);
- // })
- ->field('count(footprints.id) count')
- // ->group('employee.org_id')
- // ->order('count desc')
- ->fetchsql()
- ->select();
- // $row = Db::table('ays_employee e')
- // ->join('ays_org o','o.id=e.org_id')
- // ->join('ays_footprints f','f.employee_id=e.id')
- // ->where($where)
- // ->field($field)
- // ->group('e.org_id')
- // ->order('count desc')
- // ->select()->toArray();
- $res['my_team'] = ['ranking' => '无排名', 'org_id' => $param['org_id'], 'name' => '', 'count' => 0];
- foreach ($row as $k => $v) {
- $row[$k]['ranking'] = $k + 1;
- if ($v['org_id'] == $token['root_org']) {
- $res['my_team']['ranking'] = $row[$k]['ranking'];
- $res['my_team']['name'] = $v['name'];
- $res['my_team']['count'] = $v['count'];
- }
- }
- $res['team'] = $row;
- return json(['code' => 0, 'data' => $res, 'msg' => '获取成功']);
- }
- /*
- * 小程序活动列表页面
- */
- public function activity_list()
- {
- $page = input('page', 1);
- $limit = input('limit', 10);
- $token = request()->token;
- // $token['root_org'] = 23;
- $w[] = ['root_id', '=', $token['root_org']];
- $w[] = ['del', '=', 0];
- $w[] = ['show', '=', 1];
- $data = ActivityModel::where($w)
- ->field('id,cover,title,start_date,end_date,cate')
- ->order(['end_date' => 'desc'])
- ->page($page, $limit)
- ->select()->toArray();
- $count = ActivityModel::where($w)->count();
- return json(['code' => 0, 'data' => $data, 'count' => $count, 'msg' => '获取成功']);
- }
- /*
- * 活动报名
- * date 2022-03-31
- * // $token['uid'] = 1;
- // $token['root_org'] = 1;
- // $token['isEmployee'] = 0;
- 如果客户已经是别人的客户,仍然可以报名,需要给分享人发送消息提醒
- */
- public function activity_sign()
- {
- $token = request()->token;
- if($token['isEmployee']) return json(['code' => 1, 'msg' => '业务员无法参加活动', 'data' => '业务员无法参加活动']);
- $param = $this->request->only(['phone', 'aid', 'uid']);
- //查询是否已经报名
- $sign_where[] = ['aid', '=', $param['aid']];
- $sign_where[] = ['uid', '=', $token['uid']];
- $sign = ActivitySign::where($sign_where)->findOrEmpty();
- if (!$sign->isEmpty()) return json(['code' => 1, 'msg' => '已报名该活动', 'data' => '已报名该活动']);
- $aec = new Aec(config('app.aec_key'), config('app.aec_iv'));
- $phone = $aec->encrypt($param['phone']);
- //活动已经结束无法报名
- $info = ActivityModel::where('id', $param['aid'])->find();
- if ($info['del'] == 1 || $info['show'] == 0 || date('Y-m-d') > $info['end_date']) {
- return json(['code' => 1, 'msg' => '活动结束或已下架,无法报名']);
- }
- $emp = Employee::where([['root_id', '=', $token['root_org']], ['uid', '=', $param['uid']], ['state', '=', '在职']])->find();
- $share_employee_id = $emp->id;
- // 设计师能否报备、获取客户
- $de_where[] = ['root_id', '=', $token['root_org']];
- $de_where[] = ['name', '=', 'designer_get_customer'];
- $info_de_where = Setting::where($de_where)->findOrEmpty();
- $org_type = Org::where('id', '=', $emp['org_id'])->value('org_type');
- if (!$info_de_where->isEmpty() && $org_type == 2) {
- if ((int)$info_de_where['content'] != 1) {
- return json(['code' => 1, 'msg' => '请联系业务员进行报名']);
- }
- }
- //查询是否已经建档
- $orgs = Org::where([['path', 'like', $token['root_org'] . '-%']])->column('id');
- $aw[] = ['phone|phone1|phone2', '=', $phone];
- $aw[] = ['org_id', 'in', $orgs];
- $aw[] = ['is_resource','=',0];
- $customer_list = Customer::where($aw)->select()->toArray();
- $aw[] = ['employee_id','=',$share_employee_id];
- $customer = Customer::where($aw)->findOrEmpty();
- $have_customer = [];
- foreach($customer_list as $k => $v) {
- if ($v['employee_id'] > 0 && $v['employee_id'] != $share_employee_id) {
- $have_customer[] = $v;
- }
- }
-
- $root_id = request()->token['root_org'];
- $empcrm_repeat[] = ['root_id', '=', $root_id];
- $empcrm_repeat[] = ['name', '=', 'empcrm_customer_repeat'];
- $repeat_setting = Setting::where($empcrm_repeat)->findOrEmpty();
- //判断同部门
- if (!$repeat_setting->isEmpty()) {
- $repeat_org = explode(',', $repeat_setting['content']);
- if (in_array($emp['org_id'], $repeat_org)) {
- // 需要验证
- if (!empty($have_customer)) {
- foreach ($have_customer as $ex) {
- if (in_array($ex['org_id'], $repeat_org)) {
- $have_emp = Employee::where('id', '=', $ex['employee_id'])->value('name');
- return json(['code' => 1, 'msg' => '您已是' . $have_emp . '的客户,请联系他预约']);
- }
- }
- }
- }
- }
- // 客户跟进保护规则
- /* $c_where[] = ['phone|phone1|phone2', '=', $phone];
- $c_where[] = ['org_id', 'in', $orgs];
- $c_where[] = ['is_resource','=',0];
- $c_where[] = ['employee_id', 'not null', null];
- $c_where[] = ['employee_id', '<>', $share_employee_id];
- $have_customer = Customer::where($c_where)->select()->toArray(); */
- $customer_ids = array_column($have_customer, 'id');
- if (!empty($customer_ids)) {
- $yylf_state = CustomerVisitLog::changeState('预约量房', 'chaos');
- $lf_state = CustomerVisitLog::changeState('已量房', 'chaos');
- $yydc_state = CustomerVisitLog::changeState('预约活动', 'chaos');
- $dc_state = CustomerVisitLog::changeState('已到场', 'chaos');
- $yydd_state = CustomerVisitLog::changeState('预约到店', 'chaos');
- $dd_state = CustomerVisitLog::changeState('已到店', 'chaos');
- $sub_setting = Setting::where([['root_id', '=', $token['root_org']], ['name', '=', 'subscribe_protected']])->findOrEmpty();
- if (!$sub_setting->isEmpty()){
- $setting_content = json_decode($sub_setting['content'], true);
- foreach ($setting_content as $k_s => $v_s){
- if (!empty($v_s['state']) && !empty($v_s['day']) && $v_s['state'] == 1){
- $continue = false;
- $sub_state = 0;
- $errmsg = '您已有预约,无需重复预约';
- $check_log = false;
- $check_where = [];
- switch ($k_s){
- case 'liangfang':
- $sub_state = 3;
- $visit_state = 1;
- $check_log = true;
- $check_where[] = ['customer_id', 'in', $customer_ids];
- $check_where[] = ['addtime', '>', date('Y-m-d H:i:s',time() - 24*3600*$v_s['day'])];
- $check_where[] = ['employee_id', 'in', array_column($have_customer, 'employee_id')];
- $check_where[] = ['state', 'in', $lf_state];
- break;
- case 'yliangfang': //预约量房
- $sub_state = 3;
- $visit_state = 0;
- break;
- case 'daodian':
- $sub_state = 1;
- $visit_state = 1;
- $check_log = true;
- $check_where[] = ['customer_id', 'in', $customer_ids];
- $check_where[] = ['addtime', '>', date('Y-m-d H:i:s',time() - 24*3600*$v_s['day'])];
- $check_where[] = ['employee_id', 'in', array_column($have_customer, 'employee_id')];
- $check_where[] = ['state', 'in', $dd_state];
- break;
- case 'ydaodian':
- $sub_state = 1;
- $visit_state = 0;
- break;
- case 'daochang':
- $sub_state = 2;
- $visit_state = 1;
- $check_log = true;
- $check_where[] = ['customer_id', 'in', $customer_ids];
- $check_where[] = ['addtime', '>', date('Y-m-d H:i:s',time() - 24*3600*$v_s['day'])];
- $check_where[] = ['employee_id', 'in', array_column($have_customer, 'employee_id')];
- $check_where[] = ['state', 'in', $dc_state];
- break;
- case 'ydaochang':
- $sub_state = 2;
- $visit_state = 0;
- break;
- default:
- $continue = true;
- break;
- }
- if ($continue) continue;
- // 查询保护时间段内添加的预约量房记录
- unset($v_where);
- $v_where[] = ['customer_id', 'in', $customer_ids];
- $v_where[] = ['addtime', '>', date('Y-m-d H:i:s',time() - 24*3600*$v_s['day'])];
- $v_where[] = ['employee_id', 'in', array_column($have_customer, 'employee_id')];
- $v_where[] = ['type', '=', $sub_state];
- $v_where[] = ['state', '=', $visit_state];
- $sub_list = CustomersSubscribe::where($v_where)->select()->toArray();
- if (!empty($sub_list)){
- return json(['code' => 1, 'msg' => $errmsg]);
- }
- if ($check_log) {
- $log_list = CustomerVisitLog::where($check_where)->select()->toArray();
- if (!empty($log_list)){
- return json(['code' => 1, 'msg' => $errmsg]);
- }
- }
- }
- }
- }
- }
- //如果手机号客户没建档,则建档分配给分享人
- //如果手机号客户已建档没有分配业务员,则直接分配给分享人
- //如果手机号客户已建档已分配,则不变,给分享人发消息通知即可
- $uid = $param['uid']; //分享人的uid ,
- $need_new = false; // 是否需要创建新客户
- $param['employee_id'] = $share_employee_id;
- if ($customer->isEmpty()) {
- //分享人没有该客户 查询公海
- $waters = Customer::where([['phone|phone1|phone2', '=', $phone],['org_id', 'in', $orgs],['is_resource','=',0],['employee_id','null',null]])->findOrEmpty();
- if ($waters->isEmpty()) {
- $need_new = true; // 公海没有
- }else{
- Customer::where([['id', 'in', $waters->id]])->update(['employee_id' => $share_employee_id, 'org_id' => $emp->org_id, 'state' => '待确认', 'remark' => '公海获取', 'fresh' => 1, 'ext->ext6' => '', 'designer_id' => null]);
- }
- }else{
- //已经有该客户
- }
- //邀约日期默认活动开始日期
- $adate = ActivityModel::where('id', $param['aid'])->value('start_date');
- $param['date'] = $adate <= date('Y-m-d') ? date('Y-m-d') : $adate;
- if ($need_new) {
- //建档
- $save = [];
- $save['uid'] = $param['uid'];
- $save['employee_id'] = $param['employee_id'];
- $save['clue_id'] = CustomerClue::where([['uid', '=', $token['uid']], ['org_id', 'in', $orgs], ['employee_id', '=', $param['employee_id']]])->value('id') ?: 0;
- $save['phone'] = $phone;
- $save['name'] = User::where('id', $token['uid'])->value('nickname') ?: '';
- $save['state'] = 0;
- $save['org_id'] = Employee::where('id', $param['employee_id'])->value('org_id');
- $save['remark'] = '活动报名建档';
- $save['sex'] = 1;
- $save['aid'] = $param['aid'];
- $cid = Customer::insertGetId($save);
- $this->addFirstCustoemrVisitLog($cid);
- if ($save['clue_id']) {
- CustomerClue::where('id', $save['clue_id'])->update(['state' => 1]);
- }
- } else {
- $cid = $customer->id;
- }
- //查询是否可以报名
- $sw[] = ['type', '=', 2];
- $sw[] = ['state', '=', 0];
- $sw[] = ['customer_id', '=', $cid];
- $sw[] = ['aid', '>', 0];
- $check = CustomersSubscribe::where($sw)->findOrEmpty();
- //if(!$check->isEmpty()) return json(['code' => 1, 'msg' => '您有已报名的活动未参加,请联系业务员!']);
- //建档成功后直接邀约
- //已经邀约过无法重复邀约
- $visitlog = CustomerVisitLog::where([['aid', '=', $param['aid']], ['customer_id', '=', $cid]])->find();
- if ($cid && $param['date'] && !$visitlog) {
- $save = [];
- $save['customer_id'] = $cid;
- $save['type'] = 3;
- $save['next_contact_date'] = $param['date'];
- $save['remark'] = '活动邀约';
- $save['employee_id'] = $param['employee_id'];
- $save['user_id'] = $param['uid'];
- $save['state'] = 6;
- $save['aid'] = $param['aid'];
- CustomerVisitLog::insertGetId($save);
- // $update['state'] = 0;//已经报备后的客户状态不变
- $update['aid'] = $param['aid'];
- $update['revisit_time'] = $param['date'];
- $update['last_contact_date'] = date('Y-m-d');
- $update['updatetime'] = date('Y-m-d H:i:s');
- $update['fresh'] = 0;
- Customer::where('id', $cid)->update($update);
- }
- $info = User::where('id', $token['uid'])->find()->toArray();
- $str = json_encode(['uid' => (int)$token['uid'], 'aid' => (int)$param['aid']]);
- if ($uid != $param['uid']) {
- //如果报名客户是其他业务员的客户,需要给分享人发送消息提醒
- $fenxiangren = Employee::where([['uid', '=', $uid], ['root_id', '=', $token['root_org']], ['state', '=', '在职']])->find()->toArray();
- $yewuyan = Employee::where([['uid', '=', $param['uid']], ['root_id', '=', $token['root_org']], ['state', '=', '在职']])->find()->toArray();
- $con = $yewuyan['name'] . '的客户在您分享的活动中报名';
- event(new Msg($fenxiangren['id'], $con, 'activitySignUp', $str));
- $con = '您的客户‘' . $info['nickname'] . '’通过‘' . $fenxiangren['name'] . '’分享的活动报名';
- event(new Msg($yewuyan['id'], $con, 'activitySignUp', $str));
- } else {
- $a = ActivityModel::where('id', $param['aid'])->find()->toArray();
- $con = '您的客户' . $info['nickname'] . '已报名您分享的《' . $a['title'] . '》活动';
- event(new Msg($param['employee_id'], $con, 'activitySignUp', $str));
- }
- //预约表添加数据
- $subscribe = [
- 'customer_id' => $cid,
- 'subscribe_date' => $param['date'],
- 'employee_id' => $param['employee_id'],
- 'type' => 2,
- 'aid' => (int)$param['aid'],
- 'org_id' => Employee::where('id', $param['employee_id'])->value('org_id')
- ];
- CustomersSubscribe::insertGetId($subscribe);
- //生成报名二维码
- //二维码内容,活动id,报名人uid
- $qrcode_con = $param['aid'] .'&'.$cid.'&'.$token['uid'];
- $cate = ActivityModel::where('id',$param['aid'])->value('cate');
- $qrcode_con = $qrcode_con.'&'.$cate;
- //生成二维码
- $name = uniqid() . '.jpg';
- $path = 'activityqrcode/' . $name;
- $img = qrcode($qrcode_con, 'upload/'.$name);
- $res = ossUpload($path, 'upload/'.$name);
- @unlink('upload/'.$name); //删除本地文件
- ActivitySign::insertGetId([
- 'aid' => $param['aid'],
- 'root_id' => $token['root_org'],
- 'uid' => $token['uid'],
- 'share_uid' => $param['uid'],
- 'share_employee_id' => $param['employee_id'],
- 'qrcode' => $path,
- 'qrcode_con' => $qrcode_con,
- 'addtime' => date('Y-m-d H:i:s')
- ]);
- $ali_oss_bindurl = config('app.ali_oss_bindurl');
- $url = 'https://' . $ali_oss_bindurl . '/'.$path;
- return json(['code' => 0, 'msg' => '报名成功','url'=>$url]);
- }
- /**
- * 新建客户时添加一条跟进记录
- * $id 客户id
- */
- public function addFirstCustoemrVisitLog($id)
- {
- $token = $this->request->token;
- $info = Customer::where('id', $id)->find();
- $name = Employee::where('id', $info->employee_id)->value('name');
- $remark = '业务员' . $name . '对客户' . $info->name . '进行报备';
- $save = [
- 'customer_id' => $id,
- 'type' => '',
- 'next_contact_date' => date('Y-m-d'),
- 'remark' => $remark,
- 'addtime' => date('Y-m-d H:i:s'),
- 'employee_id' => $info->employee_id,
- 'user_id' => $info->uid,
- 'state' => 1,
- 'org_id' => $info->org_id,
- 'customer_employee_id' => $info->employee_id,
- 'customer_org_id' => $info->org_id
- ];
- CustomerVisitLog::insertGetId($save);
- return true;
- }
- }
|