| 
					
				 | 
			
			
				@@ -10,15 +10,10 @@ import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.dto.PageInfoOrder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.entity.StudentPaymentOrder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.enums.PaymentChannelEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.page.TenantPaymentOrderQueryInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.common.page.PageInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.util.collection.MapUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.http.HttpStatus; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.transaction.annotation.Propagation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -29,6 +24,7 @@ import com.ym.mec.biz.dal.dao.SysConfigDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.dao.TeacherDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.dao.TenantEntryActivitiesDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.dao.TenantPaymentOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dto.PageInfoOrder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.entity.SysTenantAccountDetail.TransType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.entity.Teacher; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.entity.TenantEntryActivities; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -36,10 +32,13 @@ import com.ym.mec.biz.dal.entity.TenantEntryActivities.SuitableUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.entity.TenantPaymentOrder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.entity.TenantPaymentOrder.TenantPaymentType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.enums.DealStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.PaymentChannelEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.page.TenantPaymentOrderQueryInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.service.PayService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.service.SysTenantAccountService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.service.TenantPaymentOrderService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.common.dal.BaseDAO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.common.entity.HttpResponseResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.common.exception.BizException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.common.service.IdGeneratorService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.common.service.impl.BaseServiceImpl; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -48,6 +47,7 @@ import com.ym.mec.thirdparty.yqpay.Msg; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.thirdparty.yqpay.RsqMsg; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.thirdparty.yqpay.YqPayFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.thirdparty.yqpay.YqPayUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.util.collection.MapUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.util.date.DateUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Service 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -86,7 +86,7 @@ public class TenantPaymentOrderServiceImpl extends BaseServiceImpl<Long, TenantP 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public Map<String, Object> createOrder(Integer userId, Integer activitiesId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public HttpResponseResult createOrder(Integer userId, Integer activitiesId, boolean isContinuePay) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Teacher teacher = teacherDao.get(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (teacher == null) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -118,15 +118,26 @@ public class TenantPaymentOrderServiceImpl extends BaseServiceImpl<Long, TenantP 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			for (TenantPaymentOrder po : orderList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				// 是否满足条件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				if (tenantEntryActivities.getSuitableUser() == SuitableUser.NEW) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if (po.getStatus() == DealStatusEnum.SUCCESS) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						throw new BizException("首充优惠活动每个用户限参与一次。"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					if (po.getStatus() == DealStatusEnum.ING) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						int i = 35 - DateUtil.minutesBetween(po.getCreateTime(), date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						if(i <= 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							throw new BizException("您的订单出现异常,请联系客服"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						if (i <= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							throw new BizException("您有支付中的订单出现异常,请联系客服"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						// throw new BizException("您参加的首充活动正在处理中,预计于{}分钟后处理完毕,请稍后。", i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						if (isContinuePay == false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							HttpResponseResult result = new HttpResponseResult(true, HttpStatus.CONTINUE, "您存在支付中的订单,是否重新付款?", null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							// 关闭原订单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							po.setStatus(DealStatusEnum.CLOSE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							po.setMemo("用户主动关闭"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							po.setUpdateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							tenantPaymentOrderDao.update(po); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						throw new BizException("您参加的首充活动正在处理中,预计于{}分钟后处理完毕,请稍后。", i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if (po.getStatus() == DealStatusEnum.SUCCESS) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						throw new BizException("首充优惠活动每个用户限参与一次。"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -160,7 +171,7 @@ public class TenantPaymentOrderServiceImpl extends BaseServiceImpl<Long, TenantP 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			Map<String, Object> payMap = payService.getPayMap(tenantPaymentOrder.getExpectAmount(), tenantPaymentOrder.getOrderNo(), baseApiUrl 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					+ "/api-teacher/teacherOrder/notify", baseApiUrl + "/api-teacher/teacherOrder/paymentResult?orderNo=" + tenantPaymentOrder.getOrderNo(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					"商户入驻", "商户充值", userId, classFee, organId,"sdaya"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					"商户入驻", "商户充值", userId, classFee, organId, "sdaya"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			Map<String, BigDecimal> routingFee = (Map<String, BigDecimal>) payMap.get("routingFee"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			tenantPaymentOrder.setComAmount(routingFee.get("COM")); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -170,7 +181,8 @@ public class TenantPaymentOrderServiceImpl extends BaseServiceImpl<Long, TenantP 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			tenantPaymentOrder.setUpdateTime(date); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			tenantPaymentOrderDao.update(tenantPaymentOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			return payMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			HttpResponseResult result = new HttpResponseResult(true, HttpStatus.OK, payMap, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("调用支付接口出错", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -350,9 +362,9 @@ public class TenantPaymentOrderServiceImpl extends BaseServiceImpl<Long, TenantP 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		int count = this.findCount(params); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (count > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			TenantPaymentOrder orderMoneyAmount = tenantPaymentOrderDao.getOrderMoneyAmount(params); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if(orderMoneyAmount != null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				pageInfo.setTotalExpectAmount(orderMoneyAmount.getExpectAmount() !=null? orderMoneyAmount.getExpectAmount():BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				pageInfo.setTotalActualAmount(orderMoneyAmount.getActualAmount() !=null? orderMoneyAmount.getActualAmount():BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (orderMoneyAmount != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				pageInfo.setTotalExpectAmount(orderMoneyAmount.getExpectAmount() != null ? orderMoneyAmount.getExpectAmount() : BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				pageInfo.setTotalActualAmount(orderMoneyAmount.getActualAmount() != null ? orderMoneyAmount.getActualAmount() : BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			pageInfo.setTotal(count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			params.put("offset", pageInfo.getOffset()); 
			 |