|
@@ -1,10 +1,18 @@
|
|
|
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;
|
|
@@ -12,12 +20,15 @@ import com.ym.mec.biz.dal.enums.MessageTypeEnum;
|
|
|
import com.ym.mec.biz.dal.enums.PaymentChannelEnum;
|
|
|
import com.ym.mec.biz.dal.enums.TenantOrderRecordEnum;
|
|
|
import com.ym.mec.biz.service.*;
|
|
|
+import com.ym.mec.common.exception.BizException;
|
|
|
import com.ym.mec.common.page.PageInfo;
|
|
|
import com.ym.mec.common.page.PageUtil;
|
|
|
import com.ym.mec.common.page.WrapperUtil;
|
|
|
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;
|
|
@@ -58,6 +69,10 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
|
|
|
private TenantConfigService tenantConfigService;
|
|
|
@Autowired
|
|
|
private SysMessageService sysMessageService;
|
|
|
+ @Autowired
|
|
|
+ private CloudTeacherOrderDao cloudTeacherOrderDao;
|
|
|
+ @Autowired
|
|
|
+ private StudentService studentService;
|
|
|
//订单不存在
|
|
|
private static final String PAYMENT_ID_NOT_EXISTS = "payment_id_not_exists";
|
|
|
|
|
@@ -68,6 +83,10 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
|
|
|
checkOrder.put(TenantOrderRecordEnum.TENANT_OPEN.getCode(), this::open);
|
|
|
//续费
|
|
|
checkOrder.put(TenantOrderRecordEnum.TENANT_RENEW.getCode(), this::renew);
|
|
|
+ //激活团练宝
|
|
|
+ checkOrder.put(TenantOrderRecordEnum.CLOUD_TEACHER.getCode(), this::activeCloudTeacher);
|
|
|
+ //充值
|
|
|
+ checkOrder.put(TenantOrderRecordEnum.TENANT_RECHARGE.getCode(), this::rechargeSuccess);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -184,6 +203,36 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
|
|
|
//删除订单数据及订单缓存
|
|
|
}
|
|
|
|
|
|
+ private boolean 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ 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);
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
//主动去第三方查询订单状态
|
|
|
private void checkTransOrderState(TenantOrderRecord orderRecord) {
|
|
|
if (StringUtils.equals(orderRecord.getPaymentChannel(), PaymentChannelEnum.ADAPAY.getCode())) {
|
|
@@ -262,12 +311,12 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
|
|
|
detail.put("num", productInfo.getExpiryCount());
|
|
|
}
|
|
|
|
|
|
- private void rechargeSuccess(TenantOrderRecord record) throws Exception {
|
|
|
+ private void rechargeSuccess(TenantOrderRecord record) {
|
|
|
// 更新 tenantAssetsInfo
|
|
|
log.info("checkRechargeCheck updateAmount>>>>>");
|
|
|
int ret = assetsInfoService.updateAmount(record.getTenantId(), record.getExpectAmount());
|
|
|
if (ret != 1) {
|
|
|
- throw new Exception("更新支付失败");
|
|
|
+ throw new BizException("更新支付失败");
|
|
|
}
|
|
|
record.setPayDate(new Date());
|
|
|
record.setPayTime(new Date());
|
|
@@ -294,6 +343,21 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
|
|
|
|
|
|
}
|
|
|
|
|
|
+ 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");
|