diff --git a/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageRecordApi.java b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageRecordApi.java index 399e731..1d34530 100644 --- a/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageRecordApi.java +++ b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageRecordApi.java @@ -30,6 +30,14 @@ public interface TradeBrokerageRecordApi { */ void addBrokerage(Long userId, BrokerageRecordBizTypeEnum bizType, @Valid List list); + /** + * 取消佣金:将佣金记录,状态修改为已失效 + * + * @param bizType 业务类型 + * @param bizId 业务编号 + */ + void cancelBrokerage(BrokerageRecordBizTypeEnum bizType, String bizId); + /** * 微信转账 * @param id 提现单id diff --git a/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/brokerage/BrokerageRecordBizTypeEnum.java b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/brokerage/BrokerageRecordBizTypeEnum.java index cf7fbc2..1a1b776 100644 --- a/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/brokerage/BrokerageRecordBizTypeEnum.java +++ b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/brokerage/BrokerageRecordBizTypeEnum.java @@ -16,8 +16,9 @@ import java.util.Arrays; public enum BrokerageRecordBizTypeEnum implements ArrayValuable { 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); diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageRecordApiImpl.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageRecordApiImpl.java index c620da8..2903038 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageRecordApiImpl.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/api/brokerage/TradeBrokerageRecordApiImpl.java @@ -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); + } + /** * 微信转账 * diff --git a/yudao-module-member/yudao-module-member-biz/pom.xml b/yudao-module-member/yudao-module-member-biz/pom.xml index af08c35..cf95191 100644 --- a/yudao-module-member/yudao-module-member-biz/pom.xml +++ b/yudao-module-member/yudao-module-member-biz/pom.xml @@ -43,6 +43,11 @@ yudao-module-pay-api ${revision} + + cn.iocoder.boot + yudao-module-trade-api + ${revision} + cn.iocoder.boot diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/opentype/OpenTypeServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/opentype/OpenTypeServiceImpl.java index 462d25f..6a82acd 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/opentype/OpenTypeServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/opentype/OpenTypeServiceImpl.java @@ -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);