浏览代码

feat: 批量接口路由改 /payment/batch + module_payment:batch:* 权限

alphaH 5 天之前
父节点
当前提交
828188f496

+ 16 - 18
java/src/main/java/com/payment/platform/module/payment/batch/controller/BatchPayController.java

@@ -2,6 +2,7 @@ package com.payment.platform.module.payment.batch.controller;
 
 import com.payment.platform.common.response.PageResult;
 import com.payment.platform.common.response.Result;
+import com.payment.platform.module.payment.batch.dto.AuthorizeApplyDTO;
 import com.payment.platform.module.payment.batch.dto.BatchCreateDTO;
 import com.payment.platform.module.payment.batch.entity.BatchAuthorizeEntity;
 import com.payment.platform.module.payment.batch.entity.BatchOrderEntity;
@@ -17,64 +18,61 @@ import java.io.IOException;
 import java.util.Map;
 
 @RestController
-@RequestMapping("/payment/account/batch")
+@RequestMapping("/payment/batch")
 @RequiredArgsConstructor
 public class BatchPayController {
 
     private final AlipayBatchPayService batchPayService;
     private final BatchSubjectService batchSubjectService;
 
-    @PreAuthorize("@perm.hasAny('module_payment:account:authorize')")
+    @PreAuthorize("@perm.hasAny('module_payment:batch:authorize')")
     @PostMapping("/authorize/apply")
-    public Result<Map<String, String>> authorizeApply(@RequestBody Map<String, Object> b) {
-        // 账号级: 主体参数来自表单(名称/uid/服务商),不再从企业解析
+    public Result<Map<String, String>> authorizeApply(@Valid @RequestBody AuthorizeApplyDTO dto) {
+        // 账号级: 主体信息来自表单(名称/uid/服务商),不再从企业解析
         return Result.ok(batchSubjectService.apply(
-                (String) b.get("participant_name"),
-                (String) b.get("participant_id"),
-                b.get("service_provider_id") != null
-                        ? Long.valueOf(b.get("service_provider_id").toString()) : null));
+                dto.getParticipantName(), dto.getParticipantId(), dto.getServiceProviderId()));
     }
 
-    @PreAuthorize("@perm.hasAny('module_payment:account:authorize')")
+    @PreAuthorize("@perm.hasAny('module_payment:batch:authorize')")
     @PostMapping("/authorize/rebind")
     public Result<Map<String, String>> authorizeRebind(@RequestBody Map<String, Object> b) {
         return Result.ok(batchSubjectService.rebind(
                 b.get("id") != null ? Long.valueOf(b.get("id").toString()) : null));
     }
 
-    @PreAuthorize("@perm.hasAny('module_payment:account:authorize')")
+    @PreAuthorize("@perm.hasAny('module_payment:batch:authorize')")
     @GetMapping("/authorize/query")
     public Result<Map<String, String>> queryAuthorize(
             @RequestParam("out_biz_no") String outBizNo) {
         return Result.ok(batchSubjectService.query(outBizNo));
     }
 
-    @PreAuthorize("@perm.hasAny('module_payment:account:transfer')")
+    @PreAuthorize("@perm.hasAny('module_payment:batch:create')")
     @PostMapping("/create")
     public Result<Map<String, Object>> batchCreate(@Valid @RequestBody BatchCreateDTO dto) {
         return Result.ok(batchPayService.batchCreate(dto));
     }
 
-    @PreAuthorize("@perm.hasAny('module_payment:account:transfer')")
+    @PreAuthorize("@perm.hasAny('module_payment:batch:create')")
     @PostMapping("/pay")
     public Result<Map<String, String>> renderPay(@RequestBody Map<String, Object> b) {
         return Result.ok(batchPayService.renderPay((String) b.get("out_batch_no")));
     }
 
-    @PreAuthorize("@perm.hasAny('module_payment:account:transfer:list')")
+    @PreAuthorize("@perm.hasAny('module_payment:batch:list')")
     @GetMapping("/query")
     public Result<Map<String, Object>> batchQuery(
             @RequestParam("out_batch_no") String outBatchNo) {
         return Result.ok(batchPayService.batchQuery(outBatchNo));
     }
 
-    @PreAuthorize("@perm.hasAny('module_payment:account:transfer')")
+    @PreAuthorize("@perm.hasAny('module_payment:batch:create')")
     @PostMapping("/close")
     public Result<Map<String, String>> batchClose(@RequestBody Map<String, Object> b) {
         return Result.ok(batchPayService.batchClose((String) b.get("out_batch_no")));
     }
 
-    @PreAuthorize("@perm.hasAny('module_payment:account:transfer:list')")
+    @PreAuthorize("@perm.hasAny('module_payment:batch:list')")
     @GetMapping("/list")
     public Result<PageResult<BatchOrderEntity>> batchList(
             @RequestParam(name = "page_no", defaultValue = "1") int pageNo,
@@ -86,7 +84,7 @@ public class BatchPayController {
         return Result.ok(batchPayService.batchList(participantId, status, startTime, endTime, pageNo, pageSize));
     }
 
-    @PreAuthorize("@perm.hasAny('module_payment:account:transfer:detail')")
+    @PreAuthorize("@perm.hasAny('module_payment:batch:detail')")
     @GetMapping("/detail")
     public Result<Map<String, Object>> batchDetail(
             @RequestParam("out_batch_no") String outBatchNo,
@@ -95,7 +93,7 @@ public class BatchPayController {
         return Result.ok(batchPayService.batchDetail(outBatchNo, pageNo, pageSize));
     }
 
-    @PreAuthorize("@perm.hasAny('module_payment:account:transfer:list')")
+    @PreAuthorize("@perm.hasAny('module_payment:batch:list')")
     @GetMapping("/authorize/list")
     public Result<PageResult<BatchAuthorizeEntity>> authorizeList(
             @RequestParam(name = "page_no", defaultValue = "1") int pageNo,
@@ -104,7 +102,7 @@ public class BatchPayController {
         return Result.ok(batchSubjectService.list(participantId, pageNo, pageSize));
     }
 
-    @PreAuthorize("@perm.hasAny('module_payment:account:transfer:list')")
+    @PreAuthorize("@perm.hasAny('module_payment:batch:list')")
     @GetMapping("/export")
     public void batchExport(
             @RequestParam(name = "participant_id", required = false) String participantId,

+ 23 - 0
java/src/main/java/com/payment/platform/module/payment/batch/dto/AuthorizeApplyDTO.java

@@ -0,0 +1,23 @@
+package com.payment.platform.module.payment.batch.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+/** 账号级制单授权申请 — 主体信息由表单录入(不再从企业解析) */
+@Data
+public class AuthorizeApplyDTO {
+
+    @NotBlank(message = "主体名称不能为空")
+    @Schema(description = "主体名称(个人姓名/企业名称,展示在授权页面)")
+    private String participantName;
+
+    @NotBlank(message = "支付宝账号不能为空")
+    @Schema(description = "授权主体支付宝 uid(个人/企业支付宝账号均可)")
+    private String participantId;
+
+    @NotNull(message = "请选择服务商")
+    @Schema(description = "服务商(授权申请 client 解析依据)")
+    private Long serviceProviderId;
+}