AdapayServiceTest.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package com.izouma.nineth.service;
  2. import com.alibaba.excel.EasyExcel;
  3. import com.alibaba.fastjson.JSON;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.huifu.adapay.core.exception.BaseAdaPayException;
  6. import com.huifu.adapay.model.Refund;
  7. import com.izouma.nineth.ApplicationTests;
  8. import com.izouma.nineth.domain.AdaTrade;
  9. import com.izouma.nineth.repo.GiftOrderRepo;
  10. import com.izouma.nineth.repo.OrderRepo;
  11. import com.izouma.nineth.utils.SnowflakeIdWorker;
  12. import org.junit.Test;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import java.util.HashMap;
  15. import java.util.List;
  16. import java.util.Map;
  17. import java.util.concurrent.ExecutionException;
  18. import java.util.concurrent.ForkJoinPool;
  19. import java.util.stream.Collectors;
  20. public class AdapayServiceTest extends ApplicationTests {
  21. @Autowired
  22. private OrderRepo orderRepo;
  23. @Autowired
  24. private GiftOrderRepo giftOrderRepo;
  25. @Autowired
  26. private SnowflakeIdWorker snowflakeIdWorker;
  27. private final String appId = "app_0e8d3acb-3d95-4ebb-8445-e470c378a787";
  28. @Test
  29. public void queryRefund() throws ExecutionException, InterruptedException {
  30. ForkJoinPool customThreadPool = new ForkJoinPool(100);
  31. customThreadPool.submit(() -> {
  32. List<AdaTrade> list = EasyExcel.read("/Users/drew/Downloads/merTransDetail_0284905900625472_20220212_20220212_1644980532.xlsx")
  33. .head(AdaTrade.class).sheet().doReadSync();
  34. list = list.parallelStream().filter(adaTrade -> {
  35. return adaTrade.get交易金额().equals("19.80")
  36. && orderRepo.findByTransactionId(adaTrade.get支付流水号()) == null
  37. && giftOrderRepo.findByTransactionId(adaTrade.get支付流水号()) == null;
  38. }).collect(Collectors.toList());
  39. EasyExcel.write("/Users/drew/Downloads/1.xlsx", AdaTrade.class).sheet("模板").doWrite(list);
  40. System.out.println(list.size());
  41. }).get();
  42. }
  43. @Test
  44. public void refund() {
  45. List<AdaTrade> list = EasyExcel.read("/Users/drew/Downloads/1.xlsx")
  46. .head(AdaTrade.class).sheet().doReadSync();
  47. list.parallelStream().forEach(adaTrade -> {
  48. Map<String, Object> refundParams = new HashMap<>();
  49. refundParams.put("refund_amt", adaTrade.get交易金额());
  50. refundParams.put("refund_order_no", snowflakeIdWorker.nextId() + "");
  51. try {
  52. Map<String, Object> response = Refund.create(adaTrade.get支付流水号(), refundParams);
  53. } catch (BaseAdaPayException e) {
  54. e.printStackTrace();
  55. }
  56. });
  57. }
  58. @Test
  59. public void verifyRefund() throws BaseAdaPayException {
  60. List<AdaTrade> list = EasyExcel.read("/Users/drew/Downloads/1.xlsx")
  61. .head(AdaTrade.class).sheet().doReadSync();
  62. list = list.parallelStream().filter(adaTrade -> {
  63. boolean success = false;
  64. try {
  65. Map<String, Object> refundParams = new HashMap<>(2);
  66. refundParams.put("payment_id", adaTrade.get支付流水号());
  67. Map<String, Object> refund = Refund.query(refundParams);
  68. JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(refund));
  69. if ("S".equals(jsonObject.getJSONArray("refunds")
  70. .getJSONObject(jsonObject.getJSONArray("refunds").size() - 1).getString("trans_status"))) {
  71. success = true;
  72. }
  73. } catch (Exception e) {
  74. }
  75. return !success;
  76. }).collect(Collectors.toList());
  77. EasyExcel.write("/Users/drew/Downloads/2.xlsx", AdaTrade.class).sheet("模板").doWrite(list);
  78. }
  79. }