110 lines
5.4 KiB
Java
110 lines
5.4 KiB
Java
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<Long> 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<Void> 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<PageResult<WarehouseLocationEntity>> 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<WarehouseLocationEntity> location(@AuthenticationPrincipal AuthenticatedUser user,
|
|
@PathVariable long warehouseId,
|
|
@PathVariable long id) {
|
|
return ApiResponse.success(service.location(tenant(user), warehouseId, id));
|
|
}
|
|
|
|
@DeleteMapping("/locations/{id}")
|
|
public ApiResponse<Void> deleteLocation(@AuthenticationPrincipal AuthenticatedUser user,
|
|
@PathVariable long warehouseId, @PathVariable long id) {
|
|
service.deleteLocation(tenant(user), warehouseId, id);
|
|
return ApiResponse.success(null);
|
|
}
|
|
|
|
@PostMapping("/pallets")
|
|
public ApiResponse<Long> 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<Void> 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<PageResult<WarehousePalletEntity>> 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<WarehousePalletEntity> pallet(@AuthenticationPrincipal AuthenticatedUser user,
|
|
@PathVariable long warehouseId, @PathVariable long id) {
|
|
return ApiResponse.success(service.pallet(tenant(user), warehouseId, id));
|
|
}
|
|
|
|
@DeleteMapping("/pallets/{id}")
|
|
public ApiResponse<Void> 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();
|
|
}
|
|
}
|