forked from baskbuddy/zhangshun
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
2.4 KiB
48 lines
2.4 KiB
package com.mydreamjob.preference;
|
|
|
|
import com.mydreamjob.common.api.ApiResponse;
|
|
import com.mydreamjob.common.logging.RequestIdAccessor;
|
|
import com.mydreamjob.preference.dto.StudentPreferenceRequest;
|
|
import com.mydreamjob.security.CurrentUserAccessor;
|
|
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.web.bind.annotation.*;
|
|
|
|
import java.util.Map;
|
|
|
|
@Tag(name = "求职偏好", description = "学生求职偏好查询与保存")
|
|
@RestController
|
|
@RequestMapping("/profile/me")
|
|
@RequiredArgsConstructor
|
|
public class PreferenceController {
|
|
|
|
private final PreferenceService preferenceService;
|
|
private final CurrentUserAccessor currentUserAccessor;
|
|
private final RequestIdAccessor requestIdAccessor;
|
|
|
|
@Operation(summary = "查询求职偏好", description = "仅 STUDENT;无记录时返回空偏好对象")
|
|
@GetMapping("/preferences")
|
|
public ResponseEntity<ApiResponse<Map<String, Object>>> getPreferences(HttpServletRequest request) {
|
|
Long userId = currentUserAccessor.requireUserId();
|
|
Map<String, Object> view = preferenceService.getPreferences(userId);
|
|
return ResponseEntity.ok(ApiResponse.ok(view, requestIdAccessor.get(request)));
|
|
}
|
|
|
|
@Operation(summary = "保存求职偏好", description = "仅 STUDENT;upsert,仅更新非 null 字段,薪资单位为元/月;"
|
|
+ "按合并后的期望薪资区间校验,非法返回 400/1001 且无部分更新。"
|
|
+ "已有在线简历时必须携带最近 GET /profile/me/online-resume 的 revision,缺少或过期返回 409/6002;"
|
|
+ "成功写入推进在线简历 revision,随后重新 GET 获取最新版本。"
|
|
+ "未建立在线简历时兼容不传 revision,显式 revision 只能为 0。")
|
|
@PutMapping("/preferences")
|
|
public ResponseEntity<ApiResponse<Map<String, Object>>> savePreferences(
|
|
@Valid @RequestBody StudentPreferenceRequest req,
|
|
HttpServletRequest request) {
|
|
Long userId = currentUserAccessor.requireUserId();
|
|
Map<String, Object> view = preferenceService.savePreferences(userId, req);
|
|
return ResponseEntity.ok(ApiResponse.ok(view, requestIdAccessor.get(request)));
|
|
}
|
|
}
|
|
|