model = new CustomerResources(); } /** * 获取客户资源列表 * @param array $where * @return array */ public function getPage(array $data = []) { // dump($data);die; $field = 'a.*,b.id as shared_id'; $order = 'a.id desc'; $where = []; if($data['phone_number']){ $where[] = ['a.phone_number','=',$data['phone_number']]; } if($data['name']){ $where[] = ['a.name','=',$data['name']]; } if($data['age']){ $where[] = ['a.age','=',$data['age']]; } if($data['gender']){ $where[] = ['a.gender','=',$data['gender']]; } if($data['type'] == 'yjfp'){ $where[] = ['b.shared_by','=',0]; } $search_model = $this->model ->alias("a") ->join(['school_resource_sharing' => 'b'],'a.id = b.resource_id','left') ->where($where) ->with(['personnel'])->field($field)->order($order); if (isset($data['created_at'][0]) && isset($data['created_at'][1])) { $search_model->whereBetweenTime('created_at', $data['created_at'][0]."00:00:00", $data['created_at'][1]."23:59:59"); } if (isset($data['updated_at'][0]) && isset($data['updated_at'][1])) { $search_model->whereBetweenTime('updated_at', $data['updated_at'][0]."00:00:00", $data['updated_at'][1]."23:59:59"); } $list = $this->pageQuery($search_model); return $list; } /** * 获取客户资源信息 * @param int $id * @return array */ public function getInfo(int $id) { $field = 'id,create_year_month,create_date,source,source_channel,consultant,name,age,gender,phone_number,demand,purchasing_power,cognitive_idea,optional_class_time,distance,decision_maker,initial_intent,campus,created_at,updated_at,deleted_at,status'; $info = $this->model->field($field)->where([['id', "=", $id]])->with(['personnel'])->findOrEmpty()->toArray(); $sixSpeed = new SixSpeed(); $data = $sixSpeed->where(['resource_id' => $id])->field("*,distance as distance_tow")->findOrEmpty()->toArray(); $info = $info+$data; return $info; } /** * 添加客户资源 * @param array $data * @return mixed */ public function add(array $data) { $resourceSharing = new ResourceSharing(); $personnel = new Personnel(); $data['consultant'] = $personnel->where(['sys_user_id' => $this->uid])->value("id"); if(!$data['consultant']){ return fail("操作失败"); } $sixSpeed = new SixSpeed(); $res = $this->model->create($data); $role_id = $personnel->alias("a")->join(['school_campus_person_role' => 'b'],'a.id = b.person_id','left') ->where(['a.id' => $data['consultant']])->value('b.role_id'); $resourceSharing->insert([ 'resource_id' => $res->id, 'user_id' => $data['consultant'], 'role_id' => $role_id ]); if($data['purchase_power']){ $six_id = $sixSpeed->where(['resource_id' => $res->id])->value("id"); $data['staff_id'] = $data['consultant']; $field = [ 'purchase_power' => $data['purchase_power'], 'concept_awareness' => $data['concept_awareness'], 'preferred_class_time' => $data['preferred_class_time'], 'distance' => $data['distance_tow'], 'communication' => $data['communication'], 'promised_visit_time' => $data['promised_visit_time'], 'actual_visit_time' => $data['actual_visit_time'], 'call_intent' => $data['call_intent'], 'first_visit_status' => $data['first_visit_status'], 'second_visit_status' => $data['second_visit_status'], 'is_closed' => $data['is_closed'], 'staff_id' => $data['staff_id'], 'resource_id' => $res->id ]; if($six_id){ $sixSpeed->where(['resource_id' => $res->id])->update($field); }else{ $sixSpeed->insert($field); } } return success("操作成功"); } /** * 客户资源编辑 * @param int $id * @param array $data */ public function edit(int $id, array $data) { $personnel = new Personnel(); // $data['consultant'] = $personnel->where(['sys_user_id' => $this->uid])->value("id"); // if(!$data['consultant']){ // return fail("操作失败"); // } $data['consultant'] = 1; $res = $this->model->where([['id', '=', $id]])->findOrEmpty()->toArray(); $this->model->where([['id', '=', $id]])->update([ 'source' => $data['source'], 'source_channel' => $data['source_channel'], // 'consultant' => $data['consultant'], 'name' => $data['name'], 'age' => $data['age'], 'gender' => $data['gender'], 'phone_number' => $data['phone_number'], 'demand' => $data['demand'], 'purchasing_power' => $data['purchasing_power'], 'cognitive_idea' => $data['cognitive_idea'], 'optional_class_time' => $data['optional_class_time'], 'distance' => $data['distance'], 'decision_maker' => $data['decision_maker'], 'initial_intent' => $data['initial_intent'], 'campus' => $data['campus'], 'status' => $data['status'], 'create_year_month' => $data['create_year_month'], 'create_date' => $data['create_date'] ]); $resources_save = getModifiedFields($res,$data); $customerResourceChanges = new CustomerResourceChanges(); if($resources_save['is_save']){ $customerResourceChanges->insert([ 'customer_resource_id' => $id, 'operator_id' => $data['consultant'], 'campus_id' => $data['campus'], 'modified_fields' => $resources_save['modified_fields'], 'old_values' => $resources_save['old_values'], 'new_values' => $resources_save['new_values'] ]); } $sixSpeed = new SixSpeed(); if($data['purchase_power']){ $sixSpeedModificationLog = new SixSpeedModificationLog(); $six_id = $sixSpeed->where(['resource_id' => $id])->value("id"); // $data['staff_id'] = $data['consultant']; $field = [ 'purchase_power' => $data['purchase_power'], 'concept_awareness' => $data['concept_awareness'], 'preferred_class_time' => $data['preferred_class_time'], 'distance' => $data['distance_tow'], 'communication' => $data['communication'], 'promised_visit_time' => $data['promised_visit_time'], 'actual_visit_time' => $data['actual_visit_time'], 'call_intent' => $data['call_intent'], 'first_visit_status' => $data['first_visit_status'], 'second_visit_status' => $data['second_visit_status'], 'is_closed' => $data['is_closed'], // 'staff_id' => $data['staff_id'], 'resource_id' => $id ]; if($six_id){ $six_log = $sixSpeed->where(['resource_id' => $id])->findOrEmpty()->toArray(); $six_save = getModifiedFields($six_log,$field); if($six_save['is_save']){ $sixSpeedModificationLog->insert([ 'customer_resource_id' => $id, 'operator_id' => $data['consultant'], 'campus_id' => $data['campus'], 'modified_field' => $six_save['modified_fields'], 'old_value' => $six_save['old_values'], 'new_value' => $six_save['new_values'] ]); } $sixSpeed->where(['resource_id' => $id])->update($field); }else{ $sixSpeed->insert($field); } } return success("操作成功"); } /** * 删除客户资源 * @param int $id * @return bool */ public function del(int $id) { $model = $this->model->where([['id', '=', $id]])->find(); $res = $model->delete(); return $res; } public function getPersonnelAll($data){ $personnelModel = new Personnel(); $where = []; if($data['role_id']){ $where[] = ['b.role_id','=',$data['role_id']]; } return $personnelModel ->alias("a") ->join(['school_campus_person_role' => 'b'],'a.id = b.person_id','left') ->field("a.*") ->where($where)->select()->toArray(); } public function getCampusAll(){ $campusModel = new Campus(); return $campusModel->select()->toArray(); } public function fp_edit($data){ $resourceSharing = new ResourceSharing(); $resourceSharing->where(['id' => $data['shared_id']])->update([ 'shared_by' => $data['shared_by'], 'shared_at' => date("Y-m-d H:i:s") ]); return "分配成功"; } }