|
|
@@ -63,6 +63,9 @@ public class AdminController {
|
|
|
@Resource
|
|
|
private MemberUpgradeRecordMapper memberUpgradeRecordMapper;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private AssessmentAppointmentMapper assessmentAppointmentMapper;
|
|
|
+
|
|
|
// 用户管理
|
|
|
@PostMapping("/users")
|
|
|
public Result<Page<User>> getUsers(@RequestBody Map<String, Object> params) {
|
|
|
@@ -978,4 +981,100 @@ public class AdminController {
|
|
|
.orderByDesc(MemberUpgradeRecord::getCreatedAt));
|
|
|
return Result.success(result);
|
|
|
}
|
|
|
+
|
|
|
+ // ========== 测评待分配规划师 ==========
|
|
|
+
|
|
|
+ @PostMapping("/assessment/pending-list")
|
|
|
+ public Result<Map<String, Object>> getPendingAssessmentList(@RequestBody Map<String, Object> params) {
|
|
|
+ int page = params.get("page") != null ? ((Number) params.get("page")).intValue() : 1;
|
|
|
+ int size = params.get("size") != null ? ((Number) params.get("size")).intValue() : 10;
|
|
|
+ Page<AssessmentAppointment> pageParam = new Page<>(page, size);
|
|
|
+
|
|
|
+ Page<AssessmentAppointment> result = assessmentAppointmentMapper.selectPage(pageParam,
|
|
|
+ new LambdaQueryWrapper<AssessmentAppointment>()
|
|
|
+ .isNull(AssessmentAppointment::getGuideId)
|
|
|
+ .orderByDesc(AssessmentAppointment::getCreatedAt));
|
|
|
+
|
|
|
+ java.util.List<Map<String, Object>> list = new java.util.ArrayList<>();
|
|
|
+ for (AssessmentAppointment app : result.getRecords()) {
|
|
|
+ Map<String, Object> item = new HashMap<>();
|
|
|
+ item.put("id", app.getId());
|
|
|
+ item.put("familyId", app.getFamilyId());
|
|
|
+ item.put("childId", app.getChildId());
|
|
|
+ item.put("appointmentDate", app.getAppointmentDate());
|
|
|
+ item.put("appointmentTime", app.getAppointmentTime());
|
|
|
+ item.put("durationMinutes", app.getDurationMinutes());
|
|
|
+ item.put("status", app.getStatus());
|
|
|
+ item.put("appointmentType", app.getAppointmentType());
|
|
|
+ item.put("notes", app.getNotes());
|
|
|
+ item.put("contactPhone", app.getContactPhone());
|
|
|
+ item.put("createdAt", app.getCreatedAt());
|
|
|
+
|
|
|
+ // 关联查询用户昵称
|
|
|
+ User user = userMapper.selectById(app.getUserId());
|
|
|
+ item.put("userName", user != null ? user.getNickname() : "未知用户");
|
|
|
+
|
|
|
+ // 关联查询家庭成员名称(孩子)
|
|
|
+ if (app.getChildId() != null) {
|
|
|
+ FamilyMember child = familyMemberMapper.selectById(app.getChildId());
|
|
|
+ item.put("childName", child != null ? child.getName() : "未知");
|
|
|
+ } else {
|
|
|
+ item.put("childName", "");
|
|
|
+ }
|
|
|
+
|
|
|
+ list.add(item);
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, Object> resultMap = new HashMap<>();
|
|
|
+ resultMap.put("records", list);
|
|
|
+ resultMap.put("total", result.getTotal());
|
|
|
+ resultMap.put("current", result.getCurrent());
|
|
|
+ resultMap.put("size", result.getSize());
|
|
|
+ return Result.success(resultMap);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/assessment/available-guides")
|
|
|
+ public Result<java.util.List<Map<String, Object>>> getAvailableGuides() {
|
|
|
+ java.util.List<User> teachers = userMapper.selectList(
|
|
|
+ new LambdaQueryWrapper<User>()
|
|
|
+ .eq(User::getRole, "teacher")
|
|
|
+ .eq(User::getTeacherStatus, "approved")
|
|
|
+ .select(User::getId, User::getNickname, User::getRealName, User::getPhone, User::getTeacherNo));
|
|
|
+ java.util.List<Map<String, Object>> list = new java.util.ArrayList<>();
|
|
|
+ for (User t : teachers) {
|
|
|
+ Map<String, Object> item = new HashMap<>();
|
|
|
+ item.put("id", t.getId());
|
|
|
+ item.put("nickname", t.getNickname());
|
|
|
+ item.put("realName", t.getRealName());
|
|
|
+ item.put("phone", t.getPhone());
|
|
|
+ item.put("teacherNo", t.getTeacherNo());
|
|
|
+ list.add(item);
|
|
|
+ }
|
|
|
+ return Result.success(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/assessment/assign-guide")
|
|
|
+ public Result<Void> assignGuide(@RequestBody Map<String, Object> body) {
|
|
|
+ Long appointmentId = body.get("appointmentId") != null ? Long.valueOf(body.get("appointmentId").toString()) : null;
|
|
|
+ Long guideId = body.get("guideId") != null ? Long.valueOf(body.get("guideId").toString()) : null;
|
|
|
+ if (appointmentId == null || guideId == null) {
|
|
|
+ return Result.error("appointmentId 和 guideId 不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ AssessmentAppointment appointment = assessmentAppointmentMapper.selectById(appointmentId);
|
|
|
+ if (appointment == null) {
|
|
|
+ return Result.error("预约记录不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ User guide = userMapper.selectById(guideId);
|
|
|
+ if (guide == null || !"teacher".equals(guide.getRole())) {
|
|
|
+ return Result.error("规划师不存在或角色不正确");
|
|
|
+ }
|
|
|
+
|
|
|
+ appointment.setGuideId(guideId);
|
|
|
+ appointment.setTeacherId(guideId);
|
|
|
+ appointment.setStatus(1); // 已确认
|
|
|
+ assessmentAppointmentMapper.updateById(appointment);
|
|
|
+ return Result.success(null);
|
|
|
+ }
|
|
|
}
|