|
|
@@ -14,6 +14,7 @@ import com.alipay.api.response.AlipayTradeQueryResponse;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.cyksj.common.constant.Constant;
|
|
|
+import com.cyksj.common.constant.PointsRecordConst;
|
|
|
import com.cyksj.common.exception.BusinessRuntimeException;
|
|
|
import com.cyksj.common.snowflake.Sequence;
|
|
|
import com.cyksj.common.util.Codec;
|
|
|
@@ -41,6 +42,7 @@ import com.cyksj.model.request.VipOrderDonPayReq;
|
|
|
import com.cyksj.redis.RedisService;
|
|
|
import com.cyksj.service.chatgpt.ChatGptAccountService;
|
|
|
import com.cyksj.service.claude.ClaudeService;
|
|
|
+import com.cyksj.service.coin.UserGalaxyCoinService;
|
|
|
import com.cyksj.service.order.VipOrderDonService;
|
|
|
import com.cyksj.service.pay.AliPayCommonService;
|
|
|
import com.cyksj.service.relation.GroupRelationFrontService;
|
|
|
@@ -48,6 +50,7 @@ import com.cyksj.service.sys.SysConfigService;
|
|
|
import com.cyksj.service.user.UserBenefitsService;
|
|
|
import com.cyksj.service.user.UserBindRelationService;
|
|
|
import com.cyksj.service.vip.VipFrontService;
|
|
|
+import com.cyksj.task.JobManager;
|
|
|
import com.ejlchina.searcher.BeanSearcher;
|
|
|
import com.ejlchina.searcher.param.Operator;
|
|
|
import com.ejlchina.searcher.util.MapUtils;
|
|
|
@@ -141,6 +144,12 @@ public class VipOrderDonServiceImpl extends ServiceImpl<VipOrderDonMapper, VipOr
|
|
|
|
|
|
private final OrderDonGalaxyCoinRecordMapper orderDonGalaxyCoinRecordMapper;
|
|
|
|
|
|
+ private final UserGalaxyCoinService userGalaxyCoinService;
|
|
|
+
|
|
|
+ private final JobManager jobManager;
|
|
|
+
|
|
|
+ private static final Long EXPIRY_TIME = 1000 * 60 * 5L;
|
|
|
+
|
|
|
@Override
|
|
|
public VipOrderDon submit(VipOrderDonPayReq payRequest) {
|
|
|
Long userId = payRequest.getUserId();
|
|
|
@@ -187,6 +196,12 @@ public class VipOrderDonServiceImpl extends ServiceImpl<VipOrderDonMapper, VipOr
|
|
|
orderDon = getById(orderId);
|
|
|
unifiedHandlerOrderNotify(orderDon);
|
|
|
}
|
|
|
+ VipOrderDon finalOrderDon = orderDon;
|
|
|
+ if (finalOrderDon.getStatus() == VipOrderDon.Status.noPayment) {
|
|
|
+ jobManager.addJob(EXPIRY_TIME, () -> {
|
|
|
+ closeOrderDon(finalOrderDon.getUserId(), orderId);
|
|
|
+ });
|
|
|
+ }
|
|
|
return orderDon;
|
|
|
}
|
|
|
|
|
|
@@ -310,6 +325,17 @@ public class VipOrderDonServiceImpl extends ServiceImpl<VipOrderDonMapper, VipOr
|
|
|
log.info("关闭订单 orderId:{}", orderId);
|
|
|
orderDon.setStatus(VipOrderDon.Status.close);
|
|
|
updateById(orderDon);
|
|
|
+ //返还余额
|
|
|
+ if (orderDon.getBalance().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ userBenefitsService.addUserBalance(orderDon.getUserId(), orderDon.getBalance(), null, null, null, UserBalanceSourceRecord.Source.vip_order_close.getDesc(), true);
|
|
|
+ }
|
|
|
+ //返回银河币
|
|
|
+ UserGalaxyCoinRecord userGalaxyCoinRecord = userGalaxyCoinRecordMapper.selectOne(Wrappers.lambdaQuery(UserGalaxyCoinRecord.class)
|
|
|
+ .eq(UserGalaxyCoinRecord::getOrderId, orderDon.getId())
|
|
|
+ .last("limit 1"));
|
|
|
+ if (userGalaxyCoinRecord != null) {
|
|
|
+ userGalaxyCoinService.sendGalaxyCoinRecord(orderDon.getUserId(), userGalaxyCoinRecord.getGalaxyCoin().intValue(), PointsRecordConst.ORDER_CLOSE, false);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|