From 242150766c8cc4b7917bc9413d430581f944c850 Mon Sep 17 00:00:00 2001 From: xhxu Date: Tue, 15 Aug 2023 15:10:08 +0800 Subject: [PATCH] =?UTF-8?q?//=E5=8F=96=E6=B6=88=E6=94=AF=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedule/ProductOrderSchedule.java | 47 +++++++++++++++++++ .../com/iformall/domain/po/ProductOrder.java | 3 ++ .../iformall/service/ProductOrderService.java | 1 + .../service/impl/ProductOrderServiceImpl.java | 35 ++++++++++++++ .../miniApp/TtMiniAppPayAdapterService.java | 2 +- .../resources/mapper/ProductOrderMapper.xml | 7 ++- 6 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 suimangSchedule/src/main/java/com/iformall/schedule/ProductOrderSchedule.java diff --git a/suimangSchedule/src/main/java/com/iformall/schedule/ProductOrderSchedule.java b/suimangSchedule/src/main/java/com/iformall/schedule/ProductOrderSchedule.java new file mode 100644 index 0000000..51067b9 --- /dev/null +++ b/suimangSchedule/src/main/java/com/iformall/schedule/ProductOrderSchedule.java @@ -0,0 +1,47 @@ +package com.iformall.schedule; + +import com.iformall.domain.po.ProductOrder; +import com.iformall.domain.po.ProductOrderSharing; +import com.iformall.enums.EnumProductOrderSettleStatus; +import com.iformall.enums.EnumProductOrderStatus; +import com.iformall.enums.EnumProfitSharing; +import com.iformall.service.ProductOrderService; +import com.iformall.service.ProductOrderSharingService; +import com.iformall.utils.DateUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.List; + +@Component +public class ProductOrderSchedule { + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private ProductOrderService productOrderService; + + @Autowired + private ProductOrderSharingService productOrderSharingService; + + @Scheduled(cron = "0 1/10 * * * *?") + public void productOrderSharingSchedule() { + ProductOrder productOrderQ = new ProductOrder(); + productOrderQ.setOrderStatus(EnumProductOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); + productOrderQ.setStartDate(DateUtils.getHourDateBefore(1,new Date())); + List orderList = productOrderService.findList(productOrderQ); + for (ProductOrder order: orderList) { + try{ + productOrderService.handldTimeOut(order.getId()); + }catch(Exception e){ + logger.error("分账失败:" + e.getMessage()); + } + + } + } + +} \ No newline at end of file diff --git a/suimangService/src/main/java/com/iformall/domain/po/ProductOrder.java b/suimangService/src/main/java/com/iformall/domain/po/ProductOrder.java index cc976ee..7fceb8a 100644 --- a/suimangService/src/main/java/com/iformall/domain/po/ProductOrder.java +++ b/suimangService/src/main/java/com/iformall/domain/po/ProductOrder.java @@ -95,4 +95,7 @@ public class ProductOrder extends TenantEntity { @TableField(exist = false) private Date payEndDate; + @TableField(exist = false) + private Integer isOrderStatus; + } diff --git a/suimangService/src/main/java/com/iformall/service/ProductOrderService.java b/suimangService/src/main/java/com/iformall/service/ProductOrderService.java index 4e64be1..0b67e0c 100644 --- a/suimangService/src/main/java/com/iformall/service/ProductOrderService.java +++ b/suimangService/src/main/java/com/iformall/service/ProductOrderService.java @@ -34,4 +34,5 @@ public interface ProductOrderService { void handldSharing(ProductOrder order); + void handldTimeOut(Long id); } diff --git a/suimangService/src/main/java/com/iformall/service/impl/ProductOrderServiceImpl.java b/suimangService/src/main/java/com/iformall/service/impl/ProductOrderServiceImpl.java index 90f7c7f..69f07cd 100644 --- a/suimangService/src/main/java/com/iformall/service/impl/ProductOrderServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/impl/ProductOrderServiceImpl.java @@ -20,6 +20,7 @@ import com.iformall.service.pay.service.pay.PayAdapterService; import com.iformall.service.pay.service.pay.entity.PayAdapterResult; import com.iformall.service.pay.service.pay.entity.PayQueryAdapterResult; import com.iformall.service.pay.service.share.PayShareAdapterService; +import com.iformall.utils.DateUtils; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -153,6 +154,7 @@ public class ProductOrderServiceImpl implements ProductOrderService { productOrder.setPaymentTime(result.getPayTime()); productOrder.setPayWay(result.getWay()); productOrder.setOrderStatus(productOrderStatus); + productOrder.setIsOrderStatus(EnumProductOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); productOrder.setUpdateDate(new Date()); int num = productOrderMapper.orderPayUpdStatus(productOrder); @@ -234,4 +236,37 @@ public class ProductOrderServiceImpl implements ProductOrderService { } + @Override + public void handldTimeOut(Long id) { + ProductOrder productOrder = productOrderMapper.selectById(id); + if(productOrder == null){ + return; + } + if(!EnumProductOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode().equals(productOrder.getOrderStatus())){ + return; + } + Date hourDateBefore = DateUtils.getHourDateBefore(1, new Date()); + if(productOrder.getCreateDate().after(hourDateBefore)){ + + } + PayAdapterService payAdapterService = payServiceFactory.getPayAdapterService(productOrder.getPayVendor()); + EnumProductOrderPayVendor payVendoEnum = EnumProductOrderPayVendor.getEnum(productOrder.getPayVendor()); + + WxAppinfo appinfo = wxAppinfoService.getProjectCAppInfoFromRedis(productOrder.getProjectType(), payVendoEnum.getPlat()); + WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appinfo.getPayId()); + ResultData resultData = handleProductOrderByQuery(appinfo,payAccount,productOrder,payAdapterService); + if(ResultData.SUCCESS != resultData.code){ + return; + } + if(!EnumProductOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode().equals(productOrder.getProfitSharing())){ + return; + } + + productOrder.setOrderStatus(EnumProductOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode()); + productOrder.setIsOrderStatus(EnumProductOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); + productOrder.setUpdateDate(new Date()); + int num = productOrderMapper.orderPayUpdStatus(productOrder); + + } + } diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java index a674798..a19c58e 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java @@ -234,7 +234,7 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen preOrder.setTotalAmount(order.getOrderPrice()); preOrder.setSubject(appInfo.getName()+"-"+order.getProductTitle()); preOrder.setBody(appInfo.getName()+"-"+order.getProductTitle()); - preOrder.setValidTime(30*60); + preOrder.setValidTime(60*60); // preOrder.setNotifyUrl();//回调地址 // preOrder.setThirdpartyId();//第三方服务商ID // preOrder.setStoreId(record.getStoreId()); diff --git a/suimangService/src/main/resources/mapper/ProductOrderMapper.xml b/suimangService/src/main/resources/mapper/ProductOrderMapper.xml index 553ce70..900f264 100644 --- a/suimangService/src/main/resources/mapper/ProductOrderMapper.xml +++ b/suimangService/src/main/resources/mapper/ProductOrderMapper.xml @@ -135,7 +135,12 @@ ,`pay_way` = #{payWay} - where id = #{id} and `order_status` != #{orderStatus} + where id = #{id} + and `order_status` != #{orderStatus} + + and `order_status` = #{isOrderStatus} + +