package com.baiyue.warehouse.controller; import com.baiyue.common.core.api.ApiResponse; import com.baiyue.common.core.api.PageResult; import com.baiyue.common.core.api.ResultCode; import com.baiyue.common.core.exception.BizException; import com.baiyue.common.security.AuthenticatedUser; import com.baiyue.warehouse.dto.LocationRequests; import com.baiyue.warehouse.dto.PalletRequests; import com.baiyue.warehouse.entity.WarehouseLocationEntity; import com.baiyue.warehouse.entity.WarehousePalletEntity; import com.baiyue.warehouse.service.WarehouseResourceService; import jakarta.validation.Valid; import jakarta.annotation.Resource; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @Validated @RestController @RequestMapping("/api/merchant/v1/warehouses/{warehouseId}") public class MerchantWarehouseResourceController { @Resource private WarehouseResourceService service; @PostMapping("/locations") public ApiResponse createLocation(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable long warehouseId, @Valid @RequestBody LocationRequests.SaveRequest request) { return ApiResponse.success(service.createLocation(tenant(user), warehouseId, request)); } @PutMapping("/locations/{id}") public ApiResponse updateLocation(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable long warehouseId, @PathVariable long id, @Valid @RequestBody LocationRequests.SaveRequest request) { service.updateLocation(tenant(user), warehouseId, id, request); return ApiResponse.success(null); } @GetMapping("/locations") public ApiResponse> locations( @AuthenticationPrincipal AuthenticatedUser user, @PathVariable long warehouseId, @Valid LocationRequests.QueryRequest query) { return ApiResponse.success(service.locations(tenant(user), warehouseId, query)); } @GetMapping("/locations/{id}") public ApiResponse location(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable long warehouseId, @PathVariable long id) { return ApiResponse.success(service.location(tenant(user), warehouseId, id)); } @DeleteMapping("/locations/{id}") public ApiResponse deleteLocation(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable long warehouseId, @PathVariable long id) { service.deleteLocation(tenant(user), warehouseId, id); return ApiResponse.success(null); } @PostMapping("/pallets") public ApiResponse createPallet(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable long warehouseId, @Valid @RequestBody PalletRequests.SaveRequest request) { return ApiResponse.success(service.createPallet(tenant(user), warehouseId, request)); } @PutMapping("/pallets/{id}") public ApiResponse updatePallet(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable long warehouseId, @PathVariable long id, @Valid @RequestBody PalletRequests.SaveRequest request) { service.updatePallet(tenant(user), warehouseId, id, request); return ApiResponse.success(null); } @GetMapping("/pallets") public ApiResponse> pallets( @AuthenticationPrincipal AuthenticatedUser user, @PathVariable long warehouseId, @Valid PalletRequests.QueryRequest query) { return ApiResponse.success(service.pallets(tenant(user), warehouseId, query)); } @GetMapping("/pallets/{id}") public ApiResponse pallet(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable long warehouseId, @PathVariable long id) { return ApiResponse.success(service.pallet(tenant(user), warehouseId, id)); } @DeleteMapping("/pallets/{id}") public ApiResponse deletePallet(@AuthenticationPrincipal AuthenticatedUser user, @PathVariable long warehouseId, @PathVariable long id) { service.deletePallet(tenant(user), warehouseId, id); return ApiResponse.success(null); } private static long tenant(AuthenticatedUser user) { if (user == null || user.tenantId() == null || user.tenantId() <= 0) { throw new BizException(ResultCode.UNAUTHORIZED, "认证租户缺失"); } return user.tenantId(); } }