Procházet zdrojové kódy

fix: 备注改为必填+场景联动placeholder提示, 后端强制校验

alphaH před 3 dny
rodič
revize
d2fed67a2a

+ 12 - 2
frontend/src/views/module_payment/account/index.vue

@@ -253,8 +253,8 @@
                   <el-input v-model="transferForm.payee_info.bankcard_ext_info!.bank_code" placeholder="请输入联行号" />
                 </el-form-item>
               </template>
-              <el-form-item label="备注" prop="remark">
-                <el-input v-model="transferForm.remark" type="textarea" placeholder="请输入备注" />
+              <el-form-item label="备注" prop="remark" required>
+                <el-input v-model="transferForm.remark" type="textarea" :placeholder="remarkPlaceholder" />
               </el-form-item>
               <el-form-item>
                 <el-button v-hasPerm="['module_payment:account:transfer']" type="primary" :loading="transferLoading"
@@ -1086,6 +1086,7 @@ const transferRules: FormRules = {
   "payee_info.identity_type": [{ required: true, message: "请选择收款方类型", trigger: "change" }],
   "payee_info.name": [{ required: true, message: "请输入收款方姓名", trigger: "blur" }],
   "payee_info.identity": [{ required: true, message: "请输入收款方账号", trigger: "blur" }],
+  remark: [{ required: true, message: "请填写备注,说明转账事由", trigger: "blur" }],
 };
 
 const TRANSFER_SCENE_OPTIONS = [
@@ -1094,6 +1095,15 @@ const TRANSFER_SCENE_OPTIONS = [
   { value: "二手回收", label: "二手回收" },
 ];
 
+const remarkPlaceholder = computed(() => {
+  const map: Record<string, string> = {
+    "佣金报酬": "请填写佣金报酬说明,如:8月家政服务报酬",
+    "业务结算": "请填写结算款项名称,如:材料货款",
+    "二手回收": "请填写回收商品名称,如:旧衣服",
+  };
+  return map[transferForm.transfer_scene_name] || "请填写转账事由";
+});
+
 const isAlipayPayee = computed(() =>
   transferForm.payee_info.identity_type === "ALIPAY_USER_ID"
   || transferForm.payee_info.identity_type === "ALIPAY_LOGON_ID"

+ 5 - 6
java/src/main/java/com/payment/platform/module/payment/account/service/AlipayTransferService.java

@@ -525,11 +525,10 @@ public class AlipayTransferService {
             model.setBizScene(BIZ_SCENE_TRANSFER);
             model.setProductCode(PRODUCT_CODE);
             model.setOrderTitle(orderTitle);
-            // 接入指南 §4.2: 单笔金额超过50000时 remark 必传
-            if (amount.compareTo(new BigDecimal("50000")) > 0
-                    && (remark == null || remark.isBlank()))
-                throw new BusinessException(400, "单笔转账超过50000元必须填写备注");
-            if (remark != null && !remark.isBlank()) model.setRemark(remark);
+            // 备注必填
+            if (remark == null || remark.isBlank())
+                throw new BusinessException(400, "备注不能为空,请填写转账事由");
+            model.setRemark(remark);
 
             // 必填: 付款方(记账本)
             Participant payer = new Participant();
@@ -575,7 +574,7 @@ public class AlipayTransferService {
                 case "二手回收" -> "回收商品说明";
                 default -> "佣金报酬说明";
             });
-            info.setInfoContent(orderTitle != null ? orderTitle : "转账");
+            info.setInfoContent(remark != null && !remark.isBlank() ? remark : "转账");
             sceneReportInfos.add(info);
             model.setTransferSceneReportInfos(sceneReportInfos);