GroupRelationClearServiceImpl.java 6.0 KB

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