|
|
@@ -1,5 +1,6 @@
|
|
|
package com.cyksj.service.mange.impl;
|
|
|
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
@@ -63,6 +64,8 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
|
|
|
|
|
|
private final ClaudeCodeService claudeCodeService;
|
|
|
|
|
|
+ private final OrderDonMapper orderDonMapper;
|
|
|
+
|
|
|
/**
|
|
|
* 删除镜像User
|
|
|
*/
|
|
|
@@ -136,6 +139,12 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
|
|
|
List<Long> userIdList = userBindRelationService.getRelationUserIdList(orderDon.getUserId(), null);
|
|
|
//claude code user
|
|
|
if (goodsId == Constant.CLAUDE_CODE_GOODS_ID) {
|
|
|
+ ClaudeCodeUserRenewExpiryRecord renewExpiryRecord = claudeCodeUserRenewExpiryRecordMapper.selectOne(Wrappers.lambdaQuery(ClaudeCodeUserRenewExpiryRecord.class).eq(ClaudeCodeUserRenewExpiryRecord::getOrderId, orderId).eq(ClaudeCodeUserRenewExpiryRecord::getIsValid, Boolean.FALSE).last("limit 1"));
|
|
|
+ if (renewExpiryRecord != null) {
|
|
|
+ //将续费有效置为过期
|
|
|
+ renewExpiryRecord.setIsValid(true);
|
|
|
+ claudeCodeUserRenewExpiryRecordMapper.updateById(renewExpiryRecord);
|
|
|
+ }
|
|
|
ClaudeCodeUser claudeCodeUser = claudeCodeUserMapper.selectOne(Wrappers.lambdaQuery(ClaudeCodeUser.class)
|
|
|
.eq(ClaudeCodeUser::getRelationId, orderDon.getRelationId())
|
|
|
.last("limit 1"));
|
|
|
@@ -149,29 +158,41 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
|
|
|
GroupsRelation relation = groupsRelationMapper.selectById(orderDon.getRelationId());
|
|
|
GroupsTrips groupsTrips = groupsMapper.selectById(relation.getGroupsId());
|
|
|
GoodsDonSku finalSku = skuMapper.selectById(groupsTrips.getSkuId());
|
|
|
- ClaudeCodeUserRenewExpiryRecord renewExpiryRecord = claudeCodeUserRenewExpiryRecordMapper.selectOne(Wrappers.lambdaQuery(ClaudeCodeUserRenewExpiryRecord.class).eq(ClaudeCodeUserRenewExpiryRecord::getOrderId, orderId).eq(ClaudeCodeUserRenewExpiryRecord::getIsValid, Boolean.FALSE).last("limit 1"));
|
|
|
Date renewExpiryTime = null;
|
|
|
Integer oriCodePoints = claudeCodeUser.getCodePoints();
|
|
|
claudeCodeUser.setOriCodePoints(oriCodePoints);
|
|
|
+ //当前续费订单id
|
|
|
+ Long presentUserCodePackageOrderId = claudeCodeUser.getRenewOrderId();
|
|
|
claudeCodeUser.setRenewSkuId(null);
|
|
|
claudeCodeUser.setRenewOrderId(null);
|
|
|
if (renewExpiryRecord != null) {
|
|
|
+ //当前续费
|
|
|
+ OrderDon presentRenewOrderDon = orderDonMapper.selectById(presentUserCodePackageOrderId);
|
|
|
//是否存在其他续费升级
|
|
|
ClaudeCodeUserRenewExpiryRecord otherRenewRecord = claudeCodeUserRenewExpiryRecordMapper.getOtherRenewSku(orderDon.getId(), relation.getId(), userIdList);
|
|
|
GoodsDonSku otherRenewSku = null;
|
|
|
if (otherRenewRecord != null) {
|
|
|
otherRenewSku = skuMapper.selectById(otherRenewRecord.getRenewSkuId());
|
|
|
- renewExpiryTime = otherRenewRecord.getExpiryTime();
|
|
|
}
|
|
|
//续费升级
|
|
|
if (otherRenewSku != null) {
|
|
|
finalSku = otherRenewSku;
|
|
|
+ if (otherRenewSku.getDays() != null && otherRenewSku.getDays() > 0) {
|
|
|
+ renewExpiryTime = DateUtil.offsetDay(DateTime.now(), otherRenewSku.getDays());
|
|
|
+ } else {
|
|
|
+ renewExpiryTime = DateUtil.offsetMonth(DateTime.now(), otherRenewSku.getMonths());
|
|
|
+ }
|
|
|
+ //相差多少天
|
|
|
+ Long betDay = DateUtil.betweenDay(otherRenewRecord.getCreatedTime(), presentRenewOrderDon.getCreatedTime(), false);
|
|
|
+ renewExpiryTime = DateUtil.offsetDay(renewExpiryTime, -betDay.intValue());
|
|
|
+
|
|
|
claudeCodeUser.setRenewOrderId(otherRenewRecord.getOrderId());
|
|
|
claudeCodeUser.setRenewSkuId(otherRenewRecord.getRenewSkuId());
|
|
|
}
|
|
|
- //将续费有效置为过期
|
|
|
- renewExpiryRecord.setIsValid(true);
|
|
|
- claudeCodeUserRenewExpiryRecordMapper.updateById(renewExpiryRecord);
|
|
|
+ }
|
|
|
+ //非当前套餐续费订单id 不修改claudeCode
|
|
|
+ if (!ObjectUtil.equal(presentUserCodePackageOrderId, orderId)) {
|
|
|
+ return;
|
|
|
}
|
|
|
//还原镜像user
|
|
|
claudeCodeUser.setCodePoints(finalSku.getCodePoints());
|
|
|
@@ -192,6 +213,9 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
|
|
|
if (orderDonRenewRecord == null) {
|
|
|
return;
|
|
|
}
|
|
|
+ //将续费有效置为过期
|
|
|
+ orderDonRenewRecord.setIsValid(true);
|
|
|
+ orderDonRenewRecordMapper.updateById(orderDonRenewRecord);
|
|
|
//Claude pro
|
|
|
if (orderDon.getGoodsId() == 75) {
|
|
|
ClaudeUser claudeUser = claudeUserMapper.selectOne(Wrappers.lambdaQuery(ClaudeUser.class)
|
|
|
@@ -214,6 +238,8 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
|
|
|
otherRenewSku = skuMapper.selectById(otherRenewOrderDon.getSkuId());
|
|
|
}
|
|
|
Date renewExpiryTime = null;
|
|
|
+ //当前续费订单id
|
|
|
+ Long presentUserCodePackageOrderId = claudeUser.getRenewOrderId();
|
|
|
claudeUser.setRenewSkuId(null);
|
|
|
claudeUser.setRenewOrderId(null);
|
|
|
//续费升级
|
|
|
@@ -231,15 +257,16 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
|
|
|
claudeUser.setRenewOrderId(otherRenewOrderDon.getId());
|
|
|
claudeUser.setRenewSkuId(otherRenewOrderDon.getSkuId());
|
|
|
}
|
|
|
+ //非当前套餐续费订单id 不修改user
|
|
|
+ if (!ObjectUtil.equal(presentUserCodePackageOrderId, orderId)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
//还原镜像user
|
|
|
claudeUser.setLimitTime(finalSku.getGptLimitTime());
|
|
|
claudeUser.setLimitNum(finalSku.getGptLimitNum());
|
|
|
claudeUser.setRenewExpiryTime(renewExpiryTime);
|
|
|
claudeUserMapper.updateById(claudeUser);
|
|
|
log.info("还原镜像claude user套餐成功");
|
|
|
- //将续费有效置为过期
|
|
|
- orderDonRenewRecord.setIsValid(true);
|
|
|
- orderDonRenewRecordMapper.updateById(orderDonRenewRecord);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -277,6 +304,8 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
|
|
|
log.info("GPT续费升级订单退款,relation_id:{}存在套餐升级", orderDon.getUserId());
|
|
|
finalSku = upgradeOrderDonSku;
|
|
|
}
|
|
|
+ //当前续费订单id
|
|
|
+ Long presentUserCodePackageOrderId = chatgptUser.getRenewOrderId();
|
|
|
chatgptUser.setRenewSkuId(null);
|
|
|
chatgptUser.setRenewOrderId(null);
|
|
|
//续费升级
|
|
|
@@ -301,6 +330,10 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
|
|
|
chatgptUser.setRenewOrderId(otherRenewOrderDon.getId());
|
|
|
chatgptUser.setRenewSkuId(otherRenewOrderDon.getSkuId());
|
|
|
}
|
|
|
+ //非当前套餐续费订单id 不修改user
|
|
|
+ if (!ObjectUtil.equal(presentUserCodePackageOrderId, orderId)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
//还原镜像user
|
|
|
chatgptUser.setLimitTime(finalSku.getGptLimitTime());
|
|
|
chatgptUser.setLimitNum(finalSku.getGptLimitNum());
|
|
|
@@ -312,10 +345,6 @@ public class MirrorUserCleatServiceImpl implements MirrorUserCleatService {
|
|
|
chatgptUserMapper.updateById(chatgptUser);
|
|
|
log.info("还原镜像gptuser套餐成功");
|
|
|
|
|
|
- //将续费有效置为过期
|
|
|
- orderDonRenewRecord.setIsValid(true);
|
|
|
- orderDonRenewRecordMapper.updateById(orderDonRenewRecord);
|
|
|
-
|
|
|
if (orderDon.getOrderType() == 2) {
|
|
|
//退款续费 套餐升级订单
|
|
|
handleGptMirrorRenewOrderRefund(orderDon, sku);
|