feat(recommendation): 实现推荐客户管理全流程功能

- 新增推荐记录、推荐人信息、推荐费结算实体及数据库表结构
- 实现推荐记录小程序端接口,包括新增报备、获取推荐码、查询我的推荐及统计
- 实现后台管理端推荐记录分页查询、确认有效、作废、结算及批量结算接口
- 实现推荐人信息查询及推荐统计汇总逻辑
- 实现推荐记录导出功能,支持导出推荐详情数据
- 完成推荐状态变更时推荐人统计数据同步更新
- 添加相关Mapper接口和Service接口及实现
- 使用MyBatis Plus分页插件支持分页查询
- 集成Spring Security权限校验和操作日志注解
- 优化推荐码生成和唯一性校验机制
This commit is contained in:
2026-04-16 16:40:08 +08:00
parent cc2fe7b172
commit 7095c4bf96
13 changed files with 1126 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
-- ============================================================
-- 推荐客户模块 SQL
-- 包: app
-- 创建时间: 2026-04-16
-- ============================================================
-- 1. 推荐记录表
CREATE TABLE `app_lead_referral` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`referral_code` VARCHAR(32) DEFAULT NULL COMMENT '推荐码(推荐人分享给客户的码)',
`referrer_id` INT DEFAULT NULL COMMENT '推荐人用户IDNULL=匿名推荐)',
`referrer_name` VARCHAR(64) DEFAULT NULL COMMENT '推荐人姓名',
`referrer_phone` VARCHAR(20) DEFAULT NULL COMMENT '推荐人手机号',
`customer_name` VARCHAR(64) NOT NULL COMMENT '客户姓名',
`customer_phone` VARCHAR(20) NOT NULL COMMENT '客户手机号',
`customer_company` VARCHAR(255) DEFAULT NULL COMMENT '客户公司名称',
`requirement` TEXT DEFAULT NULL COMMENT '客户需求描述',
`appointment_time` DATETIME DEFAULT NULL COMMENT '预约联系时间',
`remarks` VARCHAR(500) DEFAULT NULL COMMENT '推荐人备注',
`referral_fee` DECIMAL(10,2) DEFAULT '0.00' COMMENT '推荐费(元)',
`referral_status` TINYINT NOT NULL DEFAULT '0' COMMENT '推荐状态: 0=待确认, 1=有效, 2=无效/作废, 3=已结算',
`invalid_reason` VARCHAR(255) DEFAULT NULL COMMENT '作废原因',
`invalid_time` DATETIME DEFAULT NULL COMMENT '作废时间',
`confirmed_time` DATETIME DEFAULT NULL COMMENT '确认有效时间',
`settled_time` DATETIME DEFAULT NULL COMMENT '结算时间',
`tenant_id` INT DEFAULT NULL COMMENT '租户ID',
`create_by` INT DEFAULT NULL COMMENT '创建人ID',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` INT DEFAULT NULL COMMENT '更新人ID',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` TINYINT NOT NULL DEFAULT '0' COMMENT '删除标记: 0=未删, 1=已删',
PRIMARY KEY (`id`),
KEY `idx_referrer_id` (`referrer_id`),
KEY `idx_customer_phone` (`customer_phone`),
KEY `idx_referral_status` (`referral_status`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐记录表';
-- 2. 推荐人信息表
CREATE TABLE `app_referrer_info` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_id` INT NOT NULL COMMENT '用户ID',
`referral_code` VARCHAR(32) NOT NULL COMMENT '推荐码(唯一)',
`total_referrals` INT NOT NULL DEFAULT '0' COMMENT '累计推荐人数',
`valid_referrals` INT NOT NULL DEFAULT '0' COMMENT '有效推荐数',
`settled_count` INT NOT NULL DEFAULT '0' COMMENT '已结算数',
`total_earned` DECIMAL(10,2) NOT NULL DEFAULT '0.00' COMMENT '累计获得推荐费(元)',
`pending_amount` DECIMAL(10,2) NOT NULL DEFAULT '0.00' COMMENT '待结算金额(元)',
`tenant_id` INT DEFAULT NULL COMMENT '租户ID',
`create_by` INT DEFAULT NULL COMMENT '创建人ID',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` INT DEFAULT NULL COMMENT '更新人ID',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` TINYINT NOT NULL DEFAULT '0' COMMENT '删除标记: 0=未删, 1=已删',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_id` (`user_id`),
UNIQUE KEY `uk_referral_code` (`referral_code`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐人信息表';
-- 3. 推荐费结算记录表
CREATE TABLE `app_referral_settlement` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`referral_id` BIGINT NOT NULL COMMENT '关联推荐记录ID',
`referrer_id` INT NOT NULL COMMENT '推荐人用户ID',
`amount` DECIMAL(10,2) NOT NULL COMMENT '结算金额(元)',
`settlement_no` VARCHAR(32) DEFAULT NULL COMMENT '结算单号',
`remarks` VARCHAR(500) DEFAULT NULL COMMENT '结算备注',
`tenant_id` INT DEFAULT NULL COMMENT '租户ID',
`create_by` INT DEFAULT NULL COMMENT '结算操作人ID',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '结算时间',
`deleted` TINYINT NOT NULL DEFAULT '0' COMMENT '删除标记: 0=未删, 1=已删',
PRIMARY KEY (`id`),
KEY `idx_referral_id` (`referral_id`),
KEY `idx_referrer_id` (`referrer_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='推荐费结算记录表';