
在知识变现系统中, 如果只支持“自营卖课”,那它只是一个卖课工具。
真正具备平台能力的系统, 必须支持 多讲师入驻 + 收益分成 + 自动分账。
这背后涉及到:
下面我们从源码逻辑层面拆解。

在多讲师模式下,系统核心角色包括:
数据库核心表结构设计如下:
-- 用户表
CREATE TABLE users (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50),
role ENUM('user','lecturer','admin'),
status TINYINT DEFAULT 1,
created_at DATETIME
);
-- 讲师信息表
CREATE TABLE lecturers (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT,
real_name VARCHAR(50),
phone VARCHAR(20),
intro TEXT,
commission_rate DECIMAL(5,2), -- 分成比例
status TINYINT DEFAULT 0, -- 0待审核 1通过
created_at DATETIME
);
-- 课程表
CREATE TABLE courses (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
lecturer_id BIGINT,
title VARCHAR(255),
price DECIMAL(10,2),
status TINYINT DEFAULT 1
);
-- 订单表
CREATE TABLE orders (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT,
course_id BIGINT,
total_amount DECIMAL(10,2),
platform_income DECIMAL(10,2),
lecturer_income DECIMAL(10,2),
status TINYINT,
created_at DATETIME
);这里的核心字段是:
commission_rate —— 分成比例
platform_income —— 平台收益
lecturer_income —— 讲师收益
讲师申请流程一般为:
示例代码(Spring Boot):
@PostMapping("/lecturer/apply")
public Result apply(@RequestBody LecturerDTO dto) {
Lecturer lecturer = new Lecturer();
lecturer.setUserId(dto.getUserId());
lecturer.setRealName(dto.getRealName());
lecturer.setPhone(dto.getPhone());
lecturer.setIntro(dto.getIntro());
lecturer.setStatus(0); // 待审核
lecturerRepository.save(lecturer);
return Result.success("申请已提交");
}管理员审核:
@PostMapping("/admin/lecturer/approve")
public Result approve(Long lecturerId, BigDecimal rate) {
Lecturer lecturer = lecturerRepository.findById(lecturerId);
lecturer.setStatus(1);
lecturer.setCommissionRate(rate);
lecturerRepository.save(lecturer);
return Result.success("审核通过");
}分成方式一般有三种:
这里我们以固定比例为例。
假设:
课程售价 199 元 讲师分成 70% 平台抽成 30%
订单创建逻辑:
public Order createOrder(Long userId, Long courseId) {
Course course = courseRepository.findById(courseId);
Lecturer lecturer = lecturerRepository.findById(course.getLecturerId());
BigDecimal total = course.getPrice();
BigDecimal rate = lecturer.getCommissionRate().divide(new BigDecimal("100"));
BigDecimal lecturerIncome = total.multiply(rate);
BigDecimal platformIncome = total.subtract(lecturerIncome);
Order order = new Order();
order.setUserId(userId);
order.setCourseId(courseId);
order.setTotalAmount(total);
order.setLecturerIncome(lecturerIncome);
order.setPlatformIncome(platformIncome);
return orderRepository.save(order);
}这样在订单生成时,就已经完成收益拆分。

真正关键的是支付成功后的资金处理。
支付成功回调:
@PostMapping("/pay/notify")
public String notify(PayNotifyDTO dto) {
Order order = orderRepository.findById(dto.getOrderId());
if(order.getStatus() == 1){
return "success";
}
order.setStatus(1);
orderRepository.save(order);
// 更新讲师余额
walletService.addIncome(
order.getCourse().getLecturerId(),
order.getLecturerIncome()
);
return "success";
}讲师余额表:
CREATE TABLE lecturer_wallet (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
lecturer_id BIGINT,
balance DECIMAL(10,2) DEFAULT 0
);多讲师模式必须注意三个问题:
提现逻辑示例:
public void applyWithdraw(Long lecturerId, BigDecimal amount) {
Wallet wallet = walletRepository.findByLecturerId(lecturerId);
if(wallet.getBalance().compareTo(amount) < 0){
throw new RuntimeException("余额不足");
}
wallet.setBalance(wallet.getBalance().subtract(amount));
walletRepository.save(wallet);
withdrawRepository.save(new WithdrawRecord(lecturerId, amount));
}平台审核后再打款。
讲师只能管理自己的课程。
示例:
public Course updateCourse(Long lecturerId, Course course) {
Course dbCourse = courseRepository.findById(course.getId());
if(!dbCourse.getLecturerId().equals(lecturerId)){
throw new RuntimeException("无权限操作");
}
return courseRepository.save(course);
}
一个真正成熟的知识变现系统源码,多讲师机制必须实现:
如果只做到“能卖课”,那只是工具。 如果做到“能分成、能对账、能规模化”,那才是平台。
知识变现的核心不是课程数量, 而是系统是否具备平台级扩展能力。
如果你正在做知识变现系统开发, 多讲师分成机制,是必须打牢的底层能力。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。