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
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
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
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
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
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
yudao-module-mall/yudao-module-trade-biz/pom.xml
| ... | ... | @@ -56,6 +56,10 @@ |
| 56 | 56 | </dependency> |
| 57 | 57 | <dependency> |
| 58 | 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 | 63 | <artifactId>yudao-spring-boot-starter-biz-ip</artifactId> |
| 60 | 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 | 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | 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 | 10 | import io.swagger.v3.oas.annotations.Operation; |
| 11 | 11 | import io.swagger.v3.oas.annotations.Parameter; |
| 12 | 12 | import io.swagger.v3.oas.annotations.tags.Tag; |
| ... | ... | @@ -24,7 +24,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 24 | 24 | |
| 25 | 25 | @Tag(name = "管理后台 - 佣金记录") |
| 26 | 26 | @RestController |
| 27 | -@RequestMapping("/member/member-brokerage-record") | |
| 27 | +@RequestMapping("/trade/member-brokerage-record") | |
| 28 | 28 | @Validated |
| 29 | 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
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
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
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/config/vo/TradeConfigBaseVO.java
| 1 | 1 | package cn.iocoder.yudao.module.trade.controller.admin.config.vo; |
| 2 | 2 | |
| 3 | 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 | 7 | import io.swagger.v3.oas.annotations.media.Schema; |
| 8 | 8 | import lombok.Data; |
| 9 | 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 | 3 | import cn.hutool.core.util.StrUtil; |
| 4 | 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 | 10 | import org.mapstruct.Mapper; |
| 11 | 11 | import org.mapstruct.factory.Mappers; |
| 12 | 12 | |
| ... | ... | @@ -29,7 +29,7 @@ public interface MemberBrokerageRecordConvert { |
| 29 | 29 | |
| 30 | 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 | 34 | Integer status = brokerageFrozenDays > 0 |
| 35 | 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 | import cn.iocoder.yudao.framework.dict.core.util.DictFrameworkUtils; |
| 8 | 8 | import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; |
| 9 | 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 | 11 | import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; |
| 12 | 12 | import cn.iocoder.yudao.module.pay.api.order.dto.PayOrderCreateReqDTO; |
| 13 | 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 | 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 | 6 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| 7 | 7 | import com.baomidou.mybatisplus.annotation.TableId; |
| 8 | 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 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 4 | 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 | 8 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| 9 | 9 | import com.baomidou.mybatisplus.annotation.TableField; |
| 10 | 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 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | 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 | 8 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 9 | 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 | 1 | package cn.iocoder.yudao.module.trade.dal.mysql.brokerage.user; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.lang.Assert; | |
| 3 | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | 5 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | 6 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 6 | 7 | import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.TradeBrokerageUserPageReqVO; |
| 7 | 8 | import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.TradeBrokerageUserDO; |
| 9 | +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | |
| 8 | 10 | import org.apache.ibatis.annotations.Mapper; |
| 9 | 11 | |
| 10 | 12 | /** |
| ... | ... | @@ -23,4 +25,79 @@ public interface TradeBrokerageUserMapper extends BaseMapperX<TradeBrokerageUser |
| 23 | 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 | 3 | import cn.hutool.core.util.StrUtil; |
| 4 | 4 | import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; |
| 5 | 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 | 7 | import org.springframework.stereotype.Component; |
| 8 | 8 | |
| 9 | 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 | 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 | 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 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | 4 | import cn.hutool.core.util.BooleanUtil; |
| ... | ... | @@ -6,17 +6,17 @@ import cn.hutool.core.util.NumberUtil; |
| 6 | 6 | import cn.hutool.core.util.ObjectUtil; |
| 7 | 7 | import cn.hutool.extra.spring.SpringUtil; |
| 8 | 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 | 20 | import lombok.extern.slf4j.Slf4j; |
| 21 | 21 | import org.springframework.stereotype.Service; |
| 22 | 22 | import org.springframework.transaction.annotation.Transactional; |
| ... | ... | @@ -42,9 +42,9 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe |
| 42 | 42 | @Resource |
| 43 | 43 | private MemberBrokerageRecordMapper memberBrokerageRecordMapper; |
| 44 | 44 | @Resource |
| 45 | - private MemberPointConfigService memberConfigService; | |
| 45 | + private TradeConfigService tradeConfigService; | |
| 46 | 46 | @Resource |
| 47 | - private MemberUserService memberUserService; | |
| 47 | + private TradeBrokerageUserService tradeBrokerageUserService; | |
| 48 | 48 | |
| 49 | 49 | @Override |
| 50 | 50 | public MemberBrokerageRecordDO getMemberBrokerageRecord(Integer id) { |
| ... | ... | @@ -59,7 +59,7 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe |
| 59 | 59 | @Override |
| 60 | 60 | @Transactional(rollbackFor = Exception.class) |
| 61 | 61 | public void addBrokerage(Long buyerId, List<BrokerageAddReqDTO> list) { |
| 62 | - MemberPointConfigDO memberConfig = memberConfigService.getPointConfig(); | |
| 62 | + TradeConfigDO memberConfig = tradeConfigService.getTradeConfig(); | |
| 63 | 63 | // 0 未启用分销功能 |
| 64 | 64 | if (memberConfig == null || !BooleanUtil.isTrue(memberConfig.getBrokerageEnabled())) { |
| 65 | 65 | log.warn("[addBrokerage][增加佣金失败:brokerageEnabled 未配置,buyerId({})", buyerId); |
| ... | ... | @@ -67,7 +67,7 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe |
| 67 | 67 | } |
| 68 | 68 | |
| 69 | 69 | // 1.1 获得一级推广人 |
| 70 | - MemberUserDO firstUser = memberUserService.getBrokerageUser(buyerId); | |
| 70 | + TradeBrokerageUserDO firstUser = tradeBrokerageUserService.getInviteBrokerageUser(buyerId); | |
| 71 | 71 | if (firstUser == null || !BooleanUtil.isTrue(firstUser.getBrokerageEnabled())) { |
| 72 | 72 | return; |
| 73 | 73 | } |
| ... | ... | @@ -77,7 +77,7 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe |
| 77 | 77 | |
| 78 | 78 | |
| 79 | 79 | // 2.1 获得二级推广员 |
| 80 | - MemberUserDO secondUser = memberUserService.getUser(firstUser.getBrokerageUserId()); | |
| 80 | + TradeBrokerageUserDO secondUser = tradeBrokerageUserService.getBrokerageUser(firstUser.getBrokerageUserId()); | |
| 81 | 81 | if (secondUser == null || !BooleanUtil.isTrue(secondUser.getBrokerageEnabled())) { |
| 82 | 82 | return; |
| 83 | 83 | } |
| ... | ... | @@ -103,9 +103,9 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe |
| 103 | 103 | } |
| 104 | 104 | |
| 105 | 105 | if (BrokerageRecordStatusEnum.WAIT_SETTLEMENT.getStatus().equals(record.getStatus())) { |
| 106 | - memberUserService.updateUserFrozenBrokeragePrice(userId, -record.getPrice()); | |
| 106 | + tradeBrokerageUserService.updateUserFrozenBrokeragePrice(userId, -record.getPrice()); | |
| 107 | 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 | 140 | * @param brokeragePercent 佣金比例 |
| 141 | 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 | 144 | Integer brokeragePercent, Function<BrokerageAddReqDTO, Integer> skuBrokeragePriceFun) { |
| 145 | 145 | // 处理冻结时间 |
| 146 | 146 | brokerageFrozenDays = ObjectUtil.defaultIfNull(brokerageFrozenDays, 0); |
| ... | ... | @@ -170,10 +170,10 @@ public class MemberBrokerageRecordServiceImpl implements MemberBrokerageRecordSe |
| 170 | 170 | |
| 171 | 171 | if (brokerageFrozenDays > 0) { |
| 172 | 172 | // 更新用户冻结佣金 |
| 173 | - memberUserService.updateUserFrozenBrokeragePrice(user.getId(), totalBrokerage); | |
| 173 | + tradeBrokerageUserService.updateUserFrozenBrokeragePrice(user.getId(), totalBrokerage); | |
| 174 | 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 | 214 | } |
| 215 | 215 | |
| 216 | 216 | // 更新用户冻结佣金 |
| 217 | - memberUserService.updateFrozenBrokeragePriceDecrAndBrokeragePriceIncr(record.getUserId(), -record.getPrice()); | |
| 217 | + tradeBrokerageUserService.updateFrozenBrokeragePriceDecrAndBrokeragePriceIncr(record.getUserId(), -record.getPrice()); | |
| 218 | 218 | |
| 219 | 219 | log.info("[unfreezeRecord][record({}) 更新为已结算成功]", record.getId()); |
| 220 | 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 | 53 | * @param brokerageEnabled 推广资格 |
| 54 | 54 | */ |
| 55 | 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 | 1 | package cn.iocoder.yudao.module.trade.service.brokerage.user; |
| 2 | 2 | |
| 3 | +import cn.hutool.core.lang.Assert; | |
| 3 | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | 5 | import cn.iocoder.yudao.module.trade.controller.admin.brokerage.user.vo.TradeBrokerageUserPageReqVO; |
| 5 | 6 | import cn.iocoder.yudao.module.trade.dal.dataobject.brokerage.user.TradeBrokerageUserDO; |
| 6 | 7 | import cn.iocoder.yudao.module.trade.dal.mysql.brokerage.user.TradeBrokerageUserMapper; |
| 7 | 8 | import org.springframework.stereotype.Service; |
| 9 | +import org.springframework.transaction.annotation.Transactional; | |
| 8 | 10 | import org.springframework.validation.annotation.Validated; |
| 9 | 11 | |
| 10 | 12 | import javax.annotation.Resource; |
| 11 | 13 | import java.util.Collection; |
| 12 | 14 | import java.util.List; |
| 15 | +import java.util.Optional; | |
| 13 | 16 | |
| 14 | 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 | 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 | 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 | 12 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; |
| 13 | 13 | import cn.iocoder.yudao.module.member.api.address.AddressApi; |
| 14 | 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 | 17 | import cn.iocoder.yudao.module.member.api.level.MemberLevelApi; |
| 18 | 18 | import cn.iocoder.yudao.module.member.api.point.MemberPointApi; |
| 19 | 19 | import cn.iocoder.yudao.module.member.api.user.MemberUserApi; |
| ... | ... | @@ -120,7 +120,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 120 | 120 | @Resource |
| 121 | 121 | private MemberPointApi memberPointApi; |
| 122 | 122 | @Resource |
| 123 | - private BrokerageApi brokerageApi; | |
| 123 | + private MemberBrokerageRecordService memberBrokerageRecordService; | |
| 124 | 124 | @Resource |
| 125 | 125 | private ProductCommentApi productCommentApi; |
| 126 | 126 | |
| ... | ... | @@ -754,12 +754,12 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 754 | 754 | List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(orderId); |
| 755 | 755 | List<BrokerageAddReqDTO> list = convertList(orderItems, |
| 756 | 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 | 760 | @Async |
| 761 | 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 | 3 | import cn.hutool.core.util.NumberUtil; |
| 4 | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | 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 | 11 | import org.junit.jupiter.api.Disabled; |
| 12 | 12 | import org.junit.jupiter.api.Test; |
| 13 | 13 | import org.springframework.boot.test.mock.mockito.MockBean; |
| ... | ... | @@ -39,9 +39,9 @@ public class MemberBrokerageRecordServiceImplTest extends BaseDbUnitTest { |
| 39 | 39 | private MemberBrokerageRecordMapper memberBrokerageRecordMapper; |
| 40 | 40 | |
| 41 | 41 | @MockBean |
| 42 | - private MemberPointConfigService memberPointConfigService; | |
| 42 | + private TradeConfigService tradeConfigService; | |
| 43 | 43 | @MockBean |
| 44 | - private MemberUserService memberUserService; | |
| 44 | + private TradeBrokerageUserService tradeBrokerageUserService; | |
| 45 | 45 | |
| 46 | 46 | @Test |
| 47 | 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 | 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 | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 8 | 4 | import lombok.Data; |
| 9 | -import org.hibernate.validator.constraints.Range; | |
| 10 | 5 | |
| 11 | -import javax.validation.constraints.NotEmpty; | |
| 12 | 6 | import javax.validation.constraints.NotNull; |
| 13 | -import javax.validation.constraints.PositiveOrZero; | |
| 14 | -import java.util.List; | |
| 15 | 7 | |
| 16 | 8 | /** |
| 17 | 9 | * 会员积分配置 Base VO,提供给添加、修改、详细的子 VO 使用 |
| ... | ... | @@ -36,53 +28,4 @@ public class MemberPointConfigBaseVO { |
| 36 | 28 | @NotNull(message = "1 元赠送积分不能为空") |
| 37 | 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 | 1 | package cn.iocoder.yudao.module.member.dal.dataobject.point; |
| 2 | 2 | |
| 3 | 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 | 4 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| 9 | -import com.baomidou.mybatisplus.annotation.TableField; | |
| 10 | 5 | import com.baomidou.mybatisplus.annotation.TableId; |
| 11 | 6 | import com.baomidou.mybatisplus.annotation.TableName; |
| 12 | -import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; | |
| 13 | 7 | import lombok.*; |
| 14 | 8 | |
| 15 | -import java.util.List; | |
| 16 | - | |
| 17 | 9 | /** |
| 18 | 10 | * 会员积分配置 DO |
| 19 | 11 | * |
| ... | ... | @@ -53,56 +45,4 @@ public class MemberPointConfigDO extends BaseDO { |
| 53 | 45 | */ |
| 54 | 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 | 1 | package cn.iocoder.yudao.module.member.dal.mysql.user; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | -import cn.hutool.core.lang.Assert; | |
| 5 | 4 | import cn.hutool.core.util.StrUtil; |
| 6 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 7 | 6 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 8 | 7 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 9 | 8 | import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserPageReqVO; |
| 10 | 9 | import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; |
| 11 | -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | |
| 12 | 10 | import org.apache.ibatis.annotations.Mapper; |
| 13 | 11 | |
| 14 | 12 | import java.util.List; |
| ... | ... | @@ -63,79 +61,4 @@ public interface MemberUserMapper extends BaseMapperX<MemberUserDO> { |
| 63 | 61 | return selectCount(new LambdaQueryWrapperX<MemberUserDO>() |
| 64 | 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 | 166 | * @param point 积分数量 |
| 167 | 167 | */ |
| 168 | 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 | 1 | package cn.iocoder.yudao.module.member.service.user; |
| 2 | 2 | |
| 3 | -import cn.hutool.core.lang.Assert; | |
| 4 | 3 | import cn.hutool.core.util.IdUtil; |
| 5 | 4 | import cn.hutool.core.util.ObjectUtil; |
| 6 | 5 | import cn.hutool.core.util.StrUtil; |
| ... | ... | @@ -31,7 +30,6 @@ import javax.validation.Valid; |
| 31 | 30 | import java.time.LocalDateTime; |
| 32 | 31 | import java.util.Collection; |
| 33 | 32 | import java.util.List; |
| 34 | -import java.util.Optional; | |
| 35 | 33 | |
| 36 | 34 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 37 | 35 | import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; |
| ... | ... | @@ -261,43 +259,4 @@ public class MemberUserServiceImpl implements MemberUserService { |
| 261 | 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 | } | ... | ... |