model = new Student(); } /** * 获取学员列表 * @param array $where * @return array */ public function getPage(array $where = []) { $field = 'id,user_id,campus_id,class_id,name,gender,age,birthday,member_label,emergency_contact,contact_phone,note,status,created_at,updated_at,deleted_at'; $order = 'id desc'; $search_model = $this->model->withSearch(["campus_id", "name", "emergency_contact", "contact_phone", "created_at", "member_label"], $where)->with(['customerResources', 'campus', 'classGrade'])->field($field)->order($order); return $this->pageQuery($search_model, function ($item, $key) { $item = $this->makeUp($item); }); } /** * 获取学员信息 * @param int $id * @return array */ public function getInfo(int $id) { $field = 'id,user_id,campus_id,class_id,name,gender,age,birthday,emergency_contact,member_label,contact_phone,note,status,created_at,updated_at,deleted_at'; $info = $this->makeUp($this->model->field($field)->where([['id', "=", $id]])->with(['customerResources', 'campus', 'classGrade'])->findOrEmpty()->toArray()); $info['getInfoRel'] = $this->getInfoRel($info['user_id']); return $info; } public function getInfoRel(int $resource_id) { $rel = new ClassResourcesRel(); $field = 'id,class_id,resource_id,campus_id,source_id,source_type,join_time,out_time,status,create_time,update_time'; $info = $rel->field($field)->where([['resource_id', "=", $resource_id]])->with(['classGrade','customerResources','campus'])->findOrEmpty()->toArray(); return $info; } /** * 组合整理数据 * @param $data */ public function makeUp($data) { //会员标签 if (!empty($data['member_label'])) { $data['member_label_array'] = (new StudentLabelService())->getMemberLabelListByLabelIds($data['member_label']); } return $data; } /** * 添加学员 * @param array $data * @return mixed */ public function add(array $data) { $res = $this->model->create($data); return $res->id; } /** * 学员编辑 * @param int $id * @param array $data * @return bool */ public function edit(int $id, array $data) { $this->model->where([['id', '=', $id]])->update($data); return true; } /** * 删除学员 * @param int $id * @return bool */ public function del(int $id) { $model = $this->model->where([['id', '=', $id]])->find(); $res = $model->delete(); return $res; } public function getCustomerResourcesAll() { $customerResourcesModel = new CustomerResources(); return $customerResourcesModel->select()->toArray(); } public function getCampusAll() { $campusModel = new Campus(); return $campusModel->select()->toArray(); } public function getClassGradeAll() { $classGradeModel = new ClassGrade(); return $classGradeModel->select()->toArray(); } public function label_all() { $field = 'label_id, label_name'; return (new StudentLabel())->where([['label_id', '>', 0]])->field($field)->order('sort desc,create_time desc')->select()->toArray(); } public function getStudentByName($name) { $query = $this->model->with(['customer_resources'])->where([['name', 'like', '%' . $name . '%']]); $list = $query->select()->toArray(); foreach ($list as &$item) { $item['client_name'] = $item['name'] . '(家长:' . $item['customer_resources']['name'] . ' 电话:' . $item['customer_resources']['phone_number'] . ')'; } return $list; } }