This commit is contained in:
2026-08-18 11:41:10 +08:00
parent 3e1010fa26
commit ec4b1e0fe5
28 changed files with 412 additions and 42 deletions
@@ -36,7 +36,7 @@ public class InternalPriceBookController {
@Valid @RequestBody PriceBookChannelValidation.Request request) {
requireToken(token);
return ApiResponse.success(service.requireAvailableChannel(request.tenantId(), request.originWarehouseId(),
request.channelCode(), request.destinationType()));
request.channelCode(), request.destinationType(), request.requireInboundCodePrefix()));
}
private void requireToken(String token) {
@@ -12,7 +12,8 @@ public final class PriceBookChannelValidation {
@Min(1) long tenantId,
@Min(1) long originWarehouseId,
@NotBlank @Size(max = 64) String channelCode,
@NotBlank @Pattern(regexp = "FBA|OVERSEAS|PRIVATE") String destinationType
@NotBlank @Pattern(regexp = "FBA|OVERSEAS|PRIVATE") String destinationType,
boolean requireInboundCodePrefix
) {}
public record Response(String channelCode, String inboundCodePrefix) {}
@@ -49,7 +49,7 @@ public class MerchantPriceBookService {
}
public Response requireAvailableChannel(long merchantTenantId, long originWarehouseId, String channelCode,
String destinationType) {
String destinationType, boolean requireInboundCodePrefix) {
requireMerchant(merchantTenantId);
if (originWarehouseId <= 0) throw validation("请选择有效起运仓");
Long versionId = repository.activeVersionId();
@@ -57,6 +57,9 @@ public class MerchantPriceBookService {
if (versionId == null || !repository.channelAvailable(versionId, originWarehouseId, normalized)) {
throw new BizException(ResultCode.CONFLICT, "所选渠道已下线,请重新选择");
}
if (!requireInboundCodePrefix) {
return new Response(normalized, null);
}
var prefix = repository.channelPrefix(normalized);
if (prefix == null || !StringUtils.hasText(prefix.inboundCodePrefix())) {
throw new BizException(ResultCode.CONFLICT, "所选渠道未配置进仓编码");