From 3807d4fdefd23625aaa44a34050023dffe8e37af Mon Sep 17 00:00:00 2001 From: hu177768073 <177768073@qq.com> Date: Fri, 20 Sep 2024 15:46:00 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=B4=B5=E9=93=B6?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E9=80=80=E6=AC=BE=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bweb/controller/TestController.java | 1 + hs_err_pid3479.log | 807 ------------------ .../OrderAfterSalesApplyController.java | 118 ++- .../controller/OrderPayNotifyController.java | 3 + .../controller/OrderRefundController.java | 117 ++- .../com/hfkj/config/WeChatQrcodeUtils.java | 2 - .../main/java/com/hfkj/dao/BsOrderMapper.java | 31 +- .../java/com/hfkj/dao/BsOrderSqlProvider.java | 14 + .../main/java/com/hfkj/entity/BsOrder.java | 22 +- .../java/com/hfkj/entity/BsOrderExample.java | 60 ++ .../excel/OrderAfterSalesApplyModel.java | 64 ++ .../hfkj/model/excel/OrderRefundModel.java | 63 ++ .../order/impl/BsOrderRefundServiceImpl.java | 4 +- .../order/impl/BsOrderServiceImpl.java | 33 +- .../sysenum/fileRecords/FileRecordsEnum.java | 13 + .../order/OrderAfterSalesApplyStatusEnum.java | 9 + .../sysenum/order/OrderRefundStatusEnum.java | 9 + 17 files changed, 535 insertions(+), 835 deletions(-) delete mode 100644 hs_err_pid3479.log create mode 100644 service/src/main/java/com/hfkj/model/excel/OrderAfterSalesApplyModel.java create mode 100644 service/src/main/java/com/hfkj/model/excel/OrderRefundModel.java diff --git a/bweb/src/main/java/com/bweb/controller/TestController.java b/bweb/src/main/java/com/bweb/controller/TestController.java index 639d012..0fa392e 100644 --- a/bweb/src/main/java/com/bweb/controller/TestController.java +++ b/bweb/src/main/java/com/bweb/controller/TestController.java @@ -64,6 +64,7 @@ public class TestController { private GoodsUserAddressService addressService; @Resource private TradeService huiftTradeService; + @RequestMapping(value="/thirdPayResult",method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "查询V家园订单交易状态") diff --git a/hs_err_pid3479.log b/hs_err_pid3479.log deleted file mode 100644 index 8d24b66..0000000 --- a/hs_err_pid3479.log +++ /dev/null @@ -1,807 +0,0 @@ -# -# A fatal error has been detected by the Java Runtime Environment: -# -# SIGBUS (0xa) at pc=0x00000001022129d4, pid=3479, tid=0x0000000000007b03 -# -# JRE version: Java(TM) SE Runtime Environment (8.0_411) (build 1.8.0_411-b09) -# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.411-b09 mixed mode bsd-aarch64 compressed oops) -# Problematic frame: -# C [libzip.dylib+0x69d4] newEntry+0x68 -# -# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again -# -# If you would like to submit a bug report, please visit: -# http://bugreport.java.com/bugreport/crash.jsp -# The crash happened outside the Java Virtual Machine in native code. -# See problematic frame for where to report the bug. -# - ---------------- T H R E A D --------------- - -Current thread (0x000000012881b000): JavaThread "RMI TCP Connection(1)-192.168.0.104" daemon [_thread_in_native, id=31491, stack(0x0000000170f8c000,0x000000017118f000)] - -siginfo: si_signo: 10 (SIGBUS), si_code: 1 (BUS_ADRALN), si_addr: 0x00000001021a8d9c - -Registers: - x0=0x0000600000d1fbb0 x1=0x0000000000000000 x2=0x0000000000000000 x3=0x0000600000d1fbc0 - x4=0x0000600000d1fc00 x5=0x0000000000003bb0 x6=0x7373616c632e726f x7=0x000000012881b000 - x8=0x00000001022a0d80 x9=0x00000000000f8000 x10=0x0000f44901c90000 x11=0x0000000000000050 -x12=0x0000600002c9c734 x13=0x00000000001ff800 x14=0x00000000000007fb x15=0x00000000970068c0 -x16=0x00000001842cae70 x17=0x00000001f648a348 x18=0x00000007725c61e6 x19=0x0000600000d1fbb0 -x20=0x0000000000000000 x21=0x0000600001b94000 x22=0x00000001021a8d80 x23=0x000000002343f75b -x24=0x000000000000002f x25=0x0000000000000038 x26=0x0000000000000005 x27=0x0000600000d1fbd8 -x28=0x00000006c0053d78 fp=0x00000001711898f0 lr=0x2e608001022129a0 sp=0x0000000171189870 -pc=0x00000001022129d4 cpsr=0x0000000060001000 -Top of Stack: (sp=0x0000000171189870) -0x0000000171189870: 0000000000000000 0000000000000000 -0x0000000171189880: 0000000000000000 0000000000000000 -0x0000000171189890: 0000000000000000 0000000000000000 -0x00000001711898a0: 00000006c0053d78 000000012d008200 -0x00000001711898b0: 0000000000000005 0000000000000038 -0x00000001711898c0: 000000000000002f 000000002343f75b -0x00000001711898d0: 0000600000deedf0 0000000000000000 -0x00000001711898e0: 000000013c4d1a80 0000600001b94000 -0x00000001711898f0: 0000000171189950 0000000102212850 -0x0000000171189900: 00000006c0053d78 000060000009f200 -0x0000000171189910: 0000600001180230 0000000000000000 -0x0000000171189920: 000000013c4d1a80 0000000000000006 -0x0000000171189930: 0000600001b94000 000000013c4d1a80 -0x0000000171189940: 0000000171189a7c 000000017118999c -0x0000000171189950: 0000000171189980 00000001022131ec -0x0000000171189960: 0000000171189a7c 000000013c4d1a80 -0x0000000171189970: 0000600002e80040 0000000000000000 -0x0000000171189980: 0000000171189a60 000000010343b04c -0x0000000171189990: 0000000000000000 0000000000000000 -0x00000001711899a0: 000000012881b000 62053b8cfefe00ff -0x00000001711899b0: 000000013c01e190 0000000000000100 -0x00000001711899c0: 00000001711899e0 334280010376ceb0 -0x00000001711899d0: 0000000103885415 0000000000000100 -0x00000001711899e0: 0000000171189a00 000000010361cea8 -0x00000001711899f0: 0000000103885415 0000000171189a80 -0x0000000171189a00: 0000000171189a50 00000001037ce588 -0x0000000171189a10: 0000000000000000 0000000800000001 -0x0000000171189a20: 00000000632ac433 62053b8cfefe00ff -0x0000000171189a30: 000000013c4d1a80 0000000000000006 -0x0000000171189a40: 0000600001b98480 000000012881b000 -0x0000000171189a50: 000000012881b000 0000600002e80040 -0x0000000171189a60: 0000000171189aa0 000000010343b1f8 - -Instructions: (pc=0x00000001022129d4) -0x00000001022128d4: e0 01 00 54 15 00 80 52 98 6a 39 78 39 07 00 91 -0x00000001022128e4: e8 6a 1b 53 08 01 17 4b 17 bd 00 11 68 42 40 f9 -0x00000001022128f4: 69 8a 40 b9 ea 0a c9 1a 49 dd 09 1b 08 49 29 8b -0x0000000102212904: bc ff ff 17 7f 4e 00 f9 02 00 00 14 16 00 80 d2 -0x0000000102212914: 60 2a 40 f9 38 03 00 94 e0 03 16 aa fd 7b 45 a9 -0x0000000102212924: f4 4f 44 a9 f6 57 43 a9 f8 5f 42 a9 fa 67 41 a9 -0x0000000102212934: fc 6f c6 a8 c0 03 5f d6 3f 00 03 6b e1 00 00 54 -0x0000000102212944: 21 04 00 71 eb 00 00 54 08 14 40 38 49 14 40 38 -0x0000000102212954: 1f 01 09 6b 60 ff ff 54 00 00 80 52 c0 03 5f d6 -0x0000000102212964: 20 00 80 52 c0 03 5f d6 ff 43 02 d1 fc 6f 03 a9 -0x0000000102212974: fa 67 04 a9 f8 5f 05 a9 f6 57 06 a9 f4 4f 07 a9 -0x0000000102212984: fd 7b 08 a9 fd 03 02 91 f4 03 02 aa f6 03 01 aa -0x0000000102212994: f5 03 00 aa 00 09 80 52 5f 03 00 94 f3 03 00 aa -0x00000001022129a4: e0 12 00 b4 7f 02 00 f9 fb 03 13 aa 7f 8f 02 f8 -0x00000001022129b4: 7f 1a 00 f9 a8 c2 40 39 88 02 00 34 a8 0e 40 f9 -0x00000001022129c4: c9 06 40 f9 08 01 09 8b a9 16 40 f9 16 01 09 cb -0x00000001022129d4: d8 3a 40 79 da 7a 40 39 dc 7e 40 39 c8 42 40 79 -0x00000001022129e4: e8 17 00 f9 c8 0e 40 b9 68 06 00 f9 c8 1a 40 b9 -0x00000001022129f4: e8 0f 00 f9 68 0a 00 f9 c8 16 40 79 88 04 00 34 -0x0000000102212a04: c8 16 40 b9 23 00 00 14 d7 06 40 f9 14 0d 00 34 -0x0000000102212a14: a8 1e 40 f9 88 02 00 b4 a9 22 40 f9 3f 01 17 eb -0x0000000102212a24: 2c 02 00 54 4a fa 83 52 2a 01 0a 8b 5f 01 17 eb -0x0000000102212a34: ab 01 00 54 2a 09 40 91 08 01 17 8b 16 01 09 cb -0x0000000102212a44: c8 3a 40 79 c9 3e 40 79 cb 42 40 79 e8 02 08 8b -0x0000000102212a54: 08 01 09 8b 08 01 0b 8b 08 b9 00 91 1f 01 0a eb -0x0000000102212a64: 0d 0b 00 54 e0 03 15 aa e1 03 17 aa 02 00 84 52 -0x0000000102212a74: 7c 02 00 94 f6 03 00 aa 60 0a 00 b4 a0 1e 40 f9 -0x0000000102212a84: 0a 03 00 94 b6 de 03 a9 d2 ff ff 17 08 00 80 d2 -0x0000000102212a94: f7 03 08 aa 68 0e 00 f9 c8 12 40 b9 68 22 00 b9 -0x0000000102212aa4: c9 a2 42 b8 a8 5e 40 f9 e9 0b 00 f9 08 01 09 8b -0x0000000102212ab4: e8 03 08 cb 68 1e 00 f9 c8 12 40 79 68 42 00 b9 -0x0000000102212ac4: 00 07 00 91 14 03 00 94 f9 03 00 aa 60 02 00 f9 - - -Register to memory mapping: - - x0=0x0000600000d1fbb0 is an unknown value - x1=0x0000000000000000 is an unknown value - x2=0x0000000000000000 is an unknown value - x3=0x0000600000d1fbc0 is an unknown value - x4=0x0000600000d1fc00 is an unknown value - x5=0x0000000000003bb0 is an unknown value - x6=0x7373616c632e726f is an unknown value - x7=0x000000012881b000 is a thread - x8=0x00000001022a0d80: index2jdwp+0x13f90 in /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libjdwp.dylib at 0x000000010225c000 - x9=0x00000000000f8000 is an unknown value -x10=0x0000f44901c90000 is an unknown value -x11=0x0000000000000050 is an unknown value -x12=0x0000600002c9c734 is an unknown value -x13=0x00000000001ff800 is an unknown value -x14=0x00000000000007fb is an unknown value -x15=0x00000000970068c0 is an unknown value -x16=0x00000001842cae70: __bzero+0 in /usr/lib/system/libsystem_platform.dylib at 0x00000001842c7000 -x17=0x00000001f648a348 is an unknown value -x18=0x00000007725c61e6 is an unknown value -x19=0x0000600000d1fbb0 is an unknown value -x20=0x0000000000000000 is an unknown value -x21=0x0000600001b94000 is an unknown value -x22=0x00000001021a8d80 is an unknown value -x23=0x000000002343f75b is an unknown value -x24=0x000000000000002f is an unknown value -x25=0x0000000000000038 is an unknown value -x26=0x0000000000000005 is an unknown value -x27=0x0000600000d1fbd8 is an unknown value -x28=0x00000006c0053d78 is an oop -[I - - klass: {type array int} - - length: 0 - - -Stack: [0x0000000170f8c000,0x000000017118f000], sp=0x0000000171189870, free space=2038k -Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) -C [libzip.dylib+0x69d4] newEntry+0x68 -C [libzip.dylib+0x6850] ZIP_GetEntry2+0xec -C [libzip.dylib+0x71ec] ZIP_FindEntry+0x3c -V [libjvm.dylib+0x12b04c] ClassPathZipEntry::open_entry(char const*, int*, bool, Thread*)+0x70 -V [libjvm.dylib+0x12b1f8] ClassPathZipEntry::open_stream(char const*, Thread*)+0x28 -V [libjvm.dylib+0x12d568] ClassLoader::load_classfile(Symbol*, Thread*)+0x130 -V [libjvm.dylib+0x4ffcf4] SystemDictionary::load_instance_class(Symbol*, Handle, Thread*)+0x1f0 -V [libjvm.dylib+0x4fef3c] SystemDictionary::resolve_instance_class_or_null(Symbol*, Handle, Handle, Thread*)+0x400 -V [libjvm.dylib+0x4fe748] SystemDictionary::resolve_or_fail(Symbol*, Handle, Handle, bool, Thread*)+0x24 -V [libjvm.dylib+0x183b7c] ConstantPool::klass_at_impl(constantPoolHandle, int, Thread*)+0x28c -V [libjvm.dylib+0x4bc610] ConstantPool::klass_at(int, Thread*)+0x98 -V [libjvm.dylib+0x2822c4] InterpreterRuntime::_new(JavaThread*, ConstantPool*, int)+0x60 -j org.jetbrains.capture.org.objectweb.asm.SymbolTable.(Lorg/jetbrains/capture/org/objectweb/asm/ClassWriter;Lorg/jetbrains/capture/org/objectweb/asm/ClassReader;)V+46 -j org.jetbrains.capture.org.objectweb.asm.ClassWriter.(Lorg/jetbrains/capture/org/objectweb/asm/ClassReader;I)V+28 -j com.intellij.rt.debugger.agent.CaptureAgent$CaptureTransformer.transform(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/security/ProtectionDomain;[B)[B+57 -J 5 C1 sun.instrument.TransformerManager.transform(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/security/ProtectionDomain;[B)[B (98 bytes) @ 0x00000001041b0eb0 [0x00000001041b0dc0+0xf0] -J 4 C1 sun.instrument.InstrumentationImpl.transform(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/security/ProtectionDomain;[BZ)[B (38 bytes) @ 0x00000001041aeea8 [0x00000001041aedc0+0xe8] -v ~StubRoutines::call_stub -V [libjvm.dylib+0x28c4dc] JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x764 -V [libjvm.dylib+0x2b83a4] jni_invoke_nonstatic(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*)+0x46c -V [libjvm.dylib+0x2b9e18] jni_CallObjectMethod+0x1bc -C [libinstrument.dylib+0xad74] transformClassFile+0x1e8 -C [libinstrument.dylib+0x9c18] eventHandlerClassFileLoadHook+0x88 -V [libjvm.dylib+0x36bf60] JvmtiClassFileLoadHookPoster::post_to_env(JvmtiEnv*, bool)+0xa8 -V [libjvm.dylib+0x36be00] JvmtiClassFileLoadHookPoster::post_all_envs()+0x114 -V [libjvm.dylib+0x3636a4] JvmtiExport::post_class_file_load_hook(Symbol*, Handle, Handle, unsigned char**, unsigned char**, JvmtiCachedClassFileData**)+0x88 -V [libjvm.dylib+0x1277fc] ClassFileParser::parseClassFile(Symbol*, ClassLoaderData*, Handle, KlassHandle, GrowableArray*, TempNewSymbol&, bool, Thread*)+0x1e4 -V [libjvm.dylib+0x12d600] ClassLoader::load_classfile(Symbol*, Thread*)+0x1c8 -V [libjvm.dylib+0x4ffcf4] SystemDictionary::load_instance_class(Symbol*, Handle, Thread*)+0x1f0 -V [libjvm.dylib+0x4fef3c] SystemDictionary::resolve_instance_class_or_null(Symbol*, Handle, Handle, Thread*)+0x400 -V [libjvm.dylib+0x4ff428] SystemDictionary::resolve_super_or_fail(Symbol*, Symbol*, Handle, Handle, bool, Thread*)+0x198 -V [libjvm.dylib+0x128170] ClassFileParser::parseClassFile(Symbol*, ClassLoaderData*, Handle, KlassHandle, GrowableArray*, TempNewSymbol&, bool, Thread*)+0xb58 -V [libjvm.dylib+0x12d600] ClassLoader::load_classfile(Symbol*, Thread*)+0x1c8 -V [libjvm.dylib+0x4ffcf4] SystemDictionary::load_instance_class(Symbol*, Handle, Thread*)+0x1f0 -V [libjvm.dylib+0x4fef3c] SystemDictionary::resolve_instance_class_or_null(Symbol*, Handle, Handle, Thread*)+0x400 -V [libjvm.dylib+0x4fe748] SystemDictionary::resolve_or_fail(Symbol*, Handle, Handle, bool, Thread*)+0x24 -V [libjvm.dylib+0x183b7c] ConstantPool::klass_at_impl(constantPoolHandle, int, Thread*)+0x28c -V [libjvm.dylib+0x4bc610] ConstantPool::klass_at(int, Thread*)+0x98 -V [libjvm.dylib+0x2822c4] InterpreterRuntime::_new(JavaThread*, ConstantPool*, int)+0x60 -j java.util.concurrent.ScheduledThreadPoolExecutor.scheduleWithFixedDelay(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;+32 -j sun.rmi.transport.DGCImpl.dirty([Ljava/rmi/server/ObjID;JLjava/rmi/dgc/Lease;)Ljava/rmi/dgc/Lease;+225 -j sun.rmi.transport.DGCImpl_Skel.dispatch(Ljava/rmi/Remote;Ljava/rmi/server/RemoteCall;IJ)V+274 -j sun.rmi.server.UnicastServerRef.oldDispatch(Ljava/rmi/Remote;Ljava/rmi/server/RemoteCall;I)V+137 -j sun.rmi.server.UnicastServerRef.dispatch(Ljava/rmi/Remote;Ljava/rmi/server/RemoteCall;)V+44 -j sun.rmi.transport.Transport$1.run()Ljava/lang/Void;+23 -j sun.rmi.transport.Transport$1.run()Ljava/lang/Object;+1 -v ~StubRoutines::call_stub -V [libjvm.dylib+0x28c4dc] JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x764 -V [libjvm.dylib+0x300bb0] JVM_DoPrivileged+0x744 -J 519 java.security.AccessController.doPrivileged(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object; (0 bytes) @ 0x00000001042707d8 [0x0000000104270740+0x98] -C 0x00000006c0020cc0 - -Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) -j org.jetbrains.capture.org.objectweb.asm.SymbolTable.(Lorg/jetbrains/capture/org/objectweb/asm/ClassWriter;Lorg/jetbrains/capture/org/objectweb/asm/ClassReader;)V+46 -j org.jetbrains.capture.org.objectweb.asm.ClassWriter.(Lorg/jetbrains/capture/org/objectweb/asm/ClassReader;I)V+28 -j com.intellij.rt.debugger.agent.CaptureAgent$CaptureTransformer.transform(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/security/ProtectionDomain;[B)[B+57 -J 5 C1 sun.instrument.TransformerManager.transform(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/security/ProtectionDomain;[B)[B (98 bytes) @ 0x00000001041b0eb0 [0x00000001041b0dc0+0xf0] -J 4 C1 sun.instrument.InstrumentationImpl.transform(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/security/ProtectionDomain;[BZ)[B (38 bytes) @ 0x00000001041aeea8 [0x00000001041aedc0+0xe8] -v ~StubRoutines::call_stub -j java.util.concurrent.ScheduledThreadPoolExecutor.scheduleWithFixedDelay(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;+32 -j sun.rmi.transport.DGCImpl.dirty([Ljava/rmi/server/ObjID;JLjava/rmi/dgc/Lease;)Ljava/rmi/dgc/Lease;+225 -j sun.rmi.transport.DGCImpl_Skel.dispatch(Ljava/rmi/Remote;Ljava/rmi/server/RemoteCall;IJ)V+274 -j sun.rmi.server.UnicastServerRef.oldDispatch(Ljava/rmi/Remote;Ljava/rmi/server/RemoteCall;I)V+137 -j sun.rmi.server.UnicastServerRef.dispatch(Ljava/rmi/Remote;Ljava/rmi/server/RemoteCall;)V+44 -j sun.rmi.transport.Transport$1.run()Ljava/lang/Void;+23 -j sun.rmi.transport.Transport$1.run()Ljava/lang/Object;+1 -v ~StubRoutines::call_stub -J 519 java.security.AccessController.doPrivileged(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object; (0 bytes) @ 0x000000010427079c [0x0000000104270740+0x5c] -j sun.rmi.transport.Transport.serviceCall(Ljava/rmi/server/RemoteCall;)Z+157 -j sun.rmi.transport.tcp.TCPTransport.handleMessages(Lsun/rmi/transport/Connection;Z)V+185 -j sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0()V+696 -j sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0()Ljava/lang/Void;+1 -j sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$142.run()Ljava/lang/Object;+4 -v ~StubRoutines::call_stub -J 1222 java.security.AccessController.doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object; (0 bytes) @ 0x000000010437bbdc [0x000000010437bb80+0x5c] -j sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()V+58 -j java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V+95 -j java.util.concurrent.ThreadPoolExecutor$Worker.run()V+5 -j java.lang.Thread.run()V+11 -v ~StubRoutines::call_stub - ---------------- P R O C E S S --------------- - -Java Threads: ( => current thread ) -=>0x000000012881b000 JavaThread "RMI TCP Connection(1)-192.168.0.104" daemon [_thread_in_native, id=31491, stack(0x0000000170f8c000,0x000000017118f000)] - 0x000000012800d800 JavaThread "Attach Listener" daemon [_thread_blocked, id=32007, stack(0x0000000170d80000,0x0000000170f83000)] - 0x000000013ca69000 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=22787, stack(0x0000000170968000,0x0000000170b6b000)] - 0x000000013c3a9000 JavaThread "Service Thread" daemon [_thread_blocked, id=22275, stack(0x000000017075c000,0x000000017095f000)] - 0x000000012d308800 JavaThread "C1 CompilerThread3" daemon [_thread_blocked, id=21763, stack(0x0000000170550000,0x0000000170753000)] - 0x000000013c97d800 JavaThread "C2 CompilerThread2" daemon [_thread_blocked, id=18435, stack(0x0000000170344000,0x0000000170547000)] - 0x000000013c99b000 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=17667, stack(0x0000000170138000,0x000000017033b000)] - 0x000000013c3c0800 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=21255, stack(0x000000016ff2c000,0x000000017012f000)] - 0x000000013c82f800 JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=17411, stack(0x000000016fd20000,0x000000016ff23000)] - 0x000000013c82f000 JavaThread "JDWP Event Helper Thread" daemon [_thread_blocked, id=19459, stack(0x000000016fb14000,0x000000016fd17000)] - 0x000000013c829800 JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_blocked, id=19715, stack(0x000000016f908000,0x000000016fb0b000)] - 0x000000013c06a800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=19971, stack(0x000000016f6fc000,0x000000016f8ff000)] - 0x000000013c069800 JavaThread "Finalizer" daemon [_thread_blocked, id=13315, stack(0x000000016f3d8000,0x000000016f5db000)] - 0x000000013c067000 JavaThread "Reference Handler" daemon [_thread_blocked, id=14851, stack(0x000000016f1cc000,0x000000016f3cf000)] - 0x000000013c808800 JavaThread "main" [_thread_in_native, id=4355, stack(0x000000016dd54000,0x000000016df57000)] - -Other Threads: - 0x000000013c060000 VMThread [stack: 0x000000016efc0000,0x000000016f1c3000] [id=15107] - 0x000000012c1af800 WatcherThread [stack: 0x0000000170b74000,0x0000000170d77000] [id=32515] - -VM state:not at safepoint (normal execution) - -VM Mutex/Monitor currently owned by a thread: None - -heap address: 0x00000006c0000000, size: 4096 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 -Narrow klass base: 0x0000000800000000, Narrow klass shift: 0 -Compressed class space size: 1073741824 Address: 0x0000000800000000 - -Heap: - PSYoungGen total 271360K, used 24093K [0x000000076ab00000, 0x000000077d100000, 0x00000007c0000000) - eden space 257024K, 3% used [0x000000076ab00000,0x000000076b48a118,0x000000077a600000) - from space 14336K, 99% used [0x000000077b900000,0x000000077c6fd6c0,0x000000077c700000) - to space 19456K, 0% used [0x000000077a600000,0x000000077a600000,0x000000077b900000) - ParOldGen total 73728K, used 16785K [0x00000006c0000000, 0x00000006c4800000, 0x000000076ab00000) - object space 73728K, 22% used [0x00000006c0000000,0x00000006c10647b8,0x00000006c4800000) - Metaspace used 23865K, capacity 24642K, committed 24832K, reserved 1071104K - class space used 3096K, capacity 3307K, committed 3328K, reserved 1048576K - -Card table byte_map: [0x0000000102650000,0x0000000102e54000] byte_map_base: 0x00000000ff050000 - -Marking Bits: (ParMarkBitMap*) 0x00000001039d3d20 - Begin Bits: [0x000000010c590000, 0x0000000110590000) - End Bits: [0x0000000110590000, 0x0000000114590000) - -Polling page: 0x0000000102164000 - -CodeCache: size=131072Kb used=5748Kb max_used=5748Kb free=125323Kb - bounds [0x0000000104038000, 0x00000001045d8000, 0x000000010c038000] - total_blobs=2740 nmethods=2345 adapters=319 - compilation: enabled - -Compilation events (10 events): -Event: 362.213 Thread 0x000000012d308800 2340 1 java.util.zip.ZipCoder::getBytes (192 bytes) -Event: 362.214 Thread 0x000000012d308800 nmethod 2340 0x00000001045d0150 code [0x00000001045d0400, 0x00000001045d1110] -Event: 362.214 Thread 0x000000012d308800 2341 ! 1 java.lang.StringCoding$StringEncoder::encode (179 bytes) -Event: 362.215 Thread 0x000000012d308800 nmethod 2341 0x00000001045d1e50 code [0x00000001045d20c0, 0x00000001045d2be0] -Event: 362.215 Thread 0x000000012d308800 2338 1 java.lang.invoke.MemberName::access$002 (7 bytes) -Event: 362.215 Thread 0x000000012d308800 nmethod 2338 0x00000001045d37d0 code [0x00000001045d3900, 0x00000001045d3990] -Event: 362.215 Thread 0x000000012d308800 2342 1 java.lang.reflect.AccessibleObject::setAccessible0 (42 bytes) -Event: 362.215 Thread 0x000000012d308800 nmethod 2342 0x00000001045d3a10 code [0x00000001045d3b80, 0x00000001045d3d28] -Event: 362.215 Thread 0x000000012d308800 2343 1 java.lang.reflect.AccessibleObject::setAccessible (21 bytes) -Event: 362.215 Thread 0x000000012d308800 nmethod 2343 0x00000001045d3e90 code [0x00000001045d4000, 0x00000001045d4148] - -GC Heap History (10 events): -Event: 361.632 GC heap before -{Heap before GC invocations=3 (full 0): - PSYoungGen total 76288K, used 40019K [0x000000076ab00000, 0x0000000774000000, 0x00000007c0000000) - eden space 65536K, 47% used [0x000000076ab00000,0x000000076c994010,0x000000076eb00000) - from space 10752K, 80% used [0x000000076f580000,0x000000076fe00fe8,0x0000000770000000) - to space 10752K, 0% used [0x000000076eb00000,0x000000076eb00000,0x000000076f580000) - ParOldGen total 175104K, used 88K [0x00000006c0000000, 0x00000006cab00000, 0x000000076ab00000) - object space 175104K, 0% used [0x00000006c0000000,0x00000006c0016010,0x00000006cab00000) - Metaspace used 20624K, capacity 21204K, committed 21296K, reserved 1067008K - class space used 2711K, capacity 2870K, committed 2944K, reserved 1048576K -Event: 361.637 GC heap after -Heap after GC invocations=3 (full 0): - PSYoungGen total 76288K, used 7645K [0x000000076ab00000, 0x0000000774000000, 0x00000007c0000000) - eden space 65536K, 0% used [0x000000076ab00000,0x000000076ab00000,0x000000076eb00000) - from space 10752K, 71% used [0x000000076eb00000,0x000000076f2775e8,0x000000076f580000) - to space 10752K, 0% used [0x0000000773580000,0x0000000773580000,0x0000000774000000) - ParOldGen total 175104K, used 96K [0x00000006c0000000, 0x00000006cab00000, 0x000000076ab00000) - object space 175104K, 0% used [0x00000006c0000000,0x00000006c0018010,0x00000006cab00000) - Metaspace used 20624K, capacity 21204K, committed 21296K, reserved 1067008K - class space used 2711K, capacity 2870K, committed 2944K, reserved 1048576K -} -Event: 361.637 GC heap before -{Heap before GC invocations=4 (full 1): - PSYoungGen total 76288K, used 7645K [0x000000076ab00000, 0x0000000774000000, 0x00000007c0000000) - eden space 65536K, 0% used [0x000000076ab00000,0x000000076ab00000,0x000000076eb00000) - from space 10752K, 71% used [0x000000076eb00000,0x000000076f2775e8,0x000000076f580000) - to space 10752K, 0% used [0x0000000773580000,0x0000000773580000,0x0000000774000000) - ParOldGen total 175104K, used 96K [0x00000006c0000000, 0x00000006cab00000, 0x000000076ab00000) - object space 175104K, 0% used [0x00000006c0000000,0x00000006c0018010,0x00000006cab00000) - Metaspace used 20624K, capacity 21204K, committed 21296K, reserved 1067008K - class space used 2711K, capacity 2870K, committed 2944K, reserved 1048576K -Event: 361.655 GC heap after -Heap after GC invocations=4 (full 1): - PSYoungGen total 76288K, used 0K [0x000000076ab00000, 0x0000000774000000, 0x00000007c0000000) - eden space 65536K, 0% used [0x000000076ab00000,0x000000076ab00000,0x000000076eb00000) - from space 10752K, 0% used [0x000000076eb00000,0x000000076eb00000,0x000000076f580000) - to space 10752K, 0% used [0x0000000773580000,0x0000000773580000,0x0000000774000000) - ParOldGen total 73728K, used 7381K [0x00000006c0000000, 0x00000006c4800000, 0x000000076ab00000) - object space 73728K, 10% used [0x00000006c0000000,0x00000006c0735778,0x00000006c4800000) - Metaspace used 20624K, capacity 21204K, committed 21296K, reserved 1067008K - class space used 2711K, capacity 2870K, committed 2944K, reserved 1048576K -} -Event: 361.740 GC heap before -{Heap before GC invocations=5 (full 1): - PSYoungGen total 76288K, used 65536K [0x000000076ab00000, 0x0000000774000000, 0x00000007c0000000) - eden space 65536K, 100% used [0x000000076ab00000,0x000000076eb00000,0x000000076eb00000) - from space 10752K, 0% used [0x000000076eb00000,0x000000076eb00000,0x000000076f580000) - to space 10752K, 0% used [0x0000000773580000,0x0000000773580000,0x0000000774000000) - ParOldGen total 73728K, used 7381K [0x00000006c0000000, 0x00000006c4800000, 0x000000076ab00000) - object space 73728K, 10% used [0x00000006c0000000,0x00000006c0735778,0x00000006c4800000) - Metaspace used 22432K, capacity 23072K, committed 23424K, reserved 1069056K - class space used 2930K, capacity 3092K, committed 3200K, reserved 1048576K -Event: 361.745 GC heap after -Heap after GC invocations=5 (full 1): - PSYoungGen total 141824K, used 5971K [0x000000076ab00000, 0x0000000774000000, 0x00000007c0000000) - eden space 131072K, 0% used [0x000000076ab00000,0x000000076ab00000,0x0000000772b00000) - from space 10752K, 55% used [0x0000000773580000,0x0000000773b54e18,0x0000000774000000) - to space 10752K, 0% used [0x0000000772b00000,0x0000000772b00000,0x0000000773580000) - ParOldGen total 73728K, used 7389K [0x00000006c0000000, 0x00000006c4800000, 0x000000076ab00000) - object space 73728K, 10% used [0x00000006c0000000,0x00000006c0737778,0x00000006c4800000) - Metaspace used 22432K, capacity 23072K, committed 23424K, reserved 1069056K - class space used 2930K, capacity 3092K, committed 3200K, reserved 1048576K -} -Event: 361.842 GC heap before -{Heap before GC invocations=6 (full 1): - PSYoungGen total 141824K, used 136873K [0x000000076ab00000, 0x0000000774000000, 0x00000007c0000000) - eden space 131072K, 99% used [0x000000076ab00000,0x0000000772ad55e8,0x0000000772b00000) - from space 10752K, 55% used [0x0000000773580000,0x0000000773b54e18,0x0000000774000000) - to space 10752K, 0% used [0x0000000772b00000,0x0000000772b00000,0x0000000773580000) - ParOldGen total 73728K, used 7389K [0x00000006c0000000, 0x00000006c4800000, 0x000000076ab00000) - object space 73728K, 10% used [0x00000006c0000000,0x00000006c0737778,0x00000006c4800000) - Metaspace used 22647K, capacity 23256K, committed 23424K, reserved 1069056K - class space used 2952K, capacity 3112K, committed 3200K, reserved 1048576K -Event: 361.850 GC heap after -Heap after GC invocations=6 (full 1): - PSYoungGen total 141824K, used 10729K [0x000000076ab00000, 0x000000077c700000, 0x00000007c0000000) - eden space 131072K, 0% used [0x000000076ab00000,0x000000076ab00000,0x0000000772b00000) - from space 10752K, 99% used [0x0000000772b00000,0x000000077357a718,0x0000000773580000) - to space 14336K, 0% used [0x000000077b900000,0x000000077b900000,0x000000077c700000) - ParOldGen total 73728K, used 11731K [0x00000006c0000000, 0x00000006c4800000, 0x000000076ab00000) - object space 73728K, 15% used [0x00000006c0000000,0x00000006c0b74f18,0x00000006c4800000) - Metaspace used 22647K, capacity 23256K, committed 23424K, reserved 1069056K - class space used 2952K, capacity 3112K, committed 3200K, reserved 1048576K -} -Event: 362.217 GC heap before -{Heap before GC invocations=7 (full 1): - PSYoungGen total 141824K, used 141801K [0x000000076ab00000, 0x000000077c700000, 0x00000007c0000000) - eden space 131072K, 100% used [0x000000076ab00000,0x0000000772b00000,0x0000000772b00000) - from space 10752K, 99% used [0x0000000772b00000,0x000000077357a718,0x0000000773580000) - to space 14336K, 0% used [0x000000077b900000,0x000000077b900000,0x000000077c700000) - ParOldGen total 73728K, used 11731K [0x00000006c0000000, 0x00000006c4800000, 0x000000076ab00000) - object space 73728K, 15% used [0x00000006c0000000,0x00000006c0b74f18,0x00000006c4800000) - Metaspace used 23865K, capacity 24642K, committed 24832K, reserved 1071104K - class space used 3096K, capacity 3307K, committed 3328K, reserved 1048576K -Event: 362.231 GC heap after -Heap after GC invocations=7 (full 1): - PSYoungGen total 271360K, used 14325K [0x000000076ab00000, 0x000000077d100000, 0x00000007c0000000) - eden space 257024K, 0% used [0x000000076ab00000,0x000000076ab00000,0x000000077a600000) - from space 14336K, 99% used [0x000000077b900000,0x000000077c6fd6c0,0x000000077c700000) - to space 19456K, 0% used [0x000000077a600000,0x000000077a600000,0x000000077b900000) - ParOldGen total 73728K, used 16785K [0x00000006c0000000, 0x00000006c4800000, 0x000000076ab00000) - object space 73728K, 22% used [0x00000006c0000000,0x00000006c10647b8,0x00000006c4800000) - Metaspace used 23865K, capacity 24642K, committed 24832K, reserved 1071104K - class space used 3096K, capacity 3307K, committed 3328K, reserved 1048576K -} - -Deoptimization events (0 events): -No events - -Classes redefined (0 events): -No events - -Internal exceptions (10 events): -Event: 361.442 Thread 0x000000013c808800 Exception (0x000000076b9ee748) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/893/hotspot/src/share/vm/interpreter/linkResolve -Event: 361.482 Thread 0x000000013c808800 Exception (0x000000076c93cf90) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/893/hotspot/src/share/v -Event: 361.622 Thread 0x000000013c808800 Exception (0x000000076c37a0c0) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/893/hotspot/src/share/vm/classfile/systemDictionary.cp -Event: 361.625 Thread 0x000000013c808800 Exception (0x000000076c4a0420) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/ -Event: 361.627 Thread 0x000000013c808800 Exception (0x000000076c56d4f0) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jd -Event: 361.628 Thread 0x000000013c808800 Exception (0x000000076c65b528) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/893/hotspot/src/share/vm/class -Event: 361.628 Thread 0x000000013c808800 Exception (0x000000076c68be48) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/893/hotspot/src/share/v -Event: 361.629 Thread 0x000000013c808800 Exception (0x000000076c6c2638) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/893/hotspot/src/ -Event: 361.629 Thread 0x000000013c808800 Exception (0x000000076c6f2380) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/893/hotspot/src/share/vm/c -Event: 361.717 Thread 0x000000013c536000 Exception (0x000000076cce9ad8) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/893/hotspot/src/sh - -Events (10 events): -Event: 362.216 loading class org/jetbrains/capture/org/objectweb/asm/Label done -Event: 362.216 loading class org/jetbrains/capture/org/objectweb/asm/ClassWriter -Event: 362.217 loading class org/jetbrains/capture/org/objectweb/asm/ClassVisitor -Event: 362.217 loading class org/jetbrains/capture/org/objectweb/asm/ClassVisitor done -Event: 362.217 loading class org/jetbrains/capture/org/objectweb/asm/ClassWriter done -Event: 362.217 loading class org/jetbrains/capture/org/objectweb/asm/SymbolTable -Event: 362.217 loading class org/jetbrains/capture/org/objectweb/asm/SymbolTable done -Event: 362.217 Executing VM operation: ParallelGCFailedAllocation -Event: 362.231 Executing VM operation: ParallelGCFailedAllocation done -Event: 362.234 loading class org/jetbrains/capture/org/objectweb/asm/ByteVector - - -Dynamic libraries: -0x000000019e5f7000 /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa -0x0000000187b9e000 /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit -0x000000018ac0a000 /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData -0x0000000185451000 /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation -0x0000000190f18000 /usr/lib/libSystem.B.dylib -0x0000000188edb000 /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation -0x000000021fabb000 /System/Library/PrivateFrameworks/CollectionViewCore.framework/Versions/A/CollectionViewCore -0x0000000198191000 /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices -0x000000018edc5000 /System/Library/PrivateFrameworks/XCTTargetBootstrap.framework/Versions/A/XCTTargetBootstrap -0x0000000193554000 /System/Library/PrivateFrameworks/InternationalSupport.framework/Versions/A/InternationalSupport -0x00000001935a8000 /System/Library/PrivateFrameworks/UserActivity.framework/Versions/A/UserActivity -0x0000000243f12000 /System/Library/PrivateFrameworks/WindowManagement.framework/Versions/A/WindowManagement -0x00000001850d1000 /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration -0x00000001929c2000 /usr/lib/libspindump.dylib -0x0000000189090000 /System/Library/Frameworks/UniformTypeIdentifiers.framework/Versions/A/UniformTypeIdentifiers -0x000000018cc3c000 /usr/lib/libapp_launch_measurement.dylib -0x000000018c062000 /System/Library/PrivateFrameworks/CoreAnalytics.framework/Versions/A/CoreAnalytics -0x000000018cc43000 /System/Library/PrivateFrameworks/CoreAutoLayout.framework/Versions/A/CoreAutoLayout -0x000000018e5e5000 /System/Library/Frameworks/Metal.framework/Versions/A/Metal -0x000000018f56d000 /usr/lib/liblangid.dylib -0x000000018edcb000 /System/Library/PrivateFrameworks/CoreSVG.framework/Versions/A/CoreSVG -0x0000000189a55000 /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight -0x0000000189ef6000 /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics -0x000000019886b000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate -0x000000019281c000 /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices -0x000000018e5c3000 /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface -0x000000018c091000 /usr/lib/libDiagnosticMessagesClient.dylib -0x0000000190e5a000 /usr/lib/libz.1.dylib -0x000000019c010000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices -0x000000018edad000 /System/Library/PrivateFrameworks/DFRFoundation.framework/Versions/A/DFRFoundation -0x00000001873f8000 /usr/lib/libicucore.A.dylib -0x00000001945b2000 /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox -0x0000000193563000 /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore -0x00000001acfd6000 /System/Library/PrivateFrameworks/TextInput.framework/Versions/A/TextInput -0x00000001899a6000 /usr/lib/libMobileGestalt.dylib -0x000000018eae9000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox -0x000000018c568000 /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore -0x0000000187025000 /System/Library/Frameworks/Security.framework/Versions/A/Security -0x00000001981d1000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition -0x000000018c96a000 /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI -0x000000018691e000 /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio -0x000000018c175000 /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration -0x0000000192e1e000 /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport -0x00000001899a4000 /usr/lib/libenergytrace.dylib -0x00000001a26cf000 /System/Library/PrivateFrameworks/RenderBox.framework/Versions/A/RenderBox -0x0000000187a52000 /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit -0x00000001985a6000 /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices -0x000000018cbc8000 /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis -0x00000001daf7b000 /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL -0x000000018cc8d000 /usr/lib/libxml2.2.dylib -0x000000019029c000 /System/Library/PrivateFrameworks/MobileKeyBag.framework/Versions/A/MobileKeyBag -0x0000000183ebc000 /usr/lib/libobjc.A.dylib -0x00000001841b0000 /usr/lib/libc++.1.dylib -0x0000000198523000 /System/Library/Frameworks/Accessibility.framework/Versions/A/Accessibility -0x000000018a5d6000 /System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync -0x00000001842fc000 /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation -0x000000018f128000 /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage -0x0000000186729000 /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText -0x00000001df7da000 /System/Library/Frameworks/CoreTransferable.framework/Versions/A/CoreTransferable -0x00000001dfc9f000 /System/Library/Frameworks/DeveloperToolsSupport.framework/Versions/A/DeveloperToolsSupport -0x000000018ee06000 /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO -0x0000000219c5b000 /System/Library/Frameworks/Symbols.framework/Versions/A/Symbols -0x0000000190f1e000 /System/Library/PrivateFrameworks/SoftLinking.framework/Versions/A/SoftLinking -0x0000000193f64000 /usr/lib/swift/libswiftCore.dylib -0x00000001a9c63000 /usr/lib/swift/libswiftCoreFoundation.dylib -0x00000001a76cc000 /usr/lib/swift/libswiftCoreGraphics.dylib -0x00000001a9cad000 /usr/lib/swift/libswiftCoreImage.dylib -0x00000001a76d3000 /usr/lib/swift/libswiftDarwin.dylib -0x0000000199c16000 /usr/lib/swift/libswiftDispatch.dylib -0x00000001a9cae000 /usr/lib/swift/libswiftIOKit.dylib -0x00000001b5708000 /usr/lib/swift/libswiftMetal.dylib -0x00000001c2dcd000 /usr/lib/swift/libswiftOSLog.dylib -0x000000019c48b000 /usr/lib/swift/libswiftObjectiveC.dylib -0x00000001b9e3c000 /usr/lib/swift/libswiftQuartzCore.dylib -0x00000001bdf41000 /usr/lib/swift/libswiftUniformTypeIdentifiers.dylib -0x00000001a9c75000 /usr/lib/swift/libswiftXPC.dylib -0x000000024c3b9000 /usr/lib/swift/libswift_Concurrency.dylib -0x000000019c48f000 /usr/lib/swift/libswiftos.dylib -0x00000001acf3a000 /usr/lib/swift/libswiftsimd.dylib -0x00000001910cd000 /usr/lib/libcompression.dylib -0x00000001934ae000 /System/Library/PrivateFrameworks/TextureIO.framework/Versions/A/TextureIO -0x00000001924c8000 /usr/lib/libate.dylib -0x0000000190f12000 /usr/lib/system/libcache.dylib -0x0000000190ecc000 /usr/lib/system/libcommonCrypto.dylib -0x0000000190ef8000 /usr/lib/system/libcompiler_rt.dylib -0x0000000190eee000 /usr/lib/system/libcopyfile.dylib -0x0000000184000000 /usr/lib/system/libcorecrypto.dylib -0x00000001840e6000 /usr/lib/system/libdispatch.dylib -0x00000001842a1000 /usr/lib/system/libdyld.dylib -0x0000000190f08000 /usr/lib/system/libkeymgr.dylib -0x0000000190ea4000 /usr/lib/system/libmacho.dylib -0x0000000190384000 /usr/lib/system/libquarantine.dylib -0x0000000190f05000 /usr/lib/system/libremovefile.dylib -0x0000000189a1c000 /usr/lib/system/libsystem_asl.dylib -0x0000000183f95000 /usr/lib/system/libsystem_blocks.dylib -0x0000000184131000 /usr/lib/system/libsystem_c.dylib -0x0000000190efc000 /usr/lib/system/libsystem_collections.dylib -0x000000018f55c000 /usr/lib/system/libsystem_configuration.dylib -0x000000018e598000 /usr/lib/system/libsystem_containermanager.dylib -0x0000000190b3b000 /usr/lib/system/libsystem_coreservices.dylib -0x00000001876bf000 /usr/lib/system/libsystem_darwin.dylib -0x000000024c706000 /usr/lib/system/libsystem_darwindirectory.dylib -0x0000000190f09000 /usr/lib/system/libsystem_dnssd.dylib -0x000000024c70a000 /usr/lib/system/libsystem_eligibility.dylib -0x000000018412e000 /usr/lib/system/libsystem_featureflags.dylib -0x00000001842cf000 /usr/lib/system/libsystem_info.dylib -0x0000000190e69000 /usr/lib/system/libsystem_m.dylib -0x00000001840a9000 /usr/lib/system/libsystem_malloc.dylib -0x0000000189989000 /usr/lib/system/libsystem_networkextension.dylib -0x0000000187b35000 /usr/lib/system/libsystem_notify.dylib -0x000000018f561000 /usr/lib/system/libsystem_sandbox.dylib -0x000000024c70e000 /usr/lib/system/libsystem_sanitizers.dylib -0x0000000190f01000 /usr/lib/system/libsystem_secinit.dylib -0x0000000184259000 /usr/lib/system/libsystem_kernel.dylib -0x00000001842c7000 /usr/lib/system/libsystem_platform.dylib -0x0000000184294000 /usr/lib/system/libsystem_pthread.dylib -0x000000018b40c000 /usr/lib/system/libsystem_symptoms.dylib -0x0000000183fe5000 /usr/lib/system/libsystem_trace.dylib -0x0000000190eda000 /usr/lib/system/libunwind.dylib -0x0000000183f9a000 /usr/lib/system/libxpc.dylib -0x000000018423d000 /usr/lib/libc++abi.dylib -0x0000000190ee6000 /usr/lib/liboah.dylib -0x0000000192374000 /usr/lib/liblzma.5.dylib -0x0000000190f1a000 /usr/lib/libfakelink.dylib -0x00000001895b5000 /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork -0x0000000190f6e000 /usr/lib/libarchive.2.dylib -0x00000001964a4000 /System/Library/Frameworks/Combine.framework/Versions/A/Combine -0x000000021facf000 /System/Library/PrivateFrameworks/CollectionsInternal.framework/Versions/A/CollectionsInternal -0x000000023647f000 /System/Library/PrivateFrameworks/ReflectionInternal.framework/Versions/A/ReflectionInternal -0x0000000236a11000 /System/Library/PrivateFrameworks/RuntimeInternal.framework/Versions/A/RuntimeInternal -0x000000024c50d000 /usr/lib/swift/libswift_StringProcessing.dylib -0x00000001879d0000 /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal -0x00000001903ab000 /usr/lib/libbsm.0.dylib -0x0000000190eac000 /usr/lib/system/libkxld.dylib -0x000000018cc04000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents -0x00000001876ca000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore -0x000000018c0da000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata -0x0000000190b41000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices -0x0000000190ff7000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit -0x000000018b38d000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE -0x00000001847d5000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices -0x000000019231d000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices -0x000000018cc11000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList -0x0000000191097000 /usr/lib/libapple_nghttp2.dylib -0x000000018b001000 /usr/lib/libsqlite3.dylib -0x000000018b415000 /System/Library/Frameworks/Network.framework/Versions/A/Network -0x000000024adca000 /usr/lib/libCoreEntitlements.dylib -0x0000000231389000 /System/Library/PrivateFrameworks/MessageSecurity.framework/Versions/A/MessageSecurity -0x000000018afe7000 /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer -0x0000000190a6a000 /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression -0x0000000190393000 /usr/lib/libcoretls.dylib -0x0000000192393000 /usr/lib/libcoretls_cfhelpers.dylib -0x00000001910c7000 /usr/lib/libpam.2.dylib -0x0000000192405000 /usr/lib/libxar.1.dylib -0x00000001927f3000 /usr/lib/libheimdal-asn1.dylib -0x00000001895b4000 /usr/lib/libnetwork.dylib -0x0000000190f1f000 /usr/lib/libpcap.A.dylib -0x000000018b401000 /usr/lib/libdns_services.dylib -0x000000018f569000 /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo -0x0000000190091000 /System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/Versions/A/IOMobileFramebuffer -0x000000024c464000 /usr/lib/swift/libswift_RegexParser.dylib -0x0000000190b2e000 /usr/lib/libbz2.1.0.dylib -0x0000000190387000 /usr/lib/libCheckFix.dylib -0x0000000189a34000 /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC -0x000000018f56f000 /System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP -0x000000018c093000 /System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities -0x00000001903bd000 /usr/lib/libmecab.dylib -0x0000000185165000 /usr/lib/libCRFSuite.dylib -0x0000000190419000 /usr/lib/libgermantok.dylib -0x000000019106e000 /usr/lib/libThaiTokenizer.dylib -0x000000018c17e000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage -0x000000019857d000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib -0x000000019244c000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib -0x000000018ff6c000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib -0x0000000184bdc000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib -0x00000001911a2000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib -0x000000019041c000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib -0x00000001910b2000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib -0x000000019119d000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib -0x000000018f698000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib -0x000000018506a000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib -0x000000022fad8000 /System/Library/PrivateFrameworks/MIL.framework/Versions/A/MIL -0x0000000190f55000 /usr/lib/libiconv.2.dylib -0x0000000190ea0000 /usr/lib/libcharset.1.dylib -0x000000018cbe4000 /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory -0x000000018cbd4000 /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory -0x0000000192395000 /System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS -0x00000001902c3000 /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation -0x0000000192414000 /usr/lib/libutil.dylib -0x000000022dc39000 /System/Library/PrivateFrameworks/InstalledContentLibrary.framework/Versions/A/InstalledContentLibrary -0x0000000187a11000 /System/Library/PrivateFrameworks/CoreServicesStore.framework/Versions/A/CoreServicesStore -0x000000021d27c000 /System/Library/PrivateFrameworks/AppleMobileFileIntegrity.framework/Versions/A/AppleMobileFileIntegrity -0x00000001a9c31000 /usr/lib/libmis.dylib -0x00000001ba323000 /System/Library/PrivateFrameworks/MobileSystemServices.framework/Versions/A/MobileSystemServices -0x00000001d8385000 /System/Library/PrivateFrameworks/ConfigProfileHelper.framework/Versions/A/ConfigProfileHelper -0x0000000191070000 /System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce -0x00000001860af000 /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling -0x0000000192418000 /usr/lib/libxslt.1.dylib -0x0000000190f5c000 /usr/lib/libcmph.dylib -0x000000019005d000 /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji -0x000000018f692000 /System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData -0x0000000184f78000 /System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon -0x0000000190351000 /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement -0x000000024afb4000 /usr/lib/libTLE.dylib -0x0000000192ce4000 /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG -0x00000001927d8000 /usr/lib/libexpat.1.dylib -0x000000019330c000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib -0x0000000193337000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib -0x0000000193422000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib -0x0000000192d2a000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib -0x00000001933c7000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib -0x00000001933be000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib -0x000000018e984000 /System/Library/PrivateFrameworks/FontServices.framework/libFontParser.dylib -0x000000018b326000 /System/Library/PrivateFrameworks/RunningBoardServices.framework/Versions/A/RunningBoardServices -0x000000019eed1000 /System/Library/PrivateFrameworks/IOSurfaceAccelerator.framework/Versions/A/IOSurfaceAccelerator -0x0000000192e1a000 /System/Library/PrivateFrameworks/WatchdogClient.framework/Versions/A/WatchdogClient -0x0000000186295000 /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay -0x000000018e83b000 /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia -0x000000018e5db000 /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator -0x000000018cd77000 /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo -0x00000001910c5000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders -0x0000000192e5d000 /System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox -0x000000018ce13000 /System/Library/PrivateFrameworks/UserManagement.framework/Versions/A/UserManagement -0x000000018b24d000 /System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard -0x000000018f567000 /System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary -0x000000021d0b6000 /System/Library/PrivateFrameworks/AppleKeyStore.framework/Versions/A/AppleKeyStore -0x00000001933b9000 /System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler -0x0000000193399000 /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment -0x00000001933c1000 /System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay -0x0000000229cc6000 /System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/libllvm-flatbuffers.dylib -0x00000001daf6e000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib -0x000000022692a000 /System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/libGPUCompilerUtils.dylib -0x0000000193428000 /System/Library/PrivateFrameworks/CMCaptureCore.framework/Versions/A/CMCaptureCore -0x00000001dfdc2000 /System/Library/Frameworks/ExtensionFoundation.framework/Versions/A/ExtensionFoundation -0x000000019a47f000 /System/Library/PrivateFrameworks/CoreTime.framework/Versions/A/CoreTime -0x00000001929ac000 /System/Library/PrivateFrameworks/AppServerSupport.framework/Versions/A/AppServerSupport -0x0000000194f40000 /System/Library/PrivateFrameworks/perfdata.framework/Versions/A/perfdata -0x00000001863b9000 /System/Library/PrivateFrameworks/AudioToolboxCore.framework/Versions/A/AudioToolboxCore -0x000000018e811000 /System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk -0x00000001947ae000 /usr/lib/libAudioStatistics.dylib -0x00000001a8f6a000 /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy -0x0000000194a87000 /usr/lib/libSMC.dylib -0x000000019e479000 /System/Library/Frameworks/CoreMIDI.framework/Versions/A/CoreMIDI -0x00000001932d3000 /usr/lib/libAudioToolboxUtility.dylib -0x00000001a436b000 /System/Library/PrivateFrameworks/OSAServicesClient.framework/Versions/A/OSAServicesClient -0x0000000194f4e000 /usr/lib/libperfcheck.dylib -0x0000000199f36000 /System/Library/PrivateFrameworks/BoardServices.framework/Versions/A/BoardServices -0x00000001926c0000 /System/Library/PrivateFrameworks/PlugInKit.framework/Versions/A/PlugInKit -0x00000001902b5000 /System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices -0x000000019d58a000 /System/Library/PrivateFrameworks/ASEProcessing.framework/Versions/A/ASEProcessing -0x00000001c6254000 /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication -0x000000023526c000 /System/Library/PrivateFrameworks/PhotosensitivityProcessing.framework/Versions/A/PhotosensitivityProcessing -0x000000019295d000 /System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer -0x00000001dafd0000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib -0x00000001daf8f000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib -0x00000001db168000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib -0x00000001daf98000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib -0x00000001daf8c000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib -0x000000024af6c000 /usr/lib/libRosetta.dylib -0x00000001daf75000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib -0x0000000224b30000 /System/Library/PrivateFrameworks/FontServices.framework/Versions/A/FontServices -0x0000000192969000 /System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG -0x000000018c918000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib -0x00000001929b7000 /System/Library/PrivateFrameworks/FontServices.framework/libhvf.dylib -0x0000000224b31000 /System/Library/PrivateFrameworks/FontServices.framework/libXTFontStaticRegistryData.dylib -0x000000018f4ae000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSCore.framework/Versions/A/MPSCore -0x00000001909d8000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSImage.framework/Versions/A/MPSImage -0x0000000190431000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork -0x000000019087c000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix -0x0000000190687000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector -0x00000001908ae000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNDArray.framework/Versions/A/MPSNDArray -0x00000001e169c000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSFunctions.framework/Versions/A/MPSFunctions -0x00000001e1681000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSBenchmarkLoop.framework/Versions/A/MPSBenchmarkLoop -0x0000000184a90000 /System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools -0x00000001ae113000 /System/Library/PrivateFrameworks/IOAccelMemoryInfo.framework/Versions/A/IOAccelMemoryInfo -0x00000001ba21c000 /System/Library/PrivateFrameworks/kperf.framework/Versions/A/kperf -0x00000001a9c56000 /System/Library/PrivateFrameworks/GPURawCounter.framework/Versions/A/GPURawCounter -0x000000019a351000 /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication -0x00000001a9c02000 /System/Library/PrivateFrameworks/MallocStackLogging.framework/Versions/A/MallocStackLogging -0x0000000192562000 /System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport -0x000000019a30c000 /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols -0x00000001b8b83000 /System/Library/PrivateFrameworks/OSAnalytics.framework/Versions/A/OSAnalytics -0x0000000242165000 /System/Library/PrivateFrameworks/VideoToolboxParavirtualizationSupport.framework/Versions/A/VideoToolboxParavirtualizationSupport -0x000000019278c000 /System/Library/PrivateFrameworks/AppleVA.framework/Versions/A/AppleVA -0x00000001947f6000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS -0x000000018a785000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices -0x0000000193436000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore -0x0000000194be0000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD -0x0000000194bd4000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy -0x00000001947c6000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis -0x00000001933f2000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATSUI.framework/Versions/A/ATSUI -0x0000000194b67000 /usr/lib/libcups.2.dylib -0x0000000194f5c000 /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos -0x0000000194f6d000 /System/Library/Frameworks/GSS.framework/Versions/A/GSS -0x0000000194875000 /usr/lib/libresolv.9.dylib -0x00000001929c8000 /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal -0x000000019c3f8000 /System/Library/Frameworks/Kerberos.framework/Versions/A/Libraries/libHeimdalProxy.dylib -0x0000000194fc7000 /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth -0x00000001deba8000 /System/Library/Frameworks/AVFAudio.framework/Versions/A/AVFAudio -0x00000001a43ba000 /System/Library/PrivateFrameworks/AXCoreUtilities.framework/Versions/A/AXCoreUtilities -0x000000022f1b0000 /System/Library/PrivateFrameworks/IsolatedCoreAudioClient.framework/Versions/A/IsolatedCoreAudioClient -0x0000000194732000 /System/Library/PrivateFrameworks/AudioSession.framework/Versions/A/AudioSession -0x0000000196243000 /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth -0x0000000192897000 /System/Library/PrivateFrameworks/MediaExperience.framework/Versions/A/MediaExperience -0x0000000194571000 /System/Library/PrivateFrameworks/AudioSession.framework/libSessionUtility.dylib -0x0000000194bec000 /System/Library/PrivateFrameworks/AudioResourceArbitration.framework/Versions/A/AudioResourceArbitration -0x00000001992c4000 /System/Library/PrivateFrameworks/PowerLog.framework/Versions/A/PowerLog -0x00000001991e2000 /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth -0x000000019c3f9000 /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit -0x000000019011e000 /System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils -0x0000000222d7b000 /System/Library/PrivateFrameworks/CoreUtilsExtras.framework/Versions/A/CoreUtilsExtras -0x000000022dac6000 /System/Library/PrivateFrameworks/IO80211.framework/Versions/A/IO80211 -0x0000000199e7a000 /System/Library/PrivateFrameworks/FrontBoardServices.framework/Versions/A/FrontBoardServices -0x000000019b9c1000 /System/Library/PrivateFrameworks/BackBoardServices.framework/Versions/A/BackBoardServices -0x00000001927fe000 /System/Library/PrivateFrameworks/IconFoundation.framework/Versions/A/IconFoundation -0x00000001981bd000 /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore -0x00000001a43d9000 /usr/lib/libAccessibility.dylib -0x00000001988b7000 /System/Library/Frameworks/MediaAccessibility.framework/Versions/A/MediaAccessibility -0x00000001c9908000 /System/Library/Frameworks/OSLog.framework/Versions/A/OSLog -0x00000001a9b90000 /System/Library/PrivateFrameworks/LoggingSupport.framework/Versions/A/LoggingSupport -0x0000000103310000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/server/libjvm.dylib -0x000000010217c000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libverify.dylib -0x00000001021d0000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libjava.dylib -0x000000010225c000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libjdwp.dylib -0x0000000102194000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libnpt.dylib -0x00000001022ac000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libinstrument.dylib -0x000000010220c000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libzip.dylib -0x00000001021bc000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libdt_socket.dylib -0x0000000117c84000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libnet.dylib -0x0000000117ca8000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libmanagement.dylib -0x0000000117cc4000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libnio.dylib -0x0000000193f06000 /usr/lib/libusrtcp.dylib -0x00000001894eb000 /usr/lib/libboringssl.dylib - -VM Arguments: -jvm_args: -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:60210,suspend=y,server=n -XX:TieredStopAtLevel=1 -Xverify:none -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:/Users/chenyao/Library/Caches/JetBrains/IntelliJIdea2024.1/captureAgent/debugger-agent.jar -Dfile.encoding=UTF-8 -java_command: com.BWebApplication -java_class_path (initial): /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/rt.jar:/Users/chenyao/Desktop/work/puhui-go/bweb/target/classes:/Users/chenyao/Desktop/work/puhui-go/service/target/classes:/Users/chenyao/.m2/repository/org/springframework/boot/spring-boot-starter/2.0.5.RELEASE/spring-boot-starter-2.0.5.RELEASE.jar:/Users/ch -Launcher Type: SUN_STANDARD - -Environment Variables: -JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home -CLASSPATH=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/lib/tools.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/lib/dt.jar:. -PATH=/Users/chenyao/Downloads/apache-maven-3.6.3/bin:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Applications/VMware Fusion.app/Contents/Public:.:. -SHELL=/bin/zsh - -Signal Handlers: -SIGSEGV: [libjvm.dylib+0x55b890], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_ONSTACK|SA_RESTART|SA_SIGINFO -SIGBUS: [libjvm.dylib+0x55b890], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO -SIGFPE: [libjvm.dylib+0x55b890], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO -SIGPIPE: [libjvm.dylib+0x458d5c], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO -SIGXFSZ: [libjvm.dylib+0x458d5c], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO -SIGILL: [libjvm.dylib+0x55b890], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO -SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none -SIGUSR2: [libjvm.dylib+0x4593a8], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO -SIGHUP: [libjvm.dylib+0x4573a0], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO -SIGINT: [libjvm.dylib+0x4573a0], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO -SIGTERM: [libjvm.dylib+0x4573a0], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO -SIGQUIT: [libjvm.dylib+0x4573a0], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO - - ---------------- S Y S T E M --------------- - -OS:Bsduname:Darwin 23.5.0 Darwin Kernel Version 23.5.0: Wed May 1 20:16:51 PDT 2024; root:xnu-10063.121.3~5/RELEASE_ARM64_T8103 arm64 -rlimit: STACK 8176k, CORE 0k, NPROC 2666, NOFILE 10240, AS infinity -load average:2.02 2.54 3.05 - -CPU:total 8 (initial active 8) - -Memory: 16k page, physical 16777216k(51520k free) - -/proc/meminfo: - - -vm_info: Java HotSpot(TM) 64-Bit Server VM (25.411-b09) for bsd-aarch64 JRE (1.8.0_411-b09), built on Mar 13 2024 07:21:14 by "java_re" with gcc Apple LLVM 12.0.0 (clang-1200.0.32.29) - -time: Thu Aug 1 11:07:41 2024 -timezone: CST -elapsed time: 362.276898 seconds (0d 0h 6m 2s) - diff --git a/order/src/main/java/com/order/controller/OrderAfterSalesApplyController.java b/order/src/main/java/com/order/controller/OrderAfterSalesApplyController.java index a3b2bb6..4b6d970 100644 --- a/order/src/main/java/com/order/controller/OrderAfterSalesApplyController.java +++ b/order/src/main/java/com/order/controller/OrderAfterSalesApplyController.java @@ -1,5 +1,6 @@ package com.order.controller; +import com.alibaba.excel.EasyExcel; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -7,20 +8,29 @@ import com.hfkj.common.exception.ErrorCode; import com.hfkj.common.exception.ErrorHelp; import com.hfkj.common.exception.SysCode; import com.hfkj.common.security.UserCenter; +import com.hfkj.common.utils.DateUtil; import com.hfkj.common.utils.ResponseMsgUtil; +import com.hfkj.config.CommonSysConst; import com.hfkj.entity.BsOrderAfterSalesApply; +import com.hfkj.entity.FileRecords; import com.hfkj.model.ResponseData; import com.hfkj.model.SecUserSessionObject; import com.hfkj.model.UserSessionObject; +import com.hfkj.model.excel.OrderAfterSalesApplyModel; import com.hfkj.model.order.OrderChildModel; +import com.hfkj.model.order.OrderCouponModel; import com.hfkj.model.order.OrderModel; +import com.hfkj.service.file.FileRecordsService; import com.hfkj.service.order.BsOrderAfterSalesApplyService; import com.hfkj.service.order.BsOrderAfterSalesOpRecordService; import com.hfkj.service.order.BsOrderChildService; import com.hfkj.sysenum.SecUserObjectTypeEnum; import com.hfkj.sysenum.UserStatusEnum; +import com.hfkj.sysenum.fileRecords.FileRecordsEnum; +import com.hfkj.sysenum.order.OrderAfterSalesApplyStatusEnum; import com.hfkj.sysenum.order.OrderAfterSalesApplyTypeEnum; import com.hfkj.sysenum.order.OrderChildProductTypeEnum; +import com.order.utils.excel.OrderCouponExcelMergeHandler; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; @@ -30,9 +40,9 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.io.File; import java.math.BigDecimal; -import java.util.HashMap; -import java.util.Map; +import java.util.*; /** * @className: OrderAfterSalesApplyController @@ -52,6 +62,8 @@ public class OrderAfterSalesApplyController { private BsOrderAfterSalesOpRecordService orderAfterSalesOpRecordService; @Resource private BsOrderChildService orderChildService; + @Resource + private FileRecordsService fileRecordsService; @RequestMapping(value="/calculate",method = RequestMethod.GET) @ResponseBody @@ -267,6 +279,108 @@ public class OrderAfterSalesApplyController { } } + @RequestMapping(value="/export",method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "导出申请") + public ResponseData export(@RequestParam(value = "merId" , required = false) Long merId, + @RequestParam(value = "type" , required = false) Integer type, + @RequestParam(value = "userPhone" , required = false) String userPhone, + @RequestParam(value = "childOrderNo" , required = false) String childOrderNo, + @RequestParam(value = "applyNo" , required = false) String applyNo, + @RequestParam(value = "status" , required = false) Integer status, + @RequestParam(value = "productType" , required = false) String productType, + @RequestParam(value = "productName" , required = false) String productName, + @RequestParam(value = "orderNo" , required = false) String orderNo, + @RequestParam(value = "createTimeS" , required = false) Long createTimeS, + @RequestParam(value = "createTimeE" , required = false) Long createTimeE) { + FileRecords fileRecords = new FileRecords(); + try { + SecUserSessionObject secUserSessionObject = userCenter.getSessionModel(SecUserSessionObject.class); + if (secUserSessionObject == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, ""); + } + Map param = new HashMap<>(); + if (secUserSessionObject.getAccount().getObjectType().equals(SecUserObjectTypeEnum.type1.getCode())) { + param.put("merId", merId); + } else if (secUserSessionObject.getAccount().getObjectType().equals(SecUserObjectTypeEnum.type2.getCode())) { + param.put("merId", secUserSessionObject.getAccount().getObjectId()); + } else { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知权限"); + } + param.put("type", type); + param.put("userPhone", userPhone); + param.put("childOrderNo", childOrderNo); + param.put("applyNo", applyNo); + param.put("status", status); + param.put("productType", productType); + param.put("productName", productName); + param.put("orderNo", orderNo); + param.put("createTimeS", createTimeS); + param.put("createTimeE", createTimeE); + + // 下载记录 + fileRecords.setCreateTime(new Date()); + fileRecords.setBusinessType(FileRecordsEnum.status8.getCode()); + fileRecords.setDownloadConditions(param.toString()); + fileRecords.setOpId(secUserSessionObject.getAccount().getId()); + fileRecords.setOpName(secUserSessionObject.getAccount().getUserName()); + fileRecords.setStatus(2); + fileRecords.setDownloadStatus(2); + fileRecords.setTitle(FileRecordsEnum.status8.getName() + DateUtil.date2String(new Date(System.currentTimeMillis()),DateUtil.YMDHMS) + ".xlsx"); + fileRecords.setFileUrl(CommonSysConst.getSysConfig().getDomainName() + "/filesystem/temporary/" + fileRecords.getTitle()); + fileRecords.setType("2"); + fileRecordsService.create(fileRecords); + + // 数据 + List applyList = orderAfterSalesApplyService.getApplyList(param); + + List dataList = new ArrayList<>(); + OrderAfterSalesApplyModel model; + for (BsOrderAfterSalesApply apply : applyList) { + model = new OrderAfterSalesApplyModel(); + model.setApplyNo(apply.getApplyNo()); + model.setApplyType(Objects.requireNonNull(OrderAfterSalesApplyTypeEnum.getData(apply.getType())).getName()); + model.setUserPhone(apply.getUserPhone()); + model.setOrderNo(apply.getOrderNo()); + model.setOrderChildNo(apply.getChildOrderNo()); + model.setProductType(Objects.requireNonNull(OrderChildProductTypeEnum.getData(apply.getProductType())).getName()); + model.setProductName(apply.getProductName()); + model.setProductSpecName(apply.getProductSpecName()); + model.setProductCount(apply.getProductCount()); + model.setRefundPrice(apply.getRefundPrice().toString()); + model.setRefundIntegral(apply.getRefundIntegral().toString()); + model.setStatus(Objects.requireNonNull(OrderAfterSalesApplyStatusEnum.getData(apply.getStatus())).getName()); + dataList.add(model); + } + + // 文件存放地址 + String fileUrl = CommonSysConst.getSysConfig().getFileUrl() + "/temporary/"; + File file = new File(fileUrl); + if (!file.exists()) { + file.mkdirs(); + } + // 生成excel文件 + EasyExcel.write(fileUrl+fileRecords.getTitle()) + .head(OrderAfterSalesApplyModel.class) + .sheet("售后申请") + .doWrite(dataList); + + fileRecords.setStatus(1); + fileRecords.setUpdateTime(new Date()); + fileRecordsService.update(fileRecords); + return ResponseMsgUtil.success(fileRecords); + + } catch (Exception e) { + fileRecords.setStatus(3); + fileRecords.setUpdateTime(new Date()); + fileRecords.setExt1(e.toString()); + fileRecordsService.update(fileRecords); + + log.error("error!",e); + return ResponseMsgUtil.exception(e); + } + } + @RequestMapping(value="/queryUserApplyList",method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "查询用户申请列表") diff --git a/order/src/main/java/com/order/controller/OrderPayNotifyController.java b/order/src/main/java/com/order/controller/OrderPayNotifyController.java index dbbb2ed..c41156e 100644 --- a/order/src/main/java/com/order/controller/OrderPayNotifyController.java +++ b/order/src/main/java/com/order/controller/OrderPayNotifyController.java @@ -25,6 +25,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.BufferedOutputStream; import java.io.PrintWriter; +import java.math.BigDecimal; import java.net.URLDecoder; import java.util.Date; import java.util.HashMap; @@ -68,6 +69,7 @@ public class OrderPayNotifyController { order.setPayChannel(OrderPayChannelEnum.type1.getCode()); order.setPayTime(new Date(dataObject.getLong("payTime"))); order.setPaySerialNo(dataObject.getString("accTradeNo")); + order.setPayment(dataObject.getBigDecimal("tradeAmount")); orderService.orderPaySuccessHandle(order); } log.info("处理业务完成"); @@ -112,6 +114,7 @@ public class OrderPayNotifyController { order.setPayType(OrderPayTypeEnum.type3.getCode()); order.setPayTime(new Date(body.getLong("payTime"))); order.setPaySerialNo(body.getString("bankTraceNo")); + order.setPayment(new BigDecimal(body.getString("realPay"))); orderService.orderPaySuccessHandle(order); } log.info("处理业务完成"); diff --git a/order/src/main/java/com/order/controller/OrderRefundController.java b/order/src/main/java/com/order/controller/OrderRefundController.java index 86e0509..4f7dd12 100644 --- a/order/src/main/java/com/order/controller/OrderRefundController.java +++ b/order/src/main/java/com/order/controller/OrderRefundController.java @@ -1,5 +1,6 @@ package com.order.controller; +import com.alibaba.excel.EasyExcel; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -7,19 +8,27 @@ import com.hfkj.common.exception.ErrorCode; import com.hfkj.common.exception.ErrorHelp; import com.hfkj.common.exception.SysCode; import com.hfkj.common.security.UserCenter; +import com.hfkj.common.utils.DateUtil; import com.hfkj.common.utils.ResponseMsgUtil; +import com.hfkj.config.CommonSysConst; +import com.hfkj.entity.BsOrderAfterSalesApply; import com.hfkj.entity.BsOrderRefund; +import com.hfkj.entity.FileRecords; import com.hfkj.model.ResponseData; import com.hfkj.model.SecUserSessionObject; import com.hfkj.model.UserSessionObject; +import com.hfkj.model.excel.OrderAfterSalesApplyModel; +import com.hfkj.model.excel.OrderRefundModel; import com.hfkj.model.order.OrderChildModel; import com.hfkj.model.order.OrderModel; +import com.hfkj.service.file.FileRecordsService; import com.hfkj.service.order.BsOrderChildService; import com.hfkj.service.order.BsOrderRefundService; import com.hfkj.service.order.BsOrderService; import com.hfkj.sysenum.SecUserObjectTypeEnum; import com.hfkj.sysenum.UserStatusEnum; -import com.hfkj.sysenum.order.OrderChildProductTypeEnum; +import com.hfkj.sysenum.fileRecords.FileRecordsEnum; +import com.hfkj.sysenum.order.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; @@ -29,9 +38,8 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.io.File; +import java.util.*; /** * @className: OrderController @@ -50,6 +58,8 @@ public class OrderRefundController { private BsOrderRefundService orderRefundService; @Resource private BsOrderChildService orderChildService; + @Resource + private FileRecordsService fileRecordsService; @RequestMapping(value="/tradeOrder",method = RequestMethod.POST) @ResponseBody @@ -175,4 +185,103 @@ public class OrderRefundController { } + @RequestMapping(value="/export",method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "导出") + public ResponseData export(@RequestParam(value = "merId" , required = false) Long merId, + @RequestParam(value = "userPhone" , required = false) String userPhone, + @RequestParam(value = "orderNo" , required = false) String orderNo, + @RequestParam(value = "orderChildNo" , required = false) String orderChildNo, + @RequestParam(value = "refundOrderNo" , required = false) String refundOrderNo, + @RequestParam(value = "refundStatus" , required = false) Integer refundStatus, + @RequestParam(value = "createTimeS" , required = false) Long createTimeS, + @RequestParam(value = "createTimeE" , required = false) Long createTimeE, + @RequestParam(value = "pageNum" , required = true) Integer pageNum, + @RequestParam(value = "pageSize" , required = true) Integer pageSize) { + FileRecords fileRecords = new FileRecords(); + try { + // 用户session + SecUserSessionObject userSession = userCenter.getSessionModel(SecUserSessionObject.class); + if (userSession == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, ""); + } + + Map param = new HashMap<>(); + if (userSession.getAccount().getObjectType().equals(SecUserObjectTypeEnum.type1.getCode())) { + param.put("merId", merId); + } else if (userSession.getAccount().getObjectType().equals(SecUserObjectTypeEnum.type2.getCode())) { + param.put("merId", userSession.getAccount().getObjectId()); + } else { + throw ErrorHelp.genException(SysCode.System, ErrorCode.ROLE_NOT_PERMISSIONS, ""); + } + param.put("userPhone", userPhone); + param.put("orderNo", orderNo); + param.put("orderChildNo", orderChildNo); + param.put("refundOrderNo", refundOrderNo); + param.put("refundStatus", refundStatus); + param.put("createTimeS", createTimeS); + param.put("createTimeE", createTimeE); + + // 下载记录 + fileRecords.setCreateTime(new Date()); + fileRecords.setBusinessType(FileRecordsEnum.status9.getCode()); + fileRecords.setDownloadConditions(param.toString()); + fileRecords.setOpId(userSession.getAccount().getId()); + fileRecords.setOpName(userSession.getAccount().getUserName()); + fileRecords.setStatus(2); + fileRecords.setDownloadStatus(2); + fileRecords.setTitle(FileRecordsEnum.status9.getName() + DateUtil.date2String(new Date(System.currentTimeMillis()),DateUtil.YMDHMS) + ".xlsx"); + fileRecords.setFileUrl(CommonSysConst.getSysConfig().getDomainName() + "/filesystem/temporary/" + fileRecords.getTitle()); + fileRecords.setType("2"); + fileRecordsService.create(fileRecords); + + // 数据 + List refundList = orderRefundService.getRefundList(param); + + List dataList = new ArrayList<>(); + OrderRefundModel model; + for (BsOrderRefund refund : refundList) { + model = new OrderRefundModel(); + model.setRefundOrderNo(refund.getRefundOrderNo()); + model.setOrderNo(refund.getOrderNo()); + model.setOrderChildNo(refund.getOrderChildNo()); + model.setUserPhone(refund.getUserPhone()); + model.setRefundPayChannel(Objects.requireNonNull(OrderPayChannelEnum.getData(refund.getRefundPayChannel())).getName()); + model.setRefundPayType(Objects.requireNonNull(OrderPayTypeEnum.getData(refund.getReufndPayType())).getName()); + model.setRefundPrice(refund.getRefundPrice()); + model.setRefundIntegral(refund.getRefundIntegral()); + model.setCreateTime(refund.getCreateTime()); + model.setRefundTime(refund.getFinishTime()); + model.setStatus(Objects.requireNonNull(OrderRefundStatusEnum.getData(refund.getRefundStatus())).getName()); + dataList.add(model); + } + // 文件存放地址 + String fileUrl = CommonSysConst.getSysConfig().getFileUrl() + "/temporary/"; + File file = new File(fileUrl); + if (!file.exists()) { + file.mkdirs(); + } + // 生成excel文件 + EasyExcel.write(fileUrl+fileRecords.getTitle()) + .head(OrderRefundModel.class) + .sheet("退款记录") + .doWrite(dataList); + + fileRecords.setStatus(1); + fileRecords.setUpdateTime(new Date()); + fileRecordsService.update(fileRecords); + return ResponseMsgUtil.success(fileRecords); + + } catch (Exception e) { + fileRecords.setStatus(3); + fileRecords.setUpdateTime(new Date()); + fileRecords.setExt1(e.toString()); + fileRecordsService.update(fileRecords); + + log.error("error!",e); + return ResponseMsgUtil.exception(e); + } + } + + } diff --git a/service/src/main/java/com/hfkj/config/WeChatQrcodeUtils.java b/service/src/main/java/com/hfkj/config/WeChatQrcodeUtils.java index 6e97a48..f589ea8 100644 --- a/service/src/main/java/com/hfkj/config/WeChatQrcodeUtils.java +++ b/service/src/main/java/com/hfkj/config/WeChatQrcodeUtils.java @@ -27,8 +27,6 @@ import java.util.Map; public class WeChatQrcodeUtils { private static final Logger log = LoggerFactory.getLogger(WeChatQrcodeUtils.class); - - @Resource private RedisUtil redisUtil; diff --git a/service/src/main/java/com/hfkj/dao/BsOrderMapper.java b/service/src/main/java/com/hfkj/dao/BsOrderMapper.java index a782a9a..9e6377a 100644 --- a/service/src/main/java/com/hfkj/dao/BsOrderMapper.java +++ b/service/src/main/java/com/hfkj/dao/BsOrderMapper.java @@ -44,23 +44,23 @@ public interface BsOrderMapper extends BsOrderMapperExt { "pay_channel, pay_channel_order_no, ", "pay_serial_no, pay_type, ", "total_price, pay_real_price, ", - "product_total_price, create_time, ", - "update_time, pay_time, ", - "finish_time, cancel_time, ", - "refund_time, order_status, ", - "remarks, ext_1, ext_2, ", - "ext_3)", + "payment, product_total_price, ", + "create_time, update_time, ", + "pay_time, finish_time, ", + "cancel_time, refund_time, ", + "order_status, remarks, ", + "ext_1, ext_2, ext_3)", "values (#{userId,jdbcType=BIGINT}, #{userName,jdbcType=VARCHAR}, ", "#{userPhone,jdbcType=VARCHAR}, #{orderNo,jdbcType=VARCHAR}, ", "#{payChannel,jdbcType=INTEGER}, #{payChannelOrderNo,jdbcType=VARCHAR}, ", "#{paySerialNo,jdbcType=VARCHAR}, #{payType,jdbcType=INTEGER}, ", "#{totalPrice,jdbcType=DECIMAL}, #{payRealPrice,jdbcType=DECIMAL}, ", - "#{productTotalPrice,jdbcType=DECIMAL}, #{createTime,jdbcType=TIMESTAMP}, ", - "#{updateTime,jdbcType=TIMESTAMP}, #{payTime,jdbcType=TIMESTAMP}, ", - "#{finishTime,jdbcType=TIMESTAMP}, #{cancelTime,jdbcType=TIMESTAMP}, ", - "#{refundTime,jdbcType=TIMESTAMP}, #{orderStatus,jdbcType=INTEGER}, ", - "#{remarks,jdbcType=VARCHAR}, #{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, ", - "#{ext3,jdbcType=VARCHAR})" + "#{payment,jdbcType=DECIMAL}, #{productTotalPrice,jdbcType=DECIMAL}, ", + "#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, ", + "#{payTime,jdbcType=TIMESTAMP}, #{finishTime,jdbcType=TIMESTAMP}, ", + "#{cancelTime,jdbcType=TIMESTAMP}, #{refundTime,jdbcType=TIMESTAMP}, ", + "#{orderStatus,jdbcType=INTEGER}, #{remarks,jdbcType=VARCHAR}, ", + "#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})" }) @Options(useGeneratedKeys=true,keyProperty="id") int insert(BsOrder record); @@ -82,6 +82,7 @@ public interface BsOrderMapper extends BsOrderMapperExt { @Result(column="pay_type", property="payType", jdbcType=JdbcType.INTEGER), @Result(column="total_price", property="totalPrice", jdbcType=JdbcType.DECIMAL), @Result(column="pay_real_price", property="payRealPrice", jdbcType=JdbcType.DECIMAL), + @Result(column="payment", property="payment", jdbcType=JdbcType.DECIMAL), @Result(column="product_total_price", property="productTotalPrice", jdbcType=JdbcType.DECIMAL), @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP), @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP), @@ -100,8 +101,8 @@ public interface BsOrderMapper extends BsOrderMapperExt { @Select({ "select", "id, user_id, user_name, user_phone, order_no, pay_channel, pay_channel_order_no, ", - "pay_serial_no, pay_type, total_price, pay_real_price, product_total_price, create_time, ", - "update_time, pay_time, finish_time, cancel_time, refund_time, order_status, ", + "pay_serial_no, pay_type, total_price, pay_real_price, payment, product_total_price, ", + "create_time, update_time, pay_time, finish_time, cancel_time, refund_time, order_status, ", "remarks, ext_1, ext_2, ext_3", "from bs_order", "where id = #{id,jdbcType=BIGINT}" @@ -118,6 +119,7 @@ public interface BsOrderMapper extends BsOrderMapperExt { @Result(column="pay_type", property="payType", jdbcType=JdbcType.INTEGER), @Result(column="total_price", property="totalPrice", jdbcType=JdbcType.DECIMAL), @Result(column="pay_real_price", property="payRealPrice", jdbcType=JdbcType.DECIMAL), + @Result(column="payment", property="payment", jdbcType=JdbcType.DECIMAL), @Result(column="product_total_price", property="productTotalPrice", jdbcType=JdbcType.DECIMAL), @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP), @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP), @@ -154,6 +156,7 @@ public interface BsOrderMapper extends BsOrderMapperExt { "pay_type = #{payType,jdbcType=INTEGER},", "total_price = #{totalPrice,jdbcType=DECIMAL},", "pay_real_price = #{payRealPrice,jdbcType=DECIMAL},", + "payment = #{payment,jdbcType=DECIMAL},", "product_total_price = #{productTotalPrice,jdbcType=DECIMAL},", "create_time = #{createTime,jdbcType=TIMESTAMP},", "update_time = #{updateTime,jdbcType=TIMESTAMP},", diff --git a/service/src/main/java/com/hfkj/dao/BsOrderSqlProvider.java b/service/src/main/java/com/hfkj/dao/BsOrderSqlProvider.java index 003f046..aa3e5b8 100644 --- a/service/src/main/java/com/hfkj/dao/BsOrderSqlProvider.java +++ b/service/src/main/java/com/hfkj/dao/BsOrderSqlProvider.java @@ -68,6 +68,10 @@ public class BsOrderSqlProvider { sql.VALUES("pay_real_price", "#{payRealPrice,jdbcType=DECIMAL}"); } + if (record.getPayment() != null) { + sql.VALUES("payment", "#{payment,jdbcType=DECIMAL}"); + } + if (record.getProductTotalPrice() != null) { sql.VALUES("product_total_price", "#{productTotalPrice,jdbcType=DECIMAL}"); } @@ -136,6 +140,7 @@ public class BsOrderSqlProvider { sql.SELECT("pay_type"); sql.SELECT("total_price"); sql.SELECT("pay_real_price"); + sql.SELECT("payment"); sql.SELECT("product_total_price"); sql.SELECT("create_time"); sql.SELECT("update_time"); @@ -209,6 +214,10 @@ public class BsOrderSqlProvider { sql.SET("pay_real_price = #{record.payRealPrice,jdbcType=DECIMAL}"); } + if (record.getPayment() != null) { + sql.SET("payment = #{record.payment,jdbcType=DECIMAL}"); + } + if (record.getProductTotalPrice() != null) { sql.SET("product_total_price = #{record.productTotalPrice,jdbcType=DECIMAL}"); } @@ -276,6 +285,7 @@ public class BsOrderSqlProvider { sql.SET("pay_type = #{record.payType,jdbcType=INTEGER}"); sql.SET("total_price = #{record.totalPrice,jdbcType=DECIMAL}"); sql.SET("pay_real_price = #{record.payRealPrice,jdbcType=DECIMAL}"); + sql.SET("payment = #{record.payment,jdbcType=DECIMAL}"); sql.SET("product_total_price = #{record.productTotalPrice,jdbcType=DECIMAL}"); sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}"); sql.SET("update_time = #{record.updateTime,jdbcType=TIMESTAMP}"); @@ -338,6 +348,10 @@ public class BsOrderSqlProvider { sql.SET("pay_real_price = #{payRealPrice,jdbcType=DECIMAL}"); } + if (record.getPayment() != null) { + sql.SET("payment = #{payment,jdbcType=DECIMAL}"); + } + if (record.getProductTotalPrice() != null) { sql.SET("product_total_price = #{productTotalPrice,jdbcType=DECIMAL}"); } diff --git a/service/src/main/java/com/hfkj/entity/BsOrder.java b/service/src/main/java/com/hfkj/entity/BsOrder.java index 4022ed9..cfee38b 100644 --- a/service/src/main/java/com/hfkj/entity/BsOrder.java +++ b/service/src/main/java/com/hfkj/entity/BsOrder.java @@ -40,7 +40,7 @@ public class BsOrder implements Serializable { private String orderNo; /** - * 支付渠道 1:惠支付 2:微信合作商 3:贵州银行 + * 支付渠道 1:惠支付 2:微信合作商 3:贵州银行 4:汇联通 */ private Integer payChannel; @@ -55,7 +55,7 @@ public class BsOrder implements Serializable { private String paySerialNo; /** - * 支付方式 1:微信 2: 支付宝 3:快捷支付 + * 支付方式 1:微信 2: 支付宝 3:快捷支付 4:工会卡 */ private Integer payType; @@ -65,10 +65,15 @@ public class BsOrder implements Serializable { private BigDecimal totalPrice; /** - * 实付金额 + * 应付金额 */ private BigDecimal payRealPrice; + /** + * 支付金额 + */ + private BigDecimal payment; + /** * 商品总金额 */ @@ -210,6 +215,14 @@ public class BsOrder implements Serializable { this.payRealPrice = payRealPrice; } + public BigDecimal getPayment() { + return payment; + } + + public void setPayment(BigDecimal payment) { + this.payment = payment; + } + public BigDecimal getProductTotalPrice() { return productTotalPrice; } @@ -329,6 +342,7 @@ public class BsOrder implements Serializable { && (this.getPayType() == null ? other.getPayType() == null : this.getPayType().equals(other.getPayType())) && (this.getTotalPrice() == null ? other.getTotalPrice() == null : this.getTotalPrice().equals(other.getTotalPrice())) && (this.getPayRealPrice() == null ? other.getPayRealPrice() == null : this.getPayRealPrice().equals(other.getPayRealPrice())) + && (this.getPayment() == null ? other.getPayment() == null : this.getPayment().equals(other.getPayment())) && (this.getProductTotalPrice() == null ? other.getProductTotalPrice() == null : this.getProductTotalPrice().equals(other.getProductTotalPrice())) && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime())) && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime())) @@ -358,6 +372,7 @@ public class BsOrder implements Serializable { result = prime * result + ((getPayType() == null) ? 0 : getPayType().hashCode()); result = prime * result + ((getTotalPrice() == null) ? 0 : getTotalPrice().hashCode()); result = prime * result + ((getPayRealPrice() == null) ? 0 : getPayRealPrice().hashCode()); + result = prime * result + ((getPayment() == null) ? 0 : getPayment().hashCode()); result = prime * result + ((getProductTotalPrice() == null) ? 0 : getProductTotalPrice().hashCode()); result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode()); result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode()); @@ -390,6 +405,7 @@ public class BsOrder implements Serializable { sb.append(", payType=").append(payType); sb.append(", totalPrice=").append(totalPrice); sb.append(", payRealPrice=").append(payRealPrice); + sb.append(", payment=").append(payment); sb.append(", productTotalPrice=").append(productTotalPrice); sb.append(", createTime=").append(createTime); sb.append(", updateTime=").append(updateTime); diff --git a/service/src/main/java/com/hfkj/entity/BsOrderExample.java b/service/src/main/java/com/hfkj/entity/BsOrderExample.java index 045710b..9c98c82 100644 --- a/service/src/main/java/com/hfkj/entity/BsOrderExample.java +++ b/service/src/main/java/com/hfkj/entity/BsOrderExample.java @@ -836,6 +836,66 @@ public class BsOrderExample { return (Criteria) this; } + public Criteria andPaymentIsNull() { + addCriterion("payment is null"); + return (Criteria) this; + } + + public Criteria andPaymentIsNotNull() { + addCriterion("payment is not null"); + return (Criteria) this; + } + + public Criteria andPaymentEqualTo(BigDecimal value) { + addCriterion("payment =", value, "payment"); + return (Criteria) this; + } + + public Criteria andPaymentNotEqualTo(BigDecimal value) { + addCriterion("payment <>", value, "payment"); + return (Criteria) this; + } + + public Criteria andPaymentGreaterThan(BigDecimal value) { + addCriterion("payment >", value, "payment"); + return (Criteria) this; + } + + public Criteria andPaymentGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("payment >=", value, "payment"); + return (Criteria) this; + } + + public Criteria andPaymentLessThan(BigDecimal value) { + addCriterion("payment <", value, "payment"); + return (Criteria) this; + } + + public Criteria andPaymentLessThanOrEqualTo(BigDecimal value) { + addCriterion("payment <=", value, "payment"); + return (Criteria) this; + } + + public Criteria andPaymentIn(List values) { + addCriterion("payment in", values, "payment"); + return (Criteria) this; + } + + public Criteria andPaymentNotIn(List values) { + addCriterion("payment not in", values, "payment"); + return (Criteria) this; + } + + public Criteria andPaymentBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("payment between", value1, value2, "payment"); + return (Criteria) this; + } + + public Criteria andPaymentNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("payment not between", value1, value2, "payment"); + return (Criteria) this; + } + public Criteria andProductTotalPriceIsNull() { addCriterion("product_total_price is null"); return (Criteria) this; diff --git a/service/src/main/java/com/hfkj/model/excel/OrderAfterSalesApplyModel.java b/service/src/main/java/com/hfkj/model/excel/OrderAfterSalesApplyModel.java new file mode 100644 index 0000000..ea054f0 --- /dev/null +++ b/service/src/main/java/com/hfkj/model/excel/OrderAfterSalesApplyModel.java @@ -0,0 +1,64 @@ +package com.hfkj.model.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +/** + * 订单售后申请模型 + * @className: OrderAfterSalesApplyModel + * @author: HuRui + * @date: 2024/9/19 + **/ +@Data +public class OrderAfterSalesApplyModel { + + @ColumnWidth(20) + @ExcelProperty("申请单号") + private String applyNo; + + @ColumnWidth(20) + @ExcelProperty("申请类型") + private String applyType; + + @ColumnWidth(20) + @ExcelProperty("用户手机号") + private String userPhone; + + @ColumnWidth(25) + @ExcelProperty("交易单号") + private String orderNo; + + @ColumnWidth(20) + @ExcelProperty("商品单号") + private String orderChildNo; + + @ColumnWidth(20) + @ExcelProperty("产品类型") + private String productType; + + @ColumnWidth(50) + @ExcelProperty("产品名称") + private String productName; + + @ColumnWidth(30) + @ExcelProperty("产品规格") + private String productSpecName; + + @ColumnWidth(20) + @ExcelProperty("申请退款数量") + private Integer productCount; + + @ColumnWidth(20) + @ExcelProperty("申请退款金额") + private String refundPrice; + + @ColumnWidth(20) + @ExcelProperty("申请退款积分") + private String refundIntegral; + + @ColumnWidth(20) + @ExcelProperty("状态") + private String status; + +} diff --git a/service/src/main/java/com/hfkj/model/excel/OrderRefundModel.java b/service/src/main/java/com/hfkj/model/excel/OrderRefundModel.java new file mode 100644 index 0000000..4ac52f1 --- /dev/null +++ b/service/src/main/java/com/hfkj/model/excel/OrderRefundModel.java @@ -0,0 +1,63 @@ +package com.hfkj.model.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 订单退款记录 + * @className: OrderAfterSalesApplyModel + * @author: HuRui + * @date: 2024/9/19 + **/ +@Data +public class OrderRefundModel { + + @ColumnWidth(25) + @ExcelProperty("退款单号") + private String refundOrderNo; + + @ColumnWidth(25) + @ExcelProperty("交易单号") + private String orderNo; + + @ColumnWidth(20) + @ExcelProperty("商品单号") + private String orderChildNo; + + @ColumnWidth(20) + @ExcelProperty("用户手机号") + private String userPhone; + + @ColumnWidth(20) + @ExcelProperty("支付渠道") + private String refundPayChannel; + + @ColumnWidth(20) + @ExcelProperty("支付方式") + private String refundPayType; + + @ColumnWidth(20) + @ExcelProperty("退款金额") + private BigDecimal refundPrice; + + @ColumnWidth(20) + @ExcelProperty("退款积分") + private Long refundIntegral; + + @ColumnWidth(20) + @ExcelProperty("创建时间") + private Date createTime; + + @ColumnWidth(20) + @ExcelProperty("退款时间") + private Date refundTime; + + @ColumnWidth(20) + @ExcelProperty("状态") + private String status; + +} diff --git a/service/src/main/java/com/hfkj/service/order/impl/BsOrderRefundServiceImpl.java b/service/src/main/java/com/hfkj/service/order/impl/BsOrderRefundServiceImpl.java index acbe6b7..c96a2b0 100644 --- a/service/src/main/java/com/hfkj/service/order/impl/BsOrderRefundServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/order/impl/BsOrderRefundServiceImpl.java @@ -93,10 +93,10 @@ public class BsOrderRefundServiceImpl implements BsOrderRefundService { } } else if (OrderPayChannelEnum.type3.getCode() == orderRefund.getRefundPayChannel()) { - // 商户退款 + /* // 商户退款 JSONObject refundObj = huiftTradeService.thirdPayRefund(orderRefund.getRefundOrderNo(), orderRefund.getRefundPrice(), orderRefund.getOrderNo()); orderRefund.setRefundSerialNo(refundObj.getString("refundTraceNo")); - orderRefund.setRefundPayChannelOrderNo(refundObj.getString("refundOrderNo")); + orderRefund.setRefundPayChannelOrderNo(refundObj.getString("refundOrderNo"));*/ return true; } else if (OrderPayChannelEnum.type4.getCode() == orderRefund.getRefundPayChannel()) { diff --git a/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java b/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java index fe1f729..5e331b6 100644 --- a/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java @@ -26,6 +26,7 @@ import com.hfkj.sysenum.UserIntegralRecordOpUserTypeEnum; import com.hfkj.sysenum.UserIntegralRecordSourceTypeEnum; import com.hfkj.sysenum.order.OrderChildProductTypeEnum; import com.hfkj.sysenum.order.OrderChildStatusEnum; +import com.hfkj.sysenum.order.OrderPayChannelEnum; import com.hfkj.sysenum.order.OrderStatusEnum; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; @@ -484,14 +485,44 @@ public class BsOrderServiceImpl implements BsOrderService { order.setOrderStatus(OrderStatusEnum.status2.getCode()); editData(order); + for (BsOrderChild childOrder : order.getOrderChildList()) { childOrder.setStatus(OrderChildStatusEnum.status2.getCode()); orderChildService.editData(childOrder); } + + if (OrderPayChannelEnum.type3.getCode() == order.getPayType()) { + // 支付金额 + BigDecimal totalPayment = order.getPayment(); + for (int i = 0; i < order.getOrderChildList().size();i++) { + OrderChildModel childOrder = order.getOrderChildList().get(i); + // 计算 子订单 在交易订单金额中的占比 + BigDecimal ratio = childOrder.getProductTotalPrice().divide(order.getTotalPrice(), 4, BigDecimal.ROUND_DOWN); + + // 如果是循环的最后一笔商品订单 + if ((i+1) == order.getOrderChildList().size()) { + // 剩余的可退金额 + if (totalPayment.compareTo(BigDecimal.ZERO) > 0) { + // 大于0 + childOrder.setSurplusRefundPrice(totalPayment); + } else { + // 小于0 + childOrder.setSurplusRefundPrice(new BigDecimal("0")); + } + } else { + // 可退金额 + childOrder.setSurplusRefundPrice(order.getPayment().multiply(ratio).setScale(2, BigDecimal.ROUND_DOWN)); + totalPayment = totalPayment.subtract(childOrder.getSurplusRefundPrice()); + } + + orderChildService.editData(childOrder); + } + } + // 删除缓存 cacheDelete(order.getOrderNo()); // 处理业务 - orderPaySuccessService.orderBusHandle(order); + //orderPaySuccessService.orderBusHandle(order); } @Override diff --git a/service/src/main/java/com/hfkj/sysenum/fileRecords/FileRecordsEnum.java b/service/src/main/java/com/hfkj/sysenum/fileRecords/FileRecordsEnum.java index 7779f9b..b4da574 100644 --- a/service/src/main/java/com/hfkj/sysenum/fileRecords/FileRecordsEnum.java +++ b/service/src/main/java/com/hfkj/sysenum/fileRecords/FileRecordsEnum.java @@ -37,7 +37,20 @@ public enum FileRecordsEnum { */ status6(6, "物流订单上传订单"), + /** + * 物流订单下载订单 + */ status7(7, "物流订单下载订单"), + + /** + * 售后处理 + */ + status8(8, "售后处理"), + + /** + * 退款记录 + */ + status9(9, "退款记录"), ; private final int code; diff --git a/service/src/main/java/com/hfkj/sysenum/order/OrderAfterSalesApplyStatusEnum.java b/service/src/main/java/com/hfkj/sysenum/order/OrderAfterSalesApplyStatusEnum.java index 4cb56e6..46013b8 100644 --- a/service/src/main/java/com/hfkj/sysenum/order/OrderAfterSalesApplyStatusEnum.java +++ b/service/src/main/java/com/hfkj/sysenum/order/OrderAfterSalesApplyStatusEnum.java @@ -2,6 +2,8 @@ package com.hfkj.sysenum.order; import lombok.Getter; +import java.util.Objects; + /** * 售后状态 * @className: OrderAfterSalesApplyStatusEnum @@ -41,4 +43,11 @@ public enum OrderAfterSalesApplyStatusEnum { this.code = code; this.name = name; } + + public static OrderAfterSalesApplyStatusEnum getData(Integer type) { + for (OrderAfterSalesApplyStatusEnum ele : values()) { + if(Objects.equals(type,ele.getCode())) return ele; + } + return null; + } } diff --git a/service/src/main/java/com/hfkj/sysenum/order/OrderRefundStatusEnum.java b/service/src/main/java/com/hfkj/sysenum/order/OrderRefundStatusEnum.java index daeb5bf..8da937e 100644 --- a/service/src/main/java/com/hfkj/sysenum/order/OrderRefundStatusEnum.java +++ b/service/src/main/java/com/hfkj/sysenum/order/OrderRefundStatusEnum.java @@ -2,6 +2,8 @@ package com.hfkj.sysenum.order; import lombok.Getter; +import java.util.Objects; + /** * @className: OrderRefundStatusEnum * @author: HuRui @@ -31,4 +33,11 @@ public enum OrderRefundStatusEnum { this.code = code; this.name = name; } + + public static OrderRefundStatusEnum getData(Integer type) { + for (OrderRefundStatusEnum ele : values()) { + if (Objects.equals(type,ele.getCode())) return ele; + } + return null; + } } From b8553a48e593c32a978624946a4249e12dfdfb5a Mon Sep 17 00:00:00 2001 From: hu177768073 <177768073@qq.com> Date: Fri, 20 Sep 2024 15:48:04 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/bweb/controller/TestController.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/bweb/src/main/java/com/bweb/controller/TestController.java b/bweb/src/main/java/com/bweb/controller/TestController.java index a2069cf..6f36a44 100644 --- a/bweb/src/main/java/com/bweb/controller/TestController.java +++ b/bweb/src/main/java/com/bweb/controller/TestController.java @@ -6,8 +6,20 @@ import com.hfkj.common.exception.SysCode; import com.hfkj.common.utils.*; import com.hfkj.config.CommonSysConst; +import com.hfkj.entity.CouponDiscountGoodsRel; +import com.hfkj.entity.GoodsMsg; +import com.hfkj.entity.GoodsSpecs; import com.hfkj.model.ResponseData; +import com.hfkj.service.discount.CouponDiscountService; +import com.hfkj.service.goods.BsOrderGoodsService; +import com.hfkj.service.goods.GoodsMsgService; +import com.hfkj.service.goods.GoodsSpecsService; +import com.hfkj.service.goods.GoodsUserAddressService; +import com.hfkj.service.hlt.HltCanteenService; +import com.hfkj.service.hlt.HuiLianTongUnionCardService; +import com.hfkj.service.order.BsOrderChildService; +import com.hfkj.service.pay.huift.TradeService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; @@ -17,7 +29,9 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import java.util.*; +import java.util.stream.Collectors; @Controller From d6a291d4c4e187478cf2662b3e231230f7963a0c Mon Sep 17 00:00:00 2001 From: yuanye <418471657@qq.com> Date: Fri, 20 Sep 2024 16:40:52 +0800 Subject: [PATCH 3/3] /1 --- .../com/bweb/controller/TestController.java | 109 ++++++++- cweb/lib/open-platform-sdk-1.0.21.jar | Bin 0 -> 264820 bytes cweb/pom.xml | 20 ++ .../main/java/com/cweb/config/AuthConfig.java | 2 +- .../controller/cms/CmsContentController.java | 1 + .../controller/meituan/MeiTuanController.java | 57 +++++ order/pom.xml | 14 ++ .../java/com/order/config/AuthConfig.java | 1 + .../business/BsOrderGoodsController.java | 14 +- .../business/BsOrderMeiTuanController.java | 58 +++++ .../controller/notify/MeiTuanController.java | 106 +++++++-- .../com/hfkj/schedule/OrderGoodsSchedule.java | 24 +- .../com/hfkj/common/utils/HttpsUtils.java | 39 ++++ .../java/com/hfkj/common/utils/OrderUtil.java | 10 + .../java/com/hfkj/meituan/MeiTuanService.java | 88 ++++++- .../com/hfkj/service/SecConfigService.java | 10 + .../service/goods/BsOrderGoodsService.java | 1 + .../service/goods/BsOrderMeiTuanService.java | 67 ++++++ .../goods/impl/BsOrderGoodsServiceImpl.java | 22 +- .../goods/impl/BsOrderMeiTuanServiceImpl.java | 67 ++++++ .../service/impl/SecConfigServiceImpl.java | 17 ++ .../service/order/BsOrderRefundService.java | 12 + .../service/order/OrderCreateService.java | 50 +++- .../service/order/OrderPaySuccessService.java | 220 +++++++++++------- .../order/impl/BsOrderRefundServiceImpl.java | 101 ++++++++ .../order/impl/BsOrderServiceImpl.java | 3 +- .../order/OrderChildProductTypeEnum.java | 1 + 27 files changed, 988 insertions(+), 126 deletions(-) create mode 100644 cweb/lib/open-platform-sdk-1.0.21.jar create mode 100644 cweb/src/main/java/com/cweb/controller/meituan/MeiTuanController.java create mode 100644 order/src/main/java/com/order/controller/business/BsOrderMeiTuanController.java create mode 100644 service/src/main/java/com/hfkj/service/goods/BsOrderMeiTuanService.java create mode 100644 service/src/main/java/com/hfkj/service/goods/impl/BsOrderMeiTuanServiceImpl.java diff --git a/bweb/src/main/java/com/bweb/controller/TestController.java b/bweb/src/main/java/com/bweb/controller/TestController.java index f75a5e5..fd15a23 100644 --- a/bweb/src/main/java/com/bweb/controller/TestController.java +++ b/bweb/src/main/java/com/bweb/controller/TestController.java @@ -1,4 +1,5 @@ package com.bweb.controller; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.hfkj.common.exception.ErrorCode; import com.hfkj.common.exception.ErrorHelp; @@ -6,8 +7,15 @@ import com.hfkj.common.exception.SysCode; import com.hfkj.common.utils.*; import com.hfkj.config.CommonSysConst; +import com.hfkj.entity.BsOrderGoods; +import com.hfkj.entity.GoodsLogistics; +import com.hfkj.entity.GoodsUserAddress; +import com.hfkj.meituan.MeiTuanService; import com.hfkj.model.ResponseData; +import com.hfkj.service.goods.BsOrderGoodsService; +import com.hfkj.service.goods.GoodsUserAddressService; +import com.hfkj.sysenum.order.OrderLogisticsStatusEnum; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; @@ -17,7 +25,9 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import java.util.*; +import java.util.stream.Collectors; @Controller @@ -25,7 +35,12 @@ import java.util.*; @Api(value="测试") public class TestController { private static Logger log = LoggerFactory.getLogger(TestController.class); - + @Resource + private BsOrderGoodsService orderGoodsService; + @Resource + private GoodsUserAddressService addressService; + @Resource + private BsOrderGoodsService bsOrderGoodsService; @RequestMapping(value="/haiOilLogin",method = RequestMethod.POST) @ResponseBody @@ -51,4 +66,96 @@ public class TestController { } } + @RequestMapping(value="/getLogisticsMsg",method = RequestMethod.POST) + @ResponseBody + @ApiOperation(value = "物流查询") + public ResponseData getLogisticsMsg() { + try { + + Map objectMap = new HashMap<>(); + + objectMap.put("status" , 2); + objectMap.put("createTime" , "createTime"); + + List orderGoodsList = orderGoodsService.getList(objectMap); + + orderGoodsList = orderGoodsList.stream().filter(order -> order.getLogisticsNo() != null).collect(Collectors.toList()); + + for (BsOrderGoods goods : orderGoodsList) { + + if (goods.getLogisticsNo() != null) { + GoodsLogistics logistics = (GoodsLogistics) bsOrderGoodsService.getLogisticsMsgSchedule(goods.getLogisticsNo() , goods.getUserPhone()); + if (logistics.getLogisticsStatus() != null) { + goods.setLogisticsStatus(logistics.getLogisticsStatus()); + goods.setLogisticsStatusDesc(logistics.getLogisticsStatusDesc()); + + } else { + goods.setLogisticsStatus(OrderLogisticsStatusEnum.statusWAIT_ACCEPT.getCode()); + goods.setLogisticsStatusDesc(OrderLogisticsStatusEnum.statusWAIT_ACCEPT.getName()); + } + + goods.setUpdateTime(new Date()); + + bsOrderGoodsService.update(goods); + } + + } + return ResponseMsgUtil.success("map"); + + } catch (Exception e) { + log.error("error!",e); + return ResponseMsgUtil.exception(e); + } + } + + @RequestMapping(value="/orderGoodsConfirmReceipt",method = RequestMethod.POST) + @ResponseBody + @ApiOperation(value = "状态更新") + public void orderGoodsConfirmReceipt() { + Map map = new HashMap<>(); + + map.put("logisticsStatus" , "SIGN"); + map.put("status" , 2); + + List orderGoodsList = orderGoodsService.getList(map); + + for (BsOrderGoods goods : orderGoodsList) { + + // 判断时间是否是十天前 + + if (DateUtil.differentDays(goods.getCreateTime() , new Date()) > 10) { + orderGoodsService.confirmReceipt(goods.getId()); + } + } + } + + + @RequestMapping(value = "/loginFree", method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "H5免登接口") + public ResponseData loginFree(@RequestParam(name = "staffPhone", required = true) String staffPhone, + @RequestParam(name = "productType", required = true) String productType) { + try { + + Map map = new HashMap<>(); + Map staffInfo = new HashMap<>(); + + staffInfo.put("staffPhone", staffPhone); + + map.put("staffInfo", staffInfo); + map.put("entId", 104310L); + map.put("ts", new Date().getTime()); + map.put("productType", productType); + map.put("nonce" , RandomStringGeneratorUtil.generateRandomString(36)); + JSONObject jsonObject = MeiTuanService.loginFree(map); + JSONArray jsonArray = jsonObject.getJSONArray("url"); + JSONObject json = jsonArray.getJSONObject(0); + return ResponseMsgUtil.success(json.getString("value")); + + } catch (Exception e) { + log.error("HighUserCardController --> getHuiLianTongCardConsume() error!", e); + return ResponseMsgUtil.exception(e); + } + } + } diff --git a/cweb/lib/open-platform-sdk-1.0.21.jar b/cweb/lib/open-platform-sdk-1.0.21.jar new file mode 100644 index 0000000000000000000000000000000000000000..0cbe24f26ed8ba870e81c6eb5990b2479e5c8edf GIT binary patch literal 264820 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 z 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�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 literal 0 HcmV?d00001 diff --git a/cweb/pom.xml b/cweb/pom.xml index 361cfdd..c7a574c 100644 --- a/cweb/pom.xml +++ b/cweb/pom.xml @@ -18,6 +18,19 @@ service PACKT-SNAPSHOT + + commons-codec + commons-codec + 1.11 + + + + meituan.skd + meituan-open-sdk + system + 1.0.21 + ${basedir}/lib/open-platform-sdk-1.0.21.jar + @@ -26,6 +39,13 @@ src/main/resources/${env} false + + ${basedir}/lib + BOOT-INF/lib/ + + **/*.jar + + diff --git a/cweb/src/main/java/com/cweb/config/AuthConfig.java b/cweb/src/main/java/com/cweb/config/AuthConfig.java index 409f3c6..ff6e08e 100644 --- a/cweb/src/main/java/com/cweb/config/AuthConfig.java +++ b/cweb/src/main/java/com/cweb/config/AuthConfig.java @@ -93,7 +93,7 @@ public class AuthConfig implements WebMvcConfigurer { .excludePathPatterns("/wxMsg/*") .excludePathPatterns("/cinema/*") .excludePathPatterns("/starbucks/*") - .excludePathPatterns("/c/*") + .excludePathPatterns("/meiTuan/*") ; } diff --git a/cweb/src/main/java/com/cweb/controller/cms/CmsContentController.java b/cweb/src/main/java/com/cweb/controller/cms/CmsContentController.java index 04ebef6..cd99179 100644 --- a/cweb/src/main/java/com/cweb/controller/cms/CmsContentController.java +++ b/cweb/src/main/java/com/cweb/controller/cms/CmsContentController.java @@ -39,6 +39,7 @@ public class CmsContentController { if (platformCode == null) { platformCode = "WXAPPLETS"; } + map.put("status", 1); map.put("platformCode", platformCode); return ResponseMsgUtil.success(cmsContentService.getList(map)); diff --git a/cweb/src/main/java/com/cweb/controller/meituan/MeiTuanController.java b/cweb/src/main/java/com/cweb/controller/meituan/MeiTuanController.java new file mode 100644 index 0000000..e5f5778 --- /dev/null +++ b/cweb/src/main/java/com/cweb/controller/meituan/MeiTuanController.java @@ -0,0 +1,57 @@ +package com.cweb.controller.meituan; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.hfkj.common.utils.RandomStringGeneratorUtil; +import com.hfkj.common.utils.ResponseMsgUtil; +import com.hfkj.meituan.MeiTuanService; +import com.hfkj.model.ResponseData; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +@Controller +@RequestMapping(value="/meiTuan") +@Api(value="美团") +public class MeiTuanController { + + private static final Logger log = LoggerFactory.getLogger(MeiTuanController.class); + + @RequestMapping(value = "/loginFree", method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "H5免登接口") + public ResponseData loginFree(@RequestParam(name = "staffPhone", required = true) String staffPhone, + @RequestParam(name = "productType", required = true) String productType) { + try { + + Map map = new HashMap<>(); + Map staffInfo = new HashMap<>(); + + staffInfo.put("staffPhone", staffPhone); + + map.put("staffInfo", staffInfo); + map.put("entId", 104310L); + map.put("ts", new Date().getTime()); + map.put("productType", productType); + map.put("nonce" , RandomStringGeneratorUtil.generateRandomString(36)); + JSONObject jsonObject = MeiTuanService.loginFree(map); + JSONArray jsonArray = jsonObject.getJSONArray("url"); + JSONObject json = jsonArray.getJSONObject(0); + return ResponseMsgUtil.success(json.getString("value")); + + } catch (Exception e) { + log.error("HighUserCardController --> getHuiLianTongCardConsume() error!", e); + return ResponseMsgUtil.exception(e); + } + } +} diff --git a/order/pom.xml b/order/pom.xml index b88c6de..350cc1d 100644 --- a/order/pom.xml +++ b/order/pom.xml @@ -18,6 +18,13 @@ service PACKT-SNAPSHOT + + + commons-codec + commons-codec + 1.11 + + meituan.skd meituan-open-sdk @@ -33,6 +40,13 @@ src/main/resources/${env} false + + ${basedir}/lib + BOOT-INF/lib/ + + **/*.jar + + diff --git a/order/src/main/java/com/order/config/AuthConfig.java b/order/src/main/java/com/order/config/AuthConfig.java index 584e91c..162eeb5 100644 --- a/order/src/main/java/com/order/config/AuthConfig.java +++ b/order/src/main/java/com/order/config/AuthConfig.java @@ -88,6 +88,7 @@ public class AuthConfig implements WebMvcConfigurer { .excludePathPatterns("/**/swagger-ui.html") .excludePathPatterns("/notify/*") .excludePathPatterns("/cqNotify/*") + .excludePathPatterns("/meiTuan/*") .excludePathPatterns("/orderCinema/queryOrder") ; } diff --git a/order/src/main/java/com/order/controller/business/BsOrderGoodsController.java b/order/src/main/java/com/order/controller/business/BsOrderGoodsController.java index 6f1608c..af8a8e4 100644 --- a/order/src/main/java/com/order/controller/business/BsOrderGoodsController.java +++ b/order/src/main/java/com/order/controller/business/BsOrderGoodsController.java @@ -90,6 +90,8 @@ public class BsOrderGoodsController { @RequestParam(value = "merId" , required = false) Long merId, @RequestParam(value = "createTimeS" , required = false) Long createTimeS, @RequestParam(value = "createTimeE" , required = false) Long createTimeE, + @RequestParam(value = "finishTimeS" , required = false) Long finishTimeS, + @RequestParam(value = "finishTimeE" , required = false) Long finishTimeE, @RequestParam(value = "pageNum" , required = true) Integer pageNum, @RequestParam(value = "pageSize" , required = true) Integer pageSize, HttpServletRequest request) { try { @@ -120,6 +122,8 @@ public class BsOrderGoodsController { map.put("payType", payType); map.put("createTimeS", createTimeS); map.put("createTimeE", createTimeE); + map.put("finishTimeS", finishTimeS); + map.put("finishTimeE", finishTimeE); map.put("status", status); PageHelper.startPage(pageNum, pageSize); @@ -147,6 +151,8 @@ public class BsOrderGoodsController { @RequestParam(value = "payType" , required = false) Integer payType, @RequestParam(value = "status" , required = false) Integer status, @RequestParam(value = "merId" , required = false) Long merId, + @RequestParam(value = "finishTimeS" , required = false) Long finishTimeS, + @RequestParam(value = "finishTimeE" , required = false) Long finishTimeE, @RequestParam(value = "createTimeS" , required = false) Long createTimeS, @RequestParam(value = "createTimeE" , required = false) Long createTimeE, HttpServletRequest request) { // 插入下载记录 @@ -184,14 +190,12 @@ public class BsOrderGoodsController { map.put("payType", payType); map.put("createTimeS", createTimeS); map.put("createTimeE", createTimeE); + map.put("finishTimeS", finishTimeS); + map.put("finishTimeE", finishTimeE); map.put("status", status); String dataSting = ""; - if (createTimeE != null) { - dataSting = DateUtil.date2String(DateUtil.long2Date(createTimeS) , DateUtil.YMDHMS) + "-" + DateUtil.date2String(DateUtil.long2Date(createTimeE) , DateUtil.YMDHMS); - } else { - dataSting = DateUtil.date2String(new Date(), DateUtil.YMDHMS); - } + dataSting = DateUtil.date2String(new Date(), DateUtil.YMDHMS); String fileUrl = CommonSysConst.getSysConfig().getFileUrl(); String filePath = "/temporary/" + userModel.getAccount().getId() + "/" ; diff --git a/order/src/main/java/com/order/controller/business/BsOrderMeiTuanController.java b/order/src/main/java/com/order/controller/business/BsOrderMeiTuanController.java new file mode 100644 index 0000000..3f4cd6d --- /dev/null +++ b/order/src/main/java/com/order/controller/business/BsOrderMeiTuanController.java @@ -0,0 +1,58 @@ +package com.order.controller.business; + +import com.hfkj.common.exception.ErrorCode; +import com.hfkj.common.exception.ErrorHelp; +import com.hfkj.common.exception.SysCode; +import com.hfkj.common.utils.ResponseMsgUtil; +import com.hfkj.entity.SecConfig; +import com.hfkj.model.ResponseData; +import com.hfkj.service.SecConfigService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.math.BigDecimal; + +@Controller +@RequestMapping(value="/orderMeiTuan") +@Api(value="美团订单管理") +public class BsOrderMeiTuanController { + + @Resource + private SecConfigService secConfigService; + + private static final Logger log = LoggerFactory.getLogger(BsOrderGoodsController.class); + + @RequestMapping(value="/servicePrice",method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "查询服务费") + public ResponseData servicePrice(@RequestParam(value = "platformCode" , required = true) String platformCode, + @RequestParam(value = "price" , required = true) BigDecimal price + ) { + try { + // 查询配置的平台服务费 + SecConfig config = secConfigService.queryDetail(platformCode); + BigDecimal servicePrice = new BigDecimal(0); + + if (config == null) { + log.error("orderMeiTuan -> servicePrice() error!"); + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到相信息"); + } + + servicePrice = price.multiply(new BigDecimal(config.getCodeValue())); + + return ResponseMsgUtil.success(servicePrice); + + } catch (Exception e) { + log.error("error!",e); + return ResponseMsgUtil.exception(e); + } + } +} diff --git a/order/src/main/java/com/order/controller/notify/MeiTuanController.java b/order/src/main/java/com/order/controller/notify/MeiTuanController.java index 529b311..1bbc55f 100644 --- a/order/src/main/java/com/order/controller/notify/MeiTuanController.java +++ b/order/src/main/java/com/order/controller/notify/MeiTuanController.java @@ -1,14 +1,16 @@ package com.order.controller.notify; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.hfkj.common.exception.ErrorCode; import com.hfkj.common.exception.ErrorHelp; import com.hfkj.common.exception.SysCode; +import com.hfkj.common.utils.OrderUtil; import com.hfkj.config.CommonSysConst; +import com.hfkj.entity.BsOrderMeituan; import com.hfkj.meituan.MeiTuanService; +import com.hfkj.service.goods.BsOrderMeiTuanService; +import com.hfkj.sysenum.order.OrderChildStatusEnum; import com.meituan.sqt.utils.EncryptUtil; -import com.meituan.sqt.utils.JsonUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; @@ -19,9 +21,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.PrintWriter; +import javax.annotation.Resource; +import java.util.Date; import java.util.Objects; @Controller @@ -29,20 +30,24 @@ import java.util.Objects; @Api(value = "美团通知") public class MeiTuanController { + @Resource + private BsOrderMeiTuanService bsOrderMeiTuanService; + private static Logger log = LoggerFactory.getLogger(MeiTuanService.class); @RequestMapping(value = "/placeOrder", method = RequestMethod.POST) @ApiOperation(value = "下单") @ResponseBody - public void placeOrder(@RequestBody JSONObject reqBodyStr, HttpServletRequest request, HttpServletResponse response) { + public Object placeOrder(@RequestBody JSONObject reqBodyStr) { try { log.info("============回调任务Start============="); String accessKey = reqBodyStr.getString("accessKey"); String content = reqBodyStr.getString("content"); - log.info("美团下单-回调参数: {}", reqBodyStr); + log.info("美团-回调参数: {}", reqBodyStr); if (accessKey == null) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "accessKey错误"); } + if (!Objects.equals(accessKey, CommonSysConst.getSysConfig().getMtAccessKey())) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "accessKey错误"); } @@ -53,19 +58,94 @@ public class MeiTuanController { JSONObject jsonObject = JSONObject.parseObject(EncryptUtil.aesDecrypt(content, CommonSysConst.getSysConfig().getMtSecretKey()));; - log.info("美团下单-解密参数: {}", jsonObject); + log.info("美团-解密参数: {}", jsonObject); + // 下单 + if (Objects.equals(jsonObject.getString("method"), "trade.third.pay")) { + // 创建美团订单 + BsOrderMeituan bsOrderMeituan = bsOrderMeiTuanService.findOrderMeiTuanByTradeNo(jsonObject.getString("tradeNo")); + JSONObject data = new JSONObject(); + JSONObject object = new JSONObject(); + String thirdTradeNo; + + if (bsOrderMeituan == null) { + thirdTradeNo = OrderUtil.generateMeiTuanOrderNo(); + // 组装数据 + BsOrderMeituan orderMeiTuan = new BsOrderMeituan(); + orderMeiTuan.setPlatformCode(jsonObject.getString("platformCode")); + orderMeiTuan.setThirdTradeNo(thirdTradeNo); + orderMeiTuan.setCreateTime(new Date()); + orderMeiTuan.setUpdateTime(new Date()); + orderMeiTuan.setTraceId(jsonObject.getString("traceId")); + orderMeiTuan.setEntId(jsonObject.getLong("entId")); + orderMeiTuan.setTradeNo(jsonObject.getString("tradeNo")); + orderMeiTuan.setSqtBizOrderId(jsonObject.getString("sqtBizOrderId")); + orderMeiTuan.setTradeAmount(jsonObject.getBigDecimal("tradeAmount")); + orderMeiTuan.setEntPayAmount(jsonObject.getBigDecimal("entPayAmount")); + orderMeiTuan.setBusinessDiscountPayAmount(jsonObject.getBigDecimal("businessDiscountPayAmount")); + orderMeiTuan.setServiceFeeAmount(jsonObject.getBigDecimal("serviceFeeAmount")); + orderMeiTuan.setGoodsName(jsonObject.getString("goodsName")); + orderMeiTuan.setTradeExpiringTime(jsonObject.getDate("tradeExpiringTime")); + orderMeiTuan.setNotifyUrl(jsonObject.getString("notifyUrl")); + orderMeiTuan.setReturnUrl(jsonObject.getString("returnUrl")); + orderMeiTuan.setFirstBusinessType(jsonObject.getString("firstBusinessType")); + orderMeiTuan.setSecondBusinessType(jsonObject.getString("secondBusinessType")); + orderMeiTuan.setStaffInfo(jsonObject.getString("staffInfo")); + orderMeiTuan.setStatus(OrderChildStatusEnum.status1.getCode()); + bsOrderMeiTuanService.create(orderMeiTuan); - log.info("============回调任务End============="); + } else { + thirdTradeNo = bsOrderMeituan.getThirdTradeNo(); + } + JSONObject staffInfo = jsonObject.getJSONObject("staffInfo"); - response.setCharacterEncoding("UTF-8"); - response.setContentType("text/html;charset=utf-8"); - PrintWriter writer= response.getWriter(); - writer.write("SUCCESS"); + object.put("thirdTradeNo", thirdTradeNo); + object.put("thirdPayUrl", "https://phgcs.dctpay.com/cweb/#/pages/meiTuanPay/index?tradeNo=" + jsonObject.getString("tradeNo") + "&goodsName=" + + jsonObject.getString("goodsName") + + "&tradeAmount=" + jsonObject.getString("tradeAmount") + + "&outSidePhone=" + staffInfo.getString("staffPhone") + ); + log.info("美团下单-参数: {}", object); + data.put("status", 0); + data.put("msg", "成功"); + data.put("data", EncryptUtil.aesEncrypt(object.toJSONString() , CommonSysConst.getSysConfig().getMtSecretKey())); + log.info("============回调任务End============="); + return data; + + } + // 退款 + if (Objects.equals(jsonObject.getString("method"), "trade.third.refund")) { + return null; + } + if (Objects.equals(jsonObject.getString("method"), "trade.third.pay.query")) { + // 美团查询订单 + JSONObject object = new JSONObject(); + BsOrderMeituan orderMeiTuan = bsOrderMeiTuanService.findOrderMeiTuanByTradeNo(jsonObject.getString("tradeNo")); + object.put("tradeNo" , jsonObject.getString("tradeNo")); + object.put("thirdTradeNo" , orderMeiTuan.getThirdTradeNo()); + + if (orderMeiTuan.getPayTime() == null) { + object.put("tradeTime" , "1970-01-01 00:00:00"); + } else { + object.put("tradeTime" , orderMeiTuan.getPayTime()); + + } + object.put("tradeAmount" , orderMeiTuan.getTradeAmount()); + object.put("payStatus" , MeiTuanService.payStatus(orderMeiTuan.getStatus())); + log.info("美团查询订单-参数: {}", object); + JSONObject data = new JSONObject(); + data.put("status", 0); + data.put("msg", "成功"); + data.put("data", EncryptUtil.aesEncrypt(object.toJSONString() , CommonSysConst.getSysConfig().getMtSecretKey())); + log.info("============回调任务End============="); + return data; + } + return null; } catch (Exception e) { log.error("WechatPayController --> wechatNotify() error!", e); + return e; } } } diff --git a/schedule/src/main/java/com/hfkj/schedule/OrderGoodsSchedule.java b/schedule/src/main/java/com/hfkj/schedule/OrderGoodsSchedule.java index 720da5f..3af1b4f 100644 --- a/schedule/src/main/java/com/hfkj/schedule/OrderGoodsSchedule.java +++ b/schedule/src/main/java/com/hfkj/schedule/OrderGoodsSchedule.java @@ -21,6 +21,7 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * @ClassName OrderGoodsSchedule @@ -35,8 +36,7 @@ public class OrderGoodsSchedule { @Resource private BsOrderGoodsService orderGoodsService; - @Resource - private BsOrderGoodsService bsOrderGoodsService; + @Resource private GoodsUserAddressService addressService; @@ -65,7 +65,7 @@ public class OrderGoodsSchedule { // 判断时间是否是十天前 if (DateUtil.differentDays(goods.getCreateTime() , new Date()) > 10) { - bsOrderGoodsService.confirmReceipt(goods.getId()); + orderGoodsService.confirmReceipt(goods.getId()); } } } @@ -75,26 +75,20 @@ public class OrderGoodsSchedule { Map objectMap = new HashMap<>(); objectMap.put("status" , 2); + objectMap.put("createTime" , "createTime"); List orderGoodsList = orderGoodsService.getList(objectMap); - for (BsOrderGoods goods : orderGoodsList) { - - if (goods == null) { - throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , "暂无物流信息!"); - } + orderGoodsList = orderGoodsList.stream().filter(order -> order.getLogisticsNo() != null).collect(Collectors.toList()); - GoodsUserAddress userAddress = addressService.queryDetail(goods.getDeliveryAddressId()); - - if (userAddress == null) { - throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , "暂无物流信息!"); - } + for (BsOrderGoods goods : orderGoodsList) { if (goods.getLogisticsNo() != null) { - GoodsLogistics logistics = (GoodsLogistics) bsOrderGoodsService.getLogisticsMsg(goods.getLogisticsNo() , userAddress.getPhone()); + GoodsLogistics logistics = (GoodsLogistics) orderGoodsService.getLogisticsMsgSchedule(goods.getLogisticsNo() , goods.getUserPhone()); if (logistics.getLogisticsStatus() != null) { goods.setLogisticsStatus(logistics.getLogisticsStatus()); goods.setLogisticsStatusDesc(logistics.getLogisticsStatusDesc()); + } else { goods.setLogisticsStatus(OrderLogisticsStatusEnum.statusWAIT_ACCEPT.getCode()); goods.setLogisticsStatusDesc(OrderLogisticsStatusEnum.statusWAIT_ACCEPT.getName()); @@ -102,7 +96,7 @@ public class OrderGoodsSchedule { goods.setUpdateTime(new Date()); - bsOrderGoodsService.update(goods); + orderGoodsService.update(goods); } } diff --git a/service/src/main/java/com/hfkj/common/utils/HttpsUtils.java b/service/src/main/java/com/hfkj/common/utils/HttpsUtils.java index 7e53848..af903a4 100644 --- a/service/src/main/java/com/hfkj/common/utils/HttpsUtils.java +++ b/service/src/main/java/com/hfkj/common/utils/HttpsUtils.java @@ -365,6 +365,45 @@ public class HttpsUtils { return null; } + public static JSONObject doPostMeiTuanUrl(String apiUrl, String str) { + CloseableHttpClient httpClient; + if (apiUrl.startsWith("https")) { + httpClient = HttpClients.custom().setSSLSocketFactory(createSSLConnSocketFactory()) + .setConnectionManager(connMgr).setDefaultRequestConfig(requestConfig).build(); + } else { + httpClient = HttpClients.createDefault(); + } + CloseableHttpResponse response = null; + + try { + JSONObject jsonObject = new JSONObject(); + HttpPost httpPost = new HttpPost(apiUrl); + httpPost.setConfig(requestConfig); + StringEntity stringEntity = new StringEntity(str, "UTF-8");// 解决中文乱码问题 + stringEntity.setContentEncoding("UTF-8"); + stringEntity.setContentType("application/json"); + httpPost.setEntity(stringEntity); + response = httpClient.execute(httpPost); + + if (response.getStatusLine().getStatusCode() == 302) { + jsonObject.put("msg" , true); + jsonObject.put("url" , response.getHeaders("Location")); + } + + return jsonObject; + } catch (Exception e) { + log.error(e.getMessage(),e); + } finally { + if (response != null) { + try { + EntityUtils.consume(response.getEntity()); + } catch (IOException e) { + log.error(e.getMessage(),e); + } + } + } + return null; + } public static JSONObject doPostForm(String apiUrl, String body, Map header) { CloseableHttpClient httpClient = null; diff --git a/service/src/main/java/com/hfkj/common/utils/OrderUtil.java b/service/src/main/java/com/hfkj/common/utils/OrderUtil.java index 87f98e0..5877b28 100644 --- a/service/src/main/java/com/hfkj/common/utils/OrderUtil.java +++ b/service/src/main/java/com/hfkj/common/utils/OrderUtil.java @@ -54,6 +54,16 @@ public class OrderUtil { return IDGenerator.nextId(16); } + /** + * 生成美团订单号 + * @return + * @throws Exception + */ + public static String generateMeiTuanOrderNo() { + // 生成子订单号 + return IDGenerator.nextId(11); + } + /** * 生成退款订单号 * @return diff --git a/service/src/main/java/com/hfkj/meituan/MeiTuanService.java b/service/src/main/java/com/hfkj/meituan/MeiTuanService.java index 9b0972b..6467f28 100644 --- a/service/src/main/java/com/hfkj/meituan/MeiTuanService.java +++ b/service/src/main/java/com/hfkj/meituan/MeiTuanService.java @@ -34,9 +34,29 @@ public class MeiTuanService { */ public static JSONObject loginFree(Map map) throws Exception { - JSONObject object = request("" , map); + JSONObject object = doPostMeiTuanUrl("https://waimai-openapi.apigw.test.meituan.com/api/sqt/open/login/h5/loginFree/redirection?test_open_swimlane=test-open" , map); - if (object.getBoolean("success") && object.getInteger("code") == 10000) { + if (object.getBoolean("msg")) { + return object; + } else { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "查询失败!"); + } + + } + + /** + * @MethodName paySuccess + * @Description: 支付成功通知接口 + * @param map + * @return: com.alibaba.fastjson.JSONObject + * @Author: Sum1Dream + * @Date: 2024/9/18 下午3:42 + */ + public static JSONObject paySuccess(Map map , String url) throws Exception { + + JSONObject object = request(url , map); + + if (object.getBoolean("msg")) { return object; } else { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "查询失败!"); @@ -53,20 +73,78 @@ public class MeiTuanService { */ public static JSONObject request(String postUrl, Map param) throws Exception { + log.info("============ 美团请求-START ============="); + param.put("accessKey", CommonSysConst.getSysConfig().getMtAccessKey()); + param.put("content", EncryptUtil.aesEncrypt(JsonUtil.object2Json(param), CommonSysConst.getSysConfig().getMtSecretKey())); + + log.info("请求接口:" + postUrl); + log.info("请求参数:" + JSONObject.toJSONString(param)); + JSONObject response = HttpsUtils.doPost(postUrl, JSONObject.toJSONString(param)); - log.info("============ 千猪请求-START ============="); + log.info("响应参数:" + response.toJSONString()); + log.info("============ 美团请求-END =============="); + return response; + + } + + /** + * @MethodName doPostMeiTuanUrl + * @Description: 美团免登陆接口 + * @param postUrl + * @param param + * @return: com.alibaba.fastjson.JSONObject + * @Author: Sum1Dream + * @Date: 2024/9/18 下午5:44 + */ + public static JSONObject doPostMeiTuanUrl(String postUrl, Map param) throws Exception { + + log.info("============ 美团请求-START ============="); param.put("accessKey", CommonSysConst.getSysConfig().getMtAccessKey()); param.put("content", EncryptUtil.aesEncrypt(JsonUtil.object2Json(param), CommonSysConst.getSysConfig().getMtSecretKey())); log.info("请求接口:" + postUrl); log.info("请求参数:" + JSONObject.toJSONString(param)); - JSONObject response = HttpsUtils.doPost(CommonSysConst.getSysConfig().getMtPostUrl() + postUrl, JSONObject.toJSONString(param)); + JSONObject response = HttpsUtils.doPostMeiTuanUrl(postUrl, JSONObject.toJSONString(param)); log.info("响应参数:" + response.toJSONString()); - log.info("============ 千猪请求-END =============="); + log.info("============ 美团请求-END =============="); return response; } + + /** + * @MethodName payStatus + * @Description: 美团支付状态转换 + * @param payStatus + * @return: java.lang.Integer + * @Author: Sum1Dream + * @Date: 2024/9/18 下午6:03 + */ + public static Integer payStatus(Integer payStatus) { + int result; + switch (payStatus) { + case 1: + result = 0; + break; + case 2: + result = 1; + break; + case 3: + result = 1; + break; + case 4: + result = 2; + break; + case 5: + result = 10; + break; + default: + throw new RuntimeException("状态不正确"); + } + + return result; + } + } diff --git a/service/src/main/java/com/hfkj/service/SecConfigService.java b/service/src/main/java/com/hfkj/service/SecConfigService.java index b3d0cc4..28661cd 100644 --- a/service/src/main/java/com/hfkj/service/SecConfigService.java +++ b/service/src/main/java/com/hfkj/service/SecConfigService.java @@ -49,4 +49,14 @@ public interface SecConfigService { * @return com.hfkj.entity.GoodsBrand */ SecConfig queryDetail(Integer id); + + /** + * @MethodName queryDetail + * @Description: + * @param codeType + * @return: com.hfkj.entity.SecConfig + * @Author: Sum1Dream + * @Date: 2024/9/14 下午3:08 + */ + SecConfig queryDetail(String codeType); } diff --git a/service/src/main/java/com/hfkj/service/goods/BsOrderGoodsService.java b/service/src/main/java/com/hfkj/service/goods/BsOrderGoodsService.java index 0539f1f..6cda295 100644 --- a/service/src/main/java/com/hfkj/service/goods/BsOrderGoodsService.java +++ b/service/src/main/java/com/hfkj/service/goods/BsOrderGoodsService.java @@ -138,6 +138,7 @@ public interface BsOrderGoodsService { * @Return com.alibaba.fastjson.JSONObject */ Object getLogisticsMsg(String logisticsNo , String mobile); + Object getLogisticsMsgSchedule(String logisticsNo , String mobile); /** * @Author Sum1Dream diff --git a/service/src/main/java/com/hfkj/service/goods/BsOrderMeiTuanService.java b/service/src/main/java/com/hfkj/service/goods/BsOrderMeiTuanService.java new file mode 100644 index 0000000..c91156f --- /dev/null +++ b/service/src/main/java/com/hfkj/service/goods/BsOrderMeiTuanService.java @@ -0,0 +1,67 @@ +package com.hfkj.service.goods; + +import com.hfkj.entity.BsOrderMeituan; + +public interface BsOrderMeiTuanService { + + /** + * @MethodName create + * @Description: 创建 + * @param orderMeiTuan + * @Author: Sum1Dream + * @Date: 2024/9/5 下午4:18 + */ + void create(BsOrderMeituan orderMeiTuan); + + /** + * @MethodName update + * @Description: 更新 + * @param orderMeiTuan + * @Author: Sum1Dream + * @Date: 2024/9/5 下午4:19 + */ + void update(BsOrderMeituan orderMeiTuan); + + /** + * @MethodName delete + * @Description: 删除 + * @param id + * @param fullDelete + * @Author: Sum1Dream + * @Date: 2024/9/5 下午4:19 + */ + void delete(Long id , Boolean fullDelete); + + /** + * @MethodName queryDetail + * @Description: 查询详情 + * @param id + * @return: com.hfkj.entity.BsOrderMeituan + * @Author: Sum1Dream + * @Date: 2024/9/5 下午4:19 + */ + BsOrderMeituan queryDetail(Long id); + + /** + * @MethodName findOrderMeiTuan + * @Description: 根据订单号查询 + * @param childOrderNo + * @return: com.hfkj.entity.BsOrderMeituan + * @Author: Sum1Dream + * @Date: 2024/9/5 下午4:22 + */ + BsOrderMeituan findOrderMeiTuan(String childOrderNo); + + /** + * @MethodName findOrderMeiTuanByTradeNo + * @Description: 通过渠道订单号查询 + * @param tradeNo + * @return: com.hfkj.entity.BsOrderMeituan + * @Author: Sum1Dream + * @Date: 2024/9/18 下午5:54 + */ + BsOrderMeituan findOrderMeiTuanByTradeNo(String tradeNo); + + + +} diff --git a/service/src/main/java/com/hfkj/service/goods/impl/BsOrderGoodsServiceImpl.java b/service/src/main/java/com/hfkj/service/goods/impl/BsOrderGoodsServiceImpl.java index 865a088..7a892fd 100644 --- a/service/src/main/java/com/hfkj/service/goods/impl/BsOrderGoodsServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/goods/impl/BsOrderGoodsServiceImpl.java @@ -174,12 +174,22 @@ public class BsOrderGoodsServiceImpl implements BsOrderGoodsService { if (MapUtils.getLong(map, "createTimeE") != null) { criteria.andCreateTimeLessThan(new Date(MapUtils.getLong(map, "createTimeE"))); } + if (MapUtils.getLong(map, "finishTimeS") != null) { + criteria.andFinishTimeGreaterThanOrEqualTo(new Date(MapUtils.getLong(map, "finishTimeS"))); + } + if (MapUtils.getLong(map, "finishTimeE") != null) { + criteria.andFinishTimeLessThan(new Date(MapUtils.getLong(map, "finishTimeE"))); + example.setOrderByClause("finish_time desc"); + } if (MapUtils.getInteger(map, "status") != null) { criteria.andStatusEqualTo(MapUtils.getInteger(map, "status")); } else { criteria.andStatusNotEqualTo(0); } - example.setOrderByClause("create_time desc"); + if (MapUtils.getString(map , "createTime") == null) { + example.setOrderByClause("create_time desc"); + } + return bsOrderGoodsMapper.selectByExample(example); } @@ -269,7 +279,17 @@ public class BsOrderGoodsServiceImpl implements BsOrderGoodsService { return editLogistics((JSONObject) jsonObjects.get("data")); } + @Override + public Object getLogisticsMsgSchedule(String logisticsNo, String mobile) { + JSONObject jsonObjects = OrderUtil.getLogisticsMsg(logisticsNo , mobile); + if (jsonObjects != null) { + if (jsonObjects.getBoolean("success")) { + return editLogistics((JSONObject) jsonObjects.get("data")); + } + } + return null; + } @Override public void confirmReceipt(Long orderGoodsId) { diff --git a/service/src/main/java/com/hfkj/service/goods/impl/BsOrderMeiTuanServiceImpl.java b/service/src/main/java/com/hfkj/service/goods/impl/BsOrderMeiTuanServiceImpl.java new file mode 100644 index 0000000..80f5550 --- /dev/null +++ b/service/src/main/java/com/hfkj/service/goods/impl/BsOrderMeiTuanServiceImpl.java @@ -0,0 +1,67 @@ +package com.hfkj.service.goods.impl; + +import com.hfkj.dao.BsOrderMeituanMapper; +import com.hfkj.entity.BsOrderMeituan; +import com.hfkj.entity.BsOrderMeituanExample; +import com.hfkj.service.goods.BsOrderMeiTuanService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service("bsOrderMeiTuanService") +public class BsOrderMeiTuanServiceImpl implements BsOrderMeiTuanService { + + @Resource + private BsOrderMeituanMapper bsOrderMeituanMapper; + + @Override + public void create(BsOrderMeituan orderMeiTuan) { + bsOrderMeituanMapper.insert(orderMeiTuan); + } + + @Override + public void update(BsOrderMeituan orderMeiTuan) { + bsOrderMeituanMapper.updateByPrimaryKeySelective(orderMeiTuan); + } + + @Override + public void delete(Long id, Boolean fullDelete) { + + } + + @Override + public BsOrderMeituan queryDetail(Long id) { + return null; + } + + @Override + public BsOrderMeituan findOrderMeiTuan(String childOrderNo) { + BsOrderMeituanExample example = new BsOrderMeituanExample(); + BsOrderMeituanExample.Criteria criteria = example.createCriteria(); + criteria.andChildOrderNoEqualTo(childOrderNo); + + List list = bsOrderMeituanMapper.selectByExample(example); + + if (!list.isEmpty()) { + return list.get(0); + } + + return null; + } + + @Override + public BsOrderMeituan findOrderMeiTuanByTradeNo(String tradeNo) { + BsOrderMeituanExample example = new BsOrderMeituanExample(); + BsOrderMeituanExample.Criteria criteria = example.createCriteria(); + criteria.andTradeNoEqualTo(tradeNo); + + List list = bsOrderMeituanMapper.selectByExample(example); + + if (!list.isEmpty()) { + return list.get(0); + } + + return null; + } +} diff --git a/service/src/main/java/com/hfkj/service/impl/SecConfigServiceImpl.java b/service/src/main/java/com/hfkj/service/impl/SecConfigServiceImpl.java index ecc0cb1..d5509f4 100644 --- a/service/src/main/java/com/hfkj/service/impl/SecConfigServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/impl/SecConfigServiceImpl.java @@ -2,9 +2,11 @@ package com.hfkj.service.impl; import com.hfkj.dao.SecConfigMapper; import com.hfkj.entity.SecConfig; +import com.hfkj.entity.SecConfigExample; import com.hfkj.service.SecConfigService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.List; @Service("secConfigService") public class SecConfigServiceImpl implements SecConfigService { @@ -31,4 +33,19 @@ public class SecConfigServiceImpl implements SecConfigService { public SecConfig queryDetail(Integer id) { return secConfigMapper.selectByPrimaryKey(id); } + + @Override + public SecConfig queryDetail(String codeType) { + SecConfigExample secConfigExample = new SecConfigExample(); + secConfigExample.createCriteria().andCodeTypeEqualTo(codeType); + List list = secConfigMapper.selectByExample(secConfigExample); + + if (!list.isEmpty()) { + return list.get(0); + } + + return null; + } + + } diff --git a/service/src/main/java/com/hfkj/service/order/BsOrderRefundService.java b/service/src/main/java/com/hfkj/service/order/BsOrderRefundService.java index 280e246..79b2a2a 100644 --- a/service/src/main/java/com/hfkj/service/order/BsOrderRefundService.java +++ b/service/src/main/java/com/hfkj/service/order/BsOrderRefundService.java @@ -3,6 +3,7 @@ package com.hfkj.service.order; import com.hfkj.entity.BsOrderRefund; import com.hfkj.model.order.OrderModel; +import java.math.BigDecimal; import java.util.List; import java.util.Map; @@ -40,6 +41,17 @@ public interface BsOrderRefundService { */ BsOrderRefund tradeOrderChildRefund(String childOrderNo, Integer productCount, String remark); + /** + * @MethodName meiTuanRefund + * @Description: 美团退款 + * @param childOrderNo + * @param remark + * @return: com.hfkj.entity.BsOrderRefund + * @Author: Sum1Dream + * @Date: 2024/9/18 下午4:33 + */ + BsOrderRefund meiTuanRefund(String childOrderNo, String tradeNo , BigDecimal refundPrice, String remark); + /** * 查询退款 * @param refundOrderNo 退款单号 diff --git a/service/src/main/java/com/hfkj/service/order/OrderCreateService.java b/service/src/main/java/com/hfkj/service/order/OrderCreateService.java index d05f32a..b5a68ae 100644 --- a/service/src/main/java/com/hfkj/service/order/OrderCreateService.java +++ b/service/src/main/java/com/hfkj/service/order/OrderCreateService.java @@ -14,16 +14,19 @@ import com.hfkj.model.order.OrderModel; import com.hfkj.qianzhu.CinemaService; import com.hfkj.qianzhu.StarbucksService; import com.hfkj.service.BsProductConfigService; +import com.hfkj.service.SecConfigService; import com.hfkj.service.coupon.BsOrderCouponNoService; import com.hfkj.service.coupon.BsOrderCouponService; import com.hfkj.service.coupon.channel.HuiLianTongCouponService; import com.hfkj.service.goods.*; import com.hfkj.service.hlt.HuiLianTongUnionCardService; +import com.hfkj.service.impl.SecConfigServiceImpl; import com.hfkj.sysenum.GoodsVpdSourceEnum; import com.hfkj.sysenum.order.*; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -69,6 +72,10 @@ public class OrderCreateService { private BsOrderStarbucksService orderStarbucksService; @Resource private BsOrderMemberService orderMemberService; + @Resource + private SecConfigService secConfigService; + @Resource + private BsOrderMeiTuanService bsOrderMeiTuanService; /** * 事务产品 @@ -81,7 +88,7 @@ public class OrderCreateService { if (goodsMsg == null) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的商品"); } - if (goodsMsg.getStatus() != 1) { + if (goodsMsg.getStatus() == 0 || goodsMsg.getStatus() == 2 || goodsMsg.getStatus() == 3) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, goodsMsg.getTitle()+"暂无法就进行购买"); } // 查询商品规格 @@ -212,7 +219,7 @@ public class OrderCreateService { if (goodsMsg == null) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的商品"); } - if (goodsMsg.getStatus() != 1) { + if (goodsMsg.getStatus() == 0 || goodsMsg.getStatus() == 2 || goodsMsg.getStatus() == 3) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, goodsMsg.getTitle()+"暂无法就进行购买"); } if (goodsMsg.getType() != 1) { @@ -487,7 +494,7 @@ public class OrderCreateService { // 星巴克创建订单 // 获取token Map mapToken = new HashMap<>(); - mapToken.put("platformUniqueId" , order.getOrderNo()); + mapToken.put("platformUniqueId" , order.getOrderNo() ); mapToken.put("nickname" , order.getUserName()); mapToken.put("mobile" , object.getString("phone")); StarbucksService.getTokenV2(mapToken); @@ -505,4 +512,41 @@ public class OrderCreateService { return orderChild; } + public OrderChildModel meituan(OrderModel order, OrderChildModel orderChild) throws Exception { + // 获取下单业务参数 + JSONObject object = new JSONObject((Map) orderChild.getBusiness()); + BsProductConfig productConfig = bsProductConfigService.queryDetail(OrderChildProductTypeEnum.type5.getCode()); + // 查询配置的平台服务费 + SecConfig config = secConfigService.queryDetail(object.getString("platformCode")); + BigDecimal servicePrice = new BigDecimal(0); + if (config != null) { + servicePrice = new BigDecimal(config.getCodeValue()); + } + + // 查询美团订单 + BsOrderMeituan orderMeiTuan = bsOrderMeiTuanService.findOrderMeiTuanByTradeNo(object.getString("tradeNo")); + + // 组装数据 + orderMeiTuan.setOrderNo(orderChild.getOrderNo()); + orderMeiTuan.setChildOrderNo(orderChild.getChildOrderNo()); + orderMeiTuan.setMerId(productConfig.getMerId()); + orderMeiTuan.setUserId(order.getUserId()); + orderMeiTuan.setPlatformCode(object.getString("platformCode")); + orderMeiTuan.setUserPhone(order.getUserPhone()); + orderMeiTuan.setServicePrice(orderMeiTuan.getTradeAmount().multiply(servicePrice)); + orderMeiTuan.setTotalPrice(orderMeiTuan.getServicePrice().add(orderMeiTuan.getTradeAmount())); + + bsOrderMeiTuanService.update(orderMeiTuan); + + orderChild.setMerId(productConfig.getMerId()); + orderChild.setProductName(orderMeiTuan.getGoodsName()); + orderChild.setProductCount(1); + orderChild.setProductImg("202409/1726638258182.png"); + orderChild.setProductSpecName(orderMeiTuan.getGoodsName()); + + orderChild.setProductPrice(orderMeiTuan.getTotalPrice()); + + + return orderChild; + } } diff --git a/service/src/main/java/com/hfkj/service/order/OrderPaySuccessService.java b/service/src/main/java/com/hfkj/service/order/OrderPaySuccessService.java index a348871..becbe55 100644 --- a/service/src/main/java/com/hfkj/service/order/OrderPaySuccessService.java +++ b/service/src/main/java/com/hfkj/service/order/OrderPaySuccessService.java @@ -8,6 +8,7 @@ import com.hfkj.common.exception.SysCode; import com.hfkj.common.utils.DateUtil; import com.hfkj.config.CommonSysConst; import com.hfkj.entity.*; +import com.hfkj.meituan.MeiTuanService; import com.hfkj.model.order.OrderModel; import com.hfkj.qianzhu.CinemaService; import com.hfkj.qianzhu.StarbucksService; @@ -58,8 +59,13 @@ public class OrderPaySuccessService { private BsOrderStarbucksService orderStarbucksService; @Resource private BsOrderCinemaService bsOrderCinemaService; - @Autowired + @Resource private BsOrderStarbucksServiceImpl bsOrderStarbucksService; + @Resource + private BsOrderMeiTuanService bsOrderMeiTuanService; + + @Resource + private BsOrderMemberService bsOrderMemberService; /** * 订单业务处理 @@ -77,6 +83,8 @@ public class OrderPaySuccessService { cinema(order, childOrder); } else if (childOrder.getProductType().equals(OrderChildProductTypeEnum.type4.getCode())) { starbucks(order , childOrder); + } else if (childOrder.getProductType().equals(OrderChildProductTypeEnum.type5.getCode())) { + meiTuan(order , childOrder); } } catch (Exception e) { @@ -106,97 +114,116 @@ public class OrderPaySuccessService { public void productVpd(OrderModel order, BsOrderChild childOrder) throws Exception { // 查询卡券订单 BsOrderCoupon orderCoupon = orderCouponService.getDetailByChildOrderNo(childOrder.getChildOrderNo()); - // 查询卡券订单的卡密 - List couponNoList = orderCouponNoService.getListByCouponOrderId(orderCoupon.getId()); - for (BsOrderCouponNo couponNo : couponNoList) { - try { - // 虚拟商品 - GoodsVpd vpd = goodsVpdService.queryDetailBySpecsId(childOrder.getProductSpecId()); - if (vpd.getSource() == GoodsVpdSourceEnum.type1.getCode()) { - - } else if (vpd.getSource() == GoodsVpdSourceEnum.type2.getCode()) { - - - Map map = new HashMap<>(); - map.put("productCode" , vpd.getKey()); - map.put("AppKey" , CommonSysConst.getSysConfig().getYuShangAppKey()); - map.put("BuyCount" , childOrder.getProductCount()); - map.put("MOrderID" , childOrder.getChildOrderNo()); - map.put("ChargeAccount" , childOrder.getChildOrderNo()); - // 推送给娱尚 - YuShangService.insertV2(map); - - } else if (vpd.getSource() == GoodsVpdSourceEnum.type4.getCode()) { - // 推送给汇联通 - JSONObject returnParam = HuiLianTongCouponService.costRechargeOrder(couponNo.getChannelOrderNo()); - if (returnParam.getString("respCode").equals("0000")) { - // 解密 - JSONObject jsonObject = HuiLianTongUnionCardService.resolveResponse(returnParam.getString("data")); - JSONArray dataArray = JSONObject.parseObject(jsonObject.getString("data"), JSONArray.class); - for (Object data : dataArray) { - JSONObject dataObject = (JSONObject) data; - couponNo.setExpireTime(dataObject.getDate("validEndDate")); - couponNo.setDeliverTime(new Date()); - couponNo.setGoodsVpdSourceCouNo(dataObject.getString("couNo")); - couponNo.setStatus(OrderCouponNoStatusEnum.status2.getCode()); - orderCouponNoService.editData(couponNo); + // 虚拟商品 + GoodsVpd vpd = goodsVpdService.queryDetailBySpecsId(childOrder.getProductSpecId()); + + if (vpd.getSource() == GoodsVpdSourceEnum.type2.getCode()) { + + + Map map = new HashMap<>(); + map.put("productCode" , vpd.getKey()); + map.put("AppKey" , CommonSysConst.getSysConfig().getYuShangAppKey()); + map.put("BuyCount" , childOrder.getProductCount()); + map.put("MOrderID" , childOrder.getChildOrderNo()); + map.put("ChargeAccount" , childOrder.getChildOrderNo()); + // 推送给娱尚 + YuShangService.insertV2(map); + + BsOrderMember orderMember = new BsOrderMember(); + + orderMember.setTotalPrice(childOrder.getProductTotalPrice()); + orderMember.setTotalDeductionPrice(childOrder.getTotalDeductionPrice()); + orderMember.setCouponDiscountPrice(childOrder.getCouponDiscountPrice()); + orderMember.setIntegralDiscountPrice(childOrder.getIntegralDiscountPrice()); + orderMember.setPayRealPrice(childOrder.getSurplusRefundPrice()); + orderMember.setPayChannel(order.getPayChannel()); + orderMember.setPayType(order.getPayType()); + orderMember.setPaySerialNo(order.getPaySerialNo()); + orderMember.setPayTime(order.getPayTime()); + orderMember.setStatus(OrderChildStatusEnum.status3.getCode()); + orderMember.setUpdateTime(new Date()); + bsOrderMemberService.update(orderMember); + + } else { + // 查询卡券订单的卡密 + List couponNoList = orderCouponNoService.getListByCouponOrderId(orderCoupon.getId()); + for (BsOrderCouponNo couponNo : couponNoList) { + try { + + if (vpd.getSource() == GoodsVpdSourceEnum.type4.getCode()) { + // 推送给汇联通 + JSONObject returnParam = HuiLianTongCouponService.costRechargeOrder(couponNo.getChannelOrderNo()); + if (returnParam.getString("respCode").equals("0000")) { + // 解密 + JSONObject jsonObject = HuiLianTongUnionCardService.resolveResponse(returnParam.getString("data")); + JSONArray dataArray = JSONObject.parseObject(jsonObject.getString("data"), JSONArray.class); + for (Object data : dataArray) { + JSONObject dataObject = (JSONObject) data; + couponNo.setExpireTime(dataObject.getDate("validEndDate")); + couponNo.setDeliverTime(new Date()); + couponNo.setGoodsVpdSourceCouNo(dataObject.getString("couNo")); + couponNo.setStatus(OrderCouponNoStatusEnum.status2.getCode()); + orderCouponNoService.editData(couponNo); + } } - } - } else if (vpd.getSource() == GoodsVpdSourceEnum.type5.getCode()) { - // 预发码 - JSONObject preSendCoupon = ChongQingCNPCCouponService.preSendCoupon(orderCoupon.getGoodsVpdKey(), couponNo.getOrderNo(), 1, orderCoupon.getUserPhone()); - if (preSendCoupon.getInteger("status").equals(1)) { - // 给用户发码 - JSONObject response = ChongQingCNPCCouponService.sendCNPCTicket(orderCoupon.getGoodsVpdKey(), couponNo.getOrderNo(), 1, orderCoupon.getUserPhone()); - JSONObject couponDetail = response.getJSONObject("ticketDetail"); - JSONArray codeList = response.getJSONArray("codeList"); - for (Object data : codeList) { - couponNo.setExpireTime(DateUtil.format(couponDetail.getString("expiredDate"), "yyyy-MM-dd")); - couponNo.setDeliverTime(new Date()); - couponNo.setGoodsVpdSourceCouNo(ChongQingCNPCCouponService.decryptCouponCode(String.valueOf(data))); - couponNo.setStatus(OrderCouponNoStatusEnum.status2.getCode()); - orderCouponNoService.editData(couponNo); + } else if (vpd.getSource() == GoodsVpdSourceEnum.type5.getCode()) { + // 预发码 + JSONObject preSendCoupon = ChongQingCNPCCouponService.preSendCoupon(orderCoupon.getGoodsVpdKey(), couponNo.getOrderNo(), 1, orderCoupon.getUserPhone()); + if (preSendCoupon.getInteger("status").equals(1)) { + // 给用户发码 + JSONObject response = ChongQingCNPCCouponService.sendCNPCTicket(orderCoupon.getGoodsVpdKey(), couponNo.getOrderNo(), 1, orderCoupon.getUserPhone()); + JSONObject couponDetail = response.getJSONObject("ticketDetail"); + JSONArray codeList = response.getJSONArray("codeList"); + for (Object data : codeList) { + couponNo.setExpireTime(DateUtil.format(couponDetail.getString("expiredDate"), "yyyy-MM-dd")); + couponNo.setDeliverTime(new Date()); + couponNo.setGoodsVpdSourceCouNo(ChongQingCNPCCouponService.decryptCouponCode(String.valueOf(data))); + couponNo.setStatus(OrderCouponNoStatusEnum.status2.getCode()); + orderCouponNoService.editData(couponNo); + } } - } - } else if (vpd.getSource() == GoodsVpdSourceEnum.type6.getCode()) { + } else if (vpd.getSource() == GoodsVpdSourceEnum.type6.getCode()) { - } else if (vpd.getSource() == GoodsVpdSourceEnum.type7.getCode()) { - // 发放卡券 - JSONObject jsonObject = PetroConfig.getCoupon(orderCoupon.getGoodsVpdKey(), orderCoupon.getUserPhone()); - if (!jsonObject.getString("resultCode").equals("0000")) { - throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , jsonObject.getString("errMsg")); - } - String data = PetroConfig.decrypt(jsonObject.getString("jsonResult")); - JSONObject object = JSONObject.parseObject(data); - couponNo.setExpireTime(vpd.getSalesEndTime()); - couponNo.setDeliverTime(new Date()); - couponNo.setGoodsVpdSourceCouNo(object.getString("voucher")); - couponNo.setStatus(OrderCouponNoStatusEnum.status2.getCode()); - orderCouponService.editData(orderCoupon); - - } else if (vpd.getSource() == GoodsVpdSourceEnum.type10.getCode()) { - // 发放卡券 - JSONObject jsonObject = PcytCNPCCouponConfig.getCoupon(couponNo.getOrderNo() , orderCoupon.getUserPhone() , orderCoupon.getGoodsVpdKey()); - if (!jsonObject.getString("code").equals("200")) { - throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , jsonObject.getString("errMsg")); + } else if (vpd.getSource() == GoodsVpdSourceEnum.type7.getCode()) { + // 发放卡券 + JSONObject jsonObject = PetroConfig.getCoupon(orderCoupon.getGoodsVpdKey(), orderCoupon.getUserPhone()); + if (!jsonObject.getString("resultCode").equals("0000")) { + throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , jsonObject.getString("errMsg")); + } + String data = PetroConfig.decrypt(jsonObject.getString("jsonResult")); + JSONObject object = JSONObject.parseObject(data); + couponNo.setExpireTime(vpd.getSalesEndTime()); + couponNo.setDeliverTime(new Date()); + couponNo.setGoodsVpdSourceCouNo(object.getString("voucher")); + couponNo.setStatus(OrderCouponNoStatusEnum.status2.getCode()); + orderCouponService.editData(orderCoupon); + + } else if (vpd.getSource() == GoodsVpdSourceEnum.type10.getCode()) { + // 发放卡券 + JSONObject jsonObject = PcytCNPCCouponConfig.getCoupon(couponNo.getOrderNo() , orderCoupon.getUserPhone() , orderCoupon.getGoodsVpdKey()); + if (!jsonObject.getString("code").equals("200")) { + throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , jsonObject.getString("errMsg")); + } + JSONObject object = jsonObject.getJSONObject("data"); + couponNo.setExpireTime(vpd.getSalesEndTime()); + couponNo.setDeliverTime(new Date()); + couponNo.setGoodsVpdSourceCouNo(object.getString("couponCode")); + couponNo.setStatus(OrderCouponNoStatusEnum.status2.getCode()); + orderCouponNoService.editData(couponNo); } - JSONObject object = jsonObject.getJSONObject("data"); - couponNo.setExpireTime(vpd.getSalesEndTime()); - couponNo.setDeliverTime(new Date()); - couponNo.setGoodsVpdSourceCouNo(object.getString("couponCode")); - couponNo.setStatus(OrderCouponNoStatusEnum.status2.getCode()); - orderCouponNoService.editData(couponNo); - } - } catch (Exception e) { - couponNo.setExceptionStatus(true); - orderCouponService.editData(orderCoupon); + } catch (Exception e) { + couponNo.setExceptionStatus(true); + orderCouponService.editData(orderCoupon); + } } } + + orderCoupon.setTotalPrice(childOrder.getProductTotalPrice()); orderCoupon.setTotalDeductionPrice(childOrder.getTotalDeductionPrice()); orderCoupon.setCouponDiscountPrice(childOrder.getCouponDiscountPrice()); @@ -323,5 +350,36 @@ public class OrderPaySuccessService { } } + public void meiTuan(OrderModel order,BsOrderChild childOrder) throws Exception { + // 推送订单 + // 查询美团订单 + BsOrderMeituan orderMeiTuan = bsOrderMeiTuanService.findOrderMeiTuan(childOrder.getChildOrderNo()); + if (orderMeiTuan != null) { + Map map = new HashMap<>(); + map.put("ts" , new Date().getTime()); + map.put("entId" , orderMeiTuan.getEntId()); + map.put("tradeNo" , orderMeiTuan.getTradeNo()); + map.put("thirdTradeNo" , orderMeiTuan.getThirdTradeNo()); + map.put("tradeAmount" , orderMeiTuan.getTradeAmount()); + + orderMeiTuan.setTotalPrice(childOrder.getProductTotalPrice()); + orderMeiTuan.setTotalDeductionPrice(childOrder.getTotalDeductionPrice()); + orderMeiTuan.setCouponDiscountPrice(childOrder.getCouponDiscountPrice()); + orderMeiTuan.setIntegralDiscountPrice(childOrder.getIntegralDiscountPrice()); + orderMeiTuan.setPayRealPrice(childOrder.getSurplusRefundPrice()); + orderMeiTuan.setPayChannel(order.getPayChannel()); + orderMeiTuan.setPayType(order.getPayType()); + orderMeiTuan.setPaySerialNo(order.getPaySerialNo()); + orderMeiTuan.setPayTime(order.getPayTime()); + orderMeiTuan.setUpdateTime(new Date()); + orderMeiTuan.setStatus(OrderChildStatusEnum.status2.getCode()); + bsOrderMeiTuanService.update(orderMeiTuan); + + MeiTuanService.paySuccess(map , orderMeiTuan.getNotifyUrl()); + + } + + } + } diff --git a/service/src/main/java/com/hfkj/service/order/impl/BsOrderRefundServiceImpl.java b/service/src/main/java/com/hfkj/service/order/impl/BsOrderRefundServiceImpl.java index acbe6b7..cd01f83 100644 --- a/service/src/main/java/com/hfkj/service/order/impl/BsOrderRefundServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/order/impl/BsOrderRefundServiceImpl.java @@ -246,6 +246,107 @@ public class BsOrderRefundServiceImpl implements BsOrderRefundService { } + @Override + @Transactional(propagation= Propagation.REQUIRES_NEW,rollbackFor= {RuntimeException.class}) + public BsOrderRefund meiTuanRefund(String childOrderNo, String tradeNo , BigDecimal refundPrice, String remark) { + + // 查询子订单 + OrderChildModel orderChild = orderChildService.getDetail(childOrderNo); + if (orderChild == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的子订单"); + } +// if (productCount > orderChild.getSurplusRefundCount()) { +// throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "退款失败!退货数量超过子订单可退数量"); +// } + // 查询交易订单 + BsOrder order = orderService.getOrder(orderChild.getOrderNo()); + if (order == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的交易订单"); + } + + // 创建退款订单 + BsOrderRefund orderRefund = new BsOrderRefund(); + orderRefund.setMerId(orderChild.getMerId()); + orderRefund.setOrderNo(orderChild.getOrderNo()); + orderRefund.setOrderChildNo(orderChild.getChildOrderNo()); + orderRefund.setUserId(order.getUserId()); + orderRefund.setUserPhone(order.getUserPhone()); + // 退款订单号 退款标识:R + 时间 + 随机3位数字 + orderRefund.setRefundOrderNo("R"+DateUtil.date2String(new Date(), "yyMMddHHmmss") + RandomUtils.number(3, false)); + orderRefund.setRefundPayChannel(order.getPayChannel()); + orderRefund.setReufndPayType(order.getPayType()); + +// if (orderChild.getSurplusRefundCount().equals(productCount)) { +// // 全部退款 +// orderRefund.setRefundPrice(orderChild.getSurplusRefundPrice()); +// orderRefund.setRefundIntegral(orderChild.getSurplusRefundIntegral()); +// } else { +// // 部分退款 +// // 计算单价 +// BigDecimal unitPrice = orderChild.getSurplusRefundPrice().divide(new BigDecimal(orderChild.getProductCount().toString()), 2, BigDecimal.ROUND_DOWN).setScale(2); +// BigDecimal unitPriceIntegral = new BigDecimal(orderChild.getSurplusRefundIntegral().toString()).divide(new BigDecimal("100")) +// .divide(new BigDecimal(orderChild.getProductCount().toString()), 2, BigDecimal.ROUND_DOWN).setScale(2); +// +// orderRefund.setRefundPrice(unitPrice.multiply(new BigDecimal(productCount.toString()))); +// orderRefund.setRefundIntegral(unitPriceIntegral.multiply(new BigDecimal("100")).longValue()); +// } + + + if (orderRefund.getRefundIntegral() > 0L) { + Map opUser = new HashMap<>(); + opUser.put("opUserType", orderRefund.getOpUserType()); + opUser.put("opUserId", orderRefund.getUserId()); + opUser.put("opUserPhone", orderRefund.getUserPhone()); + + Map source = new HashMap<>(); + source.put("sourceType", UserIntegralRecordSourceTypeEnum.type2.getCode()); + source.put("sourceId", orderChild.getId()); + source.put("sourceOrderNo", orderChild.getChildOrderNo()); + source.put("sourceContent", "商品订单退款退回积分"); + + // 退款积分 + userIntegralService.entry(orderRefund.getUserId(),orderRefund.getRefundIntegral(), opUser, source); + } + + orderRefund.setRefundRemark(remark); + orderRefund.setRefundStatus(OrderRefundStatusEnum.status1.getCode()); + orderRefund.setAccountMerchantNo(orderChild.getSettleAccount()); + orderRefund.setAccountMerchantKey(orderChild.getSettleAccountKey()); + editData(orderRefund); + + // 资金退款 + orderRefund.setRefundStatus(refundMoney(orderRefund)?OrderRefundStatusEnum.status2.getCode():OrderRefundStatusEnum.status3.getCode()); + editData(orderRefund); + + // 退款成功 + if (orderRefund.getRefundStatus().equals(OrderRefundStatusEnum.status2.getCode())) { + // 修改子订单可退数量、金额、积分 +// orderChild.setSurplusRefundCount(orderChild.getSurplusRefundCount() - productCount); + orderChild.setSurplusRefundPrice(orderChild.getSurplusRefundPrice().subtract(orderRefund.getRefundPrice())); + orderChild.setSurplusRefundIntegral(orderChild.getSurplusRefundIntegral() - orderRefund.getRefundIntegral()); + orderChild.setStatus(orderChild.getSurplusRefundCount()==0?OrderChildStatusEnum.status4.getCode():orderChild.getStatus()); + + // 退款业务处理 + orderRefundSuccessService.orderRefundHandle(orderChild); + orderChildService.editData(orderChild); + + // 查询子订单已全部退款 + Map map = new HashMap<>(); + map.put("orderNo", orderChild.getOrderNo()); + List orderChildList = orderChildService.getList(map); + if (orderChildList.size() == orderChildList.stream().filter(o->o.getStatus().equals(OrderChildStatusEnum.status4.getCode())).collect(Collectors.toList()).size()) { + order.setOrderStatus(OrderStatusEnum.status4.getCode()); + order.setRefundTime(new Date()); + orderService.editData(order); + } + } + + // 删除缓存 + orderService.cacheDelete(order.getOrderNo()); + return orderRefund; + + } + @Override public BsOrderRefund getRefund(String refundOrderNo) { BsOrderRefundExample example = new BsOrderRefundExample(); diff --git a/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java b/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java index 3b92d76..6a5b87e 100644 --- a/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java @@ -151,6 +151,8 @@ public class BsOrderServiceImpl implements BsOrderService { child = orderCreateService.cinema(order, child); }else if (child.getProductType().equals(OrderChildProductTypeEnum.type4.getCode())) { child = orderCreateService.starbucks(order, child); + }else if (child.getProductType().equals(OrderChildProductTypeEnum.type5.getCode())) { + child = orderCreateService.meituan(order, child); } child.setProductTotalPrice(child.getProductPrice().multiply(new BigDecimal(child.getProductCount().toString()))); child.setStatus(OrderChildStatusEnum.status1.getCode()); @@ -291,7 +293,6 @@ public class BsOrderServiceImpl implements BsOrderService { // 订单入库 editData(order); - if (order.getOrderStatus().equals(OrderStatusEnum.status1.getCode())) { // 10分钟内未支付,自动取消订单 Message rocketMsg = MessageBuilder.withPayload(order).build(); diff --git a/service/src/main/java/com/hfkj/sysenum/order/OrderChildProductTypeEnum.java b/service/src/main/java/com/hfkj/sysenum/order/OrderChildProductTypeEnum.java index 48e9aee..d68457e 100644 --- a/service/src/main/java/com/hfkj/sysenum/order/OrderChildProductTypeEnum.java +++ b/service/src/main/java/com/hfkj/sysenum/order/OrderChildProductTypeEnum.java @@ -15,6 +15,7 @@ public enum OrderChildProductTypeEnum { type2(2, "虚拟产品"), type3(3, "千猪电影票"), type4(4, "千猪星巴克"), + type5(5, "美团"), ; private int code;