50 lines
3.2 KiB
Java
50 lines
3.2 KiB
Java
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()));
|
|
}
|
|
}
|