OrderServiceTest.java 9.9 KB

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