| | |
| | | import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; |
| | | import cc.mrbird.febs.common.enumerates.FlowTypeEnum; |
| | | import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; |
| | | import cc.mrbird.febs.common.enumerates.ScoreFlowTypeEnum; |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | | import cc.mrbird.febs.common.utils.LoginUserUtil; |
| | | import cc.mrbird.febs.common.utils.MallUtils; |
| | |
| | | import cc.mrbird.febs.mall.service.IMallMemberWithdrawService; |
| | | import cc.mrbird.febs.mall.service.MallMemberService; |
| | | import cc.mrbird.febs.mall.vo.CashOutSettingVo; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.crypto.SecureUtil; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author wzy |
| | |
| | | if (withdrawalDto.getAmount().compareTo(cashOutSettingVo.getMinCashOut()) < 0) { |
| | | throw new FebsException("最小提现金额为"+cashOutSettingVo.getMinCashOut()+"元"); |
| | | } |
| | | DateTime dateTime = DateUtil.beginOfDay(new Date()); |
| | | List<MallMemberWithdraw> mallMemberWithdraws = this.baseMapper.selectList( |
| | | new LambdaQueryWrapper<MallMemberWithdraw>() |
| | | .ge(MallMemberWithdraw::getCreatedTime, dateTime) |
| | | ); |
| | | if(CollUtil.isNotEmpty(mallMemberWithdraws)){ |
| | | //stream流操作mallMemberWithdraws,获取amount的总和 |
| | | BigDecimal sum = mallMemberWithdraws.stream().map(MallMemberWithdraw::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | BigDecimal sumTotal = sum.add(withdrawalDto.getAmount()); |
| | | BigDecimal allCashOut = cashOutSettingVo.getAllCashOut(); |
| | | if(sumTotal.compareTo(allCashOut) > 0){ |
| | | BigDecimal subtract = allCashOut.subtract(sum).setScale(2, RoundingMode.HALF_DOWN); |
| | | throw new FebsException("今日还能提现"+subtract); |
| | | } |
| | | } |
| | | |
| | | String openId = mallMember.getOpenId(); |
| | | if(StrUtil.isEmpty(openId)){ |
| | |
| | | withdraw.setWithdrawNo(withdrawalNo); |
| | | this.baseMapper.updateById(withdraw); |
| | | |
| | | mallMemberService.addMoneyFlow(memberId, withdrawalDto.getAmount().negate(), MoneyFlowTypeEnum.WITHDRAWAL.getValue(), withdrawalNo, null, null, null, 1, FlowTypeEnum.BALANCE.getValue()); |
| | | mallMemberService.addMoneyFlow( |
| | | memberId, |
| | | withdrawalDto.getAmount().negate(), |
| | | ScoreFlowTypeEnum.WITHDRAWAL.getValue(), |
| | | withdrawalNo, |
| | | StrUtil.format(ScoreFlowTypeEnum.WITHDRAWAL.getDesc(),withdrawalDto.getAmount()), |
| | | StrUtil.format(ScoreFlowTypeEnum.WITHDRAWAL.getDesc(),withdrawalDto.getAmount()), |
| | | null, |
| | | 1, |
| | | FlowTypeEnum.BALANCE.getValue() |
| | | ); |
| | | } |
| | | } |