GroupFunServiceImpl.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package com.cyksj.service.groups.impl;
  2. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  3. import com.cyksj.common.constant.Constant;
  4. import com.cyksj.mapper.AccountMapper;
  5. import com.cyksj.mapper.GroupsMapper;
  6. import com.cyksj.mapper.GroupsRelationMapper;
  7. import com.cyksj.model.entity.Account;
  8. import com.cyksj.model.entity.GoodsDonSku;
  9. import com.cyksj.model.entity.GroupsRelation;
  10. import com.cyksj.model.entity.GroupsTrips;
  11. import com.cyksj.model.manage.views.AccountView;
  12. import com.cyksj.service.groups.GroupsFuncService;
  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.dao.DuplicateKeyException;
  18. import org.springframework.stereotype.Service;
  19. /*
  20. *项目名: netflix
  21. *文件名: GroupFunServiceImpl
  22. *创建者: JavaZou
  23. *创建时间:2023/6/8 16:34
  24. */
  25. @Service
  26. @RequiredArgsConstructor
  27. @Slf4j
  28. public class GroupFunServiceImpl implements GroupsFuncService {
  29. private final BeanSearcher beanSearcher;
  30. private final GroupsMapper groupsMapper;
  31. private final GroupsRelationMapper groupsRelationMapper;
  32. private final AccountMapper accountMapper;
  33. @Override
  34. public GroupsRelation createNewGroupsTrips(GoodsDonSku sku) {
  35. //新增车次
  36. GroupsTrips groups = new GroupsTrips();
  37. groups.setSkuId(sku.getId());
  38. groups.setNum(sku.getNum());
  39. groups.setAvailableNum(sku.getNum());
  40. if (sku.getGoodsId() == 23) {
  41. AccountView accountView = beanSearcher.searchFirst(AccountView.class, MapUtils.builder().field(AccountView::getGoodsId, 23).onlySelect(AccountView::getId).build());
  42. if (accountView != null) {
  43. groups.setAccountId(accountView.getId());
  44. groups.setStatus(GroupsTrips.Status.validity);
  45. groups.setRemark("已设置唯一账号");
  46. } else {
  47. groups.setStatus(GroupsTrips.Status.waiting);
  48. groups.setRemark("等待设置账号");
  49. }
  50. } else {
  51. groups.setStatus(GroupsTrips.Status.waiting);
  52. groups.setRemark("等待设置账号");
  53. }
  54. //限制每天新车队前3天 停车数量
  55. //10人镜像月付GPT
  56. Integer availableParkingNum = 0;
  57. if (sku.getId() == 161l || sku.getId() == 422l) {
  58. availableParkingNum = 20;
  59. }
  60. //4人镜像月付GPT
  61. if (sku.getId() == 178l || sku.getId() == 423l) {
  62. availableParkingNum = 6;
  63. }
  64. //如果是镜像车队
  65. setMirrorUnifyAccount(sku, groups);
  66. groups.setAvailableParkingNum(availableParkingNum);
  67. groupsMapper.insert(groups);
  68. GroupsRelation relation = new GroupsRelation();
  69. relation.setGroupsId(groups.getId());
  70. relation.setNum(1);
  71. relation.setStatus(GroupsRelation.Status.none);
  72. relation.setGroupsId(groups.getId());
  73. groupsRelationMapper.insert(relation);
  74. for (int i = 2; i <= groups.getNum(); i++) {
  75. GroupsRelation groupsRelation = new GroupsRelation();
  76. groupsRelation.setGroupsId(groups.getId());
  77. groupsRelation.setNum(i);
  78. groupsRelation.setStatus(GroupsRelation.Status.none);
  79. groupsRelationMapper.insert(groupsRelation);
  80. }
  81. return relation;
  82. }
  83. /**
  84. * 设置镜像统一账号
  85. */
  86. public void setMirrorUnifyAccount(GoodsDonSku sku, GroupsTrips groups) {
  87. //如果是GPT、MJ镜像车队
  88. //设置唯一账号
  89. Long goodsId = sku.getGoodsId();
  90. Boolean isMirror = sku.getIsMirror();
  91. Boolean isCar = sku.getIsCar();
  92. String account = null;
  93. if ((goodsId == Constant.CLAUDE_CODE_GOODS_ID) || (goodsId == 88 && isMirror) || (goodsId == 87 && isMirror) || (goodsId == 18 && isCar) || (goodsId == 26 && isMirror) || (goodsId == 75 && isCar)) {
  94. if (goodsId == 18) {
  95. account = Constant.GPT_CAR_ONLY_ACCOUNT;
  96. }
  97. if (goodsId == 26) {
  98. account = Constant.MJ_MIRROR_ONLY_ACCOUNT;
  99. }
  100. if (goodsId == 75) {
  101. account = Constant.CLAUDE_MIRROR_ONLY_ACCOUNT;
  102. }
  103. if (goodsId == 87) {
  104. account = Constant.LUMA_MIRROR_ONLY_ACCOUNT;
  105. }
  106. if (goodsId == 88) {
  107. account = Constant.GROK_MIRROR_ONLY_ACCOUNT;
  108. }
  109. //claude code
  110. if (goodsId == Constant.CLAUDE_CODE_GOODS_ID) {
  111. account = Constant.CLAUDE_CODE_ONLY_ACCOUNT;
  112. }
  113. AccountView accountView = beanSearcher.searchFirst(AccountView.class, MapUtils.builder()
  114. .field(AccountView::getGoodsId, goodsId)
  115. .field(AccountView::getAccount, account).
  116. onlySelect(AccountView::getId).build());
  117. Long accountId;
  118. if (accountView == null) {
  119. try {
  120. Account insert = new Account();
  121. insert.setAccount(account);
  122. insert.setPassword(account);
  123. insert.setGoodsId(goodsId);
  124. accountMapper.insert(insert);
  125. accountId = insert.getId();
  126. } catch (DuplicateKeyException e) {
  127. accountId = accountMapper.selectOne(Wrappers.lambdaQuery(Account.class)
  128. .eq(Account::getGoodsId, goodsId)
  129. .eq(Account::getAccount, account)
  130. .last("limit 1")).getId();
  131. }
  132. } else {
  133. accountId = accountView.getId();
  134. }
  135. groups.setAccountId(accountId);
  136. groups.setStatus(GroupsTrips.Status.validity);
  137. groups.setRemark("已设置镜像车队唯一账号");
  138. }
  139. }
  140. }