GroupRelationClearServiceImpl.java 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. package com.cyksj.service.relation.impl;
  2. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  3. import com.cyksj.common.constant.Constant;
  4. import com.cyksj.mapper.*;
  5. import com.cyksj.mapper.claudecode.OAuthTokenMapper;
  6. import com.cyksj.model.entity.*;
  7. import com.cyksj.model.manage.views.GroupsRelationView;
  8. import com.cyksj.service.claude.ClaudeCodeService;
  9. import com.cyksj.service.mange.MirrorUserCleatService;
  10. import com.cyksj.service.relation.GroupRelationClearService;
  11. import com.ejlchina.searcher.BeanSearcher;
  12. import com.ejlchina.searcher.util.MapUtils;
  13. import lombok.RequiredArgsConstructor;
  14. import lombok.extern.slf4j.Slf4j;
  15. import org.springframework.stereotype.Service;
  16. import java.util.Date;
  17. /*
  18. *项目名: netflix
  19. *文件名: GroupRelationClearServiceImpl
  20. *创建者: JavaZou
  21. *创建时间:2023/2/23 15:31
  22. */
  23. @Service
  24. @RequiredArgsConstructor
  25. @Slf4j
  26. public class GroupRelationClearServiceImpl implements GroupRelationClearService {
  27. private final GroupsRelationMapper groupsRelationMapper;
  28. private final GroupsMapper groupsMapper;
  29. private final BeanSearcher beanSearcher;
  30. private final UserTicketClearedRecordMapper userTicketClearedRecordMapper;
  31. private final GoodsDonSkuMapper goodsDonSkuMapper;
  32. private final MirrorUserCleatService mirrorUserCleatService;
  33. private final ClaudeCodeService claudeCodeService;
  34. private final ClaudeCodeUserMapper claudeCodeUserMapper;
  35. private final OAuthTokenMapper oAuthTokenMapper;
  36. @Override
  37. public void clearTicket(GroupsRelation relation, UserTicketClearedRecord.Source source) {
  38. Long relationId = relation.getId();
  39. Long newRelationId = relation.getNewRelationId();
  40. Integer num = relation.getNum();
  41. final GroupsRelation.Status relationStatus = relation.getStatus();
  42. //记录用户被清除车票历史记录
  43. GroupsRelationView groupsRelation = beanSearcher.searchFirst(GroupsRelationView.class,
  44. MapUtils.builder().field(GroupsRelationView::getId, relationId).build());
  45. if (groupsRelation != null) {
  46. Long userId = relation.getUserId();
  47. Date startTime = relation.getStartTime();
  48. Date expireTime = relation.getExpiryTime();
  49. relation.setStartTime(null);
  50. relation.setExpiryTime(null);
  51. relation.setUserId(0l);
  52. // Boolean isFlag = false;
  53. // //非chatGpt独立会员规格车队
  54. // if (!groupsRelation.getSkuId().equals(177l)) {
  55. // relation.setUserId(0l);
  56. // isFlag = true;
  57. // }
  58. if (relationStatus != GroupsRelation.Status.outside) {
  59. relation.setStatus(GroupsRelation.Status.none);
  60. }
  61. relation.setIsHandle(false);
  62. relation.setRenewStatus(false);
  63. relation.setAccount(null);
  64. Integer success = groupsRelationMapper.updateExpiryTime(relation, expireTime);
  65. if (success == 1) {
  66. //2023-06-07 GPT账号座位大于20
  67. if (relationStatus != GroupsRelation.Status.outside) {
  68. log.info("开始清除过期子账号,座位号:{}", relation.getId());
  69. int count = groupsMapper.incrAvailableNum(relation.getGroupsId());
  70. if (count == 0) {
  71. log.error("车位异常 groupId:{}", relation.getGroupsId());
  72. groupsMapper.updateAvailableNum(relation.getGroupsId());
  73. }
  74. }
  75. UserTicketClearedRecord userTicketClearedRecord = new UserTicketClearedRecord();
  76. userTicketClearedRecord.setAccountId(groupsRelation.getAccountId());
  77. userTicketClearedRecord.setAccount(groupsRelation.getTripsAccount());
  78. userTicketClearedRecord.setRelationId(relationId);
  79. userTicketClearedRecord.setNum(num);
  80. userTicketClearedRecord.setUserId(userId);
  81. userTicketClearedRecord.setSource(source);
  82. if (groupsRelation.getGoodsId() == null) {
  83. GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(groupsRelation.getSkuId());
  84. if (goodsDonSku != null) {
  85. groupsRelation.setGoodsId(goodsDonSku.getGoodsId());
  86. }
  87. }
  88. userTicketClearedRecord.setGoodsId(groupsRelation.getGoodsId());
  89. userTicketClearedRecord.setSkuId(groupsRelation.getSkuId());
  90. userTicketClearedRecord.setStartTime(startTime);
  91. userTicketClearedRecord.setExpiryTime(expireTime);
  92. userTicketClearedRecord.setNewRelationId(newRelationId);
  93. userTicketClearedRecord.setYhsId(groupsRelation.getYhsId());
  94. if (source != UserTicketClearedRecord.Source.self) {
  95. userTicketClearedRecord.setDeleted(false);
  96. }
  97. userTicketClearedRecordMapper.insert(userTicketClearedRecord);
  98. // if (!isFlag) {
  99. // //清除之前规格的车队
  100. // groupService.close(groupsRelation.getGroupsId());
  101. // if (groupsRelation.getAccountId() != null) {
  102. // //生成10人月付新规格车队
  103. // Account account = accountService.getById(groupsRelation.getAccountId());
  104. // account.setSkuId(161l);
  105. // accountService.updateById(account);
  106. // GroupsTrips gt = new GroupsTrips();
  107. // gt.setSkuId(account.getSkuId());
  108. // gt.setAccountId(account.getId());
  109. // groupService.issuance(gt, null);
  110. //
  111. // GroupsTripsDeleteRecord record = new GroupsTripsDeleteRecord();
  112. // record.setAccountId(gt.getAccountId());
  113. // record.setAccount(gt.getAccount());
  114. // record.setBeforeGroupsId(groupsRelation.getId());
  115. // record.setBeforeSkuId(groupsRelation.getSkuId());
  116. // record.setAfterGroupsId(gt.getId());
  117. // record.setAfterSkuId(gt.getSkuId());
  118. // groupsTripsDeleteRecordMapper.insert(record);
  119. // log.info("ChatGPT 独立会员账号车票过期,删除原先车队id:{}并生成一个10人月付规格的车队id:{}", groupsRelation.getId(), gt.getId());
  120. // }
  121. // }
  122. if (source != UserTicketClearedRecord.Source.vip_deduct) {
  123. mirrorUserCleatService.delMirrorUser(groupsRelation.getGoodsId(), groupsRelation.getId(), userTicketClearedRecord.getId());
  124. }
  125. //claude code
  126. if (groupsRelation.getGoodsId() != null && groupsRelation.getGoodsId() == Constant.CLAUDE_CODE_GOODS_ID) {
  127. //用户失效 车票用户id
  128. claudeCodeService.invalidateUserCache(groupsRelation.getUserId());
  129. //删除用户套餐
  130. claudeCodeService.delUserPackages(groupsRelation.getUserId());
  131. //清除claude code user
  132. claudeCodeUserMapper.delete(Wrappers.lambdaQuery(ClaudeCodeUser.class).eq(ClaudeCodeUser::getRelationId, relationId));
  133. //清除claude code tokens
  134. oAuthTokenMapper.delete(Wrappers.lambdaQuery(OAuthToken.class).eq(OAuthToken::getUserId, userId));
  135. }
  136. }
  137. }
  138. }
  139. @Override
  140. public void clearRenewGroupRelation(GroupsRelation relation) {
  141. Date expireTime = relation.getExpiryTime();
  142. relation.setStartTime(null);
  143. relation.setExpiryTime(null);
  144. relation.setUserId(0l);
  145. relation.setStatus(GroupsRelation.Status.none);
  146. relation.setIsHandle(false);
  147. relation.setRenewStatus(false);
  148. relation.setAccount(null);
  149. Integer success = groupsRelationMapper.updateExpiryTime(relation, expireTime);
  150. if (success == 1) {
  151. log.info("续费后更换车票,座位号:{}", relation.getId());
  152. int count = groupsMapper.incrAvailableNum(relation.getGroupsId());
  153. if (count == 0) {
  154. groupsMapper.updateAvailableNum(relation.getGroupsId());
  155. log.error("续费更换车位异常 groupId:{}", relation.getGroupsId());
  156. }
  157. }
  158. }
  159. }