zhibing.pu
2024-08-28 f08a70b0a1e2cd49075c5d5d3f63d07d0b56cef9
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
@@ -1,7 +1,10 @@
package com.ruoyi.order.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.dto.GrantCouponDto;
import com.ruoyi.account.api.feignClient.AppCouponClient;
import com.ruoyi.account.api.feignClient.AppUserAddressClient;
import com.ruoyi.account.api.model.TAppUserAddress;
import com.ruoyi.common.core.web.domain.AjaxResult;
@@ -9,7 +12,9 @@
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.api.model.TExchangeOrder;
import com.ruoyi.order.api.model.TShoppingOrder;
import com.ruoyi.order.api.query.ShoppingOrderQuery;
import com.ruoyi.order.api.query.TActivityStatisticsQuery;
import com.ruoyi.order.api.vo.ChargingOrderVO;
import com.ruoyi.order.api.vo.TActivityStatisticslVO;
import com.ruoyi.order.api.vo.TActivityVO;
import com.ruoyi.order.dto.*;
@@ -19,11 +24,16 @@
import com.ruoyi.other.api.domain.TGoods;
import com.ruoyi.other.api.feignClient.CouponClient;
import com.ruoyi.other.api.feignClient.GoodsClient;
import com.ruoyi.payment.api.feignClient.AliPaymentClient;
import com.ruoyi.payment.api.feignClient.WxPaymentClient;
import com.ruoyi.payment.api.vo.NotifyV3PayDecodeRespBody;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
@@ -50,6 +60,14 @@
    
    @Resource
    private AppUserAddressClient appUserAddressClient;
    @Resource
    private AppCouponClient appCouponClient;
    @Resource
    private WxPaymentClient wxPaymentClient;
    @Resource
    private AliPaymentClient aliPaymentClient;
    
    
    
@@ -261,7 +279,20 @@
        //支付方式(1=微信,2=支付宝) todo 待完善
        Integer paymentType = shoppingOrder.getPaymentType();
        if(1 == paymentType){
            NotifyV3PayDecodeRespBody data = wxPaymentClient.queryOrderInfo(shoppingOrder.getCode()).getData();
            String trade_state = data.getTrade_state();
            if("NOTPAY".equals(trade_state) || "REVOKED".equals(trade_state) || "PAYERROR".equals(trade_state)){
                return AjaxResult.error("订单还未支付,不能操作退款");
            }
            if("CLOSED".equals(trade_state)){
                return AjaxResult.error("订单支付已关闭,不能操作退款");
            }
            if("USERPAYING".equals(trade_state)){
                return AjaxResult.error("订单正在支付中,不能操作退款");
            }
            if("REFUND".equals(trade_state)){
                return AjaxResult.error("订单已退款,不能操作退款");
            }
        }
        if(2 == paymentType){
        
@@ -309,4 +340,41 @@
        }
        return pageList;
    }
    @Override
    public void callBack(String code,String outTradeNo) {
        //改变订单状态
        TShoppingOrder shoppingOrder = this.baseMapper.selectOne(Wrappers.lambdaQuery(TShoppingOrder.class).eq(TShoppingOrder::getCode, code));
        shoppingOrder.setPaymentStatus(2);
        shoppingOrder.setSerialNumber(outTradeNo);
        this.updateById(shoppingOrder);
        //如果是优惠券,赠送优惠券
        if (shoppingOrder.getOrderType()==2){
            GrantCouponDto grantCouponDto = new GrantCouponDto();
            grantCouponDto.setType(3);
            grantCouponDto.setUserIds(String.valueOf(shoppingOrder.getAppUserId()));
            grantCouponDto.setCouponId(shoppingOrder.getCouponId());
            grantCouponDto.setWaysToObtain(2);
            grantCouponDto.setEndTime(LocalDateTime.now());
            appCouponClient.grantCoupon(grantCouponDto);
        }
    }
    @Override
    public PageInfo<TShoppingOrder> pageList(ShoppingOrderQuery query) {
        String startTime1 = null;
        String startTime2 = null;
        if (StringUtils.hasLength(query.getStartTime())){
            String[] split = query.getStartTime().split(" - ");
            startTime1 = split[0];
            startTime2 = split[1];
        }
        PageInfo<TShoppingOrder> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
        List<TShoppingOrder> list = this.baseMapper.pageList(pageInfo,query,startTime1,startTime2);
        pageInfo.setRecords(list);
        return pageInfo;
    }
}