| | |
| | | private final MallMemberMapper mallMemberMapper; |
| | | private final DataDictionaryCustomMapper dataDictionaryCustomMapper; |
| | | private final MallLeaderAchieveMapper mallLeaderAchieveMapper; |
| | | private final IApiMallTeamLeaderService iApiMallTeamLeaderService; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | @Override |
| | | public OrderDetailVo findOrderDetailsById(Long id) { |
| | | MallOrderInfo orderInfo = this.baseMapper.selectOrderDetailsById(id); |
| | | if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { |
| | | // if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { |
| | | if (ObjectUtil.isNull(orderInfo)) { |
| | | throw new FebsException("订单不存在"); |
| | | } |
| | | |
| | |
| | | throw new FebsException("还未送至自提点"); |
| | | } |
| | | |
| | | List<MallRefundEntity> mallRefundEntities = mallRefundMapper.selectByItemIdAndOrderIdAndState(null, orderInfo.getId(), 3); |
| | | if(CollUtil.isNotEmpty(mallRefundEntities)){ |
| | | throw new FebsException("请先处理退款商品"); |
| | | } |
| | | |
| | | orderInfo.setStatus(OrderStatusEnum.FINISH.getValue()); |
| | | orderInfo.setReceivingTime(new Date()); |
| | | this.baseMapper.updateById(orderInfo); |
| | |
| | | Long orderInfoId = orderInfo.getId(); |
| | | List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfoId); |
| | | if(CollUtil.isNotEmpty(mallOrderItemList)){ |
| | | |
| | | MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(orderInfo.getTakeUniqueCode()); |
| | | BigDecimal bonusPercent =new BigDecimal(mallTeamLeader.getBonusPercent()==null?"0":mallTeamLeader.getBonusPercent()); |
| | | // DataDictionaryCustom dicBonusPercent = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.BONUS_PERCENT.getType(), DataDictionaryEnum.BONUS_PERCENT.getCode()); |
| | | // BigDecimal bonusPercent = new BigDecimal(dicBonusPercent.getValue()).setScale(2,BigDecimal.ROUND_DOWN); |
| | | for(MallOrderItem mallOrderItem : mallOrderItemList){ |
| | | Integer state = mallOrderItem.getState() == null ? 1 : mallOrderItem.getState(); |
| | | if(1 == state){ |
| | | MallLeaderAchieve mallLeaderAchieve = new MallLeaderAchieve(); |
| | | mallLeaderAchieve.setMemberId(orderInfo.getMemberId()); |
| | | mallLeaderAchieve.setOrderNo(orderInfo.getOrderNo()); |
| | | mallLeaderAchieve.setOrderItemId(mallOrderItem.getId()); |
| | | BigDecimal itemAmount = mallOrderItem.getAmount(); |
| | | // BigDecimal subtract = orderInfo.getAmount().subtract(orderInfo.getCarriage() == null ? BigDecimal.ZERO : orderInfo.getCarriage()); |
| | | mallLeaderAchieve.setAmount(itemAmount); |
| | | BigDecimal bigDecimal = bonusPercent.multiply(itemAmount).setScale(2, BigDecimal.ROUND_DOWN); |
| | | mallLeaderAchieve.setProfitAmount(bigDecimal); |
| | | mallLeaderAchieve.setUniqueCode(orderInfo.getTakeUniqueCode()); |
| | | mallLeaderAchieve.setState(MallLeaderAchieve.STATE_ONE); |
| | | mallLeaderAchieveMapper.insert(mallLeaderAchieve); |
| | |
| | | if(1 != deliveryState){ |
| | | return new FebsResponse().fail().message("订单不是待配送状态"); |
| | | } |
| | | QueryWrapper<MallRefundEntity> objectQueryWrapper = new QueryWrapper<>(); |
| | | objectQueryWrapper.eq("member_id",member.getId()); |
| | | objectQueryWrapper.eq("order_id",mallOrderInfo.getId()); |
| | | MallRefundEntity mallRefund = mallRefundMapper.selectOne(objectQueryWrapper); |
| | | MallRefundEntity mallRefundEntity = new MallRefundEntity(); |
| | | if(ObjectUtil.isEmpty(mallRefund)){ |
| | | mallRefundEntity.setRefundNo(mallOrderInfo.getOrderNo()+"_r"); |
| | | mallRefundEntity.setMemberId(member.getId()); |
| | | mallRefundEntity.setOrderId(mallOrderInfo.getId()); |
| | | mallRefundEntity.setType(1); |
| | | mallRefundEntity.setState(3); |
| | | mallRefundEntity.setAmount(mallOrderInfo.getAmount()); |
| | | mallRefundMapper.insert(mallRefundEntity); |
| | | }else{ |
| | | if(mallRefund.getState() == 1){ |
| | | return new FebsResponse().fail().message("订单已退款"); |
| | | } |
| | | if(mallRefund.getState() == 3){ |
| | | return new FebsResponse().fail().message("订单退款中"); |
| | | } |
| | | if(mallRefund.getState() == 2){ |
| | | mallRefundEntity.setId(mallRefund.getId()); |
| | | mallRefundEntity.setRefundNo(mallRefund.getRefundNo()); |
| | | mallRefundEntity.setMemberId(mallRefund.getMemberId()); |
| | | mallRefundEntity.setOrderId(mallRefund.getOrderId()); |
| | | mallRefundEntity.setType(mallRefund.getType()); |
| | | //根据子订单生成退款记录 |
| | | List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(id); |
| | | if(CollUtil.isEmpty(mallOrderItemList)){ |
| | | return new FebsResponse().fail().message("订单不存在"); |
| | | } |
| | | for(MallOrderItem mallOrderItem : mallOrderItemList){ |
| | | QueryWrapper<MallRefundEntity> objectQueryWrapper = new QueryWrapper<>(); |
| | | objectQueryWrapper.eq("member_id",member.getId()); |
| | | objectQueryWrapper.eq("order_id",mallOrderInfo.getId()); |
| | | objectQueryWrapper.eq("item_id",mallOrderItem.getId()); |
| | | MallRefundEntity mallRefund = mallRefundMapper.selectOne(objectQueryWrapper); |
| | | MallRefundEntity mallRefundEntity = new MallRefundEntity(); |
| | | if(ObjectUtil.isEmpty(mallRefund)){ |
| | | mallRefundEntity.setRefundNo(mallOrderInfo.getOrderNo()+"_RITEM"+mallOrderItem.getId()); |
| | | mallRefundEntity.setMemberId(member.getId()); |
| | | mallRefundEntity.setOrderId(mallOrderInfo.getId()); |
| | | mallRefundEntity.setItemId(mallOrderItem.getId()); |
| | | if("余额支付".equals(mallOrderInfo.getPayMethod())){ |
| | | mallRefundEntity.setType(3); |
| | | }else if("微信支付".equals(mallOrderInfo.getPayMethod())){ |
| | | mallRefundEntity.setType(1); |
| | | }else{ |
| | | mallRefundEntity.setType(3); |
| | | } |
| | | mallRefundEntity.setState(3); |
| | | mallRefundEntity.setAmount(mallRefund.getAmount()); |
| | | mallRefundMapper.updateById(mallRefundEntity); |
| | | mallRefundEntity.setAmount(mallOrderItem.getAmount()); |
| | | mallRefundMapper.insert(mallRefundEntity); |
| | | }else{ |
| | | if(mallRefund.getState() == 1){ |
| | | return new FebsResponse().fail().message("订单已退款"); |
| | | } |
| | | if(mallRefund.getState() == 2 || mallRefund.getState() == 3){ |
| | | mallRefundEntity.setId(mallRefund.getId()); |
| | | mallRefundEntity.setRefundNo(mallRefund.getRefundNo()); |
| | | mallRefundEntity.setMemberId(mallRefund.getMemberId()); |
| | | mallRefundEntity.setOrderId(mallRefund.getOrderId()); |
| | | mallRefundEntity.setItemId(mallRefund.getItemId()); |
| | | mallRefundEntity.setType(mallRefund.getType()); |
| | | mallRefundEntity.setState(3); |
| | | mallRefundEntity.setAmount(mallRefund.getAmount()); |
| | | mallRefundMapper.updateById(mallRefundEntity); |
| | | } |
| | | } |
| | | ApiLeaderRefundOrderDto apiLeaderRefundOrderDto = new ApiLeaderRefundOrderDto(); |
| | | apiLeaderRefundOrderDto.setOrderId(mallOrderInfo.getId()); |
| | | apiLeaderRefundOrderDto.setItemId(mallOrderItem.getId()); |
| | | apiLeaderRefundOrderDto.setAgreeState(1); |
| | | iApiMallTeamLeaderService.leaderRefundOrder(apiLeaderRefundOrderDto); |
| | | } |
| | | |
| | | //退款订单编号 |
| | | String orderNo = mallOrderInfo.getOrderNo(); |
| | | //退款退款编号 |
| | | String refundNo = mallRefundEntity.getRefundNo(); |
| | | //退款订单金额 |
| | | BigDecimal orderAmount = mallOrderInfo.getAmount(); |
| | | BigDecimal aa = new BigDecimal(100); |
| | | int orderMoney = orderAmount.multiply(aa).intValue(); |
| | | |
| | | //退款退款金额 |
| | | BigDecimal refundAmount = mallRefundEntity.getAmount(); |
| | | BigDecimal bb = new BigDecimal(100); |
| | | int refundMoney = refundAmount.multiply(bb).intValue(); |
| | | |
| | | Long refundId = mallRefundEntity.getId(); |
| | | MallRefundEntity mallRefundOld = mallRefundMapper.selectById(refundId); |
| | | MallOrderInfo mallOrderInfoOld = this.baseMapper.selectByOrderNo(orderNo); |
| | | //余额支付退款 |
| | | if(OrderPayMethodEnum.BALANCE.getName().equals(mallOrderInfo.getPayMethod())){ |
| | | mallRefundOld.setState(1); |
| | | mallRefundMapper.updateById(mallRefundOld); |
| | | mallOrderInfoOld.setStatus(OrderStatusEnum.REFUNDED.getValue()); |
| | | this.baseMapper.updateById(mallOrderInfoOld); |
| | | mallMoneyFlowService.addMoneyFlow(mallOrderInfoOld.getMemberId(), mallOrderInfoOld.getAmount(), MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); |
| | | memberWalletService.add(refundAmount, member.getId(), "balance"); |
| | | mallOrderItemMapper.updateStateByOrderId(3,mallOrderInfoOld.getId()); |
| | | return new FebsResponse().success().message("退款成功"); |
| | | } |
| | | |
| | | Boolean flag = false; |
| | | Boolean debug = xcxProperties.getDebug(); |
| | | if (debug) { |
| | | boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, 1, 1, null); |
| | | flag = b; |
| | | } else { |
| | | log.info("开始调用退款接口。。。退款编号为{}", refundNo); |
| | | boolean b = weixinServiceUtil.comRefund(orderNo, refundNo, orderMoney, refundMoney, null); |
| | | flag = b; |
| | | } |
| | | |
| | | /** |
| | | * 更新退款表 |
| | | * 更新订单表 |
| | | */ |
| | | if(flag){ |
| | | mallRefundOld.setState(1); |
| | | mallRefundMapper.updateById(mallRefundOld); |
| | | mallOrderInfoOld.setStatus(OrderStatusEnum.REFUNDED.getValue()); |
| | | this.baseMapper.updateById(mallOrderInfoOld); |
| | | mallOrderItemMapper.updateStateByOrderId(3,mallOrderInfoOld.getId()); |
| | | mallMoneyFlowService.addMoneyFlow(mallOrderInfoOld.getMemberId(), mallOrderInfoOld.getAmount(), MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue()); |
| | | }else{ |
| | | mallRefundOld.setState(2); |
| | | mallRefundMapper.updateById(mallRefundOld); |
| | | return new FebsResponse().fail().message("退款失败,请联系客服人员"); |
| | | } |
| | | return new FebsResponse().success().message("退款成功"); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | |
| | | return new FebsResponse().success().message("已申请"); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse cancelRefundOrder(Long id) { |
| | | MallRefundEntity mallRefundEntity = mallRefundMapper.selectById(id); |
| | | mallRefundEntity.setState(2); |
| | | mallRefundMapper.updateById(mallRefundEntity); |
| | | Long itemId = mallRefundEntity.getItemId(); |
| | | MallOrderItem mallOrderItem = mallOrderItemMapper.selectById(itemId); |
| | | mallOrderItem.setState(1); |
| | | mallOrderItemMapper.updateById(mallOrderItem); |
| | | return new FebsResponse().success().message("已取消"); |
| | | } |
| | | |
| | | } |