OrderServiceTest.java 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  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.Collection;
  8. import com.izouma.nineth.domain.*;
  9. import com.izouma.nineth.dto.UserBankCard;
  10. import com.izouma.nineth.enums.AssetStatus;
  11. import com.izouma.nineth.enums.AuthStatus;
  12. import com.izouma.nineth.enums.OrderStatus;
  13. import com.izouma.nineth.exception.BusinessException;
  14. import com.izouma.nineth.repo.*;
  15. import com.izouma.nineth.utils.FileUtils;
  16. import lombok.extern.slf4j.Slf4j;
  17. import org.apache.commons.codec.EncoderException;
  18. import org.apache.commons.collections.MapUtils;
  19. import org.junit.Test;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import java.io.IOException;
  22. import java.time.LocalDateTime;
  23. import java.util.*;
  24. import java.util.stream.Collectors;
  25. @Slf4j
  26. public class OrderServiceTest extends ApplicationTests {
  27. @Autowired
  28. private OrderService orderService;
  29. @Autowired
  30. private OrderRepo orderRepo;
  31. @Autowired
  32. private AssetRepo assetRepo;
  33. @Autowired
  34. private TokenHistoryRepo tokenHistoryRepo;
  35. @Autowired
  36. private AssetService assetService;
  37. @Autowired
  38. private CollectionRepo collectionRepo;
  39. @Autowired
  40. private UserRepo userRepo;
  41. @Autowired
  42. private IdentityAuthRepo identityAuthRepo;
  43. @Autowired
  44. private UserBankCardRepo userBankCardRepo;
  45. @Autowired
  46. private CollectionService collectionService;
  47. @Test
  48. public void create() throws EncoderException, WxPayException {
  49. Order order = orderService.create(1110L, 1777L, 1, null, 1896L, null);
  50. assert order.getStatus() == OrderStatus.FINISH;
  51. }
  52. @Test
  53. public void setNumber() {
  54. orderService.setNumber();
  55. }
  56. @Test
  57. public void setSales() {
  58. orderService.setSales();
  59. }
  60. @Test
  61. public void commission() {
  62. orderService.commission(orderRepo.findById(4437L).get());
  63. }
  64. @Test
  65. public void refund() throws WxPayException {
  66. orderService.refund(4627L);
  67. }
  68. @Test
  69. public void cancel() {
  70. orderService.cancel(6721L);
  71. }
  72. @Test
  73. public void fixNotPaid() throws BaseAdaPayException {
  74. List<Order> errOrders = new ArrayList<>();
  75. orderRepo.findByStatus(OrderStatus.FINISH).stream().parallel().forEach(order -> {
  76. if (order.getCreatedAt().isAfter(LocalDateTime.of(2021, 11, 30, 1, 1))) {
  77. try {
  78. Map<String, Object> res = Payment.query(order.getTransactionId());
  79. String status = MapUtils.getString(res, "status");
  80. String errMsg = MapUtils.getString(res, "error_msg");
  81. if (!"succeeded".equals(status) && !"对应支付记录不存在".equals(errMsg)) {
  82. System.out.println(order.getId());
  83. errOrders.add(order);
  84. }
  85. } catch (Exception e) {
  86. }
  87. }
  88. });
  89. System.out.println(errOrders.stream().map(o -> o.getId().toString()).collect(Collectors.joining(",")));
  90. for (Order errOrder : errOrders) {
  91. Collection collection = collectionRepo.findById(errOrder.getCollectionId()).orElse(null);
  92. if (collection == null) continue;
  93. List<Asset> assets = assetRepo.findByOrderId(errOrder.getId());
  94. for (Asset asset : assets) {
  95. if (asset.getStatus() == AssetStatus.NORMAL) {
  96. if (asset.isPublicShow()) {
  97. assetService.cancelPublic(asset);
  98. }
  99. tokenHistoryRepo.deleteByTokenId(asset.getTokenId());
  100. assetRepo.delete(asset);
  101. }
  102. }
  103. orderRepo.delete(errOrder);
  104. collectionRepo.increaseStock(collection.getId(), 1);
  105. collectionRepo.increaseSale(collection.getId(), -1);
  106. }
  107. }
  108. @Test
  109. public void fixTokenHistory() {
  110. for (TokenHistory tokenHistory : tokenHistoryRepo.findError()) {
  111. List<Asset> assets = assetRepo.findByTokenIdOrderByCreatedAt(tokenHistory.getTokenId());
  112. if (assets.size() == 2) {
  113. userRepo.findById(assets.get(0).getUserId()).ifPresent(fromUser -> {
  114. tokenHistory.setFromUserId(assets.get(0).getUserId());
  115. tokenHistory.setFromUser(fromUser.getNickname());
  116. tokenHistory.setFromAvatar(fromUser.getAvatar());
  117. tokenHistoryRepo.save(tokenHistory);
  118. });
  119. }
  120. }
  121. }
  122. @Test
  123. public void fixPay() {
  124. String s = "\n订单ID\t金额\t手续费\t版税\t收款用户ID\t收款人\t银行卡号\t银行";
  125. for (Long orderId : new Long[]{5417L, 5919L, 5923L, 8166L}) {
  126. try {
  127. Order order = orderRepo.findById(orderId).get();
  128. List<Asset> assets = assetRepo.findByTokenIdOrderByCreatedAt(assetRepo.findById(order.getAssetId())
  129. .get()
  130. .getTokenId());
  131. Asset asset = assets.stream().filter(a -> a.getStatus() == AssetStatus.TRANSFERRED).findAny().get();
  132. User user = userRepo.findById(asset.getUserId()).get();
  133. Optional<IdentityAuth> identityAuth = identityAuthRepo.findByUserIdAndDelFalse(user.getId()).stream()
  134. .filter(i -> i.getStatus() == AuthStatus.SUCCESS).findAny();
  135. Optional<UserBankCard> bankCard = userBankCardRepo.findByUserId(user.getId()).stream().findAny();
  136. s += "\n"
  137. + orderId + "\t"
  138. + order.getTotalPrice().subtract(order.getGasPrice()) + "\t"
  139. + order.getServiceCharge() + "\t"
  140. + order.getRoyalties() + "\t"
  141. + user.getId() + "\t"
  142. + identityAuth.map(IdentityAuth::getRealName).orElse("") + "\t"
  143. + bankCard.map(UserBankCard::getBankNo).orElse("") + "\t"
  144. + bankCard.map(UserBankCard::getBankName).orElse("");
  145. } catch (Exception e) {
  146. }
  147. }
  148. log.info(s);
  149. }
  150. @Test
  151. public void consignmentFix() throws IOException {
  152. String s = FileUtils.readFile("/Users/drew/Downloads/app.log").replaceAll("</p>\n", "</p>");
  153. String[] arr = s.split("\n");
  154. for (int i = 0; i < arr.length; i++) {
  155. if (arr[i].contains("insert into collection_info")) {
  156. // arr[i][2]
  157. }
  158. }
  159. }
  160. @Test
  161. public void removeDuplicate() {
  162. List<Long> ids = new ArrayList<>();
  163. orderRepo.findByCollectionId(8012L).stream()
  164. .filter(o -> o.getStatus() == OrderStatus.FINISH || o.getStatus() == OrderStatus.PROCESSING)
  165. .parallel().forEach(order -> {
  166. List<Asset> assets = assetRepo.findByOrderId(order.getId());
  167. if (assets.size() > 1) {
  168. assets.sort(Comparator.comparing(BaseEntity::getCreatedAt));
  169. for (int i = 1; i < assets.size(); i++) {
  170. assetRepo.delete(assets.get(i));
  171. tokenHistoryRepo.deleteByTokenId(assets.get(i).getTokenId());
  172. if (assets.get(i).getPublicCollectionId() != null) {
  173. collectionRepo.findById(assets.get(i).getPublicCollectionId()).ifPresent(c -> {
  174. collectionRepo.delete(c);
  175. });
  176. }
  177. }
  178. ids.add(order.getId());
  179. }
  180. });
  181. System.out.println(ids);
  182. }
  183. @Test
  184. public void setNumber1() {
  185. final int[] number = {1};
  186. orderRepo.findByCollectionId(8012L).stream()
  187. .filter(o -> o.getStatus() == OrderStatus.FINISH || o.getStatus() == OrderStatus.PROCESSING)
  188. .sorted(Comparator.comparing(Order::getCreatedAt))
  189. .forEach(order -> {
  190. Asset asset = assetRepo.findByOrderId(order.getId()).get(0);
  191. asset.setNumber(number[0]);
  192. assetRepo.save(asset);
  193. if (asset.getPublicCollectionId() != null) {
  194. collectionRepo.findById(asset.getPublicCollectionId()).ifPresent(c -> {
  195. c.setNumber(asset.getNumber());
  196. collectionRepo.save(c);
  197. });
  198. }
  199. number[0]++;
  200. });
  201. assetRepo.findByCollectionId(8012L).stream().parallel().forEach(asset -> {
  202. });
  203. }
  204. }