GroupRelationClearServiceImpl.java 6.9 KB

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