OrderServiceTest.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. package com.izouma.nineth.service;
  2. import com.github.binarywang.wxpay.exception.WxPayException;
  3. import com.huifu.adapay.core.exception.BaseAdaPayException;
  4. import com.huifu.adapay.model.Payment;
  5. import com.izouma.nineth.ApplicationTests;
  6. import com.izouma.nineth.TokenHistory;
  7. import com.izouma.nineth.domain.*;
  8. import com.izouma.nineth.dto.UserBankCard;
  9. import com.izouma.nineth.enums.AssetStatus;
  10. import com.izouma.nineth.enums.AuthStatus;
  11. import com.izouma.nineth.enums.OrderStatus;
  12. import com.izouma.nineth.repo.*;
  13. import lombok.extern.slf4j.Slf4j;
  14. import org.apache.commons.codec.EncoderException;
  15. import org.apache.commons.collections.MapUtils;
  16. import org.junit.Test;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import java.time.LocalDateTime;
  19. import java.util.ArrayList;
  20. import java.util.List;
  21. import java.util.Map;
  22. import java.util.Optional;
  23. import java.util.stream.Collectors;
  24. @Slf4j
  25. public class OrderServiceTest extends ApplicationTests {
  26. @Autowired
  27. private OrderService orderService;
  28. @Autowired
  29. private OrderRepo orderRepo;
  30. @Autowired
  31. private AssetRepo assetRepo;
  32. @Autowired
  33. private TokenHistoryRepo tokenHistoryRepo;
  34. @Autowired
  35. private AssetService assetService;
  36. @Autowired
  37. private CollectionRepo collectionRepo;
  38. @Autowired
  39. private UserRepo userRepo;
  40. @Autowired
  41. private IdentityAuthRepo identityAuthRepo;
  42. @Autowired
  43. private UserBankCardRepo userBankCardRepo;
  44. @Test
  45. public void create() throws EncoderException, WxPayException {
  46. Order order = orderService.create(1110L, 1777L, 1, null, 1896L, null);
  47. assert order.getStatus() == OrderStatus.FINISH;
  48. }
  49. @Test
  50. public void setNumber() {
  51. orderService.setNumber();
  52. }
  53. @Test
  54. public void setSales() {
  55. orderService.setSales();
  56. }
  57. @Test
  58. public void commission() {
  59. orderService.commission(orderRepo.findById(4437L).get());
  60. }
  61. @Test
  62. public void refund() throws WxPayException {
  63. orderService.refund(4627L);
  64. }
  65. @Test
  66. public void cancel() {
  67. orderService.cancel(6721L);
  68. }
  69. @Test
  70. public void fixNotPaid() throws BaseAdaPayException {
  71. List<Order> errOrders = new ArrayList<>();
  72. orderRepo.findByStatus(OrderStatus.FINISH).stream().parallel().forEach(order -> {
  73. if (order.getCreatedAt().isAfter(LocalDateTime.of(2021, 11, 30, 1, 1))) {
  74. try {
  75. Map<String, Object> res = Payment.query(order.getTransactionId());
  76. String status = MapUtils.getString(res, "status");
  77. String errMsg = MapUtils.getString(res, "error_msg");
  78. if (!"succeeded".equals(status) && !"对应支付记录不存在".equals(errMsg)) {
  79. System.out.println(order.getId());
  80. errOrders.add(order);
  81. }
  82. } catch (Exception e) {
  83. }
  84. }
  85. });
  86. System.out.println(errOrders.stream().map(o -> o.getId().toString()).collect(Collectors.joining(",")));
  87. for (Order errOrder : errOrders) {
  88. Collection collection = collectionRepo.findById(errOrder.getCollectionId()).orElse(null);
  89. if (collection == null) continue;
  90. List<Asset> assets = assetRepo.findByOrderId(errOrder.getId());
  91. for (Asset asset : assets) {
  92. if (asset.getStatus() == AssetStatus.NORMAL) {
  93. if (asset.isPublicShow()) {
  94. assetService.cancelPublic(asset);
  95. }
  96. tokenHistoryRepo.deleteByTokenId(asset.getTokenId());
  97. assetRepo.delete(asset);
  98. }
  99. }
  100. orderRepo.delete(errOrder);
  101. collection.setStock(collection.getStock() + 1);
  102. collection.setSale(collection.getSale() - 1);
  103. collectionRepo.save(collection);
  104. }
  105. }
  106. @Test
  107. public void fixTokenHistory() {
  108. for (TokenHistory tokenHistory : tokenHistoryRepo.findError()) {
  109. List<Asset> assets = assetRepo.findByTokenIdOrderByCreatedAt(tokenHistory.getTokenId());
  110. if (assets.size() == 2) {
  111. userRepo.findById(assets.get(0).getUserId()).ifPresent(fromUser -> {
  112. tokenHistory.setFromUserId(assets.get(0).getUserId());
  113. tokenHistory.setFromUser(fromUser.getNickname());
  114. tokenHistory.setFromAvatar(fromUser.getAvatar());
  115. tokenHistoryRepo.save(tokenHistory);
  116. });
  117. }
  118. }
  119. }
  120. @Test
  121. public void fixPay() {
  122. String s = "\n订单ID\t金额\t手续费\t版税\t收款用户ID\t收款人\t银行卡号\t银行";
  123. for (Long orderId : new Long[]{5417L, 5919L, 5923L, 8166L}) {
  124. try {
  125. Order order = orderRepo.findById(orderId).get();
  126. List<Asset> assets = assetRepo.findByTokenIdOrderByCreatedAt(assetRepo.findById(order.getAssetId())
  127. .get()
  128. .getTokenId());
  129. Asset asset = assets.stream().filter(a -> a.getStatus() == AssetStatus.TRANSFERRED).findAny().get();
  130. User user = userRepo.findById(asset.getUserId()).get();
  131. Optional<IdentityAuth> identityAuth = identityAuthRepo.findByUserIdAndDelFalse(user.getId()).stream()
  132. .filter(i -> i.getStatus() == AuthStatus.SUCCESS).findAny();
  133. Optional<UserBankCard> bankCard = userBankCardRepo.findByUserId(user.getId()).stream().findAny();
  134. s += "\n"
  135. + orderId + "\t"
  136. + order.getTotalPrice().subtract(order.getGasPrice()) + "\t"
  137. + order.getServiceCharge() + "\t"
  138. + order.getRoyalties() + "\t"
  139. + user.getId() + "\t"
  140. + identityAuth.map(IdentityAuth::getRealName).orElse("") + "\t"
  141. + bankCard.map(UserBankCard::getBankNo).orElse("") + "\t"
  142. + bankCard.map(UserBankCard::getBankName).orElse("");
  143. } catch (Exception e) {
  144. }
  145. }
  146. log.info(s);
  147. }
  148. }