From d8eaa16682cf180e9563d6be05fb43057daf6c07 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期一, 12 十月 2026 10:34:14 +0800
Subject: [PATCH] feat(merchant): 后台纳管外部进件商户并支持解绑

---
 talent-card-server/src/main/java/com/talentcard/server/business/admin/AdminManagementController.java |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/talent-card-server/src/main/java/com/talentcard/server/business/admin/AdminManagementController.java b/talent-card-server/src/main/java/com/talentcard/server/business/admin/AdminManagementController.java
index 6ae2a4f..43c14d6 100644
--- a/talent-card-server/src/main/java/com/talentcard/server/business/admin/AdminManagementController.java
+++ b/talent-card-server/src/main/java/com/talentcard/server/business/admin/AdminManagementController.java
@@ -11,9 +11,10 @@
 public class AdminManagementController {
   private final AdminManagementService service;
   private final MerchantSettlementAdminService settlementService;
+  private final MerchantManagedOnboardingService managedOnboardingService;
   private final PaymentReconciliationAdminService reconciliationService;
   private final ProtocolSettingAdminService protocolSettingService;
-  public AdminManagementController(AdminManagementService service, MerchantSettlementAdminService settlementService, PaymentReconciliationAdminService reconciliationService, ProtocolSettingAdminService protocolSettingService) { this.service = service; this.settlementService = settlementService; this.reconciliationService = reconciliationService; this.protocolSettingService = protocolSettingService; }
+  public AdminManagementController(AdminManagementService service, MerchantSettlementAdminService settlementService, MerchantManagedOnboardingService managedOnboardingService, PaymentReconciliationAdminService reconciliationService, ProtocolSettingAdminService protocolSettingService) { this.service = service; this.settlementService = settlementService; this.managedOnboardingService = managedOnboardingService; this.reconciliationService = reconciliationService; this.protocolSettingService = protocolSettingService; }
   @GetMapping("/settings") public ApiResponse<Map<String,Object>> settings() { return ApiResponse.success(service.settings()); }
   @PutMapping("/settings") public ApiResponse<Map<String,Object>> saveSettings(@RequestBody Map<String,String> body) { return ApiResponse.success(service.saveSettings(body)); }
   @GetMapping("/protocols/{key}") public ApiResponse<Map<String,Object>> protocol(@PathVariable String key) { return ApiResponse.success(protocolSettingService.detail(key)); }
@@ -36,6 +37,17 @@
   @PostMapping("/merchant-settlement/onboardings/{id}/realname") public ApiResponse<Map<String,Object>> submitRealname(@PathVariable Long id, @RequestParam(defaultValue = "false") boolean retry) { return ApiResponse.success(settlementService.submitRealname(id, retry)); }
   @GetMapping("/merchant-settlement/onboardings/{id}/payment-capability") public ApiResponse<Map<String,Object>> paymentCapability(@PathVariable Long id) { return ApiResponse.success(settlementService.paymentCapability(id)); }
   @PostMapping("/merchant-settlement/onboardings/{id}/payment-capability/refresh") public ApiResponse<Map<String,Object>> refreshPaymentCapability(@PathVariable Long id) { return ApiResponse.success(settlementService.refreshPaymentCapability(id)); }
+  /**
+   * 纳管:把已在汇付侧完成进件的外部商户接到我方某个商家上。
+   *
+   * <p>前置核验是**只读**的通道查询,把要人工核对的商户注册名称、商户简称、主体类型与结算卡取回来;
+   * 运营核对并显式确认后走 {@code managed} 提交。两者都挂在既有的 {@code onboardings} 前缀下,
+   * 权限沿用 {@code admin.merchant-settlement.edit}(GET 为 view、其余为 edit),不新增权限码。
+   */
+  @PostMapping("/merchant-settlement/onboardings/managed/preview") public ApiResponse<Map<String,Object>> previewManagedOnboarding(@RequestBody MerchantManagedOnboardingRequest request) { return ApiResponse.success(managedOnboardingService.preview(request.merchantId(), request.providerHuifuId())); }
+  @PostMapping("/merchant-settlement/onboardings/managed") public ApiResponse<Map<String,Object>> adoptManagedOnboarding(@RequestBody MerchantManagedOnboardingRequest request) { return ApiResponse.success(managedOnboardingService.adopt(request.merchantId(), request.providerHuifuId(), request.providerApplyNo(), Boolean.TRUE.equals(request.confirmed()))); }
+  /** 解绑:只解除我方绑定,只清理这条纳管产生的进件与结算卡记录,不回退通道侧的任何改动。 */
+  @PostMapping("/merchant-settlement/onboardings/{id}/unbind") public ApiResponse<Map<String,Object>> unbindManagedOnboarding(@PathVariable Long id) { return ApiResponse.success(managedOnboardingService.unbind(id)); }
   @GetMapping("/merchant-settlement/bank-cards") public ApiResponse<com.talentcard.server.business.PageResult<Map<String,Object>>> bankCards(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "20") int size, @RequestParam(required = false) String merchantName, @RequestParam(required = false) String contactMobile, @RequestParam(required = false) String merchantType, @RequestParam(required = false) String status, @RequestParam(required = false) String startDate, @RequestParam(required = false) String endDate) { return ApiResponse.success(settlementService.bankCards(page, size, merchantName, contactMobile, merchantType, status, startDate, endDate)); }
   /**
    * 结算记录:向斗拱查询指定区间的真实结算流水,用于监控每天自动结算了多少到银行卡。

--
Gitblit v1.7.1