AdapayServiceTest.java 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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_20220107_20220108_1641637419.xlsx")
  33. .head(AdaTrade.class).sheet().doReadSync();
  34. list = list.parallelStream().filter(adaTrade -> {
  35. return adaTrade.get交易金额().equals("1.00")
  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. for (AdaTrade adaTrade : list) {
  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").getJSONObject(0).getString("trans_status"))) {
  70. success = true;
  71. }
  72. } catch (Exception e) {
  73. }
  74. return !success;
  75. }).collect(Collectors.toList());
  76. EasyExcel.write("/Users/drew/Downloads/2.xlsx", AdaTrade.class).sheet("模板").doWrite(list);
  77. }
  78. }