| 
					
				 | 
			
			
				@@ -2,6 +2,7 @@ package com.ym.mec.biz.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.sun.istack.internal.NotNull; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.auth.api.client.SysUserFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.auth.api.entity.SysUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.dao.*; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -308,44 +309,56 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (DateUtil.minutesBetween(payingOrder.getCreateTime(), date) < 10) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            hfMerchantConfig = payConfigMap.get(payingOrder.getTenantId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            updateOrderStatus(date, payConfigMap, payingOrder,true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        closeOrders(orderNoList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public Boolean updateOrderStatus(Date date,  Map<Integer, HfMerchantConfig> payConfigMap, StudentPaymentOrder payingOrder, Boolean checkTime) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (payConfigMap == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException("payConfigMap 不能为空"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HfMerchantConfig hfMerchantConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        hfMerchantConfig = payConfigMap.get(payingOrder.getTenantId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(hfMerchantConfig == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            hfMerchantConfig = hfMerchantConfigService.queryByTenantId(payingOrder.getTenantId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if(hfMerchantConfig == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            	hfMerchantConfig = hfMerchantConfigService.queryByTenantId(payingOrder.getTenantId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(hfMerchantConfig == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                	throw new BizException("机构[{}]汇付商户信息找不到", payingOrder.getTenantId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            	payConfigMap.put(payingOrder.getTenantId(), hfMerchantConfig); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new BizException("机构[{}]汇付商户信息找不到", payingOrder.getTenantId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Map<String, Object> payment = Payment.queryPayment(payingOrder.getTransNo(), hfMerchantConfig.getMerKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            LOGGER.info("订单[{}]交易主动查询接口返回:{}", payingOrder.getTransNo(), payment); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            payConfigMap.put(payingOrder.getTenantId(), hfMerchantConfig); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Map<String, String> rpMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            rpMap.put("merOrderNo", payingOrder.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            rpMap.put("orderNo", payingOrder.getTransNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            rpMap.put("channelType", (String) payment.get("pay_channel")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            String status = (String) payment.get("status"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (payment.containsKey("error_msg")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                rpMap.put("remarks", (String) payment.get("error_msg")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (status.equals("succeeded")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                rpMap.put("tradeState", "1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else if (status.equals("failed") || (DateUtil.minutesBetween(DateUtil.addHours(payingOrder.getUpdateTime(), 2), date) > 0)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                rpMap.put("tradeState", "0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Object> payment = Payment.queryPayment(payingOrder.getTransNo(), hfMerchantConfig.getMerKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LOGGER.info("订单[{}]交易主动查询接口返回:{}", payingOrder.getTransNo(), payment); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (status.equals("succeeded") || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    (status.equals("failed") || payingOrder.getCreateTime().before(DateUtil.addMinutes(new Date(), -35)))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    updateOrder(rpMap); //更新订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, String> rpMap = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rpMap.put("merOrderNo", payingOrder.getOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rpMap.put("orderNo", payingOrder.getTransNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rpMap.put("channelType", (String) payment.get("pay_channel")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String status = (String) payment.get("status"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (payment.containsKey("error_msg")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            rpMap.put("remarks", (String) payment.get("error_msg")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (status.equals("succeeded")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            rpMap.put("tradeState", "1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else if (status.equals("failed") || !checkTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                || (DateUtil.minutesBetween(DateUtil.addHours(payingOrder.getUpdateTime(), 2),date) > 0)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            rpMap.put("tradeState", "0"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (status.equals("succeeded") || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                (status.equals("failed") || !checkTime || payingOrder.getCreateTime().before(DateUtil.addMinutes(new Date(), -35)))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                updateOrder(rpMap); //更新订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        closeOrders(orderNoList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1023,7 +1036,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Date date = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(model.getCouponIdList(), model.getAmount(),false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        studentPaymentOrder.setGroupType(GroupType.GOODS_SELL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        studentPaymentOrder.setGroupType(GroupType.MALL_SELL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         studentPaymentOrder.setUserId(model.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         studentPaymentOrder.setType(OrderTypeEnum.MALL_BUY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         studentPaymentOrder.setOrderNo(model.getOrderNo()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1047,7 +1060,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 "商品销售", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 "商品销售", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 student.getOrganId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                "renew" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                "mall_buy" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         studentPaymentOrder.setMerNos((String) payMap.get("routingMerNos")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         studentPaymentOrder.setPaymentChannel((String) payMap.get("type")); 
			 |