| 
					
				 | 
			
			
				@@ -1,18 +1,11 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.ym.mec.biz.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import static com.ym.mec.biz.dal.enums.PeriodEnum.DAY; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import static com.ym.mec.biz.dal.enums.PeriodEnum.MONTH; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import static com.ym.mec.biz.dal.enums.PeriodEnum.QUARTERLY; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import static com.ym.mec.biz.dal.enums.PeriodEnum.YEAR; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import static com.ym.mec.biz.dal.enums.PeriodEnum.YEAR_HALF; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.dao.TenantOrderRecordDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.dto.Mapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.dto.TenantOrderRecordDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.entity.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.enums.DealStatusEnum; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -28,7 +21,6 @@ import com.ym.mec.common.tenant.TenantContextHolder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.thirdparty.adapay.Payment; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.thirdparty.message.MessageSenderPluginContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.util.date.DateUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.commons.collections.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.joda.time.LocalDateTime; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -38,6 +30,7 @@ import org.slf4j.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.slf4j.LoggerFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.concurrent.TimeUnit; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -72,6 +65,8 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private CloudTeacherOrderDao cloudTeacherOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private CloudTeacherOrderService cloudTeacherOrderService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private StudentService studentService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //订单不存在 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private static final String PAYMENT_ID_NOT_EXISTS = "payment_id_not_exists"; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -108,6 +103,7 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @param orderNo 我方订单编号 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public Map<String, Object> checkTenantOrder(String orderNo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         TenantOrderRecord orderRecord = this.getOne(new WrapperUtil<TenantOrderRecord>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .hasEq("order_no_", orderNo).queryWrapper()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -115,6 +111,7 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public Map<String, Object> checkTenantOrder(TenantOrderRecord orderRecord) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return getTenantOrderState(orderRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -122,7 +119,6 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private Map<String, Object> getTenantOrderState(TenantOrderRecord orderRecord) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //主动去第三方查询订单状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         checkTransOrderState(orderRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //返回 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<String, Object> result = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         result.put("groupType", orderRecord.getOrderType()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -138,7 +134,7 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //查询该机构的财务公章 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         TenantConfig tenantConfig = tenantConfigService.getOne(new QueryWrapper<TenantConfig>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .eq("tenant_id_", orderRecord.getTenantId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        result.put("financeChops",tenantConfig.getCorporateFinanceChops()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        result.put("financeChops", tenantConfig.getCorporateFinanceChops()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         log.info("checkTenantOrder  getOrderState>>>>> {}", JSON.toJSONString(orderRecord)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         getOrderState(orderRecord, result); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -147,6 +143,7 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void checkTenantOrder() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         RBucket<Object> bucket = redissonClient.getBucket("tenant_check_order"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!bucket.trySet(1, 3L, TimeUnit.SECONDS)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -176,6 +173,7 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         bucket.delete(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //开通成功 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private void open(TenantOrderRecord record) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //机构产品信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         TenantProductInfo productInfo = tenantProductInfoService.getOne(new WrapperUtil<TenantProductInfo>() 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -191,6 +189,7 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         tenantProductInfoService.updateById(productInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //续费成功 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private void renew(TenantOrderRecord record) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //机构产品信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         TenantProductInfo productInfo = tenantProductInfoService.getOne(new WrapperUtil<TenantProductInfo>() 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -200,39 +199,68 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Integer val = bucket.get(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //修改产品信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         tenantInfoService.renewSuccess(val, productInfo, record.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //删除订单数据及订单缓存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private boolean activeCloudTeacher(TenantOrderRecord record) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //激活团练宝成功 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void activeCloudTeacher(TenantOrderRecord record) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (record.getId() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new BizException("订单未找到"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         record.setPayDate(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         record.setPayTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		updateById(record); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// cloudTeacherOrderDao.updateOrderStatusOK(record.getId() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderDao.findByPlatformOrderId(record.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Date startTime = DateUtil.trunc(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Date endTime = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		for (CloudTeacherOrder cto : cloudTeacherOrders) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			endTime = calcCloudTeacherOrderTime(cto, startTime, endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			cto.setStartTime(startTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			cto.setEndTime(endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			cto.setStatus(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			cloudTeacherOrderDao.update(cto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			studentService.updateMemberRank(cto.getStudentId(), cto.getType(), cto.getTime(), 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        updateById(record); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderDao.findByPlatformOrderId(record.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Date startTime = DateUtil.trunc(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Date endTime = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (CloudTeacherOrder cto : cloudTeacherOrders) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            endTime = cloudTeacherOrderService.calcCloudTeacherOrderTime(cto, startTime, endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cto.setStartTime(startTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cto.setEndTime(endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cto.setStatus(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cloudTeacherOrderDao.update(cto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            studentService.updateMemberRank(cto.getStudentId(), cto.getType(), cto.getTime(), 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //发信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cloudTeacherOrderService.sendSms(record); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //充值成功 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void rechargeSuccess(TenantOrderRecord record) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 更新 tenantAssetsInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log.info("checkRechargeCheck  updateAmount>>>>>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int ret = assetsInfoService.updateAmount(record.getTenantId(), record.getExpectAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (ret != 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException("更新支付失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        record.setPayDate(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        record.setPayTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        baseMapper.updateById(record); // 添加支付时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 取余额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TenantAssetsInfo assets = assetsInfoService.getOne(new WrapperUtil<TenantAssetsInfo>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .hasEq("tenant_id_", record.getTenantId()).queryWrapper()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TenantInfo tenantInfo = tenantInfoService.getOne(new WrapperUtil<TenantInfo>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .hasEq("id_", record.getTenantId()).queryWrapper()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Integer receiveUserId = tenantInfo.getUserId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String email = tenantInfo.getEmail(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		List<Mapper> orderUsers = cloudTeacherOrderDao.findUserNameByOrderId(record.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Map<Integer, String> userPhones = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		for (Mapper mapper : orderUsers) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			userPhones.put((Integer) mapper.getKey(), mapper.getValue().toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.CLOUD_TEACHER_ORDER_SUCCESS, userPhones, null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				0, null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Object[] objs = {tenantInfo.getName(), record.getActualAmount(), assets.getBalance()}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 发邮件, 发短信 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, String> sendPar = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sendPar.put(receiveUserId, email); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log.info("platformSendToAll 充值成功发送邮件  >>> receiveUserId {} email {} objs {} sendPar {}", receiveUserId, email, objs, sendPar); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sysMessageService.batchSendMessage(-1, MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_TENANT_RECHARGE, sendPar, null, 0, null, "SYSTEM", objs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, String> sendPar2 = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sendPar2.put(receiveUserId, email); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        log.info("platformSendToAll 充值成功发送邮件分发器  >>> receiveUserId {} email {} objs {} sendPar {}", receiveUserId, email, objs, sendPar2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sysMessageService.batchSendMessage(-1, MessageSenderPluginContext.MessageSender.EMAIL, MessageTypeEnum.EMAIL_TENANT_RECHARGE, sendPar2, null, 0, null, "SYSTEM", objs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //主动去第三方查询订单状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private void checkTransOrderState(TenantOrderRecord orderRecord) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (StringUtils.equals(orderRecord.getPaymentChannel(), PaymentChannelEnum.ADAPAY.getCode())) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -259,7 +287,7 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                log.info("    >>>>> checkTenantOrder  payment >>>>> {}", payment); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                log.info("    >>>>> checkTenantOrder orderType {} payment >>>>> {}", orderRecord.getOrderType(), payment); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 log.info("    >>>>> checkTenantOrder  orderRecord >>>>> {}", JSON.toJSONString(orderRecord)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 log.error("    >>>>> checkTenantOrder  payment error>>>>> {}", JSON.toJSONString(orderRecord)); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -275,9 +303,12 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         switch (orderRecord.getOrderState()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             case 1: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 tenantOrderSuccess(orderRecord, detail); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                checkOrder.get(orderRecord.getOrderType()).accept(orderRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Consumer<TenantOrderRecord> consumer = checkOrder.get(orderRecord.getOrderType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (Objects.isNull(consumer)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    code = DealStatusEnum.ING.getCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                consumer.accept(orderRecord); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 code = DealStatusEnum.SUCCESS.getCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 LocalDateTime now = LocalDateTime.now(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 orderRecord.setPayDate(now.toLocalDate().toDate()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -311,74 +342,6 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         detail.put("num", productInfo.getExpiryCount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void rechargeSuccess(TenantOrderRecord record) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 更新 tenantAssetsInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        log.info("checkRechargeCheck  updateAmount>>>>>"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        int ret = assetsInfoService.updateAmount(record.getTenantId(), record.getExpectAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (ret != 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            throw new BizException("更新支付失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        record.setPayDate(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        record.setPayTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        baseMapper.updateById(record); // 添加支付时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 取余额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        TenantAssetsInfo assets = assetsInfoService.getOne(new WrapperUtil<TenantAssetsInfo>().hasEq("tenant_id_", record.getTenantId()).queryWrapper()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        TenantInfo tenantInfo = tenantInfoService.getOne(new WrapperUtil<TenantInfo>().hasEq("id_", record.getTenantId()).queryWrapper()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Integer receiveUserId = tenantInfo.getUserId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String email = tenantInfo.getEmail(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Object[] objs = {tenantInfo.getName(), record.getActualAmount(), assets.getBalance()}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 发邮件, 发短信 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<Integer, String> sendPar = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        sendPar.put(receiveUserId, email); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        log.info("platformSendToAll 充值成功发送邮件  >>> receiveUserId {} email {} objs {} sendPar {}", receiveUserId, email, objs, sendPar); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        sysMessageService.batchSendMessage(-1, MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_TENANT_RECHARGE, sendPar, null, 0, null, "SYSTEM", objs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Map<Integer, String> sendPar2 = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        sendPar2.put(receiveUserId, email); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        log.info("platformSendToAll 充值成功发送邮件分发器  >>> receiveUserId {} email {} objs {} sendPar {}", receiveUserId, email, objs, sendPar2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        sysMessageService.batchSendMessage(-1, MessageSenderPluginContext.MessageSender.EMAIL, MessageTypeEnum.EMAIL_TENANT_RECHARGE, sendPar2, null, 0, null, "SYSTEM", objs); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private Date calcCloudTeacherOrderTime(CloudTeacherOrder cloudTeacherOrder, Date startTime, Date endTime) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (cloudTeacherOrder.getType() == DAY) { // 日 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            endTime = DateUtil.addDays(startTime, cloudTeacherOrder.getTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (cloudTeacherOrder.getType() == MONTH) { // 月 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            endTime = DateUtil.addMonths(startTime, cloudTeacherOrder.getTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (cloudTeacherOrder.getType() == QUARTERLY) { // 季 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            endTime = DateUtil.addMonths(startTime, cloudTeacherOrder.getTime() * 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (cloudTeacherOrder.getType() == YEAR_HALF) { // 半年 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            endTime = DateUtil.addMonths(startTime, cloudTeacherOrder.getTime() * 6); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (cloudTeacherOrder.getType() == YEAR) { // 年 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            endTime = DateUtil.addYears(startTime, cloudTeacherOrder.getTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return endTime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public Boolean rechargeCheck(TenantOrderRecord record, int i) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        RBucket<Object> bucket = redissonClient.getBucket("tenant_check_recharge"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!bucket.trySet(1, 3L, TimeUnit.SECONDS)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        log.info("    机构充值 {} rechargeCheck>>>>>", i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        checkTransOrderState(record); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (record.getOrderState() == 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            baseMapper.updateById(record); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                log.info("    机构充值 {} rechargeSuccess>>>>>", i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                this.rechargeSuccess(record); // 充值成功 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        bucket.delete(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |