| | |
| | | import cc.mrbird.febs.common.utils.MallUtils; |
| | | import cc.mrbird.febs.mall.dto.AddOrderDto; |
| | | import cc.mrbird.febs.mall.dto.AddOrderItemDto; |
| | | 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 cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.crypto.SecureUtil; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | private final MallGoodsSkuMapper mallGoodsSkuMapper; |
| | | private final MallAddressInfoMapper mallAddressInfoMapper; |
| | | private final MallOrderItemMapper mallOrderItemMapper; |
| | | private final MallMemberMapper memberMapper; |
| | | private final IApiMallMemberWalletService memberWalletService; |
| | | |
| | | @Override |
| | | public Long createOrder(AddOrderDto addOrderDto) { |
| | |
| | | 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(); |
| | | } |
| | | } |