2026-06-06-service-provider-scope-wanlihui-design.md 3.7 KB

服务商业务范围下拉 & 企业万里汇uid

日期: 2026-06-06
分支: java


概述

  1. 服务商管理页面(新增/编辑弹窗)的"业务范围标签"从输入框改为下拉框,仅映射"国内" / "国外"
  2. 企业入驻/新增企业弹窗中,若选择"国外"标签的服务商,新增"万里汇uid"输入框,该字段落库并在企业详情中回显

改动清单

数据库

  • pay_enterprise 新增列 wanlihui_uid VARCHAR(128)(无唯一约束,允许为空)
  • 新 SQL 迁移文件: java/sql/007_enterprise_wanlihui_uid.sql

    ALTER TABLE pay_enterprise ADD COLUMN IF NOT EXISTS wanlihui_uid VARCHAR(128);
    

后端 (Java)

文件 改动
EnterpriseEntity.java 新增 @TableField("wanlihui_uid") private String wanlihuiUid;
EnterpriseCreateDTO.java 新增 private String wanlihuiUid;
EnterpriseUpdateDTO.java 新增 private String wanlihuiUid;
EnterpriseVO.java 新增 @JsonProperty("wanlihui_uid") private String wanlihuiUid;
EnterpriseService.java create() / update() 处理 wanlihuiUid 字段映射
AlipayEnterpriseService.java applyInvite() 保存 wanlihuiUid 到实体

前端

文件 改动
service_provider/index.vue scope_label 字段从 <el-input> 改为 <el-select>: 国内DOMESTIC, 国外OVERSEAS
EnterpriseForm.vue 监听 service_provider_id 变化,当选中服务商的 scope_label === 'OVERSEAS' 时显示万里汇uid输入框;提交时携带 wanlihui_uid
EnterpriseDetail.vue 回显 wanlihui_uid 字段
enterprise.ts EnterpriseDetail 接口补充 wanlihui_uid
schema.ts 补充 wanlihui_uid 类型

关键逻辑

服务商表单 scope_label

创建/编辑服务商时:
  scope_label 字段类型: el-select (替代原 el-input)
  选项:
    { label: '国内', value: 'DOMESTIC' }
    { label: '国外', value: 'OVERSEAS' }
  DOMESTIC 保持为默认值

企业表单万里汇uid显隐

EnterpriseForm.vue:

watch service_provider_id:
  → 从 providerOptions 查找选中服务商的 scope_label
  → formData.scope_label = provider.scope_label
  
computed showWanlihuiUid:
  → formData.scope_label === 'OVERSEAS'

模板:
  <el-form-item v-if="showWanlihuiUid" label="万里汇uid" prop="wanlihui_uid">
    <el-input v-model="formData.wanlihui_uid" placeholder="请输入万里汇uid" />
  </el-form-item>

handleProviderChange():
  → 切换服务商时若 scope_label !== 'OVERSEAS',清空 formData.wanlihui_uid

数据流

提交企业:
  EnterpriseForm → { ..., wanlihui_uid: "xxx" }
    → EnterpriseAPI.applyInvite(payload)
      → POST /payment/enterprise/invite
        → AlipayEnterpriseService.applyInvite()
          → entity.setWanlihuiUid(dto.getWanlihuiUid())
          → enterpriseMapper.insert(entity)
            → pay_enterprise.wanlihui_uid = "xxx"

回显企业详情:
  EnterpriseDetail → EnterpriseAPI.detail(id)
    → GET /payment/enterprise/{id}
      → EnterpriseService.detail()
        → enterpriseMapper.selectById(id)
        → toVO(entity) → EnterpriseVO { wanlihui_uid: "xxx" }
          → 前端展示

测试要点

  1. 服务商新增/编辑 → scope_label 下拉框正常展示国内/国外,提交保存正确
  2. 选择国外服务商 → 企业表单出现万里汇uid输入框
  3. 切换回国内服务商 → 万里汇uid输入框消失并清空值
  4. 填写万里汇uid后提交 → 数据成功写入 pay_enterprise.wanlihui_uid
  5. 企业详情页面 → 万里汇uid正确回显
  6. 不填万里汇uid提交 → 不报错(非必填)