xiaoyong931011
2022-12-23 0e7f25ad6e903c569fa7364e729ddfca6547a279
20221221
9 files modified
139 ■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/AddMemberBankDto.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/WithdrawalDto.java 7 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java 10 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java 14 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java 18 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/MemberBankListVo.java 12 ●●●●● patch | view | raw | blame | history
src/test/java/cc/mrbird/febs/ProfitTest.java 58 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
@@ -179,13 +179,13 @@
        return null;
    }
    @ApiOperation(value = "新增银行卡")
    @ApiOperation(value = "新增地址")
    @PostMapping(value = "/addMemberBank")
    public FebsResponse addMemberBank(@RequestBody AddMemberBankDto addMemberBankDto) {
        return memberService.addMemberBank(addMemberBankDto);
    }
    @ApiOperation(value = "银行卡列表", notes = "银行卡列表")
    @ApiOperation(value = "地址列表", notes = "地址列表")
    @ApiResponses({
            @ApiResponse(code = 200, message = "success", response = MemberBankListVo.class)
    })
src/main/java/cc/mrbird/febs/mall/dto/AddMemberBankDto.java
@@ -8,20 +8,8 @@
@ApiModel(value = "AddMemberBankDto", description = "参数接收类")
public class AddMemberBankDto {
    // 姓名
    @ApiModelProperty(value = "姓名")
    private String name;
    //证件类型
    @ApiModelProperty(value = "证件类型")
    private String idType;
    //证件号码
    @ApiModelProperty(value = "证件号码")
    private String idCardNum;
    // 银行卡号
    @ApiModelProperty(value = "银行卡号")
    private String bankNo;
    // 手机号
    @ApiModelProperty(value = "手机号")
    private String phone;
}
src/main/java/cc/mrbird/febs/mall/dto/WithdrawalDto.java
@@ -26,13 +26,8 @@
    @ApiModelProperty(value = "交易密码")
    private String tradePwd;
    @NotBlank(message = "参数不能为空")
    @ApiModelProperty(value = "银行卡号")
    private String bankNo;
    @ApiModelProperty(value = "姓名")
    private String name;
    @NotNull(message = "银行卡不能为空")
    @ApiModelProperty(value = "用户银行卡ID")
    private Long bankId;
}
src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java
@@ -101,9 +101,9 @@
                    DataDictionaryEnum.RETURN_PERCENT.getCode()
            );
            String returnPercentStr = returnPercentDic.getValue();
            BigDecimal returnPercent = new BigDecimal(returnPercentStr).multiply(new BigDecimal(0.01));
            BigDecimal returnPercent = new BigDecimal(returnPercentStr).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN);
            //本次返还金额
            BigDecimal returnAmount = amount.multiply(returnPercent);
            BigDecimal returnAmount = amount.multiply(returnPercent).setScale(2,BigDecimal.ROUND_DOWN);
            /**
             * 如果本次返还金额大于剩余返还总金额
             */
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -155,11 +155,11 @@
            return new FebsResponse().fail().message("当前状态不是提现中");
        }
        Long wtihdrawTypeId = mallMemberWithdraw.getWtihdrawTypeId();
        MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(wtihdrawTypeId);
        if(ObjectUtil.isEmpty(mallMemberBank)){
            return new FebsResponse().fail().message("提现地址不存在");
        }
//        Long wtihdrawTypeId = mallMemberWithdraw.getWtihdrawTypeId();
//        MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(wtihdrawTypeId);
//        if(ObjectUtil.isEmpty(mallMemberBank)){
//            return new FebsResponse().fail().message("提现地址不存在");
//        }
        //更新提现记录状态为成功
        mallMemberWithdrawMapper.updateStatusById(2,mallMemberWithdraw.getId());
        //更新提现流水记录为成功
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -462,14 +462,8 @@
    public BigDecimal canMoney() {
        Long memberId = LoginUserUtil.getLoginUser().getId();
        MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
        BigDecimal profit = mallMoneyFlowMapper.selectProfitByDateAndMemberId(memberId);
        BigDecimal canMoney = wallet.getCommission();
        if (profit != null) {
            if(canMoney.compareTo(BigDecimal.ZERO) > 0) {
                canMoney = canMoney.subtract(profit);
            }
        }
        BigDecimal canMoney = wallet.getBalance();
        canMoney = canMoney.compareTo(BigDecimal.ZERO) > 0 ? canMoney : BigDecimal.ZERO;
        return canMoney;
    }
@@ -614,11 +608,7 @@
    public FebsResponse updateMemberBank(UpdateMemberBankDto updateMemberBankDto) {
        Long id = updateMemberBankDto.getId();
        MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(id);
        mallMemberBank.setName(updateMemberBankDto.getName());
        mallMemberBank.setIdType(updateMemberBankDto.getIdType());
        mallMemberBank.setIdCardNum(updateMemberBankDto.getIdCardNum());
        mallMemberBank.setBankNo(updateMemberBankDto.getBankNo());
        mallMemberBank.setPhone(updateMemberBankDto.getPhone());
        mallMemberBankMapper.updateById(mallMemberBank);
        return new FebsResponse().success();
    }
src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java
@@ -61,16 +61,14 @@
            cashOutSettingVo = JSONObject.parseObject(dic.getValue(), CashOutSettingVo.class);
        }
        if (withdrawalDto.getAmount().compareTo(cashOutSettingVo.getMinCashOut()) < 0) {
            throw new FebsException("最小提现金额为"+cashOutSettingVo.getMinCashOut().setScale(2,BigDecimal.ROUND_DOWN));
        if (withdrawalDto.getAmount().compareTo(BigDecimal.ZERO) <= 0) {
            throw new FebsException("请输入正确的提现金额");
        }
        if(ObjectUtil.isEmpty(withdrawalDto.getBankNo())){
            throw new FebsException("请输入地址");
        }
        MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(withdrawalDto.getBankId());
        if(ObjectUtil.isEmpty(mallMemberBank)){
            throw new FebsException("未找到地址信息");
        }
        BigDecimal serviceFee = cashOutSettingVo.getServiceFee().multiply(BigDecimal.valueOf(0.01));
        BigDecimal serviceFee = cashOutSettingVo.getServiceFee();
        String orderNo = MallUtils.getOrderNum("W");
        //减少用户余额
        memberWalletService.reduce(withdrawalDto.getAmount(), memberId, "balance");
@@ -80,8 +78,8 @@
        withdraw.setMemberId(memberId);
        withdraw.setAmount(withdrawalDto.getAmount());
        withdraw.setStatus(1);
        withdraw.setAmountFee(serviceFee.multiply(withdrawalDto.getAmount()));
        withdraw.setWtihdrawTypeId(mallMemberBank.getId());
        withdraw.setAmountFee(serviceFee);
//        withdraw.setWtihdrawTypeId(mallMemberBank.getId());
        this.baseMapper.insert(withdraw);
        //生成提现流水记录
        Long subsidyAmountFlowId = mallMoneyFlowService.addMoneyFlow(
src/main/java/cc/mrbird/febs/mall/vo/MemberBankListVo.java
@@ -8,19 +8,7 @@
@ApiModel(value = "MemberBankListVo", description = "信息返回类")
public class MemberBankListVo {
    private Long id;
    // 姓名
    @ApiModelProperty(value = "姓名")
    private String name;
    //证件类型
    @ApiModelProperty(value = "证件类型")
    private String idType;
    //证件号码
    @ApiModelProperty(value = "证件号码")
    private String idCardNum;
    // 银行卡号
    @ApiModelProperty(value = "银行卡号")
    private String bankNo;
    // 手机号
    @ApiModelProperty(value = "手机号")
    private String phone;
}
src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -337,11 +337,63 @@
    @Autowired
    private IMallAchieveService mallAchieveService;
    @Autowired
    private MallMemberStarBuyMapper mallMemberStarBuyMapper;
    @Test
    public void achieveTest() {
        List<MallOrderItem> items = mallOrderItemMapper.selectList(null);
        for (MallOrderItem item : items) {
            mallAchieveService.add(item.getId());
        List<MallMemberStarBuy> mallMemberStarBuys = mallMemberStarBuyMapper.selectByStatus(1);
        if(CollUtil.isEmpty(mallMemberStarBuys)){
            return;
        }
        for(MallMemberStarBuy mallMemberStarBuy : mallMemberStarBuys){
            Long memberId = mallMemberStarBuy.getMemberId();
            MallMember mallMember = memberMapper.selectById(memberId);
            //用户不存在跳出本次循环
            if(ObjectUtil.isEmpty(mallMember)){
                continue;
            }
            //返还总金额
            BigDecimal amount = mallMemberStarBuy.getAmount();
            //剩余返还总金额不足,跳出本次循环
            BigDecimal avaAmount = mallMemberStarBuy.getAvaAmount();
            if(avaAmount.compareTo(BigDecimal.ZERO) <= 0){
                continue;
            }
            //每次返还比例
            DataDictionaryCustom returnPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                    DataDictionaryEnum.RETURN_PERCENT.getType(),
                    DataDictionaryEnum.RETURN_PERCENT.getCode()
            );
            String returnPercentStr = returnPercentDic.getValue();
            BigDecimal returnPercent = new BigDecimal(returnPercentStr).multiply(new BigDecimal(0.01)).setScale(2,BigDecimal.ROUND_DOWN);
            //本次返还金额
            BigDecimal returnAmount = amount.multiply(returnPercent).setScale(2,BigDecimal.ROUND_DOWN);
            /**
             * 如果本次返还金额大于剩余返还总金额
             */
            if(returnAmount.compareTo(avaAmount) >= 0){
                returnAmount = avaAmount;
                avaAmount = BigDecimal.ZERO;
            }else{
                avaAmount = avaAmount.subtract(returnAmount).setScale(2,BigDecimal.ROUND_DOWN);
            }
            //增加用户金额
            memberWalletService.addBalance(returnAmount,mallMember.getId());
            //生成流水记录
            Long subsidyAmountFlowId = mallMoneyFlowService.addMoneyFlow(
                    mallMember.getId(),
                    mallMemberStarBuy.getBuyCode(),
                    returnAmount,
                    MallMoneyFlowTypeEnum.RETURN_MARKET_STAR.getCode(),
                    MallMoneyFlow.STATUS_SUCCESS,
                    MallMoneyFlow.IS_RETURN_Y,
                    mallMember.getId(),
                    FlowTypeEnum.BALANCE.getValue(),
                    MallMoneyFlowTypeEnum.RETURN_MARKET_STAR.getName()
            );
            //更新记录
            mallMemberStarBuyMapper.updateAvaAmountById(avaAmount,mallMemberStarBuy.getId());
        }
    }
//