Merge remote-tracking branch '群晖/master'
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -36,3 +36,4 @@ build/
|
||||
|
||||
### Mac OS ###
|
||||
.DS_Store
|
||||
/logs/app.log
|
||||
|
||||
228
logs/app.log
Normal file
228
logs/app.log
Normal file
@@ -0,0 +1,228 @@
|
||||
2025-07-13 18:24:00 [main] INFO cn.van.Application - Starting Application using Java 17.0.14 with PID 44180 (D:\code\jd\target\classes started by CC in D:\code\jd)
|
||||
2025-07-13 18:24:00 [main] DEBUG cn.van.Application - Running with Spring Boot v3.1.5, Spring v6.0.13
|
||||
2025-07-13 18:24:00 [main] INFO cn.van.Application - The following 1 profile is active: "dev"
|
||||
2025-07-13 18:24:02 [main] INFO o.a.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-6666"]
|
||||
2025-07-13 18:24:02 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat]
|
||||
2025-07-13 18:24:02 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.15]
|
||||
2025-07-13 18:24:02 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext
|
||||
2025-07-13 18:24:09 [main] INFO o.a.r.s.a.RocketMQAutoConfiguration - a producer (wx_producer) init on namesrv 192.168.8.88:39876
|
||||
2025-07-13 18:24:13 [main] ERROR o.a.r.spring.core.RocketMQTemplate - syncSend failed. destination:wx-message, message:GenericMessage [payload={"data":{"msg":"[ 18:24:07 2025-07-13 ] \r\nJarvis 更新完成 [亲亲][亲亲][亲亲] ","wxid":"wxid_ytpc72mdoskt22"},"type":"sendText2"}, headers={TAGS=wx, id=1c782993-2b30-94a7-e131-7e2f9727d2f6, timestamp=1752402251367}], detail exception info:
|
||||
java.lang.IllegalStateException: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to null failed
|
||||
at org.apache.rocketmq.client.impl.factory.MQClientInstance.updateTopicRouteInfoFromNameServer(MQClientInstance.java:843)
|
||||
at org.apache.rocketmq.client.impl.factory.MQClientInstance.updateTopicRouteInfoFromNameServer(MQClientInstance.java:574)
|
||||
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.tryToFindTopicPublishInfo(DefaultMQProducerImpl.java:887)
|
||||
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:745)
|
||||
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1564)
|
||||
at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:475)
|
||||
at org.apache.rocketmq.spring.core.RocketMQTemplate.syncSend(RocketMQTemplate.java:687)
|
||||
at org.apache.rocketmq.spring.core.RocketMQTemplate.syncSend(RocketMQTemplate.java:487)
|
||||
at org.apache.rocketmq.spring.core.RocketMQTemplate.syncSend(RocketMQTemplate.java:475)
|
||||
at org.apache.rocketmq.spring.core.RocketMQTemplate.doSend(RocketMQTemplate.java:1142)
|
||||
at org.apache.rocketmq.spring.core.RocketMQTemplate.doSend(RocketMQTemplate.java:61)
|
||||
at org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:109)
|
||||
at cn.van.business.mq.MessageProducerService.sendMessage(MessageProducerService.java:54)
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
|
||||
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
|
||||
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:699)
|
||||
at cn.van.business.mq.MessageProducerService$$SpringCGLIB$$0.sendMessage(<generated>)
|
||||
at cn.van.business.util.WXUtil.sendTextMessage(WXUtil.java:327)
|
||||
at cn.van.business.util.WXUtil.initSuperAdmins(WXUtil.java:243)
|
||||
at cn.van.business.util.WXUtil.<init>(WXUtil.java:100)
|
||||
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
|
||||
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
|
||||
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
|
||||
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
|
||||
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
|
||||
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211)
|
||||
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:110)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:318)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:309)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1352)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1189)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
|
||||
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
|
||||
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417)
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:910)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:788)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1352)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1189)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
|
||||
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
|
||||
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417)
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:910)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:788)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1352)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1189)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
|
||||
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
|
||||
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417)
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337)
|
||||
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:764)
|
||||
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:747)
|
||||
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:145)
|
||||
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:492)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1416)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:597)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
|
||||
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973)
|
||||
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:950)
|
||||
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616)
|
||||
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
|
||||
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:738)
|
||||
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:440)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:316)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295)
|
||||
at cn.van.Application.main(Application.java:31)
|
||||
Caused by: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to null failed
|
||||
at org.apache.rocketmq.remoting.netty.NettyRemotingClient.invokeSync(NettyRemotingClient.java:572)
|
||||
at org.apache.rocketmq.client.impl.MQClientAPIImpl.getTopicRouteInfoFromNameServer(MQClientAPIImpl.java:2050)
|
||||
at org.apache.rocketmq.client.impl.MQClientAPIImpl.getTopicRouteInfoFromNameServer(MQClientAPIImpl.java:2041)
|
||||
at org.apache.rocketmq.client.impl.factory.MQClientInstance.updateTopicRouteInfoFromNameServer(MQClientInstance.java:782)
|
||||
... 91 common frames omitted
|
||||
2025-07-13 18:24:13 [main] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'WXListener': Unsatisfied dependency expressed through field 'wxMessageConsumer': Error creating bean with name 'wxMessageConsumer' defined in file [D:\code\jd\target\classes\cn\van\business\util\WxMessageConsumer.class]: Unsatisfied dependency expressed through constructor parameter 1: Error creating bean with name 'otherUtil' defined in file [D:\code\jd\target\classes\cn\van\business\util\OtherUtil.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'WXUtil' defined in file [D:\code\jd\target\classes\cn\van\business\util\WXUtil.class]: Failed to instantiate [cn.van.business.util.WXUtil]: Constructor threw exception
|
||||
2025-07-13 18:24:14 [main] INFO o.a.catalina.core.StandardService - Stopping service [Tomcat]
|
||||
2025-07-13 18:24:14 [main] ERROR o.s.boot.SpringApplication - Application run failed
|
||||
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'WXListener': Unsatisfied dependency expressed through field 'wxMessageConsumer': Error creating bean with name 'wxMessageConsumer' defined in file [D:\code\jd\target\classes\cn\van\business\util\WxMessageConsumer.class]: Unsatisfied dependency expressed through constructor parameter 1: Error creating bean with name 'otherUtil' defined in file [D:\code\jd\target\classes\cn\van\business\util\OtherUtil.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'WXUtil' defined in file [D:\code\jd\target\classes\cn\van\business\util\WXUtil.class]: Failed to instantiate [cn.van.business.util.WXUtil]: Constructor threw exception
|
||||
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:767)
|
||||
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:747)
|
||||
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:145)
|
||||
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:492)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1416)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:597)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
|
||||
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973)
|
||||
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:950)
|
||||
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616)
|
||||
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
|
||||
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:738)
|
||||
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:440)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:316)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295)
|
||||
at cn.van.Application.main(Application.java:31)
|
||||
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'wxMessageConsumer' defined in file [D:\code\jd\target\classes\cn\van\business\util\WxMessageConsumer.class]: Unsatisfied dependency expressed through constructor parameter 1: Error creating bean with name 'otherUtil' defined in file [D:\code\jd\target\classes\cn\van\business\util\OtherUtil.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'WXUtil' defined in file [D:\code\jd\target\classes\cn\van\business\util\WXUtil.class]: Failed to instantiate [cn.van.business.util.WXUtil]: Constructor threw exception
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:801)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1352)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1189)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
|
||||
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
|
||||
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417)
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337)
|
||||
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:764)
|
||||
... 20 common frames omitted
|
||||
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'otherUtil' defined in file [D:\code\jd\target\classes\cn\van\business\util\OtherUtil.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'WXUtil' defined in file [D:\code\jd\target\classes\cn\van\business\util\WXUtil.class]: Failed to instantiate [cn.van.business.util.WXUtil]: Constructor threw exception
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:801)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1352)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1189)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
|
||||
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
|
||||
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417)
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:910)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:788)
|
||||
... 33 common frames omitted
|
||||
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'WXUtil' defined in file [D:\code\jd\target\classes\cn\van\business\util\WXUtil.class]: Failed to instantiate [cn.van.business.util.WXUtil]: Constructor threw exception
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:321)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:309)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1352)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1189)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560)
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
|
||||
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
|
||||
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1417)
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:910)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:788)
|
||||
... 47 common frames omitted
|
||||
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [cn.van.business.util.WXUtil]: Constructor threw exception
|
||||
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:224)
|
||||
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:110)
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:318)
|
||||
... 61 common frames omitted
|
||||
Caused by: org.springframework.messaging.MessagingException: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to null failed
|
||||
at org.apache.rocketmq.spring.core.RocketMQTemplate.syncSend(RocketMQTemplate.java:695)
|
||||
at org.apache.rocketmq.spring.core.RocketMQTemplate.syncSend(RocketMQTemplate.java:487)
|
||||
at org.apache.rocketmq.spring.core.RocketMQTemplate.syncSend(RocketMQTemplate.java:475)
|
||||
at org.apache.rocketmq.spring.core.RocketMQTemplate.doSend(RocketMQTemplate.java:1142)
|
||||
at org.apache.rocketmq.spring.core.RocketMQTemplate.doSend(RocketMQTemplate.java:61)
|
||||
at org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:109)
|
||||
at cn.van.business.mq.MessageProducerService.sendMessage(MessageProducerService.java:54)
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
|
||||
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
|
||||
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:699)
|
||||
at cn.van.business.mq.MessageProducerService$$SpringCGLIB$$0.sendMessage(<generated>)
|
||||
at cn.van.business.util.WXUtil.sendTextMessage(WXUtil.java:327)
|
||||
at cn.van.business.util.WXUtil.initSuperAdmins(WXUtil.java:243)
|
||||
at cn.van.business.util.WXUtil.<init>(WXUtil.java:100)
|
||||
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
|
||||
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
|
||||
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
|
||||
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
|
||||
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
|
||||
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211)
|
||||
... 63 common frames omitted
|
||||
Caused by: java.lang.IllegalStateException: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to null failed
|
||||
at org.apache.rocketmq.client.impl.factory.MQClientInstance.updateTopicRouteInfoFromNameServer(MQClientInstance.java:843)
|
||||
at org.apache.rocketmq.client.impl.factory.MQClientInstance.updateTopicRouteInfoFromNameServer(MQClientInstance.java:574)
|
||||
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.tryToFindTopicPublishInfo(DefaultMQProducerImpl.java:887)
|
||||
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:745)
|
||||
at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1564)
|
||||
at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:475)
|
||||
at org.apache.rocketmq.spring.core.RocketMQTemplate.syncSend(RocketMQTemplate.java:687)
|
||||
... 85 common frames omitted
|
||||
Caused by: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to null failed
|
||||
at org.apache.rocketmq.remoting.netty.NettyRemotingClient.invokeSync(NettyRemotingClient.java:572)
|
||||
at org.apache.rocketmq.client.impl.MQClientAPIImpl.getTopicRouteInfoFromNameServer(MQClientAPIImpl.java:2050)
|
||||
at org.apache.rocketmq.client.impl.MQClientAPIImpl.getTopicRouteInfoFromNameServer(MQClientAPIImpl.java:2041)
|
||||
at org.apache.rocketmq.client.impl.factory.MQClientInstance.updateTopicRouteInfoFromNameServer(MQClientInstance.java:782)
|
||||
... 91 common frames omitted
|
||||
19
out/production/jd/cn/van/business/model/jd/update-schema.sql
Normal file
19
out/production/jd/cn/van/business/model/jd/update-schema.sql
Normal file
@@ -0,0 +1,19 @@
|
||||
CREATE TABLE product_order
|
||||
(
|
||||
id BIGINT AUTO_INCREMENT NOT NULL,
|
||||
sku_name VARCHAR(255) NULL,
|
||||
sku_type INT NULL,
|
||||
order_id VARCHAR(255) NULL,
|
||||
order_time datetime NULL,
|
||||
order_account VARCHAR(255) NULL,
|
||||
is_reviewed BIT(1) NULL,
|
||||
review_time datetime NULL,
|
||||
is_cashback_received BIT(1) NULL,
|
||||
cashback_time datetime NULL,
|
||||
recipient_name VARCHAR(255) NULL,
|
||||
recipient_phone VARCHAR(255) NULL,
|
||||
recipient_address VARCHAR(255) NULL,
|
||||
who_order VARCHAR(255) NULL,
|
||||
from_wxid VARCHAR(255) NULL,
|
||||
CONSTRAINT pk_product_order PRIMARY KEY (id)
|
||||
);
|
||||
18
out/production/jd/cn/van/business/model/update-schema.sql
Normal file
18
out/production/jd/cn/van/business/model/update-schema.sql
Normal file
@@ -0,0 +1,18 @@
|
||||
CREATE TABLE product_order
|
||||
(
|
||||
id BIGINT AUTO_INCREMENT NOT NULL,
|
||||
sku_name VARCHAR(255) NULL,
|
||||
sku_type INT NULL,
|
||||
order_id VARCHAR(255) NULL,
|
||||
order_time datetime NULL,
|
||||
order_account VARCHAR(255) NULL,
|
||||
is_reviewed BIT(1) NULL,
|
||||
review_time datetime NULL,
|
||||
is_cashback_received BIT(1) NULL,
|
||||
cashback_time datetime NULL,
|
||||
recipient_name VARCHAR(255) NULL,
|
||||
recipient_phone VARCHAR(255) NULL,
|
||||
recipient_address VARCHAR(255) NULL,
|
||||
who_order VARCHAR(255) NULL,
|
||||
CONSTRAINT pk_product_order PRIMARY KEY (id)
|
||||
);
|
||||
@@ -36,6 +36,9 @@ import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static cn.van.business.util.JDUtil.*;
|
||||
|
||||
/**
|
||||
* 京东商品服务类,抽取来源于JDUtil
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class JDProductService {
|
||||
@@ -59,6 +62,13 @@ public class JDProductService {
|
||||
this.xbMessageItemRepository = xbMessageItemRepository;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 生成转链和方案的方法(JSON数组格式)
|
||||
*
|
||||
* @param message 方案内容,包含商品链接
|
||||
* @return 处理后的方案,以标准JSON数组格式返回,每个商品及其文案为一个独立对象
|
||||
*/
|
||||
public synchronized JSONArray generatePromotionContentAsJsonArray(String message) {
|
||||
JSONArray resultArray = new JSONArray();
|
||||
List<String> urls = extractUJDUrls(message);
|
||||
@@ -84,7 +94,9 @@ public class JDProductService {
|
||||
}
|
||||
|
||||
JSONObject productObj = new JSONObject();
|
||||
productObj.put("url", url);
|
||||
productObj.put("originalUrl", url);
|
||||
|
||||
// 商品基本信息
|
||||
productObj.put("materialUrl", productInfo.getData()[0].getMaterialUrl());
|
||||
productObj.put("oriItemId", productInfo.getData()[0].getOriItemId());
|
||||
productObj.put("owner", productInfo.getData()[0].getOwner());
|
||||
@@ -109,7 +121,29 @@ public class JDProductService {
|
||||
}
|
||||
productObj.put("images", imageArray);
|
||||
|
||||
// 生成转链后的短链
|
||||
try {
|
||||
String shortUrl = transfer(url, null);
|
||||
if (shortUrl != null && !shortUrl.isEmpty()) {
|
||||
productObj.put("shortUrl", shortUrl);
|
||||
productObj.put("transferSuccess", true);
|
||||
// 将短链替换原始链接,用于后续文案生成
|
||||
url = shortUrl;
|
||||
} else {
|
||||
productObj.put("shortUrl", url); // 如果转链失败,使用原链接
|
||||
productObj.put("transferSuccess", false);
|
||||
log.warn("转链失败,使用原链接: {}", url);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("生成转链时发生异常: {}", url, e);
|
||||
productObj.put("shortUrl", url); // 转链异常时使用原链接
|
||||
productObj.put("transferSuccess", false);
|
||||
productObj.put("transferError", e.getMessage());
|
||||
}
|
||||
|
||||
// 文案信息
|
||||
JSONArray wenanArray = new JSONArray();
|
||||
|
||||
String title = "";
|
||||
try {
|
||||
if (!message.equals(url)) {
|
||||
@@ -126,6 +160,7 @@ public class JDProductService {
|
||||
log.error("文案首行异常", e);
|
||||
}
|
||||
|
||||
// 生成各种文案
|
||||
JSONObject wenan1 = new JSONObject();
|
||||
wenan1.put("type", "标价到手-方案1");
|
||||
wenan1.put("content", "(标价到手) " + title + cleanSkuName + "\n" + WENAN_FANAN_LQD.replaceAll("更新", format + "更新"));
|
||||
@@ -146,9 +181,14 @@ public class JDProductService {
|
||||
wenan4.put("content", "【教你下单】 " + title + cleanSkuName + "\n" + WENAN_FANAN_BX.replaceAll("信息更新日期:", "信息更新日期:" + format));
|
||||
wenanArray.add(wenan4);
|
||||
|
||||
productObj.put("wenan", wenanArray);
|
||||
|
||||
// 添加通用文案 - 使用转链后的短链替换原始链接
|
||||
JSONObject commonWenan = new JSONObject();
|
||||
commonWenan.put("type", "通用文案");
|
||||
commonWenan.put("content", format + FANAN_COMMON + message);
|
||||
// 将原始消息中的链接替换为转链后的短链
|
||||
String messageWithShortUrl = message.replace(productObj.getString("originalUrl"), url);
|
||||
commonWenan.put("content", format + FANAN_COMMON + messageWithShortUrl);
|
||||
wenanArray.add(commonWenan);
|
||||
|
||||
productObj.put("wenan", wenanArray);
|
||||
@@ -162,9 +202,17 @@ public class JDProductService {
|
||||
resultArray.add(errorObj);
|
||||
}
|
||||
}
|
||||
|
||||
return resultArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询商品信息
|
||||
*
|
||||
* @param uJDUrl 京东商品链接
|
||||
* @return 商品查询结果
|
||||
* @throws Exception 查询异常
|
||||
*/
|
||||
public GoodsQueryResult queryProductInfoByUJDUrl(String uJDUrl) throws Exception {
|
||||
UnionOpenGoodsQueryResponse response = getUnionOpenGoodsQueryRequest(uJDUrl);
|
||||
if (response == null || response.getQueryResult() == null) return null;
|
||||
@@ -173,8 +221,16 @@ public class JDProductService {
|
||||
return queryResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* 调用京东开放平台接口查询商品信息
|
||||
*
|
||||
* @param uJDUrl 京东商品链接
|
||||
* @return 京东商品查询响应
|
||||
* @throws Exception 查询异常
|
||||
*/
|
||||
public UnionOpenGoodsQueryResponse getUnionOpenGoodsQueryRequest(String uJDUrl) throws Exception {
|
||||
JdClient client = new DefaultJdClient(SERVER_URL, ACCESS_TOKEN, LPF_APP_KEY_WZ, LPF_SECRET_KEY_WZ);
|
||||
|
||||
UnionOpenGoodsQueryRequest request = new UnionOpenGoodsQueryRequest();
|
||||
GoodsReq goodsReq = new GoodsReq();
|
||||
goodsReq.setKeyword(uJDUrl);
|
||||
@@ -195,6 +251,7 @@ public class JDProductService {
|
||||
owner = (owner != null && !owner.isEmpty()) ? owner : "g";
|
||||
|
||||
JdClient client = new DefaultJdClient(SERVER_URL, ACCESS_TOKEN, LPF_APP_KEY_WZ, LPF_SECRET_KEY_WZ);
|
||||
|
||||
UnionOpenCouponGiftGetRequest request = new UnionOpenCouponGiftGetRequest();
|
||||
CreateGiftCouponReq couponReq = new CreateGiftCouponReq();
|
||||
couponReq.setSkuMaterialId(skuId);
|
||||
@@ -236,8 +293,16 @@ public class JDProductService {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 转链接口:通过商品链接、领券链接、活动链接获取普通推广链接或优惠券二合一推广链接
|
||||
*
|
||||
* @param url 原始链接
|
||||
* @param giftCouponKey 礼金Key(可选)
|
||||
* @return 转换后的短链接
|
||||
*/
|
||||
public String transfer(String url, String giftCouponKey) {
|
||||
JdClient client = new DefaultJdClient(SERVER_URL, ACCESS_TOKEN, LPF_APP_KEY_WZ, LPF_SECRET_KEY_WZ);
|
||||
|
||||
UnionOpenPromotionBysubunionidGetRequest request = new UnionOpenPromotionBysubunionidGetRequest();
|
||||
PromotionCodeReq promotionCodeReq = new PromotionCodeReq();
|
||||
promotionCodeReq.setSceneId(1);
|
||||
@@ -245,6 +310,7 @@ public class JDProductService {
|
||||
if (giftCouponKey != null && !giftCouponKey.isEmpty()) {
|
||||
promotionCodeReq.setGiftCouponKey(giftCouponKey);
|
||||
}
|
||||
|
||||
request.setPromotionCodeReq(promotionCodeReq);
|
||||
request.setVersion("1.0");
|
||||
|
||||
@@ -260,6 +326,14 @@ public class JDProductService {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将礼金信息写入Redis
|
||||
*
|
||||
* @param skuId 商品SKU ID
|
||||
* @param giftKey 礼金Key
|
||||
* @param skuName 商品名称
|
||||
* @param owner 商品所有者
|
||||
*/
|
||||
public void saveGiftCouponToRedis(String skuId, String giftKey, String skuName, String owner) {
|
||||
String key = "gift_coupon:" + skuId;
|
||||
String hashKey = giftKey;
|
||||
@@ -271,9 +345,16 @@ public class JDProductService {
|
||||
data.put("owner", owner);
|
||||
data.put("expireTime", expireTime.format(DateTimeFormatter.ISO_DATE_TIME));
|
||||
|
||||
// 存入 Redis Hash
|
||||
redisTemplate.opsForHash().put(key, hashKey, JSON.toJSONString(data));
|
||||
}
|
||||
|
||||
/**
|
||||
* 提取商品价格信息
|
||||
*
|
||||
* @param productInfo 商品查询结果
|
||||
* @return 包含价格信息的Map
|
||||
*/
|
||||
public Map<String, Object> extractPriceInfo(GoodsQueryResult productInfo) {
|
||||
Map<String, Object> priceMap = new HashMap<>();
|
||||
if (productInfo == null || productInfo.getData() == null || productInfo.getData().length == 0) {
|
||||
|
||||
@@ -107,7 +107,7 @@ public class JDUtil {
|
||||
5:全国联保,全国统一安装标准。支持官方 400,服务号查询,假一赔十。
|
||||
""";
|
||||
public static final String WENAN_FANAN_BX = "本人提供免费指导下单服务,一台也是团购价,细心指导\n" + "\n" + "【质量】官旗下单,包正的\n" + "【物流】您自己账户可跟踪,24小时发货\n" + "【售后】您自己账户直接联系,无忧售后\n" + "【安装】专业人员安装,全程无需您操心\n" + "【价格】标价就是到手价,骑共享单车去酒吧,该省省该花花\n" + "【服务】手把手教您下单,有问题随时咨询\n" + "【体验】所有服务都是官旗提供,价格有内部渠道优惠,同品质更优惠!\n" + "\n" + "信息更新日期:\n" + "\n" + "捡漏价格不定时有变动,优惠不等人,发「省份+型号」免费咨询当日最低价!";
|
||||
public static final String FANAN_COMMON = "\n1 文案复制到微,点击领券,到J东APP结算\n" + "2 换新可直接代消单,不用提供回收\n " + "3 独家虹包 https://u.jd.com/raa0eI4 至高可领256188 \n";
|
||||
public static final String FANAN_COMMON = "\n 文案复制到微x,点击领券,把商品加到J东,去APP结算才能显示折扣补贴\n";
|
||||
|
||||
/**
|
||||
* 内部单号:
|
||||
|
||||
Reference in New Issue
Block a user