智慧教务系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

163 lines
5.3 KiB

<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\service\api\apiService;
use core\base\BaseApiService;
use think\facade\Db;
/**
* 学员服务层
* Class StudentService
* @package app\service\api\apiService
*/
class StudentService extends BaseApiService
{
public function __construct()
{
parent::__construct();
}
/**
* 添加学员
* @param array $data
* @return array
*/
public function add(array $data)
{
$res = [
'code' => 0,
'msg' => '操作失败',
'data' => []
];
try {
// 准备插入数据
$insertData = [
'name' => $data['name'],
'gender' => $data['gender'],
'age' => $data['age'],
'birthday' => $data['birthday'],
'user_id' => $data['user_id'],
'campus_id' => $data['campus_id'],
'class_id' => $data['class_id'],
'note' => $data['note'],
'status' => $data['status'],
'emergency_contact' => $data['emergency_contact'],
'contact_phone' => $data['contact_phone'],
'member_label' => $data['member_label'],
'consultant_id' => $data['consultant_id'],
'coach_id' => $data['coach_id'],
'trial_class_count' => $data['trial_class_count'],
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
'deleted_at' => 0
];
// 插入数据库
$id = Db::table('school_student')->insertGetId($insertData);
if ($id) {
$res['code'] = 1;
$res['msg'] = '添加成功';
$res['data'] = ['id' => $id];
} else {
$res['msg'] = '添加失败';
}
} catch (\Exception $e) {
$res['msg'] = '添加失败:' . $e->getMessage();
}
return $res;
}
/**
* 获取学员列表
* @param array $data
* @return array
*/
public function getList(array $data)
{
$res = [
'code' => 0,
'msg' => '操作失败',
'data' => []
];
try {
$where = [];
$where[] = ['deleted_at', '=', 0];
if (!empty($data['user_id'])) {
$where[] = ['user_id', '=', $data['user_id']];
}
if (!empty($data['parent_resource_id'])) {
$where[] = ['user_id', '=', $data['parent_resource_id']];
}
if (!empty($data['campus_id'])) {
$where[] = ['campus_id', '=', $data['campus_id']];
}
if (!empty($data['status'])) {
$where[] = ['status', '=', $data['status']];
}
$list = Db::table('school_student')
->where($where)
->order('created_at', 'desc')
->select()
->toArray();
// 为每个学员添加到访情况信息
foreach ($list as &$student) {
// 查询该学员的课程安排记录,按日期排序获取一访和二访信息
$visitRecords = Db::table('school_person_course_schedule')
->where([
['person_id', '=', $student['id']],
['person_type', '=', 'student']
])
->order('course_date', 'asc')
->select()
->toArray();
// 初始化到访信息
$student['first_visit_time'] = '';
$student['second_visit_time'] = '';
$student['first_visit_status'] = '未到访';
$student['second_visit_status'] = '未到访';
// 设置一访和二访信息
if (!empty($visitRecords)) {
if (isset($visitRecords[0])) {
$student['first_visit_time'] = $visitRecords[0]['course_date'];
$student['first_visit_status'] = '已到访';
}
if (isset($visitRecords[1])) {
$student['second_visit_time'] = $visitRecords[1]['course_date'];
$student['second_visit_status'] = '已到访';
}
}
// 保留原始访问记录数据供前端使用
$student['visit_records'] = $visitRecords;
}
$res['code'] = 1;
$res['data'] = $list;
} catch (\Exception $e) {
$res['msg'] = '获取失败:' . $e->getMessage();
}
return $res;
}
}