From 5b50dc4bbbca390d26c2637c0e0b25edf4672f78 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Wed, 22 Sep 2021 18:50:46 +0800 Subject: [PATCH] fix --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 94 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 94 insertions(+), 0 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index cc89996..5addc71 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -4,12 +4,22 @@ 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.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.entity.*; import cc.mrbird.febs.mall.mapper.*; +import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.service.IApiMallOrderInfoService; +import cc.mrbird.febs.mall.vo.OrderDetailVo; +import cc.mrbird.febs.mall.vo.OrderListVo; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.SecureUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -18,6 +28,7 @@ import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; import java.util.Random; /** @@ -33,6 +44,9 @@ private final MallGoodsSkuMapper mallGoodsSkuMapper; private final MallAddressInfoMapper mallAddressInfoMapper; private final MallOrderItemMapper mallOrderItemMapper; + private final MallMemberMapper memberMapper; + private final IApiMallMemberWalletService memberWalletService; + private final MallExpressInfoMapper expressInfoMapper; @Override public Long createOrder(AddOrderDto addOrderDto) { @@ -110,4 +124,84 @@ orderInfo.setCancelType(MallOrderInfo.CANCEL_BY_SELF); this.baseMapper.updateById(orderInfo); } + + @Override + public String payOrder(PayOrderDto payOrderDto) { + MallMember member = LoginUserUtil.getLoginUser(); + MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), payOrderDto.getId()); + if (orderInfo == null) { + throw new FebsException("订单不存在"); + } + + if (OrderStatusEnum.WAIT_PAY.getValue() != orderInfo.getStatus()) { + throw new FebsException("订单状态不能支付"); + } + + switch (payOrderDto.getType()) { + case "1": + // TODO 微信支付 + break; + case "2": + // TODO 支付宝支付 + break; + case "3": + return balancePay(orderInfo, payOrderDto.getTradePwd()); + default: + + } + return ""; + } + + private String balancePay(MallOrderInfo orderInfo, String tradePwd) { + if (StrUtil.isBlank(tradePwd)) { + throw new FebsException("支付密码错误"); + } + + MallMember mallMember = memberMapper.selectById(orderInfo.getMemberId()); + if (!mallMember.getTradePassword().equals(SecureUtil.md5(tradePwd))) { + throw new FebsException("支付密码错误"); + } + + memberWalletService.reduceBalance(orderInfo.getAmount(), mallMember.getId()); + return orderInfo.getOrderNo(); + } + + + @Override + public List<OrderListVo> findOrderList(OrderListDto orderListDto) { + IPage<MallOrderInfo> page = new Page<>(orderListDto.getPageNum(), orderListDto.getPageSize()); + + 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) { + throw new FebsException("订单不存在"); + } + + OrderDetailVo orderDetailVo = MallOrderInfoConversion.INSTANCE.entityToDetailVo(orderInfo); + + if (orderInfo.getStatus() == OrderStatusEnum.WAIT_FINISH.getValue()) { + MallExpressInfo expressInfo = expressInfoMapper.selectByOrderId(orderInfo.getId()); + orderDetailVo.setExpressNo(expressInfo.getExpressNo()); + orderDetailVo.setExpressCom(expressInfo.getExpressCom()); + } + return orderDetailVo; + } + + @Override + public void confirmOrder(Long id) { + MallMember member = LoginUserUtil.getLoginUser(); + MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), id); + if (orderInfo == null) { + throw new FebsException("订单不存在"); + } + + orderInfo.setStatus(OrderStatusEnum.FINISH.getValue()); + orderInfo.setReceivingTime(new Date()); + this.baseMapper.updateById(orderInfo); + } } -- Gitblit v1.9.1