最近和一个朋友要合作一个新项目,需要开发一个招商系统,因为我们来团EPR系统新增招商系统,基于ThinkPHP8与LT-ERP框架开发,实现电话线索的投放、套餐、合作公司及客户自助领取一体化管理,涵盖数据进池、匹配投放、客户领取、扣费与充值核心闭环。
基于 ThinkPHP8 多应用模式 + LT-ERP框架 + Layui 前端
版本:V1.0 编制日期:2026-09-24
定位:招商数据(电话线索)的投放、套餐、合作公司与客户自助领取的一体化管理应用
公司将招商获取的电话线索(姓名、电话、品牌、地区等)作为数据产品,投放给合作公司客户使用。需要:
建设目标:一期打通"数据进池 → 匹配投放 → 客户领取 → 扣费 → 充值"核心闭环;二期补充看板分析与采集、支付对接。
| 端 | 模块 | 功能点 |
|---|---|---|
| 内部后台 | 电话数据管理 | 招商数据列表,按时间、顶级分类、子级分类、所属分类、品牌筛选;字段含姓名、电话、所属分类、品牌名称、所属地区、备注、来源站点、入口来源、IP地址、推送时间 |
| 内部后台 | 合作方案套餐 | 合作套餐管理:套餐方案、套餐类别(名称)、数据单价、合作周期、日推送数 |
| 内部后台 | 合作公司管理 | 合作公司列表、信息修改弹窗;数据领取记录、数据赠送记录、充值赠送记录 |
| 客户门户 | 客户数据管理 | 客户数据领取(脱敏号码 + 提取按钮)、我的客户数据、我的品牌数据 |
| 客户门户 | 账户认证授权 | 登录账户信息、登录认证授权(子账号)、财务收支明细 |
合作公司信息弹窗字段:公司名称、对接人员、公司地址、公司官网、联系电话、旗下品牌、业务经理、自动推送、客户单价、提取限额、行业分配(顶级)、所属子类、套餐分类、套餐详情、关联行业、排除行业。
| 决策项 | 结论 |
|---|---|
| 合作公司账号体系 | 复用lterp_admin系统账号 ,新增"合作客户"岗位 + 客户门户权限组,仅授予门户菜单 |
| 套餐与计费关系 | 套餐即预存,领完即止 :套餐价全额计入账户余额,客户每提取一条按数据单价扣余额,不另设套餐资格费 |
| 领取流程 | 两段式 :数据先进入客户"待提取"池(显示脱敏号码),客户点"提取"才扣余额并看到完整号码 |
| 数据归属 | 非独占,可配置最高领取次数 :每条数据有max_claim(如 2),即最多被 2 个公司领取;领取计数达上限后自动出池、不可再分配 |
| 退单/撤回 | 任何阶段都不可撤回 :数据进入公司名下(含待提取)即占用名额,不支持管理员收回;提取后不支持退单退款 |
| 数据来源 | 一期支持 Excel 批量导入 ,同时 预留 API/采集对接接口 (保留来源站点、入口来源、IP 字段) |
| 账号粒度 | 主账号 + 多个子账号 :子账号由主账号在门户开通,同公司数据共享 |
| 一期范围 | 先做核心闭环,数据汇总/业务分析看板放二期 |
新建独立应用 zhaoshang(招商系统) ,业务表统一使用前缀 lterp_zs_。内部后台与客户门户同属一个应用:
app/zhaoshang/controller/app/zhaoshang/controller/portal/(URL:zhaoshang/portal.控制器/动作)两类控制器对应两批权限节点(lterp_admin_rule),通过权限组隔离。框架按 应用/控制器/方法 逐路径鉴权,客户角色拿不到内部节点,直接输入内部 URL 同样被拒绝。
选型理由:完整复用登录、权限、菜单、导入、日志、定时任务等框架能力;菜单与 URL 天然隔离;不侵入现有 customer 应用,降低与官方版本更新冲突的风险。
app/zhaoshang/
├── controller/ # 内部后台
│ ├── Cate.php # 招商行业分类(两级)
│ ├── PackageCate.php # 套餐方案
│ ├── Package.php # 合作套餐
│ ├── Company.php # 合作公司(含领取/赠送记录)
│ ├── Data.php # 招商数据池(含导入、后台分配)
│ ├── Recharge.php # 充值赠送
│ ├── Api.php # 预留采集对接接口(token 鉴权)
│ └── portal/ # 客户门户
│ ├── Lead.php # 客户数据领取
│ ├── Mine.php # 我的客户数据 / 我的品牌数据
│ ├── Account.php # 账户信息 / 财务收支明细
│ └── Auth.php # 子账号授权
├── model/
├── validate/
├── view/
├── command/
│ └── ZsPush.php # 自动推送定时任务(zs:push)
├── common.php
├── event.php
└── middleware.php
Excel导入 / API采集
│
▼
lterp_zs_data 数据池(在池,可领次数 max_claim)
│
┌───┼───────────────┬──────────────────┐
▼ ▼ ▼ ▼
自动推送 后台分配 客户公共池自领
(定时任务) (管理员) (门户抢占)
└───┴───────┬──────────────────┘
▼
lterp_zs_claim(待提取,号码脱敏,进入即占用名额)
│ 点"提取":校验余额/日限额/合作期
▼
已提取:扣余额、写财务流水、展示完整号码(终态,不可撤回)
lterp_admin 增加两列(完整 DDL 见 6.9):
| 字段 | 说明 |
|---|---|
company_id |
绑定的合作公司 ID(关联lterp_zs_company.id),0 = 内部员工 |
is_main |
是否合作公司主账号:0 否,1 是 |
lterp_position 新建岗位 "合作客户" 。lterp_admin_group 新建权限分组 "客户门户组" ,rules 只勾选门户权限节点。lterp_position_group 建立关联:岗位"合作客户" → 组"客户门户组"。position_id=合作客户岗位,company_id=公司 ID,is_main=1)。company_id、同岗位。where company_id = 当前账号 company_id。lterp_admin.company_id 获取当前公司,不接受前端传入的 company_id。共新增 8 张表 ,改造 1 张表 。时间字段统一 bigint(11) 时间戳,金额统一 decimal,引擎 InnoDB、字符集 utf8mb4。
lterp_zs_cate 招商行业分类(两级树)CREATE TABLE `lterp_zs_cate` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`pid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '父级ID,0为顶级分类',
`title` varchar(100) NOT NULL DEFAULT '' COMMENT '分类名称:顶级如餐饮美食,子级如快餐',
`sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序,越小越靠前',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:0禁用 1正常',
`admin_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建人',
`create_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `pid` (`pid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招商行业分类表';
lterp_zs_package_cate 套餐方案CREATE TABLE `lterp_zs_package_cate` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL DEFAULT '' COMMENT '套餐方案:如维修合作方案、洗车合作方案、通用方案',
`sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:0禁用 1正常',
`admin_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建人',
`create_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招商套餐方案表';
lterp_zs_package 合作套餐CREATE TABLE `lterp_zs_package` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`cate_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '套餐方案ID',
`title` varchar(150) NOT NULL DEFAULT '' COMMENT '套餐名称,如:维修(29800套餐)、9800(季度套餐)',
`price` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '套餐价格(即预存金额,全额计入余额)',
`data_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '数据单价(元/条)',
`period_days` int(11) NOT NULL DEFAULT '360' COMMENT '合作周期(天)',
`daily_push` int(11) NOT NULL DEFAULT '0' COMMENT '日推送数上限(条/天),0不限',
`daily_extract` int(11) NOT NULL DEFAULT '0' COMMENT '日提取上限(条/天)默认值,0不限',
`sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:0禁用 1正常',
`remark` varchar(1000) NOT NULL DEFAULT '' COMMENT '备注',
`admin_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建人',
`create_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `cate_id` (`cate_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招商合作套餐表';
lterp_zs_company 合作公司扩展(核心)CREATE TABLE `lterp_zs_company` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`customer_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '关联客户ID(lterp_customer.id)',
`package_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '绑定套餐ID',
`name` varchar(255) NOT NULL DEFAULT '' COMMENT '公司名称(冗余客户名称)',
`contact_person` varchar(50) NOT NULL DEFAULT '' COMMENT '对接人员',
`contact_mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '联系电话',
`address` varchar(255) NOT NULL DEFAULT '' COMMENT '公司地址',
`website` varchar(255) NOT NULL DEFAULT '' COMMENT '公司官网',
`brands` varchar(500) NOT NULL DEFAULT '' COMMENT '旗下品牌,多个用#分隔',
`get_mode` tinyint(1) NOT NULL DEFAULT '1' COMMENT '领取模式:1系统分配 2客户自领 3两者都开',
`auto_push` tinyint(1) NOT NULL DEFAULT '0' COMMENT '自动推送:0否 1是',
`data_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '客户单价(绑套餐时带出,可单独调整)',
`daily_extract` int(11) NOT NULL DEFAULT '0' COMMENT '提取限额(条/天),0不限',
`cate_pids` varchar(500) NOT NULL DEFAULT '' COMMENT '行业分配:顶级分类ID,逗号分隔',
`cate_ids` varchar(500) NOT NULL DEFAULT '' COMMENT '所属子类ID,逗号分隔',
`related_keywords` varchar(500) NOT NULL DEFAULT '' COMMENT '关联行业关键词,#分隔,如 母婴#月子#产后',
`exclude_keywords` varchar(500) NOT NULL DEFAULT '' COMMENT '排除行业关键词,#分隔,最多5个',
`balance` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '账户余额(套餐预存+充值+赠送-提取)',
`start_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '合作开始时间',
`end_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '合作到期时间',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:0停用 1正常 2到期',
`remark` varchar(1000) NOT NULL DEFAULT '' COMMENT '备注',
`admin_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '录入人',
`create_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
`delete_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `customer_id` (`customer_id`) USING BTREE,
KEY `package_id` (`package_id`) USING BTREE,
KEY `status` (`status`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招商合作公司扩展表';
列表中"今日获取"= 当日该公司 claim 生成条数;"今日消费"= 当日提取扣费合计,均实时统计,不落字段。
lterp_zs_data 招商数据池CREATE TABLE `lterp_zs_data` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL DEFAULT '' COMMENT '姓名',
`mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '电话(库存完整号码,列表展示时脱敏)',
`cate_pid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '顶级分类ID',
`cate_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '子级分类ID',
`brand` varchar(255) NOT NULL DEFAULT '' COMMENT '品牌名称',
`provinceid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '省份ID',
`cityid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '城市ID',
`distid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '区县ID',
`region` varchar(255) NOT NULL DEFAULT '' COMMENT '所属地区(冗余文本,如 山东-威海市)',
`remark` varchar(1000) NOT NULL DEFAULT '' COMMENT '备注信息',
`source_site` varchar(100) NOT NULL DEFAULT '' COMMENT '来源站点',
`source_entry` varchar(50) NOT NULL DEFAULT '' COMMENT '入口来源,如 百度、头条',
`ip` varchar(50) NOT NULL DEFAULT '' COMMENT 'IP地址',
`max_claim` int(11) NOT NULL DEFAULT '1' COMMENT '最高领取次数,默认1即独占',
`claimed_count` int(11) NOT NULL DEFAULT '0' COMMENT '已被领取次数',
`import_batch` varchar(50) NOT NULL DEFAULT '' COMMENT '导入批次号',
`push_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '线索原始推送时间',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:1在池可分配 2已领满出池',
`admin_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '录入人',
`create_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
`delete_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '删除时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `cate` (`cate_pid`,`cate_id`) USING BTREE,
KEY `status` (`status`) USING BTREE,
KEY `mobile` (`mobile`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招商电话数据池表';
lterp_zs_claim 领取/分配记录(流转核心)CREATE TABLE `lterp_zs_claim` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`data_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '招商数据ID',
`company_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '合作公司ID',
`assign_type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '进入方式:1自动推送 2后台分配 3公共池自领',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:1待提取 2已提取',
`price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '本条扣费单价(生成时快照)',
`is_gift` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否赠送:0否(扣费)1是(免费)',
`assign_uid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '分配操作人(自动推送为0)',
`assign_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '进入待领池时间',
`extract_uid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '提取操作账号',
`extract_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '提取时间',
`admin_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '记录创建人',
`create_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `data_company` (`data_id`,`company_id`) USING BTREE,
KEY `company_status` (`company_id`,`status`) USING BTREE,
KEY `data_id` (`data_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招商数据领取分配记录表';
lterp_zs_recharge 充值/赠送登记CREATE TABLE `lterp_zs_recharge` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`company_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '合作公司ID',
`amount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '充值金额',
`gift_amount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '赠送金额',
`pay_type` varchar(50) NOT NULL DEFAULT '' COMMENT '付款方式',
`pay_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '到账时间',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:0作废 1有效',
`remark` varchar(1000) NOT NULL DEFAULT '' COMMENT '备注',
`admin_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '经办人',
`create_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `company_id` (`company_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招商客户充值赠送登记表';
lterp_zs_finance_log 财务流水CREATE TABLE `lterp_zs_finance_log` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`company_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '合作公司ID',
`company_name` varchar(255) NOT NULL DEFAULT '' COMMENT '公司名称(快照)',
`event_type` varchar(30) NOT NULL DEFAULT '' COMMENT '事件类型:package套餐预存/data_extract数据提取/recharge充值/recharge_gift充值赠送/data_gift数据赠送',
`event_desc` varchar(255) NOT NULL DEFAULT '' COMMENT '事件详细,如:数据提取扣¥30',
`amount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '本次发生额:正数入账,负数扣减',
`balance` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '变动后账户余额',
`operate_name` varchar(100) NOT NULL DEFAULT '' COMMENT '操作用户名称',
`admin_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '操作人ID',
`create_time` bigint(11) NOT NULL DEFAULT '0' COMMENT '变更时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `company_id` (`company_id`) USING BTREE,
KEY `event_type` (`event_type`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招商客户财务流水表';
ALTER TABLE `lterp_admin`
ADD COLUMN `company_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '绑定合作公司ID,0为内部员工' AFTER `position_id`,
ADD COLUMN `is_main` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否合作公司主账号:0否 1是' AFTER `company_id`;
| event_type | 触发时机 | amount |
|---|---|---|
| package | 绑定套餐,套餐价预存 | +套餐价 |
| data_extract | 客户点"提取" | −单价 |
| recharge | 充值登记 | +充值额 |
| recharge_gift | 充值含赠送 | +赠送额 |
| data_gift | 后台赠送数据(is_gift=1) | 0(仅记录,不扣费) |
在后台"系统管理 → 功能节点"中新增(module 均为 zhaoshang),或通过节点插入 SQL 完成。menu=1 为菜单,menu=2 为权限节点。
顶层分组两种挂法均可:挂一个"招商系统"父节点统一收纳;或参照截图,将"电话数据管理 / 合作方案套餐 / 合作公司管理"分别注册为
pid=0的顶级分组。下表按统一父节点描述,实际以截图的多顶级分组为准。
| 层级 | 名称 | src | menu |
|---|---|---|---|
| 1 | 招商系统 | (空) | 1 |
| 2 | 电话数据管理 | (空) | 1 |
| 3 | 电话数据列表 | zhaoshang/data/datalist | 1 |
| 3 | 新建/编辑 | zhaoshang/data/add | 2 |
| 3 | 删除 | zhaoshang/data/del | 2 |
| 3 | Excel导入 | zhaoshang/data/import | 2 |
| 3 | 后台分配 | zhaoshang/data/assign | 2 |
| 2 | 合作方案套餐 | (空) | 1 |
| 3 | 套餐方案 | zhaoshang/package_cate/datalist | 2 |
| 3 | 合作套餐管理 | zhaoshang/package/datalist | 1 |
| 3 | 新建/编辑/删除 | zhaoshang/package/add、del | 2 |
| 2 | 合作公司管理 | (空) | 1 |
| 3 | 合作公司列表 | zhaoshang/company/datalist | 1 |
| 3 | 新建/编辑 | zhaoshang/company/add | 2 |
| 3 | 数据领取记录 | zhaoshang/company/claims | 1 |
| 3 | 数据赠送记录/赠送 | zhaoshang/company/gifts、gift_add | 1 / 2 |
| 3 | 充值赠送记录/充值 | zhaoshang/recharge/datalist、add | 1 / 2 |
| 层级 | 名称 | src | menu |
|---|---|---|---|
| 1 | 数据信息汇总 | zhaoshang/portal.lead/board | 1(二期落地,一期可隐藏) |
| 1 | 客户数据管理 | (空) | 1 |
| 2 | 客户数据领取 | zhaoshang/portal.lead/datalist | 1 |
| 2 | 提取 | zhaoshang/portal.lead/extract | 2 |
| 2 | 公共池领取(抢占) | zhaoshang/portal.lead/self_get | 2 |
| 2 | 我的客户数据 | zhaoshang/portal.mine/data | 1 |
| 2 | 我的品牌数据 | zhaoshang/portal.mine/brand | 1 |
| 1 | 账户认证授权 | (空) | 1 |
| 2 | 登录账户信息 | zhaoshang/portal.account/info | 1 |
| 2 | 登录认证授权(子账号) | zhaoshang/portal.auth/datalist、add、set、del | 1 / 2 |
| 2 | 财务收支明细 | zhaoshang/portal.account/finance | 1 |
| 1 | 个人信息修改 | zhaoshang/portal.account/profile | 1 |
注意:门户节点 src 以
zhaoshang/portal.开头,与内部节点路径不重叠,保证权限组勾选边界清晰。子账号管理类节点仅授予主账号(可在"客户门户组"之外另建"主账号组",由is_main区分)。
config/platform.php 的 apps 增加:'zhaoshang' => '招商系统'。zs:push,建议每日固定时间执行(可按公司配置错峰)。picker-customer)关联客户,customer_id 唯一,防止重复开通。lterp_zs_company,start_time=当前,end_time=当前+周期天;balance = 套餐价,写 package 类型财务流水(+套餐价);import_batch 批次号;分类、地区按名称匹配 ID;每行写入 max_claim(模板列,缺省 1),status=1。zhaoshang/api/incoming,token 鉴权,字段与导入一致,供二期采集端推送;来源站点、入口来源、IP 原样落库。① 自动推送(定时任务 zs:push)
status=1、auto_push=1、当前时间在合作期内、balance ≥ data_price、当日已推送数 < daily_push。status=1、claimed_count < max_claim、未分配给该公司(无 claim 记录),且满足匹配规则:
cate_pid ∈ 公司 cate_pids,或 cate_id ∈ 公司 cate_ids,或品牌/关联字段命中 related_keywords 任一关键词;exclude_keywords 任一关键词的数据一律排除。assign_type=1,status=1,price=公司单价快照)。② 后台分配 :数据池勾选数据指派公司,assign_type=2;同样受唯一约束与 max_claim 限制,不受 daily_push 限制。
③ 客户自领 :公司 get_mode ∈ (2,3) 时,门户展示公共池中匹配本公司规则、未领满、未分配给本公司的数据;点击"领取"立即抢占生成 claim(assign_type=3,status=1)。
"客户数据领取"页只显示 status=1 的 claim,号码脱敏(如 186****8553)。点击"提取"时依次校验:
status=1 且在合作期内;daily_extract(0 不限);is_gift=0 时 balance ≥ price。通过后在一个数据库事务内:扣减余额、claim 置 status=2 并记提取人/时间、写 data_extract 流水(−price),接口返回完整号码;该记录转入"我的客户数据"。is_gift=1 的赠送条不扣款。
名额在数据进入待领池时即已占用且不可撤回。余额不足时"提取"会被拦截,客户充值后仍可提取原有的待领数据,不会丢失名额。
lterp_zs_recharge(金额 + 赠送额 + 付款方式),余额增加,分别写 recharge、recharge_gift 两条流水;客户门户不支持自助充值,在线支付充值放二期。is_gift=1、price=0),写 data_gift 流水;赠送条提取不扣款。生成(自动推送/后台分配/自领/赠送)
│
▼
待提取(1)(名额已占用,不可撤回)
│ 点提取(扣费)
▼
已提取(2)(终态,不支持退单退款)
lterp_zs_claim 的唯一索引 (data_id, company_id) 兜底。UPDATE `lterp_zs_data`
SET `claimed_count` = `claimed_count` + 1
WHERE `id` = ? AND `claimed_count` < `max_claim`;
影响行数为 0 说明已被抢满,本次领取失败并提示。领满时同步置 status=2 出池。
3. 提取扣费 :事务内完成余额扣减、claim 状态变更、流水写入;余额校验用 where balance >= price 的条件更新防透支。
| 端 | 页面 | 控制器/动作 | 说明 |
|---|---|---|---|
| 内部 | 行业分类管理 | zhaoshang/cate/* | 两级分类增删改、启用停用 |
| 内部 | 套餐方案管理 | zhaoshang/package_cate/* | 方案字典 |
| 内部 | 合作套餐管理 | zhaoshang/package/datalist | 列表 + 弹窗/页面编辑 |
| 内部 | 合作公司列表 | zhaoshang/company/datalist | 列表 + 信息修改弹窗 |
| 内部 | 领取/赠送/充值记录 | zhaoshang/company、recharge | 各记录筛选列表 |
| 内部 | 电话数据列表 | zhaoshang/data/datalist | 多维筛选、脱敏展示、分配、导入入口 |
| 门户 | 客户数据领取 | portal.lead/datalist | 待提取列表、提取、公共池领取 |
| 门户 | 我的客户/品牌数据 | portal.mine/data、brand | 已提取数据,按品牌聚合 |
| 门户 | 登录账户信息 | portal.account/info | 公司信息、余额、套餐与到期 |
| 门户 | 子账号授权 | portal.auth/* | 仅主账号,开通/停用子账号 |
| 门户 | 财务收支明细 | portal.account/finance | 按日期、事件类型筛选 |
| 门户 | 个人信息修改 | portal.account/profile | 当前账号资料/密码 |
一期(核心闭环)
二期
appaseBaseController;模型按需要建立,简单 CRUD 可用 Db::name()(表名写 zs_company 等短名,自动拼 lterp_ 前缀)。table_assign(0, '', $list);操作返回 to_assign();关键操作写 add_log()。common/base,表格使用 Layui + 现有表格工具;弹窗编辑参照《列表页弹窗编辑模式开发指南》。mask_mobile()),完整号仅在提取成功后返回;内部列表按权限决定是否脱敏。is_main=1。seed_tables 或单独开通流程),一期不展开。
来团科技GEO优化&AI搜索优化系统,是通过大模型内容投喂+训练,将企业品牌及产品信息在多平台AI生成的答案中获取优先展现,更精准触达潜在目标客户,让企业品牌出现在AI搜索里。让客户一搜就看到你,实现一问就有你,一查就信你,一看就找你的营销效果。
来团智慧商业小程序零代码开发平台,多行业适配。无需代码,拖拽式设计,轻松打造订货商城、会员制商城、分销商城及小程序官网。不仅能满足通用需求,还支持定制化,从页面布局到功能模块,随心定制,助您快速搭建专属商业小程序,抢占市场先机。
来团科技微名通不止是电子名片,更是你的商业连接器。比起传统名片,它更像你的 “迷你商业工具”:信息多、好携带、能互动,还不浪费纸张。不管是跑业务、拓人脉,还是展示企业,一张「微名通」电子名片,就能帮你把商机揣在手机里。
来团科技CRM客户管理系统,帮你把 “线索→成交→回款” 全流程管明白。这就是一套 “让销售省心、老板放心” 的客户管理工具,从获客到回款,帮你把生意攥在手里。