Commit 9336a0a1024ccdc5dd30a1d56cf054a884082477
1 parent
a68691f2
trade: 分销业务从 member 模块 转移到 trade模块
Showing
33 changed files
with
235 additions
and
408 deletions
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/brokerage/BrokerageBindModeEnum.java renamed to yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/brokerage/BrokerageBindModeEnum.java
| 1 | -package cn.iocoder.yudao.module.member.enums.brokerage; | 1 | +package cn.iocoder.yudao.module.trade.enums.brokerage; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.core.IntArrayValuable; | 3 | import cn.iocoder.yudao.framework.common.core.IntArrayValuable; |
| 4 | import lombok.AllArgsConstructor; | 4 | import lombok.AllArgsConstructor; |
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/brokerage/BrokerageEnabledConditionEnum.java renamed to yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/brokerage/BrokerageEnabledConditionEnum.java
| 1 | -package cn.iocoder.yudao.module.member.enums.brokerage; | 1 | +package cn.iocoder.yudao.module.trade.enums.brokerage; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.core.IntArrayValuable; | 3 | import cn.iocoder.yudao.framework.common.core.IntArrayValuable; |
| 4 | import lombok.AllArgsConstructor; | 4 | import lombok.AllArgsConstructor; |
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/brokerage/BrokerageRecordBizTypeEnum.java renamed to yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/brokerage/BrokerageRecordBizTypeEnum.java
| 1 | -package cn.iocoder.yudao.module.member.enums.brokerage; | 1 | +package cn.iocoder.yudao.module.trade.enums.brokerage; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.core.IntArrayValuable; | 3 | import cn.iocoder.yudao.framework.common.core.IntArrayValuable; |
| 4 | import lombok.AllArgsConstructor; | 4 | import lombok.AllArgsConstructor; |
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/brokerage/BrokerageRecordStatusEnum.java renamed to yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/brokerage/BrokerageRecordStatusEnum.java
| 1 | -package cn.iocoder.yudao.module.member.enums.brokerage; | 1 | +package cn.iocoder.yudao.module.trade.enums.brokerage; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.core.IntArrayValuable; | 3 | import cn.iocoder.yudao.framework.common.core.IntArrayValuable; |
| 4 | import lombok.AllArgsConstructor; | 4 | import lombok.AllArgsConstructor; |
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/brokerage/BrokerageWithdrawStatusEnum.java renamed to yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/brokerage/BrokerageWithdrawStatusEnum.java
| 1 | -package cn.iocoder.yudao.module.member.enums.brokerage; | 1 | +package cn.iocoder.yudao.module.trade.enums.brokerage; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.core.IntArrayValuable; | 3 | import cn.iocoder.yudao.framework.common.core.IntArrayValuable; |
| 4 | import lombok.AllArgsConstructor; | 4 | import lombok.AllArgsConstructor; |
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/brokerage/BrokerageWithdrawTypeEnum.java renamed to yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/brokerage/BrokerageWithdrawTypeEnum.java
| 1 | -package cn.iocoder.yudao.module.member.enums.brokerage; | 1 | +package cn.iocoder.yudao.module.trade.enums.brokerage; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.core.IntArrayValuable; | 3 | import cn.iocoder.yudao.framework.common.core.IntArrayValuable; |
| 4 | import lombok.AllArgsConstructor; | 4 | import lombok.AllArgsConstructor; |
yudao-module-mall/yudao-module-trade-biz/pom.xml
| @@ -56,6 +56,10 @@ | @@ -56,6 +56,10 @@ | ||
| 56 | </dependency> | 56 | </dependency> |
| 57 | <dependency> | 57 | <dependency> |
| 58 | <groupId>cn.iocoder.boot</groupId> | 58 | <groupId>cn.iocoder.boot</groupId> |
| 59 | + <artifactId>yudao-spring-boot-starter-biz-tenant</artifactId> | ||
| 60 | + </dependency> | ||
| 61 | + <dependency> | ||
| 62 | + <groupId>cn.iocoder.boot</groupId> | ||
| 59 | <artifactId>yudao-spring-boot-starter-biz-ip</artifactId> | 63 | <artifactId>yudao-spring-boot-starter-biz-ip</artifactId> |
| 60 | </dependency> | 64 | </dependency> |
| 61 | 65 |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/brokerage/record/MemberBrokerageRecordController.java renamed to yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/record/MemberBrokerageRecordController.java
| 1 | -package cn.iocoder.yudao.module.member.controller.admin.brokerage.record; | 1 | +package cn.iocoder.yudao.module.trade.controller.admin.brokerage.record; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | -import cn.iocoder.yudao.module.member.controller.admin.brokerage.record.vo.MemberBrokerageRecordPageReqVO; | ||
| 6 | -import cn.iocoder.yudao.module.member.controller.admin.brokerage.record.vo.MemberBrokerageRecordRespVO; | ||
| 7 | -import cn.iocoder.yudao.module.member.convert.brokerage.record.MemberBrokerageRecordConvert; | ||
| 8 | -import cn.iocoder.yudao.module.member.dal.dataobject.brokerage.record.MemberBrokerageRecordDO; | ||
| 9 | -import cn.iocoder.yudao.module.member.service.brokerage.record.MemberBrokerageRecordService; | 5 | +import cn.iocoder.yudao.module.trade.controller.admin.brokerage.record.vo.MemberBrokerageRecordPageReqVO; |
| 6 | +import cn.iocoder.yudao.module.trade.controller.admin.brokerage.record.vo.MemberBrokerageRecordRespVO; | ||
| 7 | +import cn.iocoder.yudao.module.trade.convert.brokerage.record.MemberBrokerageRecordConvert; | ||
| 8 | +import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.record.MemberBrokerageRecordDO; | ||
| 9 | +import cn.iocoder.yudao.module.trade.service.brokerage.record.MemberBrokerageRecordService; | ||
| 10 | import io.swagger.v3.oas.annotations.Operation; | 10 | import io.swagger.v3.oas.annotations.Operation; |
| 11 | import io.swagger.v3.oas.annotations.Parameter; | 11 | import io.swagger.v3.oas.annotations.Parameter; |
| 12 | import io.swagger.v3.oas.annotations.tags.Tag; | 12 | import io.swagger.v3.oas.annotations.tags.Tag; |
| @@ -24,7 +24,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | @@ -24,7 +24,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||
| 24 | 24 | ||
| 25 | @Tag(name = "管理后台 - 佣金记录") | 25 | @Tag(name = "管理后台 - 佣金记录") |
| 26 | @RestController | 26 | @RestController |
| 27 | -@RequestMapping("/member/member-brokerage-record") | 27 | +@RequestMapping("/trade/member-brokerage-record") |
| 28 | @Validated | 28 | @Validated |
| 29 | public class MemberBrokerageRecordController { | 29 | public class MemberBrokerageRecordController { |
| 30 | 30 |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/brokerage/record/vo/MemberBrokerageRecordBaseVO.java renamed to yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/record/vo/MemberBrokerageRecordBaseVO.java
| 1 | -package cn.iocoder.yudao.module.member.controller.admin.brokerage.record.vo; | 1 | +package cn.iocoder.yudao.module.trade.controller.admin.brokerage.record.vo; |
| 2 | 2 | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/brokerage/record/vo/MemberBrokerageRecordPageReqVO.java renamed to yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/record/vo/MemberBrokerageRecordPageReqVO.java
| 1 | -package cn.iocoder.yudao.module.member.controller.admin.brokerage.record.vo; | 1 | +package cn.iocoder.yudao.module.trade.controller.admin.brokerage.record.vo; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 4 | import io.swagger.v3.oas.annotations.media.Schema; | 4 | import io.swagger.v3.oas.annotations.media.Schema; |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/brokerage/record/vo/MemberBrokerageRecordRespVO.java renamed to yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/record/vo/MemberBrokerageRecordRespVO.java
| 1 | -package cn.iocoder.yudao.module.member.controller.admin.brokerage.record.vo; | 1 | +package cn.iocoder.yudao.module.trade.controller.admin.brokerage.record.vo; |
| 2 | 2 | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/config/vo/TradeConfigBaseVO.java
| 1 | package cn.iocoder.yudao.module.trade.controller.admin.config.vo; | 1 | package cn.iocoder.yudao.module.trade.controller.admin.config.vo; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.validation.InEnum; | 3 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 4 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageBindModeEnum; | ||
| 5 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageEnabledConditionEnum; | ||
| 6 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageWithdrawTypeEnum; | 4 | +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageBindModeEnum; |
| 5 | +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageEnabledConditionEnum; | ||
| 6 | +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageWithdrawTypeEnum; | ||
| 7 | import io.swagger.v3.oas.annotations.media.Schema; | 7 | import io.swagger.v3.oas.annotations.media.Schema; |
| 8 | import lombok.Data; | 8 | import lombok.Data; |
| 9 | import org.hibernate.validator.constraints.Range; | 9 | import org.hibernate.validator.constraints.Range; |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/brokerage/record/MemberBrokerageRecordConvert.java renamed to yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/brokerage/record/MemberBrokerageRecordConvert.java
| 1 | -package cn.iocoder.yudao.module.member.convert.brokerage.record; | 1 | +package cn.iocoder.yudao.module.trade.convert.brokerage.record; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 3 | import cn.hutool.core.util.StrUtil; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | -import cn.iocoder.yudao.module.member.controller.admin.brokerage.record.vo.MemberBrokerageRecordRespVO; | ||
| 6 | -import cn.iocoder.yudao.module.member.dal.dataobject.brokerage.record.MemberBrokerageRecordDO; | ||
| 7 | -import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; | ||
| 8 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageRecordBizTypeEnum; | ||
| 9 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageRecordStatusEnum; | 5 | +import cn.iocoder.yudao.module.trade.controller.admin.brokerage.record.vo.MemberBrokerageRecordRespVO; |
| 6 | +import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.record.MemberBrokerageRecordDO; | ||
| 7 | +import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.TradeBrokerageUserDO; | ||
| 8 | +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum; | ||
| 9 | +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordStatusEnum; | ||
| 10 | import org.mapstruct.Mapper; | 10 | import org.mapstruct.Mapper; |
| 11 | import org.mapstruct.factory.Mappers; | 11 | import org.mapstruct.factory.Mappers; |
| 12 | 12 | ||
| @@ -29,7 +29,7 @@ public interface MemberBrokerageRecordConvert { | @@ -29,7 +29,7 @@ public interface MemberBrokerageRecordConvert { | ||
| 29 | 29 | ||
| 30 | PageResult<MemberBrokerageRecordRespVO> convertPage(PageResult<MemberBrokerageRecordDO> page); | 30 | PageResult<MemberBrokerageRecordRespVO> convertPage(PageResult<MemberBrokerageRecordDO> page); |
| 31 | 31 | ||
| 32 | - default MemberBrokerageRecordDO convert(MemberUserDO user, String bizId, int brokerageFrozenDays, int brokerage, LocalDateTime unfreezeTime) { | 32 | + default MemberBrokerageRecordDO convert(TradeBrokerageUserDO user, String bizId, int brokerageFrozenDays, int brokerage, LocalDateTime unfreezeTime) { |
| 33 | // 不冻结时,佣金直接就是结算状态 | 33 | // 不冻结时,佣金直接就是结算状态 |
| 34 | Integer status = brokerageFrozenDays > 0 | 34 | Integer status = brokerageFrozenDays > 0 |
| 35 | ? BrokerageRecordStatusEnum.WAIT_SETTLEMENT.getStatus() | 35 | ? BrokerageRecordStatusEnum.WAIT_SETTLEMENT.getStatus() |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderConvert.java
| @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.common.util.string.StrUtils; | @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.common.util.string.StrUtils; | ||
| 7 | import cn.iocoder.yudao.framework.dict.core.util.DictFrameworkUtils; | 7 | import cn.iocoder.yudao.framework.dict.core.util.DictFrameworkUtils; |
| 8 | import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; | 8 | import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; |
| 9 | import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO; | 9 | import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO; |
| 10 | -import cn.iocoder.yudao.module.member.api.brokerage.dto.BrokerageAddReqDTO; | 10 | +import cn.iocoder.yudao.module.trade.service.brokerage.record.bo.BrokerageAddReqDTO; |
| 11 | import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; | 11 | import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; |
| 12 | import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderCreateReqDTO; | 12 | import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderCreateReqDTO; |
| 13 | import cn.iocoder.yudao.module.pay.enums.DictTypeConstants; | 13 | import cn.iocoder.yudao.module.pay.enums.DictTypeConstants; |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/brokerage/record/MemberBrokerageRecordDO.java renamed to yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/brokerage/record/MemberBrokerageRecordDO.java
| 1 | -package cn.iocoder.yudao.module.member.dal.dataobject.brokerage.record; | 1 | +package cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.record; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 4 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageRecordBizTypeEnum; | ||
| 5 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageRecordStatusEnum; | 4 | +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum; |
| 5 | +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordStatusEnum; | ||
| 6 | import com.baomidou.mybatisplus.annotation.KeySequence; | 6 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| 7 | import com.baomidou.mybatisplus.annotation.TableId; | 7 | import com.baomidou.mybatisplus.annotation.TableId; |
| 8 | import com.baomidou.mybatisplus.annotation.TableName; | 8 | import com.baomidou.mybatisplus.annotation.TableName; |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/config/TradeConfigDO.java
| @@ -2,9 +2,9 @@ package cn.iocoder.yudao.module.trade.dal.dataobject.config; | @@ -2,9 +2,9 @@ package cn.iocoder.yudao.module.trade.dal.dataobject.config; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.type.IntegerListTypeHandler; | 4 | import cn.iocoder.yudao.framework.mybatis.core.type.IntegerListTypeHandler; |
| 5 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageBindModeEnum; | ||
| 6 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageEnabledConditionEnum; | ||
| 7 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageWithdrawTypeEnum; | 5 | +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageBindModeEnum; |
| 6 | +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageEnabledConditionEnum; | ||
| 7 | +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageWithdrawTypeEnum; | ||
| 8 | import com.baomidou.mybatisplus.annotation.KeySequence; | 8 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| 9 | import com.baomidou.mybatisplus.annotation.TableField; | 9 | import com.baomidou.mybatisplus.annotation.TableField; |
| 10 | import com.baomidou.mybatisplus.annotation.TableId; | 10 | import com.baomidou.mybatisplus.annotation.TableId; |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/brokerage/record/MemberBrokerageRecordMapper.java renamed to yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/brokerage/record/MemberBrokerageRecordMapper.java
| 1 | -package cn.iocoder.yudao.module.member.dal.mysql.brokerage.record; | 1 | +package cn.iocoder.yudao.module.trade.dal.mysql.brokerage.record; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 6 | -import cn.iocoder.yudao.module.member.controller.admin.brokerage.record.vo.MemberBrokerageRecordPageReqVO; | ||
| 7 | -import cn.iocoder.yudao.module.member.dal.dataobject.brokerage.record.MemberBrokerageRecordDO; | 6 | +import cn.iocoder.yudao.module.trade.controller.admin.brokerage.record.vo.MemberBrokerageRecordPageReqVO; |
| 7 | +import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.record.MemberBrokerageRecordDO; | ||
| 8 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 8 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 9 | import org.apache.ibatis.annotations.Mapper; | 9 | import org.apache.ibatis.annotations.Mapper; |
| 10 | 10 |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/brokerage/user/TradeBrokerageUserMapper.java
| 1 | package cn.iocoder.yudao.module.trade.dal.mysql.brokerage.user; | 1 | package cn.iocoder.yudao.module.trade.dal.mysql.brokerage.user; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.lang.Assert; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 5 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 6 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 6 | import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.TradeBrokerageUserPageReqVO; | 7 | import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.TradeBrokerageUserPageReqVO; |
| 7 | import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.TradeBrokerageUserDO; | 8 | import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.TradeBrokerageUserDO; |
| 9 | +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | ||
| 8 | import org.apache.ibatis.annotations.Mapper; | 10 | import org.apache.ibatis.annotations.Mapper; |
| 9 | 11 | ||
| 10 | /** | 12 | /** |
| @@ -23,4 +25,79 @@ public interface TradeBrokerageUserMapper extends BaseMapperX<TradeBrokerageUser | @@ -23,4 +25,79 @@ public interface TradeBrokerageUserMapper extends BaseMapperX<TradeBrokerageUser | ||
| 23 | .orderByDesc(TradeBrokerageUserDO::getId)); | 25 | .orderByDesc(TradeBrokerageUserDO::getId)); |
| 24 | } | 26 | } |
| 25 | 27 | ||
| 28 | + /** | ||
| 29 | + * 更新用户可用佣金(增加) | ||
| 30 | + * | ||
| 31 | + * @param id 用户编号 | ||
| 32 | + * @param incrCount 增加佣金(正数) | ||
| 33 | + */ | ||
| 34 | + default void updateBrokeragePriceIncr(Long id, int incrCount) { | ||
| 35 | + Assert.isTrue(incrCount > 0); | ||
| 36 | + LambdaUpdateWrapper<TradeBrokerageUserDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<TradeBrokerageUserDO>() | ||
| 37 | + .setSql(" brokerage_price = brokerage_price + " + incrCount) | ||
| 38 | + .eq(TradeBrokerageUserDO::getId, id); | ||
| 39 | + update(null, lambdaUpdateWrapper); | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + /** | ||
| 43 | + * 更新用户可用佣金(减少) | ||
| 44 | + * 注意:理论上佣金可能已经提现,这时会扣出负数,确保平台不会造成损失 | ||
| 45 | + * | ||
| 46 | + * @param id 用户编号 | ||
| 47 | + * @param incrCount 增加佣金(负数) | ||
| 48 | + */ | ||
| 49 | + default void updateBrokeragePriceDecr(Long id, int incrCount) { | ||
| 50 | + Assert.isTrue(incrCount < 0); | ||
| 51 | + LambdaUpdateWrapper<TradeBrokerageUserDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<TradeBrokerageUserDO>() | ||
| 52 | + .setSql(" brokerage_price = brokerage_price + " + incrCount) // 负数,所以使用 + 号 | ||
| 53 | + .eq(TradeBrokerageUserDO::getId, id); | ||
| 54 | + update(null, lambdaUpdateWrapper); | ||
| 55 | + } | ||
| 56 | + | ||
| 57 | + /** | ||
| 58 | + * 更新用户冻结佣金(增加) | ||
| 59 | + * | ||
| 60 | + * @param id 用户编号 | ||
| 61 | + * @param incrCount 增加冻结佣金(正数) | ||
| 62 | + */ | ||
| 63 | + default void updateFrozenBrokeragePriceIncr(Long id, int incrCount) { | ||
| 64 | + Assert.isTrue(incrCount > 0); | ||
| 65 | + LambdaUpdateWrapper<TradeBrokerageUserDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<TradeBrokerageUserDO>() | ||
| 66 | + .setSql(" frozen_brokerage_price = frozen_brokerage_price + " + incrCount) | ||
| 67 | + .eq(TradeBrokerageUserDO::getId, id); | ||
| 68 | + update(null, lambdaUpdateWrapper); | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + /** | ||
| 72 | + * 更新用户冻结佣金(减少) | ||
| 73 | + * 注意:理论上冻结佣金可能已经解冻,这时会扣出负数,确保平台不会造成损失 | ||
| 74 | + * | ||
| 75 | + * @param id 用户编号 | ||
| 76 | + * @param incrCount 减少冻结佣金(负数) | ||
| 77 | + */ | ||
| 78 | + default void updateFrozenBrokeragePriceDecr(Long id, int incrCount) { | ||
| 79 | + Assert.isTrue(incrCount < 0); | ||
| 80 | + LambdaUpdateWrapper<TradeBrokerageUserDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<TradeBrokerageUserDO>() | ||
| 81 | + .setSql(" frozen_brokerage_price = frozen_brokerage_price + " + incrCount) // 负数,所以使用 + 号 | ||
| 82 | + .eq(TradeBrokerageUserDO::getId, id); | ||
| 83 | + update(null, lambdaUpdateWrapper); | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + /** | ||
| 87 | + * 更新用户冻结佣金(减少), 更新用户佣金(增加) | ||
| 88 | + * | ||
| 89 | + * @param id 用户编号 | ||
| 90 | + * @param incrCount 减少冻结佣金(负数) | ||
| 91 | + * @return 更新条数 | ||
| 92 | + */ | ||
| 93 | + default int updateFrozenBrokeragePriceDecrAndBrokeragePriceIncr(Long id, int incrCount) { | ||
| 94 | + Assert.isTrue(incrCount < 0); | ||
| 95 | + LambdaUpdateWrapper<TradeBrokerageUserDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<TradeBrokerageUserDO>() | ||
| 96 | + .setSql(" frozen_brokerage_price = frozen_brokerage_price + " + incrCount + // 负数,所以使用 + 号 | ||
| 97 | + ", brokerage_price = brokerage_price + " + -incrCount) // 负数,所以使用 - 号 | ||
| 98 | + .eq(TradeBrokerageUserDO::getId, id) | ||
| 99 | + .ge(TradeBrokerageUserDO::getFrozenBrokeragePrice, -incrCount); // cas 逻辑 | ||
| 100 | + return update(null, lambdaUpdateWrapper); | ||
| 101 | + } | ||
| 102 | + | ||
| 26 | } | 103 | } |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/brokerage/MemberBrokerageRecordUnfreezeJob.java renamed to yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/job/brokerage/MemberBrokerageRecordUnfreezeJob.java
| 1 | -package cn.iocoder.yudao.module.member.job.brokerage; | 1 | +package cn.iocoder.yudao.module.trade.job.brokerage; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.util.StrUtil; | 3 | import cn.hutool.core.util.StrUtil; |
| 4 | import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; | 4 | import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; |
| 5 | import cn.iocoder.yudao.framework.tenant.core.job.TenantJob; | 5 | import cn.iocoder.yudao.framework.tenant.core.job.TenantJob; |
| 6 | -import cn.iocoder.yudao.module.member.service.brokerage.record.MemberBrokerageRecordService; | 6 | +import cn.iocoder.yudao.module.trade.service.brokerage.record.MemberBrokerageRecordService; |
| 7 | import org.springframework.stereotype.Component; | 7 | import org.springframework.stereotype.Component; |
| 8 | 8 | ||
| 9 | import javax.annotation.Resource; | 9 | import javax.annotation.Resource; |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/brokerage/record/MemberBrokerageRecordService.java renamed to yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/record/MemberBrokerageRecordService.java
| 1 | -package cn.iocoder.yudao.module.member.service.brokerage.record; | 1 | +package cn.iocoder.yudao.module.trade.service.brokerage.record; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | -import cn.iocoder.yudao.module.member.api.brokerage.dto.BrokerageAddReqDTO; | ||
| 5 | -import cn.iocoder.yudao.module.member.controller.admin.brokerage.record.vo.MemberBrokerageRecordPageReqVO; | ||
| 6 | -import cn.iocoder.yudao.module.member.dal.dataobject.brokerage.record.MemberBrokerageRecordDO; | 4 | +import cn.iocoder.yudao.module.trade.service.brokerage.record.bo.BrokerageAddReqDTO; |
| 5 | +import cn.iocoder.yudao.module.trade.controller.admin.brokerage.record.vo.MemberBrokerageRecordPageReqVO; | ||
| 6 | +import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.record.MemberBrokerageRecordDO; | ||
| 7 | 7 | ||
| 8 | import java.util.List; | 8 | import java.util.List; |
| 9 | 9 |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/brokerage/record/MemberBrokerageRecordServiceImpl.java renamed to yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/record/MemberBrokerageRecordServiceImpl.java
| 1 | -package cn.iocoder.yudao.module.member.service.brokerage.record; | 1 | +package cn.iocoder.yudao.module.trade.service.brokerage.record; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | import cn.hutool.core.util.BooleanUtil; | 4 | import cn.hutool.core.util.BooleanUtil; |
| @@ -6,17 +6,17 @@ import cn.hutool.core.util.NumberUtil; | @@ -6,17 +6,17 @@ import cn.hutool.core.util.NumberUtil; | ||
| 6 | import cn.hutool.core.util.ObjectUtil; | 6 | import cn.hutool.core.util.ObjectUtil; |
| 7 | import cn.hutool.extra.spring.SpringUtil; | 7 | import cn.hutool.extra.spring.SpringUtil; |
| 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 8 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 9 | -import cn.iocoder.yudao.module.member.api.brokerage.dto.BrokerageAddReqDTO; | ||
| 10 | -import cn.iocoder.yudao.module.member.controller.admin.brokerage.record.vo.MemberBrokerageRecordPageReqVO; | ||
| 11 | -import cn.iocoder.yudao.module.member.convert.brokerage.record.MemberBrokerageRecordConvert; | ||
| 12 | -import cn.iocoder.yudao.module.member.dal.dataobject.brokerage.record.MemberBrokerageRecordDO; | ||
| 13 | -import cn.iocoder.yudao.module.member.dal.dataobject.point.MemberPointConfigDO; | ||
| 14 | -import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; | ||
| 15 | -import cn.iocoder.yudao.module.member.dal.mysql.brokerage.record.MemberBrokerageRecordMapper; | ||
| 16 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageRecordBizTypeEnum; | ||
| 17 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageRecordStatusEnum; | ||
| 18 | -import cn.iocoder.yudao.module.member.service.point.MemberPointConfigService; | ||
| 19 | -import cn.iocoder.yudao.module.member.service.user.MemberUserService; | 9 | +import cn.iocoder.yudao.module.trade.service.brokerage.record.bo.BrokerageAddReqDTO; |
| 10 | +import cn.iocoder.yudao.module.trade.controller.admin.brokerage.record.vo.MemberBrokerageRecordPageReqVO; | ||
| 11 | +import cn.iocoder.yudao.module.trade.convert.brokerage.record.MemberBrokerageRecordConvert; | ||
| 12 | +import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.record.MemberBrokerageRecordDO; | ||
| 13 | +import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.TradeBrokerageUserDO; | ||
| 14 | +import cn.iocoder.yudao.module.trade.dal.dataobject.config.TradeConfigDO; | ||
| 15 | +import cn.iocoder.yudao.module.trade.dal.mysql.brokerage.record.MemberBrokerageRecordMapper; | ||
| 16 | +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordBizTypeEnum; | ||
| 17 | +import cn.iocoder.yudao.module.trade.enums.brokerage.BrokerageRecordStatusEnum; | ||
| 18 | +import cn.iocoder.yudao.module.trade.service.brokerage.user.TradeBrokerageUserService; | ||
| 19 | +import cn.iocoder.yudao.module.trade.service.config.TradeConfigService; | ||
| 20 | import lombok.extern.slf4j.Slf4j; | 20 | import lombok.extern.slf4j.Slf4j; |
| 21 | import org.springframework.stereotype.Service; | 21 | import org.springframework.stereotype.Service; |
| 22 | import org.springframework.transaction.annotation.Transactional; | 22 | import org.springframework.transaction.annotation.Transactional; |
| @@ -42,9 +42,9 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe | @@ -42,9 +42,9 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe | ||
| 42 | @Resource | 42 | @Resource |
| 43 | private MemberBrokerageRecordMapper memberBrokerageRecordMapper; | 43 | private MemberBrokerageRecordMapper memberBrokerageRecordMapper; |
| 44 | @Resource | 44 | @Resource |
| 45 | - private MemberPointConfigService memberConfigService; | 45 | + private TradeConfigService tradeConfigService; |
| 46 | @Resource | 46 | @Resource |
| 47 | - private MemberUserService memberUserService; | 47 | + private TradeBrokerageUserService tradeBrokerageUserService; |
| 48 | 48 | ||
| 49 | @Override | 49 | @Override |
| 50 | public MemberBrokerageRecordDO getMemberBrokerageRecord(Integer id) { | 50 | public MemberBrokerageRecordDO getMemberBrokerageRecord(Integer id) { |
| @@ -59,7 +59,7 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe | @@ -59,7 +59,7 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe | ||
| 59 | @Override | 59 | @Override |
| 60 | @Transactional(rollbackFor = Exception.class) | 60 | @Transactional(rollbackFor = Exception.class) |
| 61 | public void addBrokerage(Long buyerId, List<BrokerageAddReqDTO> list) { | 61 | public void addBrokerage(Long buyerId, List<BrokerageAddReqDTO> list) { |
| 62 | - MemberPointConfigDO memberConfig = memberConfigService.getPointConfig(); | 62 | + TradeConfigDO memberConfig = tradeConfigService.getTradeConfig(); |
| 63 | // 0 未启用分销功能 | 63 | // 0 未启用分销功能 |
| 64 | if (memberConfig == null || !BooleanUtil.isTrue(memberConfig.getBrokerageEnabled())) { | 64 | if (memberConfig == null || !BooleanUtil.isTrue(memberConfig.getBrokerageEnabled())) { |
| 65 | log.warn("[addBrokerage][增加佣金失败:brokerageEnabled 未配置,buyerId({})", buyerId); | 65 | log.warn("[addBrokerage][增加佣金失败:brokerageEnabled 未配置,buyerId({})", buyerId); |
| @@ -67,7 +67,7 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe | @@ -67,7 +67,7 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe | ||
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | // 1.1 获得一级推广人 | 69 | // 1.1 获得一级推广人 |
| 70 | - MemberUserDO firstUser = memberUserService.getBrokerageUser(buyerId); | 70 | + TradeBrokerageUserDO firstUser = tradeBrokerageUserService.getInviteBrokerageUser(buyerId); |
| 71 | if (firstUser == null || !BooleanUtil.isTrue(firstUser.getBrokerageEnabled())) { | 71 | if (firstUser == null || !BooleanUtil.isTrue(firstUser.getBrokerageEnabled())) { |
| 72 | return; | 72 | return; |
| 73 | } | 73 | } |
| @@ -77,7 +77,7 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe | @@ -77,7 +77,7 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe | ||
| 77 | 77 | ||
| 78 | 78 | ||
| 79 | // 2.1 获得二级推广员 | 79 | // 2.1 获得二级推广员 |
| 80 | - MemberUserDO secondUser = memberUserService.getUser(firstUser.getBrokerageUserId()); | 80 | + TradeBrokerageUserDO secondUser = tradeBrokerageUserService.getBrokerageUser(firstUser.getBrokerageUserId()); |
| 81 | if (secondUser == null || !BooleanUtil.isTrue(secondUser.getBrokerageEnabled())) { | 81 | if (secondUser == null || !BooleanUtil.isTrue(secondUser.getBrokerageEnabled())) { |
| 82 | return; | 82 | return; |
| 83 | } | 83 | } |
| @@ -103,9 +103,9 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe | @@ -103,9 +103,9 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe | ||
| 103 | } | 103 | } |
| 104 | 104 | ||
| 105 | if (BrokerageRecordStatusEnum.WAIT_SETTLEMENT.getStatus().equals(record.getStatus())) { | 105 | if (BrokerageRecordStatusEnum.WAIT_SETTLEMENT.getStatus().equals(record.getStatus())) { |
| 106 | - memberUserService.updateUserFrozenBrokeragePrice(userId, -record.getPrice()); | 106 | + tradeBrokerageUserService.updateUserFrozenBrokeragePrice(userId, -record.getPrice()); |
| 107 | } else if (BrokerageRecordStatusEnum.SETTLEMENT.getStatus().equals(record.getStatus())) { | 107 | } else if (BrokerageRecordStatusEnum.SETTLEMENT.getStatus().equals(record.getStatus())) { |
| 108 | - memberUserService.updateUserBrokeragePrice(userId, -record.getPrice()); | 108 | + tradeBrokerageUserService.updateUserBrokeragePrice(userId, -record.getPrice()); |
| 109 | } | 109 | } |
| 110 | } | 110 | } |
| 111 | 111 | ||
| @@ -140,7 +140,7 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe | @@ -140,7 +140,7 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe | ||
| 140 | * @param brokeragePercent 佣金比例 | 140 | * @param brokeragePercent 佣金比例 |
| 141 | * @param skuBrokeragePriceFun 商品 SKU 设置的佣金 | 141 | * @param skuBrokeragePriceFun 商品 SKU 设置的佣金 |
| 142 | */ | 142 | */ |
| 143 | - private void addBrokerage(MemberUserDO user, List<BrokerageAddReqDTO> list, Integer brokerageFrozenDays, | 143 | + private void addBrokerage(TradeBrokerageUserDO user, List<BrokerageAddReqDTO> list, Integer brokerageFrozenDays, |
| 144 | Integer brokeragePercent, Function<BrokerageAddReqDTO, Integer> skuBrokeragePriceFun) { | 144 | Integer brokeragePercent, Function<BrokerageAddReqDTO, Integer> skuBrokeragePriceFun) { |
| 145 | // 处理冻结时间 | 145 | // 处理冻结时间 |
| 146 | brokerageFrozenDays = ObjectUtil.defaultIfNull(brokerageFrozenDays, 0); | 146 | brokerageFrozenDays = ObjectUtil.defaultIfNull(brokerageFrozenDays, 0); |
| @@ -170,10 +170,10 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe | @@ -170,10 +170,10 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe | ||
| 170 | 170 | ||
| 171 | if (brokerageFrozenDays > 0) { | 171 | if (brokerageFrozenDays > 0) { |
| 172 | // 更新用户冻结佣金 | 172 | // 更新用户冻结佣金 |
| 173 | - memberUserService.updateUserFrozenBrokeragePrice(user.getId(), totalBrokerage); | 173 | + tradeBrokerageUserService.updateUserFrozenBrokeragePrice(user.getId(), totalBrokerage); |
| 174 | } else { | 174 | } else { |
| 175 | // 更新用户可用佣金 | 175 | // 更新用户可用佣金 |
| 176 | - memberUserService.updateUserBrokeragePrice(user.getId(), totalBrokerage); | 176 | + tradeBrokerageUserService.updateUserBrokeragePrice(user.getId(), totalBrokerage); |
| 177 | } | 177 | } |
| 178 | } | 178 | } |
| 179 | 179 | ||
| @@ -214,7 +214,7 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe | @@ -214,7 +214,7 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe | ||
| 214 | } | 214 | } |
| 215 | 215 | ||
| 216 | // 更新用户冻结佣金 | 216 | // 更新用户冻结佣金 |
| 217 | - memberUserService.updateFrozenBrokeragePriceDecrAndBrokeragePriceIncr(record.getUserId(), -record.getPrice()); | 217 | + tradeBrokerageUserService.updateFrozenBrokeragePriceDecrAndBrokeragePriceIncr(record.getUserId(), -record.getPrice()); |
| 218 | 218 | ||
| 219 | log.info("[unfreezeRecord][record({}) 更新为已结算成功]", record.getId()); | 219 | log.info("[unfreezeRecord][record({}) 更新为已结算成功]", record.getId()); |
| 220 | return true; | 220 | return true; |
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/brokerage/dto/BrokerageAddReqDTO.java renamed to yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/record/bo/BrokerageAddReqDTO.java
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/user/TradeBrokerageUserService.java
| @@ -53,4 +53,36 @@ public interface TradeBrokerageUserService { | @@ -53,4 +53,36 @@ public interface TradeBrokerageUserService { | ||
| 53 | * @param brokerageEnabled 推广资格 | 53 | * @param brokerageEnabled 推广资格 |
| 54 | */ | 54 | */ |
| 55 | void updateBrokerageEnabled(Long id, Boolean brokerageEnabled); | 55 | void updateBrokerageEnabled(Long id, Boolean brokerageEnabled); |
| 56 | + | ||
| 57 | + /** | ||
| 58 | + * 获得用户的推广人 | ||
| 59 | + * | ||
| 60 | + * @param id 用户编号 | ||
| 61 | + * @return 用户的推广人 | ||
| 62 | + */ | ||
| 63 | + TradeBrokerageUserDO getInviteBrokerageUser(Long id); | ||
| 64 | + | ||
| 65 | + /** | ||
| 66 | + * 更新用户佣金 | ||
| 67 | + * | ||
| 68 | + * @param id 用户编号 | ||
| 69 | + * @param brokeragePrice 用户可用佣金 | ||
| 70 | + */ | ||
| 71 | + void updateUserBrokeragePrice(Long id, int brokeragePrice); | ||
| 72 | + | ||
| 73 | + /** | ||
| 74 | + * 更新用户冻结佣金 | ||
| 75 | + * | ||
| 76 | + * @param id 用户编号 | ||
| 77 | + * @param frozenBrokeragePrice 用户冻结佣金 | ||
| 78 | + */ | ||
| 79 | + void updateUserFrozenBrokeragePrice(Long id, int frozenBrokeragePrice); | ||
| 80 | + | ||
| 81 | + /** | ||
| 82 | + * 更新用户冻结佣金(减少), 更新用户佣金(增加) | ||
| 83 | + * | ||
| 84 | + * @param id 用户编号 | ||
| 85 | + * @param frozenBrokeragePrice 减少冻结佣金(负数) | ||
| 86 | + */ | ||
| 87 | + void updateFrozenBrokeragePriceDecrAndBrokeragePriceIncr(Long id, int frozenBrokeragePrice); | ||
| 56 | } | 88 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/user/TradeBrokerageUserServiceImpl.java
| 1 | package cn.iocoder.yudao.module.trade.service.brokerage.user; | 1 | package cn.iocoder.yudao.module.trade.service.brokerage.user; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.lang.Assert; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.TradeBrokerageUserPageReqVO; | 5 | import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.TradeBrokerageUserPageReqVO; |
| 5 | import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.TradeBrokerageUserDO; | 6 | import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.TradeBrokerageUserDO; |
| 6 | import cn.iocoder.yudao.module.trade.dal.mysql.brokerage.user.TradeBrokerageUserMapper; | 7 | import cn.iocoder.yudao.module.trade.dal.mysql.brokerage.user.TradeBrokerageUserMapper; |
| 7 | import org.springframework.stereotype.Service; | 8 | import org.springframework.stereotype.Service; |
| 9 | +import org.springframework.transaction.annotation.Transactional; | ||
| 8 | import org.springframework.validation.annotation.Validated; | 10 | import org.springframework.validation.annotation.Validated; |
| 9 | 11 | ||
| 10 | import javax.annotation.Resource; | 12 | import javax.annotation.Resource; |
| 11 | import java.util.Collection; | 13 | import java.util.Collection; |
| 12 | import java.util.List; | 14 | import java.util.List; |
| 15 | +import java.util.Optional; | ||
| 13 | 16 | ||
| 14 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 17 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 18 | +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.MEMBER_FROZEN_BROKERAGE_PRICE_NOT_ENOUGH; | ||
| 15 | import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.BROKERAGE_USER_NOT_EXISTS; | 19 | import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.BROKERAGE_USER_NOT_EXISTS; |
| 16 | 20 | ||
| 17 | /** | 21 | /** |
| @@ -60,4 +64,43 @@ public class TradeBrokerageUserServiceImpl implements TradeBrokerageUserService | @@ -60,4 +64,43 @@ public class TradeBrokerageUserServiceImpl implements TradeBrokerageUserService | ||
| 60 | validateBrokerageUserExists(id); | 64 | validateBrokerageUserExists(id); |
| 61 | } | 65 | } |
| 62 | 66 | ||
| 67 | + @Override | ||
| 68 | + public TradeBrokerageUserDO getInviteBrokerageUser(Long id) { | ||
| 69 | + return Optional.ofNullable(id) | ||
| 70 | + .map(this::getBrokerageUser) | ||
| 71 | + .map(TradeBrokerageUserDO::getBrokerageUserId) | ||
| 72 | + .map(this::getBrokerageUser) | ||
| 73 | + .orElse(null); | ||
| 74 | + } | ||
| 75 | + | ||
| 76 | + @Override | ||
| 77 | + @Transactional(rollbackFor = Exception.class) | ||
| 78 | + public void updateUserBrokeragePrice(Long id, int brokeragePrice) { | ||
| 79 | + if (brokeragePrice > 0) { | ||
| 80 | + brokerageUserMapper.updateBrokeragePriceIncr(id, brokeragePrice); | ||
| 81 | + } else if (brokeragePrice < 0) { | ||
| 82 | + brokerageUserMapper.updateBrokeragePriceDecr(id, brokeragePrice); | ||
| 83 | + } | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + @Override | ||
| 87 | + @Transactional(rollbackFor = Exception.class) | ||
| 88 | + public void updateUserFrozenBrokeragePrice(Long id, int frozenBrokeragePrice) { | ||
| 89 | + if (frozenBrokeragePrice > 0) { | ||
| 90 | + brokerageUserMapper.updateFrozenBrokeragePriceIncr(id, frozenBrokeragePrice); | ||
| 91 | + } else if (frozenBrokeragePrice < 0) { | ||
| 92 | + brokerageUserMapper.updateFrozenBrokeragePriceDecr(id, frozenBrokeragePrice); | ||
| 93 | + } | ||
| 94 | + } | ||
| 95 | + | ||
| 96 | + @Override | ||
| 97 | + @Transactional(rollbackFor = Exception.class) | ||
| 98 | + public void updateFrozenBrokeragePriceDecrAndBrokeragePriceIncr(Long id, int frozenBrokeragePrice) { | ||
| 99 | + Assert.isTrue(frozenBrokeragePrice < 0); | ||
| 100 | + int updateRows = brokerageUserMapper.updateFrozenBrokeragePriceDecrAndBrokeragePriceIncr(id, frozenBrokeragePrice); | ||
| 101 | + if (updateRows == 0) { | ||
| 102 | + throw exception(MEMBER_FROZEN_BROKERAGE_PRICE_NOT_ENOUGH); | ||
| 103 | + } | ||
| 104 | + } | ||
| 105 | + | ||
| 63 | } | 106 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
| @@ -12,8 +12,8 @@ import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | @@ -12,8 +12,8 @@ import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||
| 12 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; | 12 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; |
| 13 | import cn.iocoder.yudao.module.member.api.address.AddressApi; | 13 | import cn.iocoder.yudao.module.member.api.address.AddressApi; |
| 14 | import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO; | 14 | import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO; |
| 15 | -import cn.iocoder.yudao.module.member.api.brokerage.BrokerageApi; | ||
| 16 | -import cn.iocoder.yudao.module.member.api.brokerage.dto.BrokerageAddReqDTO; | 15 | +import cn.iocoder.yudao.module.trade.service.brokerage.record.MemberBrokerageRecordService; |
| 16 | +import cn.iocoder.yudao.module.trade.service.brokerage.record.bo.BrokerageAddReqDTO; | ||
| 17 | import cn.iocoder.yudao.module.member.api.level.MemberLevelApi; | 17 | import cn.iocoder.yudao.module.member.api.level.MemberLevelApi; |
| 18 | import cn.iocoder.yudao.module.member.api.point.MemberPointApi; | 18 | import cn.iocoder.yudao.module.member.api.point.MemberPointApi; |
| 19 | import cn.iocoder.yudao.module.member.api.user.MemberUserApi; | 19 | import cn.iocoder.yudao.module.member.api.user.MemberUserApi; |
| @@ -120,7 +120,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -120,7 +120,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||
| 120 | @Resource | 120 | @Resource |
| 121 | private MemberPointApi memberPointApi; | 121 | private MemberPointApi memberPointApi; |
| 122 | @Resource | 122 | @Resource |
| 123 | - private BrokerageApi brokerageApi; | 123 | + private MemberBrokerageRecordService memberBrokerageRecordService; |
| 124 | @Resource | 124 | @Resource |
| 125 | private ProductCommentApi productCommentApi; | 125 | private ProductCommentApi productCommentApi; |
| 126 | 126 | ||
| @@ -754,12 +754,12 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | @@ -754,12 +754,12 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||
| 754 | List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(orderId); | 754 | List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(orderId); |
| 755 | List<BrokerageAddReqDTO> list = convertList(orderItems, | 755 | List<BrokerageAddReqDTO> list = convertList(orderItems, |
| 756 | item -> TradeOrderConvert.INSTANCE.convert(item, productSkuApi.getSku(item.getSkuId()))); | 756 | item -> TradeOrderConvert.INSTANCE.convert(item, productSkuApi.getSku(item.getSkuId()))); |
| 757 | - brokerageApi.addBrokerage(userId, list); | 757 | + memberBrokerageRecordService.addBrokerage(userId, list); |
| 758 | } | 758 | } |
| 759 | 759 | ||
| 760 | @Async | 760 | @Async |
| 761 | protected void cancelBrokerageAsync(Long userId, Long orderItemId) { | 761 | protected void cancelBrokerageAsync(Long userId, Long orderItemId) { |
| 762 | - brokerageApi.cancelBrokerage(userId, String.valueOf(orderItemId)); | 762 | + memberBrokerageRecordService.cancelBrokerage(userId, String.valueOf(orderItemId)); |
| 763 | } | 763 | } |
| 764 | 764 | ||
| 765 | /** | 765 | /** |
yudao-module-member/yudao-module-member-biz/src/test/java/cn/iocoder/yudao/module/member/service/brokerage/record/MemberBrokerageRecordServiceImplTest.java renamed to yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/brokerage/record/MemberBrokerageRecordServiceImplTest.java
| 1 | -package cn.iocoder.yudao.module.member.service.brokerage.record; | 1 | +package cn.iocoder.yudao.module.trade.service.brokerage.record; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.util.NumberUtil; | 3 | import cn.hutool.core.util.NumberUtil; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; | 5 | import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; |
| 6 | -import cn.iocoder.yudao.module.member.controller.admin.brokerage.record.vo.MemberBrokerageRecordPageReqVO; | ||
| 7 | -import cn.iocoder.yudao.module.member.dal.dataobject.brokerage.record.MemberBrokerageRecordDO; | ||
| 8 | -import cn.iocoder.yudao.module.member.dal.mysql.brokerage.record.MemberBrokerageRecordMapper; | ||
| 9 | -import cn.iocoder.yudao.module.member.service.point.MemberPointConfigService; | ||
| 10 | -import cn.iocoder.yudao.module.member.service.user.MemberUserService; | 6 | +import cn.iocoder.yudao.module.trade.controller.admin.brokerage.record.vo.MemberBrokerageRecordPageReqVO; |
| 7 | +import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.record.MemberBrokerageRecordDO; | ||
| 8 | +import cn.iocoder.yudao.module.trade.dal.mysql.brokerage.record.MemberBrokerageRecordMapper; | ||
| 9 | +import cn.iocoder.yudao.module.trade.service.brokerage.user.TradeBrokerageUserService; | ||
| 10 | +import cn.iocoder.yudao.module.trade.service.config.TradeConfigService; | ||
| 11 | import org.junit.jupiter.api.Disabled; | 11 | import org.junit.jupiter.api.Disabled; |
| 12 | import org.junit.jupiter.api.Test; | 12 | import org.junit.jupiter.api.Test; |
| 13 | import org.springframework.boot.test.mock.mockito.MockBean; | 13 | import org.springframework.boot.test.mock.mockito.MockBean; |
| @@ -39,9 +39,9 @@ public class MemberBrokerageRecordServiceImplTest extends BaseDbUnitTest { | @@ -39,9 +39,9 @@ public class MemberBrokerageRecordServiceImplTest extends BaseDbUnitTest { | ||
| 39 | private MemberBrokerageRecordMapper memberBrokerageRecordMapper; | 39 | private MemberBrokerageRecordMapper memberBrokerageRecordMapper; |
| 40 | 40 | ||
| 41 | @MockBean | 41 | @MockBean |
| 42 | - private MemberPointConfigService memberPointConfigService; | 42 | + private TradeConfigService tradeConfigService; |
| 43 | @MockBean | 43 | @MockBean |
| 44 | - private MemberUserService memberUserService; | 44 | + private TradeBrokerageUserService tradeBrokerageUserService; |
| 45 | 45 | ||
| 46 | @Test | 46 | @Test |
| 47 | @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 | 47 | @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 |
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/brokerage/BrokerageApi.java deleted
| 1 | -package cn.iocoder.yudao.module.member.api.brokerage; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.module.member.api.brokerage.dto.BrokerageAddReqDTO; | ||
| 4 | - | ||
| 5 | -import java.util.List; | ||
| 6 | - | ||
| 7 | -/** | ||
| 8 | - * 佣金 API 接口 | ||
| 9 | - * | ||
| 10 | - * @author owen | ||
| 11 | - */ | ||
| 12 | -public interface BrokerageApi { | ||
| 13 | - | ||
| 14 | - /** | ||
| 15 | - * 增加佣金 | ||
| 16 | - * | ||
| 17 | - * @param userId 会员ID | ||
| 18 | - * @param list 请求参数列表 | ||
| 19 | - */ | ||
| 20 | - void addBrokerage(Long userId, List<BrokerageAddReqDTO> list); | ||
| 21 | - | ||
| 22 | - /** | ||
| 23 | - * 取消佣金 | ||
| 24 | - * | ||
| 25 | - * @param userId 会员ID | ||
| 26 | - * @param bizId 业务编号 | ||
| 27 | - */ | ||
| 28 | - void cancelBrokerage(Long userId, String bizId); | ||
| 29 | - | ||
| 30 | -} |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/api/brokerage/BrokerageApiImpl.java deleted
| 1 | -package cn.iocoder.yudao.module.member.api.brokerage; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.module.member.api.brokerage.dto.BrokerageAddReqDTO; | ||
| 4 | -import cn.iocoder.yudao.module.member.service.brokerage.record.MemberBrokerageRecordService; | ||
| 5 | -import org.springframework.stereotype.Service; | ||
| 6 | -import org.springframework.validation.annotation.Validated; | ||
| 7 | - | ||
| 8 | -import javax.annotation.Resource; | ||
| 9 | -import java.util.List; | ||
| 10 | - | ||
| 11 | -/** | ||
| 12 | - * 佣金 API 实现类 | ||
| 13 | - * | ||
| 14 | - * @author owen | ||
| 15 | - */ | ||
| 16 | -@Service | ||
| 17 | -@Validated | ||
| 18 | -public class BrokerageApiImpl implements BrokerageApi { | ||
| 19 | - | ||
| 20 | - @Resource | ||
| 21 | - private MemberBrokerageRecordService memberBrokerageRecordService; | ||
| 22 | - | ||
| 23 | - @Override | ||
| 24 | - public void addBrokerage(Long userId, List<BrokerageAddReqDTO> list) { | ||
| 25 | - memberBrokerageRecordService.addBrokerage(userId, list); | ||
| 26 | - } | ||
| 27 | - | ||
| 28 | - @Override | ||
| 29 | - public void cancelBrokerage(Long userId, String bizId) { | ||
| 30 | - memberBrokerageRecordService.cancelBrokerage(userId, bizId); | ||
| 31 | - } | ||
| 32 | -} |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/point/vo/config/MemberPointConfigBaseVO.java
| 1 | package cn.iocoder.yudao.module.member.controller.admin.point.vo.config; | 1 | package cn.iocoder.yudao.module.member.controller.admin.point.vo.config; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.common.validation.InEnum; | ||
| 4 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageBindModeEnum; | ||
| 5 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageEnabledConditionEnum; | ||
| 6 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageWithdrawTypeEnum; | ||
| 7 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 8 | import lombok.Data; | 4 | import lombok.Data; |
| 9 | -import org.hibernate.validator.constraints.Range; | ||
| 10 | 5 | ||
| 11 | -import javax.validation.constraints.NotEmpty; | ||
| 12 | import javax.validation.constraints.NotNull; | 6 | import javax.validation.constraints.NotNull; |
| 13 | -import javax.validation.constraints.PositiveOrZero; | ||
| 14 | -import java.util.List; | ||
| 15 | 7 | ||
| 16 | /** | 8 | /** |
| 17 | * 会员积分配置 Base VO,提供给添加、修改、详细的子 VO 使用 | 9 | * 会员积分配置 Base VO,提供给添加、修改、详细的子 VO 使用 |
| @@ -36,53 +28,4 @@ public class MemberPointConfigBaseVO { | @@ -36,53 +28,4 @@ public class MemberPointConfigBaseVO { | ||
| 36 | @NotNull(message = "1 元赠送积分不能为空") | 28 | @NotNull(message = "1 元赠送积分不能为空") |
| 37 | private Integer tradeGivePoint; | 29 | private Integer tradeGivePoint; |
| 38 | 30 | ||
| 39 | - // ========== 分销相关 ========== | ||
| 40 | - | ||
| 41 | - @Schema(description = "是否启用分佣", requiredMode = Schema.RequiredMode.REQUIRED, example = "true") | ||
| 42 | - @NotNull(message = "是否启用分佣不能为空") | ||
| 43 | - private Boolean brokerageEnabled; | ||
| 44 | - | ||
| 45 | - @Schema(description = "分佣模式", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") | ||
| 46 | - @NotNull(message = "分佣模式不能为空") | ||
| 47 | - @InEnum(value = BrokerageEnabledConditionEnum.class, message = "分佣模式必须是 {value}") | ||
| 48 | - private Integer brokerageEnabledCondition; | ||
| 49 | - | ||
| 50 | - @Schema(description = "分销关系绑定模式", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") | ||
| 51 | - @NotNull(message = "分销关系绑定模式不能为空") | ||
| 52 | - @InEnum(value = BrokerageBindModeEnum.class, message = "分销关系绑定模式必须是 {value}") | ||
| 53 | - private Integer brokerageBindMode; | ||
| 54 | - | ||
| 55 | - @Schema(description = "分销海报图地址数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "[https://www.iocoder.cn/yudao.jpg]") | ||
| 56 | - private List<String> brokeragePostUrls; | ||
| 57 | - | ||
| 58 | - @Schema(description = "一级返佣比例", requiredMode = Schema.RequiredMode.REQUIRED, example = "5") | ||
| 59 | - @NotNull(message = "一级返佣比例不能为空") | ||
| 60 | - @Range(min = 0, max = 100, message = "一级返佣比例必须在 0 - 100 之间") | ||
| 61 | - private Integer brokerageFirstPercent; | ||
| 62 | - | ||
| 63 | - @Schema(description = "二级返佣比例", requiredMode = Schema.RequiredMode.REQUIRED, example = "5") | ||
| 64 | - @NotNull(message = "二级返佣比例不能为空") | ||
| 65 | - @Range(min = 0, max = 100, message = "二级返佣比例必须在 0 - 100 之间") | ||
| 66 | - private Integer brokerageSecondPercent; | ||
| 67 | - | ||
| 68 | - @Schema(description = "用户提现最低金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000") | ||
| 69 | - @NotNull(message = "用户提现最低金额不能为空") | ||
| 70 | - @PositiveOrZero(message = "用户提现最低金额不能是负数") | ||
| 71 | - private Integer brokerageWithdrawMinPrice; | ||
| 72 | - | ||
| 73 | - @Schema(description = "提现银行", requiredMode = Schema.RequiredMode.REQUIRED, example = "[0, 1]") | ||
| 74 | - @NotEmpty(message = "提现银行不能为空") | ||
| 75 | - private List<Integer> brokerageBankNames; | ||
| 76 | - | ||
| 77 | - @Schema(description = "佣金冻结时间(天)", requiredMode = Schema.RequiredMode.REQUIRED, example = "7") | ||
| 78 | - @NotNull(message = "佣金冻结时间(天)不能为空") | ||
| 79 | - @PositiveOrZero(message = "佣金冻结时间不能是负数") | ||
| 80 | - private Integer brokerageFrozenDays; | ||
| 81 | - | ||
| 82 | - @Schema(description = "提现方式", requiredMode = Schema.RequiredMode.REQUIRED, example = "[0, 1]") | ||
| 83 | - @NotNull(message = "提现方式不能为空") | ||
| 84 | - @InEnum(value = BrokerageWithdrawTypeEnum.class, message = "提现方式必须是 {value}") | ||
| 85 | - private List<Integer> brokerageWithdrawType; | ||
| 86 | - | ||
| 87 | - | ||
| 88 | } | 31 | } |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/point/MemberPointConfigDO.java
| 1 | package cn.iocoder.yudao.module.member.dal.dataobject.point; | 1 | package cn.iocoder.yudao.module.member.dal.dataobject.point; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 4 | -import cn.iocoder.yudao.framework.mybatis.core.type.IntegerListTypeHandler; | ||
| 5 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageBindModeEnum; | ||
| 6 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageEnabledConditionEnum; | ||
| 7 | -import cn.iocoder.yudao.module.member.enums.brokerage.BrokerageWithdrawTypeEnum; | ||
| 8 | import com.baomidou.mybatisplus.annotation.KeySequence; | 4 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| 9 | -import com.baomidou.mybatisplus.annotation.TableField; | ||
| 10 | import com.baomidou.mybatisplus.annotation.TableId; | 5 | import com.baomidou.mybatisplus.annotation.TableId; |
| 11 | import com.baomidou.mybatisplus.annotation.TableName; | 6 | import com.baomidou.mybatisplus.annotation.TableName; |
| 12 | -import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; | ||
| 13 | import lombok.*; | 7 | import lombok.*; |
| 14 | 8 | ||
| 15 | -import java.util.List; | ||
| 16 | - | ||
| 17 | /** | 9 | /** |
| 18 | * 会员积分配置 DO | 10 | * 会员积分配置 DO |
| 19 | * | 11 | * |
| @@ -53,56 +45,4 @@ public class MemberPointConfigDO extends BaseDO { | @@ -53,56 +45,4 @@ public class MemberPointConfigDO extends BaseDO { | ||
| 53 | */ | 45 | */ |
| 54 | private Integer tradeGivePoint; | 46 | private Integer tradeGivePoint; |
| 55 | 47 | ||
| 56 | - // ========== 分销相关 ========== | ||
| 57 | - | ||
| 58 | - /** | ||
| 59 | - * 是否启用分佣 | ||
| 60 | - */ | ||
| 61 | - private Boolean brokerageEnabled; | ||
| 62 | - /** | ||
| 63 | - * 分佣模式 | ||
| 64 | - * | ||
| 65 | - * 枚举 {@link BrokerageEnabledConditionEnum 对应的类} | ||
| 66 | - */ | ||
| 67 | - private Integer brokerageEnabledCondition; | ||
| 68 | - /** | ||
| 69 | - * 分销关系绑定模式 | ||
| 70 | - * | ||
| 71 | - * 枚举 {@link BrokerageBindModeEnum 对应的类} | ||
| 72 | - */ | ||
| 73 | - private Integer brokerageBindMode; | ||
| 74 | - /** | ||
| 75 | - * 分销海报图地址数组 | ||
| 76 | - */ | ||
| 77 | - @TableField(typeHandler = JacksonTypeHandler.class) | ||
| 78 | - private List<String> brokeragePostUrls; | ||
| 79 | - /** | ||
| 80 | - * 一级返佣比例 | ||
| 81 | - */ | ||
| 82 | - private Integer brokerageFirstPercent; | ||
| 83 | - /** | ||
| 84 | - * 二级返佣比例 | ||
| 85 | - */ | ||
| 86 | - private Integer brokerageSecondPercent; | ||
| 87 | - /** | ||
| 88 | - * 用户提现最低金额 | ||
| 89 | - */ | ||
| 90 | - private Integer brokerageWithdrawMinPrice; | ||
| 91 | - /** | ||
| 92 | - * 提现银行 | ||
| 93 | - */ | ||
| 94 | - @TableField(typeHandler = IntegerListTypeHandler.class) | ||
| 95 | - private List<Integer> brokerageBankNames; | ||
| 96 | - /** | ||
| 97 | - * 佣金冻结时间(天) | ||
| 98 | - */ | ||
| 99 | - private Integer brokerageFrozenDays; | ||
| 100 | - /** | ||
| 101 | - * 提现方式 | ||
| 102 | - * | ||
| 103 | - * 枚举 {@link BrokerageWithdrawTypeEnum 对应的类} | ||
| 104 | - */ | ||
| 105 | - @TableField(typeHandler = IntegerListTypeHandler.class) | ||
| 106 | - private List<Integer> brokerageWithdrawType; | ||
| 107 | - | ||
| 108 | } | 48 | } |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/user/MemberUserMapper.java
| 1 | package cn.iocoder.yudao.module.member.dal.mysql.user; | 1 | package cn.iocoder.yudao.module.member.dal.mysql.user; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | -import cn.hutool.core.lang.Assert; | ||
| 5 | import cn.hutool.core.util.StrUtil; | 4 | import cn.hutool.core.util.StrUtil; |
| 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 6 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 8 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 7 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 9 | import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserPageReqVO; | 8 | import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserPageReqVO; |
| 10 | import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; | 9 | import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; |
| 11 | -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | ||
| 12 | import org.apache.ibatis.annotations.Mapper; | 10 | import org.apache.ibatis.annotations.Mapper; |
| 13 | 11 | ||
| 14 | import java.util.List; | 12 | import java.util.List; |
| @@ -63,79 +61,4 @@ public interface MemberUserMapper extends BaseMapperX<MemberUserDO> { | @@ -63,79 +61,4 @@ public interface MemberUserMapper extends BaseMapperX<MemberUserDO> { | ||
| 63 | return selectCount(new LambdaQueryWrapperX<MemberUserDO>() | 61 | return selectCount(new LambdaQueryWrapperX<MemberUserDO>() |
| 64 | .apply("FIND_IN_SET({0}, tag_ids)", tagId)); | 62 | .apply("FIND_IN_SET({0}, tag_ids)", tagId)); |
| 65 | } | 63 | } |
| 66 | - | ||
| 67 | - /** | ||
| 68 | - * 更新用户可用佣金(增加) | ||
| 69 | - * | ||
| 70 | - * @param id 用户编号 | ||
| 71 | - * @param incrCount 增加佣金(正数) | ||
| 72 | - */ | ||
| 73 | - default void updateBrokeragePriceIncr(Long id, int incrCount) { | ||
| 74 | - Assert.isTrue(incrCount > 0); | ||
| 75 | - LambdaUpdateWrapper<MemberUserDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<MemberUserDO>() | ||
| 76 | - .setSql(" brokerage_price = brokerage_price + " + incrCount) | ||
| 77 | - .eq(MemberUserDO::getId, id); | ||
| 78 | - update(null, lambdaUpdateWrapper); | ||
| 79 | - } | ||
| 80 | - | ||
| 81 | - /** | ||
| 82 | - * 更新用户可用佣金(减少) | ||
| 83 | - * 注意:理论上佣金可能已经提现,这时会扣出负数,确保平台不会造成损失 | ||
| 84 | - * | ||
| 85 | - * @param id 用户编号 | ||
| 86 | - * @param incrCount 增加佣金(负数) | ||
| 87 | - */ | ||
| 88 | - default void updateBrokeragePriceDecr(Long id, int incrCount) { | ||
| 89 | - Assert.isTrue(incrCount < 0); | ||
| 90 | - LambdaUpdateWrapper<MemberUserDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<MemberUserDO>() | ||
| 91 | - .setSql(" brokerage_price = brokerage_price + " + incrCount) // 负数,所以使用 + 号 | ||
| 92 | - .eq(MemberUserDO::getId, id); | ||
| 93 | - update(null, lambdaUpdateWrapper); | ||
| 94 | - } | ||
| 95 | - | ||
| 96 | - /** | ||
| 97 | - * 更新用户冻结佣金(增加) | ||
| 98 | - * | ||
| 99 | - * @param id 用户编号 | ||
| 100 | - * @param incrCount 增加冻结佣金(正数) | ||
| 101 | - */ | ||
| 102 | - default void updateFrozenBrokeragePriceIncr(Long id, int incrCount) { | ||
| 103 | - Assert.isTrue(incrCount > 0); | ||
| 104 | - LambdaUpdateWrapper<MemberUserDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<MemberUserDO>() | ||
| 105 | - .setSql(" frozen_brokerage_price = frozen_brokerage_price + " + incrCount) | ||
| 106 | - .eq(MemberUserDO::getId, id); | ||
| 107 | - update(null, lambdaUpdateWrapper); | ||
| 108 | - } | ||
| 109 | - | ||
| 110 | - /** | ||
| 111 | - * 更新用户冻结佣金(减少) | ||
| 112 | - * 注意:理论上冻结佣金可能已经解冻,这时会扣出负数,确保平台不会造成损失 | ||
| 113 | - * | ||
| 114 | - * @param id 用户编号 | ||
| 115 | - * @param incrCount 减少冻结佣金(负数) | ||
| 116 | - */ | ||
| 117 | - default void updateFrozenBrokeragePriceDecr(Long id, int incrCount) { | ||
| 118 | - Assert.isTrue(incrCount < 0); | ||
| 119 | - LambdaUpdateWrapper<MemberUserDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<MemberUserDO>() | ||
| 120 | - .setSql(" frozen_brokerage_price = frozen_brokerage_price + " + incrCount) // 负数,所以使用 + 号 | ||
| 121 | - .eq(MemberUserDO::getId, id); | ||
| 122 | - update(null, lambdaUpdateWrapper); | ||
| 123 | - } | ||
| 124 | - | ||
| 125 | - /** | ||
| 126 | - * 更新用户冻结佣金(减少), 更新用户佣金(增加) | ||
| 127 | - * | ||
| 128 | - * @param id 用户编号 | ||
| 129 | - * @param incrCount 减少冻结佣金(负数) | ||
| 130 | - * @return 更新条数 | ||
| 131 | - */ | ||
| 132 | - default int updateFrozenBrokeragePriceDecrAndBrokeragePriceIncr(Long id, int incrCount) { | ||
| 133 | - Assert.isTrue(incrCount < 0); | ||
| 134 | - LambdaUpdateWrapper<MemberUserDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<MemberUserDO>() | ||
| 135 | - .setSql(" frozen_brokerage_price = frozen_brokerage_price + " + incrCount + // 负数,所以使用 + 号 | ||
| 136 | - ", brokerage_price = brokerage_price + " + -incrCount) // 负数,所以使用 - 号 | ||
| 137 | - .eq(MemberUserDO::getId, id) | ||
| 138 | - .ge(MemberUserDO::getFrozenBrokeragePrice, -incrCount); // cas 逻辑 | ||
| 139 | - return update(null, lambdaUpdateWrapper); | ||
| 140 | - } | ||
| 141 | } | 64 | } |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserService.java
| @@ -166,36 +166,4 @@ public interface MemberUserService { | @@ -166,36 +166,4 @@ public interface MemberUserService { | ||
| 166 | * @param point 积分数量 | 166 | * @param point 积分数量 |
| 167 | */ | 167 | */ |
| 168 | void updateUserPoint(Long userId, Integer point); | 168 | void updateUserPoint(Long userId, Integer point); |
| 169 | - | ||
| 170 | - /** | ||
| 171 | - * 获得用户的推广人 | ||
| 172 | - * | ||
| 173 | - * @param id 用户编号 | ||
| 174 | - * @return 用户的推广人 | ||
| 175 | - */ | ||
| 176 | - MemberUserDO getBrokerageUser(Long id); | ||
| 177 | - | ||
| 178 | - /** | ||
| 179 | - * 更新用户佣金 | ||
| 180 | - * | ||
| 181 | - * @param id 用户编号 | ||
| 182 | - * @param brokeragePrice 用户可用佣金 | ||
| 183 | - */ | ||
| 184 | - void updateUserBrokeragePrice(Long id, int brokeragePrice); | ||
| 185 | - | ||
| 186 | - /** | ||
| 187 | - * 更新用户冻结佣金 | ||
| 188 | - * | ||
| 189 | - * @param id 用户编号 | ||
| 190 | - * @param frozenBrokeragePrice 用户冻结佣金 | ||
| 191 | - */ | ||
| 192 | - void updateUserFrozenBrokeragePrice(Long id, int frozenBrokeragePrice); | ||
| 193 | - | ||
| 194 | - /** | ||
| 195 | - * 更新用户冻结佣金(减少), 更新用户佣金(增加) | ||
| 196 | - * | ||
| 197 | - * @param id 用户编号 | ||
| 198 | - * @param frozenBrokeragePrice 减少冻结佣金(负数) | ||
| 199 | - */ | ||
| 200 | - void updateFrozenBrokeragePriceDecrAndBrokeragePriceIncr(Long id, int frozenBrokeragePrice); | ||
| 201 | } | 169 | } |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java
| 1 | package cn.iocoder.yudao.module.member.service.user; | 1 | package cn.iocoder.yudao.module.member.service.user; |
| 2 | 2 | ||
| 3 | -import cn.hutool.core.lang.Assert; | ||
| 4 | import cn.hutool.core.util.IdUtil; | 3 | import cn.hutool.core.util.IdUtil; |
| 5 | import cn.hutool.core.util.ObjectUtil; | 4 | import cn.hutool.core.util.ObjectUtil; |
| 6 | import cn.hutool.core.util.StrUtil; | 5 | import cn.hutool.core.util.StrUtil; |
| @@ -31,7 +30,6 @@ import javax.validation.Valid; | @@ -31,7 +30,6 @@ import javax.validation.Valid; | ||
| 31 | import java.time.LocalDateTime; | 30 | import java.time.LocalDateTime; |
| 32 | import java.util.Collection; | 31 | import java.util.Collection; |
| 33 | import java.util.List; | 32 | import java.util.List; |
| 34 | -import java.util.Optional; | ||
| 35 | 33 | ||
| 36 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 34 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 37 | import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; | 35 | import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; |
| @@ -261,43 +259,4 @@ public class MemberUserServiceImpl implements MemberUserService { | @@ -261,43 +259,4 @@ public class MemberUserServiceImpl implements MemberUserService { | ||
| 261 | memberUserMapper.updateById(new MemberUserDO().setId(userId).setPoint(point)); | 259 | memberUserMapper.updateById(new MemberUserDO().setId(userId).setPoint(point)); |
| 262 | } | 260 | } |
| 263 | 261 | ||
| 264 | - @Override | ||
| 265 | - public MemberUserDO getBrokerageUser(Long id) { | ||
| 266 | - return Optional.ofNullable(id) | ||
| 267 | - .map(this::getUser) | ||
| 268 | - .map(MemberUserDO::getBrokerageUserId) | ||
| 269 | - .map(this::getUser) | ||
| 270 | - .orElse(null); | ||
| 271 | - } | ||
| 272 | - | ||
| 273 | - @Override | ||
| 274 | - @Transactional(rollbackFor = Exception.class) | ||
| 275 | - public void updateUserBrokeragePrice(Long id, int brokeragePrice) { | ||
| 276 | - if (brokeragePrice > 0) { | ||
| 277 | - memberUserMapper.updateBrokeragePriceIncr(id, brokeragePrice); | ||
| 278 | - } else if (brokeragePrice < 0) { | ||
| 279 | - memberUserMapper.updateBrokeragePriceDecr(id, brokeragePrice); | ||
| 280 | - } | ||
| 281 | - } | ||
| 282 | - | ||
| 283 | - @Override | ||
| 284 | - @Transactional(rollbackFor = Exception.class) | ||
| 285 | - public void updateUserFrozenBrokeragePrice(Long id, int frozenBrokeragePrice) { | ||
| 286 | - if (frozenBrokeragePrice > 0) { | ||
| 287 | - memberUserMapper.updateFrozenBrokeragePriceIncr(id, frozenBrokeragePrice); | ||
| 288 | - } else if (frozenBrokeragePrice < 0) { | ||
| 289 | - memberUserMapper.updateFrozenBrokeragePriceDecr(id, frozenBrokeragePrice); | ||
| 290 | - } | ||
| 291 | - } | ||
| 292 | - | ||
| 293 | - @Override | ||
| 294 | - @Transactional(rollbackFor = Exception.class) | ||
| 295 | - public void updateFrozenBrokeragePriceDecrAndBrokeragePriceIncr(Long id, int frozenBrokeragePrice) { | ||
| 296 | - Assert.isTrue(frozenBrokeragePrice < 0); | ||
| 297 | - int updateRows = memberUserMapper.updateFrozenBrokeragePriceDecrAndBrokeragePriceIncr(id, frozenBrokeragePrice); | ||
| 298 | - if (updateRows == 0) { | ||
| 299 | - throw exception(MEMBER_FROZEN_BROKERAGE_PRICE_NOT_ENOUGH); | ||
| 300 | - } | ||
| 301 | - } | ||
| 302 | - | ||
| 303 | } | 262 | } |