|
|
|
@ -90,6 +90,8 @@ class ContractSignFormService extends BaseApiService |
|
|
|
'contract_name' => $contract['contract_name'], |
|
|
|
'contract_type' => $contract['contract_type'], |
|
|
|
'contract_content' => $contract['contract_content'] ?? '', |
|
|
|
'status' => $sign_record['status'], |
|
|
|
'sign_file' => $sign_record['sign_file'], |
|
|
|
'form_fields' => $form_fields, |
|
|
|
'student_info' => [ |
|
|
|
'id' => $student['id'], |
|
|
|
@ -734,27 +736,140 @@ class ContractSignFormService extends BaseApiService |
|
|
|
|
|
|
|
switch ($table_name) { |
|
|
|
case 'school_student': |
|
|
|
// 学员表:直接从学员信息获取 |
|
|
|
$service = new CoreFieldMappingService($config['table_name'], ['id'=>$student['id']]); |
|
|
|
$value = $service->getValue($field_name); |
|
|
|
// 学员表:使用CoreFieldMappingService进行字段映射和转义 |
|
|
|
$service = new CoreFieldMappingService($config['table_name'], ['id' => $student['id']]); |
|
|
|
|
|
|
|
// 配置枚举映射 |
|
|
|
$service->setFieldEnums([ |
|
|
|
'gender' => [0 => '未知', 1 => '男', 2 => '女'], |
|
|
|
'status' => [0 => '无效', 1 => '有效', 2 => '过期', 3 => '结业'] |
|
|
|
]); |
|
|
|
|
|
|
|
// 配置关联字段映射 |
|
|
|
$service->setFieldRelations([ |
|
|
|
'user_id' => [ |
|
|
|
'table' => 'school_customer_resources', |
|
|
|
'display_field' => 'name', |
|
|
|
'key_field' => 'id' |
|
|
|
], |
|
|
|
'campus_id' => [ |
|
|
|
'table' => 'school_campus', |
|
|
|
'display_field' => 'campus_name', |
|
|
|
'key_field' => 'id' |
|
|
|
], |
|
|
|
'class_id' => [ |
|
|
|
'table' => 'school_class', |
|
|
|
'display_field' => 'class_name', |
|
|
|
'key_field' => 'id' |
|
|
|
], |
|
|
|
'consultant_id' => [ |
|
|
|
'table' => 'school_personnel', |
|
|
|
'display_field' => 'name', |
|
|
|
'key_field' => 'id' |
|
|
|
], |
|
|
|
'coach_id' => [ |
|
|
|
'table' => 'school_personnel', |
|
|
|
'display_field' => 'name', |
|
|
|
'key_field' => 'id' |
|
|
|
] |
|
|
|
]); |
|
|
|
|
|
|
|
// 检查是否为关联字段,使用链式调用获取关联值 |
|
|
|
if (in_array($field_name, ['user_id', 'campus_id', 'class_id', 'consultant_id', 'coach_id'])) { |
|
|
|
$relation_config = $service->getRelationMapping()[$field_name]; |
|
|
|
$value = $service->getValueWithChain($field_name) |
|
|
|
->withRelation( |
|
|
|
$relation_config['table'], |
|
|
|
$relation_config['display_field'], |
|
|
|
$relation_config['key_field'] |
|
|
|
); |
|
|
|
} else { |
|
|
|
// 普通字段或枚举字段,自动转义枚举值 |
|
|
|
$value = $service->getValue($field_name); |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
case 'school_customer_resources': |
|
|
|
// 用户表:通过学员的user_id关联查询 |
|
|
|
// 客户资源表:通过学员的user_id关联查询 |
|
|
|
if (!empty($student['user_id'])) { |
|
|
|
$service = new CoreFieldMappingService($config['table_name'], ['id'=>$student['user_id']]); |
|
|
|
$service = new CoreFieldMappingService($config['table_name'], ['id' => $student['user_id']]); |
|
|
|
|
|
|
|
// 配置枚举映射 |
|
|
|
$service->setFieldEnums([ |
|
|
|
'gender' => ['male' => '男性', 'female' => '女性', 'other' => '其他'], |
|
|
|
'initial_intent' => ['high' => '高', 'medium' => '中', 'low' => '低'], |
|
|
|
'rf_type' => ['market' => '市场人员新增', 'sale' => '销售人员新增', 'teacher' => '教练新增'], |
|
|
|
'blacklist' => [1 => '可追单', 0 => '黑名单'] |
|
|
|
]); |
|
|
|
|
|
|
|
$value = $service->getValue($field_name); |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
case 'school_order_table': |
|
|
|
// 订单表:查询该学员最新的订单信息 |
|
|
|
$order = OrderTable::where('contract_sign_id',$config['contract_sign_id'])->find(); |
|
|
|
// 订单表:使用CoreFieldMappingService进行字段映射和转义 |
|
|
|
$service = new CoreFieldMappingService($config['table_name'], ['contract_sign_id' => $config['contract_sign_id']]); |
|
|
|
|
|
|
|
// 配置枚举映射 |
|
|
|
$service->setFieldEnums([ |
|
|
|
'order_type' => [1 => '新订单', 2 => '续费订单', 3 => '内部员工订单', 4 => '转校', 5 => '客户内转课订单'], |
|
|
|
'order_status' => ['pending' => '待支付', 'paid' => '已支付', 'signed' => '待签约', 'completed' => '已完成', 'transfer' => '转学'], |
|
|
|
'payment_type' => ['cash' => '现金支付', 'scan_code' => '扫码支付', 'subscription' => '订阅支付', 'wxpay_online' => '微信在线代付'], |
|
|
|
'gift_type' => [1 => '减现', 2 => '赠课'] |
|
|
|
]); |
|
|
|
|
|
|
|
$value = Db::table('school_order_table') |
|
|
|
->where('student_id', $student['id']) |
|
|
|
->order('created_at', 'desc') |
|
|
|
->value($field_name) ?? ''; |
|
|
|
// 配置关联字段映射 |
|
|
|
$service->setFieldRelations([ |
|
|
|
'course_id' => [ |
|
|
|
'table' => 'school_course', |
|
|
|
'display_field' => 'course_name', |
|
|
|
'key_field' => 'id' |
|
|
|
], |
|
|
|
'class_id' => [ |
|
|
|
'table' => 'school_class', |
|
|
|
'display_field' => 'class_name', |
|
|
|
'key_field' => 'id' |
|
|
|
], |
|
|
|
'staff_id' => [ |
|
|
|
'table' => 'school_personnel', |
|
|
|
'display_field' => 'name', |
|
|
|
'key_field' => 'id' |
|
|
|
], |
|
|
|
'resource_id' => [ |
|
|
|
'table' => 'school_customer_resources', |
|
|
|
'display_field' => 'name', |
|
|
|
'key_field' => 'id' |
|
|
|
], |
|
|
|
'campus_id' => [ |
|
|
|
'table' => 'school_campus', |
|
|
|
'display_field' => 'CONCAT(campus_name, campus_address)', |
|
|
|
'key_field' => 'id' |
|
|
|
], |
|
|
|
'gift_id' => [ |
|
|
|
'table' => 'shcool_resources_gift', |
|
|
|
'display_field' => 'gift_name', |
|
|
|
'key_field' => 'id' |
|
|
|
], |
|
|
|
'course_plan_id' => [ |
|
|
|
'table' => 'school_student_courses', |
|
|
|
'display_field' => 'CONCAT("正式课时数量:", total_hours, ",赠送课时", gift_hours, ",课程有效期为", start_date, "至", end_date)', |
|
|
|
'key_field' => 'id' |
|
|
|
] |
|
|
|
]); |
|
|
|
|
|
|
|
// 检查是否为关联字段,使用链式调用获取关联值 |
|
|
|
if (in_array($field_name, ['course_id', 'class_id', 'staff_id', 'resource_id', 'campus_id', 'gift_id', 'course_plan_id'])) { |
|
|
|
$relation_config = $service->getRelationMapping()[$field_name]; |
|
|
|
$value = $service->getValueWithChain($field_name) |
|
|
|
->withRelation( |
|
|
|
$relation_config['table'], |
|
|
|
$relation_config['display_field'], |
|
|
|
$relation_config['key_field'] |
|
|
|
); |
|
|
|
} else { |
|
|
|
// 普通字段或枚举字段,自动转义枚举值 |
|
|
|
$value = $service->getValue($field_name); |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
case 'school_personnel': |
|
|
|
@ -1149,7 +1264,7 @@ class ContractSignFormService extends BaseApiService |
|
|
|
|
|
|
|
foreach ($form_data as $placeholder => $value) { |
|
|
|
// 查找对应的字段配置 |
|
|
|
$config = array_filter($configs, function($c) use ($placeholder) { |
|
|
|
$config = array_filter($configs, function ($c) use ($placeholder) { |
|
|
|
return $c['placeholder'] === $placeholder; |
|
|
|
}); |
|
|
|
|
|
|
|
|