From aa02a165eea629fa89d1ff47531ce861cd9fa3bc Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Wed, 29 Sep 2021 10:50:56 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java | 6 ++++++ src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java | 3 ++- src/main/resources/mapper/modules/MallMoneyFlowMapper.xml | 6 +++++- src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java | 2 ++ src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java | 3 +++ src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 26 ++++++++++++++++++++++++++ 6 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java index d479607..e0f8a44 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java @@ -116,4 +116,10 @@ memberService.bindPhone(accountAndCodeDto); return new FebsResponse().success().message("绑定成功"); } + + @ApiOperation(value = "可提现金额") + @GetMapping(value = "/canWithdrawal") + public FebsResponse canWithdrawal() { + return new FebsResponse().success().data(memberService.canMoney()); + } } diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java index 7af83d1..f797a09 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java @@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -30,4 +31,6 @@ List<MallMoneyFlow> selectMoneyFlowProfitByDate(@Param("date") Date date); int updateIsReturnByMemberId(@Param("isReturn") Integer isReturn, @Param("memberId") Long memberId); + + BigDecimal selectProfitByDateAndMemberId(Long memberId); } diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java index 4d7a98b..b223c47 100644 --- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java +++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java @@ -45,9 +45,10 @@ @Autowired private IApiMallMemberService memberService; - @Scheduled(cron = "0 0 1 * * ?") + @Scheduled(cron = "0 1 0 * * ?") @Transactional(rollbackFor = Exception.class) public void profitJob() { + log.info("推荐人返利执行"); DateTime yesterday = DateUtil.yesterday(); List<MallMoneyFlow> flows = moneyFlowMapper.selectMoneyFlowProfitByDate(yesterday); diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java index a038803..6295ea3 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java @@ -40,4 +40,6 @@ MallMemberPayment findMemberPayment(); void bindPhone(AccountAndCodeDto accountAndCodeDto); + + BigDecimal canMoney(); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java index c14b4a8..c5eb694 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java @@ -388,6 +388,17 @@ throw new FebsException("未设置收款方式"); } + BigDecimal profit = mallMoneyFlowMapper.selectProfitByDateAndMemberId(memberId); + MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); + if (profit != null) { + // 可提现 + BigDecimal canMoney = wallet.getBalance().subtract(profit); + + if(withdrawalDto.getAmount().compareTo(canMoney) > 0) { + throw new FebsException("提现金额不足"); + } + } + walletService.reduceBalance(withdrawalDto.getAmount(), memberId); String orderNo = MallUtils.getOrderNum("W"); this.addMoneyFlow(memberId, withdrawalDto.getAmount().negate(), MoneyFlowTypeEnum.WITHDRAWAL.getValue(), orderNo, null, null, null, 1); @@ -426,4 +437,19 @@ member.setBindPhone(accountAndCodeDto.getAccount()); this.baseMapper.updateById(member); } + + @Override + public BigDecimal canMoney() { + Long memberId = LoginUserUtil.getLoginUser().getId(); + MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); + BigDecimal profit = mallMoneyFlowMapper.selectProfitByDateAndMemberId(memberId); + + BigDecimal canMoney = wallet.getBalance(); + if (profit != null) { + if(canMoney.compareTo(BigDecimal.ZERO) > 0) { + canMoney = canMoney.subtract(profit); + } + } + return canMoney; + } } diff --git a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml index 6b9836e..b6ef4b8 100644 --- a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml +++ b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml @@ -84,7 +84,7 @@ <select id="selectMoneyFlowProfitByDate" resultType="cc.mrbird.febs.mall.entity.MallMoneyFlow"> select a.member_id, sum(a.amount) amount from mall_money_flow a - where a.type in (1, 2) and date_format(now(), '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') + where a.type in (1, 2) and date_format(a.created_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') and is_return is null group by a.member_id; </select> @@ -94,4 +94,8 @@ set is_return=#{isReturn} where member_id=#{memberId} and type in (1, 2) </update> + + <select id="selectProfitByDateAndMemberId" resultType="java.math.BigDecimal"> + select sum(a.amount) from mall_money_flow a where member_id=#{memberId} and type in (1,2) and date_format(a.CREATED_TIME, '%Y-%m-%d') = date_format(now(), '%Y-%m-%d'); + </select> </mapper> \ No newline at end of file -- Gitblit v1.9.1