会员分佣

This commit is contained in:
zhoupeng committed 2026-08-11 08:10:36 +08:00
1 parent 70efdd44f6
commit 66db2f11d9
5 files changed
+46 -2

No files matched your search

@@ -30,6 +30,14 @@ public interface TradeBrokerageRecordApi {
*/
void addBrokerage(Long userId, BrokerageRecordBizTypeEnum bizType, @Valid List<BrokerageAddDTO> list);
/**
* 取消佣金:将佣金记录,状态修改为已失效
*
* @param bizType 业务类型
* @param bizId 业务编号
*/
void cancelBrokerage(BrokerageRecordBizTypeEnum bizType, String bizId);
/**
* 微信转账
* @param id 提现单id
@@ -16,8 +16,9 @@ import java.util.Arrays;
public enum BrokerageRecordBizTypeEnum implements ArrayValuable<Integer> {
ORDER(1, "获得推广佣金", "获得推广佣金 {}", true),
WITHDRAW(2, "提现申请", "提现申请扣除佣金 {}", false),
WITHDRAW_REJECT(3, "提现申请驳回", "提现申请驳回,返还佣金 {}", true),
OPEN_TYPE(2, "获得会员佣金", "获得会员佣金 {}", true),
WITHDRAW(3, "提现申请", "提现申请扣除佣金 {}", false),
WITHDRAW_REJECT(4, "提现申请驳回", "提现申请驳回,返还佣金 {}", true),
;
public static final Integer[] ARRAYS = Arrays.stream(values()).map(BrokerageRecordBizTypeEnum::getType).toArray(Integer[]::new);
@@ -63,6 +63,11 @@ public class TradeBrokerageRecordApiImpl implements TradeBrokerageRecordApi {
brokerageRecordService.addBrokerage(userId, bizType, BeanUtils.toBean(list, BrokerageAddReqBO.class));
}
@Override
public void cancelBrokerage(BrokerageRecordBizTypeEnum bizType, String bizId) {
brokerageRecordService.cancelBrokerage(bizType, bizId);
}
/**
* 微信转账
*
@@ -43,6 +43,11 @@
<artifactId>yudao-module-pay-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-trade-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
@@ -33,6 +33,9 @@ import cn.iocoder.yudao.module.pay.api.refund.dto.PayRefundCreateReqDTO;
import cn.iocoder.yudao.module.pay.api.refund.dto.PayRefundRespDTO;
import cn.iocoder.yudao.module.pay.enums.order.PayOrderStatusEnum;
import cn.iocoder.yudao.module.pay.enums.refund.PayRefundStatusEnum;
import cn.iocoder.yudao.module.trade.api.brokerage.TradeBrokerageRecordApi;
import cn.iocoder.yudao.module.trade.api.brokerage.dto.BrokerageAddDTO;
import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -90,6 +93,8 @@ public class OpenTypeServiceImpl implements OpenTypeService {
private PayOrderApi payOrderApi;
@Resource
private PayRefundApi payRefundApi;
@Resource
private TradeBrokerageRecordApi tradeBrokerageRecordApi;
/**
* 获取最后一条会员开通记录
@@ -203,6 +208,24 @@ public class OpenTypeServiceImpl implements OpenTypeService {
return openTypeMapper.selectList(pageReqVO);
}
/**
* 开通会员后增加分销佣金
*/
private void addOpenTypeBrokerage(Long memberId, Long openTypeUserId, Integer price, String title) {
if (price == null || price <= 0) {
return;
}
BrokerageAddDTO brokerageAddDTO = new BrokerageAddDTO();
brokerageAddDTO.setBizId(String.valueOf(openTypeUserId));
brokerageAddDTO.setBasePrice(price);
brokerageAddDTO.setFirstFixedPrice(0);
brokerageAddDTO.setSecondFixedPrice(0);
brokerageAddDTO.setSourceUserId(memberId);
brokerageAddDTO.setTitle(title);
tradeBrokerageRecordApi.addBrokerage(memberId, BrokerageRecordBizTypeEnum.OPEN_TYPE,
java.util.Collections.singletonList(brokerageAddDTO));
}
/**
* 购买会员
*/
@@ -422,6 +445,8 @@ public class OpenTypeServiceImpl implements OpenTypeService {
}
// 添加会员tag
memberRecentTagService.createOrUpdateVipTag(openTypeUserDO.getMemberId());
// 开通会员分佣:仅在支付成功后发放,避免未支付订单重复计佣
addOpenTypeBrokerage(openTypeUserDO.getMemberId(), openTypeUserDO.getId(), openTypeUserDO.getPayPrice(), openType.getTitle());
String message = String.format("恭喜您购买成功,此次购买的产品:%s", openType.getTitle());
this.chatApi.messageUserSendText(openTypeUserDO.getMemberId(), message);