|
@@ -268,18 +268,6 @@ class AccountService
|
|
|
|
|
|
/**
|
|
|
* 获取技师详细信息
|
|
|
- *
|
|
|
- * 业务逻辑:
|
|
|
- * 1. 获取技师最新基本信息(不包括审核拒绝的记录)
|
|
|
- * 2. 获取技师邀请码信息
|
|
|
- * 3. 获取钱包信息
|
|
|
- * 4. 获取审核状态信息
|
|
|
- * 5. 获取位置和店铺信息
|
|
|
- * 6. 获取统计数据
|
|
|
- * 7. 组装返回数据
|
|
|
- *
|
|
|
- * @return array 技师详细信息
|
|
|
- * @throws \Exception 获取信息失败时抛出异常
|
|
|
*/
|
|
|
public function getCoachDetail(): array
|
|
|
{
|
|
@@ -332,9 +320,13 @@ class AccountService
|
|
|
$baseInfo,
|
|
|
[
|
|
|
'state' => $coach->state,
|
|
|
- 'state_text' => TechnicianStatus::fromValue($coach->state)?->label(),
|
|
|
- 'work_status' => $coach->work_status, // 工作状态
|
|
|
- 'work_status_text' => TechnicianWorkStatus::fromValue($coach->work_status)?->label(), // 状态文本
|
|
|
+ 'state_text' => $coach->state
|
|
|
+ ? TechnicianStatus::fromValue($coach->state)->label()
|
|
|
+ : null,
|
|
|
+ 'work_status' => $coach->work_status,
|
|
|
+ 'work_status_text' => $coach->work_status
|
|
|
+ ? TechnicianWorkStatus::fromValue($coach->work_status)->label()
|
|
|
+ : null,
|
|
|
],
|
|
|
[
|
|
|
'auth_status' => $authStatus,
|
|
@@ -349,12 +341,6 @@ class AccountService
|
|
|
* 格式化审核状态信息
|
|
|
* 包含基本信息、实名认证和资质认证的审核状态
|
|
|
*
|
|
|
- * 业务逻辑:
|
|
|
- * 1. 获取最新的基本信息审核状态
|
|
|
- * 2. 获取最新的实名认证审核状态
|
|
|
- * 3. 获取最新的资质认证审核状态
|
|
|
- * 4. 格式化状态文本和时间
|
|
|
- *
|
|
|
* @param CoachUser $coach 技师对象
|
|
|
* @return array 审核状态信息
|
|
|
*/
|
|
@@ -362,20 +348,26 @@ class AccountService
|
|
|
{
|
|
|
return [
|
|
|
'base_info' => [
|
|
|
- 'state' => $coach->latestInfoRecord?->state, // 审核状态值
|
|
|
- 'state_text' => TechnicianAuthStatus::fromValue($coach->latestInfoRecord?->state)?->label(), // 状态文本
|
|
|
- 'audit_remark' => $coach->latestInfoRecord?->audit_remark, // 审核备注
|
|
|
- 'updated_at' => $coach->latestInfoRecord?->updated_at?->format('Y-m-d H:i:s'), // 更新时间
|
|
|
+ 'state' => $coach->latestInfoRecord?->state,
|
|
|
+ 'state_text' => $coach->latestInfoRecord?->state
|
|
|
+ ? TechnicianAuthStatus::fromValue($coach->latestInfoRecord->state)->label()
|
|
|
+ : null,
|
|
|
+ 'audit_remark' => $coach->latestInfoRecord?->audit_remark,
|
|
|
+ 'updated_at' => $coach->latestInfoRecord?->updated_at?->format('Y-m-d H:i:s'),
|
|
|
],
|
|
|
'real_name' => [
|
|
|
'state' => $coach->latestRealRecord?->state,
|
|
|
- 'state_text' => TechnicianAuthStatus::fromValue($coach->latestRealRecord?->state)?->label(),
|
|
|
+ 'state_text' => $coach->latestRealRecord?->state
|
|
|
+ ? TechnicianAuthStatus::fromValue($coach->latestRealRecord->state)->label()
|
|
|
+ : null,
|
|
|
'audit_remark' => $coach->latestRealRecord?->audit_remark,
|
|
|
'updated_at' => $coach->latestRealRecord?->updated_at?->format('Y-m-d H:i:s'),
|
|
|
],
|
|
|
'qualification' => [
|
|
|
'state' => $coach->latestQualRecord?->state,
|
|
|
- 'state_text' => TechnicianAuthStatus::fromValue($coach->latestQualRecord?->state)?->label(),
|
|
|
+ 'state_text' => $coach->latestQualRecord?->state
|
|
|
+ ? TechnicianAuthStatus::fromValue($coach->latestQualRecord->state)->label()
|
|
|
+ : null,
|
|
|
'audit_remark' => $coach->latestQualRecord?->audit_remark,
|
|
|
'updated_at' => $coach->latestQualRecord?->updated_at?->format('Y-m-d H:i:s'),
|
|
|
],
|
|
@@ -494,8 +486,13 @@ class AccountService
|
|
|
* @param object $info 基本信息记录对象
|
|
|
* @return array 格式化后的基本信息
|
|
|
*/
|
|
|
- private function formatBaseInfo($info)
|
|
|
+ private function formatBaseInfo($info): array
|
|
|
{
|
|
|
+ // 如果 $info 为空,返回空数组
|
|
|
+ if (!$info) {
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+
|
|
|
// 返回格式化后的基本信息,包含状态文本
|
|
|
return [
|
|
|
'nickname' => $info->nickname,
|
|
@@ -508,7 +505,7 @@ class AccountService
|
|
|
'intention_city' => $info->intention_city,
|
|
|
'introduction' => $info->introduction,
|
|
|
'state' => $info->state,
|
|
|
- 'state_text' => TechnicianAuthStatus::fromValue($info->state)->label(),
|
|
|
+ 'state_text' => $info->state ? TechnicianAuthStatus::fromValue($info->state)->label() : null,
|
|
|
'audit_remark' => $info->audit_remark,
|
|
|
];
|
|
|
}
|
|
@@ -517,12 +514,17 @@ class AccountService
|
|
|
* 格式化资质信息
|
|
|
* 处理技师资质信息的展示格式
|
|
|
*
|
|
|
- * @param object $qual 资质记录对象
|
|
|
- * @return array 格式化后的资质信息
|
|
|
+ * @param object|null $qual 资质记录对象
|
|
|
+ * @return array|null 格式化后的资质信息
|
|
|
*/
|
|
|
- private function formatQualification($qual)
|
|
|
+ private function formatQualification($qual): ?array
|
|
|
{
|
|
|
- // 资质类型文本映
|
|
|
+ // 如果资质信息为空,返回 null
|
|
|
+ if (!$qual) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 资质类型文本映射
|
|
|
$qualTypeMap = [
|
|
|
1 => '初级按摩师',
|
|
|
2 => '中级按摩师',
|
|
@@ -532,12 +534,12 @@ class AccountService
|
|
|
// 返回格式化后的资质信息,包含状态文本
|
|
|
return [
|
|
|
'qual_type' => $qual->qual_type,
|
|
|
- 'qual_type_text' => $qualTypeMap[$qual->qual_type] ?? '未知类型', // 添加类型文本
|
|
|
- 'qual_photo' => $qual->qual_photo, // 支持任意格式的图片数据
|
|
|
- 'business_license' => $qual->business_license, // 支持任意格式的图片数据
|
|
|
- 'health_cert' => $qual->health_cert, // 支持任意格式的图片数据
|
|
|
+ 'qual_type_text' => $qualTypeMap[$qual->qual_type] ?? '未知类型',
|
|
|
+ 'qual_photo' => $qual->qual_photo,
|
|
|
+ 'business_license' => $qual->business_license,
|
|
|
+ 'health_cert' => $qual->health_cert,
|
|
|
'state' => $qual->state,
|
|
|
- 'state_text' => TechnicianAuthStatus::fromValue($qual->state)->label(),
|
|
|
+ 'state_text' => $qual->state ? TechnicianAuthStatus::fromValue($qual->state)->label() : null,
|
|
|
'audit_remark' => $qual->audit_remark,
|
|
|
];
|
|
|
}
|
|
@@ -546,20 +548,25 @@ class AccountService
|
|
|
* 格式化实名信息
|
|
|
* 处理技师实名认证信息的展示格式
|
|
|
*
|
|
|
- * @param object $real 实名认证记录对象
|
|
|
- * @return array 格式化后的实名信息
|
|
|
+ * @param object|null $real 实名认证记录对象
|
|
|
+ * @return array|null 格式化后的实名信息
|
|
|
*/
|
|
|
- private function formatRealName($real)
|
|
|
+ private function formatRealName($real): ?array
|
|
|
{
|
|
|
+ // 如果实名信息为空,返回 null
|
|
|
+ if (!$real) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
// 返回格式化后的实名信息,包含状态文本和脱敏处理
|
|
|
return [
|
|
|
'real_name' => $real->real_name,
|
|
|
- 'id_card' => $this->maskIdCard($real->id_card), // 身份证号脱敏处理
|
|
|
- 'id_card_front_photo' => $real->id_card_front_photo, // 支持任意格式的图片数据
|
|
|
- 'id_card_back_photo' => $real->id_card_back_photo, // 支持任意格式的图片数据
|
|
|
- 'id_card_hand_photo' => $real->id_card_hand_photo, // 支持任意格式的图片数据
|
|
|
+ 'id_card' => $this->maskIdCard($real->id_card),
|
|
|
+ 'id_card_front_photo' => $real->id_card_front_photo,
|
|
|
+ 'id_card_back_photo' => $real->id_card_back_photo,
|
|
|
+ 'id_card_hand_photo' => $real->id_card_hand_photo,
|
|
|
'state' => $real->state,
|
|
|
- 'state_text' => TechnicianAuthStatus::fromValue($real->state)->label(),
|
|
|
+ 'state_text' => $real->state ? TechnicianAuthStatus::fromValue($real->state)->label() : null,
|
|
|
'audit_remark' => $real->audit_remark,
|
|
|
];
|
|
|
}
|