This commit is contained in:
lijiaqi 2024-09-05 14:03:09 +08:00
parent ba0705b62d
commit b96c8d1cd4
67 changed files with 6 additions and 5853 deletions

View File

@ -1,7 +1,7 @@
#!/bin/sh
cd $PWD
pid=$(ps -ef | grep club-nfc.jar | grep -v grep | awk '{print $2}')
pid=$(ps -ef | grep drone-coding.jar | grep -v grep | awk '{print $2}')
if [ -n "$pid" ]; then
kill -9 $pid
fi
@ -22,8 +22,8 @@ else
fi
# 根据情况修改 web.war 为您的 war 包名称
nohup $RUN_JAVA $JAVA_OPTS -jar club-nfc.jar > system.log 2>&1 &
nohup $RUN_JAVA $JAVA_OPTS -jar drone-coding.jar > system.log 2>&1 &
sleep 1
pid=$(ps -ef | grep club-nfc.jar | grep -v grep | awk '{print $2}')
pid=$(ps -ef | grep drone-coding.jar | grep -v grep | awk '{print $2}')
echo $pid6

View File

@ -1,780 +0,0 @@
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 67108864 bytes for G1 virtual space
# Possible reasons:
# The system is out of physical RAM or swap space
# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# JVM is running with Zero Based Compressed Oops mode in which the Java heap is
# placed in the first 32GB address space. The Java Heap base address is the
# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress
# to set the Java Heap base and to place the Java Heap above 32GB virtual address.
# This output file may be truncated or incomplete.
#
# Out of Memory Error (os_windows.cpp:3550), pid=8424, tid=14764
#
# JRE version: Java(TM) SE Runtime Environment (17.0.7+8) (build 17.0.7+8-LTS-224)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (17.0.7+8-LTS-224, mixed mode, emulated-client, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
--------------- S U M M A R Y ------------
Command Line: -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -Dmanagement.endpoints.jmx.exposure.include=* -javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2021.2.4\lib\idea_rt.jar=62085:D:\Program Files\JetBrains\IntelliJ IDEA 2021.2.4\bin -Dfile.encoding=UTF-8 cn.workde.Application
Host: Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz, 8 cores, 15G, Windows 11 , 64 bit Build 22621 (10.0.22621.3527)
Time: Wed May 22 15:12:15 2024 Windows 11 , 64 bit Build 22621 (10.0.22621.3527) elapsed time: 10.306436 seconds (0d 0h 0m 10s)
--------------- T H R E A D ---------------
Current thread (0x0000023938c4e3d0): VMThread "VM Thread" [stack: 0x0000007486e00000,0x0000007486f00000] [id=14764]
Stack: [0x0000007486e00000,0x0000007486f00000]
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x676a4a]
V [jvm.dll+0x7d74f4]
V [jvm.dll+0x7d8c9e]
V [jvm.dll+0x7d9303]
V [jvm.dll+0x2452c5]
V [jvm.dll+0x6738f9]
V [jvm.dll+0x668232]
V [jvm.dll+0x302826]
V [jvm.dll+0x309da6]
V [jvm.dll+0x35952e]
V [jvm.dll+0x35975f]
V [jvm.dll+0x2d9a38]
V [jvm.dll+0x2d7e45]
V [jvm.dll+0x2d744c]
V [jvm.dll+0x31ab1b]
V [jvm.dll+0x7ddb0b]
V [jvm.dll+0x7de844]
V [jvm.dll+0x7ded5d]
V [jvm.dll+0x7df134]
V [jvm.dll+0x7df200]
V [jvm.dll+0x78759a]
V [jvm.dll+0x675875]
C [ucrtbase.dll+0x29333]
C [KERNEL32.DLL+0x1257d]
C [ntdll.dll+0x5aa48]
VM_Operation (0x00000074868fda90): G1CollectForAllocation, mode: safepoint, requested by thread 0x0000023922142190
--------------- P R O C E S S ---------------
Threads class SMR info:
_java_thread_list=0x000002393dca2430, length=56, elements={
0x0000023922142190, 0x0000023938c52670, 0x0000023938c533f0, 0x0000023939811490,
0x0000023939814220, 0x00000239398183a0, 0x0000023939818c60, 0x0000023939819d70,
0x000002393981fa20, 0x00000239398ba890, 0x00000239399bf740, 0x00000239399c3c60,
0x000002393a190290, 0x000002393a196190, 0x000002393a2e3270, 0x000002393ab32560,
0x000002393d398a60, 0x00000239399c7390, 0x00000239399c7860, 0x000002393d450a20,
0x000002393d8b79e0, 0x000002393d85f1d0, 0x000002393d942550, 0x000002393d940d40,
0x000002393d941210, 0x000002393d93f530, 0x000002393d93f060, 0x000002393d941bb0,
0x000002393d93fa00, 0x000002393d9416e0, 0x000002393d93fed0, 0x000002393d942080,
0x000002393d9403a0, 0x000002393d942a20, 0x000002393d940870, 0x000002393da0a780,
0x000002393da07760, 0x000002393da08100, 0x000002393da0ac50, 0x000002393da07c30,
0x000002393da0eae0, 0x000002393da09440, 0x000002393da0bac0, 0x000002393da0bf90,
0x000002393da0c930, 0x000002393da0e610, 0x000002393da0c460, 0x000002393da07290,
0x000002393da0d7a0, 0x000002393da085d0, 0x000002393da0e140, 0x000002393da0dc70,
0x000002393da09910, 0x000002393da0ce00, 0x000002393da0b120, 0x000002393da0b5f0
}
Java Threads: ( => current thread )
0x0000023922142190 JavaThread "main" [_thread_blocked, id=10008, stack(0x0000007486800000,0x0000007486900000)]
0x0000023938c52670 JavaThread "Reference Handler" daemon [_thread_blocked, id=6088, stack(0x0000007486f00000,0x0000007487000000)]
0x0000023938c533f0 JavaThread "Finalizer" daemon [_thread_blocked, id=13948, stack(0x0000007487000000,0x0000007487100000)]
0x0000023939811490 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=25164, stack(0x0000007487100000,0x0000007487200000)]
0x0000023939814220 JavaThread "Attach Listener" daemon [_thread_blocked, id=20912, stack(0x0000007487200000,0x0000007487300000)]
0x00000239398183a0 JavaThread "Service Thread" daemon [_thread_blocked, id=3060, stack(0x0000007487300000,0x0000007487400000)]
0x0000023939818c60 JavaThread "Monitor Deflation Thread" daemon [_thread_blocked, id=20764, stack(0x0000007487400000,0x0000007487500000)]
0x0000023939819d70 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=12980, stack(0x0000007487500000,0x0000007487600000)]
0x000002393981fa20 JavaThread "Sweeper thread" daemon [_thread_blocked, id=9796, stack(0x0000007487600000,0x0000007487700000)]
0x00000239398ba890 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=5368, stack(0x0000007487700000,0x0000007487800000)]
0x00000239399bf740 JavaThread "C1 CompilerThread1" daemon [_thread_blocked, id=21132, stack(0x0000007487800000,0x0000007487900000)]
0x00000239399c3c60 JavaThread "C1 CompilerThread2" daemon [_thread_blocked, id=22444, stack(0x0000007487900000,0x0000007487a00000)]
0x000002393a190290 JavaThread "Monitor Ctrl-Break" daemon [_thread_in_native, id=11728, stack(0x0000007487a00000,0x0000007487b00000)]
0x000002393a196190 JavaThread "Notification Thread" daemon [_thread_blocked, id=10088, stack(0x0000007487b00000,0x0000007487c00000)]
0x000002393a2e3270 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=16228, stack(0x0000007487c00000,0x0000007487d00000)]
0x000002393ab32560 JavaThread "C1 CompilerThread3" daemon [_thread_blocked, id=9864, stack(0x0000007488700000,0x0000007488800000)]
0x000002393d398a60 JavaThread "Catalina-utility-1" [_thread_blocked, id=18404, stack(0x0000007488800000,0x0000007488900000)]
0x00000239399c7390 JavaThread "Catalina-utility-2" [_thread_blocked, id=14436, stack(0x0000007488a00000,0x0000007488b00000)]
0x00000239399c7860 JavaThread "container-0" [_thread_blocked, id=12912, stack(0x0000007488b00000,0x0000007488c00000)]
0x000002393d450a20 JavaThread "Thread-1" daemon [_thread_in_native, id=23812, stack(0x0000007488c00000,0x0000007488d00000)]
0x000002393d8b79e0 JavaThread "redisson-netty-2-1" [_thread_in_native, id=10544, stack(0x0000007488d00000,0x0000007488e00000)]
0x000002393d85f1d0 JavaThread "redisson-netty-2-2" [_thread_in_native, id=25144, stack(0x0000007488e00000,0x0000007488f00000)]
0x000002393d942550 JavaThread "redisson-netty-2-3" [_thread_in_native, id=23576, stack(0x0000007488f00000,0x0000007489000000)]
0x000002393d940d40 JavaThread "redisson-netty-2-4" [_thread_in_native, id=14732, stack(0x0000007489000000,0x0000007489100000)]
0x000002393d941210 JavaThread "redisson-timer-4-1" [_thread_blocked, id=19608, stack(0x0000007489200000,0x0000007489300000)]
0x000002393d93f530 JavaThread "redisson-netty-2-5" [_thread_in_native, id=15404, stack(0x0000007489300000,0x0000007489400000)]
0x000002393d93f060 JavaThread "redisson-netty-2-6" [_thread_in_native, id=4504, stack(0x0000007489400000,0x0000007489500000)]
0x000002393d941bb0 JavaThread "redisson-netty-2-7" [_thread_in_native, id=20820, stack(0x0000007489500000,0x0000007489600000)]
0x000002393d93fa00 JavaThread "redisson-netty-2-8" [_thread_in_native, id=25156, stack(0x0000007489600000,0x0000007489700000)]
0x000002393d9416e0 JavaThread "redisson-netty-2-9" [_thread_in_native, id=1292, stack(0x0000007489700000,0x0000007489800000)]
0x000002393d93fed0 JavaThread "redisson-netty-2-10" [_thread_in_native, id=19860, stack(0x0000007489800000,0x0000007489900000)]
0x000002393d942080 JavaThread "redisson-netty-2-11" [_thread_in_native, id=24496, stack(0x0000007489900000,0x0000007489a00000)]
0x000002393d9403a0 JavaThread "redisson-netty-2-12" [_thread_in_native, id=8920, stack(0x0000007489a00000,0x0000007489b00000)]
0x000002393d942a20 JavaThread "redisson-netty-2-13" [_thread_in_native, id=2252, stack(0x0000007489b00000,0x0000007489c00000)]
0x000002393d940870 JavaThread "redisson-netty-2-14" [_thread_in_native, id=25312, stack(0x0000007489c00000,0x0000007489d00000)]
0x000002393da0a780 JavaThread "redisson-netty-2-15" [_thread_in_native, id=23700, stack(0x0000007489d00000,0x0000007489e00000)]
0x000002393da07760 JavaThread "redisson-netty-2-16" [_thread_in_native, id=6460, stack(0x0000007489e00000,0x0000007489f00000)]
0x000002393da08100 JavaThread "redisson-netty-2-17" [_thread_in_native, id=16868, stack(0x0000007489f00000,0x000000748a000000)]
0x000002393da0ac50 JavaThread "redisson-netty-2-18" [_thread_in_native, id=23564, stack(0x000000748a000000,0x000000748a100000)]
0x000002393da07c30 JavaThread "redisson-netty-2-19" [_thread_in_native, id=21992, stack(0x000000748a100000,0x000000748a200000)]
0x000002393da0eae0 JavaThread "redisson-netty-2-20" [_thread_in_native, id=14076, stack(0x000000748a200000,0x000000748a300000)]
0x000002393da09440 JavaThread "redisson-netty-2-21" [_thread_in_native, id=6948, stack(0x000000748a300000,0x000000748a400000)]
0x000002393da0bac0 JavaThread "redisson-netty-2-22" [_thread_in_native, id=17608, stack(0x000000748a400000,0x000000748a500000)]
0x000002393da0bf90 JavaThread "redisson-netty-2-23" [_thread_in_native, id=25272, stack(0x000000748a500000,0x000000748a600000)]
0x000002393da0c930 JavaThread "redisson-netty-2-24" [_thread_in_native, id=3304, stack(0x000000748a600000,0x000000748a700000)]
0x000002393da0e610 JavaThread "redisson-netty-2-25" [_thread_in_native, id=20732, stack(0x000000748a700000,0x000000748a800000)]
0x000002393da0c460 JavaThread "redisson-netty-2-26" [_thread_in_native, id=22208, stack(0x000000748a800000,0x000000748a900000)]
0x000002393da07290 JavaThread "redisson-netty-2-27" [_thread_in_native, id=2008, stack(0x000000748a900000,0x000000748aa00000)]
0x000002393da0d7a0 JavaThread "redisson-netty-2-28" [_thread_in_native, id=23224, stack(0x000000748aa00000,0x000000748ab00000)]
0x000002393da085d0 JavaThread "redisson-netty-2-29" [_thread_in_native, id=24388, stack(0x000000748ab00000,0x000000748ac00000)]
0x000002393da0e140 JavaThread "redisson-netty-2-30" [_thread_in_native, id=13404, stack(0x000000748ac00000,0x000000748ad00000)]
0x000002393da0dc70 JavaThread "redisson-netty-2-31" [_thread_in_native, id=25028, stack(0x000000748ad00000,0x000000748ae00000)]
0x000002393da09910 JavaThread "redisson-netty-2-32" [_thread_in_native, id=12008, stack(0x000000748ae00000,0x000000748af00000)]
0x000002393da0ce00 JavaThread "Keep-Alive-Timer" daemon [_thread_blocked, id=20876, stack(0x000000748af00000,0x000000748b000000)]
0x000002393da0b120 JavaThread "Icc-Refresh-Token1" daemon [_thread_blocked, id=18544, stack(0x000000748b000000,0x000000748b100000)]
0x000002393da0b5f0 JavaThread "lettuce-timer-6-1" daemon [_thread_blocked, id=24764, stack(0x000000748b100000,0x000000748b200000)]
Other Threads:
=>0x0000023938c4e3d0 VMThread "VM Thread" [stack: 0x0000007486e00000,0x0000007486f00000] [id=14764]
0x00000239221cafd0 WatcherThread [stack: 0x0000007487d00000,0x0000007487e00000] [id=11824]
0x00000239221af970 GCTaskThread "GC Thread#0" [stack: 0x0000007486900000,0x0000007486a00000] [id=15384]
0x000002393a3b7e30 GCTaskThread "GC Thread#1" [stack: 0x0000007487e00000,0x0000007487f00000] [id=5700]
0x000002393a365d70 GCTaskThread "GC Thread#2" [stack: 0x0000007487f00000,0x0000007488000000] [id=24868]
0x000002393a366020 GCTaskThread "GC Thread#3" [stack: 0x0000007488000000,0x0000007488100000] [id=19436]
0x000002393a3fd970 GCTaskThread "GC Thread#4" [stack: 0x0000007488100000,0x0000007488200000] [id=3764]
0x000002393a3fe0a0 GCTaskThread "GC Thread#5" [stack: 0x0000007488200000,0x0000007488300000] [id=22636]
0x000002393a900e10 GCTaskThread "GC Thread#6" [stack: 0x0000007488300000,0x0000007488400000] [id=15592]
0x000002393a9034e0 GCTaskThread "GC Thread#7" [stack: 0x0000007488400000,0x0000007488500000] [id=5268]
0x00000239221c0540 ConcurrentGCThread "G1 Main Marker" [stack: 0x0000007486a00000,0x0000007486b00000] [id=23748]
0x00000239221c2610 ConcurrentGCThread "G1 Conc#0" [stack: 0x0000007486b00000,0x0000007486c00000] [id=3168]
0x000002393ae776d0 ConcurrentGCThread "G1 Conc#1" [stack: 0x0000007488900000,0x0000007488a00000] [id=14820]
0x0000023938b0b200 ConcurrentGCThread "G1 Refine#0" [stack: 0x0000007486c00000,0x0000007486d00000] [id=20492]
0x000002393a3f4470 ConcurrentGCThread "G1 Refine#1" [stack: 0x0000007488500000,0x0000007488600000] [id=17004]
0x000002393a3febe0 ConcurrentGCThread "G1 Refine#2" [stack: 0x0000007488600000,0x0000007488700000] [id=1924]
0x0000023938b0ba30 ConcurrentGCThread "G1 Service" [stack: 0x0000007486d00000,0x0000007486e00000] [id=22572]
Threads with active compile tasks:
VM state: at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event])
[0x000002392213ee20] Threads_lock - owner thread: 0x0000023938c4e3d0
[0x000002392213f060] Heap_lock - owner thread: 0x0000023922142190
Heap address: 0x0000000702800000, size: 4056 MB, Compressed Oops mode: Zero based, Oop shift amount: 3
CDS archive(s) mapped at: [0x0000000800000000-0x0000000800bd0000-0x0000000800bd0000), size 12386304, SharedBaseAddress: 0x0000000800000000, ArchiveRelocationMode: 0.
Compressed class space mapped at: 0x0000000800c00000-0x0000000840c00000, reserved size: 1073741824
Narrow klass base: 0x0000000800000000, Narrow klass shift: 0, Narrow klass range: 0x100000000
GC Precious Log:
CPUs: 8 total, 8 available
Memory: 16217M
Large Page Support: Disabled
NUMA Support: Disabled
Compressed Oops: Enabled (Zero based)
Heap Region Size: 2M
Heap Min Capacity: 8M
Heap Initial Capacity: 254M
Heap Max Capacity: 4056M
Pre-touch: Disabled
Parallel Workers: 8
Concurrent Workers: 2
Concurrent Refinement Workers: 8
Periodic GC: Disabled
Heap:
garbage-first heap total 194560K, used 87891K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 1 young (2048K), 1 survivors (2048K)
Metaspace used 68301K, committed 68864K, reserved 1114112K
class space used 9119K, committed 9408K, reserved 1048576K
Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, OA=open archive, CA=closed archive, TAMS=top-at-mark-start (previous, next)
| 0|0x0000000702800000, 0x0000000702a00000, 0x0000000702a00000|100%| O| |TAMS 0x0000000702a00000, 0x0000000702800000| Untracked
| 1|0x0000000702a00000, 0x0000000702c00000, 0x0000000702c00000|100%| O| |TAMS 0x0000000702c00000, 0x0000000702a00000| Untracked
| 2|0x0000000702c00000, 0x0000000702e00000, 0x0000000702e00000|100%| O| |TAMS 0x0000000702e00000, 0x0000000702c00000| Untracked
| 3|0x0000000702e00000, 0x0000000703000000, 0x0000000703000000|100%| O| |TAMS 0x0000000703000000, 0x0000000702e00000| Untracked
| 4|0x0000000703000000, 0x0000000703200000, 0x0000000703200000|100%| O| |TAMS 0x0000000703200000, 0x0000000703000000| Untracked
| 5|0x0000000703200000, 0x0000000703361800, 0x0000000703400000| 69%| O| |TAMS 0x0000000703361800, 0x0000000703200000| Untracked
| 6|0x0000000703400000, 0x0000000703600000, 0x0000000703600000|100%| O| |TAMS 0x0000000703600000, 0x0000000703400000| Untracked
| 7|0x0000000703600000, 0x0000000703800000, 0x0000000703800000|100%| O| |TAMS 0x0000000703800000, 0x0000000703600000| Untracked
| 8|0x0000000703800000, 0x0000000703a00000, 0x0000000703a00000|100%| O| |TAMS 0x0000000703a00000, 0x0000000703800000| Untracked
| 9|0x0000000703a00000, 0x0000000703c00000, 0x0000000703c00000|100%| O| |TAMS 0x0000000703c00000, 0x0000000703a00000| Untracked
| 10|0x0000000703c00000, 0x0000000703e00000, 0x0000000703e00000|100%| O| |TAMS 0x0000000703e00000, 0x0000000703c00000| Untracked
| 11|0x0000000703e00000, 0x0000000704000000, 0x0000000704000000|100%| O| |TAMS 0x0000000704000000, 0x0000000703e00000| Untracked
| 12|0x0000000704000000, 0x0000000704200000, 0x0000000704200000|100%| O| |TAMS 0x0000000704200000, 0x0000000704000000| Untracked
| 13|0x0000000704200000, 0x0000000704400000, 0x0000000704400000|100%| O| |TAMS 0x0000000704400000, 0x0000000704200000| Untracked
| 14|0x0000000704400000, 0x0000000704600000, 0x0000000704600000|100%| O| |TAMS 0x0000000704600000, 0x0000000704400000| Untracked
| 15|0x0000000704600000, 0x0000000704800000, 0x0000000704800000|100%| O| |TAMS 0x0000000704800000, 0x0000000704600000| Untracked
| 16|0x0000000704800000, 0x0000000704a00000, 0x0000000704a00000|100%| O| |TAMS 0x0000000704a00000, 0x0000000704800000| Untracked
| 17|0x0000000704a00000, 0x0000000704c00000, 0x0000000704c00000|100%| O| |TAMS 0x0000000704c00000, 0x0000000704a00000| Untracked
| 18|0x0000000704c00000, 0x0000000704e00000, 0x0000000704e00000|100%| O| |TAMS 0x0000000704e00000, 0x0000000704c00000| Untracked
| 19|0x0000000704e00000, 0x0000000705000000, 0x0000000705000000|100%| O| |TAMS 0x0000000705000000, 0x0000000704e00000| Untracked
| 20|0x0000000705000000, 0x0000000705200000, 0x0000000705200000|100%| O| |TAMS 0x0000000705200000, 0x0000000705000000| Untracked
| 21|0x0000000705200000, 0x0000000705400000, 0x0000000705400000|100%| O| |TAMS 0x0000000705400000, 0x0000000705200000| Untracked
| 22|0x0000000705400000, 0x0000000705600000, 0x0000000705600000|100%| O| |TAMS 0x0000000705600000, 0x0000000705400000| Untracked
| 23|0x0000000705600000, 0x0000000705800000, 0x0000000705800000|100%| O| |TAMS 0x0000000705800000, 0x0000000705600000| Untracked
| 24|0x0000000705800000, 0x0000000705a00000, 0x0000000705a00000|100%| O| |TAMS 0x0000000705a00000, 0x0000000705800000| Untracked
| 25|0x0000000705a00000, 0x0000000705c00000, 0x0000000705c00000|100%| O| |TAMS 0x0000000705c00000, 0x0000000705a00000| Untracked
| 26|0x0000000705c00000, 0x0000000705e00000, 0x0000000705e00000|100%| O| |TAMS 0x0000000705e00000, 0x0000000705c00000| Untracked
| 27|0x0000000705e00000, 0x0000000705e00000, 0x0000000706000000| 0%| F| |TAMS 0x0000000705e00000, 0x0000000705e00000| Untracked
| 28|0x0000000706000000, 0x0000000706000000, 0x0000000706200000| 0%| F| |TAMS 0x0000000706000000, 0x0000000706000000| Untracked
| 29|0x0000000706200000, 0x0000000706200000, 0x0000000706400000| 0%| F| |TAMS 0x0000000706200000, 0x0000000706200000| Untracked
| 30|0x0000000706400000, 0x0000000706400000, 0x0000000706600000| 0%| F| |TAMS 0x0000000706400000, 0x0000000706400000| Untracked
| 31|0x0000000706600000, 0x0000000706600000, 0x0000000706800000| 0%| F| |TAMS 0x0000000706600000, 0x0000000706600000| Untracked
| 32|0x0000000706800000, 0x0000000706a00000, 0x0000000706a00000|100%| O| |TAMS 0x0000000706a00000, 0x0000000706800000| Complete
| 33|0x0000000706a00000, 0x0000000706a00000, 0x0000000706c00000| 0%| F| |TAMS 0x0000000706a00000, 0x0000000706a00000| Untracked
| 34|0x0000000706c00000, 0x0000000706e00000, 0x0000000706e00000|100%| O| |TAMS 0x0000000706c00000, 0x0000000706c00000| Untracked
| 35|0x0000000706e00000, 0x0000000706e00000, 0x0000000707000000| 0%| F| |TAMS 0x0000000706e00000, 0x0000000706e00000| Untracked
| 36|0x0000000707000000, 0x0000000707000000, 0x0000000707200000| 0%| F| |TAMS 0x0000000707000000, 0x0000000707000000| Untracked
| 37|0x0000000707200000, 0x0000000707400000, 0x0000000707400000|100%| O| |TAMS 0x0000000707200000, 0x0000000707200000| Untracked
| 38|0x0000000707400000, 0x0000000707600000, 0x0000000707600000|100%| O| |TAMS 0x0000000707400000, 0x0000000707400000| Untracked
| 39|0x0000000707600000, 0x0000000707800000, 0x0000000707800000|100%| O| |TAMS 0x0000000707600000, 0x0000000707600000| Untracked
| 40|0x0000000707800000, 0x0000000707a00000, 0x0000000707a00000|100%| O| |TAMS 0x0000000707800000, 0x0000000707800000| Untracked
| 41|0x0000000707a00000, 0x0000000707a00000, 0x0000000707c00000| 0%| F| |TAMS 0x0000000707a00000, 0x0000000707a00000| Untracked
| 42|0x0000000707c00000, 0x0000000707c00000, 0x0000000707e00000| 0%| F| |TAMS 0x0000000707c00000, 0x0000000707c00000| Untracked
| 43|0x0000000707e00000, 0x0000000708000000, 0x0000000708000000|100%| O| |TAMS 0x0000000708000000, 0x0000000707e00000| Complete
| 44|0x0000000708000000, 0x0000000708200000, 0x0000000708200000|100%| O| |TAMS 0x0000000708200000, 0x0000000708000000| Untracked
| 45|0x0000000708200000, 0x0000000708400000, 0x0000000708400000|100%| O| |TAMS 0x0000000708400000, 0x0000000708200000| Untracked
| 46|0x0000000708400000, 0x0000000708600000, 0x0000000708600000|100%| O| |TAMS 0x00000007085b1200, 0x0000000708400000| Untracked
| 47|0x0000000708600000, 0x0000000708800000, 0x0000000708800000|100%| O| |TAMS 0x0000000708600000, 0x0000000708600000| Untracked
| 48|0x0000000708800000, 0x0000000708a00000, 0x0000000708a00000|100%| O| |TAMS 0x0000000708800000, 0x0000000708800000| Untracked
| 49|0x0000000708a00000, 0x0000000708c00000, 0x0000000708c00000|100%| O| |TAMS 0x0000000708a00000, 0x0000000708a00000| Untracked
| 50|0x0000000708c00000, 0x0000000708e00000, 0x0000000708e00000|100%| O| |TAMS 0x0000000708c00000, 0x0000000708c00000| Untracked
| 51|0x0000000708e00000, 0x0000000709000000, 0x0000000709000000|100%| O| |TAMS 0x0000000708e00000, 0x0000000708e00000| Untracked
| 52|0x0000000709000000, 0x00000007091a4a00, 0x0000000709200000| 82%| O| |TAMS 0x0000000709000000, 0x0000000709000000| Untracked
| 53|0x0000000709200000, 0x0000000709200000, 0x0000000709400000| 0%| F| |TAMS 0x0000000709200000, 0x0000000709200000| Untracked
| 54|0x0000000709400000, 0x0000000709400000, 0x0000000709600000| 0%| F| |TAMS 0x0000000709400000, 0x0000000709400000| Untracked
| 55|0x0000000709600000, 0x0000000709600000, 0x0000000709800000| 0%| F| |TAMS 0x0000000709600000, 0x0000000709600000| Untracked
| 56|0x0000000709800000, 0x0000000709800000, 0x0000000709a00000| 0%| F| |TAMS 0x0000000709800000, 0x0000000709800000| Untracked
| 57|0x0000000709a00000, 0x0000000709a00000, 0x0000000709c00000| 0%| F| |TAMS 0x0000000709a00000, 0x0000000709a00000| Untracked
| 58|0x0000000709c00000, 0x0000000709c00000, 0x0000000709e00000| 0%| F| |TAMS 0x0000000709c00000, 0x0000000709c00000| Untracked
| 59|0x0000000709e00000, 0x0000000709e00000, 0x000000070a000000| 0%| F| |TAMS 0x0000000709e00000, 0x0000000709e00000| Untracked
| 60|0x000000070a000000, 0x000000070a000000, 0x000000070a200000| 0%| F| |TAMS 0x000000070a000000, 0x000000070a000000| Untracked
| 61|0x000000070a200000, 0x000000070a200000, 0x000000070a400000| 0%| F| |TAMS 0x000000070a200000, 0x000000070a200000| Untracked
| 62|0x000000070a400000, 0x000000070a400000, 0x000000070a600000| 0%| F| |TAMS 0x000000070a400000, 0x000000070a400000| Untracked
| 63|0x000000070a600000, 0x000000070a600000, 0x000000070a800000| 0%| F| |TAMS 0x000000070a600000, 0x000000070a600000| Untracked
| 64|0x000000070a800000, 0x000000070a800000, 0x000000070aa00000| 0%| F| |TAMS 0x000000070a800000, 0x000000070a800000| Untracked
| 65|0x000000070aa00000, 0x000000070aa00000, 0x000000070ac00000| 0%| F| |TAMS 0x000000070aa00000, 0x000000070aa00000| Untracked
| 66|0x000000070ac00000, 0x000000070ac00000, 0x000000070ae00000| 0%| F| |TAMS 0x000000070ac00000, 0x000000070ac00000| Untracked
| 67|0x000000070ae00000, 0x000000070ae00000, 0x000000070b000000| 0%| F| |TAMS 0x000000070ae00000, 0x000000070ae00000| Untracked
| 68|0x000000070b000000, 0x000000070b000000, 0x000000070b200000| 0%| F| |TAMS 0x000000070b000000, 0x000000070b000000| Untracked
| 69|0x000000070b200000, 0x000000070b200000, 0x000000070b400000| 0%| F| |TAMS 0x000000070b200000, 0x000000070b200000| Untracked
| 70|0x000000070b400000, 0x000000070b400000, 0x000000070b600000| 0%| F| |TAMS 0x000000070b400000, 0x000000070b400000| Untracked
| 71|0x000000070b600000, 0x000000070b600000, 0x000000070b800000| 0%| F| |TAMS 0x000000070b600000, 0x000000070b600000| Untracked
| 72|0x000000070b800000, 0x000000070b800000, 0x000000070ba00000| 0%| F| |TAMS 0x000000070b800000, 0x000000070b800000| Untracked
| 73|0x000000070ba00000, 0x000000070ba00000, 0x000000070bc00000| 0%| F| |TAMS 0x000000070ba00000, 0x000000070ba00000| Untracked
| 74|0x000000070bc00000, 0x000000070bc00000, 0x000000070be00000| 0%| F| |TAMS 0x000000070bc00000, 0x000000070bc00000| Untracked
| 75|0x000000070be00000, 0x000000070be00000, 0x000000070c000000| 0%| F| |TAMS 0x000000070be00000, 0x000000070be00000| Untracked
| 76|0x000000070c000000, 0x000000070c000000, 0x000000070c200000| 0%| F| |TAMS 0x000000070c000000, 0x000000070c000000| Untracked
| 77|0x000000070c200000, 0x000000070c200000, 0x000000070c400000| 0%| F| |TAMS 0x000000070c200000, 0x000000070c200000| Untracked
| 78|0x000000070c400000, 0x000000070c400000, 0x000000070c600000| 0%| F| |TAMS 0x000000070c400000, 0x000000070c400000| Untracked
| 79|0x000000070c600000, 0x000000070c600000, 0x000000070c800000| 0%| F| |TAMS 0x000000070c600000, 0x000000070c600000| Untracked
| 80|0x000000070c800000, 0x000000070c800000, 0x000000070ca00000| 0%| F| |TAMS 0x000000070c800000, 0x000000070c800000| Untracked
| 81|0x000000070ca00000, 0x000000070ca00000, 0x000000070cc00000| 0%| F| |TAMS 0x000000070ca00000, 0x000000070ca00000| Untracked
| 82|0x000000070cc00000, 0x000000070cc00000, 0x000000070ce00000| 0%| F| |TAMS 0x000000070cc00000, 0x000000070cc00000| Untracked
| 83|0x000000070ce00000, 0x000000070ce00000, 0x000000070d000000| 0%| F| |TAMS 0x000000070ce00000, 0x000000070ce00000| Untracked
| 84|0x000000070d000000, 0x000000070d000000, 0x000000070d200000| 0%| F| |TAMS 0x000000070d000000, 0x000000070d000000| Untracked
| 85|0x000000070d200000, 0x000000070d200000, 0x000000070d400000| 0%| F| |TAMS 0x000000070d200000, 0x000000070d200000| Untracked
| 86|0x000000070d400000, 0x000000070d400000, 0x000000070d600000| 0%| F| |TAMS 0x000000070d400000, 0x000000070d400000| Untracked
| 87|0x000000070d600000, 0x000000070d600000, 0x000000070d800000| 0%| F| |TAMS 0x000000070d600000, 0x000000070d600000| Untracked
| 88|0x000000070d800000, 0x000000070d800000, 0x000000070da00000| 0%| F| |TAMS 0x000000070d800000, 0x000000070d800000| Untracked
| 89|0x000000070da00000, 0x000000070da00000, 0x000000070dc00000| 0%| F| |TAMS 0x000000070da00000, 0x000000070da00000| Untracked
| 90|0x000000070dc00000, 0x000000070dc00000, 0x000000070de00000| 0%| F| |TAMS 0x000000070dc00000, 0x000000070dc00000| Untracked
| 91|0x000000070de00000, 0x000000070de00000, 0x000000070e000000| 0%| F| |TAMS 0x000000070de00000, 0x000000070de00000| Untracked
| 92|0x000000070e000000, 0x000000070e0cecd0, 0x000000070e200000| 40%| S|CS|TAMS 0x000000070e000000, 0x000000070e000000| Complete
| 93|0x000000070e200000, 0x000000070e200000, 0x000000070e400000| 0%| F| |TAMS 0x000000070e200000, 0x000000070e200000| Untracked
| 126|0x0000000712400000, 0x0000000712400000, 0x0000000712600000| 0%| F| |TAMS 0x0000000712400000, 0x0000000712400000| Untracked
Card table byte_map: [0x000002392d2b0000,0x000002392daa0000] _byte_map_base: 0x0000023929a9c000
Marking Bits (Prev, Next): (CMBitMap*) 0x00000239221afe90, (CMBitMap*) 0x00000239221afed0
Prev Bits: [0x000002392e290000, 0x00000239321f0000)
Next Bits: [0x00000239321f0000, 0x0000023936150000)
Polling page: 0x00000239202b0000
Metaspace:
Usage:
Non-class: 57.80 MB used.
Class: 8.91 MB used.
Both: 66.70 MB used.
Virtual space:
Non-class space: 64.00 MB reserved, 58.06 MB ( 91%) committed, 8 nodes.
Class space: 1.00 GB reserved, 9.19 MB ( <1%) committed, 1 nodes.
Both: 1.06 GB reserved, 67.25 MB ( 6%) committed.
Chunk freelists:
Non-Class: 1.03 MB
Class: 2.73 MB
Both: 3.77 MB
MaxMetaspaceSize: unlimited
CompressedClassSpaceSize: 1.00 GB
Initial GC threshold: 21.00 MB
Current GC threshold: 107.50 MB
CDS: on
MetaspaceReclaimPolicy: balanced
- commit_granule_bytes: 65536.
- commit_granule_words: 8192.
- virtual_space_node_default_size: 1048576.
- enlarge_chunks_in_place: 1.
- new_chunks_are_fully_committed: 0.
- uncommit_free_chunks: 1.
- use_allocation_guard: 0.
- handle_deallocations: 1.
Internal statistics:
num_allocs_failed_limit: 9.
num_arena_births: 760.
num_arena_deaths: 0.
num_vsnodes_births: 9.
num_vsnodes_deaths: 0.
num_space_committed: 1076.
num_space_uncommitted: 0.
num_chunks_returned_to_freelist: 9.
num_chunks_taken_from_freelist: 3150.
num_chunk_merges: 6.
num_chunk_splits: 2243.
num_chunks_enlarged: 1710.
num_purges: 0.
num_inconsistent_stats: 0.
CodeCache: size=49152Kb used=16349Kb max_used=16349Kb free=32802Kb
bounds [0x00000239299a0000, 0x000002392a9a0000, 0x000002392c9a0000]
total_blobs=8474 nmethods=7792 adapters=605
compilation: enabled
stopped_count=0, restarted_count=0
full_count=0
Compilation events (20 events):
Event: 10.142 Thread 0x0000023939819d70 7785 1 java.util.stream.SortedOps$RefSortingSink::accept (10 bytes)
Event: 10.142 Thread 0x0000023939819d70 nmethod 7785 0x000002392a993910 code [0x000002392a993aa0, 0x000002392a993b88]
Event: 10.257 Thread 0x0000023939819d70 7786 1 sun.reflect.generics.parser.SignatureParser::parseFormalTypeParameter (16 bytes)
Event: 10.257 Thread 0x000002393ab32560 7787 1 sun.reflect.generics.parser.SignatureParser::parseBounds (112 bytes)
Event: 10.257 Thread 0x00000239399c3c60 7788 1 sun.reflect.generics.tree.FormalTypeParameter::make (10 bytes)
Event: 10.257 Thread 0x00000239399bf740 7789 1 sun.reflect.generics.tree.FormalTypeParameter::<init> (15 bytes)
Event: 10.257 Thread 0x00000239399bf740 nmethod 7789 0x000002392a993c10 code [0x000002392a993da0, 0x000002392a993f18]
Event: 10.257 Thread 0x00000239399c3c60 nmethod 7788 0x000002392a993f90 code [0x000002392a994120, 0x000002392a9942d8]
Event: 10.257 Thread 0x00000239399c3c60 7790 1 sun.reflect.generics.reflectiveObjects.LazyReflectiveObjectGenerator::reifyBounds (51 bytes)
Event: 10.257 Thread 0x00000239399bf740 7791 1 sun.reflect.generics.reflectiveObjects.TypeVariableImpl::make (66 bytes)
Event: 10.257 Thread 0x0000023939819d70 nmethod 7786 0x000002392a994390 code [0x000002392a994540, 0x000002392a9947a8]
Event: 10.257 Thread 0x0000023939819d70 7792 1 sun.reflect.generics.reflectiveObjects.TypeVariableImpl::<init> (22 bytes)
Event: 10.257 Thread 0x0000023939819d70 nmethod 7792 0x000002392a994910 code [0x000002392a994aa0, 0x000002392a994cf8]
Event: 10.258 Thread 0x000002393ab32560 nmethod 7787 0x000002392a994d90 code [0x000002392a994fe0, 0x000002392a995698]
Event: 10.258 Thread 0x00000239399c3c60 nmethod 7790 0x000002392a995a90 code [0x000002392a995c40, 0x000002392a996028]
Event: 10.259 Thread 0x00000239399bf740 nmethod 7791 0x000002392a996210 code [0x000002392a996420, 0x000002392a996ae8]
Event: 10.278 Thread 0x00000239399bf740 7793 ! 1 jdk.proxy2.$Proxy46::annotationType (29 bytes)
Event: 10.278 Thread 0x00000239399bf740 nmethod 7793 0x000002392a996d10 code [0x000002392a996ec0, 0x000002392a9970d8]
Event: 10.283 Thread 0x00000239399bf740 7794 1 org.springframework.core.MethodParameter::clone (9 bytes)
Event: 10.283 Thread 0x00000239399bf740 nmethod 7794 0x000002392a997210 code [0x000002392a9973a0, 0x000002392a9974e8]
GC Heap History (20 events):
Event: 7.650 GC heap after
{Heap after GC invocations=23 (full 0):
garbage-first heap total 141312K, used 46797K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 4 young (8192K), 4 survivors (8192K)
Metaspace used 55396K, committed 55936K, reserved 1097728K
class space used 7482K, committed 7744K, reserved 1048576K
}
Event: 8.005 GC heap before
{Heap before GC invocations=23 (full 0):
garbage-first heap total 141312K, used 73421K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 18 young (36864K), 4 survivors (8192K)
Metaspace used 60083K, committed 60480K, reserved 1105920K
class space used 7999K, committed 8192K, reserved 1048576K
}
Event: 8.011 GC heap after
{Heap after GC invocations=24 (full 0):
garbage-first heap total 141312K, used 48800K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 4 young (8192K), 4 survivors (8192K)
Metaspace used 60083K, committed 60480K, reserved 1105920K
class space used 7999K, committed 8192K, reserved 1048576K
}
Event: 8.790 GC heap before
{Heap before GC invocations=25 (full 0):
garbage-first heap total 141312K, used 116384K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 37 young (75776K), 4 survivors (8192K)
Metaspace used 64276K, committed 64832K, reserved 1105920K
class space used 8557K, committed 8832K, reserved 1048576K
}
Event: 8.798 GC heap after
{Heap after GC invocations=26 (full 0):
garbage-first heap total 141312K, used 55694K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 5 young (10240K), 5 survivors (10240K)
Metaspace used 64276K, committed 64832K, reserved 1105920K
class space used 8557K, committed 8832K, reserved 1048576K
}
Event: 8.912 GC heap before
{Heap before GC invocations=26 (full 0):
garbage-first heap total 141312K, used 110990K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 33 young (67584K), 5 survivors (10240K)
Metaspace used 64347K, committed 64896K, reserved 1105920K
class space used 8568K, committed 8832K, reserved 1048576K
}
Event: 8.924 GC heap after
{Heap after GC invocations=27 (full 0):
garbage-first heap total 141312K, used 71506K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 5 young (10240K), 5 survivors (10240K)
Metaspace used 64347K, committed 64896K, reserved 1105920K
class space used 8568K, committed 8832K, reserved 1048576K
}
Event: 9.052 GC heap before
{Heap before GC invocations=27 (full 0):
garbage-first heap total 141312K, used 104274K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 22 young (45056K), 5 survivors (10240K)
Metaspace used 64371K, committed 64896K, reserved 1105920K
class space used 8571K, committed 8832K, reserved 1048576K
}
Event: 9.059 GC heap after
{Heap after GC invocations=28 (full 0):
garbage-first heap total 194560K, used 78632K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 3 young (6144K), 3 survivors (6144K)
Metaspace used 64371K, committed 64896K, reserved 1105920K
class space used 8571K, committed 8832K, reserved 1048576K
}
Event: 9.226 GC heap before
{Heap before GC invocations=28 (full 0):
garbage-first heap total 194560K, used 146216K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 37 young (75776K), 3 survivors (6144K)
Metaspace used 64371K, committed 64896K, reserved 1105920K
class space used 8571K, committed 8832K, reserved 1048576K
}
Event: 9.228 GC heap after
{Heap after GC invocations=29 (full 0):
garbage-first heap total 194560K, used 77125K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 2 young (4096K), 2 survivors (4096K)
Metaspace used 64371K, committed 64896K, reserved 1105920K
class space used 8571K, committed 8832K, reserved 1048576K
}
Event: 9.385 GC heap before
{Heap before GC invocations=29 (full 0):
garbage-first heap total 194560K, used 148805K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 38 young (77824K), 2 survivors (4096K)
Metaspace used 64371K, committed 64896K, reserved 1105920K
class space used 8571K, committed 8832K, reserved 1048576K
}
Event: 9.394 GC heap after
{Heap after GC invocations=30 (full 0):
garbage-first heap total 194560K, used 94512K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 5 young (10240K), 5 survivors (10240K)
Metaspace used 64371K, committed 64896K, reserved 1105920K
class space used 8571K, committed 8832K, reserved 1048576K
}
Event: 9.525 GC heap before
{Heap before GC invocations=30 (full 0):
garbage-first heap total 194560K, used 143664K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 30 young (61440K), 5 survivors (10240K)
Metaspace used 64379K, committed 64960K, reserved 1105920K
class space used 8572K, committed 8832K, reserved 1048576K
}
Event: 9.532 GC heap after
{Heap after GC invocations=31 (full 0):
garbage-first heap total 194560K, used 103498K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 4 young (8192K), 4 survivors (8192K)
Metaspace used 64379K, committed 64960K, reserved 1105920K
class space used 8572K, committed 8832K, reserved 1048576K
}
Event: 9.733 GC heap before
{Heap before GC invocations=31 (full 0):
garbage-first heap total 194560K, used 144458K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 25 young (51200K), 4 survivors (8192K)
Metaspace used 65112K, committed 65664K, reserved 1114112K
class space used 8700K, committed 8960K, reserved 1048576K
}
Event: 9.743 GC heap after
{Heap after GC invocations=32 (full 0):
garbage-first heap total 194560K, used 113722K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 4 young (8192K), 4 survivors (8192K)
Metaspace used 65112K, committed 65664K, reserved 1114112K
class space used 8700K, committed 8960K, reserved 1048576K
}
Event: 10.242 GC heap before
{Heap before GC invocations=33 (full 0):
garbage-first heap total 194560K, used 136250K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 21 young (43008K), 4 survivors (8192K)
Metaspace used 68204K, committed 68736K, reserved 1114112K
class space used 9100K, committed 9344K, reserved 1048576K
}
Event: 10.249 GC heap after
{Heap after GC invocations=34 (full 0):
garbage-first heap total 194560K, used 107573K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 2 young (4096K), 2 survivors (4096K)
Metaspace used 68204K, committed 68736K, reserved 1114112K
class space used 9100K, committed 9344K, reserved 1048576K
}
Event: 10.300 GC heap before
{Heap before GC invocations=34 (full 0):
garbage-first heap total 194560K, used 111669K [0x0000000702800000, 0x0000000800000000)
region size 2048K, 4 young (8192K), 2 survivors (4096K)
Metaspace used 68301K, committed 68864K, reserved 1114112K
class space used 9119K, committed 9408K, reserved 1048576K
}
Deoptimization events (18 events):
Event: 2.465 Thread 0x0000023922142190 DEOPT PACKING pc=0x0000023929fa7e79 sp=0x00000074868fd140
Event: 2.465 Thread 0x0000023922142190 DEOPT UNPACKING pc=0x00000239299f2b43 sp=0x00000074868fc620 mode 3
Event: 2.673 Thread 0x0000023922142190 DEOPT PACKING pc=0x0000023929e2e125 sp=0x00000074868fe040
Event: 2.673 Thread 0x0000023922142190 DEOPT UNPACKING pc=0x00000239299f2b43 sp=0x00000074868fd5c0 mode 3
Event: 4.076 Thread 0x0000023922142190 DEOPT PACKING pc=0x000002392a25e6f9 sp=0x00000074868fdfb0
Event: 4.076 Thread 0x0000023922142190 DEOPT UNPACKING pc=0x00000239299f2b43 sp=0x00000074868fd498 mode 3
Event: 4.670 Thread 0x0000023922142190 DEOPT PACKING pc=0x000002392a2df30a sp=0x00000074868fb9b0
Event: 4.670 Thread 0x0000023922142190 DEOPT UNPACKING pc=0x00000239299f2b43 sp=0x00000074868faf48 mode 0
Event: 5.683 Thread 0x000002393d941210 DEOPT PACKING pc=0x0000023929fb5809 sp=0x00000074892ff130
Event: 5.683 Thread 0x000002393d941210 DEOPT UNPACKING pc=0x00000239299f2b43 sp=0x00000074892fe5c8 mode 3
Event: 6.498 Thread 0x0000023922142190 DEOPT PACKING pc=0x0000023929f94b62 sp=0x00000074868fcb00
Event: 6.498 Thread 0x0000023922142190 DEOPT UNPACKING pc=0x00000239299f2b43 sp=0x00000074868fc008 mode 3
Event: 6.577 Thread 0x0000023922142190 DEOPT PACKING pc=0x000002392a5a2c54 sp=0x00000074868fcfc0
Event: 6.577 Thread 0x0000023922142190 DEOPT UNPACKING pc=0x00000239299f2b43 sp=0x00000074868fc458 mode 3
Event: 8.707 Thread 0x0000023922142190 DEOPT PACKING pc=0x000002392a805993 sp=0x00000074868fd340
Event: 8.707 Thread 0x0000023922142190 DEOPT UNPACKING pc=0x00000239299f2b43 sp=0x00000074868fc888 mode 3
Event: 8.869 Thread 0x000002393df9cbb0 DEOPT PACKING pc=0x0000023929f9241f sp=0x000000748b9fefd0
Event: 8.869 Thread 0x000002393df9cbb0 DEOPT UNPACKING pc=0x00000239299f2b43 sp=0x000000748b9fe428 mode 3
Classes unloaded (0 events):
No events
Classes redefined (0 events):
No events
Internal exceptions (20 events):
Event: 9.425 Thread 0x000002393da0d2d0 Exception <a 'sun/nio/fs/WindowsException'{0x000000070e019580}> (0x000000070e019580)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516]
Event: 9.426 Thread 0x000002393da0d2d0 Exception <a 'sun/nio/fs/WindowsException'{0x000000070e0197a0}> (0x000000070e0197a0)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516]
Event: 9.426 Thread 0x000002393da0d2d0 Exception <a 'sun/nio/fs/WindowsException'{0x000000070e01a000}> (0x000000070e01a000)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516]
Event: 9.427 Thread 0x000002393da0d2d0 Exception <a 'sun/nio/fs/WindowsException'{0x000000070e01a210}> (0x000000070e01a210)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516]
Event: 9.427 Thread 0x000002393da0d2d0 Exception <a 'sun/nio/fs/WindowsException'{0x000000070e01aa78}> (0x000000070e01aa78)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516]
Event: 9.428 Thread 0x000002393da0d2d0 Exception <a 'sun/nio/fs/WindowsException'{0x000000070e01ac98}> (0x000000070e01ac98)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516]
Event: 9.428 Thread 0x000002393da0d2d0 Exception <a 'sun/nio/fs/WindowsException'{0x000000070e01b520}> (0x000000070e01b520)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516]
Event: 9.428 Thread 0x000002393da0d2d0 Exception <a 'sun/nio/fs/WindowsException'{0x000000070e01b760}> (0x000000070e01b760)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516]
Event: 9.428 Thread 0x000002393da0d2d0 Exception <a 'sun/nio/fs/WindowsException'{0x000000070e01bff8}> (0x000000070e01bff8)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516]
Event: 9.428 Thread 0x000002393da0d2d0 Exception <a 'sun/nio/fs/WindowsException'{0x000000070e01c250}> (0x000000070e01c250)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516]
Event: 9.428 Thread 0x000002393da0d2d0 Exception <a 'sun/nio/fs/WindowsException'{0x000000070e01cae0}> (0x000000070e01cae0)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516]
Event: 9.429 Thread 0x000002393da0d2d0 Exception <a 'sun/nio/fs/WindowsException'{0x000000070e01cd30}> (0x000000070e01cd30)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516]
Event: 9.549 Thread 0x0000023944212e60 Exception <a 'sun/nio/fs/WindowsException'{0x000000070da27418}> (0x000000070da27418)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516]
Event: 9.549 Thread 0x0000023944219840 Exception <a 'sun/nio/fs/WindowsException'{0x000000070daafb50}> (0x000000070daafb50)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516]
Event: 9.551 Thread 0x000002393da0b5f0 Exception <a 'sun/nio/fs/WindowsException'{0x000000070dabf8c0}> (0x000000070dabf8c0)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516]
Event: 9.551 Thread 0x0000023944212990 Exception <a 'sun/nio/fs/WindowsException'{0x000000070da9e2e0}> (0x000000070da9e2e0)
thrown [s\open\src\hotspot\share\prims\jni.cpp, line 516]
Event: 9.815 Thread 0x0000023922142190 Exception <a 'java/lang/NoSuchMethodError'{0x000000070e33cad8}: 'java.lang.Object java.lang.invoke.DirectMethodHandle$Holder.invokeStaticInit(java.lang.Object, long)'> (0x000000070e33cad8)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 759]
Event: 9.918 Thread 0x0000023922142190 Exception <a 'java/lang/IncompatibleClassChangeError'{0x000000070da6b668}: Found class java.lang.Object, but interface was expected> (0x000000070da6b668)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 826]
Event: 9.929 Thread 0x0000023922142190 Exception <a 'java/lang/IncompatibleClassChangeError'{0x000000070db3a638}: Found class java.lang.Object, but interface was expected> (0x000000070db3a638)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 826]
Event: 9.944 Thread 0x0000023922142190 Exception <a 'java/lang/IncompatibleClassChangeError'{0x000000070d83ffe0}: Found class java.lang.Object, but interface was expected> (0x000000070d83ffe0)
thrown [s\open\src\hotspot\share\interpreter\linkResolver.cpp, line 826]
VM Operations (20 events):
Event: 9.061 Executing VM operation: G1CollectForAllocation done
Event: 9.226 Executing VM operation: G1CollectForAllocation
Event: 9.229 Executing VM operation: G1CollectForAllocation done
Event: 9.384 Executing VM operation: G1CollectForAllocation
Event: 9.395 Executing VM operation: G1CollectForAllocation done
Event: 9.525 Executing VM operation: G1CollectForAllocation
Event: 9.534 Executing VM operation: G1CollectForAllocation done
Event: 9.729 Executing VM operation: HandshakeAllThreads
Event: 9.729 Executing VM operation: HandshakeAllThreads done
Event: 9.729 Executing VM operation: HandshakeAllThreads
Event: 9.729 Executing VM operation: HandshakeAllThreads done
Event: 9.733 Executing VM operation: G1CollectForAllocation
Event: 9.743 Executing VM operation: G1CollectForAllocation done
Event: 9.792 Executing VM operation: G1Concurrent
Event: 9.797 Executing VM operation: G1Concurrent done
Event: 9.822 Executing VM operation: G1Concurrent
Event: 9.822 Executing VM operation: G1Concurrent done
Event: 10.242 Executing VM operation: G1CollectForAllocation
Event: 10.249 Executing VM operation: G1CollectForAllocation done
Event: 10.300 Executing VM operation: G1CollectForAllocation
Events (20 events):
Event: 10.009 loading class jdk/internal/reflect/UnsafeQualifiedObjectFieldAccessorImpl
Event: 10.009 loading class jdk/internal/reflect/UnsafeQualifiedFieldAccessorImpl
Event: 10.009 loading class jdk/internal/reflect/UnsafeQualifiedFieldAccessorImpl done
Event: 10.009 loading class jdk/internal/reflect/UnsafeQualifiedObjectFieldAccessorImpl done
Event: 10.096 loading class javax/management/InstanceAlreadyExistsException
Event: 10.096 loading class javax/management/InstanceAlreadyExistsException done
Event: 10.096 loading class javax/management/NotCompliantMBeanException
Event: 10.097 loading class javax/management/NotCompliantMBeanException done
Event: 10.097 loading class javax/management/modelmbean/ModelMBean
Event: 10.098 loading class javax/management/PersistentMBean
Event: 10.098 loading class javax/management/PersistentMBean done
Event: 10.098 loading class javax/management/modelmbean/ModelMBean done
Event: 10.100 loading class javax/management/modelmbean/ModelMBeanInfo
Event: 10.101 loading class javax/management/modelmbean/ModelMBeanInfo done
Event: 10.104 loading class javax/management/AttributeList
Event: 10.105 loading class javax/management/AttributeList done
Event: 10.105 loading class javax/management/Attribute
Event: 10.105 loading class javax/management/Attribute done
Event: 10.105 loading class javax/management/IntrospectionException
Event: 10.105 loading class javax/management/IntrospectionException done
Dynamic libraries:
0x00007ff64dcf0000 - 0x00007ff64dd00000 D:\Program Files\Java\jdk-17.0.7\bin\java.exe
0x00007ffc6a190000 - 0x00007ffc6a3a7000 C:\WINDOWS\SYSTEM32\ntdll.dll
0x00007ffc68900000 - 0x00007ffc689c4000 C:\WINDOWS\System32\KERNEL32.DLL
0x00007ffc675b0000 - 0x00007ffc67957000 C:\WINDOWS\System32\KERNELBASE.dll
0x00007ffc67a50000 - 0x00007ffc67b61000 C:\WINDOWS\System32\ucrtbase.dll
0x00007ffc63a20000 - 0x00007ffc63a3b000 D:\Program Files\Java\jdk-17.0.7\bin\VCRUNTIME140.dll
0x00007ffc63e20000 - 0x00007ffc63e39000 D:\Program Files\Java\jdk-17.0.7\bin\jli.dll
0x00007ffc69a60000 - 0x00007ffc69b12000 C:\WINDOWS\System32\ADVAPI32.dll
0x00007ffc68740000 - 0x00007ffc687e7000 C:\WINDOWS\System32\msvcrt.dll
0x00007ffc67f40000 - 0x00007ffc67fe8000 C:\WINDOWS\System32\sechost.dll
0x00007ffc67490000 - 0x00007ffc674b8000 C:\WINDOWS\System32\bcrypt.dll
0x00007ffc683b0000 - 0x00007ffc684c5000 C:\WINDOWS\System32\RPCRT4.dll
0x00007ffc68ea0000 - 0x00007ffc6904e000 C:\WINDOWS\System32\USER32.dll
0x00007ffc67580000 - 0x00007ffc675a6000 C:\WINDOWS\System32\win32u.dll
0x00007ffc48c30000 - 0x00007ffc48ec3000 C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22621.3527_none_270e469b73872a76\COMCTL32.dll
0x00007ffc69c20000 - 0x00007ffc69c49000 C:\WINDOWS\System32\GDI32.dll
0x00007ffc67d80000 - 0x00007ffc67e99000 C:\WINDOWS\System32\gdi32full.dll
0x00007ffc67ce0000 - 0x00007ffc67d7a000 C:\WINDOWS\System32\msvcp_win.dll
0x00007ffc5b4a0000 - 0x00007ffc5b4aa000 C:\WINDOWS\SYSTEM32\VERSION.dll
0x00007ffc69be0000 - 0x00007ffc69c11000 C:\WINDOWS\System32\IMM32.DLL
0x00007ffc64750000 - 0x00007ffc6475c000 D:\Program Files\Java\jdk-17.0.7\bin\vcruntime140_1.dll
0x00007ffc53d20000 - 0x00007ffc53dae000 D:\Program Files\Java\jdk-17.0.7\bin\msvcp140.dll
0x00007ffbe1a40000 - 0x00007ffbe261d000 D:\Program Files\Java\jdk-17.0.7\bin\server\jvm.dll
0x00007ffc68d30000 - 0x00007ffc68d38000 C:\WINDOWS\System32\PSAPI.DLL
0x00007ffc5f4b0000 - 0x00007ffc5f4e4000 C:\WINDOWS\SYSTEM32\WINMM.dll
0x00007ffc440a0000 - 0x00007ffc440a9000 C:\WINDOWS\SYSTEM32\WSOCK32.dll
0x00007ffc69c50000 - 0x00007ffc69cc1000 C:\WINDOWS\System32\WS2_32.dll
0x00007ffc664f0000 - 0x00007ffc66508000 C:\WINDOWS\SYSTEM32\kernel.appcore.dll
0x00007ffc63df0000 - 0x00007ffc63dfa000 D:\Program Files\Java\jdk-17.0.7\bin\jimage.dll
0x00007ffc5e660000 - 0x00007ffc5e892000 C:\WINDOWS\SYSTEM32\DBGHELP.DLL
0x00007ffc68000000 - 0x00007ffc68388000 C:\WINDOWS\System32\combase.dll
0x00007ffc68ba0000 - 0x00007ffc68c77000 C:\WINDOWS\System32\OLEAUT32.dll
0x00007ffc5a360000 - 0x00007ffc5a392000 C:\WINDOWS\SYSTEM32\dbgcore.DLL
0x00007ffc67960000 - 0x00007ffc679d9000 C:\WINDOWS\System32\bcryptPrimitives.dll
0x00007ffc623e0000 - 0x00007ffc623ee000 D:\Program Files\Java\jdk-17.0.7\bin\instrument.dll
0x00007ffc60230000 - 0x00007ffc60255000 D:\Program Files\Java\jdk-17.0.7\bin\java.dll
0x00007ffc09680000 - 0x00007ffc09757000 D:\Program Files\Java\jdk-17.0.7\bin\jsvml.dll
0x00007ffc69200000 - 0x00007ffc69a5c000 C:\WINDOWS\System32\SHELL32.dll
0x00007ffc65340000 - 0x00007ffc65c36000 C:\WINDOWS\SYSTEM32\windows.storage.dll
0x00007ffc65200000 - 0x00007ffc6533e000 C:\WINDOWS\SYSTEM32\wintypes.dll
0x00007ffc68800000 - 0x00007ffc688f5000 C:\WINDOWS\System32\SHCORE.dll
0x00007ffc68630000 - 0x00007ffc6868e000 C:\WINDOWS\System32\shlwapi.dll
0x00007ffc673c0000 - 0x00007ffc673e1000 C:\WINDOWS\SYSTEM32\profapi.dll
0x00007ffc598e0000 - 0x00007ffc598f8000 D:\Program Files\Java\jdk-17.0.7\bin\zip.dll
0x00007ffc5f5e0000 - 0x00007ffc5f5f9000 D:\Program Files\Java\jdk-17.0.7\bin\net.dll
0x00007ffc61240000 - 0x00007ffc61376000 C:\WINDOWS\SYSTEM32\WINHTTP.dll
0x00007ffc66950000 - 0x00007ffc669b9000 C:\WINDOWS\system32\mswsock.dll
0x00007ffc5a280000 - 0x00007ffc5a296000 D:\Program Files\Java\jdk-17.0.7\bin\nio.dll
0x00007ffc53d00000 - 0x00007ffc53d1a000 D:\Program Files\JetBrains\IntelliJ IDEA 2021.2.4\bin\breakgen64.dll
0x00007ffc65f80000 - 0x00007ffc66078000 C:\WINDOWS\SYSTEM32\DNSAPI.dll
0x00007ffc65f10000 - 0x00007ffc65f3d000 C:\WINDOWS\SYSTEM32\IPHLPAPI.DLL
0x00007ffc687f0000 - 0x00007ffc687f9000 C:\WINDOWS\System32\NSI.dll
0x00007ffc5c700000 - 0x00007ffc5c70a000 C:\Windows\System32\rasadhlp.dll
0x00007ffc5fa90000 - 0x00007ffc5fb13000 C:\WINDOWS\System32\fwpuclnt.dll
0x00007ffc61450000 - 0x00007ffc6145a000 D:\Program Files\Java\jdk-17.0.7\bin\management.dll
0x00007ffc60530000 - 0x00007ffc6053b000 D:\Program Files\Java\jdk-17.0.7\bin\management_ext.dll
0x00007ffc66bf0000 - 0x00007ffc66c0b000 C:\WINDOWS\SYSTEM32\CRYPTSP.dll
0x00007ffc66450000 - 0x00007ffc66485000 C:\WINDOWS\system32\rsaenh.dll
0x00007ffc669f0000 - 0x00007ffc66a18000 C:\WINDOWS\SYSTEM32\USERENV.dll
0x00007ffc66b60000 - 0x00007ffc66b6c000 C:\WINDOWS\SYSTEM32\CRYPTBASE.dll
0x00007ffc60f60000 - 0x00007ffc60f79000 C:\WINDOWS\SYSTEM32\dhcpcsvc6.DLL
0x00007ffc60eb0000 - 0x00007ffc60ecf000 C:\WINDOWS\SYSTEM32\dhcpcsvc.DLL
0x00007ffc3b460000 - 0x00007ffc3b477000 C:\WINDOWS\system32\napinsp.dll
0x00007ffc32db0000 - 0x00007ffc32dcb000 C:\WINDOWS\system32\pnrpnsp.dll
0x00007ffc32d90000 - 0x00007ffc32da1000 C:\WINDOWS\System32\winrnr.dll
0x00007ffc60090000 - 0x00007ffc600a5000 C:\WINDOWS\system32\wshbth.dll
0x00007ffc32d60000 - 0x00007ffc32d87000 C:\WINDOWS\system32\nlansp_c.dll
0x00007ffc5a160000 - 0x00007ffc5a170000 D:\Program Files\Java\jdk-17.0.7\bin\verify.dll
0x00007ffc60310000 - 0x00007ffc6031d000 D:\Program Files\Java\jdk-17.0.7\bin\sunmscapi.dll
0x00007ffc67b70000 - 0x00007ffc67cd8000 C:\WINDOWS\System32\CRYPT32.dll
0x00007ffc66dc0000 - 0x00007ffc66dee000 C:\WINDOWS\SYSTEM32\ncrypt.dll
0x00007ffc66d80000 - 0x00007ffc66db7000 C:\WINDOWS\SYSTEM32\NTASN1.dll
0x00007ffc2b460000 - 0x00007ffc2b468000 C:\WINDOWS\system32\wshunix.dll
dbghelp: loaded successfully - version: 4.0.5 - missing functions: none
symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;D:\Program Files\Java\jdk-17.0.7\bin;C:\WINDOWS\SYSTEM32;C:\WINDOWS\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22621.3527_none_270e469b73872a76;D:\Program Files\Java\jdk-17.0.7\bin\server;D:\Program Files\JetBrains\IntelliJ IDEA 2021.2.4\bin
VM Arguments:
jvm_args: -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -Dmanagement.endpoints.jmx.exposure.include=* -javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2021.2.4\lib\idea_rt.jar=62085:D:\Program Files\JetBrains\IntelliJ IDEA 2021.2.4\bin -Dfile.encoding=UTF-8
java_command: cn.workde.Application
java_class_path (initial): D:\IDEA\club-nfc\target\classes;C:\Users\li.jiaqi\.m2\repository\org\springframework\boot\spring-boot-starter-web\3.0.4\spring-boot-starter-web-3.0.4.jar;C:\Users\li.jiaqi\.m2\repository\org\springframework\boot\spring-boot-starter\3.0.4\spring-boot-starter-3.0.4.jar;C:\Users\li.jiaqi\.m2\repository\org\springframework\boot\spring-boot\3.0.4\spring-boot-3.0.4.jar;C:\Users\li.jiaqi\.m2\repository\org\springframework\boot\spring-boot-starter-logging\3.0.4\spring-boot-starter-logging-3.0.4.jar;C:\Users\li.jiaqi\.m2\repository\ch\qos\logback\logback-classic\1.4.5\logback-classic-1.4.5.jar;C:\Users\li.jiaqi\.m2\repository\ch\qos\logback\logback-core\1.4.5\logback-core-1.4.5.jar;C:\Users\li.jiaqi\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.19.0\log4j-to-slf4j-2.19.0.jar;C:\Users\li.jiaqi\.m2\repository\org\apache\logging\log4j\log4j-api\2.19.0\log4j-api-2.19.0.jar;C:\Users\li.jiaqi\.m2\repository\org\slf4j\jul-to-slf4j\2.0.6\jul-to-slf4j-2.0.6.jar;C:\Users\li.jiaqi\.m2\repository\jakarta\annotation\jakarta.annotation-api\2.1.1\jakarta.annotation-api-2.1.1.jar;C:\Users\li.jiaqi\.m2\repository\org\springframework\spring-core\6.0.6\spring-core-6.0.6.jar;C:\Users\li.jiaqi\.m2\repository\org\springframework\spring-jcl\6.0.6\spring-jcl-6.0.6.jar;C:\Users\li.jiaqi\.m2\repository\org\springframework\boot\spring-boot-starter-json\3.0.4\spring-boot-starter-json-3.0.4.jar;C:\Users\li.jiaqi\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.14.2\jackson-datatype-jdk8-2.14.2.jar;C:\Users\li.jiaqi\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.14.2\jackson-datatype-jsr310-2.14.2.jar;C:\Users\li.jiaqi\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.14.2\jackson-module-parameter-names-2.14.2.jar;C:\Users\li.jiaqi\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\3.0.4\spring-boot-starter-tomcat-3.0.4.jar;C:\Users\li.jiaqi\.m2\repository\org\apache\tomcat\emb
Launcher Type: SUN_STANDARD
[Global flags]
intx CICompilerCount = 4 {product} {ergonomic}
uint ConcGCThreads = 2 {product} {ergonomic}
uint G1ConcRefinementThreads = 8 {product} {ergonomic}
size_t G1HeapRegionSize = 2097152 {product} {ergonomic}
uintx GCDrainStackTargetSize = 64 {product} {ergonomic}
size_t InitialHeapSize = 266338304 {product} {ergonomic}
bool ManagementServer = true {product} {command line}
size_t MarkStackSize = 4194304 {product} {ergonomic}
size_t MaxHeapSize = 4253024256 {product} {ergonomic}
size_t MaxNewSize = 2550136832 {product} {ergonomic}
size_t MinHeapDeltaBytes = 2097152 {product} {ergonomic}
size_t MinHeapSize = 8388608 {product} {ergonomic}
uintx NonProfiledCodeHeapSize = 0 {pd product} {ergonomic}
bool ProfileInterpreter = false {pd product} {command line}
uintx ProfiledCodeHeapSize = 0 {pd product} {ergonomic}
size_t SoftMaxHeapSize = 4253024256 {manageable} {ergonomic}
intx TieredStopAtLevel = 1 {product} {command line}
bool UseCompressedClassPointers = true {product lp64_product} {ergonomic}
bool UseCompressedOops = true {product lp64_product} {ergonomic}
bool UseG1GC = true {product} {ergonomic}
bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic}
Logging:
Log output configuration:
#0: stdout all=warning uptime,level,tags
#1: stderr all=off uptime,level,tags
Environment Variables:
JAVA_HOME=D:\Program Files\Java\jdk1.8.0_291
CLASSPATH=D:\apache-jmeter-5.5\lib\ext\ApacheJMeter_core.jar;D:\apache-jmeter-5.5\lib\jorphan.jar;D:\apache-jmeter-5.5\lib\logkit-2.0.jar
PATH=D:\Program Files\Java\jdk1.8.0_291\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;D:\Program Files\Bandizip\;D:\Program Files\Maven\apache-maven-3.8.6\bin;D:\Program Files\MySQL\MySQL Server 8.0\bin;C:\Program Files\Docker\Docker\resources\bin;C:\Program Files (x86)\EasyShare\x86\;C:\Program Files (x86)\EasyShare\x64\;D:\Program Files (x86)\nodejs\;D:\Program Files\Git\cmd;C:\Users\li.jiaqi\AppData\Local\Microsoft\WindowsApps;C:\Users\li.jiaqi\AppData\Roaming\npm
USERNAME=li.jiaqi
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 142 Stepping 12, GenuineIntel
--------------- S Y S T E M ---------------
OS:
Windows 11 , 64 bit Build 22621 (10.0.22621.3527)
OS uptime: 0 days 23:41 hours
Hyper-V role detected
CPU: total 8 (initial active 8) (4 cores per cpu, 2 threads per core) family 6 model 142 stepping 12 microcode 0xde, cx8, cmov, fxsr, ht, mmx, 3dnowpref, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, lzcnt, tsc, tscinvbit, avx, avx2, aes, erms, clmul, bmi1, bmi2, adx, fma, vzeroupper, clflush, clflushopt, hv
Memory: 4k page, system-wide physical 16217M (393M free)
TotalPageFile size 35150M (AvailPageFile size 105M)
current process WorkingSet (physical memory assigned to process): 425M, peak: 425M
current process commit charge ("private bytes"): 470M, peak: 534M
vm_info: Java HotSpot(TM) 64-Bit Server VM (17.0.7+8-LTS-224) for windows-amd64 JRE (17.0.7+8-LTS-224), built on Feb 28 2023 23:03:02 by "mach5one" with MS VC++ 17.1 (VS2022)
END.

View File

@ -13,7 +13,7 @@
<groupId>cn.workde</groupId>
<artifactId>club-nfc</artifactId>
<artifactId>drone-coding</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
@ -396,7 +396,7 @@
<configuration>
<target>
<copy file="${project.basedir}/target/${app.build.name}.jar"
tofile="${app.build.prod}/club-nfc.jar"/>
tofile="${app.build.prod}/drone-coding.jar"/>
<copy file="${project.basedir}/bin/start.sh" tofile="${app.build.prod}/start.sh"/>
<!-- 复制资源文件 -->

View File

@ -1,19 +0,0 @@
package cn.workde.module.nfc.config;
import jakarta.websocket.server.ServerEndpointConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
/**
* 开启WebSocket支持
*/
@Configuration
public class WebSocketConfig extends ServerEndpointConfig.Configurator {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}

View File

@ -1,66 +0,0 @@
package cn.workde.module.nfc.controller.admin;
import cn.hutool.core.util.ObjUtil;
import cn.workde.core.constant.GrapeConst;
import cn.workde.core.data.dto.Result;
import cn.workde.module.nfc.entity.People;
import cn.workde.module.nfc.entity.User;
import cn.workde.module.nfc.mapper.PeopleMapper;
import cn.workde.module.nfc.mapper.UserMapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Tag(name = "强制解绑")
@RestController
@RequestMapping(value = GrapeConst.API + "/forceUnbind")
public class _ForceUnbindController {
@Resource
private UserMapper userMapper;
@Resource
private PeopleMapper peopleMapper;
/**
* 根据卡号解绑
*/
@PutMapping("/forceUnbindByRfId/{rfId}")
@Operation(summary = "根据卡号解绑")
@Parameters({
@Parameter(name = "rfId", description = "NFC卡号", required = true)
})
public Result forceUnbindByRfId(@PathVariable("rfId") String rfId) {
User user = userMapper.selectOne(new QueryWrapper<User>().lambda()
.eq(User::getRfId, rfId)
.eq(User::getMemberStatus, 1)
.last("limit 1")
);
if (ObjUtil.isNotNull(user)) {
user.setRfId(null);
user.setRfStatus(null);
user.setRfIdWg26(null);
user.setRfIdWg34(null);
return userMapper.updateById(user) > 0 ? Result.success("操作成功") : Result.fail("操作失败");
}
People people = peopleMapper.selectOne(new QueryWrapper<People>().lambda()
.eq(People::getRfId, rfId)
.last("limit 1")
);
if (ObjUtil.isNotNull(people)) {
people.setRfId(null);
people.setRfStatus(null);
people.setRfIdWg26(null);
people.setRfIdWg34(null);
return peopleMapper.updateById(people) > 0 ? Result.success("操作成功") : Result.fail("操作失败");
}
return Result.fail("该卡未绑定飞手或人员");
}
}

View File

@ -1,114 +0,0 @@
package cn.workde.module.nfc.controller.admin;
import cn.workde.core.constant.GrapeConst;
import cn.workde.core.data.dto.Result;
import cn.workde.module.nfc.dto.PeopleDto;
import cn.workde.module.nfc.service.PeopleService;
import cn.workde.module.nfc.vo.PeopleParam;
import cn.workde.module.nfc.vo.PeopleVo;
import cn.workde.module.upms.controller._BaseController;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@Tag(name = "人员信息")
@RestController
@RequestMapping(value = GrapeConst.API + "/people")
public class _PeopleController extends _BaseController {
@Resource
private PeopleService peopleService;
@PostMapping("/getPeoplePage")
@Operation(summary = "获取人员列表")
public Result<Page<PeopleDto>> getPeoplePage(@RequestBody @Validated PeopleParam peopleParam) {
return peopleService.getPeoplePage(peopleParam);
}
@GetMapping("/getPeopleById")
@Operation(summary = "获取人员信息")
@Parameters({
@Parameter(name = "id", description = "人员ID", required = true)
})
public Result<PeopleDto> getPeopleById(String id) {
return peopleService.getPeopleById(id);
}
@PostMapping("/addPeople")
@Operation(summary = "添加人员")
public Result addPeople(@RequestBody @Validated PeopleVo peopleVo) {
return peopleService.addPeople(peopleVo);
}
@PutMapping("/updatePeople/{id}")
@Operation(summary = "修改人员")
@Parameters({
@Parameter(name = "id", description = "人员ID", required = true)
})
public Result updatePeople(@PathVariable("id") String id, @RequestBody @Validated PeopleVo peopleVo) {
return peopleService.updatePeople(id, peopleVo);
}
@DeleteMapping("/deletePeople/{id}")
@Operation(summary = "删除人员")
@Parameters({
@Parameter(name = "id", description = "人员ID", required = true)
})
public Result deletePeople(@PathVariable("id") String id) {
return peopleService.deletePeople(id);
}
@PutMapping("/associationRfId/{id}/{rfId}")
@Operation(summary = "绑定NFC卡")
@Parameters({
@Parameter(name = "id", description = "人员ID", required = true),
@Parameter(name = "rfId", description = "NFC卡号", required = true)
})
public Result associationRfId(@PathVariable("id") String id, @PathVariable("rfId") String rfId) {
return peopleService.associationRfId(id, rfId);
}
@PutMapping("/unbindRfId/{id}")
@Operation(summary = "解绑NFC卡")
@Parameters({
@Parameter(name = "id", description = "人员ID", required = true)
})
public Result unbindRfId(@PathVariable("id") String id) {
return peopleService.unbindRfId(id);
}
@PutMapping("/enable/{id}")
@Operation(summary = "启用人员")
@Parameters({
@Parameter(name = "id", description = "人员ID", required = true)
})
public Result enable(@PathVariable("id") String id) {
return peopleService.enable(id);
}
@PutMapping("/disable/{id}")
@Operation(summary = "停用人员")
@Parameters({
@Parameter(name = "id", description = "人员ID", required = true)
})
public Result disable(@PathVariable("id") String id) {
return peopleService.disable(id);
}
@GetMapping("/exportExcel")
@Operation(summary = "导出Excel")
public void exportExcel(@ParameterObject PeopleParam peopleParam) {
peopleService.exportExcel(peopleParam);
}
@GetMapping("/Wg")
@Operation(summary = "WG")
public void Wg() {
peopleService.Wg();
}
}

View File

@ -1,96 +0,0 @@
package cn.workde.module.nfc.controller.admin;
import cn.workde.core.constant.GrapeConst;
import cn.workde.core.data.dto.Result;
import cn.workde.module.nfc.dto.PlayersDto;
import cn.workde.module.nfc.dto.PlayersInspectionAdminDto;
import cn.workde.module.nfc.service.PlayersInspectionService;
import cn.workde.module.nfc.service.PlayersService;
import cn.workde.module.nfc.vo.PlayerVo;
import cn.workde.module.upms.controller._BaseController;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@Tag(name = "飞手信息")
@RestController
@RequestMapping(value = GrapeConst.API + "/players")
public class _PlayersController extends _BaseController {
@Resource
private PlayersService playersService;
@Resource
private PlayersInspectionService playersInspectionService;
@PostMapping("/getPlayerDtoPage")
@Operation(summary = "获取飞手列表")
public Result<Page<PlayersDto>> getPlayerDtoPage(@RequestBody @Validated PlayerVo playerVo) {
return playersService.getPlayerDtoPage(playerVo);
}
@PutMapping("/getPlayerDtoPage/{playerId}/{rfId}")
@Operation(summary = "绑定NFC卡")
@Parameters({
@Parameter(name = "playerId", description = "飞手ID", required = true),
@Parameter(name = "rfId", description = "NFC卡号", required = true)
})
public Result associationRfId(@PathVariable("playerId") Long playerId, @PathVariable("rfId") String rfId) {
return playersService.associationRfId(playerId, rfId);
}
@PutMapping("/unbindRfId/{playerId}")
@Operation(summary = "解绑NFC卡")
@Parameters({
@Parameter(name = "playerId", description = "飞手ID", required = true)
})
public Result unbindRfId(@PathVariable("playerId") Long playerId) {
return playersService.unbindRfId(playerId);
}
@PutMapping("/enable/{playerId}")
@Operation(summary = "启用NFC卡")
@Parameters({
@Parameter(name = "playerId", description = "飞手ID", required = true)
})
public Result enable(@PathVariable("playerId") Long playerId) {
return playersService.enable(playerId);
}
@PutMapping("/disable/{playerId}")
@Operation(summary = "停用NFC卡")
@Parameters({
@Parameter(name = "playerId", description = "飞手ID", required = true)
})
public Result disable(@PathVariable("playerId") Long playerId) {
return playersService.disable(playerId);
}
@GetMapping("/getPlayersInspection/{playerId}")
@Operation(summary = "获取NFC卡检录信息")
@Parameters({
@Parameter(name = "playerId", description = "飞手ID", required = true),
@Parameter(name = "page", description = "页码", required = true),
@Parameter(name = "pageSize", description = "每页数量", required = true)
})
public Result<Page<PlayersInspectionAdminDto>> getPlayersInspection(Integer page, Integer pageSize, @PathVariable("playerId") String playerId) {
return playersInspectionService.getPlayersInspectionAdminDtoPage(new Page<>(page, pageSize), playerId);
}
@GetMapping("/exportExcel")
@Operation(summary = "导出Excel")
public void exportExcel(@ParameterObject PlayerVo playerVo) {
playersService.exportExcel(playerVo);
}
@GetMapping("/Wg")
@Operation(summary = "Wg")
public void Wg() {
playersService.Wg();
}
}

View File

@ -1,36 +0,0 @@
package cn.workde.module.nfc.controller.admin;
import cn.workde.core.constant.GrapeConst;
import cn.workde.core.data.dto.Result;
import cn.workde.module.nfc.dto.PlayersInspectionAdminDto;
import cn.workde.module.nfc.service.PlayersInspectionService;
import cn.workde.module.nfc.vo.PlayersInspectionParam;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Tag(name = "检录")
@RestController
@RequestMapping(value = GrapeConst.API + "/playersInspection")
public class _PlayersInspectionController {
@Resource
private PlayersInspectionService playersInspectionService;
@GetMapping("/getPlayersInspectionAdminDtoPage")
@Operation(summary = "获取NFC卡检录信息")
@Parameters({
@Parameter(name = "page", description = "页码", required = true),
@Parameter(name = "pageSize", description = "每页数量", required = true)
})
public Result<Page<PlayersInspectionAdminDto>> getPlayersInspectionAdminPage(Integer page, Integer pageSize, @ParameterObject PlayersInspectionParam param) {
return playersInspectionService.getPlayersInspectionAdminPage(new Page<>(page, pageSize), param);
}
}

View File

@ -1,36 +0,0 @@
package cn.workde.module.nfc.controller.admin;
import cn.workde.core.constant.GrapeConst;
import cn.workde.core.data.dto.Result;
import cn.workde.module.nfc.dto.SignAdminDto;
import cn.workde.module.nfc.service.SignService;
import cn.workde.module.nfc.vo.SignAdminParam;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Tag(name = "签到")
@RestController
@RequestMapping(value = GrapeConst.API + "/sign")
public class _SignController {
@Resource
private SignService signService;
@GetMapping("/getSignAdminDtoPage")
@Operation(summary = "获取NFC卡签到信息")
@Parameters({
@Parameter(name = "page", description = "页码", required = true),
@Parameter(name = "pageSize", description = "每页数量", required = true)
})
public Result<Page<SignAdminDto>> getSignAdminDtoPage(Integer page, Integer pageSize, @ParameterObject SignAdminParam param) {
return signService.getSignAdminDtoPage(new Page<>(page, pageSize), param);
}
}

View File

@ -1,84 +0,0 @@
package cn.workde.module.nfc.controller.app;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.workde.core.constant.GrapeConst;
import cn.workde.core.data.dto.Result;
import cn.workde.core.util.RedisUtils;
import cn.workde.module.nfc.service.CmsArchivesService;
import cn.workde.module.nfc.service.MatchRankingService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@Tag(name = "分组")
@RestController
@RequestMapping(value = GrapeConst.APP + "/group")
public class GroupController {
// @Resource
// private CmsArchivesService cmsArchivesService;
@Resource
private MatchRankingService matchRankingService;
// /**
// * 获取赛事
// */
// @GetMapping("/getCmsArchives")
// @Operation(summary = "获取赛事")
// public Result<List<Map<String, Object>>> getCmsArchives() {
// return cmsArchivesService.getCmsArchives();
// }
//
//
// /**
// * 获取赛程
// */
// @GetMapping("/getCourse")
// @Operation(summary = "获取赛程")
// public Result<List<Dict>> getCourse() {
// return Result.data(List.of(
// Dict.create().set("key", "101").set("value", "资格赛"),
// Dict.create().set("key", "102").set("value", "淘汰赛"),
// Dict.create().set("key", "103").set("value", "决赛")
// ));
// }
//
// /**
// * 获取轮次
// */
// @GetMapping("/getOtherRound")
// @Operation(summary = "获取轮次")
// @Parameters({
// @Parameter(name = "matchId", description = "赛事id", required = true),
// @Parameter(name = "course", description = "赛程", required = true)
// })
// public Result<List<String>> getOtherRound(Integer matchId, String course) {
// if(ObjUtil.isNull(matchId)) return Result.fail("请选择赛事");
// if(StrUtil.isBlank(course)) return Result.fail("请选择赛程");
// return matchRankingService.getOtherRound(matchId, course);
// }
/**
* 获取分组
* @return
*/
@GetMapping("/getGrouping")
@Operation(summary = "获取分组")
public Result<Dict> getGrouping() {
return matchRankingService.getGrouping();
}
}

View File

@ -1,63 +0,0 @@
package cn.workde.module.nfc.controller.app;
import cn.workde.core.constant.GrapeConst;
import cn.workde.core.data.dto.Result;
import cn.workde.module.nfc.dto.PlayersInspectionDto;
import cn.workde.module.nfc.service.PlayersInspectionService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
/**
* 选手NFC检录表(PlayersInspection)表控制层
*
* @author makejava
* @since 2024-05-21 14:00:10
*/
@Tag(name = "飞手检录")
@RestController
@RequestMapping(value = GrapeConst.APP + "/playersInspection")
public class PlayersInspectionController {
@Resource
private PlayersInspectionService playersInspectionService;
@GetMapping("/getPlayersInspection")
@Operation(summary = "获取飞手检录信息")
@Parameters({
@Parameter(name = "rfId", description = "NFC卡号", required = true)
})
public Result<PlayersInspectionDto> getPlayersInspection(String rfId) {
return playersInspectionService.getPlayersInspection(rfId);
}
@PutMapping("/playersInspection/{rfId}/{status}")
@Operation(summary = "检录")
@Parameters({
@Parameter(name = "rfId", description = "NFC卡号", required = true),
@Parameter(name = "status", description = "是否通过 true或者false", required = true)
})
public Result<PlayersInspectionDto> playersInspection(@PathVariable("rfId")String rfId, @PathVariable("status") String status) {
return playersInspectionService.playersInspection(rfId, "true".equals(status));
}
@GetMapping("/getCountByThisDay")
@Operation(summary = "获取当天检录人数")
public Result<Integer> getCountByThisDay() {
return playersInspectionService.getCountByThisDay();
}
@GetMapping("/reset")
@Operation(summary = "重置")
@Parameters({
@Parameter(name = "password", description = "密码", required = true)
})
public Result<String> reset(String password) {
return playersInspectionService.reset(password);
}
}

View File

@ -1,51 +0,0 @@
package cn.workde.module.nfc.controller.app;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.json.JSONUtil;
import cn.workde.core.constant.GrapeConst;
import cn.workde.core.util.RedisUtils;
import cn.workde.module.nfc.vo.PushGroupVo;
import cn.workde.module.nfc.webSocket.NoticeWebSocket;
import cn.workde.module.upms.entity.GrapeConfig;
import cn.workde.module.upms.service.GrapeConfigService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Tag(name = "定时器推送")
@RestController
@RequestMapping(value = GrapeConst.APP + "/push")
public class PushController {
@Value("${sa.name}")
private String loginId;
@Resource
private RedisUtils redisUtils;
@Resource
private GrapeConfigService configService;
@PostMapping("/group")
@Operation(summary = "定时器推送分组数据接口")
public void group(@Validated @RequestBody PushGroupVo pushGroupVo) {
GrapeConfig config = configService.getOne(new LambdaQueryWrapper<GrapeConfig>().eq(GrapeConfig::getParamKey, "club:nfc:push:group"));
if (ObjUtil.isNotNull(config)) {
config.setParamValue(JSONUtil.toJsonStr(pushGroupVo));
configService.edit(config);
} else {
config = new GrapeConfig();
config.setParamKey("club:nfc:push:group");
config.setParamValue(JSONUtil.toJsonStr(pushGroupVo));
configService.add(config);
}
NoticeWebSocket.sendAllMessage("定时器推送数据,请前端更行数据");
}
}

View File

@ -1,54 +0,0 @@
package cn.workde.module.nfc.controller.app;
import cn.workde.core.constant.GrapeConst;
import cn.workde.core.data.dto.Result;
import cn.workde.module.nfc.dto.SignDto;
import cn.workde.module.nfc.service.SignService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
@Tag(name = "签到")
@RestController
@RequestMapping(value = GrapeConst.APP + "/sign")
public class SignController {
@Resource
private SignService signService;
@GetMapping("/getSignType")
@Operation(summary = "获取签到类型players:飞手,people:其他人员)")
@Parameters({
@Parameter(name = "rfId", description = "NFC卡号", required = true)
})
public Result<String> getSignType(String rfId) {
return signService.getSignType(rfId);
}
@GetMapping("/getCountByThisDay")
@Operation(summary = "获取当天签到人数")
public Result<Integer> getCountByThisDay() {
return signService.getCountByThisDay();
}
@PutMapping("/peopleSign/{rfId}")
@Operation(summary = "人员签到")
@Parameters({
@Parameter(name = "rfId", description = "NFC卡号", required = true)
})
public Result<SignDto> peopleSign(@PathVariable("rfId") String rfId) {
return signService.peopleSign(rfId);
}
@PutMapping("/playersSign/{rfId}")
@Operation(summary = "飞手签到")
@Parameters({
@Parameter(name = "rfId", description = "NFC卡号", required = true)
})
public Result<SignDto> playersSign(@PathVariable("rfId") String rfId) {
return signService.playersSign(rfId);
}
}

View File

@ -1,41 +0,0 @@
package cn.workde.module.nfc.dto;
import cn.workde.module.nfc.entity.People;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class PeopleDto extends People {
/**
* 是否绑定
*/
@Schema(description = "是否绑定")
private Boolean bind;
/**
* NFC 状态名称
*/
@Schema(description = "NFC 状态名称")
private String rfStatusName;
/**
* 是否显示绑卡按钮
*/
@Schema(description = "是否显示绑卡按钮")
private Boolean showBindCard;
/**
* 是否显示解绑按钮
*/
@Schema(description = "是否显示解绑按钮")
private Boolean showUnBindCard;
/**
* 是否显示启用按钮
*/
@Schema(description = "是否显示启用按钮")
private Boolean showEnable;
/**
* 是否显示停用按钮
*/
@Schema(description = "是否显示停用按钮")
private Boolean showDisable;
}

View File

@ -1,99 +0,0 @@
package cn.workde.module.nfc.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class PlayerDto {
/**
* 飞手ID
*/
@Schema(description = "飞手ID")
private Long playerId;
/**
* 证件照
*/
@Schema(description = "证件照")
private String playerPic;
/**
* 姓名
*/
@Schema(description = "姓名")
private String realName;
/**
* 参赛ID
*/
@Schema(description = "参赛ID")
private String memberNumber;
/**
* 队伍简称
*/
@Schema(description = "队伍简称")
private String nameShort;
/**
* 性别 0男 1女
*/
@Schema(description = "性别 0男 1女")
private String gender;
/**
*
*/
@Schema(description = "")
private String province;
/**
*
*/
@Schema(description = "")
private String city;
/**
*
*/
@Schema(description = "")
private String district;
/**
* 详细地址
*/
@Schema(description = "详细地址")
private String address;
/**
* 国籍
*/
@Schema(description = "国籍")
private String country;
/**
* NFC 卡号
*/
@Schema(description = "NFC 卡号")
private String rfId;
/**
* NFC 状态
*/
@Schema(description = "NFC 状态")
private Integer rfStatus;
/**
* 检录状态 0.未检录 1.通过 2.未通过
*/
@Schema(description = "检录状态 0.未检录 1.通过 2.未通过")
private Integer inspectionStatus;
/**
* 渠道
*/
@Schema(description = "渠道")
private String channel;
/**
* LED颜色
*/
@Schema(description = "LED颜色")
private String ledColor;
/**
* NFC卡编号WG26格式
*/
@Schema(description = "NFC卡编号WG26格式")
private String rfIdWg26;
/**
* NFC卡编号WG34格式
*/
@Schema(description = "NFC卡编号WG34格式")
private String rfIdWg34;
}

View File

@ -1,47 +0,0 @@
package cn.workde.module.nfc.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class PlayersDto extends PlayerDto {
/**
* 证件照完整路径
*/
@Schema(description = "证件照完整路径")
private String playerPicFullPath;
/**
* 是否绑定
*/
@Schema(description = "是否绑定")
private Boolean bind;
/**
* NFC 状态名称
*/
@Schema(description = "NFC 状态名称")
private String rfStatusName;
/**
* 是否显示绑卡按钮
*/
@Schema(description = "是否显示绑卡按钮")
private Boolean showBindCard;
/**
* 是否显示解绑按钮
*/
@Schema(description = "是否显示解绑按钮")
private Boolean showUnBindCard;
/**
* 是否显示启用按钮
*/
@Schema(description = "是否显示启用按钮")
private Boolean showEnable;
/**
* 是否显示停用按钮
*/
@Schema(description = "是否显示停用按钮")
private Boolean showDisable;
}

View File

@ -1,16 +0,0 @@
package cn.workde.module.nfc.dto;
import cn.workde.module.nfc.entity.PlayersInspection;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class PlayersInspectionAdminDto extends PlayersInspection {
/**
* 证件照完整路径
*/
@Schema(description = "证件照完整路径")
private String playerPicFullPath;
}

View File

@ -1,34 +0,0 @@
package cn.workde.module.nfc.dto;
import cn.workde.module.nfc.entity.PlayersInspection;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.joda.time.DateTime;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
public class PlayersInspectionDto extends PlayersDto {
/**
* 是否通过
*/
@Schema(description = "是否通过")
private Boolean status;
/**
* 检录时间
*/
@Schema(description = "检录时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date inspectionDatetime;
/**
* 检录日志
*/
@Schema(description = "检录日志")
private List<PlayersInspection> playersInspectionList;
}

View File

@ -1,16 +0,0 @@
package cn.workde.module.nfc.dto;
import cn.workde.module.nfc.entity.Sign;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class SignAdminDto extends Sign {
/**
* 证件照完整路径
*/
@Schema(description = "证件照完整路径")
private String playerPicFullPath;
}

View File

@ -1,88 +0,0 @@
package cn.workde.module.nfc.dto;
import cn.workde.module.nfc.entity.Sign;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
@Data
public class SignDto {
/**
* 证件照
*/
@Schema(description = "证件照")
private String playerPic;
/**
* 姓名
*/
@Schema(description = "姓名")
private String realName;
/**
* 参赛ID
*/
@Schema(description = "参赛ID")
private String memberNumber;
/**
* 队伍简称
*/
@Schema(description = "队伍简称")
private String nameShort;
/**
* 性别 0男 1女
*/
@Schema(description = "性别 0男 1女")
private String gender;
/**
*
*/
@Schema(description = "")
private String province;
/**
*
*/
@Schema(description = "")
private String city;
/**
*
*/
@Schema(description = "")
private String district;
/**
* 详细地址
*/
@Schema(description = "详细地址")
private String address;
/**
* 国籍
*/
@Schema(description = "国籍")
private String country;
/**
* 证件照完整路径
*/
@Schema(description = "证件照完整路径")
private String playerPicFullPath;
/**
* 类型
*/
@Schema(description = "人员类型")
private String peopleType;
/**
* 签到日志
*/
@Schema(description = "签到日志")
private List<Sign> signList;
@Schema(description = "签到时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date signDatetime;
}

View File

@ -1,233 +0,0 @@
package cn.workde.module.nfc.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* (Club)表实体类
*
* @author makejava
* @since 2024-05-20 15:41:24
*/
@Data
@TableName(value = "peewee_club")
public class Club {
/**
* 主键ID
*/
private Long id;
/**
* 用户ID
*/
private Integer userId;
/**
* 俱乐部名称
*/
private String name;
/**
* 1申请中 2退回修改 3拒绝申请 4重新申请 9通过申请
*/
private Integer status;
/**
* 俱乐部名称
*/
private String rejectReason;
/**
* 主体类型
*/
private String competitorsType;
/**
* 参赛主体
*/
private String competitors;
/**
*
*/
private String province;
/**
*
*/
private String city;
/**
*
*/
private String district;
/**
* 详细地址
*/
private String address;
/**
* 是否中国航空团体会员 0否 1是
*/
private Integer isAsfc;
/**
* asfc证书编号
*/
private String asfcNum;
/**
* 证书地址
*/
private String asfcCert;
/**
* 俱乐部logo
*/
private String logo;
/**
* 旗帜
*/
private String flag;
/**
* 口号
*/
private String competitionSlogan;
/**
* 营业执照编号
*/
private String businessNum;
/**
* 商业执照
*/
private String businessLicense;
/**
* 卡正面视图
*/
private String cardFrontView;
/**
* 卡背面视图
*/
private String cardBackView;
/**
* 合法名称
*/
private String legalName;
/**
* 法律电话
*/
private String legalTel;
/**
* 合法卡
*/
private String legalCard;
/**
* 领导
*/
private String leader;
/**
* 领导电话
*/
private String leaderTel;
/**
* 副组长1
*/
private String deputyLeader1;
/**
* 副组长1 电话
*/
private String deputyLeader1Tel;
/**
* 副组长2
*/
private String deputyLeader2;
/**
* 副组长2 电话
*/
private String deputyLeader2Tel;
/**
* 总教练
*/
private String headCoach;
/**
* 总教练电话
*/
private String headCoachTel;
/**
* 教练1
*/
private String coach1;
/**
* 教练 1 电话
*/
private String coach1Tel;
/**
* 教练2
*/
private String coach2;
/**
* 教练2电话
*/
private String coach2Tel;
/**
* 教练3
*/
private String coach3;
/**
* 教练3电话
*/
private String coach3Tel;
/**
* 教练 4
*/
private String coach4;
/**
* 教练 4 电话
*/
private String coach4Tel;
/**
* 俱乐部名单
*/
private String playerCoachStuff;
/**
* 参赛承诺
*/
private String jobSitu;
/**
* 参赛承诺
*/
private String promiseStuff;
/**
* 创建时间
*/
private Integer createtime;
/**
* 更新时间
*/
private Integer updatetime;
/**
* 队名简称
*/
private String nameShort;
/**
* 媒体平台
*/
private Integer isMedia;
/**
* 媒体平台
*/
private String mediaPlatform;
/**
* 媒体账号名称
*/
private String mediaName;
/**
* 队服1
*/
private String clubClothes1;
/**
* 队服2
*/
private String clubClothes2;
/**
* 队服3
*/
private String clubClothes3;
/**
* 队服4
*/
private String clubClothes4;
/**
* 1身份证 2港澳身份证
*/
private String clubCardType;
}

View File

@ -1,63 +0,0 @@
package cn.workde.module.nfc.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
/**
* (ClubInvate)表实体类
*
* @author makejava
* @since 2024-05-20 15:42:04
*/
@Data
@TableName(value = "peewee_club_invate")
public class ClubInvate {
/**
* 主键ID
*/
private Integer id;
/**
* 俱乐部ID
*/
private Integer clubId;
/**
* 飞手ID
*/
private Integer playerId;
/**
* 状态 1发出邀请 2同意邀请 3拒绝邀请 4撤销邀请 5待系统审核 6审核通过 7拒绝 8重新上传协议 9等待队伍上传
*/
private Integer status;
/**
* 创建时间
*/
private Long createtime;
/**
* 更新时间
*/
private Long updatetime;
/**
* 删除时间
*/
private Long deletetime;
/**
* 俱乐部名称
*/
private String clubName;
/**
* 飞手名称
*/
private String playerName;
/**
* grass
*/
private String grass;
/**
* 协议
*/
private String protocol;
}

View File

@ -1,147 +0,0 @@
package cn.workde.module.nfc.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import java.io.Serializable;
/**
* 内容表(CmsArchives)表实体类
*
* @author makejava
* @since 2024-05-27 11:45:02
*/
@Data
@TableName(value = "peewee_cms_archives")
public class CmsArchives {
/**
* ID
*/
private Long id;
/**
* 会员ID
*/
private Long userId;
/**
* 栏目ID
*/
private Long channelId;
/**
* 副栏目ID集合
*/
private String channelIds;
/**
* 模型ID
*/
private Integer modelId;
/**
* 专题ID集合
*/
private String specialIds;
/**
* 管理员ID
*/
private Long adminId;
/**
* 文章标题
*/
private String title;
/**
* 标志
*/
private String flag;
/**
* 样式
*/
private String style;
/**
* 缩略图
*/
private String image;
/**
* 组图
*/
private String images;
/**
* SEO标题
*/
private String seotitle;
/**
* 关键字
*/
private String keywords;
/**
* 描述
*/
private String description;
/**
* TAG
*/
private String tags;
/**
* 价格
*/
private String price;
/**
* 外部链接
*/
private String outlink;
/**
* 权重
*/
private Integer weigh;
/**
* 浏览次数
*/
private Long views;
/**
* 评论次数
*/
private Long comments;
/**
* 点赞数
*/
private Long likes;
/**
* 点踩数
*/
private Long dislikes;
/**
* 自定义URL
*/
private String diyname;
/**
* 是否访客访问
*/
private String isguest;
/**
* 是否允许评论
*/
private String iscomment;
/**
* 创建时间
*/
private Long createtime;
/**
* 更新时间
*/
private Long updatetime;
/**
* 发布时间
*/
private Long publishtime;
/**
* 删除时间
*/
private Long deletetime;
/**
* 备注
*/
private String memo;
/**
* 状态
*/
private String status;
}

View File

@ -1,131 +0,0 @@
package cn.workde.module.nfc.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 赛事成绩表(MatchRanking)表实体类
*
* @author makejava
* @since 2024-03-22 10:51:53
*/
@Data
@TableName("peewee_match_ranking")
public class MatchRanking {
/**
* ID
*/
private Integer id;
/**
* 赛事id
*/
private Integer matchId;
/**
* 飞手id不是飞手表的id是飞手在用户表里面的参赛ID
*/
private Integer playerId;
/**
* 飞手姓名
*/
private String playerName;
/**
* 飞行圈数
*/
private String flyNum;
/**
* 耗时时间
*/
private String times;
/**
* 分组
*/
@TableField("`grouping`")
private String grouping;
/**
* 耗时毫秒数
*/
private Integer achievement;
/**
* 上传时间
*/
private Date createtime;
/**
* 更新时间
*/
private Date updatetime;
/**
* 赛程 62进3232进16 16进8 8进4 决赛
*/
private String course;
/**
* 是否参与排名 Y代表参与N代表不参与
*/
private String ranking;
/**
* 排名
*/
private Integer groupScore;
/**
* 是否晋级 1 代表晋级 0 代表没晋级
*/
private Integer promoted;
/**
* 积分
*/
private Integer integral;
/**
* 是否是决赛
*/
private String isFinals;
/**
* 决赛轮次
*/
private String finalsRound;
/**
* LED颜色
*/
private String ledColor;
/**
* 渠道
*/
private String channel;
/**
* 赛程轮次
*/
private String otherRound;
/**
* 每个赛程的所有轮次的最优成绩
*/
private Integer bastPerformance;
/**
* 每个赛程的自己轮次的排名
*/
private Integer roundScore;
/**
* 成绩
*/
private Date datetimeValue;
/**
* 自定义排名
*/
private Integer customSorting;
/**
* 单轮第一圈
*/
private String firstFlyTime;
/**
* 单轮第二圈
*/
private String secondFlyTime;
/**
* 单轮第三圈
*/
private String thirdFlyTime;
}

View File

@ -1,101 +0,0 @@
package cn.workde.module.nfc.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* NFC人员信息表(飞手信息不在这里)(People)表实体类
*
* @author makejava
* @since 2024-05-22 09:36:46
*/
@Data
@TableName(value = "dss_club_nfc_people")
public class People {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private String id;
/**
* NFC卡编号
*/
@Schema(description = "NFC卡编号")
private String rfId;
/**
* NFC 状态
*/
@Schema(description = "NFC 状态")
private Integer rfStatus;
/**
* 人员类型
*/
@Schema(description = "人员类型")
private String peopleType;
/**
* 姓名
*/
@Schema(description = "姓名")
private String realName;
/**
* 参赛ID
*/
@Schema(description = "参赛ID")
private String memberNumber;
/**
* 队伍简称
*/
@Schema(description = "队伍简称")
private String nameShort;
/**
* 性别
*/
@Schema(description = "性别")
private String gender;
/**
*
*/
@Schema(description = "")
private String province;
/**
*
*/
@Schema(description = "")
private String city;
/**
*
*/
@Schema(description = "")
private String district;
/**
* 详细地址
*/
@Schema(description = "详细地址")
private String address;
/**
* 国籍
*/
@Schema(description = "国籍")
private String country;
/**
* 飞手照片
*/
@Schema(description = "飞手照片")
private String playerPic;
/**
* NFC卡编号WG26格式
*/
@Schema(description = "NFC卡编号WG26格式")
private String rfIdWg26;
/**
* NFC卡编号WG34格式
*/
@Schema(description = "NFC卡编号WG34格式")
private String rfIdWg34;
}

View File

@ -1,188 +0,0 @@
package cn.workde.module.nfc.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 飞手表(Players)表实体类
*
* @author makejava
* @since 2024-05-20 15:40:15
*/
@Data
@TableName(value = "peewee_players")
public class Players {
/**
* 主键ID
*/
private Long id;
/**
* 用户ID
*/
private Integer memberId;
/**
* 俱乐部ID
*/
private Integer clubId;
/**
* 真实姓名
*/
private String realName;
/**
* 真实手机号
*/
private String phone;
/**
* 年龄
*/
private Integer age;
/**
* 性别 0男 1女
*/
private String gender;
/**
* 生日
*/
private Date birthday;
/**
*
*/
private String province;
/**
*
*/
private String city;
/**
*
*/
private String district;
/**
* 详细地址
*/
private String address;
/**
* 国籍
*/
private String country;
/**
* 飞手照片
*/
private String playerPic;
/**
* 参赛获奖经历
*/
private String experience;
/**
* 0身份证 1护照 2台胞证 3港澳通行证
*/
private String cardType;
/**
* 证件号码
*/
private String cardNumber;
/**
* 1.不同 2.相同
*/
private Integer cardViewSame;
/**
* 监护人证件正面照
*/
private String guarderCardFrontView;
/**
* 监护人证件反面照
*/
private String guarderCardBackView;
/**
* 飞手状态 0普通用户 1申请中 2退回修改 3重新申请 9正式飞手 -1申请不通过 -2被取消身份
*/
private Integer playerStatus;
/**
* 添加时间
*/
private Date createdAt;
/**
* 更新时间
*/
private Date updatedAt;
/**
* 删除时间
*/
private Date deletedAt;
/**
* 飞手证件照正面
*/
private String cardFrontView;
/**
* 飞手证件照反面
*/
private String cardBackView;
/**
* 监护人姓名
*/
private String guarderName;
/**
* 监护人手机号
*/
private String guarderPhone;
/**
* 0身份证 1护照 2台胞证 3港澳通行证
*/
private String guarderCardType;
/**
* 监护人证件号码
*/
private String guarderCardNumber;
/**
* 1.不同 2.相同
*/
private Integer guarderCardViewSame;
/**
* 1.asfc会员 0.非asfc会员
*/
private Integer asfcUser;
/**
* asfc会员编号
*/
private String membershipId;
/**
* 飞行证号
*/
private String flightNumber;
/**
* 0.非俱乐部会员 1.俱乐部会员
*/
private Integer clubMembers;
/**
* 俱乐部名称
*/
private String clubName;
/**
* 俱乐部职位
*/
private String duties;
/**
* 风采照片
*/
private String stylePhoto;
/**
* 辅导员姓名
*/
private String counselorName;
/**
* 是否加入公会
*/
private String isSociaty;
/**
* 第一次登录没加入飞手公会
*/
private Integer firstShow;
/**
* 检录状态 0.未检录 1.通过 2.未通过
*/
private Integer inspectionStatus;
}

View File

@ -1,124 +0,0 @@
package cn.workde.module.nfc.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 选手NFC检录表(PlayersInspection)表实体类
*
* @author makejava
* @since 2024-05-21 14:00:11
*/
@Data
@TableName(value = "dss_club_nfc_players_inspection")
public class PlayersInspection {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private String id;
/**
* NFC卡号
*/
@Schema(description = "NFC卡号")
private String rfId;
/**
* 飞手id
*/
@Schema(description = "飞手id")
private Long playersId;
/**
* 用户id
*/
@Schema(description = "用户id")
private Long userId;
/**
* 俱乐部id
*/
@Schema(description = "俱乐部id")
private Integer clubId;
/**
* 姓名
*/
@Schema(description = "姓名")
private String realName;
/**
* 参赛ID
*/
@Schema(description = "参赛ID")
private String memberNumber;
/**
* 队伍简称
*/
@Schema(description = "队伍简称")
private String nameShort;
/**
* 性别
*/
@Schema(description = "性别")
private String gender;
/**
*
*/
@Schema(description = "")
private String province;
/**
*
*/
@Schema(description = "")
private String city;
/**
*
*/
@Schema(description = "")
private String district;
/**
* 详细地址
*/
@Schema(description = "详细地址")
private String address;
/**
* 国籍
*/
@Schema(description = "国籍")
private String country;
/**
* 飞手照片
*/
@Schema(description = "飞手照片")
private String playerPic;
/**
* 是否通过
*/
@Schema(description = "是否通过")
private Boolean status;
/**
* 检录时间
*/
@Schema(description = "检录时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date inspectionDatetime;
/**
* NFC卡编号WG26格式
*/
@Schema(description = "NFC卡编号WG26格式")
private String rfIdWg26;
/**
* NFC卡编号WG34格式
*/
@Schema(description = "NFC卡编号WG34格式")
private String rfIdWg34;
}

View File

@ -1,123 +0,0 @@
package cn.workde.module.nfc.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* NFC签到表(Sign)表实体类
*
* @author makejava
* @since 2024-05-22 13:07:00
*/
@Data
@TableName(value = "dss_club_nfc_sign")
public class Sign {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private String id;
/**
* NFC卡编号
*/
@Schema(description = "NFC卡编号")
private String rfId;
/**
* 飞手id或非飞手id
*/
@Schema(description = "飞手id或非飞手id")
private String targetId;
/**
* 用户id
*/
@Schema(description = "用户id")
private Long userId;
/**
* 俱乐部id
*/
@Schema(description = "俱乐部id")
private Integer clubId;
/**
* 人员类型
*/
@Schema(description = "人员类型")
private String peopleType;
/**
* 姓名
*/
@Schema(description = "姓名")
private String realName;
/**
* 参赛ID
*/
@Schema(description = "参赛ID")
private String memberNumber;
/**
* 队伍简称
*/
@Schema(description = "队伍简称")
private String nameShort;
/**
* 性别
*/
@Schema(description = "性别")
private String gender;
/**
*
*/
@Schema(description = "")
private String province;
/**
*
*/
@Schema(description = "")
private String city;
/**
*
*/
@Schema(description = "")
private String district;
/**
* 详细地址
*/
@Schema(description = "详细地址")
private String address;
/**
* 国籍
*/
@Schema(description = "国籍")
private String country;
/**
* 飞手照片
*/
@Schema(description = "飞手照片")
private String playerPic;
/**
* 签到时间
*/
@Schema(description = "签到时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date signDatetime;
/**
* NFC卡编号WG26格式
*/
@Schema(description = "NFC卡编号WG26格式")
private String rfIdWg26;
/**
* NFC卡编号WG34格式
*/
@Schema(description = "NFC卡编号WG34格式")
private String rfIdWg34;
}

View File

@ -1,198 +0,0 @@
package cn.workde.module.nfc.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.Date;
/**
* 会员表(User)表实体类
*
* @author makejava
* @since 2024-05-20 14:50:11
*/
@Data
@TableName(value = "peewee_user")
public class User {
/**
* 主键ID
*/
private Long id;
/**
* 组别ID
*/
private Long groupId;
/**
* 用户名
*/
private String username;
/**
* 昵称
*/
private String nickname;
/**
* 密码
*/
private String password;
/**
* 密码盐
*/
private String salt;
/**
* 电子邮箱
*/
private String email;
/**
* 手机号
*/
private String mobile;
/**
* 头像
*/
private String avatar;
/**
* 等级
*/
private String level;
/**
* 性别
*/
private String gender;
/**
* 生日
*/
private Date birthday;
/**
* 格言
*/
private String bio;
/**
* 余额
*/
private Double money;
/**
* 佣金
*/
private Double commission;
/**
* 积分
*/
private Integer score;
/**
* 连续登录天数
*/
private Long successions;
/**
* 最大连续登录天数
*/
private Long maxsuccessions;
/**
* 上次登录时间
*/
private Long prevtime;
/**
* 登录时间
*/
private Long logintime;
/**
* 登录IP
*/
private String loginip;
/**
* 失败次数
*/
private String loginfailure;
/**
* 加入IP
*/
private String joinip;
/**
* 加入时间
*/
private Long jointime;
/**
* 创建时间
*/
private Long createtime;
/**
* 更新时间
*/
private Long updatetime;
/**
* Token
*/
private String token;
/**
* 状态
*/
private String status;
/**
* 验证
*/
private String verification;
/**
* 称号
*/
private String title;
/**
* 邀请人:NULL=暂无,0=
*/
private Integer parentUserId;
/**
* 团队用户人数
*/
private Integer childUserCount;
/**
* 一级用户人数
*/
@TableField("child_user_count_1")
private Integer childUserCount1;
/**
* 二级用户人数
*/
@TableField("child_user_count_2")
private Integer childUserCount2;
/**
* 消费累计
*/
private Double totalConsume;
/**
* 飞手编号
*/
private String memberNumber;
/**
* 用户状态1正常 -1禁止登陆
*/
private Integer memberStatus;
/**
* 用户身份0普通用户 1飞手用户 2俱乐部
*/
private Integer memberType;
/**
* wechat
*/
private String wechat;
/**
* qq
*/
private Integer qq;
/**
* NFC编号
*/
private String rfId;
/**
* NFC 状态
*/
private Integer rfStatus;
/**
* NFC卡编号WG26格式
*/
private String rfIdWg26;
/**
* NFC卡编号WG34格式
*/
private String rfIdWg34;
}

View File

@ -1,108 +0,0 @@
package cn.workde.module.nfc.excel.writeExcel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.alibaba.excel.enums.BooleanEnum;
import com.alibaba.excel.enums.poi.BorderStyleEnum;
import com.alibaba.excel.enums.poi.FillPatternTypeEnum;
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
import com.alibaba.excel.enums.poi.VerticalAlignmentEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@HeadRowHeight(20)
@ColumnWidth(20)
@HeadStyle(
fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND,
fillForegroundColor = 9,
horizontalAlignment = HorizontalAlignmentEnum.CENTER,
verticalAlignment = VerticalAlignmentEnum.CENTER,
wrapped = BooleanEnum.TRUE,
borderBottom = BorderStyleEnum.THIN,
borderRight = BorderStyleEnum.THIN
)
@ContentStyle(
fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND,
fillForegroundColor = 9,
horizontalAlignment = HorizontalAlignmentEnum.CENTER,
verticalAlignment = VerticalAlignmentEnum.CENTER,
wrapped = BooleanEnum.TRUE,
borderBottom = BorderStyleEnum.THIN,
borderRight = BorderStyleEnum.THIN
)
public class PeopleWriteExcel {
/**
* 姓名
*/
@ExcelProperty(value = "姓名")
private String realName;
/**
* 人员类型
*/
@ExcelProperty(value = "人员类型")
private String peopleType;
/**
* 参赛ID
*/
@ExcelProperty(value = "参赛ID")
private String memberNumber;
/**
* 队伍简称
*/
@ExcelProperty(value = "队伍简称")
private String nameShort;
/**
* 性别 0男 1女
*/
@ExcelProperty(value = "性别")
private String gender;
/**
* 国籍
*/
@ExcelProperty(value = "国籍")
private String country;
/**
*
*/
@ExcelProperty(value = "")
private String province;
/**
*
*/
@ExcelProperty(value = "")
private String city;
/**
*
*/
@ExcelProperty(value = "")
private String district;
/**
* 详细地址
*/
@ExcelProperty(value = "详细地址")
private String address;
/**
* NFC 卡号
*/
@ExcelProperty(value = "NFC 卡号")
private String rfId;
/**
* NFC 状态
*/
@ExcelProperty(value = "NFC 状态")
private String rfStatusName;
/**
* NFC卡编号WG26格式
*/
@ExcelProperty(value = "NFC卡编号WG26格式")
private String rfIdWg26;
/**
* NFC卡编号WG34格式
*/
@ExcelProperty(value = "NFC卡编号WG34格式")
private String rfIdWg34;
}

View File

@ -1,102 +0,0 @@
package cn.workde.module.nfc.excel.writeExcel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.alibaba.excel.enums.BooleanEnum;
import com.alibaba.excel.enums.poi.BorderStyleEnum;
import com.alibaba.excel.enums.poi.FillPatternTypeEnum;
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
import com.alibaba.excel.enums.poi.VerticalAlignmentEnum;
import lombok.Data;
@Data
@HeadRowHeight(20)
@ColumnWidth(20)
@HeadStyle(
fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND,
fillForegroundColor = 9,
horizontalAlignment = HorizontalAlignmentEnum.CENTER,
verticalAlignment = VerticalAlignmentEnum.CENTER,
wrapped = BooleanEnum.TRUE,
borderBottom = BorderStyleEnum.THIN,
borderRight = BorderStyleEnum.THIN
)
@ContentStyle(
fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND,
fillForegroundColor = 9,
horizontalAlignment = HorizontalAlignmentEnum.CENTER,
verticalAlignment = VerticalAlignmentEnum.CENTER,
wrapped = BooleanEnum.TRUE,
borderBottom = BorderStyleEnum.THIN,
borderRight = BorderStyleEnum.THIN
)
public class PlayersWriteExcel {
/**
* 姓名
*/
@ExcelProperty(value = "姓名")
private String realName;
/**
* 参赛ID
*/
@ExcelProperty(value = "参赛ID")
private String memberNumber;
/**
* 队伍简称
*/
@ExcelProperty(value = "队伍简称")
private String nameShort;
/**
* 性别 0男 1女
*/
@ExcelProperty(value = "性别")
private String gender;
/**
* 国籍
*/
@ExcelProperty(value = "国籍")
private String country;
/**
*
*/
@ExcelProperty(value = "")
private String province;
/**
*
*/
@ExcelProperty(value = "")
private String city;
/**
*
*/
@ExcelProperty(value = "")
private String district;
/**
* 详细地址
*/
@ExcelProperty(value = "详细地址")
private String address;
/**
* NFC 卡号
*/
@ExcelProperty(value = "NFC 卡号")
private String rfId;
/**
* NFC 状态
*/
@ExcelProperty(value = "NFC 状态")
private String rfStatusName;
/**
* NFC卡编号WG26格式
*/
@ExcelProperty(value = "NFC卡编号WG26格式")
private String rfIdWg26;
/**
* NFC卡编号WG34格式
*/
@ExcelProperty(value = "NFC卡编号WG34格式")
private String rfIdWg34;
}

View File

@ -1,18 +0,0 @@
package cn.workde.module.nfc.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.workde.module.nfc.entity.ClubInvate;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* (ClubInvate)表数据库访问层
*
* @author makejava
* @since 2024-05-20 15:42:04
*/
@Mapper
public interface ClubInvateMapper extends MPJBaseMapper<ClubInvate> {
}

View File

@ -1,18 +0,0 @@
package cn.workde.module.nfc.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.workde.module.nfc.entity.Club;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* (Club)表数据库访问层
*
* @author makejava
* @since 2024-05-20 15:41:24
*/
@Mapper
public interface ClubMapper extends MPJBaseMapper<Club> {
}

View File

@ -1,18 +0,0 @@
package cn.workde.module.nfc.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.workde.module.nfc.entity.CmsArchives;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* 内容表(CmsArchives)表数据库访问层
*
* @author makejava
* @since 2024-05-27 11:45:00
*/
@Mapper
public interface CmsArchivesMapper extends MPJBaseMapper<CmsArchives> {
}

View File

@ -1,38 +0,0 @@
package cn.workde.module.nfc.mapper;
import cn.workde.module.nfc.entity.MatchRanking;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* 赛事成绩表(MatchRanking)表数据库访问层
*
* @author makejava
* @since 2024-03-22 10:51:51
*/
@Mapper
public interface MatchRankingMapper extends MPJBaseMapper<MatchRanking> {
@Select("""
select distinct other_round from peewee_match_ranking where match_id = #{matchId} and course = #{course}
order by CAST(other_round AS UNSIGNED)
""")
List<String> getOtherRound(@Param("matchId") Integer matchId, @Param("course") String course);
@Select("""
select distinct `grouping` from peewee_match_ranking where match_id = #{matchId} and course = #{course} and other_round = #{otherRound}
order by CAST(`grouping` AS UNSIGNED)
""")
List<String> getGrouping(@Param("matchId") Integer matchId, @Param("course") String course, @Param("otherRound") String otherRound);
@Select("""
select player_id from peewee_match_ranking where match_id = #{matchId} and course = #{course} and other_round = #{otherRound}
and `grouping` = #{grouping}
""")
List<String> getPlayersList(@Param("matchId") Integer matchId, @Param("course") String course, @Param("otherRound") String otherRound, @Param("grouping") String grouping);
}

View File

@ -1,18 +0,0 @@
package cn.workde.module.nfc.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.workde.module.nfc.entity.People;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* NFC人员信息表(飞手信息不在这里)(People)表数据库访问层
*
* @author makejava
* @since 2024-05-22 09:36:45
*/
@Mapper
public interface PeopleMapper extends MPJBaseMapper<People> {
}

View File

@ -1,25 +0,0 @@
package cn.workde.module.nfc.mapper;
import cn.workde.module.nfc.entity.PlayersInspection;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.time.LocalDateTime;
/**
* 选手NFC检录表(PlayersInspection)表数据库访问层
*
* @author makejava
* @since 2024-05-21 14:00:10
*/
@Mapper
public interface PlayersInspectionMapper extends MPJBaseMapper<PlayersInspection> {
@Select("""
select count(1) from (select rf_id from dss_club_nfc_players_inspection where inspection_datetime between #{statTime} and #{endTime} group by rf_id) t
""")
Integer getCountByThisDay(@Param("statTime") LocalDateTime statTime, @Param("endTime") LocalDateTime endTime);
}

View File

@ -1,18 +0,0 @@
package cn.workde.module.nfc.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.workde.module.nfc.entity.Players;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* 飞手表(Players)表数据库访问层
*
* @author makejava
* @since 2024-05-20 15:40:15
*/
@Mapper
public interface PlayersMapper extends MPJBaseMapper<Players> {
}

View File

@ -1,25 +0,0 @@
package cn.workde.module.nfc.mapper;
import cn.workde.module.nfc.entity.Sign;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.time.LocalDateTime;
/**
* NFC签到表(Sign)表数据库访问层
*
* @author makejava
* @since 2024-05-22 13:06:59
*/
@Mapper
public interface SignMapper extends MPJBaseMapper<Sign> {
@Select("""
select count(1) from (select rf_id from dss_club_nfc_sign where sign_datetime between #{statTime} and #{endTime} group by rf_id) t
""")
Integer getCountByThisDay(@Param("statTime") LocalDateTime statTime, @Param("endTime") LocalDateTime endTime);
}

View File

@ -1,17 +0,0 @@
package cn.workde.module.nfc.mapper;
import cn.workde.module.nfc.entity.User;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* 会员表(User)表数据库访问层
*
* @author makejava
* @since 2024-05-20 14:50:10
*/
@Mapper
public interface UserMapper extends MPJBaseMapper<User> {
}

View File

@ -1,31 +0,0 @@
package cn.workde.module.nfc.quicklogin;
import cn.dev33.satoken.jwt.StpLogicJwtForSimple;
import cn.dev33.satoken.jwt.StpLogicJwtForStateless;
import cn.dev33.satoken.stp.StpLogic;
import cn.workde.module.nfc.quicklogin.config.SaQuickConfig;
import cn.workde.module.nfc.quicklogin.web.SaQuickController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@Import({SaQuickController.class, SaQuickRegister.class})
public class SaQuickInject {
@Autowired(
required = false
)
public void setSaQuickConfig(SaQuickConfig saQuickConfig) {
SaQuickManager.setConfig(saQuickConfig);
}
// Sa-Token 整合 jwt (Stateless 无状态模式)
@Bean
public StpLogic getStpLogicJwt() {
return new StpLogicJwtForStateless();
}
}

View File

@ -1,32 +0,0 @@
package cn.workde.module.nfc.quicklogin;
import cn.dev33.satoken.util.SaFoxUtil;
import cn.workde.module.nfc.quicklogin.config.SaQuickConfig;
public class SaQuickManager {
private static volatile SaQuickConfig config;
public SaQuickManager() {
}
public static void setConfig(SaQuickConfig config) {
SaQuickManager.config = config;
if (config.getAuto()) {
config.setName(SaFoxUtil.getRandomString(8));
config.setPwd(SaFoxUtil.getRandomString(8));
}
}
public static SaQuickConfig getConfig() {
if (config == null) {
synchronized (SaQuickManager.class) {
if (config == null) {
setConfig(new SaQuickConfig());
}
}
}
return config;
}
}

View File

@ -1,44 +0,0 @@
package cn.workde.module.nfc.quicklogin;
import cn.dev33.satoken.context.SaHolder;
import cn.dev33.satoken.filter.SaServletFilter;
import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.stp.StpUtil;
import cn.workde.module.nfc.quicklogin.config.SaQuickConfig;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
@Configuration
public class SaQuickRegister {
public static final String CONFIG_VERSION = "sa";
public SaQuickRegister() {
}
@Bean
@ConfigurationProperties(
prefix = "sa"
)
SaQuickConfig getSaQuickConfig() {
return new SaQuickConfig();
}
@Bean
@Order(-101)
SaServletFilter getSaServletFilterForQuickLogin() {
return (new SaServletFilter()).addInclude(new String[]{"/**"}).addExclude(new String[]{"/favicon.ico", "/deploy/login", "/deploy/login", "/deploy/sa-res/**"}).setAuth((obj) -> {
SaRouter.match(SaQuickManager.getConfig().getInclude().split(",")).notMatch(SaQuickManager.getConfig().getExclude().split(",")).check((r) -> {
if (SaQuickManager.getConfig().getAuth() && !StpUtil.isLogin()) {
SaHolder.getRequest().forward("/deploy/login");
SaRouter.back();
}
});
}).setError((e) -> {
return e.getMessage();
});
}
}

View File

@ -1,83 +0,0 @@
package cn.workde.module.nfc.quicklogin.config;
public class SaQuickConfig {
private Boolean auth = true;
private String name = "sa";
private String pwd = "123456";
private Boolean auto = false;
private String title = "Sa-Token 登录";
private Boolean copr = true;
private String include = "/**";
private String exclude = "";
public SaQuickConfig() {
}
public Boolean getAuth() {
return this.auth;
}
public void setAuth(Boolean auth) {
this.auth = auth;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return this.pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public Boolean getAuto() {
return this.auto;
}
public void setAuto(Boolean auto) {
this.auto = auto;
}
public String getTitle() {
return this.title;
}
public void setTitle(String title) {
this.title = title;
}
public Boolean getCopr() {
return this.copr;
}
public void setCopr(Boolean copr) {
this.copr = copr;
}
public String getInclude() {
return this.include;
}
public void setInclude(String include) {
this.include = include;
}
public String getExclude() {
return this.exclude;
}
public void setExclude(String exclude) {
this.exclude = exclude;
}
public String toString() {
return "SaQuickConfig{auth=" + this.auth + ", name='" + this.name + '\'' + ", pwd='" + this.pwd + '\'' + ", auto=" + this.auto + ", title='" + this.title + '\'' + ", copr=" + this.copr + ", include='" + this.include + '\'' + ", exclude='" + this.exclude + '\'' + '}';
}
}

View File

@ -1,57 +0,0 @@
package cn.workde.module.nfc.quicklogin.web;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaFoxUtil;
import cn.dev33.satoken.util.SaResult;
import cn.workde.core.util.RedisUtils;
import cn.workde.module.nfc.quicklogin.SaQuickManager;
import cn.workde.module.nfc.quicklogin.config.SaQuickConfig;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.view.RedirectView;
import java.util.concurrent.TimeUnit;
@Controller
public class SaQuickController {
@Resource
private RedisUtils redisUtils;
public SaQuickController() {
}
@GetMapping({"/deploy/login"})
public String login(Model model) {
model.addAttribute("cfg", SaQuickManager.getConfig());
return "sa-login.html";
}
@PostMapping({"/deploy/login"})
@ResponseBody
public SaResult doLogin(String name, String pwd) {
if (!SaFoxUtil.isEmpty(name) && !SaFoxUtil.isEmpty(pwd)) {
SaQuickConfig config = SaQuickManager.getConfig();
if (name.equals(config.getName()) && pwd.equals(config.getPwd())) {
StpUtil.login(config.getName());
String tokenValue = StpUtil.getTokenValue();
// redisUtils.addSetCache("club:nfc:token:" + config.getName(), tokenValue, 2592000, TimeUnit.SECONDS);
return SaResult.get(200, "ok", StpUtil.getTokenInfo());
} else {
return SaResult.get(500, "账号或密码输入错误", (Object) null);
}
} else {
return SaResult.get(500, "请输入账号和密码", (Object) null);
}
}
@GetMapping("/deploy/logout")
public RedirectView logout() {
StpUtil.logout();
return new RedirectView("/deploy/");
}
}

View File

@ -1,19 +0,0 @@
package cn.workde.module.nfc.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.workde.module.nfc.mapper.ClubInvateMapper;
import cn.workde.module.nfc.entity.ClubInvate;
import org.springframework.stereotype.Service;
/**
* (ClubInvate)表服务实现类
*
* @author makejava
* @since 2024-05-20 15:42:04
*/
@Service("clubInvateService")
public class ClubInvateService extends ServiceImpl<ClubInvateMapper, ClubInvate> implements IService<ClubInvate> {
}

View File

@ -1,19 +0,0 @@
package cn.workde.module.nfc.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.workde.module.nfc.mapper.ClubMapper;
import cn.workde.module.nfc.entity.Club;
import org.springframework.stereotype.Service;
/**
* (Club)表服务实现类
*
* @author makejava
* @since 2024-05-20 15:41:24
*/
@Service("clubService")
public class ClubService extends ServiceImpl<ClubMapper, Club> implements IService<Club> {
}

View File

@ -1,35 +0,0 @@
package cn.workde.module.nfc.service;
import cn.workde.core.data.dto.Result;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.workde.module.nfc.mapper.CmsArchivesMapper;
import cn.workde.module.nfc.entity.CmsArchives;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* 内容表(CmsArchives)表服务实现类
*
* @author makejava
* @since 2024-05-27 11:45:02
*/
@Service("cmsArchivesService")
public class CmsArchivesService extends ServiceImpl<CmsArchivesMapper, CmsArchives> implements IService<CmsArchives> {
public Result<List<Map<String, Object>>> getCmsArchives(){
List<Map<String, Object>> normal = this.listMaps(
new QueryWrapper<CmsArchives>()
.lambda()
.select(CmsArchives::getId, CmsArchives::getTitle)
.eq(CmsArchives::getModelId, 6)
.eq(CmsArchives::getStatus, "normal")
.isNull(CmsArchives::getDeletetime)
.orderByDesc(CmsArchives::getCreatetime)
);
return Result.data(normal);
}
}

View File

@ -1,128 +0,0 @@
package cn.workde.module.nfc.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import cn.workde.core.data.dto.Result;
import cn.workde.module.nfc.dto.PlayerDto;
import cn.workde.module.nfc.dto.PlayersDto;
import cn.workde.module.nfc.entity.*;
import cn.workde.module.nfc.mapper.MatchRankingMapper;
import cn.workde.module.nfc.mapper.PlayersMapper;
import cn.workde.module.nfc.vo.PushGroupVo;
import cn.workde.module.nfc.wrapper.PlayersWrapper;
import cn.workde.module.upms.service.GrapeConfigService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Comparator;
import java.util.List;
/**
* 赛事成绩表(MatchRanking)表服务接口
*
* @author makejava
* @since 2024-03-22 10:51:53
*/
@Service
@Slf4j
public class MatchRankingService extends ServiceImpl<MatchRankingMapper, MatchRanking> {
@Resource
private PlayersMapper playersMapper;
@Resource
private GrapeConfigService configService;
public Result<List<String>> getOtherRound(Integer matchId, String course) {
List<String> otherRound = this.baseMapper.getOtherRound(matchId, course);
return Result.data(otherRound);
}
/**
* 获取分组
*
* @return
*/
public Result<Dict> getGrouping() {
String json = configService.getConfigValueByKey("club:nfc:push:group");
if (StrUtil.isBlank(json)) {
return Result.fail("请先推送分组");
}
PushGroupVo pushGroupVo = JSONUtil.toBean(json, PushGroupVo.class);
String title = pushGroupVo.getTitle();
Boolean orderBy = pushGroupVo.getOrderBy();
// 根据orderBy判断升序还是降序 true 升序 false 降序
if (ObjUtil.isNotNull(orderBy) && !orderBy) {
pushGroupVo.getGroups().sort(Comparator.comparing(PushGroupVo.Group::getSortNo).reversed());
}else {
pushGroupVo.getGroups().sort(Comparator.comparing(PushGroupVo.Group::getSortNo));
}
List<Dict> dictList = pushGroupVo.getGroups().stream()
.map(group -> {
Dict dict = Dict.create();
dict.set("group_no", group.getGroupNo());
dict.set("group_name", group.getGroupName());
List<PlayersDto> playersDtoList = getPlayersDto(group.getMatchId(), group.getCourse(), group.getRound(), group.getGroupNo());
dict.set("players", playersDtoList);
dict.set("sort_no", group.getSortNo());
return dict;
}).toList();
return Result.data(Dict.create().set("title", title).set("groups", dictList));
}
private List<PlayersDto> getPlayersDto(String matchId, String course, String round, String groupNo) {
List<PlayerDto> playerDtoList = playersMapper.selectJoinList(PlayerDto.class, new MPJLambdaWrapper<Players>()
.selectAs(Players::getId, PlayerDto::getPlayerId)
.selectAs(User::getMemberNumber, PlayerDto::getMemberNumber)
.selectAs(Players::getDistrict, PlayerDto::getDistrict)
.selectAs(User::getRfId, PlayerDto::getRfId)
.selectAs(Players::getCountry, PlayerDto::getCountry)
.selectAs(Players::getPlayerPic, PlayerDto::getPlayerPic)
.selectAs(Players::getRealName, PlayerDto::getRealName)
.selectAs(Players::getCity, PlayerDto::getCity)
.selectAs(Players::getAddress, PlayerDto::getAddress)
.selectAs(Players::getGender, PlayerDto::getGender)
.selectAs(Players::getProvince, PlayerDto::getProvince)
.selectAs(Club::getNameShort, PlayerDto::getNameShort)
.selectAs(User::getRfStatus, PlayerDto::getRfStatus)
.selectAs(Players::getInspectionStatus, PlayerDto::getInspectionStatus)
.selectAs(MatchRanking::getChannel, PlayerDto::getChannel)
.selectAs(MatchRanking::getLedColor, PlayerDto::getLedColor)
.selectAs(User::getRfIdWg26, PlayerDto::getRfIdWg26)
.selectAs(User::getRfIdWg34, PlayerDto::getRfIdWg34)
.leftJoin(User.class, "user", on -> on.eq(User::getId, Players::getMemberId)
)
.leftJoin(ClubInvate.class, "club_invate", on -> on.eq(ClubInvate::getPlayerId, Players::getId)
)
.leftJoin(Club.class, "club", on -> on.eq(Club::getId, ClubInvate::getClubId)
)
.leftJoin(MatchRanking.class, "match_ranking", on -> on.eq(MatchRanking::getPlayerId, User::getMemberNumber))
.eq("t", Players::getPlayerStatus, 9)
.eq("club", Club::getStatus, 9)
.eq("club_invate", ClubInvate::getStatus, 6)
.isNull("club_invate", ClubInvate::getDeletetime)
.eq("user", User::getMemberStatus, 1)
.eq("match_ranking", MatchRanking::getMatchId, matchId)
.eq("match_ranking", MatchRanking::getCourse, course)
.eq("match_ranking", MatchRanking::getOtherRound, round)
.eq("match_ranking", MatchRanking::getGrouping, groupNo)
.orderBy(true, true, "FIELD(match_ranking.led_color, '红', '黄','蓝','绿','青','品红')")
.orderByAsc("match_ranking", MatchRanking::getChannel)
);
if (CollUtil.isEmpty(playerDtoList)) {
return CollUtil.newArrayList();
}
return PlayersWrapper.INSTANCE.toDto(playerDtoList);
}
}

View File

@ -1,278 +0,0 @@
package cn.workde.module.nfc.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.workde.core.data.dto.Result;
import cn.workde.core.util.WebUtils;
import cn.workde.module.nfc.dto.PeopleDto;
import cn.workde.module.nfc.entity.People;
import cn.workde.module.nfc.entity.User;
import cn.workde.module.nfc.excel.writeExcel.PeopleWriteExcel;
import cn.workde.module.nfc.mapper.PeopleMapper;
import cn.workde.module.nfc.mapper.UserMapper;
import cn.workde.module.nfc.util.WGUtils;
import cn.workde.module.nfc.vo.PeopleParam;
import cn.workde.module.nfc.vo.PeopleVo;
import cn.workde.module.nfc.wrapper.PeopleWrapper;
import cn.workde.module.upms.utils.EasyExcelAlibabaUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* NFC人员信息表(飞手信息不在这里)(People)表服务实现类
*
* @author makejava
* @since 2024-05-22 09:36:46
*/
@Service("peopleService")
public class PeopleService extends ServiceImpl<PeopleMapper, People> implements IService<People> {
@Resource
private PeopleMapper peopleMapper;
@Resource
private UserMapper userMapper;
public Result<Page<PeopleDto>> getPeoplePage(PeopleParam peopleParam) {
Page<People> page = new Page<>(peopleParam.getPage(), peopleParam.getPageSize());
Page<People> peoplePage = peopleMapper.selectPage(page, new QueryWrapper<People>()
.lambda()
.and(StrUtil.isNotBlank(peopleParam.getRfId()), wrapper -> wrapper.like(People::getRfId, peopleParam.getRfId())
.or()
.like(People::getRfIdWg26, peopleParam.getRfId())
.or()
.like(People::getRfIdWg34, peopleParam.getRfId())
)
.eq(ObjUtil.isNotNull(peopleParam.getRfStatus()), People::getRfStatus, peopleParam.getRfStatus())
.and(ObjUtil.isNotNull(peopleParam.getBind()) && !peopleParam.getBind(), wrapper -> wrapper.isNull(People::getRfId)
.or()
.isNull(People::getRfIdWg26)
.or()
.isNull(People::getRfIdWg34)
)
.and(ObjUtil.isNotNull(peopleParam.getBind()) && peopleParam.getBind(), wrapper -> wrapper.isNotNull(People::getRfId)
.or()
.isNotNull(People::getRfIdWg26)
.or()
.isNotNull(People::getRfIdWg34)
)
.like(StrUtil.isNotBlank(peopleParam.getRealName()), People::getRealName, peopleParam.getRealName())
.eq(StrUtil.isNotBlank(peopleParam.getCity()), People::getCity, peopleParam.getCity())
.eq(StrUtil.isNotBlank(peopleParam.getProvince()), People::getProvince, peopleParam.getProvince())
.eq(StrUtil.isNotBlank(peopleParam.getDistrict()), People::getDistrict, peopleParam.getDistrict())
.eq(StrUtil.isNotBlank(peopleParam.getCountry()), People::getCountry, peopleParam.getCountry())
.eq(StrUtil.isNotBlank(peopleParam.getPeopleType()), People::getPeopleType, peopleParam.getPeopleType())
.like(StrUtil.isNotBlank(peopleParam.getNameShort()), People::getNameShort, peopleParam.getNameShort())
.eq(StrUtil.isNotBlank(peopleParam.getGender()), People::getGender, peopleParam.getGender())
.like(StrUtil.isNotBlank(peopleParam.getMemberNumber()), People::getMemberNumber, peopleParam.getMemberNumber())
.like(StrUtil.isNotBlank(peopleParam.getAddress()), People::getAddress, peopleParam.getAddress())
.orderByDesc(People::getPeopleType)
.orderByDesc(People::getNameShort)
.orderByAsc(People::getMemberNumber)
);
return Result.data(PeopleWrapper.INSTANCE.toDto(peoplePage));
}
public Result<PeopleDto> getPeopleById(String id) {
People people = peopleMapper.selectById(id);
if (ObjUtil.isNull(people)) {
return Result.fail("人员信息不存在");
}
return Result.data(PeopleWrapper.INSTANCE.toDto(people));
}
public Result addPeople(PeopleVo peopleVo) {
People people = BeanUtil.copyProperties(peopleVo, People.class);
int insert = peopleMapper.insert(people);
return insert > 0 ? Result.success("操作成功") : Result.fail("操作失败");
}
public Result updatePeople(String id, PeopleVo peopleVo) {
People people = peopleMapper.selectById(id);
if (ObjUtil.isNull(people)) {
return Result.fail("人员信息不存在");
}
BeanUtil.copyProperties(peopleVo, people);
int update = peopleMapper.updateById(people);
return update > 0 ? Result.success("操作成功") : Result.fail("操作失败");
}
public Result deletePeople(String id) {
People people = peopleMapper.selectById(id);
if (ObjUtil.isNull(people)) {
return Result.fail("人员信息不存在");
}
int delete = peopleMapper.deleteById(id);
return delete > 0 ? Result.success("操作成功") : Result.fail("操作失败");
}
/**
* 绑卡
*
* @param peopleId
* @param rfId
* @return
*/
public Result associationRfId(String peopleId, String rfId) {
People people = peopleMapper.selectById(peopleId);
if (ObjUtil.isNull(people)) {
return Result.fail("人员信息不存在");
}
if (StrUtil.isNotBlank(people.getRfId())) {
return Result.fail("该人员已绑定卡号");
}
//判断卡号是否被他人绑定
User user = userMapper.selectOne(new QueryWrapper<User>()
.lambda()
.eq(User::getRfId, rfId)
.last("limit 1")
);
People peopleByRfid = peopleMapper.selectOne(new QueryWrapper<People>()
.lambda().eq(People::getRfId, rfId)
.ne(People::getId, peopleId)
.last("limit 1")
);
if (ObjUtil.isNotNull(user)) {
return Result.fail("卡号已被其他飞手绑定,请先解绑");
}
if (ObjUtil.isNotNull(peopleByRfid)) {
return Result.fail("卡号已被其他人员绑定,请先解绑");
}
people.setRfId(rfId);
people.setRfStatus(1);
people.setRfIdWg26(WGUtils.Hex16ToWG26(rfId));
people.setRfIdWg34(WGUtils.WG26ToWG34(WGUtils.Hex16ToWG26(rfId)));
int updatedById = peopleMapper.updateById(people);
return updatedById > 0 ? Result.success("操作成功") : Result.fail("操作失败");
}
/**
* 解绑
*
* @param peopleId
* @return
*/
public Result unbindRfId(String peopleId) {
People people = peopleMapper.selectById(peopleId);
if (ObjUtil.isNull(people)) {
return Result.fail("人员信息不存在");
}
if (StrUtil.isBlank(people.getRfId())) {
return Result.fail("人员未绑定卡号");
}
people.setRfId(null);
people.setRfStatus(null);
people.setRfIdWg26(null);
people.setRfIdWg34(null);
int updatedById = peopleMapper.updateById(people);
return updatedById > 0 ? Result.success("操作成功") : Result.fail("操作失败");
}
/**
* 启用
*/
public Result enable(String peopleId) {
People people = peopleMapper.selectById(peopleId);
if (ObjUtil.isNull(people)) {
return Result.fail("人员信息不存在");
}
if (StrUtil.isBlank(people.getRfId())) {
return Result.fail("该人员手未绑定卡号");
}
if (people.getRfStatus() == 1) {
return Result.fail("该人员已启用");
}
people.setRfStatus(1);
return peopleMapper.updateById(people) > 0 ? Result.success("操作成功") : Result.fail("操作失败");
}
/**
* 停用
*/
public Result disable(String peopleId) {
People people = peopleMapper.selectById(peopleId);
if (ObjUtil.isNull(people)) {
return Result.fail("人员信息不存在");
}
if (StrUtil.isBlank(people.getRfId())) {
return Result.fail("该人员手未绑定卡号");
}
if (people.getRfStatus() == 0) {
return Result.fail("该人员已停用");
}
people.setRfStatus(0);
return peopleMapper.updateById(people) > 0 ? Result.success("操作成功") : Result.fail("操作失败");
}
public void exportExcel(PeopleParam peopleParam) {
List<People> peopleList = peopleMapper.selectList(new QueryWrapper<People>()
.lambda()
.and(StrUtil.isNotBlank(peopleParam.getRfId()), wrapper -> wrapper.like(People::getRfId, peopleParam.getRfId())
.or()
.like(People::getRfIdWg26, peopleParam.getRfId())
.or()
.like(People::getRfIdWg34, peopleParam.getRfId())
)
.eq(ObjUtil.isNotNull(peopleParam.getRfStatus()), People::getRfStatus, peopleParam.getRfStatus())
.and(ObjUtil.isNotNull(peopleParam.getBind()) && !peopleParam.getBind(), wrapper -> wrapper.isNull(People::getRfId)
.or()
.isNull(People::getRfIdWg26)
.or()
.isNull(People::getRfIdWg34)
)
.and(ObjUtil.isNotNull(peopleParam.getBind()) && peopleParam.getBind(), wrapper -> wrapper.isNotNull(People::getRfId)
.or()
.isNotNull(People::getRfIdWg26)
.or()
.isNotNull(People::getRfIdWg34)
)
.like(StrUtil.isNotBlank(peopleParam.getRealName()), People::getRealName, peopleParam.getRealName())
.eq(StrUtil.isNotBlank(peopleParam.getCity()), People::getCity, peopleParam.getCity())
.eq(StrUtil.isNotBlank(peopleParam.getProvince()), People::getProvince, peopleParam.getProvince())
.eq(StrUtil.isNotBlank(peopleParam.getDistrict()), People::getDistrict, peopleParam.getDistrict())
.eq(StrUtil.isNotBlank(peopleParam.getCountry()), People::getCountry, peopleParam.getCountry())
.eq(StrUtil.isNotBlank(peopleParam.getPeopleType()), People::getPeopleType, peopleParam.getPeopleType())
.like(StrUtil.isNotBlank(peopleParam.getNameShort()), People::getNameShort, peopleParam.getNameShort())
.eq(StrUtil.isNotBlank(peopleParam.getGender()), People::getGender, peopleParam.getGender())
.like(StrUtil.isNotBlank(peopleParam.getMemberNumber()), People::getMemberNumber, peopleParam.getMemberNumber())
.like(StrUtil.isNotBlank(peopleParam.getAddress()), People::getAddress, peopleParam.getAddress())
.orderByDesc(People::getPeopleType)
.orderByDesc(People::getNameShort)
.orderByAsc(People::getMemberNumber)
);
List<PeopleDto> peopleDtoList = PeopleWrapper.INSTANCE.toDto(peopleList);
List<PeopleWriteExcel> excelList = BeanUtil.copyToList(peopleDtoList, PeopleWriteExcel.class);
EasyExcelAlibabaUtils.download(WebUtils.getResponse(), PeopleWriteExcel.class, excelList, "人员名单信息");
}
public void Wg() {
List<People> peopleList = peopleMapper.selectList(new QueryWrapper<People>()
.lambda()
.orderByDesc(People::getPeopleType)
.orderByDesc(People::getNameShort)
.orderByAsc(People::getMemberNumber)
);
if (CollUtil.isNotEmpty(peopleList)) {
peopleList.forEach(people -> {
if (StrUtil.isNotBlank(people.getRfId())) {
people.setRfIdWg26(WGUtils.Hex16ToWG26(people.getRfId()));
people.setRfIdWg34(WGUtils.WG26ToWG34(WGUtils.Hex16ToWG26(people.getRfId())));
peopleMapper.updateById(people);
}
});
}
}
}

View File

@ -1,252 +0,0 @@
package cn.workde.module.nfc.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.workde.core.constant.GrapeConst;
import cn.workde.core.data.dto.Result;
import cn.workde.core.util.RsaUtil;
import cn.workde.module.nfc.dto.PlayerDto;
import cn.workde.module.nfc.dto.PlayersDto;
import cn.workde.module.nfc.dto.PlayersInspectionAdminDto;
import cn.workde.module.nfc.dto.PlayersInspectionDto;
import cn.workde.module.nfc.entity.*;
import cn.workde.module.nfc.mapper.ClubInvateMapper;
import cn.workde.module.nfc.mapper.PlayersInspectionMapper;
import cn.workde.module.nfc.mapper.PlayersMapper;
import cn.workde.module.nfc.mapper.UserMapper;
import cn.workde.module.nfc.vo.PlayersInspectionParam;
import cn.workde.module.nfc.webSocket.NoticeWebSocket;
import cn.workde.module.nfc.wrapper.PlayersInspectionAdminWrapper;
import cn.workde.module.nfc.wrapper.PlayersWrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import jakarta.annotation.Resource;
import lombok.SneakyThrows;
import org.springframework.stereotype.Service;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.List;
/**
* 选手NFC检录表(PlayersInspection)表服务实现类
*
* @author makejava
* @since 2024-05-21 14:00:11
*/
@Service("playersInspectionService")
public class PlayersInspectionService extends ServiceImpl<PlayersInspectionMapper, PlayersInspection> implements IService<PlayersInspection> {
@Resource
private PlayersInspectionMapper playersInspectionMapper;
@Resource
private PlayersMapper playersMapper;
@Resource
private UserMapper userMapper;
@Resource
private ClubInvateMapper clubInvateMapper;
/**
* 获取飞手检录信息
*
* @param rfId
* @return
*/
public Result<PlayersInspectionDto> getPlayersInspection(String rfId) {
PlayersDto playersDto = this.getPlayersDto(rfId);
if (ObjUtil.isNull(playersDto)) {
return Result.fail("该NFC卡号未绑定飞手");
}
User user = userMapper.selectOne(new QueryWrapper<User>().lambda()
.eq(User::getRfId, rfId)
.eq(User::getMemberStatus, 1)
.last("limit 1")
);
if (user.getRfStatus() != 1) {
return Result.fail("该NFC卡号已禁用");
}
List<PlayersInspection> playersInspections = playersInspectionMapper.selectList(new QueryWrapper<PlayersInspection>()
.lambda()
.eq(PlayersInspection::getRfId, rfId)
.eq(PlayersInspection::getPlayersId, playersDto.getPlayerId())
.orderByDesc(PlayersInspection::getInspectionDatetime)
);
PlayersInspectionDto playersInspectionDto = BeanUtil.copyProperties(playersDto, PlayersInspectionDto.class);
playersInspectionDto.setPlayersInspectionList(playersInspections);
return Result.data(playersInspectionDto);
}
/**
* 飞手检录
*
* @param rfId
* @return
*/
public Result<PlayersInspectionDto> playersInspection(String rfId, boolean status) {
PlayersDto playersDto = this.getPlayersDto(rfId);
if (ObjUtil.isNull(playersDto)) {
return Result.fail("该NFC卡号未绑定飞手");
}
// 检录
PlayersInspection playersInspection = BeanUtil.copyProperties(playersDto, PlayersInspection.class);
playersInspection.setStatus(status);
playersInspection.setInspectionDatetime(new Date());
//获取关联俱乐部
ClubInvate clubInvate = clubInvateMapper.selectOne(new QueryWrapper<ClubInvate>().lambda()
.eq(ClubInvate::getPlayerId, playersDto.getPlayerId())
.eq(ClubInvate::getStatus, 6)
.isNull(ClubInvate::getDeletetime)
.last("limit 1")
);
//获取关联账号
User user = userMapper.selectOne(new QueryWrapper<User>().lambda()
.eq(User::getRfId, rfId)
.eq(User::getMemberStatus, 1)
.last("limit 1")
);
if (ObjUtil.isNotNull(clubInvate)) {
playersInspection.setClubId(clubInvate.getClubId());
}
if (ObjUtil.isNotNull(user)) {
playersInspection.setUserId(user.getId());
}
if (user.getRfStatus() != 1) {
return Result.fail("该NFC卡号已禁用");
}
playersInspection.setPlayersId(playersDto.getPlayerId());
int insert = playersInspectionMapper.insert(playersInspection);
if (insert <= 0) {
return Result.fail("检录失败");
}
//修改选手检录状态
Players players = playersMapper.selectById(playersDto.getPlayerId());
players.setInspectionStatus(status ? 1 : 2);
int update = playersMapper.updateById(players);
if (update <= 0) {
return Result.fail("修改选手检录状态失败");
}
playersDto.setInspectionStatus(status ? 1 : 2);
List<PlayersInspection> playersInspections = playersInspectionMapper.selectList(new QueryWrapper<PlayersInspection>()
.lambda()
.eq(PlayersInspection::getRfId, rfId)
.eq(PlayersInspection::getPlayersId, playersDto.getPlayerId())
.orderByDesc(PlayersInspection::getInspectionDatetime)
);
PlayersInspectionDto playersInspectionDto = BeanUtil.copyProperties(playersDto, PlayersInspectionDto.class);
playersInspectionDto.setPlayersInspectionList(playersInspections);
playersInspectionDto.setStatus(playersInspection.getStatus());
playersInspectionDto.setInspectionDatetime(playersInspection.getInspectionDatetime());
NoticeWebSocket.sendAllMessage("选手检录状态更新,请前端更行数据");
return Result.data(playersInspectionDto);
}
private PlayersDto getPlayersDto(String rfId) {
PlayerDto playerDto = playersMapper.selectJoinOne(PlayerDto.class, new MPJLambdaWrapper<Players>()
.selectAs(Players::getId, PlayerDto::getPlayerId)
.selectAs(User::getMemberNumber, PlayerDto::getMemberNumber)
.selectAs(Players::getDistrict, PlayerDto::getDistrict)
.selectAs(User::getRfId, PlayerDto::getRfId)
.selectAs(Players::getCountry, PlayerDto::getCountry)
.selectAs(Players::getPlayerPic, PlayerDto::getPlayerPic)
.selectAs(Players::getRealName, PlayerDto::getRealName)
.selectAs(Players::getCity, PlayerDto::getCity)
.selectAs(Players::getAddress, PlayerDto::getAddress)
.selectAs(Players::getGender, PlayerDto::getGender)
.selectAs(Players::getProvince, PlayerDto::getProvince)
.selectAs(Club::getNameShort, PlayerDto::getNameShort)
.selectAs(User::getRfStatus, PlayerDto::getRfStatus)
.selectAs(Players::getInspectionStatus, PlayerDto::getInspectionStatus)
.selectAs(User::getRfIdWg26, PlayerDto::getRfIdWg26)
.selectAs(User::getRfIdWg34, PlayerDto::getRfIdWg34)
.leftJoin(User.class, "user", on -> on.eq(User::getId, Players::getMemberId)
)
.leftJoin(ClubInvate.class, "club_invate", on -> on.eq(ClubInvate::getPlayerId, Players::getId)
)
.leftJoin(Club.class, "club", on -> on.eq(Club::getId, ClubInvate::getClubId)
)
.eq("t", Players::getPlayerStatus, 9)
.eq("club", Club::getStatus, 9)
.eq("club_invate", ClubInvate::getStatus, 6)
.isNull("club_invate", ClubInvate::getDeletetime)
.eq("user", User::getMemberStatus, 1)
.eq("user", User::getRfId, rfId)
.last("limit 1")
);
if (ObjUtil.isNull(playerDto)) {
return null;
}
return PlayersWrapper.INSTANCE.toDto(playerDto);
}
public Result<Integer> getCountByThisDay() {
Integer count = playersInspectionMapper.getCountByThisDay(LocalDateTimeUtil.beginOfDay(LocalDateTimeUtil.now()), LocalDateTimeUtil.endOfDay(LocalDateTimeUtil.now()));
return Result.data(count);
}
@SneakyThrows
public Result<String> reset(String password) {
if (StrUtil.isBlank(password)) {
return Result.fail("密码不能为空");
}
password = URLDecoder.decode(password, StandardCharsets.UTF_8.name());
password = RsaUtil.decrypt(password, GrapeConst.APP_PRIVATE_KEY);
if (!password.equals(GrapeConst.APP_PASSWORD)) {
return Result.fail("密码错误");
}
LambdaUpdateWrapper<Players> uw = new LambdaUpdateWrapper<>();
uw.set(Players::getInspectionStatus, 0);
int update = playersMapper.update(uw);
NoticeWebSocket.sendAllMessage("一键重置,请前端更行数据");
return update > 0 ? Result.success("重置成功") : Result.fail("重置失败");
}
public Result<Page<PlayersInspectionAdminDto>> getPlayersInspectionAdminDtoPage(Page page, String playerId) {
Page<PlayersInspection> paged = this.page(page, new LambdaQueryWrapper<PlayersInspection>()
.eq(PlayersInspection::getPlayersId, playerId)
.orderByDesc(PlayersInspection::getInspectionDatetime)
);
return Result.data(PlayersInspectionAdminWrapper.INSTANCE.toDto(paged));
}
public Result<Page<PlayersInspectionAdminDto>> getPlayersInspectionAdminPage(Page page, PlayersInspectionParam param) {
Page<PlayersInspection> paged = this.page(page, new LambdaQueryWrapper<PlayersInspection>()
.and(StrUtil.isNotBlank(param.getRfId()), wrapper -> wrapper.like(PlayersInspection::getRfId, param.getRfId())
.or()
.like(PlayersInspection::getRfIdWg26, param.getRfId())
.or()
.like(PlayersInspection::getRfIdWg34, param.getRfId())
)
.like(StrUtil.isNotBlank(param.getRealName()), PlayersInspection::getRealName, param.getRealName())
.like(StrUtil.isNotBlank(param.getMemberNumber()), PlayersInspection::getMemberNumber, param.getMemberNumber())
.like(StrUtil.isNotBlank(param.getNameShort()), PlayersInspection::getNameShort, param.getNameShort())
.eq(StrUtil.isNotBlank(param.getGender()), PlayersInspection::getGender, param.getGender())
.eq(StrUtil.isNotBlank(param.getCountry()), PlayersInspection::getCountry, param.getCountry())
.eq(StrUtil.isNotBlank(param.getProvince()), PlayersInspection::getProvince, param.getProvince())
.eq(StrUtil.isNotBlank(param.getCity()), PlayersInspection::getCity, param.getCity())
.eq(StrUtil.isNotBlank(param.getDistrict()), PlayersInspection::getDistrict, param.getDistrict())
.like(StrUtil.isNotBlank(param.getAddress()), PlayersInspection::getAddress, param.getAddress())
.eq(ObjUtil.isNotNull(param.getStatus()), PlayersInspection::getStatus, param.getStatus())
.ge(ObjUtil.isNotNull(param.getInspectionStartDateTime()), PlayersInspection::getInspectionDatetime, param.getInspectionStartDateTime())
.le(ObjUtil.isNotNull(param.getInspectionEndDateTime()), PlayersInspection::getInspectionDatetime, param.getInspectionEndDateTime())
.orderByDesc(PlayersInspection::getInspectionDatetime)
);
return Result.data(PlayersInspectionAdminWrapper.INSTANCE.toDto(paged));
}
}

View File

@ -1,326 +0,0 @@
package cn.workde.module.nfc.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.workde.core.data.dto.Result;
import cn.workde.core.util.WebUtils;
import cn.workde.module.nfc.dto.PlayerDto;
import cn.workde.module.nfc.dto.PlayersDto;
import cn.workde.module.nfc.entity.*;
import cn.workde.module.nfc.excel.writeExcel.PlayersWriteExcel;
import cn.workde.module.nfc.mapper.PeopleMapper;
import cn.workde.module.nfc.mapper.PlayersMapper;
import cn.workde.module.nfc.mapper.UserMapper;
import cn.workde.module.nfc.util.WGUtils;
import cn.workde.module.nfc.vo.PlayerVo;
import cn.workde.module.nfc.wrapper.PlayersWrapper;
import cn.workde.module.upms.utils.EasyExcelAlibabaUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 飞手表(Players)表服务实现类
*
* @author makejava
* @since 2024-05-20 15:40:15
*/
@Service("playersService")
public class PlayersService extends ServiceImpl<PlayersMapper, Players> implements IService<Players> {
@Resource
private PlayersMapper playersMapper;
@Resource
private UserMapper userMapper;
@Resource
private PeopleMapper peopleMapper;
/**
* 获取飞手列表
*
* @param page 分页参数
* @param playerVo
* @return
*/
public Result<Page<PlayersDto>> getPlayerDtoPage(PlayerVo playerVo) {
Page<PlayerDto> playerDtoPage = playersMapper.selectJoinPage(new Page<>(playerVo.getPage(), playerVo.getPageSize()), PlayerDto.class, new MPJLambdaWrapper<Players>()
.selectAs(Players::getId, PlayerDto::getPlayerId)
.selectAs(User::getMemberNumber, PlayerDto::getMemberNumber)
.selectAs(Players::getDistrict, PlayerDto::getDistrict)
.selectAs(User::getRfId, PlayerDto::getRfId)
.selectAs(Players::getCountry, PlayerDto::getCountry)
.selectAs(Players::getPlayerPic, PlayerDto::getPlayerPic)
.selectAs(Players::getRealName, PlayerDto::getRealName)
.selectAs(Players::getCity, PlayerDto::getCity)
.selectAs(Players::getAddress, PlayerDto::getAddress)
.selectAs(Players::getGender, PlayerDto::getGender)
.selectAs(Players::getProvince, PlayerDto::getProvince)
.selectAs(Club::getNameShort, PlayerDto::getNameShort)
.selectAs(User::getRfStatus, PlayerDto::getRfStatus)
.selectAs(Players::getInspectionStatus, PlayerDto::getInspectionStatus)
.selectAs(User::getRfIdWg26, PlayerDto::getRfIdWg26)
.selectAs(User::getRfIdWg34, PlayerDto::getRfIdWg34)
.leftJoin(User.class, "user", on -> on.eq(User::getId, Players::getMemberId)
)
.leftJoin(ClubInvate.class, "club_invate", on -> on.eq(ClubInvate::getPlayerId, Players::getId)
)
.leftJoin(Club.class, "club", on -> on.eq(Club::getId, ClubInvate::getClubId)
)
.eq("t", Players::getPlayerStatus, 9)
.eq("club", Club::getStatus, 9)
.eq("club_invate", ClubInvate::getStatus, 6)
.isNull("club_invate", ClubInvate::getDeletetime)
.eq("user", User::getMemberStatus, 1)
.like(StrUtil.isNotBlank(playerVo.getRealName()), "t", Players::getRealName, playerVo.getRealName())
.like(StrUtil.isNotBlank(playerVo.getMemberNumber()), "user", User::getMemberNumber, playerVo.getMemberNumber())
.like(StrUtil.isNotBlank(playerVo.getNameShort()), "club", Club::getNameShort, playerVo.getNameShort())
.like(StrUtil.isNotBlank(playerVo.getGender()), "t", Players::getGender, playerVo.getGender())
.like(StrUtil.isNotBlank(playerVo.getProvince()), "t", Players::getProvince, playerVo.getProvince())
.like(StrUtil.isNotBlank(playerVo.getCity()), "t", Players::getCity, playerVo.getCity())
.like(StrUtil.isNotBlank(playerVo.getDistrict()), "t", Players::getDistrict, playerVo.getDistrict())
.like(StrUtil.isNotBlank(playerVo.getAddress()), "t", Players::getAddress, playerVo.getAddress())
.like(StrUtil.isNotBlank(playerVo.getCountry()), "t", Players::getCountry, playerVo.getCountry())
.eq(ObjUtil.isNotNull(playerVo.getRfStatus()), "user", User::getRfStatus, playerVo.getRfStatus())
.and(StrUtil.isNotBlank(playerVo.getRfId()), wrapper -> wrapper.like("user",User::getRfId, playerVo.getRfId())
.or()
.like("user",User::getRfIdWg26, playerVo.getRfId())
.or()
.like("user",User::getRfIdWg34, playerVo.getRfId())
)
.and(ObjUtil.isNotNull(playerVo.getBind()) && !playerVo.getBind(), wrapper -> wrapper.isNull("user", User::getRfId)
.or()
.isNull("user", User::getRfIdWg26)
.or()
.isNull("user", User::getRfIdWg34)
)
.and(ObjUtil.isNotNull(playerVo.getBind()) && playerVo.getBind(), wrapper -> wrapper.isNotNull("user", User::getRfId)
.or()
.isNotNull("user", User::getRfIdWg26)
.or()
.isNotNull("user", User::getRfIdWg34)
)
.orderByDesc("club", Club::getId)
.orderByAsc("user", User::getMemberNumber)
.orderByDesc("t", Players::getCreatedAt)
);
return Result.data(PlayersWrapper.INSTANCE.toDto(playerDtoPage));
}
/**
* 绑卡
*
* @param playerId
* @param rfId
* @return
*/
public Result associationRfId(Long playerId, String rfId) {
Players player = this.getById(playerId);
if (ObjUtil.isNull(player)) {
return Result.fail("飞手不存在");
}
if (ObjUtil.isNull(player.getMemberId())) {
return Result.fail("飞手未绑定账号");
}
User user = userMapper.selectById(player.getMemberId());
if (ObjUtil.isNull(user)) {
return Result.fail("飞手绑定账号不存在");
}
if (StrUtil.isNotBlank(user.getRfId())) {
return Result.fail("飞手已绑定卡号,请先解绑");
}
//判断卡号是否被他人绑定
User userByRfId = userMapper.selectOne(new QueryWrapper<User>()
.lambda()
.eq(User::getRfId, rfId)
.ne(User::getId, user.getId())
.last("limit 1")
);
People people = peopleMapper.selectOne(new QueryWrapper<People>()
.lambda().eq(People::getRfId, rfId)
.last("limit 1")
);
if (ObjUtil.isNotNull(userByRfId)) {
return Result.fail("卡号已被其他飞手绑定,请先解绑");
}
if (ObjUtil.isNotNull(people)) {
return Result.fail("卡号已被其他人员绑定,请先解绑");
}
user.setRfId(rfId);
user.setRfStatus(1);
user.setRfIdWg26(WGUtils.Hex16ToWG26(rfId));
user.setRfIdWg34(WGUtils.WG26ToWG34(WGUtils.Hex16ToWG26(rfId)));
int updatedById = userMapper.updateById(user);
return updatedById > 0 ? Result.success("操作成功") : Result.fail("操作失败");
}
/**
* 解绑
*
* @param playerId
* @return
*/
public Result unbindRfId(Long playerId) {
Players player = this.getById(playerId);
if (ObjUtil.isNull(player)) {
return Result.fail("飞手不存在");
}
if (ObjUtil.isNull(player.getMemberId())) {
return Result.fail("飞手未绑定账号");
}
User user = userMapper.selectById(player.getMemberId());
if (ObjUtil.isNull(user)) {
return Result.fail("飞手绑定账号不存在");
}
if (StrUtil.isBlank(user.getRfId())) {
return Result.fail("飞手未绑定卡号");
}
user.setRfId(null);
user.setRfStatus(null);
user.setRfIdWg26(null);
user.setRfIdWg34(null);
int updatedById = userMapper.updateById(user);
return updatedById > 0 ? Result.success("操作成功") : Result.fail("操作失败");
}
/**
* 启用
*/
public Result enable(Long playerId) {
Players player = this.getById(playerId);
if (ObjUtil.isNull(player)) {
return Result.fail("飞手不存在");
}
if (ObjUtil.isNull(player.getMemberId())) {
return Result.fail("飞手未绑定账号");
}
User user = userMapper.selectById(player.getMemberId());
if (ObjUtil.isNull(user)) {
return Result.fail("飞手绑定账号不存在");
}
if (StrUtil.isBlank(user.getRfId())) {
return Result.fail("飞手未绑定卡号");
}
if (user.getRfStatus() == 1) {
return Result.fail("飞手已启用");
}
user.setRfStatus(1);
return userMapper.updateById(user) > 0 ? Result.success("操作成功") : Result.fail("操作失败");
}
/**
* 停用
*/
public Result disable(Long playerId) {
Players player = this.getById(playerId);
if (ObjUtil.isNull(player)) {
return Result.fail("飞手不存在");
}
if (ObjUtil.isNull(player.getMemberId())) {
return Result.fail("飞手未绑定账号");
}
User user = userMapper.selectById(player.getMemberId());
if (ObjUtil.isNull(user)) {
return Result.fail("飞手绑定账号不存在");
}
if (StrUtil.isBlank(user.getRfId())) {
return Result.fail("飞手未绑定卡号");
}
if (user.getRfStatus() == 0) {
return Result.fail("飞手已停用");
}
user.setRfStatus(0);
return userMapper.updateById(user) > 0 ? Result.success("操作成功") : Result.fail("操作失败");
}
public void exportExcel(PlayerVo playerVo) {
List<PlayerDto> playerDtoList = playersMapper.selectJoinList(PlayerDto.class, new MPJLambdaWrapper<Players>()
.selectAs(Players::getId, PlayerDto::getPlayerId)
.selectAs(User::getMemberNumber, PlayerDto::getMemberNumber)
.selectAs(Players::getDistrict, PlayerDto::getDistrict)
.selectAs(User::getRfId, PlayerDto::getRfId)
.selectAs(Players::getCountry, PlayerDto::getCountry)
.selectAs(Players::getPlayerPic, PlayerDto::getPlayerPic)
.selectAs(Players::getRealName, PlayerDto::getRealName)
.selectAs(Players::getCity, PlayerDto::getCity)
.selectAs(Players::getAddress, PlayerDto::getAddress)
.selectAs(Players::getGender, PlayerDto::getGender)
.selectAs(Players::getProvince, PlayerDto::getProvince)
.selectAs(Club::getNameShort, PlayerDto::getNameShort)
.selectAs(User::getRfStatus, PlayerDto::getRfStatus)
.selectAs(Players::getInspectionStatus, PlayerDto::getInspectionStatus)
.selectAs(User::getRfIdWg26, PlayerDto::getRfIdWg26)
.selectAs(User::getRfIdWg34, PlayerDto::getRfIdWg34)
.leftJoin(User.class, "user", on -> on.eq(User::getId, Players::getMemberId)
)
.leftJoin(ClubInvate.class, "club_invate", on -> on.eq(ClubInvate::getPlayerId, Players::getId)
)
.leftJoin(Club.class, "club", on -> on.eq(Club::getId, ClubInvate::getClubId)
)
.eq("t", Players::getPlayerStatus, 9)
.eq("club", Club::getStatus, 9)
.eq("club_invate", ClubInvate::getStatus, 6)
.isNull("club_invate", ClubInvate::getDeletetime)
.eq("user", User::getMemberStatus, 1)
.like(StrUtil.isNotBlank(playerVo.getRealName()), "t", Players::getRealName, playerVo.getRealName())
.like(StrUtil.isNotBlank(playerVo.getMemberNumber()), "user", User::getMemberNumber, playerVo.getMemberNumber())
.like(StrUtil.isNotBlank(playerVo.getNameShort()), "club", Club::getNameShort, playerVo.getNameShort())
.like(StrUtil.isNotBlank(playerVo.getGender()), "t", Players::getGender, playerVo.getGender())
.like(StrUtil.isNotBlank(playerVo.getProvince()), "t", Players::getProvince, playerVo.getProvince())
.like(StrUtil.isNotBlank(playerVo.getCity()), "t", Players::getCity, playerVo.getCity())
.like(StrUtil.isNotBlank(playerVo.getDistrict()), "t", Players::getDistrict, playerVo.getDistrict())
.like(StrUtil.isNotBlank(playerVo.getAddress()), "t", Players::getAddress, playerVo.getAddress())
.like(StrUtil.isNotBlank(playerVo.getCountry()), "t", Players::getCountry, playerVo.getCountry())
.eq(ObjUtil.isNotNull(playerVo.getRfStatus()), "user", User::getRfStatus, playerVo.getRfStatus())
.and(StrUtil.isNotBlank(playerVo.getRfId()), wrapper -> wrapper.like("user",User::getRfId, playerVo.getRfId())
.or()
.like("user",User::getRfIdWg26, playerVo.getRfId())
.or()
.like("user",User::getRfIdWg34, playerVo.getRfId())
)
.and(ObjUtil.isNotNull(playerVo.getBind()) && !playerVo.getBind(), wrapper -> wrapper.isNull("user", User::getRfId)
.or()
.isNull("user", User::getRfIdWg26)
.or()
.isNull("user", User::getRfIdWg34)
)
.and(ObjUtil.isNotNull(playerVo.getBind()) && playerVo.getBind(), wrapper -> wrapper.isNotNull("user", User::getRfId)
.or()
.isNotNull("user", User::getRfIdWg26)
.or()
.isNotNull("user", User::getRfIdWg34)
)
.orderByDesc("club", Club::getId)
.orderByAsc("user", User::getMemberNumber)
.orderByDesc("t", Players::getCreatedAt)
);
List<PlayersDto> playersDtoList = PlayersWrapper.INSTANCE.toDto(playerDtoList);
List<PlayersWriteExcel> excelList = BeanUtil.copyToList(playersDtoList, PlayersWriteExcel.class);
EasyExcelAlibabaUtils.download(WebUtils.getResponse(), PlayersWriteExcel.class, excelList, "选手名单信息");
}
public void Wg() {
List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().isNotNull(User::getRfId));
if (CollUtil.isNotEmpty(userList)) {
userList.forEach(user -> {
if (StrUtil.isNotBlank(user.getRfId())) {
user.setRfIdWg26(WGUtils.Hex16ToWG26(user.getRfId()));
user.setRfIdWg34(WGUtils.WG26ToWG34(WGUtils.Hex16ToWG26(user.getRfId())));
userMapper.updateById(user);
}
});
}
}
}

View File

@ -1,242 +0,0 @@
package cn.workde.module.nfc.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.workde.core.data.dto.Result;
import cn.workde.module.nfc.dto.PlayerDto;
import cn.workde.module.nfc.dto.PlayersDto;
import cn.workde.module.nfc.dto.SignAdminDto;
import cn.workde.module.nfc.dto.SignDto;
import cn.workde.module.nfc.entity.*;
import cn.workde.module.nfc.mapper.*;
import cn.workde.module.nfc.vo.SignAdminParam;
import cn.workde.module.nfc.wrapper.PlayersWrapper;
import cn.workde.module.nfc.wrapper.SignAdminWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* NFC签到表(Sign)表服务实现类
*
* @author makejava
* @since 2024-05-22 13:07:00
*/
@Service("signService")
public class SignService extends ServiceImpl<SignMapper, Sign> implements IService<Sign> {
@Resource
private SignMapper signMapper;
@Resource
private PlayersMapper playersMapper;
@Resource
private UserMapper userMapper;
@Resource
private ClubInvateMapper clubInvateMapper;
@Resource
private PeopleMapper peopleMapper;
public Result<String> getSignType(String rfId) {
User user = userMapper.selectOne(new QueryWrapper<User>().lambda()
.eq(User::getRfId, rfId)
.eq(User::getMemberStatus, 1)
.last("limit 1")
);
if (ObjUtil.isNotNull(user)) {
return Result.data("players");
}
People people = peopleMapper.selectOne(new QueryWrapper<People>().lambda()
.eq(People::getRfId, rfId)
.last("limit 1")
);
if (ObjUtil.isNotNull(people)) {
return Result.data("people");
}
return Result.fail("该卡未绑定飞手或人员");
}
public Result<SignDto> playersSign(String rfId) {
// 获取关联的账号
User user = userMapper.selectOne(new QueryWrapper<User>().lambda()
.eq(User::getRfId, rfId)
.eq(User::getMemberStatus, 1)
.last("limit 1")
);
if (ObjUtil.isNull(user)) {
return Result.fail("该卡未绑定飞手");
}
if (user.getRfStatus() != 1) {
return Result.fail("该NFC卡号已禁用");
}
PlayersDto playersDto = this.getPlayersDto(rfId);
if (ObjUtil.isNull(playersDto)) {
return Result.fail("该NFC卡号未绑定飞手");
}
// 签到
Sign sign = BeanUtil.copyProperties(playersDto, Sign.class, "id");
sign.setSignDatetime(new Date());
sign.setTargetId(String.valueOf(playersDto.getPlayerId()));
sign.setRfId(rfId);
sign.setPeopleType("飞手");
//获取关联俱乐部
ClubInvate clubInvate = clubInvateMapper.selectOne(new QueryWrapper<ClubInvate>().lambda()
.eq(ClubInvate::getPlayerId, playersDto.getPlayerId())
.eq(ClubInvate::getStatus, 6)
.isNull(ClubInvate::getDeletetime)
.last("limit 1")
);
if (ObjUtil.isNotNull(clubInvate)) {
sign.setClubId(clubInvate.getClubId());
}
if (ObjUtil.isNotNull(user)) {
sign.setUserId(user.getId());
}
int insert = signMapper.insert(sign);
if (insert <= 0) {
return Result.fail("签到失败");
}
// 查询签到日志
List<Sign> signList = signMapper.selectList(new QueryWrapper<Sign>().lambda()
.eq(Sign::getRfId, rfId)
.eq(Sign::getTargetId, playersDto.getPlayerId())
.orderByDesc(Sign::getSignDatetime)
);
SignDto signDto = BeanUtil.copyProperties(playersDto, SignDto.class);
signDto.setSignList(signList);
signDto.setSignDatetime(sign.getSignDatetime());
signDto.setPeopleType("飞手");
if (StrUtil.isNotBlank(playersDto.getPlayerPic())) {
signDto.setPlayerPicFullPath(playersDto.getPlayerPic().startsWith("http") ? playersDto.getPlayerPic() : "https://www.fpvone.cn" + playersDto.getPlayerPic());
}
return Result.data(signDto);
}
private PlayersDto getPlayersDto(String rdId) {
PlayerDto playerDto = playersMapper.selectJoinOne(PlayerDto.class, new MPJLambdaWrapper<Players>()
.selectAs(Players::getId, PlayerDto::getPlayerId)
.selectAs(User::getMemberNumber, PlayerDto::getMemberNumber)
.selectAs(Players::getDistrict, PlayerDto::getDistrict)
.selectAs(User::getRfId, PlayerDto::getRfId)
.selectAs(Players::getCountry, PlayerDto::getCountry)
.selectAs(Players::getPlayerPic, PlayerDto::getPlayerPic)
.selectAs(Players::getRealName, PlayerDto::getRealName)
.selectAs(Players::getCity, PlayerDto::getCity)
.selectAs(Players::getAddress, PlayerDto::getAddress)
.selectAs(Players::getGender, PlayerDto::getGender)
.selectAs(Players::getProvince, PlayerDto::getProvince)
.selectAs(Club::getNameShort, PlayerDto::getNameShort)
.selectAs(User::getRfStatus, PlayerDto::getRfStatus)
.selectAs(Players::getInspectionStatus, PlayerDto::getInspectionStatus)
.selectAs(User::getRfIdWg26, PlayerDto::getRfIdWg26)
.selectAs(User::getRfIdWg34, PlayerDto::getRfIdWg34)
.leftJoin(User.class, "user", on -> on.eq(User::getId, Players::getMemberId)
)
.leftJoin(ClubInvate.class, "club_invate", on -> on.eq(ClubInvate::getPlayerId, Players::getId)
)
.leftJoin(Club.class, "club", on -> on.eq(Club::getId, ClubInvate::getClubId)
)
.eq("t", Players::getPlayerStatus, 9)
.eq("club", Club::getStatus, 9)
.eq("club_invate", ClubInvate::getStatus, 6)
.isNull("club_invate", ClubInvate::getDeletetime)
.eq("user", User::getMemberStatus, 1)
.eq("user", User::getRfId, rdId)
.last("limit 1")
);
if (ObjUtil.isNull(playerDto)) {
return null;
}
return PlayersWrapper.INSTANCE.toDto(playerDto);
}
public Result<SignDto> peopleSign(String rfId) {
People people = peopleMapper.selectOne(new QueryWrapper<People>().lambda()
.eq(People::getRfId, rfId)
.last("limit 1")
);
if (ObjUtil.isNull(people)) {
return Result.fail("该卡未绑定人员");
}
if (people.getRfStatus() != 1) {
return Result.fail("该NFC卡号已禁用");
}
// 签到
Sign sign = BeanUtil.copyProperties(people, Sign.class, "id");
sign.setSignDatetime(new Date());
sign.setTargetId(people.getId());
sign.setRfId(rfId);
int insert = signMapper.insert(sign);
if (insert <= 0) {
return Result.fail("签到失败");
}
// 查询签到日志
List<Sign> signList = signMapper.selectList(new QueryWrapper<Sign>().lambda()
.eq(Sign::getRfId, rfId)
.eq(Sign::getTargetId, people.getId())
.orderByDesc(Sign::getSignDatetime)
);
SignDto signDto = BeanUtil.copyProperties(people, SignDto.class);
signDto.setSignList(signList);
signDto.setSignDatetime(sign.getSignDatetime());
if (StrUtil.isNotBlank(people.getPlayerPic())) {
signDto.setPlayerPicFullPath(people.getPlayerPic().startsWith("http") ? people.getPlayerPic() : "https://jianlu.fpvone.cn" + people.getPlayerPic());
}
return Result.data(signDto);
}
public Result<Integer> getCountByThisDay() {
Integer count = signMapper.getCountByThisDay(LocalDateTimeUtil.beginOfDay(LocalDateTimeUtil.now()), LocalDateTimeUtil.endOfDay(LocalDateTimeUtil.now()));
return Result.data(count);
}
public Result<Page<SignAdminDto>> getSignAdminDtoPage(Page page, SignAdminParam param) {
Page<Sign> paged = this.page(page, new QueryWrapper<Sign>()
.orderByDesc("FIELD(people_type, '飞手')")
.lambda()
.and(StrUtil.isNotBlank(param.getRfId()), wrapper -> wrapper.like(Sign::getRfId, param.getRfId())
.or()
.like(Sign::getRfIdWg26, param.getRfId())
.or()
.like(Sign::getRfIdWg34, param.getRfId())
)
.like(StrUtil.isNotBlank(param.getRealName()), Sign::getRealName, param.getRealName())
.like(StrUtil.isNotBlank(param.getMemberNumber()), Sign::getMemberNumber, param.getMemberNumber())
.like(StrUtil.isNotBlank(param.getNameShort()), Sign::getNameShort, param.getNameShort())
.eq(StrUtil.isNotBlank(param.getGender()), Sign::getGender, param.getGender())
.eq(StrUtil.isNotBlank(param.getCountry()), Sign::getCountry, param.getCountry())
.eq(StrUtil.isNotBlank(param.getProvince()), Sign::getProvince, param.getProvince())
.eq(StrUtil.isNotBlank(param.getCity()), Sign::getCity, param.getCity())
.eq(StrUtil.isNotBlank(param.getDistrict()), Sign::getDistrict, param.getDistrict())
.like(StrUtil.isNotBlank(param.getAddress()), Sign::getAddress, param.getAddress())
.eq(StrUtil.isNotBlank(param.getPeopleType()), Sign::getPeopleType, param.getPeopleType())
.ge(ObjUtil.isNotNull(param.getSignStartDateTime()), Sign::getSignDatetime, param.getSignStartDateTime())
.le(ObjUtil.isNotNull(param.getSignEndDateTime()), Sign::getSignDatetime, param.getSignEndDateTime())
.orderByDesc(Sign::getPlayerPic)
.orderByDesc(Sign::getSignDatetime)
);
return Result.data(SignAdminWrapper.INSTANCE.toDto(paged));
}
}

View File

@ -1,19 +0,0 @@
package cn.workde.module.nfc.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.workde.module.nfc.mapper.UserMapper;
import cn.workde.module.nfc.entity.User;
import org.springframework.stereotype.Service;
/**
* 会员表(User)表服务实现类
*
* @author makejava
* @since 2024-05-20 14:50:12
*/
@Service("userService")
public class UserService extends ServiceImpl<UserMapper, User> implements IService<User> {
}

View File

@ -1,55 +0,0 @@
package cn.workde.module.nfc.util;
import cn.hutool.core.util.HexUtil;
public class WGUtils {
/**
* 16进制转大端码WG26
*
* @param hex16 16进制
* @return WG26
*/
public static String Hex16ToWG26(String hex16) {
String str = hex16;
int size = str.length() / 2;
StringBuilder newStr = new StringBuilder();
for (int i = size; i > 0; i--) {
newStr.append(str, (i - 1) * 2, i * 2);
}
str = newStr.toString();
String tmp = ("000000000" + str).substring(("000000000" + str).length() - 8);
tmp = tmp.substring(tmp.length() - 6);
String tmp1 = tmp.substring(0, 2);
int ch1 = Integer.parseInt(tmp1, 16);
tmp1 = ("000" + ch1).substring(("000" + ch1).length() - 3);
str = str.substring(str.length() - 4);
int ch2 = Integer.parseInt(str, 16);
str = "00000" + ch2;
str = str.substring(str.length() - 5);
str = tmp1 + str;
System.out.println(str);
return str;
}
/**
* WG26转WG34
*
* @param wg26 WG26
* @return WG34
*/
public static String WG26ToWG34(String wg26) {
String str = Integer.parseInt(wg26) + "";
String tmp = ("00000000" + str).substring(("00000000" + str).length() - 8);
String tmp1 = tmp.substring(0, 3);
tmp1 = HexUtil.toHex(Integer.parseInt(tmp1));
tmp = tmp.substring(tmp.length() - 5);
String tmp2 = HexUtil.toHex(Integer.parseInt(tmp));
tmp2 = ("00000000" + tmp2).substring(("00000000" + tmp2).length() - 4);
System.out.println(tmp2);
tmp1 = tmp1 + tmp2;
String result = Integer.parseInt(tmp1, 16) + "";
System.out.println("结果:" + result);
return result;
}
}

View File

@ -1,91 +0,0 @@
package cn.workde.module.nfc.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class PeopleParam {
/**
* 页码
*/
@Schema(description = "页码")
@NotNull(message = "页码不能为空")
private Integer page;
/**
* 每页数量
*/
@Schema(description = "每页数量")
@NotNull(message = "每页数量不能为空")
private Integer pageSize;
/**
* NFC 卡号
*/
@Schema(description = "NFC 卡号")
private String rfId;
/**
* NFC 状态
*/
@Schema(description = "NFC 状态")
private Integer rfStatus;
/**
* 是否绑定
*/
@Schema(description = "是否绑定")
private Boolean bind;
/**
* 人员类型
*/
@Schema(description = "人员类型")
private String peopleType;
/**
* 姓名
*/
@Schema(description = "姓名")
private String realName;
/**
* 参赛ID
*/
@Schema(description = "参赛ID")
private String memberNumber;
/**
* 队伍简称
*/
@Schema(description = "队伍简称")
private String nameShort;
/**
* 性别
*/
@Schema(description = "性别")
private String gender;
/**
*
*/
@Schema(description = "")
private String province;
/**
*
*/
@Schema(description = "")
private String city;
/**
*
*/
@Schema(description = "")
private String district;
/**
* 详细地址
*/
@Schema(description = "详细地址")
private String address;
/**
* 国籍
*/
@Schema(description = "国籍")
private String country;
}

View File

@ -1,63 +0,0 @@
package cn.workde.module.nfc.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class PeopleVo {
/**
* 人员类型
*/
@Schema(description = "人员类型")
private String peopleType;
/**
* 姓名
*/
@Schema(description = "姓名")
private String realName;
/**
* 参赛ID
*/
@Schema(description = "参赛ID")
private String memberNumber;
/**
* 队伍简称
*/
@Schema(description = "队伍简称")
private String nameShort;
/**
* 性别
*/
@Schema(description = "性别")
private String gender;
/**
*
*/
@Schema(description = "")
private String province;
/**
*
*/
@Schema(description = "")
private String city;
/**
*
*/
@Schema(description = "")
private String district;
/**
* 详细地址
*/
@Schema(description = "详细地址")
private String address;
/**
* 国籍
*/
@Schema(description = "国籍")
private String country;
/**
* 飞手照片
*/
@Schema(description = "飞手照片")
private String playerPic;
}

View File

@ -1,83 +0,0 @@
package cn.workde.module.nfc.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class PlayerVo {
/**
* 页码
*/
@Schema(description = "页码")
@NotNull(message = "页码不能为空")
private Integer page;
/**
* 每页数量
*/
@Schema(description = "每页数量")
@NotNull(message = "每页数量不能为空")
private Integer pageSize;
/**
* 姓名
*/
@Schema(description = "姓名")
private String realName;
/**
* 参赛ID
*/
@Schema(description = "参赛ID")
private String memberNumber;
/**
* 队伍简称
*/
@Schema(description = "队伍简称")
private String nameShort;
/**
* 性别 0男 1女
*/
@Schema(description = "性别 0男 1女")
private String gender;
/**
*
*/
@Schema(description = "")
private String province;
/**
*
*/
@Schema(description = "")
private String city;
/**
*
*/
@Schema(description = "")
private String district;
/**
* 详细地址
*/
@Schema(description = "详细地址")
private String address;
/**
* 国籍
*/
@Schema(description = "国籍")
private String country;
/**
* NFC 卡号
*/
@Schema(description = "NFC 卡号")
private String rfId;
/**
* NFC 状态
*/
@Schema(description = "NFC 状态")
private Integer rfStatus;
/**
* 是否绑定
*/
@Schema(description = "是否绑定")
private Boolean bind;
}

View File

@ -1,81 +0,0 @@
package cn.workde.module.nfc.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class PlayersInspectionParam {
/**
* NFC卡号
*/
@Schema(description = "NFC卡号")
private String rfId;
/**
* 姓名
*/
@Schema(description = "姓名")
private String realName;
/**
* 参赛ID
*/
@Schema(description = "参赛ID")
private String memberNumber;
/**
* 队伍简称
*/
@Schema(description = "队伍简称")
private String nameShort;
/**
* 性别
*/
@Schema(description = "性别")
private String gender;
/**
*
*/
@Schema(description = "")
private String province;
/**
*
*/
@Schema(description = "")
private String city;
/**
*
*/
@Schema(description = "")
private String district;
/**
* 详细地址
*/
@Schema(description = "详细地址")
private String address;
/**
* 国籍
*/
@Schema(description = "国籍")
private String country;
/**
* 是否通过
*/
@Schema(description = "是否通过")
private Boolean status;
/**
* 检录时间开始时间
*/
@Schema(description = "检录时间开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date inspectionStartDateTime;
/**
* 检录时间结束时间
*/
@Schema(description = "检录时间结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date inspectionEndDateTime;
}

View File

@ -1,76 +0,0 @@
package cn.workde.module.nfc.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.util.List;
@Data
public class PushGroupVo {
@NotBlank(message = "请选择标题")
@JsonProperty("title")
@Schema(description = "标题")
private String title;
@NotNull(message = "请选择排序")
@JsonProperty("order_by")
@Schema(description = "排序")
private Boolean orderBy;
@NotNull(message = "请选择分组")
@JsonProperty("groups")
@Schema(description = "分组集合")
private List<Group> groups;
@Data
public static class Group {
@NotBlank(message = "请选择分组编号")
@JsonProperty("group_no")
@Schema(description = "分组编号")
private String groupNo;
@NotNull(message = "请选择排序")
@JsonProperty("sort_no")
@Schema(description = "排序")
private Integer sortNo;
@NotBlank(message = "请选择分组名称,中文名称")
@JsonProperty("group_name")
@Schema(description = "分组名称,中文名称")
private String groupName;
/**
* 赛事id
*/
@NotBlank(message = "请选择赛事")
@JsonProperty("match_id")
@Schema(description = "赛事id")
private String matchId;
/**
* 赛程
*/
@NotBlank(message = "请选择赛程")
@JsonProperty("course")
@Schema(description = "赛程")
private String course;
/**
* 轮次
*/
@NotBlank(message = "请选择轮次")
@JsonProperty("round")
@Schema(description = "轮次")
private String round;
}
}

View File

@ -1,81 +0,0 @@
package cn.workde.module.nfc.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class SignAdminParam {
/**
* NFC卡号
*/
@Schema(description = "NFC卡号")
private String rfId;
/**
* 姓名
*/
@Schema(description = "姓名")
private String realName;
/**
* 参赛ID
*/
@Schema(description = "参赛ID")
private String memberNumber;
/**
* 队伍简称
*/
@Schema(description = "队伍简称")
private String nameShort;
/**
* 性别
*/
@Schema(description = "性别")
private String gender;
/**
*
*/
@Schema(description = "")
private String province;
/**
*
*/
@Schema(description = "")
private String city;
/**
*
*/
@Schema(description = "")
private String district;
/**
* 详细地址
*/
@Schema(description = "详细地址")
private String address;
/**
* 国籍
*/
@Schema(description = "国籍")
private String country;
/**
* 人员类型
*/
@Schema(description = "人员类型")
private String peopleType;
/**
* 签到开始时间
*/
@Schema(description = "签到开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date signStartDateTime;
/**
* 签到结束时间
*/
@Schema(description = "签到结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date signEndDateTime;
}

View File

@ -1,138 +0,0 @@
package cn.workde.module.nfc.webSocket;
import cn.hutool.core.util.StrUtil;
import cn.workde.module.nfc.config.WebSocketConfig;
import jakarta.websocket.*;
import jakarta.websocket.server.PathParam;
import jakarta.websocket.server.ServerEndpoint;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
/**
* @ServerEndpoint 注解是一个类层次的注解它的功能主要是将目前的类定义成一个websocket服务器端,
* 注解的值将被用于监听用户连接的终端访问URL地址,客户端可以通过这个URL来连接到WebSocket服务器端
*/
@Slf4j
@Component
@ServerEndpoint(value = "/notice/{userId}", configurator = WebSocketConfig.class)
public class NoticeWebSocket {
//记录连接的客户端
public static Map<String, Session> clients = new ConcurrentHashMap<>();
/**
* userId关联sid解决同一用户id在多个web端连接的问题
*/
public static Map<String, Set<String>> conns = new ConcurrentHashMap<>();
private String sid = null;
private String userId;
/**
* 判断是否连接的方法
*
* @return
*/
public static boolean isServerClose() {
if (NoticeWebSocket.clients.values().size() == 0) {
log.info("已断开");
return true;
} else {
log.info("已连接");
return false;
}
}
/**
* 发送给所有用户
*/
public static void sendAllMessage(String message) {
for (Session session : NoticeWebSocket.clients.values()) {
try {
session.getBasicRemote().sendText(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 根据用户id发送给某一个用户
**/
public static void sendMessageByUserId(String userId, String message) {
if (StrUtil.isNotBlank(userId)) {
Set<String> clientSet = conns.get(userId);
if (clientSet != null) {
Iterator<String> iterator = clientSet.iterator();
while (iterator.hasNext()) {
String sid = iterator.next();
Session session = clients.get(sid);
if (session != null) {
try {
session.getBasicRemote().sendText(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}
/**
* 连接成功后调用的方法
*
* @param session
* @param userId
*/
@OnOpen
public void onOpen(Session session, @PathParam("userId") String userId) {
this.sid = UUID.randomUUID().toString();
this.userId = userId;
clients.put(this.sid, session);
Set<String> clientSet = conns.get(userId);
if (clientSet == null) {
clientSet = new HashSet<>();
conns.put(userId, clientSet);
}
clientSet.add(this.sid);
log.info(this.sid + "连接开启!");
}
/**
* 连接关闭调用的方法
*/
@OnClose
public void onClose() {
log.info(this.sid + "连接断开!");
clients.remove(this.sid);
}
/**
* 收到客户端消息后调用的方法
*
* @param message
* @param session
*/
@OnMessage
public void onMessage(String message, Session session, @PathParam("userId") String userId) {
log.info("收到来自窗口" + this.userId + "的信息:" + message);
}
/**
* 发生错误时的回调函数
*
* @param error
*/
@OnError
public void onError(Throwable error) {
log.info("错误");
error.printStackTrace();
}
}

View File

@ -1,52 +0,0 @@
package cn.workde.module.nfc.wrapper;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.workde.core.base.BaseWrapper;
import cn.workde.module.nfc.dto.PeopleDto;
import cn.workde.module.nfc.entity.People;
import org.apache.ibatis.annotations.Param;
import org.mapstruct.AfterMapping;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.factory.Mappers;
@Mapper
public interface PeopleWrapper extends BaseWrapper<People, PeopleDto> {
PeopleWrapper INSTANCE = Mappers.getMapper(PeopleWrapper.class);
@AfterMapping
default void setOtherField(@Param("obj") People obj, @MappingTarget @Param("dto") PeopleDto dto) {
BeanUtil.copyProperties(obj, dto);
Integer rfStatus = obj.getRfStatus();
if (ObjUtil.isNull(rfStatus)) {
dto.setRfStatusName("");
} else if (rfStatus == 1) {
dto.setRfStatusName("启用");
} else {
dto.setRfStatusName("停用");
}
if (StrUtil.isBlank(obj.getRfId())) {
dto.setBind(false);
dto.setShowBindCard(true);
dto.setShowUnBindCard(false);
dto.setShowEnable(false);
dto.setShowDisable(false);
} else {
dto.setBind(true);
dto.setShowBindCard(false);
dto.setShowUnBindCard(true);
if (ObjUtil.isNull(rfStatus)) {
dto.setShowEnable(false);
dto.setShowDisable(false);
} else if (rfStatus == 1) {
dto.setShowEnable(false);
dto.setShowDisable(true);
} else {
dto.setShowEnable(true);
dto.setShowDisable(false);
}
}
}
}

View File

@ -1,26 +0,0 @@
package cn.workde.module.nfc.wrapper;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import cn.workde.core.base.BaseWrapper;
import cn.workde.module.nfc.dto.PlayersInspectionAdminDto;
import cn.workde.module.nfc.entity.PlayersInspection;
import org.apache.ibatis.annotations.Param;
import org.mapstruct.AfterMapping;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.factory.Mappers;
@Mapper
public interface PlayersInspectionAdminWrapper extends BaseWrapper<PlayersInspection, PlayersInspectionAdminDto> {
PlayersInspectionAdminWrapper INSTANCE = Mappers.getMapper(PlayersInspectionAdminWrapper.class);
@AfterMapping
default void setOtherField(@Param("obj") PlayersInspection obj, @MappingTarget @Param("dto") PlayersInspectionAdminDto dto) {
BeanUtil.copyProperties(obj, dto);
if (StrUtil.isNotBlank(obj.getPlayerPic())) {
dto.setPlayerPicFullPath(obj.getPlayerPic().startsWith("http") ? obj.getPlayerPic() : "https://www.fpvone.cn" + obj.getPlayerPic());
}
}
}

View File

@ -1,56 +0,0 @@
package cn.workde.module.nfc.wrapper;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.workde.core.base.BaseWrapper;
import cn.workde.module.nfc.dto.PlayerDto;
import cn.workde.module.nfc.dto.PlayersDto;
import org.apache.ibatis.annotations.Param;
import org.mapstruct.AfterMapping;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.factory.Mappers;
@Mapper
public interface PlayersWrapper extends BaseWrapper<PlayerDto, PlayersDto> {
PlayersWrapper INSTANCE = Mappers.getMapper(PlayersWrapper.class);
@AfterMapping
default void setOtherField(@Param("obj") PlayerDto obj, @MappingTarget @Param("dto") PlayersDto dto) {
BeanUtil.copyProperties(obj, dto);
if(StrUtil.isNotBlank(obj.getPlayerPic())) {
dto.setPlayerPicFullPath(obj.getPlayerPic().startsWith("http") ? obj.getPlayerPic() : "https://www.fpvone.cn" + obj.getPlayerPic());
}
Integer rfStatus = obj.getRfStatus();
if (ObjUtil.isNull(rfStatus)) {
dto.setRfStatusName("");
} else if (rfStatus == 1) {
dto.setRfStatusName("启用");
} else {
dto.setRfStatusName("停用");
}
if (StrUtil.isBlank(obj.getRfId())) {
dto.setBind(false);
dto.setShowBindCard(true);
dto.setShowUnBindCard(false);
dto.setShowEnable(false);
dto.setShowDisable(false);
} else {
dto.setBind(true);
dto.setShowBindCard(false);
dto.setShowUnBindCard(true);
if (ObjUtil.isNull(rfStatus)) {
dto.setShowEnable(false);
dto.setShowDisable(false);
} else if (rfStatus == 1) {
dto.setShowEnable(false);
dto.setShowDisable(true);
} else {
dto.setShowEnable(true);
dto.setShowDisable(false);
}
}
}
}

View File

@ -1,27 +0,0 @@
package cn.workde.module.nfc.wrapper;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import cn.workde.core.base.BaseWrapper;
import cn.workde.module.nfc.dto.SignAdminDto;
import cn.workde.module.nfc.entity.Sign;
import org.apache.ibatis.annotations.Param;
import org.mapstruct.AfterMapping;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.factory.Mappers;
@Mapper
public interface SignAdminWrapper extends BaseWrapper<Sign, SignAdminDto> {
SignAdminWrapper INSTANCE = Mappers.getMapper(SignAdminWrapper.class);
@AfterMapping
default void setOtherField(@Param("obj") Sign obj, @MappingTarget @Param("dto") SignAdminDto dto) {
BeanUtil.copyProperties(obj, dto);
if ("飞手".equals(obj.getPeopleType()) && StrUtil.isNotBlank(obj.getPlayerPic())) {
dto.setPlayerPicFullPath(obj.getPlayerPic().startsWith("http") ? obj.getPlayerPic() : "https://www.fpvone.cn" + obj.getPlayerPic());
} else if (!"飞手".equals(obj.getPeopleType()) && StrUtil.isNotBlank(obj.getPlayerPic())) {
dto.setPlayerPicFullPath(obj.getPlayerPic().startsWith("http") ? obj.getPlayerPic() : "https://jianlu.fpvone.cn" + obj.getPlayerPic());
}
}
}

View File

@ -5,7 +5,7 @@ spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/club_nfc?useSSL=false&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF8&useInformationSchema=true&autoReconnect=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
url: jdbc:mysql://localhost:3306/drone_coding?useSSL=false&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF8&useInformationSchema=true&autoReconnect=true&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: Wang09211108
druid: