|
@@ -22,6 +22,7 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
|
import com.ym.mec.thirdparty.yqpay.Msg;
|
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
|
+import jodd.util.StringUtil;
|
|
|
import org.joda.time.LocalDateTime;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -31,6 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.ym.mec.biz.dal.enums.PeriodEnum.*;
|
|
|
|
|
@@ -156,7 +158,11 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
|
|
|
if (cloudTeacherStudents.size() == 0) {
|
|
|
throw new Exception("至少选择一条记录");
|
|
|
}
|
|
|
-
|
|
|
+ List<Integer> ids = cloudTeacherStudents.stream().map(CloudTeacherStudent::getCloudTeacherOrderId).collect(
|
|
|
+ Collectors.toList());
|
|
|
+ if (cloudTeacherOrderDao.checkOrdered(StringUtil.join(ids, ",")) >= 0) {
|
|
|
+ throw new Exception("学生已经支付");
|
|
|
+ }
|
|
|
Integer tenantId = null;
|
|
|
for (CloudTeacherStudent cts: cloudTeacherStudents) {
|
|
|
if (cts.getAmount() == null) {
|
|
@@ -203,7 +209,10 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
|
|
|
} else { // 消费大于 0 元 已支付 直接激活
|
|
|
orderState = 1;
|
|
|
}
|
|
|
- createOrderRecord(tenantId, payAmount, orderNo, tenantEnum, orderState, cloudTeacherStudents);
|
|
|
+ TenantOrderRecord record = createOrderRecord(tenantId, payAmount, orderNo, tenantEnum, orderState, cloudTeacherStudents);
|
|
|
+ if (orderState == 1) { // 成功手直接成功
|
|
|
+ this.paySuccess(record);
|
|
|
+ }
|
|
|
log.info("tenant pay >>>>> " + JSON.toJSONString(payMap));
|
|
|
return payMap;
|
|
|
}
|
|
@@ -225,17 +234,7 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
|
|
|
//tradeState 88就是正确的 其他错误的
|
|
|
// DealStatusEnum
|
|
|
// notifyMap.put("totalMoney", notifyMap.get("payAmount"));
|
|
|
- log.info("tenant orderNotify update order status start" + record.getId().toString());
|
|
|
-
|
|
|
- if (cloudTeacherOrderDao.updateOrderStatusOK(record.getId()) <= 0) {
|
|
|
- throw new Exception("更新订单状态失败");
|
|
|
- }
|
|
|
- List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderDao.findByPlatformOrderId(record.getId());
|
|
|
- for (CloudTeacherOrder cto : cloudTeacherOrders) {
|
|
|
- studentService.updateMembershipEndTime(cto.getStudentId(), cto.getEndTime());
|
|
|
- }
|
|
|
-
|
|
|
- log.info("tenant orderNotify update order status end");
|
|
|
+ this.paySuccess(record);
|
|
|
record.setOrderState(1);
|
|
|
msg.setCode("000000");
|
|
|
msg.setMsg("success");
|
|
@@ -250,12 +249,21 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
|
|
|
return msg;
|
|
|
}
|
|
|
|
|
|
- public Boolean payCheck(String orderNo) {
|
|
|
- TenantOrderRecord record = tenantOrderRecordService.getOne(new QueryWrapper<TenantOrderRecord>().eq("order_no_", orderNo));
|
|
|
- return record.getOrderState() == 1;
|
|
|
+ private void paySuccess(TenantOrderRecord record) throws Exception {
|
|
|
+ log.info("tenant orderNotify update order status start" + record.getId().toString());
|
|
|
+
|
|
|
+ if (cloudTeacherOrderDao.updateOrderStatusOK(record.getId()) <= 0) {
|
|
|
+ throw new Exception("更新订单状态失败");
|
|
|
+ }
|
|
|
+ List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderDao.findByPlatformOrderId(record.getId());
|
|
|
+ for (CloudTeacherOrder cto : cloudTeacherOrders) {
|
|
|
+ studentService.updateMembershipEndTime(cto.getStudentId(), cto.getEndTime());
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("tenant orderNotify update order status end");
|
|
|
}
|
|
|
|
|
|
- private void createOrderRecord(Integer tenantId, BigDecimal payAmount, String orderNo, TenantOrderRecordEnum tenantEnum, Integer orderState, List<CloudTeacherStudent> cloudTeacherStudents) {
|
|
|
+ private TenantOrderRecord createOrderRecord(Integer tenantId, BigDecimal payAmount, String orderNo, TenantOrderRecordEnum tenantEnum, Integer orderState, List<CloudTeacherStudent> cloudTeacherStudents) throws Exception {
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
TenantOrderRecord record = new TenantOrderRecord();
|
|
|
record.setTenantId(tenantId);
|
|
@@ -270,8 +278,16 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea
|
|
|
record.setCreatedTime(now.toDate());
|
|
|
tenantOrderRecordService.save(record);
|
|
|
for (CloudTeacherStudent cts : cloudTeacherStudents) {
|
|
|
- cloudTeacherOrderDao.updateOrderId(cts.getCloudTeacherOrderId(), cts.getAmount(), record.getId());
|
|
|
+ if (cloudTeacherOrderDao.updateOrderId(cts.getCloudTeacherOrderId(), cts.getAmount(), record.getId()) <= 0) {
|
|
|
+ throw new Exception("更新订单失败");
|
|
|
+ }
|
|
|
}
|
|
|
+ return record;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Boolean payCheck(String orderNo) {
|
|
|
+ TenantOrderRecord record = tenantOrderRecordService.getOne(new QueryWrapper<TenantOrderRecord>().eq("order_no_", orderNo));
|
|
|
+ return record.getOrderState() == 1;
|
|
|
}
|
|
|
|
|
|
@Override
|