| | |
| | | import com.ruoyi.common.core.enums.OrderStatusEnum; |
| | | import com.ruoyi.common.core.enums.OrderTypeEnum; |
| | | import com.ruoyi.common.core.enums.PaymentMethodEnum; |
| | | import com.ruoyi.common.core.enums.PointStatusEnum; |
| | | import com.ruoyi.common.core.enums.RequestTypeEnum; |
| | | import com.ruoyi.common.core.enums.ReturnRequestStatusEnum; |
| | | import com.ruoyi.common.core.exception.ServiceException; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.common.core.utils.page.BeanUtils; |
| | | import com.ruoyi.common.core.utils.page.CollUtils; |
| | | import com.ruoyi.common.core.utils.page.PageDTO; |
| | | import com.ruoyi.common.redis.service.RedisService; |
| | | import com.ruoyi.order.controller.management.dto.MgtOrderConfirmShipmentDTO; |
| | |
| | | import com.ruoyi.system.api.domain.dto.MemberDTO; |
| | | import com.ruoyi.system.api.domain.dto.MemberOrderDTO; |
| | | import com.ruoyi.system.api.domain.dto.MemberOrderListDTO; |
| | | import com.ruoyi.system.api.domain.dto.MemberPointsDTO; |
| | | import com.ruoyi.system.api.domain.dto.MgtAfterSaleSettingDTO; |
| | | import com.ruoyi.system.api.domain.dto.OrderDTO; |
| | | import com.ruoyi.system.api.domain.dto.updMembeOneDTO; |
| | |
| | | import com.ruoyi.system.api.feignClient.MemberClient; |
| | | import com.ruoyi.system.api.feignClient.PromotionClient; |
| | | import com.ruoyi.system.api.feignClient.SysUserClient; |
| | | import io.seata.spring.annotation.GlobalTransactional; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.time.LocalDateTime; |
| | |
| | | List<MgtOrderVO> list = voList; |
| | | // 封装参数查询拍卖会 |
| | | Set<Long> auctionSalesroomGoodsIdSet = list.stream() |
| | | .filter(order -> order.getAuctionType() == AuctionOrderTypeEnum.AUCTION_ITEMS) |
| | | .filter(order -> order.getAuctionOrderType() |
| | | == AuctionOrderTypeEnum.AUCTION_ITEMS) |
| | | .map(MgtOrderVO::getGoodsSkuId).collect(Collectors.toSet()); |
| | | List<AuctionSalesroom> auctionSalesroomList = auctionClient.getAuctionSalesroomByIds( |
| | | auctionSalesroomGoodsIdSet, SecurityConstants.INNER) |
| | |
| | | AuctionSalesroom::getSalesroomName)); |
| | | // 封装参数查询拍卖订单保证金 |
| | | Set<Long> auctionGoodsIdSet = list.stream() |
| | | .filter(order -> order.getAuctionType() == AuctionOrderTypeEnum.REGULAR_ITEMS) |
| | | .filter(order -> order.getAuctionOrderType() |
| | | == AuctionOrderTypeEnum.REGULAR_ITEMS) |
| | | .map(MgtOrderVO::getGoodsSkuId) |
| | | .collect(Collectors.toSet()); |
| | | |
| | |
| | | Function.identity())); |
| | | |
| | | list.forEach(order -> { |
| | | if (order.getAuctionType() == AuctionOrderTypeEnum.AUCTION_ITEMS) { |
| | | if (order.getAuctionOrderType() == AuctionOrderTypeEnum.AUCTION_ITEMS) { |
| | | order.setSalesroomName( |
| | | StringUtils.isNotBlank(salesroomMap.get(order.getGoodsSkuId())) |
| | | ? salesroomMap.get(order.getAuctionSalesroomId()) : "无"); |
| | |
| | | .getBoundStatus() |
| | | : null); |
| | | } |
| | | if (order.getAuctionType() == AuctionOrderTypeEnum.REGULAR_ITEMS) { |
| | | if (order.getAuctionOrderType() == AuctionOrderTypeEnum.REGULAR_ITEMS) { |
| | | order.setSalesroomName("无"); |
| | | order.setBoundStatus( |
| | | StringUtils.isNotNull(auctionSalesroomGoodsBondMap.get( |
| | |
| | | * @param id 订单id |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @GlobalTransactional(rollbackFor = Exception.class) |
| | | @Transactional |
| | | public void refund(Long id) { |
| | | Order order = getOrder(id); |
| | | if (order.getIsRequest() == 2) { |
| | | throw new ServiceException("该订单已是售后状态"); |
| | | } |
| | | String orderNo = order.getOrderNo(); |
| | | Paylog paylog = iPaylogService.lambdaQuery().eq(Paylog::getOutTradeNo, orderNo) |
| | | .last("limit 1").one(); |
| | |
| | | orderReturnRequest.setRequestReason("管理后台退款"); |
| | | orderReturnRequest.setStatus(ReturnRequestStatusEnum.COMPLETED); |
| | | orderReturnRequest.setAuditStatus(AuditStatusEnum.PASSED); |
| | | orderReturnRequest.setAuditTime(LocalDateTime.now()); |
| | | orderReturnRequestService.save(orderReturnRequest); |
| | | } |
| | | order.setIsRequest(2); |
| | | this.updateById(order); |
| | | // 扣除订单积分 |
| | | Member member = memberClient.getMembeOne(order.getMemberId(), SecurityConstants.INNER) |
| | | .getData(); |
| | | if (StringUtils.isNotNull(member)) { |
| | | MemberPointsDTO memberPointsDTO = new MemberPointsDTO(); |
| | | memberPointsDTO.setMemberId(order.getMemberId()); |
| | | memberPointsDTO.setPointsType(1); |
| | | memberPointsDTO.setPointsStatus(PointStatusEnum.INCREASE); |
| | | memberPointsDTO.setPoints(order.getPoints()); |
| | | memberClient.addMemberPoints(memberPointsDTO); |
| | | |
| | | updMembeOneDTO updMembeOneDTO = new updMembeOneDTO(); |
| | | updMembeOneDTO.setMemberId(order.getMemberId()); |
| | | updMembeOneDTO.setType(2); |
| | | updMembeOneDTO.setTotalPoints(Math.max(member.getTotalPoints() - order.getPoints(), 0)); |
| | | memberClient.updMembeOne(updMembeOneDTO, SecurityConstants.INNER); |
| | | } |
| | | } |
| | | |
| | | private boolean handleRefund(PaymentMethodEnum paymentMethod, Paylog paylog, String orderNo) { |
| | |
| | | @Override |
| | | public void refundReturn(Long id) { |
| | | Order order = getOrder(id); |
| | | if (order.getIsRequest() == 2) { |
| | | throw new ServiceException("该订单已是售后状态"); |
| | | } |
| | | if (order.getOrderStatus() == OrderStatusEnum.FINISHED) { |
| | | OrderReturnRequest orderReturnRequest = new OrderReturnRequest(); |
| | | order.setIsRequest(2); |
| | |
| | | orderReturnRequest.setRequestReason("管理后台退款退货"); |
| | | orderReturnRequest.setStatus(ReturnRequestStatusEnum.TO_BE_RETURNED); |
| | | orderReturnRequest.setAuditStatus(AuditStatusEnum.PASSED); |
| | | orderReturnRequest.setAuditTime(LocalDateTime.now()); |
| | | orderReturnRequestService.save(orderReturnRequest); |
| | | } |
| | | |
| | |
| | | @Override |
| | | public void refundBond(Long id) { |
| | | Order order = getOrder(id); |
| | | List<OrderAuctionBond> orderAuctionBond; |
| | | OrderAuctionBond orderAuctionBond; |
| | | if (order.getAuctionOrderType() == AuctionOrderTypeEnum.AUCTION_ITEMS) { |
| | | orderAuctionBond = orderAuctionBondMapper.selectList( |
| | | orderAuctionBond = orderAuctionBondMapper.selectOne( |
| | | Wrappers.lambdaQuery(OrderAuctionBond.class) |
| | | .eq(OrderAuctionBond::getOrderId, id) |
| | | .eq(OrderAuctionBond::getAuctionSalesroomId, |
| | | order.getAuctionSalesroomId()) |
| | | .eq(OrderAuctionBond::getBoundStatus, BondStatusEnum.PAID)); |
| | | } else { |
| | | orderAuctionBond = orderAuctionBondMapper.selectList( |
| | | orderAuctionBond = orderAuctionBondMapper.selectOne( |
| | | Wrappers.lambdaQuery(OrderAuctionBond.class) |
| | | .eq(OrderAuctionBond::getOrderId, id) |
| | | .eq(OrderAuctionBond::getAuctionGoodsId, |
| | | order.getGoodsSkuId()) |
| | | .eq(OrderAuctionBond::getBoundStatus, BondStatusEnum.PAID)); |
| | | } |
| | | if (CollUtils.isNotEmpty(orderAuctionBond)) { |
| | | for (OrderAuctionBond auctionBond : orderAuctionBond) { |
| | | Paylog paylog = iPaylogService.lambdaQuery() |
| | | .in(Paylog::getOutTradeNo, auctionBond.getOrderNo()) |
| | | .one(); |
| | | boolean result = handleRefund(auctionBond.getPaymentMethod(), paylog, |
| | | auctionBond.getOrderNo()); |
| | | if (result) { |
| | | paylog.setState(3);// 已退款 |
| | | auctionBond.setBoundStatus(BondStatusEnum.REFUNDED); |
| | | iPaylogService.updateById(paylog); |
| | | this.updateById(order); |
| | | } |
| | | if (StringUtils.isNotNull(orderAuctionBond)) { |
| | | Paylog paylog = iPaylogService.lambdaQuery() |
| | | .in(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo()) |
| | | .one(); |
| | | boolean result = handleRefund(orderAuctionBond.getPaymentMethod(), paylog, |
| | | orderAuctionBond.getOrderNo()); |
| | | if (result) { |
| | | paylog.setState(3);// 已退款 |
| | | orderAuctionBond.setBoundStatus(BondStatusEnum.REFUNDED); |
| | | iPaylogService.updateById(paylog); |
| | | this.updateById(order); |
| | | } |
| | | } |
| | | } |