xiaoyong931011
2021-07-14 8d08ca6bdfc3dd61b0aaa7daa27308c3d59f0df1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
import cn.hutool.cache.Cache;
import cn.hutool.cache.CacheUtil;
import cn.hutool.core.bean.BeanPath;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.codec.Base64Decoder;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Console;
import cn.hutool.core.lang.WeightRandom;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.text.StrFormatter;
import cn.hutool.core.util.*;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.extra.emoji.EmojiUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.hutool.poi.excel.BigExcelWriter;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.aliyuncs.exceptions.ClientException;
import com.xzx.gc.common.Result;
import com.xzx.gc.common.constant.Constants;
import com.xzx.gc.common.constant.OrderEnum;
import com.xzx.gc.common.constant.SmsConstant;
import com.xzx.gc.common.dto.gdmap.*;
import com.xzx.gc.common.exception.RestException;
import com.xzx.gc.common.utils.*;
import com.xzx.gc.common.utils.ali.SmsUtil;
import com.xzx.gc.common.utils.gdmap.GdMapUtil;
import com.xzx.gc.common.utils.gdmap.GdTraceUtil;
import com.xzx.gc.common.utils.image.QrCodeBaseUtils;
import com.xzx.gc.common.utils.image.QrCodeGraphicsUtils;
import com.xzx.gc.entity.AddressInfo;
import com.xzx.gc.entity.HomeServiceInfo;
import com.xzx.gc.entity.PartnerFence;
import com.xzx.gc.entity.UserInfo;
import com.xzx.gc.util.BeanUtils;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import net.coobird.thumbnailator.Thumbnails;
import org.apache.commons.lang3.RandomStringUtils;
import org.junit.Test;
import org.locationtech.spatial4j.context.SpatialContext;
import org.locationtech.spatial4j.distance.DistanceUtils;
import org.locationtech.spatial4j.shape.Rectangle;
import sun.misc.Regexp;
 
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.List;
import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
 
@Slf4j
public class CodeTest {
 
 
    @Test
    public void 测试数组() throws ClientException {
        Map map=new HashMap();
        map.put("code", "123");
        SmsUtil.send("18163623487", map, "SMS_178990101", "1");
 
//        List<PartnerFence> select = new ArrayList<>();
//        List<String> collect = select.stream().map(x -> x.getFenceId()).distinct().collect(Collectors.toList());
//        System.out.println(collect.size());
 
        String format = DateUtil.format(new Date(), DateUtils.DATE_FORMAT_H);
        System.out.println(format);
 
        String format1 = DateUtil.format(DateUtil.offsetDay(new Date(), 1), DateUtils.DATE_FORMAT_YMD);
        format1=format1+" 08:00:00";
        System.out.println(format1);
        System.out.println(DateUtil.offsetHour(DateUtil.parse(format1),2));
    }
 
 
 
    @Test
    public void data(){
 
 
        List<UserInfo> list=new ArrayList<>();
        UserInfo userInfo=new UserInfo();
        userInfo.setMobilePhone("百分之10");
        userInfo.setUserId("6.2");
        list.add(userInfo);
 
        userInfo=new UserInfo();
        userInfo.setMobilePhone("百分之10");
        userInfo.setUserId("6.3");
        userInfo.setRegsterType(1);
        list.add(userInfo);
 
        UserInfo userInfo1 = list.stream().filter(x -> x.getUserId().equals("6.3")).collect(Collectors.toList()).get(0);
        int registType = Convert.toInt(userInfo1.getRegsterType());
        userInfo1.setRegsterType(registType++);
 
        for (UserInfo info : list) {
            System.out.println(info.getRegsterType());
        }
 
    }
 
 
    public  String a11(){
        try {
 
            return "3";
        }catch (Exception e){
 
        }finally {
            System.out.println("4");
        }
        return "0";
    }
 
    @Test
    public void ex(){
        Map<String, Object> row1 = new LinkedHashMap<>();
        row1.put("姓名", "张三");
        row1.put("年龄", 23);
        row1.put("成绩", 88.32);
        row1.put("是否合格", true);
        row1.put("考试日期", DateUtil.date());
 
        Map<String, Object> row2 = new LinkedHashMap<>();
        row2.put("姓名", "李四");
        row2.put("年龄", 33);
        row2.put("成绩", 59.50);
        row2.put("是否合格", false);
        row2.put("考试日期", DateUtil.date());
 
        ArrayList<Map<String, Object>> rows = CollUtil.newArrayList(row1, row2);
 
        System.out.println(rows);
 
        // 通过工具类创建writer
        ExcelWriter writer = ExcelUtil.getWriter("d:/writeMapTest.xlsx");
// 合并单元格后的标题行,使用默认标题样式
        writer.merge(row1.size() - 1, "一班成绩单");
// 一次性写出内容,使用默认样式,强制输出标题
        writer.write(rows, true);
// 关闭writer,释放内存
        writer.close();
 
   }
 
   @Test
   public void ex2(){
       List<?> row1 = CollUtil.newArrayList("aa", "bb", "cc", "dd", DateUtil.date(), 3.22676575765);
       List<?> row2 = CollUtil.newArrayList("aa1", "bb1", "cc1", "dd1", DateUtil.date(), 250.7676);
       List<?> row3 = CollUtil.newArrayList("aa2", "bb2", "cc2", "dd2", DateUtil.date(), 0.111);
       List<?> row4 = CollUtil.newArrayList("aa3", "bb3", "cc3", "dd3", DateUtil.date(), 35);
       List<?> row5 = CollUtil.newArrayList("aa4", "bb4", "cc4", "dd4", DateUtil.date(), 28.00);
 
       List<List<?>> rows = CollUtil.newArrayList(row1, row2, row3, row4, row5);
 
       BigExcelWriter writer= ExcelUtil.getBigWriter("e:/xxx.xlsx");
// 一次性写出内容,使用默认样式
       writer.write(rows);
// 关闭writer,释放内存
       writer.close();
 
   }
 
    @Test
    public void testSort(){
        Object sw = sw(0);
        Integer integer = Convert.toInt(sw);
        System.out.println(integer);
 
        System.out.println(DateUtil.today());
 
//        Map<String,Object> map=MapUtil.newHashMap();
//        map.put("time","4月2号11时43分");
//        map.put("money","4800");
//        map.put("fix","5000");
//        String content = StrUtil.format("尊敬的客户,截至{time},您的账户余额为:{money}元,已不足{fix},请及时充值,以免影响您的业务和正常交易", map);
//        SmsUtil.sendPoint("18163623487", content);
        List<UserInfo> list=new ArrayList<>();
        UserInfo userInfo=new UserInfo();
        userInfo.setUserType("1");
        userInfo.setMobilePhone("1");
        userInfo.setRegistTime("2019-09-27 12:44:22");
        list.add(userInfo);
 
        userInfo=new UserInfo();
        userInfo.setUserType("1");
//        userInfo.setMobilePhone("2");
        userInfo.setRegistTime("2019-10-27 10:44:22");
//        list.add(userInfo);
 
        userInfo=new UserInfo();
        userInfo.setUserType("2");
//        userInfo.setMobilePhone("2");
        userInfo.setRegistTime("2019-10-27 10:44:22");
        list.add(userInfo);
 
        List<String> list3=new ArrayList<>();
        list3.add("123");
        list3.add("1234");
        String join = CollUtil.join(list3, ",");
        System.out.println(join);
 
        if(false||true){
            System.out.println("aaacc");
        }
 
 
//        List<BigDecimal> list2=new ArrayList<>();
//
//        list2.add(new BigDecimal("3"));
//        list2.add(new BigDecimal("32"));
//        list2.add(new BigDecimal("1"));
//
//        CollUtil.sort(list2,new IndexedComparator<>().reversed());
//
//        System.out.println(CollUtil.getFirst(list2));
//
//        Dict dict=Dict.create();
//        List<BigDecimal> list3= (List<BigDecimal>) dict.get("fz");
//        System.out.println(list3);
//
//
//        System.out.println("group");
//
//        List<List<UserInfo>> registTime1 = CollUtils.groupByField(list, "registTime","1");
//        System.out.println(registTime1);
//
//
//        PartnerConfig partnerConfig=new PartnerConfig();
//        partnerConfig.setDelFlag(Convert.toByte(0));
//
//        System.out.println("错误"+partnerConfig.getDelFlag());
 
    }
 
 
    @Test
    public void 权重(){
 
        UserInfo userInfo=new UserInfo();
        userInfo.setMobilePhone("百分之10");
        userInfo.setUserId("6.2");
 
        UserInfo userInfo2=new UserInfo();
        userInfo2.setMobilePhone("百分之30");
        userInfo2.setUserId("3.222222");
 
        UserInfo userInfo3=new UserInfo();
        userInfo3.setMobilePhone("百分之60");
        userInfo3.setUserId("1");
 
        ArrayList<UserInfo> userInfos = CollUtil.newArrayList(userInfo, userInfo2, userInfo3);
 
        WeightRandom.WeightObj<UserInfo> weightObj= new WeightRandom.WeightObj(userInfo,0.01);
        WeightRandom.WeightObj<UserInfo> weightObj2= new WeightRandom.WeightObj(userInfo2,0.3);
        WeightRandom.WeightObj<UserInfo> weightObj3= new WeightRandom.WeightObj(userInfo3,0.6);
        WeightRandom<UserInfo> random = RandomUtil.weightRandom(CollUtil.newArrayList(weightObj, weightObj2, weightObj3));
 
        for (int i = 0; i < 10; i++) {
            UserInfo next = random.next();
//            System.out.println(next.getMobilePhone());
        }
 
//        CollUtil.sort(userInfos,new PropertyComparator<>("userId"));
 
        CollUtil.sort(userInfos, (o1, o2) -> {
            if(Convert.toBigDecimal(o1.getUserId()).compareTo(Convert.toBigDecimal(o2.getUserId()))>0){
                return -1;
            }else if(Convert.toBigDecimal(o1.getUserId()).compareTo(Convert.toBigDecimal(o2.getUserId()))==0){
                return 0;
            }else {
                return 1;
            }
        });
 
        for (UserInfo info : userInfos) {
            System.out.println(info.getUserId());
        }
 
    }
 
    public Object sw(int a){
        switch (a){
            case 0:
                System.out.println("00");
                return "22";
            case 1 :
                System.out.println("11");
                break;
        }
        System.out.println("2233");
        return null;
    }
 
    @Test
    public void changeName(){
 
//        String dir="D:\\mp3\\aa";
//        String pre="img_";
//
//        File file = FileUtil.file(dir);
//        File[] files = file.listFiles();
//        int i=1;
//        for (File file1 : files) {
//                FileUtil.rename(file1,pre+i+".jpg",false,true);
//                i++;
//        }
 
//        String trade_account_log_queue = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "trade_account_log_queue");
//        System.out.println(trade_account_log_queue);
//
//        DateTime dateTime = DateUtil.offsetMonth(new Date(), -3);
//        System.out.println(dateTime.toJdkDate());
 
//        String phone="2,3";
//        String[] strings = StrUtil.splitToArray(phone, Convert.toChar(","));
//
//        for (String string : strings) {
//            System.out.println(string);
//        }
 
        List<PartnerFence> select=CollUtil.newArrayList();
 
        String join = CollUtil.join(select, "、");
        System.out.println(join);
 
//        PartnerFence partnerFence=new PartnerFence();
//        partnerFence.setFenceId("2");
//        select.add(partnerFence);
//        PartnerFence partnerFence2=new PartnerFence();
//        partnerFence2.setFenceId("3");
//        select.add(partnerFence2);
//        List<String> collect = select.stream().map(x -> x.getFenceId()).distinct().collect(Collectors.toList());
//        for (String s : collect) {
//            System.out.println(s);
//        }
    }
 
 
    public void mysql() throws Exception {
        Class.forName("com.mysql.cj.jdbc.Driver");
        System.out.println("成功加载MySQL驱动!");
 
        String url="jdbc:mysql://localhost:3306/t_xzxdev?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";    //JDBC的URL
        Connection conn;
 
        conn = DriverManager.getConnection(url,    "root","admin!@#00");//url 账号 密码
        Statement stmt = conn.createStatement(); //创建Statement对象
        System.out.println("成功连接到数据库 !");
 
        String sql = "select * from xzx_user_trace_info where  create_time='2020-07-04'";    //要执行的SQL
        ResultSet rs = stmt.executeQuery(sql);//创建数据对象
        while (rs.next()){
            String key=rs.getString(3);
            String service=rs.getString(4);
            String tid=rs.getString(5);
            String traceId=rs.getString(6);
            CommonTraceDto commonTraceDto=new CommonTraceDto();
            commonTraceDto.setKey(key);
            commonTraceDto.setSid(service);
            commonTraceDto.setTid(tid);
            commonTraceDto.setTrid(traceId);
            GdTraceUtil.deleteTrace(commonTraceDto);
        }
        rs.close();
        stmt.close();
        conn.close();
 
    }
 
    @Test
    public void testgd(){
//        Result a64d28b2e036f4688b05916ef321b17d = GdTraceUtil.findTerminal("a64d28b2e036f4688b05916ef321b17d", "163516", "270101239", "");
//        Console.log(a64d28b2e036f4688b05916ef321b17d);
 
        String key="73c5b455875594781c87d24903680274";
//
//         GdTraceUtil.createTraceProp(key, "163817", "address", "string");
//         GdTraceUtil.createTraceProp(key, "163998", "address", "string");
//         GdTraceUtil.createTraceProp(key, "164018", "address", "string");
 
         key="921f67e45fe9afe7d2730658e147ca2a";
        Result<JSONArray> fence = GdMapUtil.findFence(key, null, null);
        Console.log(fence);
    }
 
 
    @Test
    public void testdel() throws Exception {
//        GdTraceUtil.deleteTrace()
        mysql();
    }
 
 
    @Test
    public  void 是否在围栏(){
//        System.out.println("123");
//        String key="d985739d075432bcbb3c0e8115c22bf1";
//        String sid="160778";
//        Result se1 = GdTraceUtil.createService(key, "se3");
//        Result se2 = GdTraceUtil.createService(key, "se4");
//        GdTraceUtil.createTerminal(key,se1.getData().toString(),"董杰回收员2");
//        GdTraceUtil.findTerminal(key,se1.getData().toString(),"董杰回收员2");
//        GdTraceUtil.findTerminal(key,se2.getData().toString(),"董杰回收员2");
 
//        String testKey="ab5180b0423f279143d006177f330b7a";
        String key="a64d28b2e036f4688b05916ef321b17d";
//        Result<JSONArray> result = GdMapUtil.findFence(keyReal, null, null);
//        JSONArray data = result.getData();
//        for (Object datum : data) {
//            Console.log(datum);
//            JSONObject jsonObject = JSONUtil.parseObj(datum);
//            String gid = jsonObject.getStr("gid");
//            if(!gid.equals("dabaff06-bda3-40c3-bc43-57818a0a2c6f")){
//                GdMapUtil.deleteFence(testKey,gid);
//            }
//        }
 
        //宁乡正式
        key="f28decf4aed2d20104c16d3532682810";
        String lon="112.550025";
        String lat="28.251580";
        Result inFence = GdMapUtil.isInFence(lon + "," + lat + "," + DateUtil.currentSeconds(), GdMapUtil.getDiu(key),key);
//        GdTraceUtil.deleteTerminal(key,sid,"1");
 
//        Result<JSONArray> fence = GdMapUtil.findFence(key, null, null);
//        for (Object o : fence.getData()) {
//            JSONObject jsonObject= (JSONObject) o;
//            System.out.println(jsonObject.getStr("points"));
//        }
 
//        GdMapUtil.deleteFence(key,"c34683d4-7385-415f-88e0-04990403dca6");
    }
 
 
    @Test
    public void  测试查询围栏(){
        String key="ab5180b0423f279143d006177f330b7a";
        String gid="dabaff06-bda3-40c3-bc43-57818a0a2c6f";
        Result<JSONArray> fence = GdMapUtil.findFence(key, gid, null);
        for (Object o : fence.getData()) {
            JSONObject jsonObject= (JSONObject) o;
            System.out.println(jsonObject.getStr("points"));
        }
    }
 
 
    @Test
    public void 拷贝(){
        HomeServiceInfo byId=new HomeServiceInfo();
        byId.setShowFlag(Convert.toShort(1));
        byId.setId(Convert.toLong(100));
 
        HomeServiceInfo homeServiceAddDTO=new HomeServiceInfo();
        homeServiceAddDTO.setShowFlag(Convert.toShort(2));
 
        BeanUtil.copyProperties(byId,homeServiceAddDTO,BeanUtils.getNotNullPropertyNames(homeServiceAddDTO));
 
        System.out.println(homeServiceAddDTO.getId());
        System.out.println(homeServiceAddDTO.getShowFlag());
    }
 
    @Test
    public void 创建服务(){
        //开福区测试key
        String key="d985739d075432bcbb3c0e8115c22bf1";
        Result service1 = GdTraceUtil.createService(key, key+"_"+OrderEnum.推广员全天轨迹.getValue()); //2
        Result service2 = GdTraceUtil.createService(key, key+"_"+OrderEnum.回收员订单轨迹.getValue()); //1
        Result service3 = GdTraceUtil.createService(key, key+"_"+OrderEnum.回收员全天轨迹.getValue());  //3
    }
 
    @Test
    public void 创建终端(){
        //开福区测试key
        String key="d985739d075432bcbb3c0e8115c22bf1";
        String sid="164776";
        GdTraceUtil.createTerminal(key,sid,"USER1260718805714862080");
    }
 
    @Test
    public void testService(){
//        FindTraceDto findTraceDto = new FindTraceDto();
//        findTraceDto.setKey("a64d28b2e036f4688b05916ef321b17d");
//        findTraceDto.setSid("163477");
//        findTraceDto.setTid("270247841");
//        findTraceDto.setTrid("300");
//        Result<List<TrackDto>> trace = GdTraceUtil.findTrace(findTraceDto);
//        List<TrackDto> data = trace.getData();
//        Console.log(data);
 
        /**  f28decf4aed2d20104c16d3532682810
         13:35:19.871 [main] DEBUG com.xzx.gc.common.utils.gdmap.GdTraceUtil - 查询服务成功,id:164598,名字:回收员订单轨迹
         13:35:19.876 [main] DEBUG com.xzx.gc.common.utils.gdmap.GdTraceUtil - 查询服务成功,id:164618,名字:推广员全天轨迹
         13:35:19.876 [main] DEBUG com.xzx.gc.common.utils.gdmap.GdTraceUtil - 查询服务成功,id:164638,名字:回收员全天轨迹
         */
//        Result<JSONArray> result = GdTraceUtil.findService("ec8dbc1f5b3c681df48f40f8f6045b49");
 
//        String key="ab5180b0423f279143d006177f330b7a";
//        GdTraceUtil.createService(key,key+"_"+OrderEnum.推广员全天轨迹.name());
//        GdTraceUtil.createService(key,key+"_"+OrderEnum.回收员订单轨迹.name());
//        GdTraceUtil.createService(key,key+"_"+OrderEnum.回收员全天轨迹.name());
 
//        FindTraceDto findTraceDto = new FindTraceDto();
//        findTraceDto.setKey("a64d28b2e036f4688b05916ef321b17d");
//        findTraceDto.setSid("164837");
//        findTraceDto.setTid("270310092");
//        findTraceDto.setTrid("60");
//        GdTraceUtil.findTrace(findTraceDto);
    }
 
 
    @Test
    public void test(){
 
    }
 
    @Test
    public void testAuth(){
//        String version="v1.41";
//        if(StrUtil.isNotBlank(version)&&version.startsWith("v")) {
//            double versionDouble = 0;
//            try {
//                versionDouble = Convert.toDouble(version.substring(1));
//            } catch (Exception e) {
//            }
//            if (NumberUtil.compare(versionDouble, Convert.toDouble("1.2")) > 0) {
//                System.out.println(111);
//            }
//        }
 
//        GdReverseGEODto gdReverseGEODto = new GdReverseGEODto();
//        gdReverseGEODto.setLocation("112.941143666111111111" + "," + "28.128611073482222221");
//        Result areaInfo = GdMapUtil.getAreaInfo(gdReverseGEODto, 3);
//        if (areaInfo.getCode() == 0) {
//            String townName = (String) areaInfo.getData();
//            System.out.println(townName);
//        }
//        Long a=3L;
//        System.out.println(a==3);
//        System.out.println(a.equals(3));
//
//
//        String s="aa【反倒是反倒是】;\nb【aa】;\nbc【cc】;\n";
//
//        String s1 = s.replaceAll("【.+?】", "");
//        System.out.println(s1);
 
//        DateTime parse3 = DateUtil.parse("2020-01-20 09:22:57", DateUtils.DATE_FORMAT_YMD);
//        DateTime nowData = DateUtil.parse(DateUtil.now(), DateUtils.DATE_FORMAT_YMD);
//
//        //当天下单用户量
//        if (DateUtil.isSameDay(parse3, nowData)) {
////            System.out.println(22);
//        }
//
//        String s = DateUtil.parse("2020-01-20 09:22:57", DateUtils.DATE_FORMAT_YMD).toString(DateUtils.DATE_FORMAT_YMD);
//
//
//
////        System.out.println(s);
//
//        DateTime parse = DateUtil.parse("2020-01-20 09:22:57", DateUtils.DATE_FORMAT_YMDHMS);
//        DateTime dateTime = DateUtil.offsetHour(parse, 12);
//        System.out.println(dateTime.toString());
 
 
//        UserInfo userInfo=new UserInfo();
//        userInfo.setMobilePhone("123");
//
//        String a=userInfo.getMobilePhone();
//        a=a+"44";
//        System.out.println(userInfo.getMobilePhone());
 
//        double distance= Double.MAX_VALUE;
//        System.out.println(distance);
    }
 
    @Test
    public void testSms() throws ClientException {
//        Map map=new HashMap();
//        map.put("date","2019-10-12 18:00:00");
////        map.put( "valid_code", "12345");
//        String templateCode=Constants.ORDER_SMS_CANCLE_ZT_TEMPLATE;
////        String templateCode=Constants.ORDER_SMS_ZT_TEMPLATE;
//        String phoneNum="18163623487";
////        SmsUtil.send(phoneNum, map, templateCode, CommonEnum.助通短信.getValue());
//
//
//
//        String s1 = NumberUtil.roundStr("4.222222", 0, RoundingMode.DOWN);
////        System.out.println(s1);
//
//        String parse = DateUtil.parse("2019-10-18 8:00:00", DateUtils.DATE_FORMAT_YMD).toDateStr();
//        System.out.println(parse);
 
//        Long a=3L;
//        Long a2=new Long("3");
//
//        System.out.println(a.equals(a2));
//        System.out.println(a==a2);
 
//        Map map = new HashMap();
//        map.put("date", DateUtil.now());
//        String templateCode = Constants.ORDER_SMS_CANCLE_ZT_TEMPLATE;
//            String phoneNum ="18163623487";
//            SmsUtil.send(phoneNum, map, templateCode, CommonEnum.助通短信.getValue());
        Map<String,Object> map=new HashMap<>();
        map.put("a","123");
        String a= (String) map.get("a");
        System.out.println(a);
        map.clear();
        map.put("b","456");
        a= (String) map.get("b");
        String a1= (String) map.get("a");
        System.out.println(a);
        System.out.println("=="+map.size());
    }
 
    @Test
    public  void chin(){
        //ReUtil.RE_CHINESE
//        String s=" / by zero";
//        String s1="失败";
//        String s2="失败:订单:"+123;
//        boolean match = isChinese(s);
//        System.out.println(match);
//        match = isChinese(s1);
//        System.out.println(match);
//        match =  isChinese(s2);
//        System.out.println(match);
 
        UserInfo user=new UserInfo();
        user.setMobilePhone("456");
        String mobilePhone = user.getMobilePhone();
        user.setMobilePhone("123");
        System.out.println(mobilePhone);
 
        String json="{         \"startRow\": 1,         \"navigatepageNums\": [             1         ],         \"prePage\": 0,         \"hasNextPage\": false,         \"nextPage\": 0,         \"pageSize\": 10,         \"endRow\": 1,         \"list\": [             {                 \"orderType\": \"1\",                 \"createUserId\": \"35\",                 \"queueNum\": 1,                 \"address\": \"皇爵花园酒店(省政府店)\",                 \"receiver\": \"22\",                 \"distance\": \"14.382\",                 \"star\": \"4.5\",                 \"orderId\": \"DD1215092224803602432\",                 \"orderItemList\": [                 ],                 \"receiverName\": \"要你好看\",                 \"latitude\": \"28.116697\",                 \"orderStatus\": \"2\",                 \"relaPhone\": \"15616122416\",                 \"type\": 0,                 \"appraiseFlag\": false,                 \"relaName\": \"说过的\",                 \"receiverPhone\": \"15616122416\",                 \"createTime\": \"2020-01-09 10:05:36\",                 \"reserveTime\": \"01-09 15:10:00\",                 \"reserveTimeForYear\": \"2020-01-09 15:10:00\",                 \"completeOrderNum\": 0,                 \"addressArea\": \"湖南省长沙市天心区正塘坡路188省政府东门、天心区政府北门\",                 \"longitude\": \"112.989917\"             }         ],         \"pageNum\": 1,         \"navigatePages\": 8,         \"navigateFirstPage\": 1,         \"total\": 1,         \"pages\": 1,         \"size\": 1,         \"isLastPage\": true,         \"hasPreviousPage\": false,         \"navigateLastPage\": 1,         \"isFirstPage\": true     }";
        String s = JSONUtil.toJsonPrettyStr(json);
 
        JSON parse = JSONUtil.parse(json);
 
//        String s1 = JSONUtil.toJsonStr(parse, 10);
        String s1="";
        final StringWriter sw = new StringWriter();
        synchronized (sw.getBuffer()) {
              s1 =  parse.write(sw, 4, 10).toString();
        }
 
        System.out.println(s1);
 
    }
 
    @Test
    public void init(){
//        SystemUtil.dumpSystemInfo();
//        String s="DD1205284627149881344,DD1205293808070295552,DD1205306356664500224,DD1205309314437349376,DD1205309997513310208,DD1205334232738693120,DD1205343573566947328,DD1205355320264753152,DD1205358748927918080,DD1205363389166125056,DD1205377222937018368,DD1205403644896346112,DD1205408141030850560,DD1205413478102335488,DD1205439123851182080,DD1205826909783588864,DD1206006978862776320,DD1206015561448947712,DD1206106253340835840,DD1206114363128283136,DD1206130462351818752,DD1206130632695087104,DD1206205858132918272,DD1206366520192663552,DD1206394308408770560,DD1206399246501281792,DD1206401582418231296,DD1206408873813082112,DD1206411105472217088,DD1206436449965178880,DD1206456871020527616,DD1206478581585281024,DD1206492784303931392,DD1206501305384828928,DD1206503893706604544,DD1206514464707444736,DD1206727638916399104,DD1206733844959592448,DD1206740309631959040,DD1206768272201089024,DD1206802031961047040,DD1206806635373264896,DD1206817943925686272,DD1206824291254009856,DD1206826430575542272,DD1206832332280037376,DD1206838742954934272,DD1206847019201724416,DD1206851561762979840,DD1206871285628534784,DD1206877357193953280,DD1206901865900539904,DD1207099026097438720,DD1207101762754969600,DD1207101865762881536,DD1207121802808131584,DD1207133869803962368,DD1207138722303311872,DD1207146429227859968,DD1207171357767499776,DD1207173865759965184,DD1207198889858433024,DD1207199761464164352,DD1207199950157512704,DD1207206604815073280,DD1207207277640155136";
//        System.out.println(s.split(",").length);
 
//        String s="3.2222222222222";
//        String s2="3.22234";
//        String s3="3";
//        String s4="3.333236";
//
//        System.out.println(NumberUtil.toBigDecimal(NumberUtil.roundStr(s, 6, RoundingMode.DOWN)));
//        System.out.println(Convert.toDouble(NumberUtil.roundStr(s2, 6, RoundingMode.DOWN)));
//        System.out.println(Convert.toDouble(NumberUtil.roundStr(s3, 6, RoundingMode.DOWN)));
//        System.out.println(NumberUtil.roundStr(s4, 6, RoundingMode.DOWN));
 
//        List<String> list=new ArrayList<>();
 
        BigDecimal bigDecimal=new BigDecimal("455");
        BigDecimal round = NumberUtil.round(bigDecimal, 2, RoundingMode.DOWN);
        System.out.println(round);
//        list.add("1");
//
//        for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) {
//            String next =  iterator.next();
//            iterator.remove();
//        }
//
//        for (String s : list) {
//            System.out.println(s);
//        }
 
 
    }
 
 
    // 根据Unicode编码完美的判断中文汉字和符号
    private static boolean isChinese(char c) {
        Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
        if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
                || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
                || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
                || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
                || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
                || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
                || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
            return true;
        }
        return false;
    }
 
 
    //    完整的判断中文汉字和符号
    public static boolean isChinese(String strName) {
        char[] ch = strName.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            char c = ch[i];
            if (isChinese(c)) {
                return true;
            }
        }
        return false;
    }
 
 
    @Test
    public void 生成海报() throws Exception {
//        String spuName = "大哥哥";
////        String linkUrl = "https://w.url.cn/s/AiNukkx";
//        boolean logoStatus = false;
//        String logoPath = "https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTLG86dQHEcYs1rmEMcYBwXHUnzmwo8ujQwRhmm7bMnsRsCqmHCpNicy71HR5ZNNibeAG0ykEiacr3pUw/132";
//        String backgroundUrl = "d:/poster_login_bg.png";
////        String spuPicUrl = folderPath + "/item.jpg";
//        String spuLeaguerPrice = "大哥哥";
//        String spuPrice = "邀请你加入小棕熊环保一起赚钱";
//       byte[] linkUrl= CodeTest.generateAcode2("123","pages/index/index","");
////        GraphicsUtils.createPosterByRedTemplate(linkUrl, logoStatus, logoPath, backgroundUrl, "",
////                spuLeaguerPrice, spuPrice, spuName);
//
//        System.out.println("2".equals(null));
//        BigDecimal rewardMoneyBigDecimal=new BigDecimal("0.234500000");
//        BigDecimal mul=new BigDecimal("1");
//        BigDecimal add = NumberUtil.mul(rewardMoneyBigDecimal, mul);
//        System.out.println(Convert.toStr(add));
//        BigDecimal bigDecimal = Convert.toBigDecimal("0");
//        String s = NumberUtil.roundStr(Convert.toStr(bigDecimal), 2, RoundingMode.DOWN);
//        System.out.println(s);
 
//        Map map=new HashMap();
//        map.put("other_number",Convert.toStr("2.332","0"));
//        map.put("amount","1.9");
//        map.put("others",Convert.toStr("321.11","0"));
////            SmsUtil.send("18163623487", map, "4338", "2");
//
//        String content=StrUtil.format("【小棕熊到家】回收员帮你下的订单已完成,回收重量{other_number}kg,金额{amount}元,返利{others}元",map);
//        SmsUtil.sendPoint("18163623487",content);
 
 
        String[] s22=new String[]{"18684731218","18273181385","18008483553","18390886257","18670339967","15211094627","15274808342","13975860004","13755060468","18216239027"};
        String[] s33=new String[10];
        s33[0]="https://wx.qlogo.cn/mmopen/vi_32/U5jyRWgg4zsFA44k5ySflpC7NMNicibS6YDUMFnaDnokJaBW69J7OQbklYibNQ0qbgo270asYJibfv58t3JeMAGvXg/132";
        s33[1]="https://wx.qlogo.cn/mmopen/vi_32/XIRRvR0SYoy1ia6GxFX1bGiak6MJFibIq1uzYxsSjoghTewib4TMG1wib3MCOM7KTVMibrrJUE36a708DsRFIt8WyV7Q/132";
        s33[2]="https://wx.qlogo.cn/mmopen/vi_32/M28iciaQHnYx9ibOxwQG2j8ZQKq8fMykM6cUYGxsI9PUiar5yh4pV35FgPEShlRQE2n1xicKcibNGia3YmJKWqI3Dkreg/132";
        s33[3]="https://wx.qlogo.cn/mmopen/vi_32/0iaiauALtEFdWl06BQwc7Tl4FPscDbFID4icUasCZWkrxgg2gMziaKIDhy259A3MxnceLNZBIYXgKA6gbfNHPnYaNg/132";
        s33[4]="https://wx.qlogo.cn/mmopen/vi_32/nQKC0vQbYH5CC491ftO1jLV3euu3zwJaG95wu3X22cqDFKykqhCbJAobr0nwQSiaIq3aG9O5MRiajSHNdo6Y1GZg/132";
        s33[5]="https://wx.qlogo.cn/mmopen/vi_32/wTfCic9AZ7tuQxNr2TVJHx8dLGXCW1rKYBtkaQYoclp0JjhRZomvzGlVHOd2GlObQoX6UbxqLzQNrg7GYEkdoqQ/132";
        s33[6]="https://wx.qlogo.cn/mmopen/vi_32/icTj2kgLGptIPaJMtSlykOpic7wglAfxAHVhXIlk1HDohwUZVvSQBnnPgGUIkZDgjDpZ31rTicXgWhBzX548LArCQ/132";
        s33[7]="https://wx.qlogo.cn/mmopen/vi_32/WLofJh4MdlLMcGUCDBOibtHj0MsKN7NvMdw3IWck3uewXbfZOF7x1Ym5pQHvIibmr2IhZkicRSBka36bOh7Gv6IMA/132";
        s33[8]="https://wx.qlogo.cn/mmopen/vi_32/WaoJzYaQHictDAUE1jU5kvwuBJHmMnaibmCFvfYrNnbWUm0xWVoJl2b6w44lNOaG86ASvibUzFvU12jWPIh08BSmw/132";
        s33[9]="https://wx.qlogo.cn/mmopen/vi_32/D3NLzo5CozKPic4nn92EO9HibWhxAv9nSCh1XEiaFwFvOzWbFCyDiaQro391GR0ItaoATLoCXnGicqiaWamDLvI8GrZg/132";
 
//        String[] s22=new String[]{"13755023860"};
//        String[] s33=new String[1];
//        s33[0]="https://wx.qlogo.cn/mmopen/vi_32/EDlCibFBaaa9h7A697WaZicQh0V4oUqBs3RakW1MOAILQ2gWld90GS5nHky0jACQsIvqgSLx6xPlp1N6oV6aqPww/132";
 
 
 
        for (int i = 0; i < s22.length; i++) {
            String s1=s22[i];
            String aa=s33[i];
            if("1".equals(aa)){
                aa="http://localhost/static/微信图片_20191221221856.jpg";
                System.out.println(s1);
            }
            //海报图名称
            String imageName="/"+s1 +"_poster.jpg";
 
 
            //二维码图名称
            String imgName="/user_" + s1 + "_acode.jpg";
            generateAcode("poster=" + s1, "pages/login/login", imgName,  "800px");
            String path=Constants.IMG_UPLOAD_PATH+imgName;
//            String backgroundUrl=Constants.IMG_TEMPALRE_PATH+"/微信图片_20191221220256.jpg";
            String backgroundUrl=Constants.IMG_TEMPALRE_PATH+"/user_share_poster_bg.png";
            try {
                s1 = StrUtil.replace(s1, 3, 7, Convert.toChar("*"));
                generatePoster(imageName, path, aa, backgroundUrl, s1);
            } catch (Exception e) {
                ExceptionUtils.err("生成分享海报失败",e);
            }
        }
 
 
 
    }
 
    @Test
    public void changeMoney(){
//        System.out.println(  intChange2Str(111));
//        System.out.println(  intChange2Str(1));
//        System.out.println(  intChange2Str(10000));
//        System.out.println(   intChange2Str(100000));
//
//        String do6aVAda831U871r = SecurityUtil.decrypt("Do6aVAda831U871r", "tsUdeys3Z0itHh9IoPBoEg==");
//        System.out.println(do6aVAda831U871r);
        BigDecimal bigDecimal=new BigDecimal("5.21");
        BigDecimal bigDecimal2=new BigDecimal("-0.01");
        BigDecimal sub = NumberUtil.add(bigDecimal, bigDecimal2);
//        BigDecimal sub2 = NumberUtil.sub(bigDecimal, bigDecimal2);
//        System.out.println(sub.toString());
//        System.out.println(sub2.toString());
//        BigDecimal shareRatio=new BigDecimal("0.004");
//        shareRatio=NumberUtil.round(shareRatio,2, RoundingMode.HALF_UP);
//        System.out.println(shareRatio);
 
        if(2==2){
            System.out.println("456");
//            return;
        }
        System.out.println("789");
        int type=0;
        switch (type){
            case 0:
                if(1==1){
                    break;
                }
                System.out.println("123");
                break;
        }
 
    }
 
    private String intChange2Str(int number) {
        String str = "";
        if (number <= 0) {
            str = "";
        } else if (number < 10000) {
            str = number + "阅读";
        } else {
            double d = (double) number;
            double num = d / 10000;//1.将数字转换成以万为单位的数字
 
            BigDecimal b = new BigDecimal(num);
            double f1 = b.setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue();//2.转换后的数字四舍五入保留小数点后一位;
            str = f1 + "万阅读";
        }
        return str;
    }
    @Test
    public void test121(){
//        String s="1,2,3";
//        String s1="2,4,5";
//        String s2="7,4,5";
//
//
//        Collection<String> intersection = CollUtil.intersection(Arrays.asList(s.split(",")), Arrays.asList(s1.split(",")));
//
//        System.out.println(intersection.toArray().length);
//        for (String s3 : intersection) {
//            System.out.println(s3);
//        }
//        Collection<String> intersection2 = CollUtil.intersection(Arrays.asList(s.split(",")), Arrays.asList(s2.split(",")));
//        System.out.println(intersection2.toArray().length);
//
//        Result inFence = GdMapUtil.isInFence("112.980288" + "," + "28.239595" + "," + DateUtil.currentSeconds(), GdMapUtil.getDiu("123"),Constants.GD_MAP_KEY);
//        System.out.println(inFence.getData().toString());
 
//        List<OrderInfo> byIds =new ArrayList<>();
//        OrderInfo orderInfo=new OrderInfo();
//        orderInfo.setCreateUserId("1");
//        orderInfo.setOrderId("1");
//        byIds.add(orderInfo);
//
//        orderInfo=new OrderInfo();
//        orderInfo.setCreateUserId("2");
//        orderInfo.setOrderId("2");
//        byIds.add(orderInfo);
//
//
//        orderInfo=new OrderInfo();
//        orderInfo.setCreateUserId("1");
//        orderInfo.setOrderId("3");
//        byIds.add(orderInfo);
//
//        orderInfo=new OrderInfo();
//        orderInfo.setCreateUserId("1");
//        orderInfo.setOrderId("4");
//        byIds.add(orderInfo);
//
//        //先筛选是被推广的用户
//        ArrayList<OrderInfo> collect = byIds.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(OrderInfo::getCreateUserId))), ArrayList::new));
//
//        for (OrderInfo info : collect) {
//            System.out.println(info.getCreateUserId()+"==="+info.getOrderId());
//        }
 
        GdGEODto gdGEODto=new GdGEODto();
//        if(StrUtil.isNotBlank(addressReq.getCityName())) {
//            gdGEODto.setCity(addressReq.getCityName());
//        }
 
        gdGEODto.setAddress("湖南省长沙市雨花区奥林匹克花园11栋104门面");
        Result locationByAddress = GdMapUtil.getLocationByAddress(gdGEODto);
        if(locationByAddress.getCode()==0&&locationByAddress.getData()!=null){
            System.out.println(locationByAddress.getData().toString().split(",")[0]);
            System.out.println(locationByAddress.getData().toString().split(",")[1]);
        }
 
        GdReverseGEODto gdReverseGEODto = new GdReverseGEODto();
        gdReverseGEODto.setLocation(locationByAddress.getData().toString().split(",")[0]+","+locationByAddress.getData().toString().split(",")[1]);
        Result areaInfo = GdMapUtil.getAreaInfo(gdReverseGEODto, 0);
        if(areaInfo.getCode()==0) {
            AddressInfo addressInfo1 = (AddressInfo) areaInfo.getData();
            String adcode = addressInfo1.getAdcode();
            System.out.println(adcode);
        }
    }
 
    @Test
    public void testTime(){
//        String s="2019-12-23 13:56:18";
//        String date=DateUtil.now();
//        long between = DateUtil.between(DateUtil.parse(s,DateUtils.DATE_FORMAT_YMDHMS), DateUtil.parse(date,DateUtils.DATE_FORMAT_YMDHMS), DateUnit.SECOND);
//        System.out.println(between);
//
//
//        String emoji = EmojiUtil.toUnicode(":smile:");//😄
//        System.out.println(emoji);
//        System.out.println("1"+EmojiUtil.removeAllEmojis(emoji));
//
//        System.out.println(DateUtil.date().toDateStr());
//
//        DateTime parse = DateUtil.parse(s, DateUtils.DATE_FORMAT_YMD);
//        System.out.println(parse);
//        Set<String> strings=new HashSet<>();
//        strings.add("a");
//        strings.add("a");
////        System.out.println(strings.size());
//
//        System.out.println(Convert.toInt("1.4"));
//        System.out.println(Convert.toInt("2.8"));
//
//        StrBuilder strBuilder=StrBuilder.create();
//        strBuilder.append("33,22,11,");
//        String s = strBuilder.subString(0, strBuilder.length() - 1);
//        System.out.println(s);
 
//        DateTime parse = DateUtil.parse("2019-12-30 13:40:54", DateUtils.DATE_FORMAT_YMD);
//        DateTime parse2= DateUtil.parse(DateUtil.now(),DateUtils.DATE_FORMAT_YMD);
//        if(!DateUtil.isSameDay(parse,parse2)){
//            System.out.println(111);
//        }
//
//        String s = JSONUtil.toJsonPrettyStr("222");
//        System.out.println(s);
 
        String s="b28=";
        String s1 = Base64Decoder.decodeStr(s);
        System.out.println(s1);
    }
 
    /**
     * @param imgName 图片名称
     * @param codePath  二维码路径
     * @param avata 头像全路径
     * @param backgroundUrl 背景图地址
     * @param spuName  文字
     * @throws Exception
     */
    public  String generatePoster(String imgName,String codePath, String avata,
                                  String backgroundUrl, String spuName)
            throws Exception {
        String urlPrefix="";
        String imgPath=Constants.IMG_UPLOAD_PATH+imgName;
        //背景图
        BufferedImage bufferImage = QrCodeBaseUtils.imageToBufferedImage(backgroundUrl);
        Graphics2D graphics = bufferImage.createGraphics();
        graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        //小程序码
        BufferedImage qrCodeImage = ImageIO.read(new File(codePath));
        graphics.drawImage(qrCodeImage, 100, 340, null);
        //头像
        BufferedImage logoBufferImage = Thumbnails.of(new URL(avata)).size(150, 150).asBufferedImage();
        graphics.drawImage(logoBufferImage, 57, 94, null);
        //文字
        Font font = new Font("黑体", Font.BOLD, 40);
        graphics.setFont(font);
        graphics.setPaint(Color.black);
        graphics.drawString(spuName, 230, 160);
        QrCodeGraphicsUtils.savePic(bufferImage, 1, "jpg", 0.8, imgPath);
        graphics.dispose();
        return urlPrefix+"/"+imgName;
    }
 
    public  String generateAcode(String scene,String path,String imgName,String width){
        String urlPrefix="";
        String imgPath=Constants.IMG_UPLOAD_PATH+imgName;
        if(!FileUtil.exist(imgPath)){
            //调用二维码接口
            String url = StrFormatter.format("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={}", getAccessToken());
            cn.hutool.json.JSONObject obj = JSONUtil.createObj();
            //最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,
            // 其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
            obj.put("scene", scene);
            //必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index,
            // 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面
            obj.put("path", path);
            //最小 280px,最大 1280px
            obj.put("width", width);
            obj.put("auto_color", false);
            cn.hutool.json.JSONObject obj2 = JSONUtil.createObj();
            obj2.put("r", 0);
            obj2.put("g", 0);
            obj2.put("b", 0);
            obj.put("line_color", obj2);
            //是否需要透明底色,为 true 时,生成透明底色的小程序码
            obj.put("is_hyaline", false);
            byte[] data = HttpRequest.post(url).body(obj.toString(), "application/json").execute().bodyBytes();
            FileUtil.writeBytes(data, imgPath);
        }
        return urlPrefix+"/"+imgName;
    }
 
    /**
     * 获取微信token
     * @return
     */
    public static  String getAccessToken(){
        //获取微信accessToken
            String url=StrFormatter.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={}&secret={}",Constants.WX_APPID,Constants.WX_SECRET);
            String s = HttpUtil.get(url);
            cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(s);
            String access_token = jsonObject.getStr("access_token");
            String expires_in = jsonObject.getStr("expires_in");
        return access_token;
    }
 
    @Test
    public void abc(){
        //获取微信accessToken
//        String url=StrFormatter.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={}&secret={}",Constants.WX_APPID,Constants.WX_SECRET);
//        String s = HttpUtil.get(url);
//        cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(s);
//        String access_token = jsonObject.getStr("access_token");
//        String expires_in = jsonObject.getStr("expires_in");
 
        String url=StrFormatter.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={}&secret={}",Constants.WX_APPID,Constants.WX_SECRET);
//        String s = HttpUtil.get(url);
//        cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(s);
//        String access_token = jsonObject.getStr("access_token");
//        String expires_in = jsonObject.getStr("expires_in");
//        System.out.println(expires_in);
 
        ArrayList<String> strings = CollUtil.newArrayList("1", "2");
 
        for (Iterator<String> iterator = strings.iterator(); iterator.hasNext(); ) {
            String next =  iterator.next();
 
 
            if(next.equals("2")){
                iterator.remove();
                continue;
            }
 
            System.out.println("哈哈");
 
 
        }
 
        System.out.println(strings.size());
    }
 
    public  static  byte[] generateAcode2(String scene,String path,String imgName){
        String imgPath=Constants.IMG_UPLOAD_PATH+imgName;
        //调用二维码接口
        String url = StrFormatter.format("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={}", getAccessToken());
        cn.hutool.json.JSONObject obj = JSONUtil.createObj();
        //最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,
        // 其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
        obj.put("scene", scene);
        //必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index,
        // 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面
        obj.put("path", path);
        //最小 280px,最大 1280px
        obj.put("width", "800px");
        obj.put("auto_color", false);
        cn.hutool.json.JSONObject obj2 = JSONUtil.createObj();
        obj2.put("r", 0);
        obj2.put("g", 0);
        obj2.put("b", 0);
        obj.put("line_color", obj2);
        //是否需要透明底色,为 true 时,生成透明底色的小程序码
        obj.put("is_hyaline", false);
        byte[] data = HttpRequest.post(url).body(obj.toString(), "application/json").execute().bodyBytes();
        return data;
    }
 
 
    @Test
    public void 查看附件1公里(){
        //筛选附近1公里的
        double lon = Convert.toDouble("112.994338");
        double lat=Convert.toDouble("28.151839");
        //单位千米
        int radius = 1;
        SpatialContext geo = SpatialContext.GEO;
        Rectangle rectangle = geo.getDistCalc().calcBoxByDistFromPt(geo.makePoint(lon, lat), radius * DistanceUtils.KM_TO_DEG, geo, null);
            double latitude = Convert.toDouble("28.151792534722222",Convert.toDouble(0));
            double longitude = Convert.toDouble("112.99511881510416",Convert.toDouble(0));
        System.out.println(rectangle.getMinX() + "-" + rectangle.getMaxX());// 经度范围
        System.out.println(rectangle.getMinY() + "-" + rectangle.getMaxY());// 纬度范围
            if(NumberUtil.compare(latitude,rectangle.getMinY())<0){
                System.out.println("超出");
            }else if(NumberUtil.compare(latitude,rectangle.getMaxY())>0){
                System.out.println("超出");
            }else if(NumberUtil.compare(longitude,rectangle.getMinX())<0){
                System.out.println("超出");
            }else if(NumberUtil.compare(longitude,rectangle.getMaxX())>0){
                System.out.println("超出");
            }else{
                System.out.println("成功");
            }
 
 
    }
 
    @Test
    public void test111(){
        Double a= Convert.toDouble(StrUtil.removePrefix("v1.4", "v"));
 
//        String c="Abc";
//        String a1 = MD5Util.getMD5String(c);
//        System.out.println(a1);
//        String s = SecureUtil.md5(c).toUpperCase();
//        System.out.println(s);
 
        String s = EmojiUtil.toUnicode(":laughing:");
        System.out.println(s);
    }
 
    @Test
    public void join(){
        List<UserInfo> list=new ArrayList();
        UserInfo userInfo=new UserInfo();
        userInfo.setUserId("1");
        UserInfo userInfo2=new UserInfo();
//        userInfo2.setUserId("");
        UserInfo userInfo3=new UserInfo();
        userInfo3.setUserId("3");
//        list.add(userInfo);
        list.add(userInfo2);
//        list.add(userInfo3);
        String roleIds = list.stream().map(x->x.getUserId()). collect(Collectors.joining(","));
        String[] split = roleIds.split(",");
        for (String s : split) {
            System.out.println(s);
            System.out.println(s.equals("null"));
        }
 
        String obj="2019-10-22 11:0:33";
        DateTime parse = DateUtil.parse(obj.toString(), DateUtils.DATE_FORMAT_YMDHMS);
        System.out.println(parse);
 
        GdReverseGEODto gdReverseGEODto = new GdReverseGEODto();
        gdReverseGEODto.setLocation("112.99961" + "," + "28.096663");
        Result areaInfo = GdMapUtil.getAreaInfo(gdReverseGEODto, 3);
        System.out.println(areaInfo);
 
    }
 
    @Test
    public  void test1() throws UnsupportedEncodingException, InterruptedException {
//        String payOrderId=IdUtils.generate("ZF",0);
//        System.out.println(payOrderId);
//        //回收员
//        Thread.sleep(2000);
//        String otherPayOrderId=IdUtils.generate("ZF",0);
//        while (otherPayOrderId.equals(payOrderId)){
//            otherPayOrderId=IdUtils.generate("ZF",0);
//        }
//        System.out.println(otherPayOrderId);
//        DateUtil.parse(":00","yyyy-MM-dd HH:mm");
//        System.out.println(1);
//        String encode = Base64.encode("测试2");
//        System.out.println(encode);
//        boolean base64 = isBase64(encode);
//        System.out.println(base64);
//
//        List<UserTargetInfo> list=new ArrayList<>();
//        UserTargetInfo userTargetInfo=new UserTargetInfo();
//        userTargetInfo.setCreateTime("2019-10-11 15:52:31");
//
//        UserTargetInfo userTargetInfo2=new UserTargetInfo();
//        userTargetInfo2.setCreateTime("2019-10-11 15:52:30");
//
//        list.add(userTargetInfo);
//        list.add(userTargetInfo2);
//
//        List<UserTargetInfo> collect = list.stream().sorted(Comparator.comparing(UserTargetInfo::getCreateTime).reversed()).collect(Collectors.toList());
//
//
//        for (UserTargetInfo info : collect) {
//            System.out.println(info.getCreateTime());
//        }
//
//        RedisDS redisDS = Singleton.get(RedisDS.class,new Setting("redis.properties", true), "xzx");
//        Jedis jedis =redisDS.getJedis();
//        System.out.println(jedis.get("a"));
 
 
        String s="\"[{\\\"content\\\":\\\"我们经常都会说职位没有高低贵贱之分,但是当我们看到那些不体面的工作时,还是会从内心里发出抵触。不过不管是什么职业和工作,都有它存在的理由,并且你还不能小瞧了它,人家不仅为环保做出了一份贡献,或许人家的收入可能比你还多呢。虽然干着大家不认为体面的工作—破烂的回收者,但是保护的却是城市的生活环境,我们有个光荣的称号一小棕熊环保回收员,请大家支持我们,为环保贡献自己一份力量。\\\\r\\\\n跟大家说说可回收物品,以废纸为例,回收的废纸需要通过碎解、净化、浮选以及漂白等几步工作才能完成再生处理。1.25吨废纸可节省,4立方的木材,100立方的水,减少60磅的工业废气排放等。看似简单的这几步工序,却能为我们节省不少的社会资源,回收可再次利用的废品有利于节约资源和保护环境。\\\\r\\\\n近几年,习大大非常重视环保工作,习大大在全国生态环境保护大会上提出,「要加快建立健全以生态价值观念为准则的生态文化体系」,树立尊重自然、顺应自然、保护自然的生态价值观,把生态文明建设放在突出地位,才能从根本上减少人为对自然环境的破坏。\\\\r\\\\n环保回收行业需要变革,小棕熊回收用自主研发的创新模式去改善回收行业的现状,小棕熊回收有规范化的运营、专业的回收团队、自建的物流体系,刷新人们印象中环保回收的样子。小棕熊回收团队运用互联网+的概念,将环保回收与互联网结合成一个创新的回收模式,用户只需在小棕熊到家微信小程序上下单 ,环保回收就交给小棕熊处理。\\\\r\\\\n小粽熊让城市更美,天空更蓝\\\\r\\\\n\\\",\\\"createTime\\\":\\\"2019-09-06 14:20:06\\\",\\\"createUserId\\\":\\\"0\\\",\\\"noticeId\\\":6,\\\"noticeType\\\":\\\"1\\\",\\\"picture\\\":\\\"https://res.cnxzx.com/resource/static/img/images-1.png\\\",\\\"title\\\":\\\"我们收的不是破烂儿!请叫我们环保达人\\\"},{\\\"content\\\":\\\"工作正在上海如火如荼开展,引发广泛关注。“史上最严垃圾分类”也会轮到长沙吗?事实上,早在2017年长沙就被列为全国46个垃圾分类重点城市之一。按照要求,2020年,46个重点城市要基本建成垃圾分类处理系统。长沙市城管执法局7月1日透露,长沙垃圾分类工作已步入“快车道”,今年将实现全市633个社区生活垃圾分类全覆盖,同时加快完善分类投放、分类收集、分类运输、分类处置的垃圾分类体系。\\\\r\\\\n长沙市城管执法局环卫处处长钟庭表示,长沙的垃圾分类意识培养与分类体系建设同步。2017年3月,长沙被列为生活垃圾强制分类重点城市之一。与第一批试点城市相比,虽然长沙起步较晚,但在顶层设计、激励配套等方面具有一定优势。“培养居民分类意识和完善分类体系,目前在长沙正同步进行,‘先分后混’会影响分类效果和居民积极性,而后端建设好了前端没有分类,整个分类链条就会脱节。因此,这是一项相互依赖的系统工程。”\\\\r\\\\n据了解,长沙垃圾终端处理已从“卫生填埋”向“清洁焚烧”转变,构建多点支撑的垃圾终端处理体系,预计2021年长沙城区将实现生活垃圾“零填埋”。\\\\r\\\\n\\\",\\\"createTime\\\":\\\"2019-09-06 14:19:13\\\",\\\"createUserId\\\":\\\"0\\\",\\\"noticeId\\\":5,\\\"noticeType\\\":\\\"1\\\",\\\"picture\\\":\\\"https://res.cnxzx.com/resource/static/img/images-2.png\\\",\\\"title\\\":\\\"长沙:垃圾分类工作步入快车道\\\"},{\\\"content\\\":\\\"什么是垃圾分类?\\\\r\\\\n生活垃圾分类是指按照生活垃圾的成分、属性、利用价值对环境影响以及现有处理方式的要求,分离成不同类别的若干类。欧美发达国家与国内城市的生活垃圾分类经验告诉我们:生活垃圾分类是生活垃圾的减量化,资源化、无害化的基础。\\\\r\\\\n生活中我们每天都会产生各种各样的垃圾,如何去分类呢?让小编为您来科普~垃圾分类品种。\\\\r\\\\n生活垃圾的基本分类:可回收物、有害垃圾、湿垃圾和干垃圾。\\\\r\\\\n1有害垃圾:\\\\r\\\\n主要包括:废硒鼓、废电池(镉镍电池、氧化汞电池、铅蓄电池等),废荧光灯管(日光灯管、节能灯等),废温度计,废血压计,废药品及其包装物,废油漆、溶剂及其包装物,废杀虫剂、消毒剂及其包装物,废胶片及废相纸等。\\\\r\\\\n2可回收物:\\\\r\\\\n主要包括:废纸、废塑料、废金属、废旧纺织物、废玻璃、废弃电器电子类产品(包括废弃计算机、打印机、复印机、传真机、扫描仪、投影仪、电视机、空调机等)、废纸塑铝复合包装等适宜回收循环利用和资源化利用类的废弃物。\\\\r\\\\n3湿垃圾\\\\r\\\\n主要包括:食品加工、饮食服务、单位供餐等活动中的食物残余和食品加工废料等餐厨垃圾。\\\\r\\\\n4干垃圾\\\\r\\\\n主要包括:污损后不宜回收利用的包装物、餐巾纸、厕纸、尿不湿、竹木和陶瓷碎片等除可回收物、有害垃圾、湿垃圾以外的其他生活垃圾。\\\\r\\\\n\\\",\\\"createTime\\\":\\\"2019-09-06 14:17:52\\\",\\\"createUserId\\\":\\\"0\\\",\\\"noticeId\\\":4,\\\"noticeType\\\":\\\"1\\\",\\\"picture\\\":\\\"https://res.cnxzx.com/resource/static/img/images-3.png\\\",\\\"title\\\":\\\"垃圾分类小知识\\\"},{\\\"content\\\":\\\"最近,网上热议上海人快被垃圾分类逼疯了,甚至有人因此而逃离上海。而原本看着热闹的其他城市“吃瓜群众”惊闻,全国46个重点城市,其实一个也跑不掉,包括长沙。\\\\r\\\\n作为全国46个重点推进生活垃圾分类城市之一,长沙自2017年起正式启动垃圾分类试点工作,之后陆续出台一系列方案和办法,并将宣传活动深入开展至全市各机关、社区、学校、商圈、企业。本月,长沙启动生活垃圾分类“五进”宣传活动,至十月份,每月各区县(市)将分别开展丰富的宣传活动,使市民能够深入了解垃圾分类的意义,引导居民从身边做起、从点滴做起,自觉、科学地开展生活垃圾分类。\\\\r\\\\n今天,记者走访长沙市岳麓区航空母舰小区发现,一场浩大的“撤桶运动”已在小区铺开。航空母舰小区有着20多年历史,全小区共136户居民。过去,为方便居民投放垃圾,每层电梯口都设有垃圾桶。但自从岳麓区开始推行垃圾分类后,小区决定推行“撤桶并点”行动,撤走各楼层垃圾桶,设置集中的垃圾分类投放点。\\\\r\\\\n走进航空母舰小区大门,可以看到设在楼外的垃圾分类定点投放站,里面摆放有4个不同颜色的垃圾桶,分别存放厨余垃圾、其他垃圾、可回收物、有害垃圾。旁边的洗手池内,还摆放有香皂供居民和工作人员进行清洁。“撤桶并点是推行垃圾分类的必经也是必要之路。”来自长沙市源方环保公益发展中心的志愿者李媛表示,这一做法集中解决了楼层垃圾投放难以监管、难以取证的问题;同时,还有利于改善居住环境,减轻保洁压力,确保消防安全。“虽然短期来说,可能需要一定的适应期,但从长远角度来看,一定有利于居民生活。”\\\\r\\\\n\\\",\\\"createTime\\\":\\\"2019-08-27 16:17:52\\\",\\\"createUserId\\\":\\\"1\\\",\\\"noticeId\\\":3,\\\"noticeType\\\":\\\"1\\\",\\\"picture\\\":\\\"https://res.cnxzx.com/resource/static/img/images-4.png\\\",\\\"title\\\":\\\"别再看热闹!长沙生活垃圾分类五进宣传活动来了\\\"},{\\\"content\\\":\\\"做一桶环保酵素相当于种了10棵树,做一升环保酵素可以净化1000升河水。”4月22日“世界地球日”即将来临,今天,2018年长沙市开福区“五老”助学队党支部进校园宣讲活动走进清水塘第二小学,湖南商学院副教授陶开宇为孩子们上了一堂别开生面的环保课。\\\\r\\\\n“孩子们,我们平时生活中留下的蔬果垃圾,都可以利用起来,制作成环保酵素。”现场,每个学生都带来了红糖、矿泉水、果皮和小毛巾,在陶开宇的指导下,孩子们跟着志愿者老师一步一步学习制作环保酵素。“环保酵素产生的液体和气体应用非常广泛,不仅可以帮助减少垃圾、作为洗洁剂使用,还能净化水体。”志愿者老师还用现场制作的环保酵素清洗带有污垢的锅盖,让孩子们大开眼界。\\\\r\\\\n“我们要从源头上减少垃圾,减少环境污染。”“保护环境要做到循环用水、垃圾分类、低碳出行、绿色能源。”“我要把今天学到的教给爸爸妈妈和身边的朋友。”孩子们兴致很高,纷纷表示收获很大。\\\\r\\\\n\\\",\\\"createTime\\\":\\\"2019-08-26 15:17:52\\\",\\\"createUserId\\\":\\\"1\\\",\\\"noticeId\\\":2,\\\"noticeType\\\":\\\"1\\\",\\\"picture\\\":\\\"https://res.cnxzx.com/resource/static/img/images-5.png\\\",\\\"title\\\":\\\"果皮垃圾可以变废为宝\\\"},{\\\"content\\\":\\\"“生活垃圾分类体系建设一定要体现科学性与合理性,关键在于‘便利’‘有效’‘利用’和‘无害’。”陈勇认为,生活垃圾分类的方式不应过于复杂,否则难以长期坚持。“在一些地方实行的精细分类固然好,但是会增加处理成本与市民负担,其次也很难保证100%利用。”\\\\r\\\\n目前,长沙推行的是“干湿分类为主、四分类为辅”的分类方式。“分类的首要问题在于‘干湿分离’,也就一定要把干垃圾和湿垃圾分开。其次则是将有害垃圾、大件垃圾分类投放。”陈勇说,餐厨垃圾、厨余垃圾等“湿垃圾”是生活垃圾处置的“七寸”所在,必须探索有针对性的处理技术与模式。针对湿垃圾处置,陈勇建议在收运前端进行脱水处理,不仅能实现源头减量60%至70%,还能减少运输过程中的“跑冒滴漏”。垃圾分类结束多年“慢跑”,开始步入“快车道”。如何实现有效减量化、资源化、无害化处置,已成为当下不少城市面临的现实难题。\\\\r\\\\n“实行垃圾分类,关系广大人民群众生活环境,关系节约使用资源,也是社会文明水平的一个重要体现。”习近平总书记对垃圾分类高度关注。作为全国46个生活垃圾强制分类重点城市之一,长沙也正加速搭建生活垃圾分类投放、分类收集、分类运输、分类处理“全链条”。今日,中国工程院院士陈勇接受长沙晚报记者专访,为长沙加速推进垃圾分类、建设更加科学合理的分类体系支招。\\\\r\\\\n\\\",\\\"createTime\\\":\\\"2019-08-25 14:17:52\\\",\\\"createUserId\\\":\\\"1\\\",\\\"noticeId\\\":1,\\\"noticeType\\\":\\\"1\\\",\\\"picture\\\":\\\"https://res.cnxzx.com/resource/static/img/images-6.png\\\",\\\"title\\\":\\\"院士为长沙垃圾分类支招:推行上门收集\\\"}]\"";
 
//        com.alibaba.fastjson.JSONObject sysNoticeVos = com.alibaba.fastjson.JSONObject.parseObject(s);
 
        if("3".equals(null)){
            System.out.println(223);
        }
 
//        System.out.println(sysNoticeVos);
//        for (SysNoticeVo sysNoticeVo : sysNoticeVos) {
//            System.out.println(sysNoticeVo.getContent());
//        }
 
        RestException e=new RestException();
        e.setMsg("123");
        ExceptionUtils.err(e.getMsg(),e);
 
    }
 
    public static boolean isBase64(String str) {
        String base64Pattern = "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$";
        return Pattern.matches(base64Pattern, str);
 
 
    }
 
    @Test
    public  void test2(){
//        String s=RandomUtil.randomString(16);
//        System.out.println(s);
//        String encrypt = SecurityUtil.encrypt("ah0tsfwicokld4oa", "123");
//        //RkDK4VU513B6RVsy75DEJg==
//        System.out.println(encrypt);
 
//        LogUtils.writeIp("192.168.1.110","请求头部对");
//
//        String date="2019-01-02 11:22:33";
//        String s = DateUtil.parseDateTime(date).toString(DateUtils.DATE_FORMAT_HM);
//        System.out.println(s);
//
//        String s1 = StrUtil.split(date, " ")[0];
//        System.out.println(s1);
//
//        List list=new ArrayList();
//        list.clear();
//
//
//        UserInfo userInfo=new UserInfo();
//        userInfo.setUserId("11");
//        log.info("哈哈{}",userInfo);
 
        int weight=0;
        String portData="wn00000070kgwn00000070kgwn00000070kgwn00000070kgwn00000070kgwn00000070kgwn00000070kgwn00000070kgwn00000070kgwn00000070kgwn0";
        while ((weight=test(portData))!=-1){
            break;
        }
        System.out.println(weight);
 
 
    }
 
 
    public int test(String s){
        String[] kgwns = s.split("kgwn");
        if(kgwns!=null&&kgwns.length>2){
            String kgwn = kgwns[1];
            String substring = kgwn.substring(kgwn.length() - 4);
            int i = Integer.parseInt(substring);
            return i;
        }
        return -1;
 
    }
 
    @Test
    public  void test3(){
        Cache<String, String> lruCache = CacheUtil.newLRUCache(3);
//通过实例化对象创建
//LRUCache<String, String> lruCache = new LRUCache<String, String>(3);
        lruCache.put("key1", "value1", DateUnit.SECOND.getMillis() * 3);
        lruCache.put("key2", "value2", DateUnit.SECOND.getMillis() * 3);
        lruCache.put("key3", "value3", DateUnit.SECOND.getMillis() * 3);
        lruCache.get("key1");//使用时间推近
        lruCache.put("key4", "value4", DateUnit.SECOND.getMillis() * 3);
 
//由于缓存容量只有3,当加入第四个元素的时候,根据LRU规则,最少使用的将被移除(2被移除)
        String value2 = lruCache.get("key2");//null
        String value3 = lruCache.get("key3");//null
 
        System.out.println(value2);
        System.out.println(value3);
 
    }
 
    @Test
    public void test4() throws UnsupportedEncodingException {
////        Validator.validateEmail("aa","邮箱格式不正确");
//        String s = "5eow3f5y4a9kqa9x";
//        System.out.println(s);
//        String encrypt = SecurityUtil.encrypt(s, "456");
////BFjvPvXcSRxrKnWlxYP14MxjxE97YCdNoNL6FFXt6LI=
//        String decrypt = SecurityUtil.decrypt(s, "BFjvPvXcSRxrKnWlxYP14MxjxE97YCdNoNL6FFXt6LI");
//
//        System.out.println(decrypt);
 
        String s=RandomStringUtils.randomAlphanumeric(32);
        byte[] gzip = ZipUtil.gzip(s, "UTF-8");
        String s1 =new String(gzip,"UTF-8");
        System.out.println(s1);
 
    }
 
 
    @Data
    class ExamInfoDict{
        private int id;
        private int examType;
        private int answerIs;
    }
 
    @Data
    class UserInfoDict{
        int id;
        String photoPath;
        List<ExamInfoDict> list;
    }
 
    @Test
    public  void ts5(){
        //------------------------------------------------- 考试信息列表
        ExamInfoDict examInfoDict = new ExamInfoDict();
        examInfoDict.setId(1);
        examInfoDict.setExamType(0);
        examInfoDict.setAnswerIs(1);
 
        ExamInfoDict examInfoDict1 = new ExamInfoDict();
        examInfoDict1.setId(2);
        examInfoDict1.setExamType(0);
        examInfoDict1.setAnswerIs(0);
 
        ExamInfoDict examInfoDict2 = new ExamInfoDict();
        examInfoDict2.setId(3);
        examInfoDict2.setExamType(1);
        examInfoDict2.setAnswerIs(0);
 
        List<ExamInfoDict> examInfoDicts = new ArrayList<ExamInfoDict>();
        examInfoDicts.add(examInfoDict);
        examInfoDicts.add(examInfoDict1);
        examInfoDicts.add(examInfoDict2);
 
//------------------------------------------------- 用户信息
        UserInfoDict userInfoDict = new UserInfoDict();
        userInfoDict.setId(1);
        userInfoDict.setPhotoPath("yx.mm.com");
        userInfoDict.setList(examInfoDicts);
 
        Map<String, Object> tempMap = new HashMap<String, Object>();
        tempMap.put("userInfo", userInfoDict);
        tempMap.put("flag", 1);
 
        BeanPath resolver = new BeanPath("userInfo.list[0].id");
        Object result = resolver.get(tempMap);//ID为1
 
        System.out.println(result);
 
        List<ExamInfoDict> property = (List<ExamInfoDict>) BeanUtil.getProperty(tempMap, "userInfo.list");
 
        Console.log(property);
 
    }
 
    @Test
    public  void test5(){
//        StrBuilder strBuilder = StrBuilder.create();
//        int i=-1;
//        if (i < 0) {
//            i += 256;
//        }
//        if (i < 16)
//            strBuilder.append("0");
//            strBuilder.append("123");
//
//        System.out.println(strBuilder.toString());
 
//        String encrypt = SecurityUtil.encrypt(Constants.PWD_DECRET, "{\"userId\":22}");
//        System.out.println(encrypt);
//        String decrypt = SecurityUtil.decrypt(Constants.PWD_DECRET, "2eoF8F5Z3bsY9/UDrd6h4g==");
 
        String s= "{\"userId\":\"27\",\"devCode\":\"abcdefg\"}";
        String s1 = SecurityUtil.encrypt(Constants.PWD_DECRET,s);
 
        System.out.println(s1);
    }
 
    @Test
    public void test6(){
//        String mo="18163623487";
//        String replace = StrUtil.replace(mo, 3, 7, Convert.toChar("*"));
//        System.out.println(replace);
//
////        String decrypt = SecurityUtil.decrypt(Constants.PWD_DECRET, "KHEZGG/d4dW8AupSg9yISA==");
////        System.out.println(decrypt);
//        String s="{\"userId\":51}";
//        String encrypt = SecurityUtil.encrypt(Constants.PWD_DECRET, s);
//
//        System.out.println(encrypt);
//        RSA rsa = new RSA();
//        String privateKeyBase64 = rsa.getPrivateKeyBase64();
//        String publicKeyBase64 = rsa.getPublicKeyBase64();
//
//        System.out.println(privateKeyBase64);
//        System.out.println(publicKeyBase64);
 
//        String encrypt = SecurityUtil.encrypt("123");
//        System.out.println(encrypt);
//
//        RSA rsa = new RSA(null,Constants.RSA_PUBLIC_SECRET);
//         encrypt = rsa.encryptBase64("123", KeyType.PublicKey);
//
//        System.out.println(encrypt);
//
//        String s="HMIWlPv7Y8RQa1IqVqfn0UV48+CKAg4gW+vEo5KoY5HP27ELim1JhWdBUaqqCsydwOYi10/ytraRgiot8798NxmJ5wCYUvizUhF6u9yvku0tLdfjl2uoSkVryo8M/dYZRob28G7rYEJ6uDLvSgO5WejbyIAPd+PfRtsbAlceDls=";
//        String decrypt = SecurityUtil.decrypt(s);
//        System.out.println(decrypt);
//
//        String encrypt1 = SecurityUtil.encrypt("123");
//
//        System.out.println(encrypt1);
 
//        String xzx = RandomStringUtils.randomAlphanumeric(32);
 
//        System.out.println(xzx);
 
 
//
//        String bfcC6lKF3J4QZ38Z1 = SecurityUtil.encrypt(Constants.PWD_DECRET, "123456");
//        System.out.println(bfcC6lKF3J4QZ38Z1);
//        String bfcC6lKF3J4QZ38Z = SecurityUtil.decrypt(Constants.PWD_DECRET, bfcC6lKF3J4QZ38Z1);
//        System.out.println(bfcC6lKF3J4QZ38Z);
 
        Long a=3L;
        System.out.println(a==3);
        System.out.println(a.equals(3));
        System.out.println(a.equals("3"));
 
//        String aa = SecurityUtil.decrypt(encrypt);
//        System.out.println(aa);
 
//        String encrypt = SecurityUtil.encrypt(Constants.PWD_DECRET, "123");
//
//        System.out.println(encrypt);
//
//         encrypt = SecurityUtil.encrypt(Constants.PWD_DECRET, "123");
//
//        System.out.println(encrypt);
 
 
    }
 
    @Test
    public void test7(){
        double lon = Convert.toDouble("112.935633");
        double lat=Convert.toDouble("28.131605");
        //单位千米
        int radius = 1;
        SpatialContext geo = SpatialContext.GEO;
        Rectangle rectangle = geo.getDistCalc().calcBoxByDistFromPt(geo.makePoint(lon, lat), radius * DistanceUtils.KM_TO_DEG, geo, null);
 
        System.out.println(rectangle);
    }
 
    @Test
    public void testJVM(){
 
//        Console.log("**************java信息******************");
//        Console.log(SystemUtil.getJavaRuntimeInfo());
//        Console.log("**************系统信息******************");
//        Console.log(SystemUtil.getOsInfo());
//        Console.log("**************用户信息******************");
//        Console.log(SystemUtil.getUserInfo());
//        Console.log("**************主机信息******************");
//        Console.log(SystemUtil.getHostInfo());
//        Console.log("**************内存信息******************");
//        Console.log(SystemUtil.getRuntimeInfo());
//
//        String c=a();
//        System.out.println(c);
 
//        String s=RandomStringUtils.randomAlphanumeric(16);
//        System.out.println(s);
//        String encrypt = SecurityUtil.encrypt(s, "123456");
//        System.out.println(encrypt);
 
        String s= "{\"userId\":\"USER1194135295260758016\",\"devCode\":\"abcdefg\"}";
        String s1 = SecurityUtil.encrypt(Constants.PWD_DECRET,s);
 
        System.out.println(s1);
 
        try {
            String extra=",x2ixEmv2yp2S6bmjwmsFUmZ3idqWnrKfcGd9zseLj6Z9nUEBMuS6Kyr/lLg1Lu8nHWkqEjDhlrJjplHClrV4+Q==";
            extra=StrUtil.removePrefix(extra,",");
            String decrypt = SecurityUtil.decrypt(Constants.PWD_DECRET, extra);
            JSONObject parse = JSONUtil.parseObj(decrypt);
           String userId=parse.getStr("userId");
        } catch (Exception e) {
            ExceptionUtils.err("解码失败",e);
        }
 
//        String s2="sjbVsNam/bONkX8BziljdZLV7d9uFu6frM4GYY33NpU73UMxXsh8T52hnqhXU5Y";
//        System.out.println(s2);
//        String decrypt = SecurityUtil.decrypt(Constants.PWD_DECRET, s1);
//        System.out.println(decrypt);
 
 
    }
 
    @Test
    public void a(){
//        String s="0";
//        String s1="0.00";
//        int i = Convert.toBigDecimal(s,BigDecimal.ZERO).compareTo(Convert.toBigDecimal(s1,BigDecimal.ZERO));
//        System.out.println(i);
 
        WeightInfo weightInfo=new WeightInfo();
        weightInfo.setBatchNo(UUID.randomUUID().toString());
        weightInfo.setCreateTime(DateUtil.now());
        weightInfo.setDevCode("11");
        weightInfo.setUserId("2");
        weightInfo.setWeight("3");
 
        System.out.println(JSONUtil.toJsonPrettyStr(weightInfo));
 
        String s="22";
        String s1 = s.split(",")[0];
        System.out.println(s1);
    }
 
    @Test
    public void  test11(){
        UserInfo userInfo=new UserInfo();
        userInfo.setMobilePhone("18163623487");
        generateByUi(userInfo);
 
    }
 
 
 
    public Map<String,String> generateByUi(UserInfo userInfo){
        log.trace("开始生成海报图:{}",userInfo.getUserId());
        //海报图名称
        String userId=userInfo.getUserId();
        String imageName="/user_" + userId + "_poster.jpg";
        //二维码图名称
        String imgName="/user_" + userId + "_acode.jpg";
        generateAcodeUi("poster=" + userInfo.getMobilePhone(), "pages/login/login", imgName,  "800px");
        String path=Constants.IMG_UPLOAD_PATH+imgName;
//        if(StrUtil.isBlank(userInfo.getAvatar())){
//            userInfo.setAvatar(Constants.IMG_TEMPALRE_VIEW+"/xzx-qr.png");
//        }
        userInfo.setMobilePhone(new BusinessUtil().changeMobile(userInfo.getMobilePhone()));
        String backgroundUrl=Constants.IMG_TEMPALRE_PATH+"/user_share_poster_bg2.png";
        Map<String, String> s = null;
        try {
            s = generatePosterByUi(imageName, path, userInfo.getAvatar(), backgroundUrl, userInfo.getMobilePhone());
        } catch (Exception e) {
            ExceptionUtils.err("生成分享海报失败",e);
        }
        return s;
    }
 
    public static Map<String,String> generatePosterByUi(String imgName, String codePath, String avata,
                                                 String backgroundUrl, String spuName)
            throws Exception {
        String urlPrefix="http://192.168.0.82/static/upload";
        String imgPath="/xzx/resource/static/ui/"+imgName;
        //背景图
        BufferedImage bufferImage = QrCodeBaseUtils.imageToBufferedImage(backgroundUrl);
        Graphics2D graphics = bufferImage.createGraphics();
        graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        //小程序码
        BufferedImage qrCodeImage = ImageIO.read(new File(codePath));
        graphics.drawImage(qrCodeImage, 100, 160, null);
        //头像
//        BufferedImage logoBufferImage = Thumbnails.of(new URL(avata)).size(150, 150).asBufferedImage();
//        graphics.drawImage(logoBufferImage, 57, 94, null);
        //文字
        Font font = new Font("黑体", Font.BOLD, 34);
        graphics.setFont(font);
        graphics.setPaint(Color.black);
        graphics.drawString(spuName, 670, 954);
        QrCodeGraphicsUtils.savePic(bufferImage, 1, "jpg", 0.8, imgPath);
        graphics.dispose();
        Map<String,String> map=new HashMap<>();
        map.put("viewUrl",urlPrefix+"/"+imgName);
        map.put("uploadUrl",imgPath);
        return  map;
    }
 
 
    /**
     * 生成小程序码
     * @param scene 参数
     * @param path  跳转路径
     * @param imgName  图片唯一名称
     * @return
     */
    public  static  String generateAcodeUi(String scene,String path,String imgName,String width){
        String urlPrefix="http://192.168.0.82/static/upload";
        String imgPath=Constants.IMG_UPLOAD_PATH+imgName;
        if(!FileUtil.exist(imgPath)){
            //调用二维码接口
            String url = StrFormatter.format("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={}", getAccessToken());
            cn.hutool.json.JSONObject obj = JSONUtil.createObj();
            //最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,
            // 其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
            obj.put("scene", scene);
            //必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index,
            // 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面
            obj.put("path", path);
            //最小 280px,最大 1280px
            obj.put("width", width);
            obj.put("auto_color", false);
            cn.hutool.json.JSONObject obj2 = JSONUtil.createObj();
            obj2.put("r", 0);
            obj2.put("g", 0);
            obj2.put("b", 0);
            obj.put("line_color", obj2);
            //是否需要透明底色,为 true 时,生成透明底色的小程序码
            obj.put("is_hyaline", false);
            byte[] data = HttpRequest.post(url).body(obj.toString(), "application/json").execute().bodyBytes();
            FileUtil.writeBytes(data, imgPath);
        }
        return urlPrefix+"/"+imgName;
    }
 
 
 
    public Result say(int i){
        System.out.println(i);
        if(1==i){
            say(14);
            return null;
        }
        System.out.println(33);
        return Result.success("");
    }
 
 
}