Files
baiyue-firstleg/lastleg-service/src/main/java/com/baiyue/lastleg/appointmentplanning/AppointmentContainerController.java
T

50 lines
3.2 KiB
Java
Raw Normal View History

package com.baiyue.lastleg.appointmentplanning;
import com.baiyue.common.core.api.ApiResponse;
import com.baiyue.common.core.api.PageResult;
import com.baiyue.common.security.AuthenticatedUser;
import jakarta.validation.Valid;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/platform/v1/last-leg/appointment-planning/containers")
public class AppointmentContainerController {
private final AppointmentContainerService containers;
private final AppointmentFollowupService followups;
public AppointmentContainerController(AppointmentContainerService containers,AppointmentFollowupService followups) {
this.containers=containers; this.followups=followups;
}
@GetMapping
@PreAuthorize("hasAuthority('platform:appointment:list') and hasAuthority('platform:overseas-warehouse:last-mile-order:list')")
public ApiResponse<PageResult<AppointmentContainer>> page(@AuthenticationPrincipal AuthenticatedUser user,
@RequestParam(defaultValue="1") int page,@RequestParam(defaultValue="20") int size,@RequestParam(required=false) String keyword) {
AppointmentPlanningController.requirePlatform(user);
return ApiResponse.success(containers.page(page,size,keyword));
}
@GetMapping("/{containerId}")
@PreAuthorize("hasAuthority('platform:appointment:list') and hasAuthority('platform:overseas-warehouse:last-mile-order:list')")
public ApiResponse<AppointmentContainer.Context> context(@AuthenticationPrincipal AuthenticatedUser user,
@PathVariable String containerId,@RequestParam(required=false) String warehouseId) {
AppointmentPlanningController.requirePlatform(user);
return ApiResponse.success(containers.context(containerId,warehouseId));
}
@GetMapping("/{containerId}/follow-ups")
@PreAuthorize("hasAuthority('platform:appointment:list') and hasAuthority('platform:overseas-warehouse:last-mile-order:list')")
public ApiResponse<AppointmentFollowupService.History> history(@AuthenticationPrincipal AuthenticatedUser user,
@PathVariable String containerId,@RequestParam(required=false) String warehouseId,
@RequestParam(defaultValue="1") int page,@RequestParam(defaultValue="20") int size) {
AppointmentPlanningController.requirePlatform(user);
return ApiResponse.success(followups.containerHistory(containerId,warehouseId,page,size));
}
@PostMapping("/{containerId}/follow-ups")
@PreAuthorize("hasAuthority('platform:appointment:list') and hasAuthority('platform:overseas-warehouse:last-mile-order:list') and hasAuthority('platform:appointment:followup')")
public ApiResponse<AppointmentFollowupService.Record> save(@AuthenticationPrincipal AuthenticatedUser user,
@PathVariable String containerId,@RequestParam(required=false) String warehouseId,
@Valid @RequestBody AppointmentFollowupService.Save request) {
AppointmentPlanningController.requirePlatform(user);
return ApiResponse.success(followups.saveContainer(containerId,warehouseId,request,user.userId().toString(),user.displayName()==null?user.username():user.displayName()));
}
}