You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.1 KiB
2.1 KiB
03 — 联系人子表
What to build: 客户下的联系人能增删改查、全局搜索,且联系人权限继承客户(无独立 ACL)。同客户内电话不重复做表单级校验;跨客户电话命中只软提示、不禁止(D26 口径)。
Blocked by: 02 — 客户主表 CRUD + 查重校验
Status: ready-for-agent
Spec 依据(详见 issues/06-answer.md):联系人独立表 customer_contact + 商机侧硬依赖契约。D26 翻案后口径:不建电话唯一索引,跨客户电话=可配置软提示。
customer_contact实体(票 06 §A 全字段):customer_id(NOT NULL,无孤立联系人) / name / jobTitleName / jobTitleId / jobTitleCategory / jobTitleLevel / phone / isKeyContact / isInternal / giftRemark / source + BaseEntity;deleted逻辑删除- 索引:
idx_contact_customer(customer_id, deleted);idx_contact_name(name)。不建uk_contact_phone(D26 已撤销) - 权限模型(票 06):无独立
@DataScope;服务层按所属客户校验——对客户有读权限→对其全部联系人有读权限;无客户读写权限时隐藏联系人增删改入口、服务端仍校验 - CRUD 契约:
POST /api/customer/contact/PUT /api/customer/contact/{id}/DELETE /api/customer/contact/{id}/GET /api/customer/{id}/contacts(按客户查列表) - 全局搜索:
GET /api/customer/contact/search(带出所属客户名,商机「商机关键联系人」数据源) - 电话查重(D26 最终口径):同一客户内同表格电话相同两行→禁止提交并定位重复行(表单级硬校验);无电话→按"客户+姓名+职务"提示疑似重复(只提示);跨客户电话命中→软提示疑似重复、不阻断,受 crm-rule「客户查重设置→联系电话」开关控制(默认开、可关)
- 商机侧硬依赖契约:
POST /api/customer/quick-create(最小必填集快速创建);GET /api/customer/search(名称/联系人/电话/类型四维模糊+分页)——供票 11 对接 - 手机号格式校验;联系人不设独立 ACL 的服务层测试覆盖