|  |  |  | 
|---|
|  |  |  | package cc.mrbird.febs.mall.service.impl; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import cc.mrbird.febs.common.enumerates.OrderStatusEnum; | 
|---|
|  |  |  | import cc.mrbird.febs.common.enumerates.*; | 
|---|
|  |  |  | import cc.mrbird.febs.common.exception.FebsException; | 
|---|
|  |  |  | import cc.mrbird.febs.common.utils.AppContants; | 
|---|
|  |  |  | import cc.mrbird.febs.common.utils.LoginUserUtil; | 
|---|
|  |  |  | import cc.mrbird.febs.common.utils.MallUtils; | 
|---|
|  |  |  | import cc.mrbird.febs.common.utils.RedisUtils; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.conversion.MallOrderInfoConversion; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.dto.AddOrderDto; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.dto.AddOrderItemDto; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.dto.OrderListDto; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.dto.PayOrderDto; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.conversion.MallOrderRefundConversion; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.dto.*; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.entity.*; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.mapper.*; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.service.IApiMallMemberService; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.service.IApiMallOrderInfoService; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.service.MallMemberService; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.vo.OrderDetailVo; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.vo.OrderListVo; | 
|---|
|  |  |  | import cc.mrbird.febs.mall.vo.OrderRefundVo; | 
|---|
|  |  |  | import cc.mrbird.febs.pay.service.IPayService; | 
|---|
|  |  |  | import cc.mrbird.febs.rabbit.producter.AgentProducer; | 
|---|
|  |  |  | import cn.hutool.core.collection.CollUtil; | 
|---|
|  |  |  | import cn.hutool.core.date.DateUnit; | 
|---|
|  |  |  | import cn.hutool.core.date.DateUtil; | 
|---|
|  |  |  | import cn.hutool.core.util.StrUtil; | 
|---|
|  |  |  | import cn.hutool.crypto.SecureUtil; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.metadata.IPage; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.math.BigDecimal; | 
|---|
|  |  |  | import java.text.SimpleDateFormat; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.Random; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @author wzy | 
|---|
|  |  |  | 
|---|
|  |  |  | private final MallMemberMapper memberMapper; | 
|---|
|  |  |  | private final IApiMallMemberWalletService memberWalletService; | 
|---|
|  |  |  | private final MallExpressInfoMapper expressInfoMapper; | 
|---|
|  |  |  | private final MallOrderRefundMapper mallOrderRefundMapper; | 
|---|
|  |  |  | private final MallOrderRefundOperationMapper mallOrderRefundOperationMapper; | 
|---|
|  |  |  | private final MallShoppingCartMapper mallShoppingCartMapper; | 
|---|
|  |  |  | private final IApiMallMemberService memberService; | 
|---|
|  |  |  | private final RedisUtils redisUtils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private final AgentProducer agentProducer; | 
|---|
|  |  |  | private final IPayService payService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional(rollbackFor = Exception.class) | 
|---|
|  |  |  | public Long createOrder(AddOrderDto addOrderDto) { | 
|---|
|  |  |  | MallMember member = LoginUserUtil.getLoginUser(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MallAddressInfo address = mallAddressInfoMapper.selectById(addOrderDto.getAddressId()); | 
|---|
|  |  |  | MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId()); | 
|---|
|  |  |  | if (address == null) { | 
|---|
|  |  |  | throw new FebsException("地址不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (sku.getStock() < item.getCnt()) { | 
|---|
|  |  |  | throw new FebsException("库存不足"); | 
|---|
|  |  |  | throw new FebsException(sku.getSkuName() + "库存不足"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId()); | 
|---|
|  |  |  | if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) { | 
|---|
|  |  |  | throw new FebsException(mallGoods.getGoodsName() + "已下架"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MallOrderItem orderItem = new MallOrderItem(); | 
|---|
|  |  |  | 
|---|
|  |  |  | mallOrderItemMapper.insert(orderItem); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | sku.setStock(sku.getStock() - item.getCnt()); | 
|---|
|  |  |  | sku.setSkuVolume(sku.getSkuVolume() + item.getCnt()); | 
|---|
|  |  |  | mallGoodsSkuMapper.updateById(sku); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (addOrderDto.getType() == 1) { | 
|---|
|  |  |  | mallShoppingCartMapper.delBySkuId(sku.getId(), member.getId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | orderInfo.setAmount(total); | 
|---|
|  |  |  | this.baseMapper.updateById(orderInfo); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 15 * 60 * 1000L); | 
|---|
|  |  |  | return orderInfo.getId(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | public void cancelOrder(Long id) { | 
|---|
|  |  |  | MallMember member = LoginUserUtil.getLoginUser(); | 
|---|
|  |  |  | MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), id); | 
|---|
|  |  |  | if (orderInfo == null) { | 
|---|
|  |  |  | if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { | 
|---|
|  |  |  | throw new FebsException("订单不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional(rollbackFor = Exception.class) | 
|---|
|  |  |  | public String payOrder(PayOrderDto payOrderDto) { | 
|---|
|  |  |  | public Map<String, Object> payOrder(PayOrderDto payOrderDto) { | 
|---|
|  |  |  | MallMember member = LoginUserUtil.getLoginUser(); | 
|---|
|  |  |  | MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), payOrderDto.getId()); | 
|---|
|  |  |  | if (orderInfo == null) { | 
|---|
|  |  |  | if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { | 
|---|
|  |  |  | throw new FebsException("订单不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new FebsException("订单状态不能支付"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String payResultStr = ""; | 
|---|
|  |  |  | switch (payOrderDto.getType()) { | 
|---|
|  |  |  | case "1": | 
|---|
|  |  |  | // TODO 微信支付 | 
|---|
|  |  |  | //                orderInfo.setPayOrderNo(payOrderDto.getPayOrderNo()); | 
|---|
|  |  |  | //                orderInfo.setPayImage(payOrderDto.getPayImage()); | 
|---|
|  |  |  | orderInfo.setPayMethod("微信支付"); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case "2": | 
|---|
|  |  |  | // TODO 支付宝支付 | 
|---|
|  |  |  | if (StrUtil.isNotBlank(orderInfo.getPayOrderNo())) { | 
|---|
|  |  |  | payResultStr = orderInfo.getPayOrderNo(); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | payResultStr = payService.aliPay(orderInfo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | orderInfo.setPayOrderNo(payResultStr); | 
|---|
|  |  |  | orderInfo.setPayMethod("支付宝支付"); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case "3": | 
|---|
|  |  |  | return balancePay(orderInfo, payOrderDto.getTradePwd()); | 
|---|
|  |  |  | payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | orderInfo.setPayOrderNo(orderInfo.getOrderNo()); | 
|---|
|  |  |  | orderInfo.setPayMethod("余额支付"); | 
|---|
|  |  |  | orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); | 
|---|
|  |  |  | orderInfo.setPayTime(new Date()); | 
|---|
|  |  |  | orderInfo.setPayResult("1"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //                MallMember mallMember = memberMapper.selectById(member.getId()); | 
|---|
|  |  |  | //                if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) { | 
|---|
|  |  |  | //                    mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name()); | 
|---|
|  |  |  | //                    memberMapper.updateById(mallMember); | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 静态倍数 | 
|---|
|  |  |  | List<MallOrderItem> orderItems = this.baseMapper.getMallOrderItemByOrderId(orderInfo.getId()); | 
|---|
|  |  |  | if (CollUtil.isNotEmpty(orderItems)) { | 
|---|
|  |  |  | for (MallOrderItem orderItem : orderItems) { | 
|---|
|  |  |  | MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId()); | 
|---|
|  |  |  | BigDecimal score = sku.getOriginalPrice().multiply(mallGoods.getStaticMultiple()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | memberWalletService.add(score, member.getId(), "score"); | 
|---|
|  |  |  | memberService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), null, null, null, null, FlowTypeEnum.SCORE.getValue()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | memberService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), null, null, null, null, FlowTypeEnum.BALANCE.getValue()); | 
|---|
|  |  |  | //                agentProducer.sendAutoLevelUpMsg(member.getId()); | 
|---|
|  |  |  | //                agentProducer.sendReturnMoneyMsg(orderInfo.getId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | default: | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return ""; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.baseMapper.updateById(orderInfo); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Map<String, Object> map = new HashMap<>(); | 
|---|
|  |  |  | map.put("orderInfo", payResultStr); | 
|---|
|  |  |  | map.put("orderNo", orderInfo.getOrderNo()); | 
|---|
|  |  |  | map.put("orderId", orderInfo.getId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return map; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private String balancePay(MallOrderInfo orderInfo, String tradePwd) { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MallMember mallMember = memberMapper.selectById(orderInfo.getMemberId()); | 
|---|
|  |  |  | if (!mallMember.getTradePassword().equals(SecureUtil.md5(tradePwd))) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (StrUtil.isBlank(mallMember.getTradePassword())) { | 
|---|
|  |  |  | throw new FebsException("未设置支付密码"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!SecureUtil.md5(tradePwd).equals(mallMember.getTradePassword())) { | 
|---|
|  |  |  | throw new FebsException("支付密码错误"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | memberWalletService.reduceBalance(orderInfo.getAmount(), mallMember.getId()); | 
|---|
|  |  |  | memberWalletService.reduce(orderInfo.getAmount(), mallMember.getId(), "balance"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return orderInfo.getOrderNo(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<OrderListVo> findOrderList(OrderListDto orderListDto) { | 
|---|
|  |  |  | MallMember member = LoginUserUtil.getLoginUser(); | 
|---|
|  |  |  | IPage<MallOrderInfo> page = new Page<>(orderListDto.getPageNum(), orderListDto.getPageSize()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | orderListDto.setMemberId(member.getId()); | 
|---|
|  |  |  | IPage<MallOrderInfo> mallOrderInfos = this.baseMapper.selectApiOrderListInPage(page, orderListDto); | 
|---|
|  |  |  | return MallOrderInfoConversion.INSTANCE.entitysToVos(mallOrderInfos.getRecords()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public OrderDetailVo findOrderDetailsById(Long id) { | 
|---|
|  |  |  | MallOrderInfo orderInfo = this.baseMapper.selectOrderDetailsById(id); | 
|---|
|  |  |  | if (orderInfo == null) { | 
|---|
|  |  |  | if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { | 
|---|
|  |  |  | throw new FebsException("订单不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | orderDetailVo.setExpressNo(expressInfo.getExpressNo()); | 
|---|
|  |  |  | orderDetailVo.setExpressCom(expressInfo.getExpressCom()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (orderInfo.getStatus() == OrderStatusEnum.REFUNDING.getValue() || orderInfo.getStatus() == OrderStatusEnum.REFUNDED.getValue()) { | 
|---|
|  |  |  | MallOrderRefund orderRefund = mallOrderRefundMapper.selectOrderRefundByOrderId(orderInfo.getId()); | 
|---|
|  |  |  | OrderRefundVo orderRefundVo = MallOrderRefundConversion.INSTANCE.entityToVo(orderRefund); | 
|---|
|  |  |  | orderDetailVo.setOrderRefund(orderRefundVo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (OrderStatusEnum.WAIT_PAY.getValue() == orderInfo.getStatus()) { | 
|---|
|  |  |  | Date endTime = DateUtil.offsetMinute(orderInfo.getOrderTime(), 15); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | long remainTime = DateUtil.between(new Date(), endTime, DateUnit.SECOND, false); | 
|---|
|  |  |  | orderDetailVo.setRemainTime(remainTime); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return orderDetailVo; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | public void confirmOrder(Long id) { | 
|---|
|  |  |  | MallMember member = LoginUserUtil.getLoginUser(); | 
|---|
|  |  |  | MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), id); | 
|---|
|  |  |  | if (orderInfo == null) { | 
|---|
|  |  |  | if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { | 
|---|
|  |  |  | throw new FebsException("订单不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (orderInfo.getStatus() != OrderStatusEnum.WAIT_FINISH.getValue()) { | 
|---|
|  |  |  | throw new FebsException("该状态不能确认收货"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | orderInfo.setStatus(OrderStatusEnum.FINISH.getValue()); | 
|---|
|  |  |  | orderInfo.setReceivingTime(new Date()); | 
|---|
|  |  |  | this.baseMapper.updateById(orderInfo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void delOrder(Long id) { | 
|---|
|  |  |  | MallMember member = LoginUserUtil.getLoginUser(); | 
|---|
|  |  |  | MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), id); | 
|---|
|  |  |  | if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { | 
|---|
|  |  |  | throw new FebsException("订单不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | orderInfo.setDelFlag(AppContants.DEL_FLAG_Y); | 
|---|
|  |  |  | this.baseMapper.updateById(orderInfo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional(rollbackFor = Exception.class) | 
|---|
|  |  |  | public void applyRefund(AddRefundDto addRefundDto) { | 
|---|
|  |  |  | MallOrderInfo orderInfo = this.baseMapper.selectById(addRefundDto.getId()); | 
|---|
|  |  |  | if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { | 
|---|
|  |  |  | throw new FebsException("订单不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (orderInfo.getStatus() == OrderStatusEnum.REFUNDING.getValue()) { | 
|---|
|  |  |  | throw new FebsException("已提交退款, 请勿重复提交"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (orderInfo.getStatus() != OrderStatusEnum.WAIT_SHIPPING.getValue() && orderInfo.getStatus() != OrderStatusEnum.WAIT_FINISH.getValue()) { | 
|---|
|  |  |  | throw new FebsException("该订单不能退款"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Integer beforeStatus = orderInfo.getStatus(); | 
|---|
|  |  |  | MallMember member = LoginUserUtil.getLoginUser(); | 
|---|
|  |  |  | orderInfo.setStatus(OrderStatusEnum.REFUNDING.getValue()); | 
|---|
|  |  |  | this.baseMapper.updateById(orderInfo); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MallOrderRefund orderRefund = mallOrderRefundMapper.selectOrderRefundByOrderId(orderInfo.getId()); | 
|---|
|  |  |  | if (orderRefund == null) { | 
|---|
|  |  |  | orderRefund = new MallOrderRefund(); | 
|---|
|  |  |  | orderRefund.setOrderId(orderInfo.getId()); | 
|---|
|  |  |  | orderRefund.setMemberId(member.getId()); | 
|---|
|  |  |  | orderRefund.setDesp(addRefundDto.getDesp()); | 
|---|
|  |  |  | orderRefund.setReason(addRefundDto.getReason()); | 
|---|
|  |  |  | orderRefund.setType(addRefundDto.getType()); | 
|---|
|  |  |  | orderRefund.setRefundTime(new Date()); | 
|---|
|  |  |  | orderRefund.setBeforeStatus(beforeStatus); | 
|---|
|  |  |  | orderRefund.setStatus(OrderRefundStatusEnum.REFUND_APPLY.getValue()); | 
|---|
|  |  |  | mallOrderRefundMapper.insert(orderRefund); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | orderRefund.setDesp(addRefundDto.getDesp()); | 
|---|
|  |  |  | orderRefund.setReason(addRefundDto.getReason()); | 
|---|
|  |  |  | orderRefund.setType(addRefundDto.getType()); | 
|---|
|  |  |  | orderRefund.setRefundTime(new Date()); | 
|---|
|  |  |  | orderRefund.setBeforeStatus(beforeStatus); | 
|---|
|  |  |  | orderRefund.setStatus(OrderRefundStatusEnum.REFUND_APPLY.getValue()); | 
|---|
|  |  |  | mallOrderRefundMapper.updateById(orderRefund); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MallOrderRefundOperation operation = new MallOrderRefundOperation(); | 
|---|
|  |  |  | operation.setOrderId(orderInfo.getId()); | 
|---|
|  |  |  | operation.setRefundId(orderRefund.getId()); | 
|---|
|  |  |  | operation.setContent(StrUtil.format("用户:{}提交退款申请", member.getName())); | 
|---|
|  |  |  | mallOrderRefundOperationMapper.insert(operation); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void refundExpress(RefundExpressDto refundExpressDto) { | 
|---|
|  |  |  | MallMember member = LoginUserUtil.getLoginUser(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MallOrderRefund orderRefund = mallOrderRefundMapper.selectOrderRefundByOrderId(refundExpressDto.getId()); | 
|---|
|  |  |  | if (!OrderRefundStatusEnum.AGREE.getValue().equals(orderRefund.getStatus())) { | 
|---|
|  |  |  | throw new FebsException("暂不能提交物流信息"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | orderRefund.setExpressNo(refundExpressDto.getExpressNo()); | 
|---|
|  |  |  | orderRefund.setExpressCom(refundExpressDto.getExpressCom()); | 
|---|
|  |  |  | orderRefund.setStatus(OrderRefundStatusEnum.EXPRESS_SUBMIT.getValue()); | 
|---|
|  |  |  | mallOrderRefundMapper.updateById(orderRefund); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MallOrderRefundOperation operation = new MallOrderRefundOperation(); | 
|---|
|  |  |  | operation.setOrderId(refundExpressDto.getId()); | 
|---|
|  |  |  | operation.setRefundId(orderRefund.getId()); | 
|---|
|  |  |  | operation.setContent(StrUtil.format("用户:{}提交物流信息,快递公司:{},单号:{}", member.getName(), refundExpressDto.getExpressCom(), refundExpressDto.getExpressNo())); | 
|---|
|  |  |  | mallOrderRefundOperationMapper.insert(operation); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void autoCancelOrder(Long id) { | 
|---|
|  |  |  | MallOrderInfo orderInfo = this.baseMapper.selectById(id); | 
|---|
|  |  |  | if (orderInfo == null) { | 
|---|
|  |  |  | log.error("自动取消订单参数错误:{}", id); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (orderInfo.getStatus() == OrderStatusEnum.WAIT_PAY.getValue()) { | 
|---|
|  |  |  | log.info("自动取消订单:{},{}", orderInfo.getMemberId(), id); | 
|---|
|  |  |  | orderInfo.setStatus(OrderStatusEnum.CANCEL.getValue()); | 
|---|
|  |  |  | orderInfo.setCancelType(MallOrderInfo.CANCEL_OVERTIME_NO_PAY); | 
|---|
|  |  |  | this.baseMapper.updateById(orderInfo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|