repair人员用户列表接口 #77

Merged
hnu202326010122 merged 1 commits from jingyou_branch into develop 1 month ago

@ -0,0 +1,72 @@
package com.campus.water.controller.web;
import com.campus.water.entity.Repairman;
import com.campus.water.service.RepairmanService;
import com.campus.water.util.ResultVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/api/web/repairman")
@RequiredArgsConstructor
@Tag(name = "维修人员管理接口", description = "Web管理端维修人员列表查询接口")
public class RepairmanController {
private final RepairmanService repairmanService;
/**
*
* @param name
* @param areaId ID
* @param status idle/busy/vacation
*/
@GetMapping("/list")
@PreAuthorize("hasAnyRole('SUPER_ADMIN', 'AREA_ADMIN')") // 仅管理员可访问
@Operation(summary = "获取维修人员列表", description = "支持按姓名、区域和状态筛选维修人员")
public ResponseEntity<ResultVO<List<Repairman>>> getRepairmanList(
@RequestParam(required = false) String name,
@RequestParam(required = false) String areaId,
@RequestParam(required = false) String status
) {
try {
// 转换状态参数为枚举类型
Repairman.RepairmanStatus repairmanStatus = status != null
? Repairman.RepairmanStatus.valueOf(status)
: null;
// 调用服务层查询
List<Repairman> repairmanList = repairmanService.getRepairmanList(name, areaId, repairmanStatus);
return ResponseEntity.ok(ResultVO.success(repairmanList));
} catch (IllegalArgumentException e) {
// 处理枚举参数错误
return ResponseEntity.ok(ResultVO.error(400, "无效的状态参数: " + e.getMessage()));
} catch (Exception e) {
// 处理其他异常
return ResponseEntity.ok(ResultVO.error(500, "查询维修人员列表失败: " + e.getMessage()));
}
}
/**
*
*/
@GetMapping("/status")
@PreAuthorize("hasAnyRole('SUPER_ADMIN', 'AREA_ADMIN')")
@Operation(summary = "获取维修人员状态列表", description = "返回所有可选状态idle/busy/vacation")
public ResponseEntity<ResultVO<Repairman.RepairmanStatus[]>> getAllStatus() {
try {
Repairman.RepairmanStatus[] statuses = repairmanService.getAllStatus();
return ResponseEntity.ok(ResultVO.success(statuses));
} catch (Exception e) {
return ResponseEntity.ok(ResultVO.error(500, "获取状态列表失败:" + e.getMessage()));
}
}
}

@ -21,4 +21,10 @@ public interface RepairmanRepository extends JpaRepository<Repairman, String> {
// 查询评分高于阈值的维修人员
List<Repairman> findByRatingGreaterThanEqual(Double minRating);
// 新增姓名相关查询方法
List<Repairman> findByRepairmanNameContaining(String name);
List<Repairman> findByRepairmanNameContainingAndAreaId(String name, String areaId);
List<Repairman> findByRepairmanNameContainingAndStatus(String name, Repairman.RepairmanStatus status);
List<Repairman> findByRepairmanNameContainingAndAreaIdAndStatus(String name, String areaId, Repairman.RepairmanStatus status);
}

@ -0,0 +1,55 @@
package com.campus.water.service;
import com.campus.water.entity.Repairman;
import com.campus.water.mapper.RepairmanRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* +
*/
@Service
@RequiredArgsConstructor
public class RepairmanService {
private final RepairmanRepository repairmanRepository;
/**
*
* @param name
* @param areaId ID
* @param status
* @return
*/
public List<Repairman> getRepairmanList(String name, String areaId, Repairman.RepairmanStatus status) {
// 组合查询条件(与原实现逻辑完全一致)
if (name != null && !name.isEmpty() && areaId != null && !areaId.isEmpty() && status != null) {
return repairmanRepository.findByRepairmanNameContainingAndAreaIdAndStatus(name, areaId, status);
} else if (name != null && !name.isEmpty() && areaId != null && !areaId.isEmpty()) {
return repairmanRepository.findByRepairmanNameContainingAndAreaId(name, areaId);
} else if (name != null && !name.isEmpty() && status != null) {
return repairmanRepository.findByRepairmanNameContainingAndStatus(name, status);
} else if (areaId != null && !areaId.isEmpty() && status != null) {
return repairmanRepository.findByAreaIdAndStatus(areaId, status);
} else if (name != null && !name.isEmpty()) {
return repairmanRepository.findByRepairmanNameContaining(name);
} else if (areaId != null && !areaId.isEmpty()) {
return repairmanRepository.findByAreaId(areaId);
} else if (status != null) {
return repairmanRepository.findByStatus(status);
} else {
// 查询全部
return repairmanRepository.findAll();
}
}
/**
*
* @return
*/
public Repairman.RepairmanStatus[] getAllStatus() {
return Repairman.RepairmanStatus.values();
}
}
Loading…
Cancel
Save