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 0000000..0cbe24f Binary files /dev/null and b/cweb/lib/open-platform-sdk-1.0.21.jar differ 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/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/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/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/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/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/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/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/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..fc51ee7 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()) { @@ -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..e180b77 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 @@ -27,6 +27,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; @@ -151,6 +152,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 +294,6 @@ public class BsOrderServiceImpl implements BsOrderService { // 订单入库 editData(order); - if (order.getOrderStatus().equals(OrderStatusEnum.status1.getCode())) { // 10分钟内未支付,自动取消订单 Message rocketMsg = MessageBuilder.withPayload(order).build(); @@ -485,14 +487,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/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; 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; + } }