auto verify for order fulfillment and payment

This commit is contained in:
Timi
2026-09-16 13:06:39 +08:00
parent a2b6253d1d
commit cd8bcae5be
4 changed files with 41 additions and 0 deletions
@@ -2,6 +2,7 @@ package com.imyeyu.api.modules.gao.controller;
import com.imyeyu.api.modules.common.entity.Attachment; import com.imyeyu.api.modules.common.entity.Attachment;
import com.imyeyu.api.modules.common.service.AttachmentService; import com.imyeyu.api.modules.common.service.AttachmentService;
import com.imyeyu.api.bean.PermissionMatchMode;
import com.imyeyu.api.modules.gao.annotation.RequireGaoPermission; import com.imyeyu.api.modules.gao.annotation.RequireGaoPermission;
import com.imyeyu.api.modules.gao.bean.GaoPermissionCode; import com.imyeyu.api.modules.gao.bean.GaoPermissionCode;
import com.imyeyu.api.modules.gao.entity.GaoCustomer; import com.imyeyu.api.modules.gao.entity.GaoCustomer;
@@ -78,6 +79,16 @@ public class GaoOrderFulfillmentController {
return result; return result;
} }
@AOPLog
@RequestRateLimit
@RequireGaoPermission(value = { GaoPermissionCode.ORDER_FULFILLMENT_CREATE, GaoPermissionCode.ORDER_FULFILLMENT_VERIFY }, mode = PermissionMatchMode.ALL)
@PostMapping("/create-and-verify")
public GaoOrderFulfillment createAndVerify(@RequestBody GaoOrderFulfillmentCreateRequest request) {
GaoOrderFulfillment result = service.createAndVerify(request);
fillTransient(List.of(result));
return result;
}
@AOPLog @AOPLog
@RequestRateLimit @RequestRateLimit
@RequireGaoPermission(GaoPermissionCode.ORDER_FULFILLMENT_VERIFY) @RequireGaoPermission(GaoPermissionCode.ORDER_FULFILLMENT_VERIFY)
@@ -102,6 +102,14 @@ public class GaoSalesOrderController {
return paymentService.receive(request); return paymentService.receive(request);
} }
@AOPLog
@RequestRateLimit
@RequireGaoPermission(value = { GaoPermissionCode.FUND_RECEIVE_CREATE, GaoPermissionCode.FUND_RECEIVE_VERIFY }, mode = PermissionMatchMode.ALL)
@PostMapping("/payment/receive-and-verify")
public GaoFundRecord receiveAndVerify(@RequestBody GaoOrderPaymentReceiveRequest request) {
return paymentService.receiveAndVerify(request);
}
@AOPLog @AOPLog
@RequestRateLimit @RequestRateLimit
@RequireGaoPermission(GaoPermissionCode.FUND_RECEIVE_VERIFY) @RequireGaoPermission(GaoPermissionCode.FUND_RECEIVE_VERIFY)
@@ -32,6 +32,9 @@ public interface GaoOrderFulfillmentService extends BaseService<GaoOrderFulfillm
/// 创建履约单 /// 创建履约单
GaoOrderFulfillment create(GaoOrderFulfillmentCreateRequest request); GaoOrderFulfillment create(GaoOrderFulfillmentCreateRequest request);
/// 创建并直接核销履约单
GaoOrderFulfillment createAndVerify(GaoOrderFulfillmentCreateRequest request);
/// 为库存不足履约单准备库存 /// 为库存不足履约单准备库存
GaoOrderFulfillment prepareStock(GaoOrderFulfillmentPrepareStockRequest request); GaoOrderFulfillment prepareStock(GaoOrderFulfillmentPrepareStockRequest request);
@@ -153,6 +153,19 @@ public class GaoOrderFulfillmentServiceImplement extends AbstractEntityService<G
return createInternal(request); return createInternal(request);
} }
@OperationAudit(AuditOperation.GAO_ORDER_FULFILLMENT_CREATE)
@Transactional(TimiServerDBConfig.ROLLBACKER)
@Override
public GaoOrderFulfillment createAndVerify(GaoOrderFulfillmentCreateRequest request) {
GaoOrderFulfillment fulfillment = createInternal(request);
if (fulfillment.getStatus() == GaoOrderFulfillment.Status.VERIFIED) {
return fulfillment;
}
TimiException.requiredTrue(fulfillment.getStatus() == GaoOrderFulfillment.Status.PENDING,
"库存不足,不能直接核销履约");
return verifyInternal(actionRequest(fulfillment.getId()));
}
private GaoOrderFulfillment createInternal(GaoOrderFulfillmentCreateRequest request) { private GaoOrderFulfillment createInternal(GaoOrderFulfillmentCreateRequest request) {
TimiException.required(request, "not found fulfillment request"); TimiException.required(request, "not found fulfillment request");
String requestNo = requiredText(request.getRequestNo(), "not found requestNo"); String requestNo = requiredText(request.getRequestNo(), "not found requestNo");
@@ -588,6 +601,12 @@ public class GaoOrderFulfillmentServiceImplement extends AbstractEntityService<G
} }
} }
private GaoOrderFulfillmentActionRequest actionRequest(String fulfillmentId) {
GaoOrderFulfillmentActionRequest request = new GaoOrderFulfillmentActionRequest();
request.setFulfillmentId(fulfillmentId);
return request;
}
private GaoOrderFulfillmentItem copyFulfillmentItem(GaoOrderFulfillmentItem source) { private GaoOrderFulfillmentItem copyFulfillmentItem(GaoOrderFulfillmentItem source) {
GaoOrderFulfillmentItem result = new GaoOrderFulfillmentItem(); GaoOrderFulfillmentItem result = new GaoOrderFulfillmentItem();
result.setSkuId(source.getSkuId()); result.setSkuId(source.getSkuId());