底座开发指南
萌新必读
简介
功能列表
快速启动(后端项目)
快速启动(前端项目)
接口文档
热代码加载
迁移模式(适合新项目)
删除功能(以租户为例)
表结构变更(版本升级)
内网穿透
达梦数据库专属
后端手册
新建服务
代码生成【单表】(新增功能)
代码生成(树表)
功能权限·
数据权限
用户体系
三方登陆
OAuth 2.0(SSO 单点登录)
SaaS 多租户【字段隔离】
SaaS 多租户【数据库隔离】
WebSocket 实时通信
异常处理(错误码)
参数校验
分页实现
VO 对象转换、数据翻译
文件存储(上传下载)
Excel 导入导出
操作日志、访问日志、异常日志
MyBatis 数据库
MyBatis 联表&分页查询
多数据源(读写分离)
Redis 缓存
本地缓存
异步任务
分布式锁
幂等性(防重复提交)
请求限流(RateLimiter)
HTTP 接口签名(防篡改)
单元测试
验证码
工具类 Util
数据库文档
微服务手册
微服务调试(必读)
注册中心 Nacos
配置中心 Nacos
服务网关 Spring Cloud Gateway
服务调用 Feign
定时任务 XXL Job
消息队列(内存)
消息队列(Redis)
消息队列(RocketMQ)
消息队列(RabbitMQ)
消息队列(Kafka)
消息队列(Cloud)
分布式事务 Seata
服务保障 Sentinel
工作流手册
工作流演示
功能开启
工作流(达梦适配)
审批接入(流程表单)
审批接入(业务表单)
流程设计器(BPMN)
流程设计器(钉钉、飞书)
选择审批人、发起人自选
会签、或签、依次审批
流程发起、取消、重新发起
审批通过、不通过、驳回
审批加签、减签
审批转办、委派、抄送
执行监听器、任务监听器
流程表达式
流程审批通知
大屏手册
报表设计器
大屏设计器
支付手册
功能开启·
支付宝支付接入
微信公众号支付接入
微信小程序支付接入
支付宝、微信退款接入
会员手册
功能开启··
微信公众号登录
微信小程序登录
微信小程序订阅消息
微信小程序码
会员用户、标签、分组
会员等级、积分、签到
商城手册
商城演示
功能开启···
商城装修
在线客服
【商品】商品分类
【商品】商品属性
【商品】商品 SPU 与 SKU
【商品】商品评价
【交易】购物车
【交易】交易订单
【交易】售后退款
【交易】快递发货
【交易】门店自提
【交易】分销返佣
【营销】优惠劵
【营销】拼团活动
【营销】秒杀活动
【营销】砍价活动
【营销】满减送
【营销】限时折扣
【营销】内容管理
【统计】会员、商品、交易统计
ERP 手册
ERP 演示
【功能开启】
【产品】产品信息、分类、单位
【库存】产品库存、库存明细
【库存】其它入库、其它出库
【库存】库存调拨、库存盘点
【采购】采购订单、入库、退货
【销售】销售订单、出库、退货
【财务】采购付款、销售收款
CRM手册
CRM 演示
【功能开启】·
【线索】线索管理
【客户】客户管理、公海客户
【商机】商机管理、商机状态
【合同】合同管理、合同提醒
【回款】回款管理、回款计划
【产品】产品管理、产品分类
【通用】数据权限
【通用】跟进记录、待办事项
AI大模型手册
AI 大模型演示
功能开启-
AI 聊天对话
AI 绘画创作
AI 音乐创作
AI 写作助手
AI 思维导图
【模型接入】OpenAI
【模型接入】通义千问
【模型接入】LLAMA
【模型接入】文心一言
【模型接入】DeepSeek
【模型接入】智谱 GLM
【模型接入】讯飞星火
【模型接入】微软 OpenAI
【模型接入】谷歌 Gemini
【模型接入】Stable Diffusion
【模型接入】Midjourney
【模型接入】Suno
公众号手册
【功能开启】-
公众号接入
公众号粉丝
公众号标签
公众号消息
自动回复
公众号菜单
公众号素材
公众号图文
公众号统计
系统手册
短信配置
邮件配置
站内信配置
数据脱敏
敏感词
地区 & IP 库
运维手册
开发环境
Linux 部署
Docker 部署
Jenkins 部署
HTTPS 证书
服务监控
前端手册 Vue 3.x
开发规范
菜单路由
Icon 图标
字典数据
系统组件
通用方法
配置读取
CRUD 组件
国际化
IDE 调试
代码格式化
前端手册 Vue 2.x
开发规范·
菜单路由·
Icon 图标·
字典数据·
系统组件·
通用方法·
配置读取·
本文档使用「觅思文档专业版」发布
-
+
首页
【交易】分销返佣
分销返佣,是指商城中,用户通过分享商品链接,或者通过分享二维码,帮助商家推广商品,当有用户通过分享的链接或者二维码购买商品时,分享者可以获得一定的佣金。 它可以分成三部分:分销用户、分销记录、分销提现。最终存储表结构如下:  ## 1. 分销用户 后端模块的 brokerage 包的 BrokerageUserService 实现。 ### 1.1 表结构 > <span style="font-family:楷体">CREATE TABLE `trade_brokerage_user` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户编号', `brokerage_enabled` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否成为推广员', `brokerage_time` datetime DEFAULT NULL COMMENT '成为分销员时间', `bind_user_id` bigint DEFAULT NULL COMMENT '推广员编号', `bind_user_time` datetime DEFAULT NULL COMMENT '推广员绑定时间', `brokerage_price` int NOT NULL DEFAULT '0' COMMENT '可用佣金', `frozen_price` int NOT NULL DEFAULT '0' COMMENT '冻结佣金', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=249 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='分销用户'; </span> ① 【自身】id 字段:用户编号,对应会员用户(买家)表的 id 字段。因为要存储分佣的绑定关系,所以每个用户都会在这个表有个记录。 brokerage_enabled 字段:是否成为分销用户。只有为 true 的用户才能进行分销。 ② 【上级】bind_user_id 字段:推广员编号,自己对应的上级,或者说是由哪个用户分销用户推广来的,后续订单佣金算他的。 ③ 【佣金】brokerage_price、frozen_price 字段:可用佣金、冻结佣金。 > <span style="font-family:楷体">常见问题? 问题 ①:为什么新用户注册时,并没有自动往 trade_brokerage_user 表插入数据? 回答 ①:在“分销模式”为“人人分销”时,新用户首次在 uni-app 打开【分销】中心时,才会往 trade_brokerage_user 表插入数据。 问题 ②:</span> ### 1.2 管理后台 对应 [商城系统 -> 订单中心 -> 分销管理 -> 分销用户] 菜单,对应dtpc-ui-admin-vue3 项目的 views/mall/trade/brokerage/user 目录。如下图所示:  可以查看分销用户的推广人、推广订单,也可以修改它的上级推广人。 ### 1.3 移动端 对应 uni-app [我的 -> 分销中心] 菜单,  在 [我的团队] 中,可以查看自己的下级分销用户,以及下级分销用户的推广订单,对应 pages/commission/team.vue 文件。如下图所示:  4 怎么成为分销用户? ① 方式一:在“分销模式”为“人人分销”时,新用户通过邀请链接注册,则注册完成后会往 trade_brokerage_user 表插入数据,从而成为分销员。 1、老用户,在【分销中心】界面,点击【邀请海报】,复制邀请链接,分享给新用户。如下图所示:  2、新用户,点击该链接,注册新用户。 3、老用户,在【分销中心】界面,点击【我的团队】,可以查看到该新用户。如下图所示:  ② 方式二:在“分销模式”为“人人分销”时,并且用户不是通过邀请,则新用户首次在 uni-app 打开【分销中心】时,会往 trade_brokerage_user 表插入数据,从而成为分销员。 ## 2. 分销记录 由 yudao-module-trade-biz 后端模块的 brokerage 包的 BrokerageRecordService 实现。 ### 2.1 表结构 > <span style="font-family:楷体">CREATE TABLE `trade_brokerage_record` ( `id` int NOT NULL AUTO_INCREMENT COMMENT '编号', `user_id` bigint NOT NULL COMMENT '用户编号', `source_user_id` bigint NOT NULL DEFAULT '0' COMMENT '来源用户编号', `source_user_level` int NOT NULL DEFAULT '0' COMMENT '来源用户等级', `biz_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '业务编号', `biz_type` tinyint NOT NULL DEFAULT '0' COMMENT '业务类型:1-订单,2-提现', `title` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '标题', `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '说明', `price` int NOT NULL DEFAULT '0' COMMENT '金额', `total_price` int NOT NULL DEFAULT '0' COMMENT '当前总佣金', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态:0-待结算,1-已结算,2-已取消', `frozen_days` int NOT NULL DEFAULT '0' COMMENT '冻结时间(天)', `unfreeze_time` datetime DEFAULT NULL COMMENT '解冻时间', PRIMARY KEY (`id`) USING BTREE, KEY `idx_user_id` (`user_id`) USING BTREE COMMENT '用户编号', KEY `idx_biz` (`biz_type`,`biz_id`) USING BTREE COMMENT '业务', KEY `idx_status` (`status`) USING BTREE COMMENT '状态' ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='佣金记录'; </span> ① id 字段:编号,自增主键。目前佣金每次发生变化时,都会生成一条记录,例如说订单分佣、佣金提现等等。 ② 【分销关系】user_id 字段:用户编号,对应分销用户表的 id 字段。 source_user_id 字段:来源用户编号,例如说,订单分佣时,就是订单的买家编号。source_user_level 字段:来源用户等级,例如说,一级分佣、二级分佣。如下图所示:  - 上下级关系:A 推广 B,B 推广了 C - A 购买商品:自己没有返佣 - B 购买商品:A 获得一级返佣 - C 购买商品:B 获得一级返佣,A 获得二级返佣 ③ 【业务】biz_id、biz_type 字段:业务编号、业务类型(由 BrokerageRecordBizTypeEnum 枚举)。title、description 字段:标题、说明,主要用于展示。 例如说,订单分佣时,biz_type 为 1,biz_id 为订单编号。具体 TradeBrokerageOrderHandler 处理器,订单被支付时,会生成分佣记录。 ④ 【佣金】price、total_price 字段:分佣金额、当前总佣金。每个商品的佣金,可以全局设置,也可以自定设置,如下图所示:  > <span style="font-family:楷体">友情提示:分销商品,后续会从商品管理中解耦出来,单独管理,单独表存储。</span> ⑤ 【状态】status 字段:状态,由 BrokerageRecordStatusEnum 枚举,目前就待结算(冻结)、已结算(生效)、已取消(失效)三种状态。 frozen_days 字段:冻结时间(天),例如说,订单分佣时,可以设置冻结时间,冻结时间内,佣金不可提现。解冻通过 BrokerageRecordUnfreezeJob 定时任务实现。 ### 2.2 管理后台 对应 [商城系统 -> 订单中心 -> 分销管理 -> 佣金记录] 菜单,对应dtpc-ui-admin-vue3 项目的 views/mall/trade/brokerage/recrod 目录。如下图所示:  ### 2.3 移动端 在 [分销订单] 中,可以查看自己的分销订单,对应 pages/commission/order.vue 文件。如下图所示:  ## 3. 分销提现 由 yudao-module-trade-biz 后端模块的 brokerage 包的 BrokerageWithdrawService 实现。 ### 3.1 表结构 CREATE TABLE `trade_brokerage_withdraw` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号', `user_id` bigint NOT NULL COMMENT '用户编号', `price` int NOT NULL DEFAULT '0' COMMENT '提现金额', `fee_price` int NOT NULL DEFAULT '0' COMMENT '提现手续费', `total_price` int NOT NULL DEFAULT '0' COMMENT '当前总佣金', `type` tinyint NOT NULL DEFAULT '0' COMMENT '提现类型:1-钱包;2-银行卡;3-微信;4-支付宝', `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '真实姓名', `account_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '账号', `bank_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '银行名称', `bank_address` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '开户地址', `account_qr_code_url` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '收款码', `status` tinyint NOT NULL DEFAULT '0' COMMENT '状态:0-审核中,10-审核通过 20-审核不通过;预留:11 - 提现成功;21-提现失败', `audit_reason` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审核驳回原因', `audit_time` datetime DEFAULT NULL COMMENT '审核时间', PRIMARY KEY (`id`) USING BTREE, KEY `idx_user_id` (`user_id`) USING BTREE COMMENT '用户编号', KEY `idx_audit_status` (`status`) USING BTREE COMMENT '状态' ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='佣金提现'; 字段虽然比较多,但是都比较简单,就不一一介绍了,只挑选部分重点的。 ① type 字段,提现类型,由 BrokerageWithdrawTypeEnum 枚举,目前支持钱包、银行卡、微信、支付宝。具体需要填写哪些字段,可见 AppBrokerageWithdrawCreateReqVO 类的注释。 ② status 字段,提现状态,由 BrokerageWithdrawStatusEnum 枚举,可以分成三个阶段:分佣用户申请、管理员审核(通过、不通过)、管理员打款(成功、失败)。 > <span style="font-family:楷体">疑问:为什么提现成功、失败是“预留”? 由于【支付中心】的“转账”功能还没开发完成,所以暂时不支持线上的该操作,仅仅预留,你可以先自己实现~</span> ### 3.2 管理后台 对应 [商城系统 -> 订单中心 -> 分销管理 -> 佣金提现] 菜单 如下图所示:  ### 3.2 移动端 ① 在 [佣金明细] 中,可以查看自己的提现记录,对应 pages/commission/wallet.vue 文件。如下图所示:  ② 点击「提现」按钮,可以申请提现,对应 pages/commission/withdraw.vue 文件。如下图所示:  ## 4. 分佣配置  SQL 对应 trade_config 表的 brokerage_ 开头的字段。
何加华
2024年8月28日 16:52
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期