Explorar el Código

feat(service): AppointmentService 支持 assessorId, DanAssessmentExecutionService 关联 appointmentId

Ultraworked with Sisyphus

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Sisyphus hace 2 meses
padre
commit
2e33363f51

+ 1 - 1
cfc-backend/src/main/java/com/etotem/cfc/controller/DanAssessmentController.java

@@ -174,7 +174,7 @@ public class DanAssessmentController {
         String appointmentTime = (String) body.get("appointmentTime");
         String notes = (String) body.get("notes");
         AssessmentAppointment appointment = appointmentService.createAppointment(
-                userId, childId, guideId, packageId, appointmentDate, appointmentTime, notes);
+                userId, childId, guideId, null, packageId, appointmentDate, appointmentTime, notes);
         return Result.success(appointment);
     }
 

+ 14 - 4
cfc-backend/src/main/java/com/etotem/cfc/service/AssessmentAppointmentService.java

@@ -24,15 +24,16 @@ public class AssessmentAppointmentService extends ServiceImpl<AssessmentAppointm
     private EnergyService energyService;
 
     public AssessmentAppointment createAppointment(Long userId, Long childId, Long guideId,
-                                                    Long packageId, String appointmentDate, String appointmentTime, String notes) {
+                                                    Long assessorId, Long packageId, String appointmentDate, String appointmentTime, String notes) {
         AssessmentAppointment appointment = new AssessmentAppointment();
         appointment.setUserId(userId);
         appointment.setChildId(childId);
         appointment.setGuideId(guideId);
+        appointment.setAssessorId(assessorId);
         appointment.setPackageId(packageId);
         appointment.setAppointmentDate(appointmentDate);
         appointment.setAppointmentTime(appointmentTime);
-        appointment.setTeacherId(guideId);
+        appointment.setTeacherId(assessorId != null ? assessorId : guideId);
         appointment.setStatus(0); // pending
         appointment.setNotes(notes);
         appointment.setCreatedAt(new Date());
@@ -50,10 +51,12 @@ public class AssessmentAppointmentService extends ServiceImpl<AssessmentAppointm
         return appointment;
     }
 
-    public boolean confirmAppointment(Long id, Long teacherId) {
+    public boolean confirmAppointment(Long id, Long userId) {
         AssessmentAppointment appointment = assessmentAppointmentMapper.selectById(id);
         if (appointment == null) return false;
-        if (!teacherId.equals(appointment.getGuideId())) return false;
+        // 允许被指派的测评师(assessorId)或规划师(guideId)确认
+        Long expectedId = appointment.getAssessorId() != null ? appointment.getAssessorId() : appointment.getGuideId();
+        if (!userId.equals(expectedId)) return false;
         appointment.setStatus(1); // confirmed
         appointment.setUpdatedAt(new Date());
         return assessmentAppointmentMapper.updateById(appointment) > 0;
@@ -101,6 +104,13 @@ public class AssessmentAppointmentService extends ServiceImpl<AssessmentAppointm
         return assessmentAppointmentMapper.selectList(wrapper);
     }
 
+    public List<AssessmentAppointment> getByAssessorId(Long assessorId) {
+        LambdaQueryWrapper<AssessmentAppointment> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(AssessmentAppointment::getAssessorId, assessorId);
+        wrapper.orderByDesc(AssessmentAppointment::getCreatedAt);
+        return assessmentAppointmentMapper.selectList(wrapper);
+    }
+
     public AssessmentAppointment confirmAppointmentByOrder(AssessmentOrder order) {
         AssessmentAppointment appointment = new AssessmentAppointment();
         appointment.setChildId(order.getChildId());

+ 2 - 1
cfc-backend/src/main/java/com/etotem/cfc/service/DanAssessmentExecutionService.java

@@ -29,7 +29,7 @@ public class DanAssessmentExecutionService {
      */
     @Transactional
     public DanAssessmentExecution createExecution(Long assessmentOrderId, Long childId, Long familyId,
-            Long quotaId, Long assessorId, Long plannerId) {
+            Long quotaId, Long assessorId, Long plannerId, Long appointmentId) {
         DanAssessmentExecution exec = new DanAssessmentExecution();
         exec.setAssessmentOrderId(assessmentOrderId);
         exec.setChildId(childId);
@@ -39,6 +39,7 @@ public class DanAssessmentExecutionService {
         exec.setAssessorStatus("pending");
         exec.setPlannerId(plannerId);
         exec.setPlannerStatus("pending");
+        exec.setAppointmentId(appointmentId);
         exec.setUserConfirmed(0);
         exec.setCreatedAt(new Date());
         exec.setUpdatedAt(new Date());