Files
baiyue-firstleg/lastleg-service/src/main/java/com/baiyue/lastleg/calendar/WarehouseCalendarController.java
T

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)));
}
}