|  | @@ -1,18 +1,11 @@
 | 
											
												
													
														|  |  package com.ym.mec.biz.service.impl;
 |  |  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.alibaba.fastjson.JSON;
 | 
											
												
													
														|  |  import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 |  |  import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
											
												
													
														|  |  import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 |  |  import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
											
												
													
														|  |  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 |  |  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
											
												
													
														|  |  import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
 |  |  import com.ym.mec.biz.dal.dao.CloudTeacherOrderDao;
 | 
											
												
													
														|  |  import com.ym.mec.biz.dal.dao.TenantOrderRecordDao;
 |  |  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.dto.TenantOrderRecordDto;
 | 
											
												
													
														|  |  import com.ym.mec.biz.dal.entity.*;
 |  |  import com.ym.mec.biz.dal.entity.*;
 | 
											
												
													
														|  |  import com.ym.mec.biz.dal.enums.DealStatusEnum;
 |  |  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.adapay.Payment;
 | 
											
												
													
														|  |  import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 |  |  import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 | 
											
												
													
														|  |  import com.ym.mec.util.date.DateUtil;
 |  |  import com.ym.mec.util.date.DateUtil;
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |  import org.apache.commons.collections.CollectionUtils;
 |  |  import org.apache.commons.collections.CollectionUtils;
 | 
											
												
													
														|  |  import org.apache.commons.lang3.StringUtils;
 |  |  import org.apache.commons.lang3.StringUtils;
 | 
											
												
													
														|  |  import org.joda.time.LocalDateTime;
 |  |  import org.joda.time.LocalDateTime;
 | 
											
										
											
												
													
														|  | @@ -38,6 +30,7 @@ import org.slf4j.Logger;
 | 
											
												
													
														|  |  import org.slf4j.LoggerFactory;
 |  |  import org.slf4j.LoggerFactory;
 | 
											
												
													
														|  |  import org.springframework.beans.factory.annotation.Autowired;
 |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
											
												
													
														|  |  import org.springframework.stereotype.Service;
 |  |  import org.springframework.stereotype.Service;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.transaction.annotation.Transactional;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  import java.util.*;
 |  |  import java.util.*;
 | 
											
												
													
														|  |  import java.util.concurrent.TimeUnit;
 |  |  import java.util.concurrent.TimeUnit;
 | 
											
										
											
												
													
														|  | @@ -72,6 +65,8 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
 | 
											
												
													
														|  |      @Autowired
 |  |      @Autowired
 | 
											
												
													
														|  |      private CloudTeacherOrderDao cloudTeacherOrderDao;
 |  |      private CloudTeacherOrderDao cloudTeacherOrderDao;
 | 
											
												
													
														|  |      @Autowired
 |  |      @Autowired
 | 
											
												
													
														|  | 
 |  | +    private CloudTeacherOrderService cloudTeacherOrderService;
 | 
											
												
													
														|  | 
 |  | +    @Autowired
 | 
											
												
													
														|  |      private StudentService studentService;
 |  |      private StudentService studentService;
 | 
											
												
													
														|  |      //订单不存在
 |  |      //订单不存在
 | 
											
												
													
														|  |      private static final String PAYMENT_ID_NOT_EXISTS = "payment_id_not_exists";
 |  |      private static final String PAYMENT_ID_NOT_EXISTS = "payment_id_not_exists";
 | 
											
										
											
												
													
														|  | @@ -108,6 +103,7 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
 | 
											
												
													
														|  |       * @param orderNo 我方订单编号
 |  |       * @param orderNo 我方订单编号
 | 
											
												
													
														|  |       */
 |  |       */
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  | 
 |  | +    @Transactional(rollbackFor = Exception.class)
 | 
											
												
													
														|  |      public Map<String, Object> checkTenantOrder(String orderNo) {
 |  |      public Map<String, Object> checkTenantOrder(String orderNo) {
 | 
											
												
													
														|  |          TenantOrderRecord orderRecord = this.getOne(new WrapperUtil<TenantOrderRecord>()
 |  |          TenantOrderRecord orderRecord = this.getOne(new WrapperUtil<TenantOrderRecord>()
 | 
											
												
													
														|  |                  .hasEq("order_no_", orderNo).queryWrapper());
 |  |                  .hasEq("order_no_", orderNo).queryWrapper());
 | 
											
										
											
												
													
														|  | @@ -115,6 +111,7 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  | 
 |  | +    @Transactional(rollbackFor = Exception.class)
 | 
											
												
													
														|  |      public Map<String, Object> checkTenantOrder(TenantOrderRecord orderRecord) {
 |  |      public Map<String, Object> checkTenantOrder(TenantOrderRecord orderRecord) {
 | 
											
												
													
														|  |          return getTenantOrderState(orderRecord);
 |  |          return getTenantOrderState(orderRecord);
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
										
											
												
													
														|  | @@ -122,7 +119,6 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
 | 
											
												
													
														|  |      private Map<String, Object> getTenantOrderState(TenantOrderRecord orderRecord) {
 |  |      private Map<String, Object> getTenantOrderState(TenantOrderRecord orderRecord) {
 | 
											
												
													
														|  |          //主动去第三方查询订单状态
 |  |          //主动去第三方查询订单状态
 | 
											
												
													
														|  |          checkTransOrderState(orderRecord);
 |  |          checkTransOrderState(orderRecord);
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |          //返回
 |  |          //返回
 | 
											
												
													
														|  |          Map<String, Object> result = new HashMap<>();
 |  |          Map<String, Object> result = new HashMap<>();
 | 
											
												
													
														|  |          result.put("groupType", orderRecord.getOrderType());
 |  |          result.put("groupType", orderRecord.getOrderType());
 | 
											
										
											
												
													
														|  | @@ -138,7 +134,7 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
 | 
											
												
													
														|  |          //查询该机构的财务公章
 |  |          //查询该机构的财务公章
 | 
											
												
													
														|  |          TenantConfig tenantConfig = tenantConfigService.getOne(new QueryWrapper<TenantConfig>()
 |  |          TenantConfig tenantConfig = tenantConfigService.getOne(new QueryWrapper<TenantConfig>()
 | 
											
												
													
														|  |                  .eq("tenant_id_", orderRecord.getTenantId()));
 |  |                  .eq("tenant_id_", orderRecord.getTenantId()));
 | 
											
												
													
														|  | -        result.put("financeChops",tenantConfig.getCorporateFinanceChops());
 |  | 
 | 
											
												
													
														|  | 
 |  | +        result.put("financeChops", tenantConfig.getCorporateFinanceChops());
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          log.info("checkTenantOrder  getOrderState>>>>> {}", JSON.toJSONString(orderRecord));
 |  |          log.info("checkTenantOrder  getOrderState>>>>> {}", JSON.toJSONString(orderRecord));
 | 
											
												
													
														|  |          getOrderState(orderRecord, result);
 |  |          getOrderState(orderRecord, result);
 | 
											
										
											
												
													
														|  | @@ -147,6 +143,7 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  | 
 |  | +    @Transactional(rollbackFor = Exception.class)
 | 
											
												
													
														|  |      public void checkTenantOrder() {
 |  |      public void checkTenantOrder() {
 | 
											
												
													
														|  |          RBucket<Object> bucket = redissonClient.getBucket("tenant_check_order");
 |  |          RBucket<Object> bucket = redissonClient.getBucket("tenant_check_order");
 | 
											
												
													
														|  |          if (!bucket.trySet(1, 3L, TimeUnit.SECONDS)) {
 |  |          if (!bucket.trySet(1, 3L, TimeUnit.SECONDS)) {
 | 
											
										
											
												
													
														|  | @@ -176,6 +173,7 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
 | 
											
												
													
														|  |          bucket.delete();
 |  |          bucket.delete();
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    //开通成功
 | 
											
												
													
														|  |      private void open(TenantOrderRecord record) {
 |  |      private void open(TenantOrderRecord record) {
 | 
											
												
													
														|  |          //机构产品信息
 |  |          //机构产品信息
 | 
											
												
													
														|  |          TenantProductInfo productInfo = tenantProductInfoService.getOne(new WrapperUtil<TenantProductInfo>()
 |  |          TenantProductInfo productInfo = tenantProductInfoService.getOne(new WrapperUtil<TenantProductInfo>()
 | 
											
										
											
												
													
														|  | @@ -191,6 +189,7 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
 | 
											
												
													
														|  |          tenantProductInfoService.updateById(productInfo);
 |  |          tenantProductInfoService.updateById(productInfo);
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    //续费成功
 | 
											
												
													
														|  |      private void renew(TenantOrderRecord record) {
 |  |      private void renew(TenantOrderRecord record) {
 | 
											
												
													
														|  |          //机构产品信息
 |  |          //机构产品信息
 | 
											
												
													
														|  |          TenantProductInfo productInfo = tenantProductInfoService.getOne(new WrapperUtil<TenantProductInfo>()
 |  |          TenantProductInfo productInfo = tenantProductInfoService.getOne(new WrapperUtil<TenantProductInfo>()
 | 
											
										
											
												
													
														|  | @@ -200,39 +199,68 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
 | 
											
												
													
														|  |          Integer val = bucket.get();
 |  |          Integer val = bucket.get();
 | 
											
												
													
														|  |          //修改产品信息
 |  |          //修改产品信息
 | 
											
												
													
														|  |          tenantInfoService.renewSuccess(val, productInfo, record.getActualAmount());
 |  |          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) {
 |  |          if (record.getId() == null) {
 | 
											
												
													
														|  |              throw new BizException("订单未找到");
 |  |              throw new BizException("订单未找到");
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          record.setPayDate(new Date());
 |  |          record.setPayDate(new Date());
 | 
											
												
													
														|  |          record.setPayTime(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) {
 |  |      private void checkTransOrderState(TenantOrderRecord orderRecord) {
 | 
											
												
													
														|  |          if (StringUtils.equals(orderRecord.getPaymentChannel(), PaymentChannelEnum.ADAPAY.getCode())) {
 |  |          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));
 |  |                  log.info("    >>>>> checkTenantOrder  orderRecord >>>>> {}", JSON.toJSONString(orderRecord));
 | 
											
												
													
														|  |              } catch (Exception e) {
 |  |              } catch (Exception e) {
 | 
											
												
													
														|  |                  log.error("    >>>>> checkTenantOrder  payment error>>>>> {}", JSON.toJSONString(orderRecord));
 |  |                  log.error("    >>>>> checkTenantOrder  payment error>>>>> {}", JSON.toJSONString(orderRecord));
 | 
											
										
											
												
													
														|  | @@ -275,9 +303,12 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
 | 
											
												
													
														|  |          switch (orderRecord.getOrderState()) {
 |  |          switch (orderRecord.getOrderState()) {
 | 
											
												
													
														|  |              case 1:
 |  |              case 1:
 | 
											
												
													
														|  |                  tenantOrderSuccess(orderRecord, detail);
 |  |                  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();
 |  |                  code = DealStatusEnum.SUCCESS.getCode();
 | 
											
												
													
														|  |                  LocalDateTime now = LocalDateTime.now();
 |  |                  LocalDateTime now = LocalDateTime.now();
 | 
											
												
													
														|  |                  orderRecord.setPayDate(now.toLocalDate().toDate());
 |  |                  orderRecord.setPayDate(now.toLocalDate().toDate());
 | 
											
										
											
												
													
														|  | @@ -311,74 +342,6 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
 | 
											
												
													
														|  |          detail.put("num", productInfo.getExpiryCount());
 |  |          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;
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  |  
 |  |  
 |