package com.mydreamjob.bidirectionalmatch; import com.mydreamjob.bidirectionalmatch.dto.CompanyMatchRuleRequest; import com.mydreamjob.bidirectionalmatch.dto.StudentMatchRuleRequest; import com.mydreamjob.common.api.ApiResponse; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.web.bind.annotation.*; import java.util.Map; /** * 匹配阈值配置接口(企业 requiredCandidateScore / 学生 requiredHrScore) */ @Tag(name = "双向匹配阈值", description = "企业与求职者的匹配阈值配置") @RestController @RequiredArgsConstructor public class MatchRuleController { private final MatchRuleService matchRuleService; @Operation(summary = "查询企业匹配阈值", description = "未配置返回默认 60") @GetMapping("/companies/me/match-rule") public ResponseEntity>> getCompanyRule(HttpServletRequest request) { Long userId = resolveUserId(request); return ResponseEntity.ok(ApiResponse.ok(matchRuleService.getCompanyRule(userId), getRequestId(request))); } @Operation(summary = "更新企业匹配阈值", description = "requiredCandidateScore 0-100;首次更新创建配置") @PutMapping("/companies/me/match-rule") public ResponseEntity>> updateCompanyRule( @Valid @RequestBody CompanyMatchRuleRequest req, HttpServletRequest request) { Long userId = resolveUserId(request); return ResponseEntity.ok(ApiResponse.ok( matchRuleService.updateCompanyRule(userId, req.getRequiredCandidateScore()), getRequestId(request))); } @Operation(summary = "查询学生匹配阈值", description = "未配置返回默认 60") @GetMapping("/profile/me/match-rule") public ResponseEntity>> getStudentRule(HttpServletRequest request) { Long userId = resolveUserId(request); return ResponseEntity.ok(ApiResponse.ok(matchRuleService.getStudentRule(userId), getRequestId(request))); } @Operation(summary = "更新学生匹配阈值", description = "requiredHrScore 0-100;首次更新创建配置") @PutMapping("/profile/me/match-rule") public ResponseEntity>> updateStudentRule( @Valid @RequestBody StudentMatchRuleRequest req, HttpServletRequest request) { Long userId = resolveUserId(request); return ResponseEntity.ok(ApiResponse.ok( matchRuleService.updateStudentRule(userId, req.getRequiredHrScore()), getRequestId(request))); } private Long resolveUserId(HttpServletRequest request) { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); if (auth == null || !auth.isAuthenticated()) throw new com.mydreamjob.common.exception.BusinessException( com.mydreamjob.common.exception.ErrorCode.UNAUTHORIZED); return Long.valueOf(auth.getName()); } private String getRequestId(HttpServletRequest request) { return request.getHeader("X-Request-Id"); } }