30 lines
1.7 KiB
Java
30 lines
1.7 KiB
Java
package com.baiyue.lastleg.calendar;
|
|
|
|
import com.baiyue.common.core.api.ApiResponse;
|
|
import com.baiyue.common.security.AuthenticatedUser;
|
|
import com.baiyue.lastleg.security.OverseasPermissions;
|
|
import jakarta.validation.Valid;
|
|
import org.springframework.http.HttpStatus;
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.server.ResponseStatusException;
|
|
import java.util.List;
|
|
|
|
@RestController
|
|
@RequestMapping("/api/platform/v1/last-leg/appointment-calendar")
|
|
public class WarehouseCalendarController {
|
|
private final WarehouseCalendarService service;
|
|
/** 装配整柜到仓日历读取服务。 */
|
|
public WarehouseCalendarController(WarehouseCalendarService service) { this.service = service; }
|
|
/** 使用预约和原订单读取权限,写资格继续使用原订单编辑权限。 */
|
|
@PostMapping("/warehouse-arrivals/query")
|
|
@PreAuthorize("hasAuthority('platform:appointment:list') and hasAuthority('platform:overseas-warehouse:last-mile-order:list')")
|
|
public ApiResponse<List<WarehouseCalendarModels.Entry>> calendar(@AuthenticationPrincipal AuthenticatedUser user,
|
|
@Valid @RequestBody WarehouseCalendarModels.Query query) {
|
|
if (user == null || !"PLATFORM".equals(user.appCode()) || user.tenantId() == null || user.tenantId() != 0L)
|
|
throw new ResponseStatusException(HttpStatus.FORBIDDEN, "仅平台可读预约日历");
|
|
return ApiResponse.success(service.calendar(query, user.permissions().contains(OverseasPermissions.LAST_MILE_ORDER_EDIT)));
|
|
}
|
|
}
|