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