Эх сурвалжийг харах

Merge branch 'dev' of http://git.izouma.com/xiongzhu/9th into dev

panhui 4 жил өмнө
parent
commit
403c45b3a0

+ 37 - 0
src/main/java/com/izouma/nineth/service/AssetService.java

@@ -413,4 +413,41 @@ public class AssetService {
         });
         return result;
     }
+
+    public Map<User, Integer> holdQuery1(List<Long> names, LocalDateTime startTime, LocalDateTime endTime) {
+        Map<User, Integer> result = new HashMap<>();
+        userRepo.findAll().stream().parallel().forEach(user -> {
+            List<Asset> assets = assetRepo.findByUserId(user.getId());
+            assets = assets.stream().filter(a -> names.stream().anyMatch(n -> n.equals(a.getCollectionId())))
+                    .collect(Collectors.toList());
+            if (assets.size() < names.size()) {
+                return;
+            }
+            assets = assets.stream().filter(a -> a.getCreatedAt().isBefore(startTime))
+                    .collect(Collectors.toList());
+            if (assets.size() < names.size()) {
+                return;
+            }
+            assets = assets.stream().filter(a -> {
+                        if (a.getStatus() != AssetStatus.GIFTED && a.getStatus() != AssetStatus.TRANSFERRED) {
+                            return true;
+                        } else {
+                            Asset a1 = assetRepo.findFirstByTokenIdAndCreatedAtAfterOrderByCreatedAt(a.getTokenId(), a.getCreatedAt());
+                            return a1 != null && a.getCreatedAt().isAfter(endTime);
+                        }
+                    })
+                    .collect(Collectors.toList());
+            boolean flag = true;
+            Map<Long, Integer> map = new HashMap<>();
+            for (Long name : names) {
+                int c = (int) assets.stream().filter(a -> name.equals(a.getCollectionId())).count();
+                map.put(name, c);
+                flag = flag && (c > 0);
+            }
+            if (flag) {
+                result.put(user, map.values().stream().mapToInt(i -> i).min().orElse(0));
+            }
+        });
+        return result;
+    }
 }

+ 9 - 0
src/main/java/com/izouma/nineth/service/UserService.java

@@ -520,4 +520,13 @@ public class UserService {
         map.put("success", success);
         return map;
     }
+
+    public void removeAuth(Long userId) {
+        User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
+        if (user.getAuthStatus() == AuthStatus.SUCCESS) {
+            user.setAuthStatus(AuthStatus.NOT_AUTH);
+            userRepo.save(user);
+            identityAuthRepo.deleteAll(identityAuthRepo.findByUserIdAndDelFalse(userId));
+        }
+    }
 }

+ 5 - 1
src/main/vue/src/views/BlindBoxEdit.vue

@@ -224,7 +224,11 @@ export default {
         this.$http
             .post(
                 '/collection/all',
-                { query: { del: false, source: 'OFFICIAL' }, size: 10000, sort: 'sort,desc;createdAt,desc' },
+                {
+                    query: { del: false, source: 'OFFICIAL', projectId: this.$store.state.projectId },
+                    size: 10000,
+                    sort: 'sort,desc;createdAt,desc'
+                },
                 { body: 'json' }
             )
             .then(res => {

+ 223 - 0
src/test/java/com/izouma/nineth/service/AdapayTest.java

@@ -0,0 +1,223 @@
+package com.izouma.nineth.service;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.huifu.adapay.Adapay;
+import com.huifu.adapay.core.exception.BaseAdaPayException;
+import com.huifu.adapay.model.AdapayCommon;
+import com.huifu.adapay.model.MerConfig;
+import com.huifu.adapay.model.Payment;
+import com.huifu.adapay.model.Refund;
+import com.izouma.nineth.utils.SnowflakeIdWorker;
+import com.izouma.nineth.utils.excel.BigIntegerConverter;
+import com.izouma.nineth.utils.excel.LocalDateConverter;
+import com.izouma.nineth.utils.excel.LocalDateTimeConverter;
+import lombok.Data;
+import org.apache.commons.collections.MapUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.junit.Test;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class AdapayTest {
+    private final String appId = "app_f8760acc-f4d8-46f6-8f70-d80e36517075";
+
+    public AdapayTest() {
+        Adapay.debug = false;
+        Adapay.prodMode = true;
+
+        MerConfig merConfig = new MerConfig();
+        merConfig.setApiKey("api_live_8818cac1-894b-40bc-ac77-803e02e9c260");
+        merConfig.setApiMockKey("api_test_0b1b0eb9-30e1-4acd-8e03-10b529de1856");
+        merConfig.setRSAPrivateKey("MIIEuwIBADANBgkqhkiG9w0BAQEFAASCBKUwggShAgEAAoIBAQCnIaIrFP598qcf/s3FqXxMTjrVAevnf1w5CAMdJqcRFv0WvdLEmNRxxqAYSLl/iQ8AyU4yqVwkwYqvn/aENBg0iQ5h5qboxb8T6xmrZLctk97TiIuCUwbd7Q5NBHJXzHlaKc1p1KBvTCJDMw8+t0Jh3sBkBvu7l0KPliEQHtPLBDkKvy3NBQD6BMy47kPersjSUH53HBvNpcjcPZGpUX/TmL3SNkS98RkoebFxuorK5UdazYN5xvarjfcYziShIjU3WIZJb52DGUxYWTk6vJKZrJhw7AhWIEQpH7qJxvml/B8RMQ4guHdtp3ojxwkHDtZdPU9rY8i6EHwba4qOYgobAgMBAAECggEAT36L5/oAYl+8ZleIAHBxEspS6WYUkvPdJbNN59uus04/60U2rxQSWFulYmeU87h5TmJxs18i2MjF8msfkhpFORfHo4FV+nm0PQEiIIezKRagcfUMhlx/c6eBmdh3mpNDVUN01NWxyb5ovZXXtnjsNikBUZKQwdVcb3d1GnnPO0xtt6/0xwiduCkA2ihS1tgnsYYDhMHgukIdZ3eczn3stRPQ+QyCt1JWS6DDd1nS3S2RyPZw8P9Z1zzJFVKH8z3bGqk3/98Lw7Hw+rKFnKhIA6/H9ZVORKw5OuGC3Ozy6cVbmUn8tuw3sC0NdR7w56dedB+fjJB8od0nahX1Cc6eQQKBgQDckcenslWqjs2PbncwW1wqlw7FdJX9rzJAg7kp9ItpHCoNi/kSgXeLphHXWJmyj7a1BkWynmTGxO48X3dPXUrDPFKJc42fSbxMgAQdtc/A2z+v7Ga/oUpH8jajKfKmcgeRX026R7gd9W0yi0EW+C0WdFhrzNKKY4shvnYy9lc+QwKBgQDB+mHSllqLqYru0bLrtKOKJXaR3N3INxDBZKnRqba4tUKN35IVIexiEMkHmC51jtjoRyA5Y+fc/8P11i9FbuShtRVGHWeyDibKlwff5zrETveSLTpSULBKZ6MsFSm0Fo1krSUC1QTUGG5VX/wwWm9AB2UKJqG5cMDd3i3RiPeDSQKBgBs1ED+rS83iF5Eduy4H1vKZ94R7wRSty7ERjoGSXK/2fWl2Xp7dwXVEYucBUtQnzg2+XFKQHzY1jH19+SWdCF/UzQmPa2S+n6+ACwHvL1VGtjBpJLN2nccKJZsyzW+imTRhYSEdP6TSZUnay4idzFH8v/tsJHxVkw/ygnn+0PwpAn8uOHsWsrzgioWQYmc/wss1H7ghCX/PNU/IxTOxwb7IRGiXZa5pWqv4sgc0yA5J9L+6mTgUdLnK7ybCbUbWRJY18fAfxOHwi26y10oJEA/wtuBG9H/xHUjkcc1vs5s8TiNi2d73zcpYv3mK3lQ5MVNQ7nIk+Q+QIE3UkBxa0UgpAoGBAMDwg0ebzBEZsV2cr/Er2b25LsXteDJ+V67plBNrv+A1/omA9a52sWek4bY0D+Uu6zPTDaLj9BhHC2wJmThYl0eLRKyDKYQslBR3h253Gsn3If6RH9/tSyDsQ88iAEI1f6QH27bGHL9VDrsLGEFg5E7ZEzFQuJPqoUvBOoURNwa6");
+        merConfig.setRSAPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApyGiKxT+ffKnH/7Nxal8TE461QHr539cOQgDHSanERb9Fr3SxJjUccagGEi5f4kPAMlOMqlcJMGKr5/2hDQYNIkOYeam6MW/E+sZq2S3LZPe04iLglMG3e0OTQRyV8x5WinNadSgb0wiQzMPPrdCYd7AZAb7u5dCj5YhEB7TywQ5Cr8tzQUA+gTMuO5D3q7I0lB+dxwbzaXI3D2RqVF/05i90jZEvfEZKHmxcbqKyuVHWs2Decb2q433GM4koSI1N1iGSW+dgxlMWFk5OrySmayYcOwIViBEKR+6icb5pfwfETEOILh3bad6I8cJBw7WXT1Pa2PIuhB8G2uKjmIKGwIDAQAB");
+        Adapay.publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwN6xgd6Ad8v2hIIsQVnbt8a3JituR8o4Tc3B5WlcFR55bz4OMqrG/356Ur3cPbc2Fe8ArNd/0gZbC9q56Eb16JTkVNA/fye4SXznWxdyBPR7+guuJZHc/VW2fKH2lfZ2P3Tt0QkKZZoawYOGSMdIvO+WqK44updyax0ikK6JlNQIDAQAB";
+        try {
+            Adapay.initWithMerConfig(merConfig);
+        } catch (Exception e) {
+        }
+    }
+
+    @Test
+    public void testPay() throws BaseAdaPayException {
+        Map<String, Object> paymentParams = new HashMap<String, Object>(10);
+        List<Map<String, Object>> divMembers = new ArrayList<>();
+        divMembers.add(new HashMap<>() {{
+            put("member_id", "0");
+            put("amount", BigDecimal.valueOf(0.05));
+            put("fee_flag", "Y");
+        }});
+        divMembers.add(new HashMap<>() {{
+            put("member_id", "1110");
+            put("amount", BigDecimal.valueOf(0.05));
+        }});
+
+        paymentParams.put("app_id", appId);
+        paymentParams.put("order_no", "jsdk_payment" + System.currentTimeMillis());
+        paymentParams.put("pay_channel", "wx_pub");
+        paymentParams.put("pay_amt", "0.10");
+        paymentParams.put("goods_title", "your goods title");
+        paymentParams.put("goods_desc", "your goods desc");
+        paymentParams.put("notify_url", "http://9th.frp.izouma.com/notify/adapay/order/1");
+        paymentParams.put("description", "orderId=1");
+
+        Map<String, Object> expend = new HashMap<>();
+        expend.put("open_id", "oWJG55wLnwdVzXoKka1-DzQKOd_Y");
+        paymentParams.put("expend", expend);
+
+        Map<String, Object> payment = Payment.create(paymentParams);
+        System.out.println("payment result=" + JSON.toJSONString(payment, SerializerFeature.PrettyFormat));
+    }
+
+    @Test
+    public void testWxPay() throws BaseAdaPayException {
+        Map<String, Object> params = new HashMap<String, Object>();
+        params.put("order_no", "host_wx_lite_params_sdk_" + System.currentTimeMillis());
+        params.put("adapay_func_code", "wxpay.createOrder");
+        params.put("pay_amt", "0.02");
+        params.put("app_id", appId);
+        params.put("currency", "cny");
+        params.put("goods_title", "Your goods_title");
+        params.put("goods_desc", "Your goods_desc");
+        params.put("description", "payment Discription");
+        params.put("callback_url", "/9th/orders");
+        Map<String, Object> response = AdapayCommon.requestAdapayUits(params);
+        System.out.println("payment result=" + JSON.toJSONString(response, SerializerFeature.PrettyFormat));
+    }
+
+    @Data
+    public static class RefundOrder {
+        @ExcelProperty("交易时间")
+        private LocalDateTime time;
+
+        @ExcelProperty("订单号")
+        private String id;
+
+        @ExcelProperty("支付流水号")
+        private String serial;
+
+        @ExcelProperty("第三方订单号")
+        private String thirdId;
+
+        @ExcelProperty("支付宝/微信订单号")
+        private String txId;
+
+        @ExcelProperty("交易金额")
+        private String amount;
+
+        private String refundId;
+    }
+
+    @Test
+    public void refund() throws BaseAdaPayException {
+        List<RefundOrder> orders = EasyExcel.read("/Users/drew/Downloads/merTransDetail_0284905900625472_20211201_20211215_1639557451.xlsx")
+                .head(RefundOrder.class)
+                .registerConverter(new LocalDateConverter())
+                .registerConverter(new LocalDateTimeConverter())
+                .registerConverter(new BigIntegerConverter())
+                .sheet().doReadSync();
+        System.out.println(orders.size());
+        for (RefundOrder order : orders) {
+            String refundId = new SnowflakeIdWorker(0, 0).nextId() + "";
+            Map<String, Object> refundParams = new HashMap<>();
+            refundParams.put("refund_amt", order.getAmount());
+            refundParams.put("refund_order_no", new SnowflakeIdWorker(0, 0).nextId() + "");
+            Map<String, Object> response = Refund.create(order.getId(), refundParams);
+            order.setRefundId(refundId);
+        }
+        EasyExcel.write("/Users/drew/Desktop/refund.xlsx", RefundOrder.class).sheet("sheet")
+                .registerConverter(new LocalDateConverter())
+                .registerConverter(new LocalDateTimeConverter())
+                .registerConverter(new BigIntegerConverter())
+                .doWrite(orders);
+    }
+
+
+    @Test
+    public void queryrefund() throws BaseAdaPayException {
+        List<RefundOrder> orders = EasyExcel.read("/Users/drew/Desktop/refund.xlsx")
+                .head(RefundOrder.class)
+                .registerConverter(new LocalDateConverter())
+                .registerConverter(new LocalDateTimeConverter())
+                .registerConverter(new BigIntegerConverter())
+                .sheet().doReadSync();
+        System.out.println(orders.size());
+        List<String> success = new ArrayList<>();
+        List<String> fail = new ArrayList<>();
+        for (RefundOrder order : orders) {
+            Map<String, Object> refundParams = new HashMap<>();
+            refundParams.put("refund_order_no", order.getRefundId());
+            Map<String, Object> refund = Refund.query(refundParams);
+            System.out.println(refund.get("refunds"));
+            try {
+                if (((JSONArray) refund.get("refunds")).getJSONObject(0).getString("trans_status").equals("S")) {
+                    success.add(order.getId());
+                } else {
+                    fail.add(order.getId());
+                }
+            } catch (Exception e) {
+                fail.add(order.getId());
+            }
+        }
+        System.out.println("success:" + success.size());
+        System.out.println("fail:" + fail.size());
+        System.out.println(StringUtils.join(fail, ","));
+    }
+
+    @Test
+    public void queryList() throws BaseAdaPayException {
+        LocalDateTime start = LocalDateTime.of(2022, 1, 7, 0, 0, 0);
+        LocalDateTime end = LocalDateTime.of(2022, 1, 8, 0, 0, 0);
+
+        Map<String, Object> paymentParams = new HashMap<>();
+        int page = 0;
+        paymentParams.put("app_id", appId);
+        paymentParams.put("page_size", "20");
+        paymentParams.put("created_gte", start.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
+        paymentParams.put("created_lte", end.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
+
+        boolean hasMore = true;
+        JSONArray list = new JSONArray();
+        while (hasMore) {
+            paymentParams.put("page_index", ++page);
+            Map<String, Object> paymentList = Payment.queryList(paymentParams);
+            if (paymentList.get("payments") != null) {
+                list.addAll((JSONArray) paymentList.get("payments"));
+            }
+            hasMore = MapUtils.getBooleanValue(paymentList, "has_more");
+        }
+        System.out.println(list);
+    }
+
+    @Test
+    public void singleRefund() throws BaseAdaPayException {
+        Map<String, Object> refundParams = new HashMap<>();
+        refundParams.put("refund_amt", "250.00");
+        refundParams.put("refund_order_no", new SnowflakeIdWorker(0, 0).nextId() + "");
+        Map<String, Object> response = Refund.create("002112022022011030310341306906502942720", refundParams);
+        System.out.println(JSON.toJSONString(response, SerializerFeature.PrettyFormat));
+    }
+
+    @Test
+    public void singleRefundVerify() throws BaseAdaPayException {
+        Map<String, Object> queryParams = new HashMap<>();
+        queryParams.put("payment_id", "002112022021218280610338519802865594368");
+        Map<String, Object> refund = Refund.query(queryParams);
+        System.out.println(JSON.toJSONString(refund, SerializerFeature.PrettyFormat));
+    }
+
+    @Test
+    public void singleQuery() throws BaseAdaPayException {
+        Map<String, Object> map = Payment.query("002112022022011030310341306906502942720");
+        System.out.println(JSON.toJSONString(map, SerializerFeature.PrettyFormat));
+    }
+}