Pārlūkot izejas kodu

fix: 订单取消查询一次台州银行

xdd 2 mēneši atpakaļ
vecāks
revīzija
b28c2d8479

+ 1 - 1
fs-service-system/src/main/java/com/fs/store/mapper/FsStorePaymentMapper.java

@@ -275,7 +275,7 @@ public interface FsStorePaymentMapper
             "</script>"})
     List<FsStorePaymentVO> selectFsMyStorePaymentListQueryVO(@Param("maps") FsStorePaymentParam fsStorePayment);
 
-    @Select("select * from fs_store_payment where business_type=2 and order_id=#{orderId} and status=1   ")
+    @Select("select * from fs_store_payment where business_type=2 and order_id=#{orderId} and status=1 limit 1")
     List<FsStorePayment> selectFsStorePaymentByOrderId(Long orderId);
 
     @Select({"<script> " +

+ 1 - 1
fs-service-system/src/main/java/com/fs/store/service/IFsStorePaymentService.java

@@ -107,5 +107,5 @@ public interface IFsStorePaymentService
 
     void delayQueryTzbk(FsStorePayment fsStorePayment);
 
-    void queryTzbk(FsStorePayment fsStorePayment);
+    boolean queryTzbk(FsStorePayment fsStorePayment);
 }

+ 69 - 32
fs-service-system/src/main/java/com/fs/store/service/impl/FsStoreOrderServiceImpl.java

@@ -231,6 +231,9 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
 
     @Autowired
     private IFsStoreProductAttrValueService fsStoreProductAttrValueService;
+
+    @Autowired
+    private IFsStorePaymentService fsStorePaymentService;
     /**
      * 查询订单
      *
@@ -292,22 +295,39 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             if(order.getPayType().equals("1")||order.getPayType().equals("2")){
                 String json = configService.selectConfigByKey("store.pay");
                 FsPayConfig fsPayConfig = JSON.parseObject(json, FsPayConfig.class);
-                FsStorePayment storePayment=new FsStorePayment();
-                storePayment.setCompanyId(order.getCompanyId());
-                storePayment.setCompanyUserId(order.getCompanyUserId());
-                storePayment.setPayMode(fsPayConfig.getType());
-                storePayment.setStatus(0);
-                storePayment.setPayCode(payCode);
-                storePayment.setPayMoney(order.getPayMoney());
-                storePayment.setCreateTime(new Date());
-                storePayment.setPayTypeCode("weixin");
-                storePayment.setBusinessType(2);
-                storePayment.setRemark("商城订单支付");
-                storePayment.setOpenId(user.getRealName());
-                storePayment.setUserId(user.getUserId());
-                storePayment.setBusinessOrderId(order.getId().toString());
-                storePayment.setOrderId(order.getId());
-                fsStorePaymentMapper.insertFsStorePayment(storePayment);
+                List<FsStorePayment> fsStorePayments = fsStorePaymentMapper.selectFsStorePaymentByOrderId(order.getId());
+                FsStorePayment storePayment;
+                if(CollectionUtils.isEmpty(fsStorePayments)){
+                    storePayment=new FsStorePayment();
+                    storePayment.setCompanyId(order.getCompanyId());
+                    storePayment.setCompanyUserId(order.getCompanyUserId());
+                    storePayment.setPayMode(fsPayConfig.getType());
+                    storePayment.setStatus(0);
+                    storePayment.setPayCode(payCode);
+                    storePayment.setPayMoney(order.getPayMoney());
+                    storePayment.setCreateTime(new Date());
+                    storePayment.setPayTypeCode("weixin");
+                    storePayment.setBusinessType(2);
+                    storePayment.setRemark("商城订单支付");
+                    storePayment.setOpenId(user.getRealName());
+                    storePayment.setUserId(user.getUserId());
+                    storePayment.setBusinessOrderId(order.getId().toString());
+                    storePayment.setOrderId(order.getId());
+                    fsStorePaymentMapper.insertFsStorePayment(storePayment);
+                } else {
+                    storePayment = fsStorePayments.get(0);
+                    storePayment.setPayMode(fsPayConfig.getType());
+                    storePayment.setStatus(0);
+                    storePayment.setPayMoney(order.getPayMoney());
+                    storePayment.setCreateTime(new Date());
+                    storePayment.setPayTypeCode("weixin");
+                    storePayment.setBusinessType(2);
+                    storePayment.setRemark("商城订单支付");
+                    storePayment.setOpenId(user.getRealName());
+                    storePayment.setUserId(user.getUserId());
+                    storePayment.setBusinessOrderId(order.getId().toString());
+                    storePayment.setOrderId(order.getId());
+                }
 
                 PayProcessContext processContext = new PayProcessContext();
                 processContext.setOrderId(param.getOrderId());
@@ -2902,22 +2922,39 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService
             String payCode = IdUtil.getSnowflake(0, 0).nextIdStr();
             String json = configService.selectConfigByKey("store.pay");
             FsPayConfig fsPayConfig = JSON.parseObject(json, FsPayConfig.class);
-            FsStorePayment storePayment=new FsStorePayment();
-            storePayment.setCompanyId(order.getCompanyId());
-            storePayment.setCompanyUserId(order.getCompanyUserId());
-            storePayment.setStatus(0);
-            storePayment.setPayMode(fsPayConfig.getType());
-            storePayment.setPayCode(payCode);
-            storePayment.setPayMoney(order.getPayMoney());
-            storePayment.setCreateTime(new Date());
-            storePayment.setPayTypeCode("weixin");
-            storePayment.setBusinessType(2);
-            storePayment.setRemark("商城订单支付");
-            storePayment.setOpenId(session.getOpenid());
-            storePayment.setUserId(user.getUserId());
-            storePayment.setBusinessOrderId(order.getId().toString());
-            storePayment.setOrderId(order.getId());
-            fsStorePaymentMapper.insertFsStorePayment(storePayment);
+            List<FsStorePayment> fsStorePayments = fsStorePaymentMapper.selectFsStorePaymentByOrderId(order.getId());
+
+            FsStorePayment storePayment;
+            if(CollectionUtils.isEmpty(fsStorePayments)){
+                storePayment=new FsStorePayment();
+                storePayment.setCompanyId(order.getCompanyId());
+                storePayment.setCompanyUserId(order.getCompanyUserId());
+                storePayment.setStatus(0);
+                storePayment.setPayMode(fsPayConfig.getType());
+                storePayment.setPayCode(payCode);
+                storePayment.setPayMoney(order.getPayMoney());
+                storePayment.setCreateTime(new Date());
+                storePayment.setPayTypeCode("weixin");
+                storePayment.setBusinessType(2);
+                storePayment.setRemark("商城订单支付");
+                storePayment.setOpenId(session.getOpenid());
+                storePayment.setUserId(user.getUserId());
+                storePayment.setBusinessOrderId(order.getId().toString());
+                storePayment.setOrderId(order.getId());
+                fsStorePaymentMapper.insertFsStorePayment(storePayment);
+            } else {
+                storePayment = fsStorePayments.get(0);
+                storePayment.setPayMoney(order.getPayMoney());
+                storePayment.setCreateTime(new Date());
+                storePayment.setPayTypeCode("weixin");
+                storePayment.setBusinessType(2);
+                storePayment.setRemark("商城订单支付");
+                storePayment.setOpenId(session.getOpenid());
+                storePayment.setUserId(user.getUserId());
+                storePayment.setBusinessOrderId(order.getId().toString());
+                storePayment.setOrderId(order.getId());
+            }
+
             PaymentHandler payment = PaymentHandlerHolder.findBest(fsPayConfig.getType());
             if(ObjectUtil.isNull(payment)){
                 throw new CustomException("支付方式不存在");

+ 3 - 1
fs-service-system/src/main/java/com/fs/store/service/impl/FsStorePaymentServiceImpl.java

@@ -318,7 +318,7 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService
     }
 
     @Override
-    public void queryTzbk(FsStorePayment fsStorePayment) {
+    public boolean queryTzbk(FsStorePayment fsStorePayment) {
         RequestDTO<QueryOrderRestDTO> requestDTO = new RequestDTO<>();
 
         QueryOrderRestDTO queryOrderRestDTO = new QueryOrderRestDTO();
@@ -351,9 +351,11 @@ public class FsStorePaymentServiceImpl implements IFsStorePaymentService
                     this.updateFsStorePayment(fsStorePayment);
                 }
 
+                return true;
             }
         } catch (Exception e) {
             logger.error("台州银行支付回调查询失败:",e);
         }
+        return false;
     }
 }

+ 9 - 0
fs-user-app/src/main/java/com/fs/app/controller/StoreOrderController.java

@@ -17,6 +17,7 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections4.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -38,6 +39,8 @@ public class StoreOrderController extends  AppBaseController {
     @Autowired
     private IFsStoreAfterSalesService afterSalesService;
 
+    private IFsStorePaymentService fsStorePaymentService;
+
 
     @Login
     @ApiOperation("获取我的订单列表")
@@ -199,6 +202,12 @@ public class StoreOrderController extends  AppBaseController {
         if (order.getStatus() !=0) {
             throw new CustomException("非法操作");
         }
+        List<FsStorePayment> fsStorePayments = fsStorePaymentService.selectFsStorePaymentByOrderId(order.getId());
+        if(CollectionUtils.isNotEmpty(fsStorePayments)){
+            FsStorePayment fsStorePayment = fsStorePayments.get(0);
+            fsStorePaymentService.queryTzbk(fsStorePayment);
+            return R.error("当前订单状态不为待支付,请刷新页面!");
+        }
         orderService.cancelOrder(param.getOrderId());
         return R.ok("操作成功");
     }