| @@ -0,0 +1,32 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <classpath> | |||
| <classpathentry kind="src" output="target/classes" path="src/main/java"> | |||
| <attributes> | |||
| <attribute name="optional" value="true"/> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"> | |||
| <attributes> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry kind="src" output="target/test-classes" path="src/test/java"> | |||
| <attributes> | |||
| <attribute name="optional" value="true"/> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| <attribute name="test" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> | |||
| <attributes> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> | |||
| <attributes> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry kind="output" path="target/classes"/> | |||
| </classpath> | |||
| @@ -0,0 +1 @@ | |||
| /target/ | |||
| @@ -0,0 +1,23 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <projectDescription> | |||
| <name>mallinkCApi</name> | |||
| <comment></comment> | |||
| <projects> | |||
| </projects> | |||
| <buildSpec> | |||
| <buildCommand> | |||
| <name>org.eclipse.jdt.core.javabuilder</name> | |||
| <arguments> | |||
| </arguments> | |||
| </buildCommand> | |||
| <buildCommand> | |||
| <name>org.eclipse.m2e.core.maven2Builder</name> | |||
| <arguments> | |||
| </arguments> | |||
| </buildCommand> | |||
| </buildSpec> | |||
| <natures> | |||
| <nature>org.eclipse.jdt.core.javanature</nature> | |||
| <nature>org.eclipse.m2e.core.maven2Nature</nature> | |||
| </natures> | |||
| </projectDescription> | |||
| @@ -0,0 +1,4 @@ | |||
| eclipse.preferences.version=1 | |||
| encoding//src/main/java=UTF-8 | |||
| encoding//src/main/resources=UTF-8 | |||
| encoding/<project>=UTF-8 | |||
| @@ -0,0 +1,9 @@ | |||
| eclipse.preferences.version=1 | |||
| org.eclipse.jdt.core.compiler.codegen.methodParameters=generate | |||
| org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 | |||
| org.eclipse.jdt.core.compiler.compliance=1.8 | |||
| org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled | |||
| org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning | |||
| org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore | |||
| org.eclipse.jdt.core.compiler.release=disabled | |||
| org.eclipse.jdt.core.compiler.source=1.8 | |||
| @@ -0,0 +1,4 @@ | |||
| activeProfiles= | |||
| eclipse.preferences.version=1 | |||
| resolveWorkspaceProjects=true | |||
| version=1 | |||
| @@ -0,0 +1,3 @@ | |||
| [2022-06-10 15:49:45.818] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:76]-- ************************异常开始******************************* | |||
| [2022-06-10 15:49:45.822] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:79]-- URL:http://localhost:7000/C/api/car/tttttt token失效,请重新登录 | |||
| [2022-06-10 15:49:45.823] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:80]-- ************************异常结束******************************* | |||
| @@ -0,0 +1,243 @@ | |||
| [2023-03-20 18:13:00.913] [ERROR] [com.iformall.aop.RedisCacheAspect:156]-- CacheAspect proceed error , Illegal argument: [2] in com.iformall.controller.WxBusinessController.listAll() | |||
| org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: | |||
| ### Error querying database. Cause: java.lang.RuntimeException: java.lang.NullPointerException | |||
| ### The error may exist in file [/Users/lin/project/formallProject/mallinkService/target/classes/mapper/WxBusinessMapper.xml] | |||
| ### The error may involve com.iformall.mapper.WxBusinessMapper.findListForCoupon | |||
| ### The error occurred while executing a query | |||
| ### Cause: java.lang.RuntimeException: java.lang.NullPointerException | |||
| at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92) | |||
| at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440) | |||
| at com.sun.proxy.$Proxy126.selectList(Unknown Source) | |||
| at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:223) | |||
| at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:158) | |||
| at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:76) | |||
| at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:61) | |||
| at com.sun.proxy.$Proxy137.findListForCoupon(Unknown Source) | |||
| at com.iformall.service.impl.WxBusinessServiceImpl.findListAll(WxBusinessServiceImpl.java:63) | |||
| at com.iformall.controller.WxBusinessController.listAll(WxBusinessController.java:33) | |||
| at com.iformall.controller.WxBusinessController$$FastClassBySpringCGLIB$$d7e5c122.invoke(<generated>) | |||
| at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) | |||
| at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769) | |||
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) | |||
| at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:56) | |||
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) | |||
| at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:55) | |||
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) | |||
| at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:100) | |||
| at com.iformall.aop.RedisCacheAspect.round(RedisCacheAspect.java:145) | |||
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |||
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) | |||
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) | |||
| at java.lang.reflect.Method.invoke(Method.java:498) | |||
| at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644) | |||
| at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633) | |||
| at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) | |||
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) | |||
| at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95) | |||
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) | |||
| at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689) | |||
| at com.iformall.controller.WxBusinessController$$EnhancerBySpringCGLIB$$9d74be6d.listAll(<generated>) | |||
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |||
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) | |||
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) | |||
| at java.lang.reflect.Method.invoke(Method.java:498) | |||
| at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) | |||
| at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) | |||
| at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) | |||
| at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879) | |||
| at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) | |||
| at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) | |||
| at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) | |||
| at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) | |||
| at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) | |||
| at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) | |||
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:503) | |||
| at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) | |||
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:590) | |||
| at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) | |||
| at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) | |||
| at com.iformall.interceptor.HttpServletRequestWrapperFilter.doFilter(HttpServletRequestWrapperFilter.java:61) | |||
| at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) | |||
| at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) | |||
| at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) | |||
| at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) | |||
| at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) | |||
| at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) | |||
| at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) | |||
| at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) | |||
| at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) | |||
| at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) | |||
| at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68) | |||
| at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132) | |||
| at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) | |||
| at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) | |||
| at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) | |||
| at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) | |||
| at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) | |||
| at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) | |||
| at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) | |||
| at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) | |||
| at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) | |||
| at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269) | |||
| at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78) | |||
| at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133) | |||
| at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130) | |||
| at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) | |||
| at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) | |||
| at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249) | |||
| at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78) | |||
| at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99) | |||
| at io.undertow.server.Connectors.executeRootHandler(Connectors.java:376) | |||
| at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830) | |||
| at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) | |||
| at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) | |||
| at java.lang.Thread.run(Thread.java:750) | |||
| Caused by: org.apache.ibatis.exceptions.PersistenceException: | |||
| ### Error querying database. Cause: java.lang.RuntimeException: java.lang.NullPointerException | |||
| ### The error may exist in file [/Users/lin/project/formallProject/mallinkService/target/classes/mapper/WxBusinessMapper.xml] | |||
| ### The error may involve com.iformall.mapper.WxBusinessMapper.findListForCoupon | |||
| ### The error occurred while executing a query | |||
| ### Cause: java.lang.RuntimeException: java.lang.NullPointerException | |||
| at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) | |||
| at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:149) | |||
| at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) | |||
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |||
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) | |||
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) | |||
| at java.lang.reflect.Method.invoke(Method.java:498) | |||
| at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426) | |||
| ... 90 common frames omitted | |||
| Caused by: java.lang.RuntimeException: java.lang.NullPointerException | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.getEntityValue(ShardingSpherePlugin.java:281) | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.getValue(ShardingSpherePlugin.java:236) | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.getValue(ShardingSpherePlugin.java:225) | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.getShareTable(ShardingSpherePlugin.java:184) | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.buildByTableName(ShardingSpherePlugin.java:163) | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.buildByListTableNames(ShardingSpherePlugin.java:177) | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.buildSelect(ShardingSpherePlugin.java:152) | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.buildTable(ShardingSpherePlugin.java:128) | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.intercept(ShardingSpherePlugin.java:104) | |||
| at com.iformall.plugin.MyBatisItercepters.invokeIntercept(MyBatisItercepters.java:48) | |||
| at com.iformall.plugin.MyBatisItercepters.intercept(MyBatisItercepters.java:41) | |||
| at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) | |||
| at com.sun.proxy.$Proxy485.prepare(Unknown Source) | |||
| at com.baomidou.mybatisplus.core.executor.MybatisSimpleExecutor.prepareStatement(MybatisSimpleExecutor.java:94) | |||
| at com.baomidou.mybatisplus.core.executor.MybatisSimpleExecutor.doQuery(MybatisSimpleExecutor.java:66) | |||
| at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324) | |||
| at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) | |||
| at com.github.pagehelper.PageInterceptor.intercept(PageInterceptor.java:108) | |||
| at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) | |||
| at com.sun.proxy.$Proxy484.query(Unknown Source) | |||
| at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) | |||
| ... 96 common frames omitted | |||
| Caused by: java.lang.NullPointerException: null | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.getEntityValue(ShardingSpherePlugin.java:276) | |||
| ... 116 common frames omitted | |||
| [2023-03-20 18:13:01.085] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:76]-- ************************异常开始******************************* | |||
| [2023-03-20 18:13:01.089] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:83]-- 请求地址:http://localhost:7000/C/api/wxBusiness/listAll | |||
| [2023-03-20 18:13:01.090] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:84]-- message:nested exception is org.apache.ibatis.exceptions.PersistenceException: | |||
| ### Error querying database. Cause: java.lang.RuntimeException: java.lang.NullPointerException | |||
| ### The error may exist in file [/Users/lin/project/formallProject/mallinkService/target/classes/mapper/WxBusinessMapper.xml] | |||
| ### The error may involve com.iformall.mapper.WxBusinessMapper.findListForCoupon | |||
| ### The error occurred while executing a query | |||
| ### Cause: java.lang.RuntimeException: java.lang.NullPointerException | |||
| [2023-03-20 18:13:01.090] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:86]-- 请求参数 | |||
| [2023-03-20 18:13:01.092] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:89]-- filter---2 | |||
| [2023-03-20 18:13:01.092] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92) | |||
| [2023-03-20 18:13:01.093] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440) | |||
| [2023-03-20 18:13:01.093] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.sun.proxy.$Proxy126.selectList(Unknown Source) | |||
| [2023-03-20 18:13:01.093] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:223) | |||
| [2023-03-20 18:13:01.094] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:158) | |||
| [2023-03-20 18:13:01.094] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:76) | |||
| [2023-03-20 18:13:01.095] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:61) | |||
| [2023-03-20 18:13:01.095] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.sun.proxy.$Proxy137.findListForCoupon(Unknown Source) | |||
| [2023-03-20 18:13:01.095] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.iformall.service.impl.WxBusinessServiceImpl.findListAll(WxBusinessServiceImpl.java:63) | |||
| [2023-03-20 18:13:01.096] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.iformall.controller.WxBusinessController.listAll(WxBusinessController.java:33) | |||
| [2023-03-20 18:13:01.096] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.iformall.controller.WxBusinessController$$FastClassBySpringCGLIB$$d7e5c122.invoke(<generated>) | |||
| [2023-03-20 18:13:01.096] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) | |||
| [2023-03-20 18:13:01.096] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769) | |||
| [2023-03-20 18:13:01.097] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) | |||
| [2023-03-20 18:13:01.097] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| [2023-03-20 18:13:01.097] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:56) | |||
| [2023-03-20 18:13:01.097] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) | |||
| [2023-03-20 18:13:01.098] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| [2023-03-20 18:13:01.098] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:55) | |||
| [2023-03-20 18:13:01.098] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) | |||
| [2023-03-20 18:13:01.098] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| [2023-03-20 18:13:01.099] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:100) | |||
| [2023-03-20 18:13:01.109] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.iformall.aop.RedisCacheAspect.round(RedisCacheAspect.java:145) | |||
| [2023-03-20 18:13:01.113] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |||
| [2023-03-20 18:13:01.114] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) | |||
| [2023-03-20 18:13:01.114] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) | |||
| [2023-03-20 18:13:01.115] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- java.lang.reflect.Method.invoke(Method.java:498) | |||
| [2023-03-20 18:13:01.115] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644) | |||
| [2023-03-20 18:13:01.117] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633) | |||
| [2023-03-20 18:13:01.118] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) | |||
| [2023-03-20 18:13:01.118] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) | |||
| [2023-03-20 18:13:01.118] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| [2023-03-20 18:13:01.119] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95) | |||
| [2023-03-20 18:13:01.120] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) | |||
| [2023-03-20 18:13:01.120] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| [2023-03-20 18:13:01.121] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689) | |||
| [2023-03-20 18:13:01.123] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.iformall.controller.WxBusinessController$$EnhancerBySpringCGLIB$$9d74be6d.listAll(<generated>) | |||
| [2023-03-20 18:13:01.124] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |||
| [2023-03-20 18:13:01.127] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) | |||
| [2023-03-20 18:13:01.130] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) | |||
| [2023-03-20 18:13:01.133] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- java.lang.reflect.Method.invoke(Method.java:498) | |||
| [2023-03-20 18:13:01.134] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) | |||
| [2023-03-20 18:13:01.159] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) | |||
| [2023-03-20 18:13:01.160] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) | |||
| [2023-03-20 18:13:01.161] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879) | |||
| [2023-03-20 18:13:01.162] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) | |||
| [2023-03-20 18:13:01.164] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) | |||
| [2023-03-20 18:13:01.164] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) | |||
| [2023-03-20 18:13:01.190] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) | |||
| [2023-03-20 18:13:01.190] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) | |||
| [2023-03-20 18:13:01.191] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) | |||
| [2023-03-20 18:13:01.200] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- javax.servlet.http.HttpServlet.service(HttpServlet.java:503) | |||
| [2023-03-20 18:13:01.201] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) | |||
| [2023-03-20 18:13:01.202] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- javax.servlet.http.HttpServlet.service(HttpServlet.java:590) | |||
| [2023-03-20 18:13:01.202] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) | |||
| [2023-03-20 18:13:01.203] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) | |||
| [2023-03-20 18:13:01.203] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.iformall.interceptor.HttpServletRequestWrapperFilter.doFilter(HttpServletRequestWrapperFilter.java:61) | |||
| [2023-03-20 18:13:01.204] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) | |||
| [2023-03-20 18:13:01.204] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) | |||
| [2023-03-20 18:13:01.205] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) | |||
| [2023-03-20 18:13:01.205] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) | |||
| [2023-03-20 18:13:01.205] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) | |||
| [2023-03-20 18:13:01.206] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) | |||
| [2023-03-20 18:13:01.206] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) | |||
| [2023-03-20 18:13:01.207] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) | |||
| [2023-03-20 18:13:01.207] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) | |||
| [2023-03-20 18:13:01.207] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) | |||
| [2023-03-20 18:13:01.208] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68) | |||
| [2023-03-20 18:13:01.208] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132) | |||
| [2023-03-20 18:13:01.224] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) | |||
| [2023-03-20 18:13:01.224] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) | |||
| [2023-03-20 18:13:01.225] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) | |||
| [2023-03-20 18:13:01.225] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) | |||
| [2023-03-20 18:13:01.226] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) | |||
| [2023-03-20 18:13:01.226] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) | |||
| [2023-03-20 18:13:01.226] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) | |||
| [2023-03-20 18:13:01.227] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) | |||
| [2023-03-20 18:13:01.232] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) | |||
| [2023-03-20 18:13:01.239] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269) | |||
| [2023-03-20 18:13:01.242] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78) | |||
| [2023-03-20 18:13:01.243] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133) | |||
| [2023-03-20 18:13:01.248] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130) | |||
| [2023-03-20 18:13:01.249] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) | |||
| [2023-03-20 18:13:01.250] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) | |||
| [2023-03-20 18:13:01.251] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249) | |||
| [2023-03-20 18:13:01.252] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78) | |||
| [2023-03-20 18:13:01.252] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99) | |||
| [2023-03-20 18:13:01.254] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.server.Connectors.executeRootHandler(Connectors.java:376) | |||
| [2023-03-20 18:13:01.254] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830) | |||
| [2023-03-20 18:13:01.254] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) | |||
| [2023-03-20 18:13:01.255] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) | |||
| [2023-03-20 18:13:01.255] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- java.lang.Thread.run(Thread.java:750) | |||
| [2023-03-20 18:13:01.256] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:95]-- ************************异常结束******************************* | |||
| @@ -0,0 +1,236 @@ | |||
| [2022-06-10 15:46:43.986] [INFO ] [com.iformall.CApplication:55]-- Starting CApplication on lintekiMacBook-Air.local with PID 730 (/Users/lin/project/formallProject/mallinkCApi/target/classes started by lin in /Users/lin/project/formallProject/mallinkCApi) | |||
| [2022-06-10 15:46:43.991] [INFO ] [com.iformall.CApplication:655]-- The following profiles are active: dev,rabbitMQ | |||
| [2022-06-10 15:46:49.291] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]-- Multiple Spring Data modules found, entering strict repository configuration mode! | |||
| [2022-06-10 15:46:49.301] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:127]-- Bootstrapping Spring Data Redis repositories in DEFAULT mode. | |||
| [2022-06-10 15:46:50.069] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:187]-- Finished Spring Data repository scanning in 717ms. Found 0 Redis repository interfaces. | |||
| [2022-06-10 15:46:52.695] [INFO ] [com.ulisesbocchio.jasyptspringboot.configuration.EnableEncryptablePropertiesBeanFactoryPostProcessor:50]-- Post-processing PropertySource instances | |||
| [2022-06-10 15:46:52.917] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource configurationProperties [org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource] to AOP Proxy | |||
| [2022-06-10 15:46:52.919] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletConfigInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:46:52.919] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletContextInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:46:52.920] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemProperties [org.springframework.core.env.PropertiesPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:46:52.921] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemEnvironment [org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor$OriginAwareSystemEnvironmentPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:46:52.921] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource random [org.springframework.boot.env.RandomValuePropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:46:52.922] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application-dev.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:46:52.922] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:46:52.923] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource flowable-liquibase-override [org.springframework.core.env.MapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:46:53.199] [INFO ] [com.ulisesbocchio.jasyptspringboot.filter.DefaultLazyPropertyFilter:31]-- Property Filter custom Bean not found with name 'encryptablePropertyFilter'. Initializing Default Property Filter | |||
| [2022-06-10 15:46:53.269] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$EnhancerBySpringCGLIB$$57e59eab] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2022-06-10 15:46:53.378] [INFO ] [org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping:236]-- Supporting [WS-Addressing August 2004, WS-Addressing 1.0] | |||
| [2022-06-10 15:46:54.376] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'redisConfig' of type [com.iformall.config.RedisConfig$$EnhancerBySpringCGLIB$$53c86a0f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2022-06-10 15:46:54.780] [INFO ] [com.ulisesbocchio.jasyptspringboot.resolver.DefaultLazyPropertyResolver:31]-- Property Resolver custom Bean not found with name 'encryptablePropertyResolver'. Initializing Default Property Resolver | |||
| [2022-06-10 15:46:54.799] [INFO ] [com.ulisesbocchio.jasyptspringboot.detector.DefaultLazyPropertyDetector:30]-- Property Detector custom Bean not found with name 'encryptablePropertyDetector'. Initializing Default Property Detector | |||
| [2022-06-10 15:46:55.576] [INFO ] [io.undertow.servlet:364]-- Initializing Spring embedded WebApplicationContext | |||
| [2022-06-10 15:46:55.577] [INFO ] [org.springframework.web.context.ContextLoader:284]-- Root WebApplicationContext: initialization completed in 11331 ms | |||
| [2022-06-10 15:47:45.749] [INFO ] [com.iformall.CApplication:55]-- Starting CApplication on lintekiMacBook-Air.local with PID 735 (/Users/lin/project/formallProject/mallinkCApi/target/classes started by lin in /Users/lin/project/formallProject/mallinkCApi) | |||
| [2022-06-10 15:47:45.755] [INFO ] [com.iformall.CApplication:655]-- The following profiles are active: dev,rabbitMQ | |||
| [2022-06-10 15:47:51.085] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]-- Multiple Spring Data modules found, entering strict repository configuration mode! | |||
| [2022-06-10 15:47:51.095] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:127]-- Bootstrapping Spring Data Redis repositories in DEFAULT mode. | |||
| [2022-06-10 15:47:51.546] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:187]-- Finished Spring Data repository scanning in 382ms. Found 0 Redis repository interfaces. | |||
| [2022-06-10 15:47:53.751] [INFO ] [com.ulisesbocchio.jasyptspringboot.configuration.EnableEncryptablePropertiesBeanFactoryPostProcessor:50]-- Post-processing PropertySource instances | |||
| [2022-06-10 15:47:54.011] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource configurationProperties [org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource] to AOP Proxy | |||
| [2022-06-10 15:47:54.015] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletConfigInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:47:54.015] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletContextInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:47:54.019] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemProperties [org.springframework.core.env.PropertiesPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:47:54.020] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemEnvironment [org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor$OriginAwareSystemEnvironmentPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:47:54.023] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource random [org.springframework.boot.env.RandomValuePropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:47:54.026] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application-dev.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:47:54.027] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:47:54.029] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource flowable-liquibase-override [org.springframework.core.env.MapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:47:54.345] [INFO ] [com.ulisesbocchio.jasyptspringboot.filter.DefaultLazyPropertyFilter:31]-- Property Filter custom Bean not found with name 'encryptablePropertyFilter'. Initializing Default Property Filter | |||
| [2022-06-10 15:47:54.427] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$EnhancerBySpringCGLIB$$68eea6d8] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2022-06-10 15:47:54.501] [INFO ] [org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping:236]-- Supporting [WS-Addressing August 2004, WS-Addressing 1.0] | |||
| [2022-06-10 15:47:55.664] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'redisConfig' of type [com.iformall.config.RedisConfig$$EnhancerBySpringCGLIB$$64d1723c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2022-06-10 15:47:56.118] [INFO ] [com.ulisesbocchio.jasyptspringboot.resolver.DefaultLazyPropertyResolver:31]-- Property Resolver custom Bean not found with name 'encryptablePropertyResolver'. Initializing Default Property Resolver | |||
| [2022-06-10 15:47:56.127] [INFO ] [com.ulisesbocchio.jasyptspringboot.detector.DefaultLazyPropertyDetector:30]-- Property Detector custom Bean not found with name 'encryptablePropertyDetector'. Initializing Default Property Detector | |||
| [2022-06-10 15:47:56.835] [INFO ] [io.undertow.servlet:364]-- Initializing Spring embedded WebApplicationContext | |||
| [2022-06-10 15:47:56.837] [INFO ] [org.springframework.web.context.ContextLoader:284]-- Root WebApplicationContext: initialization completed in 10901 ms | |||
| [2022-06-10 15:48:24.142] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:32]-- String Encryptor custom Bean not found with name 'jasyptStringEncryptor'. Initializing Default String Encryptor | |||
| [2022-06-10 15:48:24.184] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.algorithm, using default value: PBEWithMD5AndDES | |||
| [2022-06-10 15:48:24.185] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.keyObtentionIterations, using default value: 1000 | |||
| [2022-06-10 15:48:24.187] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.poolSize, using default value: 1 | |||
| [2022-06-10 15:48:24.190] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.providerName, using default value: null | |||
| [2022-06-10 15:48:24.191] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.providerClassName, using default value: null | |||
| [2022-06-10 15:48:24.192] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.saltGeneratorClassname, using default value: org.jasypt.salt.RandomSaltGenerator | |||
| [2022-06-10 15:48:24.204] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.stringOutputType, using default value: base64 | |||
| [2022-06-10 15:49:09.510] [INFO ] [org.flowable.spring.boot.ProcessEngineAutoConfiguration$$EnhancerBySpringCGLIB$$cacb1f2b:94]-- No deployment resources were found for autodeployment | |||
| [2022-06-10 15:49:09.554] [INFO ] [org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:181]-- Initializing ExecutorService 'applicationTaskExecutor' | |||
| [2022-06-10 15:49:10.303] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:834]-- Found 1 Engine Configurators in total: | |||
| [2022-06-10 15:49:10.304] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:836]-- class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2022-06-10 15:49:10.307] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:851]-- Executing beforeInit() of class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2022-06-10 15:49:10.813] [INFO ] [com.alibaba.druid.pool.DruidDataSource:994]-- {dataSource-1} inited | |||
| [2022-06-10 15:49:13.468] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:858]-- Executing configure() of class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2022-06-10 15:49:14.587] [INFO ] [org.flowable.idm.engine.impl.IdmEngineImpl:51]-- IdmEngine default created | |||
| [2022-06-10 15:49:20.283] [INFO ] [org.flowable.engine.impl.ProcessEngineImpl:84]-- ProcessEngine default created | |||
| [2022-06-10 15:49:20.303] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AbstractAsyncExecutor:114]-- Starting up the async job executor [org.flowable.spring.job.service.SpringAsyncExecutor]. | |||
| [2022-06-10 15:49:20.306] [INFO ] [org.flowable.job.service.impl.asyncexecutor.ResetExpiredJobsRunnable:56]-- starting to reset expired jobs | |||
| [2022-06-10 15:49:20.306] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AcquireTimerJobsRunnable:50]-- starting to acquire async jobs due | |||
| [2022-06-10 15:49:20.304] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AcquireAsyncJobsDueRunnable:52]-- starting to acquire async jobs due | |||
| [2022-06-10 15:49:20.557] [INFO ] [org.flowable.engine.impl.cmd.ValidateV5EntitiesCmd:43]-- Total of v5 deployments found: 0 | |||
| [2022-06-10 15:49:29.741] [INFO ] [springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69]-- Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)] | |||
| [2022-06-10 15:49:31.415] [INFO ] [org.quartz.impl.StdSchedulerFactory:1208]-- Using default implementation for ThreadExecutor | |||
| [2022-06-10 15:49:31.497] [INFO ] [org.quartz.core.SchedulerSignalerImpl:61]-- Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl | |||
| [2022-06-10 15:49:31.501] [INFO ] [org.quartz.core.QuartzScheduler:229]-- Quartz Scheduler v.2.3.0 created. | |||
| [2022-06-10 15:49:31.506] [INFO ] [org.quartz.simpl.RAMJobStore:155]-- RAMJobStore initialized. | |||
| [2022-06-10 15:49:31.512] [INFO ] [org.quartz.core.QuartzScheduler:294]-- Scheduler meta-data: Quartz Scheduler (v2.3.0) 'quartzScheduler' with instanceId 'NON_CLUSTERED' | |||
| Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. | |||
| NOT STARTED. | |||
| Currently in standby mode. | |||
| Number of jobs executed: 0 | |||
| Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads. | |||
| Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. | |||
| [2022-06-10 15:49:31.515] [INFO ] [org.quartz.impl.StdSchedulerFactory:1362]-- Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance. | |||
| [2022-06-10 15:49:31.518] [INFO ] [org.quartz.impl.StdSchedulerFactory:1366]-- Quartz scheduler version: 2.3.0 | |||
| [2022-06-10 15:49:31.522] [INFO ] [org.quartz.core.QuartzScheduler:2287]-- JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@d332ebc | |||
| [2022-06-10 15:49:31.866] [INFO ] [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:151]-- Context refreshed | |||
| [2022-06-10 15:49:31.919] [INFO ] [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:154]-- Found 1 custom documentation plugin(s) | |||
| [2022-06-10 15:49:32.056] [INFO ] [springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41]-- Scanning for api listing references | |||
| [2022-06-10 15:49:32.607] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_1 | |||
| [2022-06-10 15:49:32.636] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_1 | |||
| [2022-06-10 15:49:32.729] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_2 | |||
| [2022-06-10 15:49:32.757] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_3 | |||
| [2022-06-10 15:49:32.766] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listStatusUsingGET_1 | |||
| [2022-06-10 15:49:32.883] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_2 | |||
| [2022-06-10 15:49:33.052] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_4 | |||
| [2022-06-10 15:49:33.056] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: printHtmlByIdUsingGET_1 | |||
| [2022-06-10 15:49:33.098] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_5 | |||
| [2022-06-10 15:49:33.182] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_6 | |||
| [2022-06-10 15:49:33.333] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: detailUsingGET_1 | |||
| [2022-06-10 15:49:33.342] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getChannelPoiUsingGET_1 | |||
| [2022-06-10 15:49:33.346] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getHtmlUsingGET_1 | |||
| [2022-06-10 15:49:33.363] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_7 | |||
| [2022-06-10 15:49:33.413] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_8 | |||
| [2022-06-10 15:49:33.528] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getAppIconUsingGET_1 | |||
| [2022-06-10 15:49:33.593] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_9 | |||
| [2022-06-10 15:49:33.601] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getOneUsingGET_1 | |||
| [2022-06-10 15:49:33.678] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: addUsingPOST_1 | |||
| [2022-06-10 15:49:33.693] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_10 | |||
| [2022-06-10 15:49:34.120] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_3 | |||
| [2022-06-10 15:49:34.150] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: addUsingPOST_2 | |||
| [2022-06-10 15:49:34.154] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_4 | |||
| [2022-06-10 15:49:34.167] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_11 | |||
| [2022-06-10 15:49:34.218] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_12 | |||
| [2022-06-10 15:49:34.260] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_13 | |||
| [2022-06-10 15:49:34.287] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_5 | |||
| [2022-06-10 15:49:34.503] [INFO ] [org.springframework.scheduling.quartz.SchedulerFactoryBean:727]-- Starting Quartz Scheduler now | |||
| [2022-06-10 15:49:34.504] [INFO ] [org.quartz.core.QuartzScheduler:547]-- Scheduler quartzScheduler_$_NON_CLUSTERED started. | |||
| [2022-06-10 15:49:34.561] [INFO ] [io.undertow:117]-- starting server: Undertow - 2.0.29.Final | |||
| [2022-06-10 15:49:34.591] [INFO ] [org.xnio:104]-- XNIO version 3.3.8.Final | |||
| [2022-06-10 15:49:34.624] [INFO ] [org.xnio.nio:55]-- XNIO NIO Implementation Version 3.3.8.Final | |||
| [2022-06-10 15:49:34.876] [INFO ] [org.springframework.boot.web.embedded.undertow.UndertowServletWebServer:144]-- Undertow started on port(s) 7000 (http) with context path '/C' | |||
| [2022-06-10 15:49:34.884] [INFO ] [com.iformall.CApplication:61]-- Started CApplication in 131.896 seconds (JVM running for 134.108) | |||
| [2022-06-10 15:49:37.777] [INFO ] [io.undertow.servlet:364]-- Initializing Spring DispatcherServlet 'dispatcherServlet' | |||
| [2022-06-10 15:49:37.777] [INFO ] [org.springframework.web.servlet.DispatcherServlet:525]-- Initializing Servlet 'dispatcherServlet' | |||
| [2022-06-10 15:49:37.805] [INFO ] [org.springframework.web.servlet.DispatcherServlet:547]-- Completed initialization in 27 ms | |||
| [2022-06-10 15:49:37.864] [INFO ] [com.iformall.service.impl.CUserTokenServiceImpl:55]-- 获取用户信息start ...0774f386-0bb8-455f-8c71-1c2e90bbcf91:789:wx-cuser | |||
| [2022-06-10 15:49:38.208] [INFO ] [io.lettuce.core.EpollProvider:68]-- Starting without optional epoll library | |||
| [2022-06-10 15:49:39.014] [INFO ] [io.lettuce.core.KqueueProvider:66]-- Starting with kqueue library | |||
| [2022-06-10 15:51:28.932] [INFO ] [com.iformall.service.impl.CUserTokenServiceImpl:55]-- 获取用户信息start ...d0440c86-77b2-42e8-9c92-cddeff6a9a0c:789:wx-cuser | |||
| [2022-06-10 15:51:34.347] [INFO ] [com.iformall.interceptor.RequestInterceptor:105]-- request:C:4870968add49222be7e0a79d481b5d11: 第一次提交 | |||
| [2022-06-10 15:52:05.618] [INFO ] [com.iformall.interceptor.WebLogAspect:67]-- URL: http://localhost:7000/C/api/car/tttttt, METHOD: POST, DO: com.iformall.controller.WxCarController.tttttttt, IP: 192.168.1.102, SPEND TIME: 31234ms | |||
| [2022-06-10 15:55:00.263] [INFO ] [com.iformall.CApplication:55]-- Starting CApplication on lintekiMacBook-Air.local with PID 784 (/Users/lin/project/formallProject/mallinkCApi/target/classes started by lin in /Users/lin/project/formallProject/mallinkCApi) | |||
| [2022-06-10 15:55:00.265] [INFO ] [com.iformall.CApplication:655]-- The following profiles are active: dev,rabbitMQ | |||
| [2022-06-10 15:55:04.985] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]-- Multiple Spring Data modules found, entering strict repository configuration mode! | |||
| [2022-06-10 15:55:04.996] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:127]-- Bootstrapping Spring Data Redis repositories in DEFAULT mode. | |||
| [2022-06-10 15:55:05.448] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:187]-- Finished Spring Data repository scanning in 410ms. Found 0 Redis repository interfaces. | |||
| [2022-06-10 15:55:08.152] [INFO ] [com.ulisesbocchio.jasyptspringboot.configuration.EnableEncryptablePropertiesBeanFactoryPostProcessor:50]-- Post-processing PropertySource instances | |||
| [2022-06-10 15:55:08.398] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource configurationProperties [org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource] to AOP Proxy | |||
| [2022-06-10 15:55:08.400] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletConfigInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:55:08.404] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletContextInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:55:08.406] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemProperties [org.springframework.core.env.PropertiesPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:55:08.408] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemEnvironment [org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor$OriginAwareSystemEnvironmentPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:55:08.412] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource random [org.springframework.boot.env.RandomValuePropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:55:08.413] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application-dev.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:55:08.414] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:55:08.415] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource flowable-liquibase-override [org.springframework.core.env.MapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:55:08.691] [INFO ] [com.ulisesbocchio.jasyptspringboot.filter.DefaultLazyPropertyFilter:31]-- Property Filter custom Bean not found with name 'encryptablePropertyFilter'. Initializing Default Property Filter | |||
| [2022-06-10 15:55:08.905] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$EnhancerBySpringCGLIB$$dfae8c8f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2022-06-10 15:55:08.995] [INFO ] [org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping:236]-- Supporting [WS-Addressing August 2004, WS-Addressing 1.0] | |||
| [2022-06-10 15:55:09.974] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'redisConfig' of type [com.iformall.config.RedisConfig$$EnhancerBySpringCGLIB$$db9157f3] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2022-06-10 15:55:10.364] [INFO ] [com.ulisesbocchio.jasyptspringboot.resolver.DefaultLazyPropertyResolver:31]-- Property Resolver custom Bean not found with name 'encryptablePropertyResolver'. Initializing Default Property Resolver | |||
| [2022-06-10 15:55:10.372] [INFO ] [com.ulisesbocchio.jasyptspringboot.detector.DefaultLazyPropertyDetector:30]-- Property Detector custom Bean not found with name 'encryptablePropertyDetector'. Initializing Default Property Detector | |||
| [2022-06-10 15:55:11.063] [INFO ] [io.undertow.servlet:364]-- Initializing Spring embedded WebApplicationContext | |||
| [2022-06-10 15:55:11.066] [INFO ] [org.springframework.web.context.ContextLoader:284]-- Root WebApplicationContext: initialization completed in 10636 ms | |||
| [2022-06-10 15:55:32.244] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:32]-- String Encryptor custom Bean not found with name 'jasyptStringEncryptor'. Initializing Default String Encryptor | |||
| [2022-06-10 15:55:32.274] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.algorithm, using default value: PBEWithMD5AndDES | |||
| [2022-06-10 15:55:32.275] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.keyObtentionIterations, using default value: 1000 | |||
| [2022-06-10 15:55:32.276] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.poolSize, using default value: 1 | |||
| [2022-06-10 15:55:32.277] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.providerName, using default value: null | |||
| [2022-06-10 15:55:32.278] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.providerClassName, using default value: null | |||
| [2022-06-10 15:55:32.280] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.saltGeneratorClassname, using default value: org.jasypt.salt.RandomSaltGenerator | |||
| [2022-06-10 15:55:32.283] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.stringOutputType, using default value: base64 | |||
| [2022-06-10 15:55:36.656] [INFO ] [org.flowable.spring.boot.ProcessEngineAutoConfiguration$$EnhancerBySpringCGLIB$$418b04e2:94]-- No deployment resources were found for autodeployment | |||
| [2022-06-10 15:55:36.694] [INFO ] [org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:181]-- Initializing ExecutorService 'applicationTaskExecutor' | |||
| [2022-06-10 15:55:37.232] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:834]-- Found 1 Engine Configurators in total: | |||
| [2022-06-10 15:55:37.234] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:836]-- class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2022-06-10 15:55:37.236] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:851]-- Executing beforeInit() of class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2022-06-10 15:55:37.502] [INFO ] [com.alibaba.druid.pool.DruidDataSource:994]-- {dataSource-1} inited | |||
| [2022-06-10 15:55:40.182] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:858]-- Executing configure() of class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2022-06-10 15:55:41.421] [INFO ] [org.flowable.idm.engine.impl.IdmEngineImpl:51]-- IdmEngine default created | |||
| [2022-06-10 15:55:47.968] [INFO ] [org.flowable.engine.impl.ProcessEngineImpl:84]-- ProcessEngine default created | |||
| [2022-06-10 15:55:47.986] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AbstractAsyncExecutor:114]-- Starting up the async job executor [org.flowable.spring.job.service.SpringAsyncExecutor]. | |||
| [2022-06-10 15:55:47.987] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AcquireAsyncJobsDueRunnable:52]-- starting to acquire async jobs due | |||
| [2022-06-10 15:55:47.988] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AcquireTimerJobsRunnable:50]-- starting to acquire async jobs due | |||
| [2022-06-10 15:55:47.989] [INFO ] [org.flowable.job.service.impl.asyncexecutor.ResetExpiredJobsRunnable:56]-- starting to reset expired jobs | |||
| [2022-06-10 15:55:48.187] [INFO ] [org.flowable.engine.impl.cmd.ValidateV5EntitiesCmd:43]-- Total of v5 deployments found: 0 | |||
| [2022-06-10 15:55:59.820] [INFO ] [springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69]-- Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)] | |||
| [2022-06-10 15:56:01.552] [INFO ] [org.quartz.impl.StdSchedulerFactory:1208]-- Using default implementation for ThreadExecutor | |||
| [2022-06-10 15:56:01.608] [INFO ] [org.quartz.core.SchedulerSignalerImpl:61]-- Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl | |||
| [2022-06-10 15:56:01.609] [INFO ] [org.quartz.core.QuartzScheduler:229]-- Quartz Scheduler v.2.3.0 created. | |||
| [2022-06-10 15:56:01.612] [INFO ] [org.quartz.simpl.RAMJobStore:155]-- RAMJobStore initialized. | |||
| [2022-06-10 15:56:01.665] [INFO ] [org.quartz.core.QuartzScheduler:294]-- Scheduler meta-data: Quartz Scheduler (v2.3.0) 'quartzScheduler' with instanceId 'NON_CLUSTERED' | |||
| Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. | |||
| NOT STARTED. | |||
| Currently in standby mode. | |||
| Number of jobs executed: 0 | |||
| Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads. | |||
| Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. | |||
| [2022-06-10 15:56:01.666] [INFO ] [org.quartz.impl.StdSchedulerFactory:1362]-- Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance. | |||
| [2022-06-10 15:56:01.667] [INFO ] [org.quartz.impl.StdSchedulerFactory:1366]-- Quartz scheduler version: 2.3.0 | |||
| [2022-06-10 15:56:01.668] [INFO ] [org.quartz.core.QuartzScheduler:2287]-- JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@7e86ff3b | |||
| [2022-06-10 15:56:02.029] [INFO ] [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:151]-- Context refreshed | |||
| [2022-06-10 15:56:02.096] [INFO ] [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:154]-- Found 1 custom documentation plugin(s) | |||
| [2022-06-10 15:56:02.218] [INFO ] [springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41]-- Scanning for api listing references | |||
| [2022-06-10 15:56:02.771] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_1 | |||
| [2022-06-10 15:56:02.795] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_1 | |||
| [2022-06-10 15:56:02.872] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_2 | |||
| [2022-06-10 15:56:02.907] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_3 | |||
| [2022-06-10 15:56:02.915] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listStatusUsingGET_1 | |||
| [2022-06-10 15:56:03.007] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_2 | |||
| [2022-06-10 15:56:03.187] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_4 | |||
| [2022-06-10 15:56:03.196] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: printHtmlByIdUsingGET_1 | |||
| [2022-06-10 15:56:03.237] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_5 | |||
| [2022-06-10 15:56:03.312] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_6 | |||
| [2022-06-10 15:56:03.461] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: detailUsingGET_1 | |||
| [2022-06-10 15:56:03.470] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getChannelPoiUsingGET_1 | |||
| [2022-06-10 15:56:03.473] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getHtmlUsingGET_1 | |||
| [2022-06-10 15:56:03.484] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_7 | |||
| [2022-06-10 15:56:03.517] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_8 | |||
| [2022-06-10 15:56:03.568] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getAppIconUsingGET_1 | |||
| [2022-06-10 15:56:03.620] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_9 | |||
| [2022-06-10 15:56:03.624] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getOneUsingGET_1 | |||
| [2022-06-10 15:56:03.669] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: addUsingPOST_1 | |||
| [2022-06-10 15:56:03.684] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_10 | |||
| [2022-06-10 15:56:04.146] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_3 | |||
| [2022-06-10 15:56:04.187] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: addUsingPOST_2 | |||
| [2022-06-10 15:56:04.191] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_4 | |||
| [2022-06-10 15:56:04.203] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_11 | |||
| [2022-06-10 15:56:04.272] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_12 | |||
| [2022-06-10 15:56:04.302] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_13 | |||
| [2022-06-10 15:56:04.326] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_5 | |||
| [2022-06-10 15:56:04.538] [INFO ] [org.springframework.scheduling.quartz.SchedulerFactoryBean:727]-- Starting Quartz Scheduler now | |||
| [2022-06-10 15:56:04.541] [INFO ] [org.quartz.core.QuartzScheduler:547]-- Scheduler quartzScheduler_$_NON_CLUSTERED started. | |||
| [2022-06-10 15:56:04.582] [INFO ] [io.undertow:117]-- starting server: Undertow - 2.0.29.Final | |||
| [2022-06-10 15:56:04.609] [INFO ] [org.xnio:104]-- XNIO version 3.3.8.Final | |||
| [2022-06-10 15:56:04.639] [INFO ] [org.xnio.nio:55]-- XNIO NIO Implementation Version 3.3.8.Final | |||
| [2022-06-10 15:56:04.870] [INFO ] [org.springframework.boot.web.embedded.undertow.UndertowServletWebServer:144]-- Undertow started on port(s) 7000 (http) with context path '/C' | |||
| [2022-06-10 15:56:04.878] [INFO ] [com.iformall.CApplication:61]-- Started CApplication in 86.462 seconds (JVM running for 88.342) | |||
| [2022-06-10 15:56:09.722] [INFO ] [io.undertow.servlet:364]-- Initializing Spring DispatcherServlet 'dispatcherServlet' | |||
| [2022-06-10 15:56:09.723] [INFO ] [org.springframework.web.servlet.DispatcherServlet:525]-- Initializing Servlet 'dispatcherServlet' | |||
| [2022-06-10 15:56:09.749] [INFO ] [org.springframework.web.servlet.DispatcherServlet:547]-- Completed initialization in 26 ms | |||
| [2022-06-10 15:56:09.806] [INFO ] [com.iformall.service.impl.CUserTokenServiceImpl:55]-- 获取用户信息start ...d0440c86-77b2-42e8-9c92-cddeff6a9a0c:789:wx-cuser | |||
| [2022-06-10 15:56:11.126] [INFO ] [io.lettuce.core.EpollProvider:68]-- Starting without optional epoll library | |||
| [2022-06-10 15:56:11.563] [INFO ] [io.lettuce.core.KqueueProvider:66]-- Starting with kqueue library | |||
| [2022-06-10 15:56:22.377] [INFO ] [com.iformall.interceptor.RequestInterceptor:105]-- request:C:4870968add49222be7e0a79d481b5d11: 第一次提交 | |||
| [2022-06-10 15:56:33.137] [INFO ] [com.iformall.interceptor.WebLogAspect:67]-- URL: http://localhost:7000/C/api/car/tttttt, METHOD: POST, DO: com.iformall.controller.WxCarController.tttttttt, IP: 192.168.1.102, SPEND TIME: 10675ms | |||
| @@ -0,0 +1,220 @@ | |||
| [2023-03-20 11:57:35.631] [INFO ] [com.iformall.CApplication:55]-- Starting CApplication on lintekiMacBook-Air.local with PID 1163 (/Users/lin/project/formallProject/mallinkCApi/target/classes started by lin in /Users/lin/project/formallProject/mallinkCApi) | |||
| [2023-03-20 11:57:35.643] [INFO ] [com.iformall.CApplication:655]-- The following profiles are active: dev,rabbitMQ | |||
| [2023-03-20 11:57:47.629] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]-- Multiple Spring Data modules found, entering strict repository configuration mode! | |||
| [2023-03-20 11:57:47.651] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:127]-- Bootstrapping Spring Data Redis repositories in DEFAULT mode. | |||
| [2023-03-20 11:57:49.039] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:187]-- Finished Spring Data repository scanning in 1320ms. Found 0 Redis repository interfaces. | |||
| [2023-03-20 11:57:54.230] [INFO ] [com.ulisesbocchio.jasyptspringboot.configuration.EnableEncryptablePropertiesBeanFactoryPostProcessor:50]-- Post-processing PropertySource instances | |||
| [2023-03-20 11:57:54.637] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource configurationProperties [org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource] to AOP Proxy | |||
| [2023-03-20 11:57:54.638] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletConfigInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2023-03-20 11:57:54.641] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletContextInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2023-03-20 11:57:54.642] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemProperties [org.springframework.core.env.PropertiesPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 11:57:54.643] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemEnvironment [org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor$OriginAwareSystemEnvironmentPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 11:57:54.644] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource random [org.springframework.boot.env.RandomValuePropertySource] to EncryptablePropertySourceWrapper | |||
| [2023-03-20 11:57:54.644] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application-dev.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 11:57:54.645] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 11:57:54.652] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource flowable-liquibase-override [org.springframework.core.env.MapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 11:57:55.219] [INFO ] [com.ulisesbocchio.jasyptspringboot.filter.DefaultLazyPropertyFilter:31]-- Property Filter custom Bean not found with name 'encryptablePropertyFilter'. Initializing Default Property Filter | |||
| [2023-03-20 11:57:55.333] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$EnhancerBySpringCGLIB$$eef228ef] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2023-03-20 11:57:55.454] [INFO ] [org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping:236]-- Supporting [WS-Addressing August 2004, WS-Addressing 1.0] | |||
| [2023-03-20 11:57:57.670] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'redisConfig' of type [com.iformall.config.RedisConfig$$EnhancerBySpringCGLIB$$ead4f453] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2023-03-20 11:57:58.405] [INFO ] [com.ulisesbocchio.jasyptspringboot.resolver.DefaultLazyPropertyResolver:31]-- Property Resolver custom Bean not found with name 'encryptablePropertyResolver'. Initializing Default Property Resolver | |||
| [2023-03-20 11:57:58.429] [INFO ] [com.ulisesbocchio.jasyptspringboot.detector.DefaultLazyPropertyDetector:30]-- Property Detector custom Bean not found with name 'encryptablePropertyDetector'. Initializing Default Property Detector | |||
| [2023-03-20 11:58:00.235] [INFO ] [io.undertow.servlet:364]-- Initializing Spring embedded WebApplicationContext | |||
| [2023-03-20 11:58:00.237] [INFO ] [org.springframework.web.context.ContextLoader:284]-- Root WebApplicationContext: initialization completed in 24191 ms | |||
| [2023-03-20 11:58:45.098] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:32]-- String Encryptor custom Bean not found with name 'jasyptStringEncryptor'. Initializing Default String Encryptor | |||
| [2023-03-20 11:58:45.123] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.algorithm, using default value: PBEWithMD5AndDES | |||
| [2023-03-20 11:58:45.124] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.keyObtentionIterations, using default value: 1000 | |||
| [2023-03-20 11:58:45.125] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.poolSize, using default value: 1 | |||
| [2023-03-20 11:58:45.126] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.providerName, using default value: null | |||
| [2023-03-20 11:58:45.127] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.providerClassName, using default value: null | |||
| [2023-03-20 11:58:45.128] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.saltGeneratorClassname, using default value: org.jasypt.salt.RandomSaltGenerator | |||
| [2023-03-20 11:58:45.131] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.stringOutputType, using default value: base64 | |||
| [2023-03-20 11:58:47.518] [INFO ] [org.flowable.spring.boot.ProcessEngineAutoConfiguration$$EnhancerBySpringCGLIB$$50cea142:94]-- No deployment resources were found for autodeployment | |||
| [2023-03-20 11:58:47.576] [INFO ] [org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:181]-- Initializing ExecutorService 'applicationTaskExecutor' | |||
| [2023-03-20 11:58:48.128] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:834]-- Found 1 Engine Configurators in total: | |||
| [2023-03-20 11:58:48.129] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:836]-- class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2023-03-20 11:58:48.130] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:851]-- Executing beforeInit() of class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2023-03-20 11:58:48.439] [INFO ] [com.alibaba.druid.pool.DruidDataSource:994]-- {dataSource-1} inited | |||
| [2023-03-20 11:58:51.279] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:858]-- Executing configure() of class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2023-03-20 11:58:52.115] [INFO ] [org.flowable.idm.engine.impl.IdmEngineImpl:51]-- IdmEngine default created | |||
| [2023-03-20 11:58:56.107] [INFO ] [org.flowable.engine.impl.ProcessEngineImpl:84]-- ProcessEngine default created | |||
| [2023-03-20 11:58:56.146] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AbstractAsyncExecutor:114]-- Starting up the async job executor [org.flowable.spring.job.service.SpringAsyncExecutor]. | |||
| [2023-03-20 11:58:56.155] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AcquireAsyncJobsDueRunnable:52]-- starting to acquire async jobs due | |||
| [2023-03-20 11:58:56.167] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AcquireTimerJobsRunnable:50]-- starting to acquire async jobs due | |||
| [2023-03-20 11:58:56.163] [INFO ] [org.flowable.job.service.impl.asyncexecutor.ResetExpiredJobsRunnable:56]-- starting to reset expired jobs | |||
| [2023-03-20 11:58:56.694] [INFO ] [org.flowable.engine.impl.cmd.ValidateV5EntitiesCmd:43]-- Total of v5 deployments found: 0 | |||
| [2023-03-20 11:59:07.648] [INFO ] [springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69]-- Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)] | |||
| [2023-03-20 11:59:09.278] [INFO ] [org.quartz.impl.StdSchedulerFactory:1208]-- Using default implementation for ThreadExecutor | |||
| [2023-03-20 11:59:09.335] [INFO ] [org.quartz.core.SchedulerSignalerImpl:61]-- Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl | |||
| [2023-03-20 11:59:09.341] [INFO ] [org.quartz.core.QuartzScheduler:229]-- Quartz Scheduler v.2.3.0 created. | |||
| [2023-03-20 11:59:09.344] [INFO ] [org.quartz.simpl.RAMJobStore:155]-- RAMJobStore initialized. | |||
| [2023-03-20 11:59:09.351] [INFO ] [org.quartz.core.QuartzScheduler:294]-- Scheduler meta-data: Quartz Scheduler (v2.3.0) 'quartzScheduler' with instanceId 'NON_CLUSTERED' | |||
| Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. | |||
| NOT STARTED. | |||
| Currently in standby mode. | |||
| Number of jobs executed: 0 | |||
| Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads. | |||
| Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. | |||
| [2023-03-20 11:59:09.354] [INFO ] [org.quartz.impl.StdSchedulerFactory:1362]-- Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance. | |||
| [2023-03-20 11:59:09.355] [INFO ] [org.quartz.impl.StdSchedulerFactory:1366]-- Quartz scheduler version: 2.3.0 | |||
| [2023-03-20 11:59:09.356] [INFO ] [org.quartz.core.QuartzScheduler:2287]-- JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@62ccbd95 | |||
| [2023-03-20 11:59:09.657] [INFO ] [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:151]-- Context refreshed | |||
| [2023-03-20 11:59:09.728] [INFO ] [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:154]-- Found 1 custom documentation plugin(s) | |||
| [2023-03-20 11:59:09.937] [INFO ] [springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41]-- Scanning for api listing references | |||
| [2023-03-20 11:59:10.549] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: deleteUsingGET_1 | |||
| [2023-03-20 11:59:10.554] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_1 | |||
| [2023-03-20 11:59:10.575] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_1 | |||
| [2023-03-20 11:59:10.602] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: saveOrUpdateUsingPOST_1 | |||
| [2023-03-20 11:59:10.610] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: saveOrUpdateUsingPOST_2 | |||
| [2023-03-20 11:59:10.620] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_2 | |||
| [2023-03-20 11:59:10.648] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_2 | |||
| [2023-03-20 11:59:10.763] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_3 | |||
| [2023-03-20 11:59:10.806] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_4 | |||
| [2023-03-20 11:59:10.821] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listStatusUsingGET_1 | |||
| [2023-03-20 11:59:10.918] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_3 | |||
| [2023-03-20 11:59:11.195] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_5 | |||
| [2023-03-20 11:59:11.199] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: printHtmlByIdUsingGET_1 | |||
| [2023-03-20 11:59:11.248] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_6 | |||
| [2023-03-20 11:59:11.333] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_7 | |||
| [2023-03-20 11:59:11.511] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: detailUsingGET_1 | |||
| [2023-03-20 11:59:11.519] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getChannelPoiUsingGET_1 | |||
| [2023-03-20 11:59:11.524] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getHtmlUsingGET_1 | |||
| [2023-03-20 11:59:11.536] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_8 | |||
| [2023-03-20 11:59:11.602] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_9 | |||
| [2023-03-20 11:59:11.684] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getAppIconUsingGET_1 | |||
| [2023-03-20 11:59:11.734] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_10 | |||
| [2023-03-20 11:59:11.740] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getOneUsingGET_1 | |||
| [2023-03-20 11:59:11.825] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: addUsingPOST_1 | |||
| [2023-03-20 11:59:11.850] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_11 | |||
| [2023-03-20 11:59:12.415] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_4 | |||
| [2023-03-20 11:59:12.462] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: addUsingPOST_2 | |||
| [2023-03-20 11:59:12.471] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_5 | |||
| [2023-03-20 11:59:12.573] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_12 | |||
| [2023-03-20 11:59:12.619] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_13 | |||
| [2023-03-20 11:59:12.642] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_14 | |||
| [2023-03-20 11:59:12.667] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_6 | |||
| [2023-03-20 11:59:12.898] [INFO ] [org.springframework.scheduling.quartz.SchedulerFactoryBean:727]-- Starting Quartz Scheduler now | |||
| [2023-03-20 11:59:12.901] [INFO ] [org.quartz.core.QuartzScheduler:547]-- Scheduler quartzScheduler_$_NON_CLUSTERED started. | |||
| [2023-03-20 11:59:12.958] [INFO ] [io.undertow:117]-- starting server: Undertow - 2.0.29.Final | |||
| [2023-03-20 11:59:12.986] [INFO ] [org.xnio:104]-- XNIO version 3.3.8.Final | |||
| [2023-03-20 11:59:13.022] [INFO ] [org.xnio.nio:55]-- XNIO NIO Implementation Version 3.3.8.Final | |||
| [2023-03-20 11:59:13.223] [INFO ] [org.springframework.boot.web.embedded.undertow.UndertowServletWebServer:144]-- Undertow started on port(s) 7000 (http) with context path '/C' | |||
| [2023-03-20 11:59:13.231] [INFO ] [com.iformall.CApplication:61]-- Started CApplication in 120.468 seconds (JVM running for 123.022) | |||
| [2023-03-20 18:03:00.251] [INFO ] [com.iformall.CApplication:55]-- Starting CApplication on lintekiMacBook-Air.local with PID 2624 (/Users/lin/project/formallProject/mallinkCApi/target/classes started by lin in /Users/lin/project/formallProject/mallinkCApi) | |||
| [2023-03-20 18:03:00.257] [INFO ] [com.iformall.CApplication:655]-- The following profiles are active: dev,rabbitMQ | |||
| [2023-03-20 18:03:06.474] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]-- Multiple Spring Data modules found, entering strict repository configuration mode! | |||
| [2023-03-20 18:03:06.492] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:127]-- Bootstrapping Spring Data Redis repositories in DEFAULT mode. | |||
| [2023-03-20 18:03:07.045] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:187]-- Finished Spring Data repository scanning in 494ms. Found 0 Redis repository interfaces. | |||
| [2023-03-20 18:03:11.455] [INFO ] [com.ulisesbocchio.jasyptspringboot.configuration.EnableEncryptablePropertiesBeanFactoryPostProcessor:50]-- Post-processing PropertySource instances | |||
| [2023-03-20 18:03:11.779] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource configurationProperties [org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource] to AOP Proxy | |||
| [2023-03-20 18:03:11.783] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletConfigInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2023-03-20 18:03:11.786] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletContextInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2023-03-20 18:03:11.787] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemProperties [org.springframework.core.env.PropertiesPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 18:03:11.787] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemEnvironment [org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor$OriginAwareSystemEnvironmentPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 18:03:11.790] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource random [org.springframework.boot.env.RandomValuePropertySource] to EncryptablePropertySourceWrapper | |||
| [2023-03-20 18:03:11.794] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application-dev.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 18:03:11.795] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 18:03:11.797] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource flowable-liquibase-override [org.springframework.core.env.MapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 18:03:12.305] [INFO ] [com.ulisesbocchio.jasyptspringboot.filter.DefaultLazyPropertyFilter:31]-- Property Filter custom Bean not found with name 'encryptablePropertyFilter'. Initializing Default Property Filter | |||
| [2023-03-20 18:03:12.488] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$EnhancerBySpringCGLIB$$9af82bd5] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2023-03-20 18:03:12.641] [INFO ] [org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping:236]-- Supporting [WS-Addressing August 2004, WS-Addressing 1.0] | |||
| [2023-03-20 18:03:14.080] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'redisConfig' of type [com.iformall.config.RedisConfig$$EnhancerBySpringCGLIB$$96daf739] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2023-03-20 18:03:14.509] [INFO ] [com.ulisesbocchio.jasyptspringboot.resolver.DefaultLazyPropertyResolver:31]-- Property Resolver custom Bean not found with name 'encryptablePropertyResolver'. Initializing Default Property Resolver | |||
| [2023-03-20 18:03:14.520] [INFO ] [com.ulisesbocchio.jasyptspringboot.detector.DefaultLazyPropertyDetector:30]-- Property Detector custom Bean not found with name 'encryptablePropertyDetector'. Initializing Default Property Detector | |||
| [2023-03-20 18:03:15.560] [INFO ] [io.undertow.servlet:364]-- Initializing Spring embedded WebApplicationContext | |||
| [2023-03-20 18:03:15.560] [INFO ] [org.springframework.web.context.ContextLoader:284]-- Root WebApplicationContext: initialization completed in 15091 ms | |||
| [2023-03-20 18:03:48.222] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:32]-- String Encryptor custom Bean not found with name 'jasyptStringEncryptor'. Initializing Default String Encryptor | |||
| [2023-03-20 18:03:48.272] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.algorithm, using default value: PBEWithMD5AndDES | |||
| [2023-03-20 18:03:48.273] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.keyObtentionIterations, using default value: 1000 | |||
| [2023-03-20 18:03:48.274] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.poolSize, using default value: 1 | |||
| [2023-03-20 18:03:48.274] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.providerName, using default value: null | |||
| [2023-03-20 18:03:48.275] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.providerClassName, using default value: null | |||
| [2023-03-20 18:03:48.277] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.saltGeneratorClassname, using default value: org.jasypt.salt.RandomSaltGenerator | |||
| [2023-03-20 18:03:48.281] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.stringOutputType, using default value: base64 | |||
| [2023-03-20 18:03:51.593] [INFO ] [org.flowable.spring.boot.ProcessEngineAutoConfiguration$$EnhancerBySpringCGLIB$$fcd4a428:94]-- No deployment resources were found for autodeployment | |||
| [2023-03-20 18:03:51.681] [INFO ] [org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:181]-- Initializing ExecutorService 'applicationTaskExecutor' | |||
| [2023-03-20 18:03:52.621] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:834]-- Found 1 Engine Configurators in total: | |||
| [2023-03-20 18:03:52.622] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:836]-- class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2023-03-20 18:03:52.625] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:851]-- Executing beforeInit() of class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2023-03-20 18:03:53.141] [INFO ] [com.alibaba.druid.pool.DruidDataSource:994]-- {dataSource-1} inited | |||
| [2023-03-20 18:03:56.592] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:858]-- Executing configure() of class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2023-03-20 18:03:57.451] [INFO ] [org.flowable.idm.engine.impl.IdmEngineImpl:51]-- IdmEngine default created | |||
| [2023-03-20 18:04:01.496] [INFO ] [org.flowable.engine.impl.ProcessEngineImpl:84]-- ProcessEngine default created | |||
| [2023-03-20 18:04:01.514] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AbstractAsyncExecutor:114]-- Starting up the async job executor [org.flowable.spring.job.service.SpringAsyncExecutor]. | |||
| [2023-03-20 18:04:01.517] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AcquireTimerJobsRunnable:50]-- starting to acquire async jobs due | |||
| [2023-03-20 18:04:01.517] [INFO ] [org.flowable.job.service.impl.asyncexecutor.ResetExpiredJobsRunnable:56]-- starting to reset expired jobs | |||
| [2023-03-20 18:04:01.515] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AcquireAsyncJobsDueRunnable:52]-- starting to acquire async jobs due | |||
| [2023-03-20 18:04:01.698] [INFO ] [org.flowable.engine.impl.cmd.ValidateV5EntitiesCmd:43]-- Total of v5 deployments found: 0 | |||
| [2023-03-20 18:04:14.065] [INFO ] [springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69]-- Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)] | |||
| [2023-03-20 18:04:17.551] [INFO ] [org.quartz.impl.StdSchedulerFactory:1208]-- Using default implementation for ThreadExecutor | |||
| [2023-03-20 18:04:17.616] [INFO ] [org.quartz.core.SchedulerSignalerImpl:61]-- Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl | |||
| [2023-03-20 18:04:17.616] [INFO ] [org.quartz.core.QuartzScheduler:229]-- Quartz Scheduler v.2.3.0 created. | |||
| [2023-03-20 18:04:17.623] [INFO ] [org.quartz.simpl.RAMJobStore:155]-- RAMJobStore initialized. | |||
| [2023-03-20 18:04:17.628] [INFO ] [org.quartz.core.QuartzScheduler:294]-- Scheduler meta-data: Quartz Scheduler (v2.3.0) 'quartzScheduler' with instanceId 'NON_CLUSTERED' | |||
| Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. | |||
| NOT STARTED. | |||
| Currently in standby mode. | |||
| Number of jobs executed: 0 | |||
| Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads. | |||
| Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. | |||
| [2023-03-20 18:04:17.629] [INFO ] [org.quartz.impl.StdSchedulerFactory:1362]-- Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance. | |||
| [2023-03-20 18:04:17.630] [INFO ] [org.quartz.impl.StdSchedulerFactory:1366]-- Quartz scheduler version: 2.3.0 | |||
| [2023-03-20 18:04:17.632] [INFO ] [org.quartz.core.QuartzScheduler:2287]-- JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@7e93497d | |||
| [2023-03-20 18:04:17.972] [INFO ] [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:151]-- Context refreshed | |||
| [2023-03-20 18:04:18.021] [INFO ] [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:154]-- Found 1 custom documentation plugin(s) | |||
| [2023-03-20 18:04:18.258] [INFO ] [springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41]-- Scanning for api listing references | |||
| [2023-03-20 18:04:18.963] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: deleteUsingGET_1 | |||
| [2023-03-20 18:04:18.968] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_1 | |||
| [2023-03-20 18:04:18.989] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_1 | |||
| [2023-03-20 18:04:19.011] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: saveOrUpdateUsingPOST_1 | |||
| [2023-03-20 18:04:19.020] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: saveOrUpdateUsingPOST_2 | |||
| [2023-03-20 18:04:19.028] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_2 | |||
| [2023-03-20 18:04:19.056] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_2 | |||
| [2023-03-20 18:04:19.198] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_3 | |||
| [2023-03-20 18:04:19.247] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_4 | |||
| [2023-03-20 18:04:19.256] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listStatusUsingGET_1 | |||
| [2023-03-20 18:04:19.347] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_3 | |||
| [2023-03-20 18:04:19.605] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_5 | |||
| [2023-03-20 18:04:19.609] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: printHtmlByIdUsingGET_1 | |||
| [2023-03-20 18:04:19.654] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_6 | |||
| [2023-03-20 18:04:19.734] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_7 | |||
| [2023-03-20 18:04:19.904] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: detailUsingGET_1 | |||
| [2023-03-20 18:04:19.912] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getChannelPoiUsingGET_1 | |||
| [2023-03-20 18:04:19.917] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getHtmlUsingGET_1 | |||
| [2023-03-20 18:04:19.930] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_8 | |||
| [2023-03-20 18:04:19.967] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_9 | |||
| [2023-03-20 18:04:20.024] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getAppIconUsingGET_1 | |||
| [2023-03-20 18:04:20.068] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_10 | |||
| [2023-03-20 18:04:20.072] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getOneUsingGET_1 | |||
| [2023-03-20 18:04:20.136] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: addUsingPOST_1 | |||
| [2023-03-20 18:04:20.156] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_11 | |||
| [2023-03-20 18:04:20.770] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_4 | |||
| [2023-03-20 18:04:20.835] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: addUsingPOST_2 | |||
| [2023-03-20 18:04:20.839] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_5 | |||
| [2023-03-20 18:04:20.851] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_12 | |||
| [2023-03-20 18:04:20.899] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_13 | |||
| [2023-03-20 18:04:20.925] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_14 | |||
| [2023-03-20 18:04:20.944] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_6 | |||
| [2023-03-20 18:04:21.137] [INFO ] [org.springframework.scheduling.quartz.SchedulerFactoryBean:727]-- Starting Quartz Scheduler now | |||
| [2023-03-20 18:04:21.138] [INFO ] [org.quartz.core.QuartzScheduler:547]-- Scheduler quartzScheduler_$_NON_CLUSTERED started. | |||
| [2023-03-20 18:04:21.204] [INFO ] [io.undertow:117]-- starting server: Undertow - 2.0.29.Final | |||
| [2023-03-20 18:04:21.231] [INFO ] [org.xnio:104]-- XNIO version 3.3.8.Final | |||
| [2023-03-20 18:04:21.272] [INFO ] [org.xnio.nio:55]-- XNIO NIO Implementation Version 3.3.8.Final | |||
| [2023-03-20 18:04:21.527] [INFO ] [org.springframework.boot.web.embedded.undertow.UndertowServletWebServer:144]-- Undertow started on port(s) 7000 (http) with context path '/C' | |||
| [2023-03-20 18:04:21.535] [INFO ] [com.iformall.CApplication:61]-- Started CApplication in 103.601 seconds (JVM running for 105.748) | |||
| [2023-03-20 18:06:33.619] [INFO ] [io.undertow.servlet:364]-- Initializing Spring DispatcherServlet 'dispatcherServlet' | |||
| [2023-03-20 18:06:33.622] [INFO ] [org.springframework.web.servlet.DispatcherServlet:525]-- Initializing Servlet 'dispatcherServlet' | |||
| [2023-03-20 18:06:33.724] [INFO ] [org.springframework.web.servlet.DispatcherServlet:547]-- Completed initialization in 102 ms | |||
| [2023-03-20 18:06:33.875] [INFO ] [com.iformall.service.impl.CUserTokenServiceImpl:55]-- 获取用户信息start ...e43cf234-b0da-4730-910e-bffeae26116c:789:wx-cuser | |||
| [2023-03-20 18:06:34.417] [INFO ] [io.lettuce.core.EpollProvider:68]-- Starting without optional epoll library | |||
| [2023-03-20 18:06:35.273] [INFO ] [io.lettuce.core.KqueueProvider:66]-- Starting with kqueue library | |||
| [2023-03-20 18:06:46.603] [INFO ] [com.iformall.interceptor.WebLogAspect:67]-- URL: http://localhost:7000/C/api/wxBusiness/listAll, METHOD: GET, DO: com.iformall.controller.BaseController.InitBinder, IP: 192.168.1.106, SPEND TIME: 5032ms | |||
| [2023-03-20 18:06:46.639] [INFO ] [com.iformall.aop.RedisCacheAspect:75]-- token>>>>>>>>>>>>>>>e43cf234-b0da-4730-910e-bffeae26116c:789:wx-cuser | |||
| [2023-03-20 18:06:46.640] [INFO ] [com.iformall.service.impl.CUserTokenServiceImpl:55]-- 获取用户信息start ...e43cf234-b0da-4730-910e-bffeae26116c:789:wx-cuser | |||
| [2023-03-20 18:13:15.568] [INFO ] [com.iformall.service.MailService:43]-- 简单邮件已经发送。 | |||
| [2023-03-20 18:13:19.814] [INFO ] [com.iformall.service.impl.CUserTokenServiceImpl:55]-- 获取用户信息start ...e43cf234-b0da-4730-910e-bffeae26116c:789:wx-cuser | |||
| [2023-03-20 18:13:24.942] [INFO ] [com.iformall.interceptor.WebLogAspect:67]-- URL: http://localhost:7000/C/api/wxBusiness/listAll, METHOD: GET, DO: com.iformall.controller.BaseController.InitBinder, IP: 192.168.1.106, SPEND TIME: 5008ms | |||
| [2023-03-20 18:13:24.947] [INFO ] [com.iformall.aop.RedisCacheAspect:75]-- token>>>>>>>>>>>>>>>e43cf234-b0da-4730-910e-bffeae26116c:789:wx-cuser | |||
| [2023-03-20 18:13:24.948] [INFO ] [com.iformall.service.impl.CUserTokenServiceImpl:55]-- 获取用户信息start ...e43cf234-b0da-4730-910e-bffeae26116c:789:wx-cuser | |||
| @@ -0,0 +1,410 @@ | |||
| [2022-06-10 15:46:38.963] [WARN ] [org.springframework.boot.StartupInfoLogger:116]-- InetAddress.getLocalHost().getHostName() took 5012 milliseconds to respond. Please verify your network configuration (macOS machines may need to add entries to /etc/hosts). | |||
| [2022-06-10 15:46:43.986] [INFO ] [com.iformall.CApplication:55]-- Starting CApplication on lintekiMacBook-Air.local with PID 730 (/Users/lin/project/formallProject/mallinkCApi/target/classes started by lin in /Users/lin/project/formallProject/mallinkCApi) | |||
| [2022-06-10 15:46:43.988] [DEBUG] [com.iformall.CApplication:56]-- Running with Spring Boot v2.2.5.RELEASE, Spring v5.2.4.RELEASE | |||
| [2022-06-10 15:46:43.991] [INFO ] [com.iformall.CApplication:655]-- The following profiles are active: dev,rabbitMQ | |||
| [2022-06-10 15:46:49.291] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]-- Multiple Spring Data modules found, entering strict repository configuration mode! | |||
| [2022-06-10 15:46:49.301] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:127]-- Bootstrapping Spring Data Redis repositories in DEFAULT mode. | |||
| [2022-06-10 15:46:50.069] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:187]-- Finished Spring Data repository scanning in 717ms. Found 0 Redis repository interfaces. | |||
| [2022-06-10 15:46:52.695] [INFO ] [com.ulisesbocchio.jasyptspringboot.configuration.EnableEncryptablePropertiesBeanFactoryPostProcessor:50]-- Post-processing PropertySource instances | |||
| [2022-06-10 15:46:52.917] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource configurationProperties [org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource] to AOP Proxy | |||
| [2022-06-10 15:46:52.919] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletConfigInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:46:52.919] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletContextInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:46:52.920] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemProperties [org.springframework.core.env.PropertiesPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:46:52.921] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemEnvironment [org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor$OriginAwareSystemEnvironmentPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:46:52.921] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource random [org.springframework.boot.env.RandomValuePropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:46:52.922] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application-dev.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:46:52.922] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:46:52.923] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource flowable-liquibase-override [org.springframework.core.env.MapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:46:53.199] [INFO ] [com.ulisesbocchio.jasyptspringboot.filter.DefaultLazyPropertyFilter:31]-- Property Filter custom Bean not found with name 'encryptablePropertyFilter'. Initializing Default Property Filter | |||
| [2022-06-10 15:46:53.269] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$EnhancerBySpringCGLIB$$57e59eab] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2022-06-10 15:46:53.378] [INFO ] [org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping:236]-- Supporting [WS-Addressing August 2004, WS-Addressing 1.0] | |||
| [2022-06-10 15:46:54.376] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'redisConfig' of type [com.iformall.config.RedisConfig$$EnhancerBySpringCGLIB$$53c86a0f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2022-06-10 15:46:54.780] [INFO ] [com.ulisesbocchio.jasyptspringboot.resolver.DefaultLazyPropertyResolver:31]-- Property Resolver custom Bean not found with name 'encryptablePropertyResolver'. Initializing Default Property Resolver | |||
| [2022-06-10 15:46:54.799] [INFO ] [com.ulisesbocchio.jasyptspringboot.detector.DefaultLazyPropertyDetector:30]-- Property Detector custom Bean not found with name 'encryptablePropertyDetector'. Initializing Default Property Detector | |||
| [2022-06-10 15:46:55.483] [WARN ] [io.undertow.websockets.jsr:68]-- UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used | |||
| [2022-06-10 15:46:55.576] [INFO ] [io.undertow.servlet:364]-- Initializing Spring embedded WebApplicationContext | |||
| [2022-06-10 15:46:55.577] [INFO ] [org.springframework.web.context.ContextLoader:284]-- Root WebApplicationContext: initialization completed in 11331 ms | |||
| [2022-06-10 15:46:59.727] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.MallCooUserInfoMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:00.415] [WARN ] [com.baomidou.mybatisplus.core.metadata.TableInfoHelper:282]-- Warn: Could not find @TableId in Class: com.iformall.domain.po.NeuPosOrderMasterExt. | |||
| [2022-06-10 15:47:00.722] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.PosOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:00.771] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.PosPayOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:01.288] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtCUserMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:01.407] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtCouponMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:47:01.417] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtCouponMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:01.712] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtUserCollectMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:47:01.758] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtUserFollowMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:47:01.806] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtVideoLibraryMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:47:01.871] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.UserBasicInfoAddressMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:47:02.002] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxActivityMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:47:02.272] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxBatchOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:03.289] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserBasicInfoMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:03.643] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:03.709] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserTagsMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:47:03.718] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserTagsMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:03.829] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCarCmdLogMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:47:03.838] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCarCmdLogMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:04.197] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCardTransferInfoMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:04.243] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCashOutMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:04.402] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponActionLogMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:47:04.410] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponActionLogMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:04.543] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponChannelMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:04.879] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:47:04.890] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:05.043] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:05.252] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponSendMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:47:05.261] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponSendMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:05.370] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCreditHistoryMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:47:05.385] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCreditHistoryMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:07.277] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxMerchantSubsidyMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:47:07.287] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxMerchantSubsidyMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:47:40.727] [WARN ] [org.springframework.boot.StartupInfoLogger:116]-- InetAddress.getLocalHost().getHostName() took 5006 milliseconds to respond. Please verify your network configuration (macOS machines may need to add entries to /etc/hosts). | |||
| [2022-06-10 15:47:45.749] [INFO ] [com.iformall.CApplication:55]-- Starting CApplication on lintekiMacBook-Air.local with PID 735 (/Users/lin/project/formallProject/mallinkCApi/target/classes started by lin in /Users/lin/project/formallProject/mallinkCApi) | |||
| [2022-06-10 15:47:45.752] [DEBUG] [com.iformall.CApplication:56]-- Running with Spring Boot v2.2.5.RELEASE, Spring v5.2.4.RELEASE | |||
| [2022-06-10 15:47:45.755] [INFO ] [com.iformall.CApplication:655]-- The following profiles are active: dev,rabbitMQ | |||
| [2022-06-10 15:47:51.085] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]-- Multiple Spring Data modules found, entering strict repository configuration mode! | |||
| [2022-06-10 15:47:51.095] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:127]-- Bootstrapping Spring Data Redis repositories in DEFAULT mode. | |||
| [2022-06-10 15:47:51.546] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:187]-- Finished Spring Data repository scanning in 382ms. Found 0 Redis repository interfaces. | |||
| [2022-06-10 15:47:53.751] [INFO ] [com.ulisesbocchio.jasyptspringboot.configuration.EnableEncryptablePropertiesBeanFactoryPostProcessor:50]-- Post-processing PropertySource instances | |||
| [2022-06-10 15:47:54.011] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource configurationProperties [org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource] to AOP Proxy | |||
| [2022-06-10 15:47:54.015] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletConfigInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:47:54.015] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletContextInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:47:54.019] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemProperties [org.springframework.core.env.PropertiesPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:47:54.020] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemEnvironment [org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor$OriginAwareSystemEnvironmentPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:47:54.023] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource random [org.springframework.boot.env.RandomValuePropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:47:54.026] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application-dev.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:47:54.027] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:47:54.029] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource flowable-liquibase-override [org.springframework.core.env.MapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:47:54.345] [INFO ] [com.ulisesbocchio.jasyptspringboot.filter.DefaultLazyPropertyFilter:31]-- Property Filter custom Bean not found with name 'encryptablePropertyFilter'. Initializing Default Property Filter | |||
| [2022-06-10 15:47:54.427] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$EnhancerBySpringCGLIB$$68eea6d8] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2022-06-10 15:47:54.501] [INFO ] [org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping:236]-- Supporting [WS-Addressing August 2004, WS-Addressing 1.0] | |||
| [2022-06-10 15:47:55.664] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'redisConfig' of type [com.iformall.config.RedisConfig$$EnhancerBySpringCGLIB$$64d1723c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2022-06-10 15:47:56.118] [INFO ] [com.ulisesbocchio.jasyptspringboot.resolver.DefaultLazyPropertyResolver:31]-- Property Resolver custom Bean not found with name 'encryptablePropertyResolver'. Initializing Default Property Resolver | |||
| [2022-06-10 15:47:56.127] [INFO ] [com.ulisesbocchio.jasyptspringboot.detector.DefaultLazyPropertyDetector:30]-- Property Detector custom Bean not found with name 'encryptablePropertyDetector'. Initializing Default Property Detector | |||
| [2022-06-10 15:47:56.762] [WARN ] [io.undertow.websockets.jsr:68]-- UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used | |||
| [2022-06-10 15:47:56.835] [INFO ] [io.undertow.servlet:364]-- Initializing Spring embedded WebApplicationContext | |||
| [2022-06-10 15:47:56.837] [INFO ] [org.springframework.web.context.ContextLoader:284]-- Root WebApplicationContext: initialization completed in 10901 ms | |||
| [2022-06-10 15:48:01.331] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.MallCooUserInfoMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:02.067] [WARN ] [com.baomidou.mybatisplus.core.metadata.TableInfoHelper:282]-- Warn: Could not find @TableId in Class: com.iformall.domain.po.NeuPosOrderMasterExt. | |||
| [2022-06-10 15:48:02.497] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.PosOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:02.596] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.PosPayOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:03.185] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtCUserMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:03.293] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtCouponMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:48:03.304] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtCouponMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:03.671] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtUserCollectMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:48:03.740] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtUserFollowMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:48:03.936] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtVideoLibraryMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:48:04.008] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.UserBasicInfoAddressMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:48:04.217] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxActivityMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:48:04.615] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxBatchOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:07.445] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserBasicInfoMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:08.023] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:08.101] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserTagsMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:48:08.137] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserTagsMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:08.432] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCarCmdLogMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:48:08.456] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCarCmdLogMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:09.063] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCardTransferInfoMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:09.148] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCashOutMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:09.359] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponActionLogMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:48:09.368] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponActionLogMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:09.532] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponChannelMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:09.959] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:48:09.971] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:10.114] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:10.397] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponSendMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:48:10.411] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponSendMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:10.542] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCreditHistoryMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:48:10.558] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCreditHistoryMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:12.072] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxMerchantSubsidyMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:48:12.078] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxMerchantSubsidyMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:13.011] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxOrderGroupMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:13.091] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:13.132] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxOrderPressMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:13.345] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxPayOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:14.479] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxScoreHistoryMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:48:14.489] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxScoreHistoryMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:48:14.880] [WARN ] [com.baomidou.mybatisplus.core.metadata.TableInfoHelper:282]-- Warn: Could not find @TableId in Class: com.iformall.domain.po.WxThemeMall. | |||
| [2022-06-10 15:48:20.705] [DEBUG] [com.iformall.common.FmHttpClientBuilder:233]-- Not specified dns resolver. | |||
| [2022-06-10 15:48:24.142] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:32]-- String Encryptor custom Bean not found with name 'jasyptStringEncryptor'. Initializing Default String Encryptor | |||
| [2022-06-10 15:48:24.184] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.algorithm, using default value: PBEWithMD5AndDES | |||
| [2022-06-10 15:48:24.185] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.keyObtentionIterations, using default value: 1000 | |||
| [2022-06-10 15:48:24.187] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.poolSize, using default value: 1 | |||
| [2022-06-10 15:48:24.190] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.providerName, using default value: null | |||
| [2022-06-10 15:48:24.191] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.providerClassName, using default value: null | |||
| [2022-06-10 15:48:24.192] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.saltGeneratorClassname, using default value: org.jasypt.salt.RandomSaltGenerator | |||
| [2022-06-10 15:48:24.204] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.stringOutputType, using default value: base64 | |||
| [2022-06-10 15:49:09.510] [INFO ] [org.flowable.spring.boot.ProcessEngineAutoConfiguration$$EnhancerBySpringCGLIB$$cacb1f2b:94]-- No deployment resources were found for autodeployment | |||
| [2022-06-10 15:49:09.554] [INFO ] [org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:181]-- Initializing ExecutorService 'applicationTaskExecutor' | |||
| [2022-06-10 15:49:10.303] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:834]-- Found 1 Engine Configurators in total: | |||
| [2022-06-10 15:49:10.304] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:836]-- class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2022-06-10 15:49:10.307] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:851]-- Executing beforeInit() of class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2022-06-10 15:49:10.813] [INFO ] [com.alibaba.druid.pool.DruidDataSource:994]-- {dataSource-1} inited | |||
| [2022-06-10 15:49:13.468] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:858]-- Executing configure() of class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2022-06-10 15:49:14.587] [INFO ] [org.flowable.idm.engine.impl.IdmEngineImpl:51]-- IdmEngine default created | |||
| [2022-06-10 15:49:20.283] [INFO ] [org.flowable.engine.impl.ProcessEngineImpl:84]-- ProcessEngine default created | |||
| [2022-06-10 15:49:20.303] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AbstractAsyncExecutor:114]-- Starting up the async job executor [org.flowable.spring.job.service.SpringAsyncExecutor]. | |||
| [2022-06-10 15:49:20.306] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AcquireTimerJobsRunnable:50]-- starting to acquire async jobs due | |||
| [2022-06-10 15:49:20.304] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AcquireAsyncJobsDueRunnable:52]-- starting to acquire async jobs due | |||
| [2022-06-10 15:49:20.306] [INFO ] [org.flowable.job.service.impl.asyncexecutor.ResetExpiredJobsRunnable:56]-- starting to reset expired jobs | |||
| [2022-06-10 15:49:20.557] [INFO ] [org.flowable.engine.impl.cmd.ValidateV5EntitiesCmd:43]-- Total of v5 deployments found: 0 | |||
| [2022-06-10 15:49:29.741] [INFO ] [springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69]-- Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)] | |||
| [2022-06-10 15:49:31.415] [INFO ] [org.quartz.impl.StdSchedulerFactory:1208]-- Using default implementation for ThreadExecutor | |||
| [2022-06-10 15:49:31.497] [INFO ] [org.quartz.core.SchedulerSignalerImpl:61]-- Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl | |||
| [2022-06-10 15:49:31.501] [INFO ] [org.quartz.core.QuartzScheduler:229]-- Quartz Scheduler v.2.3.0 created. | |||
| [2022-06-10 15:49:31.506] [INFO ] [org.quartz.simpl.RAMJobStore:155]-- RAMJobStore initialized. | |||
| [2022-06-10 15:49:31.512] [INFO ] [org.quartz.core.QuartzScheduler:294]-- Scheduler meta-data: Quartz Scheduler (v2.3.0) 'quartzScheduler' with instanceId 'NON_CLUSTERED' | |||
| Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. | |||
| NOT STARTED. | |||
| Currently in standby mode. | |||
| Number of jobs executed: 0 | |||
| Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads. | |||
| Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. | |||
| [2022-06-10 15:49:31.515] [INFO ] [org.quartz.impl.StdSchedulerFactory:1362]-- Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance. | |||
| [2022-06-10 15:49:31.518] [INFO ] [org.quartz.impl.StdSchedulerFactory:1366]-- Quartz scheduler version: 2.3.0 | |||
| [2022-06-10 15:49:31.522] [INFO ] [org.quartz.core.QuartzScheduler:2287]-- JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@d332ebc | |||
| [2022-06-10 15:49:31.597] [WARN ] [org.springframework.xml.transform.TransformerFactoryUtils:62]-- http://javax.xml.XMLConstants/property/accessExternalDTD property not supported by net.sf.saxon.TransformerFactoryImpl | |||
| [2022-06-10 15:49:31.597] [WARN ] [org.springframework.xml.transform.TransformerFactoryUtils:70]-- http://javax.xml.XMLConstants/property/accessExternalStylesheet property not supported by net.sf.saxon.TransformerFactoryImpl | |||
| [2022-06-10 15:49:31.866] [INFO ] [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:151]-- Context refreshed | |||
| [2022-06-10 15:49:31.919] [INFO ] [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:154]-- Found 1 custom documentation plugin(s) | |||
| [2022-06-10 15:49:32.056] [INFO ] [springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41]-- Scanning for api listing references | |||
| [2022-06-10 15:49:32.607] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_1 | |||
| [2022-06-10 15:49:32.636] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_1 | |||
| [2022-06-10 15:49:32.729] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_2 | |||
| [2022-06-10 15:49:32.757] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_3 | |||
| [2022-06-10 15:49:32.766] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listStatusUsingGET_1 | |||
| [2022-06-10 15:49:32.883] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_2 | |||
| [2022-06-10 15:49:33.052] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_4 | |||
| [2022-06-10 15:49:33.056] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: printHtmlByIdUsingGET_1 | |||
| [2022-06-10 15:49:33.098] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_5 | |||
| [2022-06-10 15:49:33.182] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_6 | |||
| [2022-06-10 15:49:33.333] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: detailUsingGET_1 | |||
| [2022-06-10 15:49:33.342] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getChannelPoiUsingGET_1 | |||
| [2022-06-10 15:49:33.346] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getHtmlUsingGET_1 | |||
| [2022-06-10 15:49:33.363] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_7 | |||
| [2022-06-10 15:49:33.413] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_8 | |||
| [2022-06-10 15:49:33.528] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getAppIconUsingGET_1 | |||
| [2022-06-10 15:49:33.593] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_9 | |||
| [2022-06-10 15:49:33.601] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getOneUsingGET_1 | |||
| [2022-06-10 15:49:33.678] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: addUsingPOST_1 | |||
| [2022-06-10 15:49:33.693] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_10 | |||
| [2022-06-10 15:49:34.120] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_3 | |||
| [2022-06-10 15:49:34.150] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: addUsingPOST_2 | |||
| [2022-06-10 15:49:34.154] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_4 | |||
| [2022-06-10 15:49:34.167] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_11 | |||
| [2022-06-10 15:49:34.218] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_12 | |||
| [2022-06-10 15:49:34.260] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_13 | |||
| [2022-06-10 15:49:34.287] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_5 | |||
| [2022-06-10 15:49:34.503] [INFO ] [org.springframework.scheduling.quartz.SchedulerFactoryBean:727]-- Starting Quartz Scheduler now | |||
| [2022-06-10 15:49:34.504] [INFO ] [org.quartz.core.QuartzScheduler:547]-- Scheduler quartzScheduler_$_NON_CLUSTERED started. | |||
| [2022-06-10 15:49:34.561] [INFO ] [io.undertow:117]-- starting server: Undertow - 2.0.29.Final | |||
| [2022-06-10 15:49:34.591] [INFO ] [org.xnio:104]-- XNIO version 3.3.8.Final | |||
| [2022-06-10 15:49:34.624] [INFO ] [org.xnio.nio:55]-- XNIO NIO Implementation Version 3.3.8.Final | |||
| [2022-06-10 15:49:34.876] [INFO ] [org.springframework.boot.web.embedded.undertow.UndertowServletWebServer:144]-- Undertow started on port(s) 7000 (http) with context path '/C' | |||
| [2022-06-10 15:49:34.884] [INFO ] [com.iformall.CApplication:61]-- Started CApplication in 131.896 seconds (JVM running for 134.108) | |||
| [2022-06-10 15:49:37.777] [INFO ] [io.undertow.servlet:364]-- Initializing Spring DispatcherServlet 'dispatcherServlet' | |||
| [2022-06-10 15:49:37.777] [INFO ] [org.springframework.web.servlet.DispatcherServlet:525]-- Initializing Servlet 'dispatcherServlet' | |||
| [2022-06-10 15:49:37.805] [INFO ] [org.springframework.web.servlet.DispatcherServlet:547]-- Completed initialization in 27 ms | |||
| [2022-06-10 15:49:37.814] [DEBUG] [com.iformall.interceptor.HttpServletRequestWrapperFilter:23]-- doFilter start | |||
| [2022-06-10 15:49:37.864] [INFO ] [com.iformall.service.impl.CUserTokenServiceImpl:55]-- 获取用户信息start ...0774f386-0bb8-455f-8c71-1c2e90bbcf91:789:wx-cuser | |||
| [2022-06-10 15:49:38.208] [INFO ] [io.lettuce.core.EpollProvider:68]-- Starting without optional epoll library | |||
| [2022-06-10 15:49:39.014] [INFO ] [io.lettuce.core.KqueueProvider:66]-- Starting with kqueue library | |||
| [2022-06-10 15:49:45.567] [DEBUG] [com.iformall.mapper.WxCUserMapper.findByToken:143]-- ==> Preparing: select `id`,`user_id`,`tenant_id`,`parent_tenant_id`,`open_id`,`union_id`,`nick_name`,`gender`,`avatar_url`,`phone`,`pure_phone`, `city`,`province`,`language`,`country_code`,`register_ip`,`verify_code_phone`, `qrcode_source`,`scene`,`scene_address`,`session_key`,`score`, `update_date`,`create_date`,`app_id`,`token`,`expire_time`,`latitude`, `longitude`, `login_count`, `extra_info`, `is_subscribe`, `open_app_id`, `mp_open_id`,`mp_app_id`,`mp_subscribe`,`mp_subscribe_time`,`mp_subscribe_scene`, `subs_open_id`,`subs_app_id`,`subs_subscribe`,`subs_subscribe_time`,`subs_subscribe_scene`,`credit`,`active_time`,`qr_code` from wx_c_user_89 where `token` = ? and `tenant_id` = ? | |||
| [2022-06-10 15:49:45.588] [DEBUG] [com.iformall.mapper.WxCUserMapper.findByToken:143]-- ==> Parameters: 0774f386-0bb8-455f-8c71-1c2e90bbcf91:789:wx-cuser(String), 789(String) | |||
| [2022-06-10 15:49:45.652] [DEBUG] [com.iformall.mapper.WxCUserMapper.findByToken:143]-- <== Total: 1 | |||
| [2022-06-10 15:49:45.818] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:76]-- ************************异常开始******************************* | |||
| [2022-06-10 15:49:45.822] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:79]-- URL:http://localhost:7000/C/api/car/tttttt token失效,请重新登录 | |||
| [2022-06-10 15:49:45.823] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:80]-- ************************异常结束******************************* | |||
| [2022-06-10 15:49:45.922] [DEBUG] [com.iformall.interceptor.HttpServletRequestWrapperFilter:63]-- doFilter end: /C/api/car/tttttt 8107ms | |||
| [2022-06-10 15:51:28.928] [DEBUG] [com.iformall.interceptor.HttpServletRequestWrapperFilter:23]-- doFilter start | |||
| [2022-06-10 15:51:28.932] [INFO ] [com.iformall.service.impl.CUserTokenServiceImpl:55]-- 获取用户信息start ...d0440c86-77b2-42e8-9c92-cddeff6a9a0c:789:wx-cuser | |||
| [2022-06-10 15:51:29.229] [DEBUG] [com.iformall.interceptor.RequestInterceptor:46]-- preHandle start | |||
| [2022-06-10 15:51:34.347] [INFO ] [com.iformall.interceptor.RequestInterceptor:105]-- request:C:4870968add49222be7e0a79d481b5d11: 第一次提交 | |||
| [2022-06-10 15:51:34.348] [DEBUG] [com.iformall.interceptor.RequestInterceptor:106]-- preHandle start 2 | |||
| [2022-06-10 15:51:34.378] [DEBUG] [com.iformall.interceptor.WebLogAspect:41]-- aspect start | |||
| [2022-06-10 15:51:39.399] [DEBUG] [com.iformall.interceptor.WebLogAspect:53]-- aspect start ... | |||
| [2022-06-10 15:52:00.368] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.findList:143]-- ==> Preparing: SELECT wcuc.`id`, wcuc.`tenant_id`, wcuc.`parent_tenant_id`, wcuc.`c_user_id`, wcuc.`car_number`, wcuc.`create_date`, wcuc.`update_date`, wcuc.`vendor_type`, wcuc.`vendor_params`, wcuc.`vendor_person_id` FROM wx_c_user_car wcuc WHERE wcuc.tenant_id = '789' AND 1 = 1 AND wcuc.`c_user_id` = ? ORDER BY wcuc.create_date | |||
| [2022-06-10 15:52:00.385] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.findList:143]-- ==> Parameters: 441397811441729536(Long) | |||
| [2022-06-10 15:52:00.425] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.findList:143]-- <== Total: 0 | |||
| [2022-06-10 15:52:05.446] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.insert:143]-- ==> Preparing: INSERT INTO wx_c_user_car (id, vendor_type, update_date, car_number, c_user_id, tenant_id, create_date) VALUES (?, ?, ?, ?, ?, ?, ?) | |||
| [2022-06-10 15:52:05.449] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.insert:143]-- ==> Parameters: 695146812092092416(Long), 1(Integer), 2022-06-10 15:52:00.427(Timestamp), 川A48Q1J(String), 441397811441729536(Long), 789(String), 2022-06-10 15:52:00.427(Timestamp) | |||
| [2022-06-10 15:52:05.525] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.insert:143]-- <== Updates: 1 | |||
| [2022-06-10 15:52:05.537] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.insert:143]-- ==> Preparing: INSERT INTO wx_c_user_car (id, vendor_type, update_date, car_number, c_user_id, tenant_id, create_date) VALUES (?, ?, ?, ?, ?, ?, ?) | |||
| [2022-06-10 15:52:05.540] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.insert:143]-- ==> Parameters: 695146812494745600(Long), 1(Integer), 2022-06-10 15:52:05.527(Timestamp), 冀AH02W1(String), 441397811441729536(Long), 789(String), 2022-06-10 15:52:05.527(Timestamp) | |||
| [2022-06-10 15:52:05.613] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.insert:143]-- <== Updates: 1 | |||
| [2022-06-10 15:52:05.617] [DEBUG] [com.iformall.interceptor.WebLogAspect:58]-- aspect after | |||
| [2022-06-10 15:52:05.618] [INFO ] [com.iformall.interceptor.WebLogAspect:67]-- URL: http://localhost:7000/C/api/car/tttttt, METHOD: POST, DO: com.iformall.controller.WxCarController.tttttttt, IP: 192.168.1.102, SPEND TIME: 31234ms | |||
| [2022-06-10 15:52:05.619] [DEBUG] [com.iformall.interceptor.WebLogAspect:68]-- aspect after .. | |||
| [2022-06-10 15:52:05.647] [DEBUG] [com.iformall.interceptor.RequestInterceptor:116]-- postHandle | |||
| [2022-06-10 15:52:05.647] [DEBUG] [com.iformall.interceptor.RequestInterceptor:121]-- afterCompletion: | |||
| [2022-06-10 15:52:05.649] [DEBUG] [com.iformall.interceptor.HttpServletRequestWrapperFilter:63]-- doFilter end: /C/api/car/tttttt 36719ms | |||
| [2022-06-10 15:54:55.246] [WARN ] [org.springframework.boot.StartupInfoLogger:116]-- InetAddress.getLocalHost().getHostName() took 5007 milliseconds to respond. Please verify your network configuration (macOS machines may need to add entries to /etc/hosts). | |||
| [2022-06-10 15:55:00.263] [INFO ] [com.iformall.CApplication:55]-- Starting CApplication on lintekiMacBook-Air.local with PID 784 (/Users/lin/project/formallProject/mallinkCApi/target/classes started by lin in /Users/lin/project/formallProject/mallinkCApi) | |||
| [2022-06-10 15:55:00.264] [DEBUG] [com.iformall.CApplication:56]-- Running with Spring Boot v2.2.5.RELEASE, Spring v5.2.4.RELEASE | |||
| [2022-06-10 15:55:00.265] [INFO ] [com.iformall.CApplication:655]-- The following profiles are active: dev,rabbitMQ | |||
| [2022-06-10 15:55:04.985] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]-- Multiple Spring Data modules found, entering strict repository configuration mode! | |||
| [2022-06-10 15:55:04.996] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:127]-- Bootstrapping Spring Data Redis repositories in DEFAULT mode. | |||
| [2022-06-10 15:55:05.448] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:187]-- Finished Spring Data repository scanning in 410ms. Found 0 Redis repository interfaces. | |||
| [2022-06-10 15:55:08.152] [INFO ] [com.ulisesbocchio.jasyptspringboot.configuration.EnableEncryptablePropertiesBeanFactoryPostProcessor:50]-- Post-processing PropertySource instances | |||
| [2022-06-10 15:55:08.398] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource configurationProperties [org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource] to AOP Proxy | |||
| [2022-06-10 15:55:08.400] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletConfigInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:55:08.404] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletContextInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:55:08.406] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemProperties [org.springframework.core.env.PropertiesPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:55:08.408] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemEnvironment [org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor$OriginAwareSystemEnvironmentPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:55:08.412] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource random [org.springframework.boot.env.RandomValuePropertySource] to EncryptablePropertySourceWrapper | |||
| [2022-06-10 15:55:08.413] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application-dev.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:55:08.414] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:55:08.415] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource flowable-liquibase-override [org.springframework.core.env.MapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2022-06-10 15:55:08.691] [INFO ] [com.ulisesbocchio.jasyptspringboot.filter.DefaultLazyPropertyFilter:31]-- Property Filter custom Bean not found with name 'encryptablePropertyFilter'. Initializing Default Property Filter | |||
| [2022-06-10 15:55:08.905] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$EnhancerBySpringCGLIB$$dfae8c8f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2022-06-10 15:55:08.995] [INFO ] [org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping:236]-- Supporting [WS-Addressing August 2004, WS-Addressing 1.0] | |||
| [2022-06-10 15:55:09.974] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'redisConfig' of type [com.iformall.config.RedisConfig$$EnhancerBySpringCGLIB$$db9157f3] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2022-06-10 15:55:10.364] [INFO ] [com.ulisesbocchio.jasyptspringboot.resolver.DefaultLazyPropertyResolver:31]-- Property Resolver custom Bean not found with name 'encryptablePropertyResolver'. Initializing Default Property Resolver | |||
| [2022-06-10 15:55:10.372] [INFO ] [com.ulisesbocchio.jasyptspringboot.detector.DefaultLazyPropertyDetector:30]-- Property Detector custom Bean not found with name 'encryptablePropertyDetector'. Initializing Default Property Detector | |||
| [2022-06-10 15:55:10.990] [WARN ] [io.undertow.websockets.jsr:68]-- UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used | |||
| [2022-06-10 15:55:11.063] [INFO ] [io.undertow.servlet:364]-- Initializing Spring embedded WebApplicationContext | |||
| [2022-06-10 15:55:11.066] [INFO ] [org.springframework.web.context.ContextLoader:284]-- Root WebApplicationContext: initialization completed in 10636 ms | |||
| [2022-06-10 15:55:14.821] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.MallCooUserInfoMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:15.465] [WARN ] [com.baomidou.mybatisplus.core.metadata.TableInfoHelper:282]-- Warn: Could not find @TableId in Class: com.iformall.domain.po.NeuPosOrderMasterExt. | |||
| [2022-06-10 15:55:15.805] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.PosOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:15.862] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.PosPayOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:16.452] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtCUserMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:16.563] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtCouponMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:55:16.584] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtCouponMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:16.853] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtUserCollectMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:55:16.897] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtUserFollowMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:55:16.951] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtVideoLibraryMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:55:17.040] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.UserBasicInfoAddressMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:55:17.201] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxActivityMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:55:17.462] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxBatchOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:18.473] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserBasicInfoMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:18.722] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:18.770] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserTagsMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:55:18.778] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserTagsMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:18.890] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCarCmdLogMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:55:18.898] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCarCmdLogMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:19.260] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCardTransferInfoMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:19.304] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCashOutMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:19.411] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponActionLogMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:55:19.422] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponActionLogMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:19.554] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponChannelMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:19.865] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:55:19.876] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:20.019] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:20.192] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponSendMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:55:20.200] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponSendMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:20.345] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCreditHistoryMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:55:20.354] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCreditHistoryMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:21.584] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxMerchantSubsidyMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:55:21.594] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxMerchantSubsidyMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:22.223] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxOrderGroupMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:22.297] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:22.333] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxOrderPressMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:22.587] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxPayOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:23.366] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxScoreHistoryMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2022-06-10 15:55:23.375] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxScoreHistoryMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2022-06-10 15:55:24.169] [WARN ] [com.baomidou.mybatisplus.core.metadata.TableInfoHelper:282]-- Warn: Could not find @TableId in Class: com.iformall.domain.po.WxThemeMall. | |||
| [2022-06-10 15:55:28.654] [DEBUG] [com.iformall.common.FmHttpClientBuilder:233]-- Not specified dns resolver. | |||
| [2022-06-10 15:55:32.244] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:32]-- String Encryptor custom Bean not found with name 'jasyptStringEncryptor'. Initializing Default String Encryptor | |||
| [2022-06-10 15:55:32.274] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.algorithm, using default value: PBEWithMD5AndDES | |||
| [2022-06-10 15:55:32.275] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.keyObtentionIterations, using default value: 1000 | |||
| [2022-06-10 15:55:32.276] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.poolSize, using default value: 1 | |||
| [2022-06-10 15:55:32.277] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.providerName, using default value: null | |||
| [2022-06-10 15:55:32.278] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.providerClassName, using default value: null | |||
| [2022-06-10 15:55:32.280] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.saltGeneratorClassname, using default value: org.jasypt.salt.RandomSaltGenerator | |||
| [2022-06-10 15:55:32.283] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.stringOutputType, using default value: base64 | |||
| [2022-06-10 15:55:36.656] [INFO ] [org.flowable.spring.boot.ProcessEngineAutoConfiguration$$EnhancerBySpringCGLIB$$418b04e2:94]-- No deployment resources were found for autodeployment | |||
| [2022-06-10 15:55:36.694] [INFO ] [org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:181]-- Initializing ExecutorService 'applicationTaskExecutor' | |||
| [2022-06-10 15:55:37.232] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:834]-- Found 1 Engine Configurators in total: | |||
| [2022-06-10 15:55:37.234] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:836]-- class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2022-06-10 15:55:37.236] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:851]-- Executing beforeInit() of class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2022-06-10 15:55:37.502] [INFO ] [com.alibaba.druid.pool.DruidDataSource:994]-- {dataSource-1} inited | |||
| [2022-06-10 15:55:40.182] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:858]-- Executing configure() of class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2022-06-10 15:55:41.421] [INFO ] [org.flowable.idm.engine.impl.IdmEngineImpl:51]-- IdmEngine default created | |||
| [2022-06-10 15:55:47.968] [INFO ] [org.flowable.engine.impl.ProcessEngineImpl:84]-- ProcessEngine default created | |||
| [2022-06-10 15:55:47.986] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AbstractAsyncExecutor:114]-- Starting up the async job executor [org.flowable.spring.job.service.SpringAsyncExecutor]. | |||
| [2022-06-10 15:55:47.987] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AcquireAsyncJobsDueRunnable:52]-- starting to acquire async jobs due | |||
| [2022-06-10 15:55:47.989] [INFO ] [org.flowable.job.service.impl.asyncexecutor.ResetExpiredJobsRunnable:56]-- starting to reset expired jobs | |||
| [2022-06-10 15:55:47.988] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AcquireTimerJobsRunnable:50]-- starting to acquire async jobs due | |||
| [2022-06-10 15:55:48.187] [INFO ] [org.flowable.engine.impl.cmd.ValidateV5EntitiesCmd:43]-- Total of v5 deployments found: 0 | |||
| [2022-06-10 15:55:59.820] [INFO ] [springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69]-- Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)] | |||
| [2022-06-10 15:56:01.552] [INFO ] [org.quartz.impl.StdSchedulerFactory:1208]-- Using default implementation for ThreadExecutor | |||
| [2022-06-10 15:56:01.608] [INFO ] [org.quartz.core.SchedulerSignalerImpl:61]-- Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl | |||
| [2022-06-10 15:56:01.609] [INFO ] [org.quartz.core.QuartzScheduler:229]-- Quartz Scheduler v.2.3.0 created. | |||
| [2022-06-10 15:56:01.612] [INFO ] [org.quartz.simpl.RAMJobStore:155]-- RAMJobStore initialized. | |||
| [2022-06-10 15:56:01.665] [INFO ] [org.quartz.core.QuartzScheduler:294]-- Scheduler meta-data: Quartz Scheduler (v2.3.0) 'quartzScheduler' with instanceId 'NON_CLUSTERED' | |||
| Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. | |||
| NOT STARTED. | |||
| Currently in standby mode. | |||
| Number of jobs executed: 0 | |||
| Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads. | |||
| Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. | |||
| [2022-06-10 15:56:01.666] [INFO ] [org.quartz.impl.StdSchedulerFactory:1362]-- Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance. | |||
| [2022-06-10 15:56:01.667] [INFO ] [org.quartz.impl.StdSchedulerFactory:1366]-- Quartz scheduler version: 2.3.0 | |||
| [2022-06-10 15:56:01.668] [INFO ] [org.quartz.core.QuartzScheduler:2287]-- JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@7e86ff3b | |||
| [2022-06-10 15:56:01.767] [WARN ] [org.springframework.xml.transform.TransformerFactoryUtils:62]-- http://javax.xml.XMLConstants/property/accessExternalDTD property not supported by net.sf.saxon.TransformerFactoryImpl | |||
| [2022-06-10 15:56:01.768] [WARN ] [org.springframework.xml.transform.TransformerFactoryUtils:70]-- http://javax.xml.XMLConstants/property/accessExternalStylesheet property not supported by net.sf.saxon.TransformerFactoryImpl | |||
| [2022-06-10 15:56:02.029] [INFO ] [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:151]-- Context refreshed | |||
| [2022-06-10 15:56:02.096] [INFO ] [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:154]-- Found 1 custom documentation plugin(s) | |||
| [2022-06-10 15:56:02.218] [INFO ] [springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41]-- Scanning for api listing references | |||
| [2022-06-10 15:56:02.771] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_1 | |||
| [2022-06-10 15:56:02.795] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_1 | |||
| [2022-06-10 15:56:02.872] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_2 | |||
| [2022-06-10 15:56:02.907] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_3 | |||
| [2022-06-10 15:56:02.915] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listStatusUsingGET_1 | |||
| [2022-06-10 15:56:03.007] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_2 | |||
| [2022-06-10 15:56:03.187] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_4 | |||
| [2022-06-10 15:56:03.196] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: printHtmlByIdUsingGET_1 | |||
| [2022-06-10 15:56:03.237] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_5 | |||
| [2022-06-10 15:56:03.312] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_6 | |||
| [2022-06-10 15:56:03.461] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: detailUsingGET_1 | |||
| [2022-06-10 15:56:03.470] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getChannelPoiUsingGET_1 | |||
| [2022-06-10 15:56:03.473] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getHtmlUsingGET_1 | |||
| [2022-06-10 15:56:03.484] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_7 | |||
| [2022-06-10 15:56:03.517] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_8 | |||
| [2022-06-10 15:56:03.568] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getAppIconUsingGET_1 | |||
| [2022-06-10 15:56:03.620] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_9 | |||
| [2022-06-10 15:56:03.624] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getOneUsingGET_1 | |||
| [2022-06-10 15:56:03.669] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: addUsingPOST_1 | |||
| [2022-06-10 15:56:03.684] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_10 | |||
| [2022-06-10 15:56:04.146] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_3 | |||
| [2022-06-10 15:56:04.187] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: addUsingPOST_2 | |||
| [2022-06-10 15:56:04.191] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_4 | |||
| [2022-06-10 15:56:04.203] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_11 | |||
| [2022-06-10 15:56:04.272] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_12 | |||
| [2022-06-10 15:56:04.302] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_13 | |||
| [2022-06-10 15:56:04.326] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_5 | |||
| [2022-06-10 15:56:04.538] [INFO ] [org.springframework.scheduling.quartz.SchedulerFactoryBean:727]-- Starting Quartz Scheduler now | |||
| [2022-06-10 15:56:04.541] [INFO ] [org.quartz.core.QuartzScheduler:547]-- Scheduler quartzScheduler_$_NON_CLUSTERED started. | |||
| [2022-06-10 15:56:04.582] [INFO ] [io.undertow:117]-- starting server: Undertow - 2.0.29.Final | |||
| [2022-06-10 15:56:04.609] [INFO ] [org.xnio:104]-- XNIO version 3.3.8.Final | |||
| [2022-06-10 15:56:04.639] [INFO ] [org.xnio.nio:55]-- XNIO NIO Implementation Version 3.3.8.Final | |||
| [2022-06-10 15:56:04.870] [INFO ] [org.springframework.boot.web.embedded.undertow.UndertowServletWebServer:144]-- Undertow started on port(s) 7000 (http) with context path '/C' | |||
| [2022-06-10 15:56:04.878] [INFO ] [com.iformall.CApplication:61]-- Started CApplication in 86.462 seconds (JVM running for 88.342) | |||
| [2022-06-10 15:56:09.722] [INFO ] [io.undertow.servlet:364]-- Initializing Spring DispatcherServlet 'dispatcherServlet' | |||
| [2022-06-10 15:56:09.723] [INFO ] [org.springframework.web.servlet.DispatcherServlet:525]-- Initializing Servlet 'dispatcherServlet' | |||
| [2022-06-10 15:56:09.749] [INFO ] [org.springframework.web.servlet.DispatcherServlet:547]-- Completed initialization in 26 ms | |||
| [2022-06-10 15:56:09.757] [DEBUG] [com.iformall.interceptor.HttpServletRequestWrapperFilter:23]-- doFilter start | |||
| [2022-06-10 15:56:09.806] [INFO ] [com.iformall.service.impl.CUserTokenServiceImpl:55]-- 获取用户信息start ...d0440c86-77b2-42e8-9c92-cddeff6a9a0c:789:wx-cuser | |||
| [2022-06-10 15:56:11.126] [INFO ] [io.lettuce.core.EpollProvider:68]-- Starting without optional epoll library | |||
| [2022-06-10 15:56:11.563] [INFO ] [io.lettuce.core.KqueueProvider:66]-- Starting with kqueue library | |||
| [2022-06-10 15:56:17.220] [DEBUG] [com.iformall.interceptor.RequestInterceptor:46]-- preHandle start | |||
| [2022-06-10 15:56:22.377] [INFO ] [com.iformall.interceptor.RequestInterceptor:105]-- request:C:4870968add49222be7e0a79d481b5d11: 第一次提交 | |||
| [2022-06-10 15:56:22.382] [DEBUG] [com.iformall.interceptor.RequestInterceptor:106]-- preHandle start 2 | |||
| [2022-06-10 15:56:22.458] [DEBUG] [com.iformall.interceptor.WebLogAspect:41]-- aspect start | |||
| [2022-06-10 15:56:27.469] [DEBUG] [com.iformall.interceptor.WebLogAspect:53]-- aspect start ... | |||
| [2022-06-10 15:56:27.842] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.findList:143]-- ==> Preparing: SELECT wcuc.`id`, wcuc.`tenant_id`, wcuc.`parent_tenant_id`, wcuc.`c_user_id`, wcuc.`car_number`, wcuc.`create_date`, wcuc.`update_date`, wcuc.`vendor_type`, wcuc.`vendor_params`, wcuc.`vendor_person_id` FROM wx_c_user_car wcuc WHERE wcuc.tenant_id = '789' AND 1 = 1 AND wcuc.`c_user_id` = ? ORDER BY wcuc.create_date | |||
| [2022-06-10 15:56:27.882] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.findList:143]-- ==> Parameters: 441397811441729536(Long) | |||
| [2022-06-10 15:56:27.945] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.findList:143]-- <== Total: 2 | |||
| [2022-06-10 15:56:27.955] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.deleteById:143]-- ==> Preparing: DELETE FROM wx_c_user_car WHERE tenant_id = '789' AND id = ? | |||
| [2022-06-10 15:56:27.960] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.deleteById:143]-- ==> Parameters: 695146812494745600(Long) | |||
| [2022-06-10 15:56:28.033] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.deleteById:143]-- <== Updates: 1 | |||
| [2022-06-10 15:56:33.049] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.insert:143]-- ==> Preparing: INSERT INTO wx_c_user_car (id, vendor_type, update_date, car_number, c_user_id, tenant_id, create_date) VALUES (?, ?, ?, ?, ?, ?, ?) | |||
| [2022-06-10 15:56:33.052] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.insert:143]-- ==> Parameters: 695147934519431168(Long), 1(Integer), 2022-06-10 15:56:28.036(Timestamp), 冀AH02W1(String), 441397811441729536(Long), 789(String), 2022-06-10 15:56:28.036(Timestamp) | |||
| [2022-06-10 15:56:33.132] [DEBUG] [com.iformall.mapper.WxCUserCarMapper.insert:143]-- <== Updates: 1 | |||
| [2022-06-10 15:56:33.135] [DEBUG] [com.iformall.interceptor.WebLogAspect:58]-- aspect after | |||
| [2022-06-10 15:56:33.137] [INFO ] [com.iformall.interceptor.WebLogAspect:67]-- URL: http://localhost:7000/C/api/car/tttttt, METHOD: POST, DO: com.iformall.controller.WxCarController.tttttttt, IP: 192.168.1.102, SPEND TIME: 10675ms | |||
| [2022-06-10 15:56:33.139] [DEBUG] [com.iformall.interceptor.WebLogAspect:68]-- aspect after .. | |||
| [2022-06-10 15:56:33.307] [DEBUG] [com.iformall.interceptor.RequestInterceptor:116]-- postHandle | |||
| [2022-06-10 15:56:33.308] [DEBUG] [com.iformall.interceptor.RequestInterceptor:121]-- afterCompletion: | |||
| [2022-06-10 15:56:33.315] [DEBUG] [com.iformall.interceptor.HttpServletRequestWrapperFilter:63]-- doFilter end: /C/api/car/tttttt 23557ms | |||
| @@ -0,0 +1,597 @@ | |||
| [2023-03-20 11:57:30.596] [WARN ] [org.springframework.boot.StartupInfoLogger:116]-- InetAddress.getLocalHost().getHostName() took 5003 milliseconds to respond. Please verify your network configuration (macOS machines may need to add entries to /etc/hosts). | |||
| [2023-03-20 11:57:35.631] [INFO ] [com.iformall.CApplication:55]-- Starting CApplication on lintekiMacBook-Air.local with PID 1163 (/Users/lin/project/formallProject/mallinkCApi/target/classes started by lin in /Users/lin/project/formallProject/mallinkCApi) | |||
| [2023-03-20 11:57:35.634] [DEBUG] [com.iformall.CApplication:56]-- Running with Spring Boot v2.2.5.RELEASE, Spring v5.2.4.RELEASE | |||
| [2023-03-20 11:57:35.643] [INFO ] [com.iformall.CApplication:655]-- The following profiles are active: dev,rabbitMQ | |||
| [2023-03-20 11:57:47.629] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]-- Multiple Spring Data modules found, entering strict repository configuration mode! | |||
| [2023-03-20 11:57:47.651] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:127]-- Bootstrapping Spring Data Redis repositories in DEFAULT mode. | |||
| [2023-03-20 11:57:49.039] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:187]-- Finished Spring Data repository scanning in 1320ms. Found 0 Redis repository interfaces. | |||
| [2023-03-20 11:57:54.230] [INFO ] [com.ulisesbocchio.jasyptspringboot.configuration.EnableEncryptablePropertiesBeanFactoryPostProcessor:50]-- Post-processing PropertySource instances | |||
| [2023-03-20 11:57:54.637] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource configurationProperties [org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource] to AOP Proxy | |||
| [2023-03-20 11:57:54.638] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletConfigInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2023-03-20 11:57:54.641] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletContextInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2023-03-20 11:57:54.642] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemProperties [org.springframework.core.env.PropertiesPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 11:57:54.643] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemEnvironment [org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor$OriginAwareSystemEnvironmentPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 11:57:54.644] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource random [org.springframework.boot.env.RandomValuePropertySource] to EncryptablePropertySourceWrapper | |||
| [2023-03-20 11:57:54.644] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application-dev.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 11:57:54.645] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 11:57:54.652] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource flowable-liquibase-override [org.springframework.core.env.MapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 11:57:55.219] [INFO ] [com.ulisesbocchio.jasyptspringboot.filter.DefaultLazyPropertyFilter:31]-- Property Filter custom Bean not found with name 'encryptablePropertyFilter'. Initializing Default Property Filter | |||
| [2023-03-20 11:57:55.333] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$EnhancerBySpringCGLIB$$eef228ef] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2023-03-20 11:57:55.454] [INFO ] [org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping:236]-- Supporting [WS-Addressing August 2004, WS-Addressing 1.0] | |||
| [2023-03-20 11:57:57.670] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'redisConfig' of type [com.iformall.config.RedisConfig$$EnhancerBySpringCGLIB$$ead4f453] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2023-03-20 11:57:58.405] [INFO ] [com.ulisesbocchio.jasyptspringboot.resolver.DefaultLazyPropertyResolver:31]-- Property Resolver custom Bean not found with name 'encryptablePropertyResolver'. Initializing Default Property Resolver | |||
| [2023-03-20 11:57:58.429] [INFO ] [com.ulisesbocchio.jasyptspringboot.detector.DefaultLazyPropertyDetector:30]-- Property Detector custom Bean not found with name 'encryptablePropertyDetector'. Initializing Default Property Detector | |||
| [2023-03-20 11:57:59.964] [WARN ] [io.undertow.websockets.jsr:68]-- UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used | |||
| [2023-03-20 11:58:00.235] [INFO ] [io.undertow.servlet:364]-- Initializing Spring embedded WebApplicationContext | |||
| [2023-03-20 11:58:00.237] [INFO ] [org.springframework.web.context.ContextLoader:284]-- Root WebApplicationContext: initialization completed in 24191 ms | |||
| [2023-03-20 11:58:07.070] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.MallCooUserInfoMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:08.418] [WARN ] [com.baomidou.mybatisplus.core.metadata.TableInfoHelper:282]-- Warn: Could not find @TableId in Class: com.iformall.domain.po.NeuPosOrderMasterExt. | |||
| [2023-03-20 11:58:08.498] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.OrderCpsMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:09.213] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.PosOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:09.429] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.PosPayOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:10.171] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.SellerAgentAccountMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:10.285] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.SellerAgentMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:11.985] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtCUserMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:12.129] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtCouponChannelPoiMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:12.347] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtCouponMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:12.373] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtCouponMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:12.590] [WARN ] [com.baomidou.mybatisplus.core.metadata.TableInfoHelper:282]-- Warn: Could not find @TableId in Class: com.iformall.domain.po.TtMallGoodsCategory. | |||
| [2023-03-20 11:58:13.029] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtPoiTakeRateMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:13.364] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtUserCollectMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:13.527] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtUserFollowMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:13.602] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtVideoLibraryMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:13.732] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.UserBasicInfoAddressMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:13.907] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxActivityMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:14.201] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxBatchOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:15.309] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxBusinessMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:15.389] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserBasicInfoMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:15.792] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:15.841] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserTagsMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:15.851] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserTagsMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:15.946] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCarCmdLogMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:15.962] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCarCmdLogMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:16.058] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCarPayOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:16.355] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCardTransferInfoMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:16.414] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCashOutMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:16.515] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponActionLogMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:16.523] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponActionLogMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:16.605] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponBatchMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:16.835] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponChannelMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:17.481] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:17.497] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:17.716] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:18.033] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponSendMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:18.045] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponSendMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:18.180] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCreditHistoryMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:18.189] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCreditHistoryMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:20.528] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxMerchantSubsidyMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:20.537] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxMerchantSubsidyMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:21.311] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxOrderGroupMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:21.421] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:21.475] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxOrderPressMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:21.778] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxPayOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:22.779] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxPressBatchMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:26.611] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxScoreHistoryMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 11:58:26.633] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxScoreHistoryMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 11:58:27.458] [WARN ] [com.baomidou.mybatisplus.core.metadata.TableInfoHelper:282]-- Warn: Could not find @TableId in Class: com.iformall.domain.po.WxThemeMall. | |||
| [2023-03-20 11:58:37.998] [DEBUG] [com.iformall.common.FmHttpClientBuilder:233]-- Not specified dns resolver. | |||
| [2023-03-20 11:58:45.098] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:32]-- String Encryptor custom Bean not found with name 'jasyptStringEncryptor'. Initializing Default String Encryptor | |||
| [2023-03-20 11:58:45.123] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.algorithm, using default value: PBEWithMD5AndDES | |||
| [2023-03-20 11:58:45.124] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.keyObtentionIterations, using default value: 1000 | |||
| [2023-03-20 11:58:45.125] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.poolSize, using default value: 1 | |||
| [2023-03-20 11:58:45.126] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.providerName, using default value: null | |||
| [2023-03-20 11:58:45.127] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.providerClassName, using default value: null | |||
| [2023-03-20 11:58:45.128] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.saltGeneratorClassname, using default value: org.jasypt.salt.RandomSaltGenerator | |||
| [2023-03-20 11:58:45.131] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.stringOutputType, using default value: base64 | |||
| [2023-03-20 11:58:47.518] [INFO ] [org.flowable.spring.boot.ProcessEngineAutoConfiguration$$EnhancerBySpringCGLIB$$50cea142:94]-- No deployment resources were found for autodeployment | |||
| [2023-03-20 11:58:47.576] [INFO ] [org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:181]-- Initializing ExecutorService 'applicationTaskExecutor' | |||
| [2023-03-20 11:58:48.128] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:834]-- Found 1 Engine Configurators in total: | |||
| [2023-03-20 11:58:48.129] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:836]-- class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2023-03-20 11:58:48.130] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:851]-- Executing beforeInit() of class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2023-03-20 11:58:48.439] [INFO ] [com.alibaba.druid.pool.DruidDataSource:994]-- {dataSource-1} inited | |||
| [2023-03-20 11:58:51.279] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:858]-- Executing configure() of class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2023-03-20 11:58:52.115] [INFO ] [org.flowable.idm.engine.impl.IdmEngineImpl:51]-- IdmEngine default created | |||
| [2023-03-20 11:58:56.107] [INFO ] [org.flowable.engine.impl.ProcessEngineImpl:84]-- ProcessEngine default created | |||
| [2023-03-20 11:58:56.146] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AbstractAsyncExecutor:114]-- Starting up the async job executor [org.flowable.spring.job.service.SpringAsyncExecutor]. | |||
| [2023-03-20 11:58:56.167] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AcquireTimerJobsRunnable:50]-- starting to acquire async jobs due | |||
| [2023-03-20 11:58:56.155] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AcquireAsyncJobsDueRunnable:52]-- starting to acquire async jobs due | |||
| [2023-03-20 11:58:56.163] [INFO ] [org.flowable.job.service.impl.asyncexecutor.ResetExpiredJobsRunnable:56]-- starting to reset expired jobs | |||
| [2023-03-20 11:58:56.694] [INFO ] [org.flowable.engine.impl.cmd.ValidateV5EntitiesCmd:43]-- Total of v5 deployments found: 0 | |||
| [2023-03-20 11:59:07.648] [INFO ] [springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69]-- Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)] | |||
| [2023-03-20 11:59:09.278] [INFO ] [org.quartz.impl.StdSchedulerFactory:1208]-- Using default implementation for ThreadExecutor | |||
| [2023-03-20 11:59:09.335] [INFO ] [org.quartz.core.SchedulerSignalerImpl:61]-- Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl | |||
| [2023-03-20 11:59:09.341] [INFO ] [org.quartz.core.QuartzScheduler:229]-- Quartz Scheduler v.2.3.0 created. | |||
| [2023-03-20 11:59:09.344] [INFO ] [org.quartz.simpl.RAMJobStore:155]-- RAMJobStore initialized. | |||
| [2023-03-20 11:59:09.351] [INFO ] [org.quartz.core.QuartzScheduler:294]-- Scheduler meta-data: Quartz Scheduler (v2.3.0) 'quartzScheduler' with instanceId 'NON_CLUSTERED' | |||
| Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. | |||
| NOT STARTED. | |||
| Currently in standby mode. | |||
| Number of jobs executed: 0 | |||
| Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads. | |||
| Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. | |||
| [2023-03-20 11:59:09.354] [INFO ] [org.quartz.impl.StdSchedulerFactory:1362]-- Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance. | |||
| [2023-03-20 11:59:09.355] [INFO ] [org.quartz.impl.StdSchedulerFactory:1366]-- Quartz scheduler version: 2.3.0 | |||
| [2023-03-20 11:59:09.356] [INFO ] [org.quartz.core.QuartzScheduler:2287]-- JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@62ccbd95 | |||
| [2023-03-20 11:59:09.422] [WARN ] [org.springframework.xml.transform.TransformerFactoryUtils:62]-- http://javax.xml.XMLConstants/property/accessExternalDTD property not supported by net.sf.saxon.TransformerFactoryImpl | |||
| [2023-03-20 11:59:09.423] [WARN ] [org.springframework.xml.transform.TransformerFactoryUtils:70]-- http://javax.xml.XMLConstants/property/accessExternalStylesheet property not supported by net.sf.saxon.TransformerFactoryImpl | |||
| [2023-03-20 11:59:09.657] [INFO ] [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:151]-- Context refreshed | |||
| [2023-03-20 11:59:09.728] [INFO ] [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:154]-- Found 1 custom documentation plugin(s) | |||
| [2023-03-20 11:59:09.937] [INFO ] [springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41]-- Scanning for api listing references | |||
| [2023-03-20 11:59:10.549] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: deleteUsingGET_1 | |||
| [2023-03-20 11:59:10.554] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_1 | |||
| [2023-03-20 11:59:10.575] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_1 | |||
| [2023-03-20 11:59:10.602] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: saveOrUpdateUsingPOST_1 | |||
| [2023-03-20 11:59:10.610] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: saveOrUpdateUsingPOST_2 | |||
| [2023-03-20 11:59:10.620] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_2 | |||
| [2023-03-20 11:59:10.648] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_2 | |||
| [2023-03-20 11:59:10.763] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_3 | |||
| [2023-03-20 11:59:10.806] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_4 | |||
| [2023-03-20 11:59:10.821] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listStatusUsingGET_1 | |||
| [2023-03-20 11:59:10.918] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_3 | |||
| [2023-03-20 11:59:11.195] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_5 | |||
| [2023-03-20 11:59:11.199] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: printHtmlByIdUsingGET_1 | |||
| [2023-03-20 11:59:11.248] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_6 | |||
| [2023-03-20 11:59:11.333] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_7 | |||
| [2023-03-20 11:59:11.511] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: detailUsingGET_1 | |||
| [2023-03-20 11:59:11.519] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getChannelPoiUsingGET_1 | |||
| [2023-03-20 11:59:11.524] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getHtmlUsingGET_1 | |||
| [2023-03-20 11:59:11.536] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_8 | |||
| [2023-03-20 11:59:11.602] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_9 | |||
| [2023-03-20 11:59:11.684] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getAppIconUsingGET_1 | |||
| [2023-03-20 11:59:11.734] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_10 | |||
| [2023-03-20 11:59:11.740] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getOneUsingGET_1 | |||
| [2023-03-20 11:59:11.825] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: addUsingPOST_1 | |||
| [2023-03-20 11:59:11.850] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_11 | |||
| [2023-03-20 11:59:12.415] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_4 | |||
| [2023-03-20 11:59:12.462] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: addUsingPOST_2 | |||
| [2023-03-20 11:59:12.471] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_5 | |||
| [2023-03-20 11:59:12.573] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_12 | |||
| [2023-03-20 11:59:12.619] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_13 | |||
| [2023-03-20 11:59:12.642] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_14 | |||
| [2023-03-20 11:59:12.667] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_6 | |||
| [2023-03-20 11:59:12.898] [INFO ] [org.springframework.scheduling.quartz.SchedulerFactoryBean:727]-- Starting Quartz Scheduler now | |||
| [2023-03-20 11:59:12.901] [INFO ] [org.quartz.core.QuartzScheduler:547]-- Scheduler quartzScheduler_$_NON_CLUSTERED started. | |||
| [2023-03-20 11:59:12.958] [INFO ] [io.undertow:117]-- starting server: Undertow - 2.0.29.Final | |||
| [2023-03-20 11:59:12.986] [INFO ] [org.xnio:104]-- XNIO version 3.3.8.Final | |||
| [2023-03-20 11:59:13.022] [INFO ] [org.xnio.nio:55]-- XNIO NIO Implementation Version 3.3.8.Final | |||
| [2023-03-20 11:59:13.223] [INFO ] [org.springframework.boot.web.embedded.undertow.UndertowServletWebServer:144]-- Undertow started on port(s) 7000 (http) with context path '/C' | |||
| [2023-03-20 11:59:13.231] [INFO ] [com.iformall.CApplication:61]-- Started CApplication in 120.468 seconds (JVM running for 123.022) | |||
| [2023-03-20 18:02:55.231] [WARN ] [org.springframework.boot.StartupInfoLogger:116]-- InetAddress.getLocalHost().getHostName() took 5006 milliseconds to respond. Please verify your network configuration (macOS machines may need to add entries to /etc/hosts). | |||
| [2023-03-20 18:03:00.251] [INFO ] [com.iformall.CApplication:55]-- Starting CApplication on lintekiMacBook-Air.local with PID 2624 (/Users/lin/project/formallProject/mallinkCApi/target/classes started by lin in /Users/lin/project/formallProject/mallinkCApi) | |||
| [2023-03-20 18:03:00.255] [DEBUG] [com.iformall.CApplication:56]-- Running with Spring Boot v2.2.5.RELEASE, Spring v5.2.4.RELEASE | |||
| [2023-03-20 18:03:00.257] [INFO ] [com.iformall.CApplication:655]-- The following profiles are active: dev,rabbitMQ | |||
| [2023-03-20 18:03:06.474] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:249]-- Multiple Spring Data modules found, entering strict repository configuration mode! | |||
| [2023-03-20 18:03:06.492] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:127]-- Bootstrapping Spring Data Redis repositories in DEFAULT mode. | |||
| [2023-03-20 18:03:07.045] [INFO ] [org.springframework.data.repository.config.RepositoryConfigurationDelegate:187]-- Finished Spring Data repository scanning in 494ms. Found 0 Redis repository interfaces. | |||
| [2023-03-20 18:03:11.455] [INFO ] [com.ulisesbocchio.jasyptspringboot.configuration.EnableEncryptablePropertiesBeanFactoryPostProcessor:50]-- Post-processing PropertySource instances | |||
| [2023-03-20 18:03:11.779] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource configurationProperties [org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource] to AOP Proxy | |||
| [2023-03-20 18:03:11.783] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletConfigInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2023-03-20 18:03:11.786] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource servletContextInitParams [org.springframework.core.env.PropertySource$StubPropertySource] to EncryptablePropertySourceWrapper | |||
| [2023-03-20 18:03:11.787] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemProperties [org.springframework.core.env.PropertiesPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 18:03:11.787] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource systemEnvironment [org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor$OriginAwareSystemEnvironmentPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 18:03:11.790] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource random [org.springframework.boot.env.RandomValuePropertySource] to EncryptablePropertySourceWrapper | |||
| [2023-03-20 18:03:11.794] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application-dev.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 18:03:11.795] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource applicationConfig: [classpath:/application.yml] [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 18:03:11.797] [INFO ] [com.ulisesbocchio.jasyptspringboot.EncryptablePropertySourceConverter:38]-- Converting PropertySource flowable-liquibase-override [org.springframework.core.env.MapPropertySource] to EncryptableMapPropertySourceWrapper | |||
| [2023-03-20 18:03:12.305] [INFO ] [com.ulisesbocchio.jasyptspringboot.filter.DefaultLazyPropertyFilter:31]-- Property Filter custom Bean not found with name 'encryptablePropertyFilter'. Initializing Default Property Filter | |||
| [2023-03-20 18:03:12.488] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$EnhancerBySpringCGLIB$$9af82bd5] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2023-03-20 18:03:12.641] [INFO ] [org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping:236]-- Supporting [WS-Addressing August 2004, WS-Addressing 1.0] | |||
| [2023-03-20 18:03:14.080] [INFO ] [org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330]-- Bean 'redisConfig' of type [com.iformall.config.RedisConfig$$EnhancerBySpringCGLIB$$96daf739] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) | |||
| [2023-03-20 18:03:14.509] [INFO ] [com.ulisesbocchio.jasyptspringboot.resolver.DefaultLazyPropertyResolver:31]-- Property Resolver custom Bean not found with name 'encryptablePropertyResolver'. Initializing Default Property Resolver | |||
| [2023-03-20 18:03:14.520] [INFO ] [com.ulisesbocchio.jasyptspringboot.detector.DefaultLazyPropertyDetector:30]-- Property Detector custom Bean not found with name 'encryptablePropertyDetector'. Initializing Default Property Detector | |||
| [2023-03-20 18:03:15.470] [WARN ] [io.undertow.websockets.jsr:68]-- UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used | |||
| [2023-03-20 18:03:15.560] [INFO ] [io.undertow.servlet:364]-- Initializing Spring embedded WebApplicationContext | |||
| [2023-03-20 18:03:15.560] [INFO ] [org.springframework.web.context.ContextLoader:284]-- Root WebApplicationContext: initialization completed in 15091 ms | |||
| [2023-03-20 18:03:21.694] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.MallCooUserInfoMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:22.535] [WARN ] [com.baomidou.mybatisplus.core.metadata.TableInfoHelper:282]-- Warn: Could not find @TableId in Class: com.iformall.domain.po.NeuPosOrderMasterExt. | |||
| [2023-03-20 18:03:22.618] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.OrderCpsMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:23.064] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.PosOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:23.142] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.PosPayOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:23.331] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.SellerAgentAccountMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:23.404] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.SellerAgentMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:23.898] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtCUserMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:23.968] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtCouponChannelPoiMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:24.049] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtCouponMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:24.064] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtCouponMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:24.211] [WARN ] [com.baomidou.mybatisplus.core.metadata.TableInfoHelper:282]-- Warn: Could not find @TableId in Class: com.iformall.domain.po.TtMallGoodsCategory. | |||
| [2023-03-20 18:03:24.549] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtPoiTakeRateMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:24.712] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtUserCollectMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:24.763] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtUserFollowMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:24.834] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.TtVideoLibraryMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:24.889] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.UserBasicInfoAddressMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:25.022] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxActivityMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:25.388] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxBatchOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:26.918] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxBusinessMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:27.046] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserBasicInfoMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:27.500] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:27.563] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserTagsMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:27.580] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCUserTagsMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:27.733] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCarCmdLogMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:27.744] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCarCmdLogMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:27.841] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCarPayOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:28.253] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCardTransferInfoMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:28.348] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCashOutMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:28.460] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponActionLogMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:28.479] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponActionLogMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:28.623] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponBatchMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:28.757] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponChannelMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:29.373] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:29.396] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:29.576] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:29.942] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponSendMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:29.953] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCouponSendMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:30.044] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCreditHistoryMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:30.052] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxCreditHistoryMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:32.569] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxMerchantSubsidyMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:32.578] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxMerchantSubsidyMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:33.480] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxOrderGroupMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:33.574] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:33.684] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxOrderPressMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:33.978] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxPayOrderMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:34.189] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxPressBatchMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:35.145] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxScoreHistoryMapper.deleteById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.DeleteById] | |||
| [2023-03-20 18:03:35.155] [WARN ] [com.baomidou.mybatisplus.core.injector.AbstractMethod:306]-- [com.iformall.mapper.WxScoreHistoryMapper.selectById] Has been loaded by XML or SqlProvider or Mybatis's Annotation, so ignoring this injection for [class com.baomidou.mybatisplus.core.injector.methods.SelectById] | |||
| [2023-03-20 18:03:35.560] [WARN ] [com.baomidou.mybatisplus.core.metadata.TableInfoHelper:282]-- Warn: Could not find @TableId in Class: com.iformall.domain.po.WxThemeMall. | |||
| [2023-03-20 18:03:41.847] [DEBUG] [com.iformall.common.FmHttpClientBuilder:233]-- Not specified dns resolver. | |||
| [2023-03-20 18:03:48.222] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:32]-- String Encryptor custom Bean not found with name 'jasyptStringEncryptor'. Initializing Default String Encryptor | |||
| [2023-03-20 18:03:48.272] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.algorithm, using default value: PBEWithMD5AndDES | |||
| [2023-03-20 18:03:48.273] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.keyObtentionIterations, using default value: 1000 | |||
| [2023-03-20 18:03:48.274] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.poolSize, using default value: 1 | |||
| [2023-03-20 18:03:48.274] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.providerName, using default value: null | |||
| [2023-03-20 18:03:48.275] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.providerClassName, using default value: null | |||
| [2023-03-20 18:03:48.277] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.saltGeneratorClassname, using default value: org.jasypt.salt.RandomSaltGenerator | |||
| [2023-03-20 18:03:48.281] [INFO ] [com.ulisesbocchio.jasyptspringboot.encryptor.DefaultLazyEncryptor:58]-- Encryptor config not found for property jasypt.encryptor.stringOutputType, using default value: base64 | |||
| [2023-03-20 18:03:51.593] [INFO ] [org.flowable.spring.boot.ProcessEngineAutoConfiguration$$EnhancerBySpringCGLIB$$fcd4a428:94]-- No deployment resources were found for autodeployment | |||
| [2023-03-20 18:03:51.681] [INFO ] [org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:181]-- Initializing ExecutorService 'applicationTaskExecutor' | |||
| [2023-03-20 18:03:52.621] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:834]-- Found 1 Engine Configurators in total: | |||
| [2023-03-20 18:03:52.622] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:836]-- class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2023-03-20 18:03:52.625] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:851]-- Executing beforeInit() of class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2023-03-20 18:03:53.141] [INFO ] [com.alibaba.druid.pool.DruidDataSource:994]-- {dataSource-1} inited | |||
| [2023-03-20 18:03:56.592] [INFO ] [org.flowable.common.engine.impl.AbstractEngineConfiguration:858]-- Executing configure() of class org.flowable.idm.engine.configurator.IdmEngineConfigurator (priority:100000) | |||
| [2023-03-20 18:03:57.451] [INFO ] [org.flowable.idm.engine.impl.IdmEngineImpl:51]-- IdmEngine default created | |||
| [2023-03-20 18:04:01.496] [INFO ] [org.flowable.engine.impl.ProcessEngineImpl:84]-- ProcessEngine default created | |||
| [2023-03-20 18:04:01.514] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AbstractAsyncExecutor:114]-- Starting up the async job executor [org.flowable.spring.job.service.SpringAsyncExecutor]. | |||
| [2023-03-20 18:04:01.517] [INFO ] [org.flowable.job.service.impl.asyncexecutor.ResetExpiredJobsRunnable:56]-- starting to reset expired jobs | |||
| [2023-03-20 18:04:01.517] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AcquireTimerJobsRunnable:50]-- starting to acquire async jobs due | |||
| [2023-03-20 18:04:01.515] [INFO ] [org.flowable.job.service.impl.asyncexecutor.AcquireAsyncJobsDueRunnable:52]-- starting to acquire async jobs due | |||
| [2023-03-20 18:04:01.698] [INFO ] [org.flowable.engine.impl.cmd.ValidateV5EntitiesCmd:43]-- Total of v5 deployments found: 0 | |||
| [2023-03-20 18:04:14.065] [INFO ] [springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69]-- Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)] | |||
| [2023-03-20 18:04:17.551] [INFO ] [org.quartz.impl.StdSchedulerFactory:1208]-- Using default implementation for ThreadExecutor | |||
| [2023-03-20 18:04:17.616] [INFO ] [org.quartz.core.SchedulerSignalerImpl:61]-- Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl | |||
| [2023-03-20 18:04:17.616] [INFO ] [org.quartz.core.QuartzScheduler:229]-- Quartz Scheduler v.2.3.0 created. | |||
| [2023-03-20 18:04:17.623] [INFO ] [org.quartz.simpl.RAMJobStore:155]-- RAMJobStore initialized. | |||
| [2023-03-20 18:04:17.628] [INFO ] [org.quartz.core.QuartzScheduler:294]-- Scheduler meta-data: Quartz Scheduler (v2.3.0) 'quartzScheduler' with instanceId 'NON_CLUSTERED' | |||
| Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. | |||
| NOT STARTED. | |||
| Currently in standby mode. | |||
| Number of jobs executed: 0 | |||
| Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads. | |||
| Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. | |||
| [2023-03-20 18:04:17.629] [INFO ] [org.quartz.impl.StdSchedulerFactory:1362]-- Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance. | |||
| [2023-03-20 18:04:17.630] [INFO ] [org.quartz.impl.StdSchedulerFactory:1366]-- Quartz scheduler version: 2.3.0 | |||
| [2023-03-20 18:04:17.632] [INFO ] [org.quartz.core.QuartzScheduler:2287]-- JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@7e93497d | |||
| [2023-03-20 18:04:17.707] [WARN ] [org.springframework.xml.transform.TransformerFactoryUtils:62]-- http://javax.xml.XMLConstants/property/accessExternalDTD property not supported by net.sf.saxon.TransformerFactoryImpl | |||
| [2023-03-20 18:04:17.707] [WARN ] [org.springframework.xml.transform.TransformerFactoryUtils:70]-- http://javax.xml.XMLConstants/property/accessExternalStylesheet property not supported by net.sf.saxon.TransformerFactoryImpl | |||
| [2023-03-20 18:04:17.972] [INFO ] [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:151]-- Context refreshed | |||
| [2023-03-20 18:04:18.021] [INFO ] [springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:154]-- Found 1 custom documentation plugin(s) | |||
| [2023-03-20 18:04:18.258] [INFO ] [springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41]-- Scanning for api listing references | |||
| [2023-03-20 18:04:18.963] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: deleteUsingGET_1 | |||
| [2023-03-20 18:04:18.968] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_1 | |||
| [2023-03-20 18:04:18.989] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_1 | |||
| [2023-03-20 18:04:19.011] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: saveOrUpdateUsingPOST_1 | |||
| [2023-03-20 18:04:19.020] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: saveOrUpdateUsingPOST_2 | |||
| [2023-03-20 18:04:19.028] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_2 | |||
| [2023-03-20 18:04:19.056] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_2 | |||
| [2023-03-20 18:04:19.198] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_3 | |||
| [2023-03-20 18:04:19.247] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_4 | |||
| [2023-03-20 18:04:19.256] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listStatusUsingGET_1 | |||
| [2023-03-20 18:04:19.347] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_3 | |||
| [2023-03-20 18:04:19.605] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_5 | |||
| [2023-03-20 18:04:19.609] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: printHtmlByIdUsingGET_1 | |||
| [2023-03-20 18:04:19.654] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_6 | |||
| [2023-03-20 18:04:19.734] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_7 | |||
| [2023-03-20 18:04:19.904] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: detailUsingGET_1 | |||
| [2023-03-20 18:04:19.912] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getChannelPoiUsingGET_1 | |||
| [2023-03-20 18:04:19.917] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getHtmlUsingGET_1 | |||
| [2023-03-20 18:04:19.930] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_8 | |||
| [2023-03-20 18:04:19.967] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_9 | |||
| [2023-03-20 18:04:20.024] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getAppIconUsingGET_1 | |||
| [2023-03-20 18:04:20.068] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_10 | |||
| [2023-03-20 18:04:20.072] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: getOneUsingGET_1 | |||
| [2023-03-20 18:04:20.136] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: addUsingPOST_1 | |||
| [2023-03-20 18:04:20.156] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_11 | |||
| [2023-03-20 18:04:20.770] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_4 | |||
| [2023-03-20 18:04:20.835] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: addUsingPOST_2 | |||
| [2023-03-20 18:04:20.839] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_5 | |||
| [2023-03-20 18:04:20.851] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_12 | |||
| [2023-03-20 18:04:20.899] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_13 | |||
| [2023-03-20 18:04:20.925] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: listUsingGET_14 | |||
| [2023-03-20 18:04:20.944] [INFO ] [springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator:40]-- Generating unique operation named: findByIdUsingGET_6 | |||
| [2023-03-20 18:04:21.137] [INFO ] [org.springframework.scheduling.quartz.SchedulerFactoryBean:727]-- Starting Quartz Scheduler now | |||
| [2023-03-20 18:04:21.138] [INFO ] [org.quartz.core.QuartzScheduler:547]-- Scheduler quartzScheduler_$_NON_CLUSTERED started. | |||
| [2023-03-20 18:04:21.204] [INFO ] [io.undertow:117]-- starting server: Undertow - 2.0.29.Final | |||
| [2023-03-20 18:04:21.231] [INFO ] [org.xnio:104]-- XNIO version 3.3.8.Final | |||
| [2023-03-20 18:04:21.272] [INFO ] [org.xnio.nio:55]-- XNIO NIO Implementation Version 3.3.8.Final | |||
| [2023-03-20 18:04:21.527] [INFO ] [org.springframework.boot.web.embedded.undertow.UndertowServletWebServer:144]-- Undertow started on port(s) 7000 (http) with context path '/C' | |||
| [2023-03-20 18:04:21.535] [INFO ] [com.iformall.CApplication:61]-- Started CApplication in 103.601 seconds (JVM running for 105.748) | |||
| [2023-03-20 18:06:33.619] [INFO ] [io.undertow.servlet:364]-- Initializing Spring DispatcherServlet 'dispatcherServlet' | |||
| [2023-03-20 18:06:33.622] [INFO ] [org.springframework.web.servlet.DispatcherServlet:525]-- Initializing Servlet 'dispatcherServlet' | |||
| [2023-03-20 18:06:33.724] [INFO ] [org.springframework.web.servlet.DispatcherServlet:547]-- Completed initialization in 102 ms | |||
| [2023-03-20 18:06:33.738] [DEBUG] [com.iformall.interceptor.HttpServletRequestWrapperFilter:23]-- doFilter start | |||
| [2023-03-20 18:06:33.875] [INFO ] [com.iformall.service.impl.CUserTokenServiceImpl:55]-- 获取用户信息start ...e43cf234-b0da-4730-910e-bffeae26116c:789:wx-cuser | |||
| [2023-03-20 18:06:34.417] [INFO ] [io.lettuce.core.EpollProvider:68]-- Starting without optional epoll library | |||
| [2023-03-20 18:06:35.273] [INFO ] [io.lettuce.core.KqueueProvider:66]-- Starting with kqueue library | |||
| [2023-03-20 18:06:41.495] [DEBUG] [com.iformall.interceptor.RequestInterceptor:46]-- preHandle start | |||
| [2023-03-20 18:06:41.496] [DEBUG] [com.iformall.interceptor.RequestInterceptor:49]-- preHandle start 1 | |||
| [2023-03-20 18:06:41.569] [DEBUG] [com.iformall.interceptor.WebLogAspect:41]-- aspect start | |||
| [2023-03-20 18:06:46.579] [DEBUG] [com.iformall.interceptor.WebLogAspect:53]-- aspect start ... | |||
| [2023-03-20 18:06:46.602] [DEBUG] [com.iformall.interceptor.WebLogAspect:58]-- aspect after | |||
| [2023-03-20 18:06:46.603] [INFO ] [com.iformall.interceptor.WebLogAspect:67]-- URL: http://localhost:7000/C/api/wxBusiness/listAll, METHOD: GET, DO: com.iformall.controller.BaseController.InitBinder, IP: 192.168.1.106, SPEND TIME: 5032ms | |||
| [2023-03-20 18:06:46.603] [DEBUG] [com.iformall.interceptor.WebLogAspect:68]-- aspect after .. | |||
| [2023-03-20 18:06:46.639] [INFO ] [com.iformall.aop.RedisCacheAspect:75]-- token>>>>>>>>>>>>>>>e43cf234-b0da-4730-910e-bffeae26116c:789:wx-cuser | |||
| [2023-03-20 18:06:46.640] [INFO ] [com.iformall.service.impl.CUserTokenServiceImpl:55]-- 获取用户信息start ...e43cf234-b0da-4730-910e-bffeae26116c:789:wx-cuser | |||
| [2023-03-20 18:06:46.808] [DEBUG] [com.iformall.aop.RedisCacheAspect:144]-- CacheAspect 读库中, key:{}: /api/wxBusiness/listAll:789:231e2f468cf9fa3dc1910da785b8b851:lock | |||
| [2023-03-20 18:06:46.809] [DEBUG] [com.iformall.interceptor.WebLogAspect:41]-- aspect start | |||
| [2023-03-20 18:06:51.818] [DEBUG] [com.iformall.interceptor.WebLogAspect:53]-- aspect start ... | |||
| [2023-03-20 18:13:00.913] [ERROR] [com.iformall.aop.RedisCacheAspect:156]-- CacheAspect proceed error , Illegal argument: [2] in com.iformall.controller.WxBusinessController.listAll() | |||
| org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: | |||
| ### Error querying database. Cause: java.lang.RuntimeException: java.lang.NullPointerException | |||
| ### The error may exist in file [/Users/lin/project/formallProject/mallinkService/target/classes/mapper/WxBusinessMapper.xml] | |||
| ### The error may involve com.iformall.mapper.WxBusinessMapper.findListForCoupon | |||
| ### The error occurred while executing a query | |||
| ### Cause: java.lang.RuntimeException: java.lang.NullPointerException | |||
| at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92) | |||
| at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440) | |||
| at com.sun.proxy.$Proxy126.selectList(Unknown Source) | |||
| at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:223) | |||
| at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:158) | |||
| at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:76) | |||
| at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:61) | |||
| at com.sun.proxy.$Proxy137.findListForCoupon(Unknown Source) | |||
| at com.iformall.service.impl.WxBusinessServiceImpl.findListAll(WxBusinessServiceImpl.java:63) | |||
| at com.iformall.controller.WxBusinessController.listAll(WxBusinessController.java:33) | |||
| at com.iformall.controller.WxBusinessController$$FastClassBySpringCGLIB$$d7e5c122.invoke(<generated>) | |||
| at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) | |||
| at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769) | |||
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) | |||
| at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:56) | |||
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) | |||
| at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:55) | |||
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) | |||
| at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:100) | |||
| at com.iformall.aop.RedisCacheAspect.round(RedisCacheAspect.java:145) | |||
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |||
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) | |||
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) | |||
| at java.lang.reflect.Method.invoke(Method.java:498) | |||
| at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644) | |||
| at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633) | |||
| at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) | |||
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) | |||
| at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95) | |||
| at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) | |||
| at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689) | |||
| at com.iformall.controller.WxBusinessController$$EnhancerBySpringCGLIB$$9d74be6d.listAll(<generated>) | |||
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |||
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) | |||
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) | |||
| at java.lang.reflect.Method.invoke(Method.java:498) | |||
| at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) | |||
| at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) | |||
| at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) | |||
| at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879) | |||
| at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) | |||
| at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) | |||
| at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) | |||
| at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) | |||
| at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) | |||
| at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) | |||
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:503) | |||
| at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) | |||
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:590) | |||
| at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) | |||
| at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) | |||
| at com.iformall.interceptor.HttpServletRequestWrapperFilter.doFilter(HttpServletRequestWrapperFilter.java:61) | |||
| at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) | |||
| at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) | |||
| at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) | |||
| at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) | |||
| at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) | |||
| at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) | |||
| at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) | |||
| at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) | |||
| at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) | |||
| at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) | |||
| at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68) | |||
| at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132) | |||
| at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) | |||
| at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) | |||
| at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) | |||
| at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) | |||
| at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) | |||
| at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) | |||
| at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) | |||
| at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) | |||
| at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) | |||
| at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269) | |||
| at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78) | |||
| at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133) | |||
| at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130) | |||
| at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) | |||
| at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) | |||
| at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249) | |||
| at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78) | |||
| at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99) | |||
| at io.undertow.server.Connectors.executeRootHandler(Connectors.java:376) | |||
| at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830) | |||
| at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) | |||
| at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) | |||
| at java.lang.Thread.run(Thread.java:750) | |||
| Caused by: org.apache.ibatis.exceptions.PersistenceException: | |||
| ### Error querying database. Cause: java.lang.RuntimeException: java.lang.NullPointerException | |||
| ### The error may exist in file [/Users/lin/project/formallProject/mallinkService/target/classes/mapper/WxBusinessMapper.xml] | |||
| ### The error may involve com.iformall.mapper.WxBusinessMapper.findListForCoupon | |||
| ### The error occurred while executing a query | |||
| ### Cause: java.lang.RuntimeException: java.lang.NullPointerException | |||
| at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) | |||
| at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:149) | |||
| at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) | |||
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |||
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) | |||
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) | |||
| at java.lang.reflect.Method.invoke(Method.java:498) | |||
| at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426) | |||
| ... 90 common frames omitted | |||
| Caused by: java.lang.RuntimeException: java.lang.NullPointerException | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.getEntityValue(ShardingSpherePlugin.java:281) | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.getValue(ShardingSpherePlugin.java:236) | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.getValue(ShardingSpherePlugin.java:225) | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.getShareTable(ShardingSpherePlugin.java:184) | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.buildByTableName(ShardingSpherePlugin.java:163) | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.buildByListTableNames(ShardingSpherePlugin.java:177) | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.buildSelect(ShardingSpherePlugin.java:152) | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.buildTable(ShardingSpherePlugin.java:128) | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.intercept(ShardingSpherePlugin.java:104) | |||
| at com.iformall.plugin.MyBatisItercepters.invokeIntercept(MyBatisItercepters.java:48) | |||
| at com.iformall.plugin.MyBatisItercepters.intercept(MyBatisItercepters.java:41) | |||
| at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) | |||
| at com.sun.proxy.$Proxy485.prepare(Unknown Source) | |||
| at com.baomidou.mybatisplus.core.executor.MybatisSimpleExecutor.prepareStatement(MybatisSimpleExecutor.java:94) | |||
| at com.baomidou.mybatisplus.core.executor.MybatisSimpleExecutor.doQuery(MybatisSimpleExecutor.java:66) | |||
| at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324) | |||
| at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) | |||
| at com.github.pagehelper.PageInterceptor.intercept(PageInterceptor.java:108) | |||
| at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) | |||
| at com.sun.proxy.$Proxy484.query(Unknown Source) | |||
| at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) | |||
| ... 96 common frames omitted | |||
| Caused by: java.lang.NullPointerException: null | |||
| at com.iformall.plugin.shard.plugin.ShardingSpherePlugin.getEntityValue(ShardingSpherePlugin.java:276) | |||
| ... 116 common frames omitted | |||
| [2023-03-20 18:13:01.085] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:76]-- ************************异常开始******************************* | |||
| [2023-03-20 18:13:01.089] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:83]-- 请求地址:http://localhost:7000/C/api/wxBusiness/listAll | |||
| [2023-03-20 18:13:01.090] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:84]-- message:nested exception is org.apache.ibatis.exceptions.PersistenceException: | |||
| ### Error querying database. Cause: java.lang.RuntimeException: java.lang.NullPointerException | |||
| ### The error may exist in file [/Users/lin/project/formallProject/mallinkService/target/classes/mapper/WxBusinessMapper.xml] | |||
| ### The error may involve com.iformall.mapper.WxBusinessMapper.findListForCoupon | |||
| ### The error occurred while executing a query | |||
| ### Cause: java.lang.RuntimeException: java.lang.NullPointerException | |||
| [2023-03-20 18:13:01.090] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:86]-- 请求参数 | |||
| [2023-03-20 18:13:01.092] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:89]-- filter---2 | |||
| [2023-03-20 18:13:01.092] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92) | |||
| [2023-03-20 18:13:01.093] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440) | |||
| [2023-03-20 18:13:01.093] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.sun.proxy.$Proxy126.selectList(Unknown Source) | |||
| [2023-03-20 18:13:01.093] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:223) | |||
| [2023-03-20 18:13:01.094] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:158) | |||
| [2023-03-20 18:13:01.094] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:76) | |||
| [2023-03-20 18:13:01.095] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:61) | |||
| [2023-03-20 18:13:01.095] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.sun.proxy.$Proxy137.findListForCoupon(Unknown Source) | |||
| [2023-03-20 18:13:01.095] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.iformall.service.impl.WxBusinessServiceImpl.findListAll(WxBusinessServiceImpl.java:63) | |||
| [2023-03-20 18:13:01.096] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.iformall.controller.WxBusinessController.listAll(WxBusinessController.java:33) | |||
| [2023-03-20 18:13:01.096] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.iformall.controller.WxBusinessController$$FastClassBySpringCGLIB$$d7e5c122.invoke(<generated>) | |||
| [2023-03-20 18:13:01.096] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) | |||
| [2023-03-20 18:13:01.096] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769) | |||
| [2023-03-20 18:13:01.097] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) | |||
| [2023-03-20 18:13:01.097] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| [2023-03-20 18:13:01.097] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:56) | |||
| [2023-03-20 18:13:01.097] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) | |||
| [2023-03-20 18:13:01.098] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| [2023-03-20 18:13:01.098] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:55) | |||
| [2023-03-20 18:13:01.098] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) | |||
| [2023-03-20 18:13:01.098] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| [2023-03-20 18:13:01.099] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:100) | |||
| [2023-03-20 18:13:01.109] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.iformall.aop.RedisCacheAspect.round(RedisCacheAspect.java:145) | |||
| [2023-03-20 18:13:01.113] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |||
| [2023-03-20 18:13:01.114] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) | |||
| [2023-03-20 18:13:01.114] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) | |||
| [2023-03-20 18:13:01.115] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- java.lang.reflect.Method.invoke(Method.java:498) | |||
| [2023-03-20 18:13:01.115] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644) | |||
| [2023-03-20 18:13:01.117] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633) | |||
| [2023-03-20 18:13:01.118] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) | |||
| [2023-03-20 18:13:01.118] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) | |||
| [2023-03-20 18:13:01.118] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| [2023-03-20 18:13:01.119] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95) | |||
| [2023-03-20 18:13:01.120] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) | |||
| [2023-03-20 18:13:01.120] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747) | |||
| [2023-03-20 18:13:01.121] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689) | |||
| [2023-03-20 18:13:01.123] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.iformall.controller.WxBusinessController$$EnhancerBySpringCGLIB$$9d74be6d.listAll(<generated>) | |||
| [2023-03-20 18:13:01.124] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |||
| [2023-03-20 18:13:01.127] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) | |||
| [2023-03-20 18:13:01.130] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) | |||
| [2023-03-20 18:13:01.133] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- java.lang.reflect.Method.invoke(Method.java:498) | |||
| [2023-03-20 18:13:01.134] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) | |||
| [2023-03-20 18:13:01.159] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) | |||
| [2023-03-20 18:13:01.160] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) | |||
| [2023-03-20 18:13:01.161] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879) | |||
| [2023-03-20 18:13:01.162] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) | |||
| [2023-03-20 18:13:01.164] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) | |||
| [2023-03-20 18:13:01.164] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) | |||
| [2023-03-20 18:13:01.190] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) | |||
| [2023-03-20 18:13:01.190] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) | |||
| [2023-03-20 18:13:01.191] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) | |||
| [2023-03-20 18:13:01.200] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- javax.servlet.http.HttpServlet.service(HttpServlet.java:503) | |||
| [2023-03-20 18:13:01.201] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) | |||
| [2023-03-20 18:13:01.202] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- javax.servlet.http.HttpServlet.service(HttpServlet.java:590) | |||
| [2023-03-20 18:13:01.202] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) | |||
| [2023-03-20 18:13:01.203] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) | |||
| [2023-03-20 18:13:01.203] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- com.iformall.interceptor.HttpServletRequestWrapperFilter.doFilter(HttpServletRequestWrapperFilter.java:61) | |||
| [2023-03-20 18:13:01.204] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) | |||
| [2023-03-20 18:13:01.204] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) | |||
| [2023-03-20 18:13:01.205] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) | |||
| [2023-03-20 18:13:01.205] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) | |||
| [2023-03-20 18:13:01.205] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) | |||
| [2023-03-20 18:13:01.206] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) | |||
| [2023-03-20 18:13:01.206] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) | |||
| [2023-03-20 18:13:01.207] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) | |||
| [2023-03-20 18:13:01.207] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) | |||
| [2023-03-20 18:13:01.207] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) | |||
| [2023-03-20 18:13:01.208] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68) | |||
| [2023-03-20 18:13:01.208] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132) | |||
| [2023-03-20 18:13:01.224] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) | |||
| [2023-03-20 18:13:01.224] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) | |||
| [2023-03-20 18:13:01.225] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) | |||
| [2023-03-20 18:13:01.225] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) | |||
| [2023-03-20 18:13:01.226] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) | |||
| [2023-03-20 18:13:01.226] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) | |||
| [2023-03-20 18:13:01.226] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) | |||
| [2023-03-20 18:13:01.227] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) | |||
| [2023-03-20 18:13:01.232] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) | |||
| [2023-03-20 18:13:01.239] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269) | |||
| [2023-03-20 18:13:01.242] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78) | |||
| [2023-03-20 18:13:01.243] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133) | |||
| [2023-03-20 18:13:01.248] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130) | |||
| [2023-03-20 18:13:01.249] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) | |||
| [2023-03-20 18:13:01.250] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) | |||
| [2023-03-20 18:13:01.251] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249) | |||
| [2023-03-20 18:13:01.252] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78) | |||
| [2023-03-20 18:13:01.252] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99) | |||
| [2023-03-20 18:13:01.254] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.server.Connectors.executeRootHandler(Connectors.java:376) | |||
| [2023-03-20 18:13:01.254] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830) | |||
| [2023-03-20 18:13:01.254] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) | |||
| [2023-03-20 18:13:01.255] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) | |||
| [2023-03-20 18:13:01.255] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:93]-- java.lang.Thread.run(Thread.java:750) | |||
| [2023-03-20 18:13:01.256] [ERROR] [com.iformall.common.GlobalDefultExceptionHandler:95]-- ************************异常结束******************************* | |||
| [2023-03-20 18:13:15.568] [INFO ] [com.iformall.service.MailService:43]-- 简单邮件已经发送。 | |||
| [2023-03-20 18:13:15.747] [DEBUG] [com.iformall.interceptor.RequestInterceptor:121]-- afterCompletion: | |||
| [2023-03-20 18:13:15.754] [DEBUG] [com.iformall.interceptor.HttpServletRequestWrapperFilter:63]-- doFilter end: /C/api/wxBusiness/listAll 402015ms | |||
| [2023-03-20 18:13:19.774] [DEBUG] [com.iformall.interceptor.HttpServletRequestWrapperFilter:23]-- doFilter start | |||
| [2023-03-20 18:13:19.814] [INFO ] [com.iformall.service.impl.CUserTokenServiceImpl:55]-- 获取用户信息start ...e43cf234-b0da-4730-910e-bffeae26116c:789:wx-cuser | |||
| [2023-03-20 18:13:19.926] [DEBUG] [com.iformall.interceptor.RequestInterceptor:46]-- preHandle start | |||
| [2023-03-20 18:13:19.927] [DEBUG] [com.iformall.interceptor.RequestInterceptor:49]-- preHandle start 1 | |||
| [2023-03-20 18:13:19.933] [DEBUG] [com.iformall.interceptor.WebLogAspect:41]-- aspect start | |||
| [2023-03-20 18:13:24.940] [DEBUG] [com.iformall.interceptor.WebLogAspect:53]-- aspect start ... | |||
| [2023-03-20 18:13:24.941] [DEBUG] [com.iformall.interceptor.WebLogAspect:58]-- aspect after | |||
| [2023-03-20 18:13:24.942] [INFO ] [com.iformall.interceptor.WebLogAspect:67]-- URL: http://localhost:7000/C/api/wxBusiness/listAll, METHOD: GET, DO: com.iformall.controller.BaseController.InitBinder, IP: 192.168.1.106, SPEND TIME: 5008ms | |||
| [2023-03-20 18:13:24.943] [DEBUG] [com.iformall.interceptor.WebLogAspect:68]-- aspect after .. | |||
| [2023-03-20 18:13:24.947] [INFO ] [com.iformall.aop.RedisCacheAspect:75]-- token>>>>>>>>>>>>>>>e43cf234-b0da-4730-910e-bffeae26116c:789:wx-cuser | |||
| [2023-03-20 18:13:24.948] [INFO ] [com.iformall.service.impl.CUserTokenServiceImpl:55]-- 获取用户信息start ...e43cf234-b0da-4730-910e-bffeae26116c:789:wx-cuser | |||
| [2023-03-20 18:13:25.050] [DEBUG] [com.iformall.aop.RedisCacheAspect:144]-- CacheAspect 读库中, key:{}: /api/wxBusiness/listAll:789:231e2f468cf9fa3dc1910da785b8b851:lock | |||
| [2023-03-20 18:13:25.051] [DEBUG] [com.iformall.interceptor.WebLogAspect:41]-- aspect start | |||
| [2023-03-20 18:13:30.056] [DEBUG] [com.iformall.interceptor.WebLogAspect:53]-- aspect start ... | |||
| @@ -0,0 +1,154 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project xmlns="http://maven.apache.org/POM/4.0.0" | |||
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||
| xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |||
| <modelVersion>4.0.0</modelVersion> | |||
| <parent> | |||
| <artifactId>mallink</artifactId> | |||
| <groupId>com.iformall.gpt</groupId> | |||
| <version>1.0</version> | |||
| </parent> | |||
| <artifactId>mallinkCApi</artifactId> | |||
| <dependencies> | |||
| <dependency> | |||
| <groupId>com.iformall.gpt</groupId> | |||
| <artifactId>mallinkService</artifactId> | |||
| <version>1.0</version> | |||
| </dependency> | |||
| </dependencies> | |||
| <build> | |||
| <plugins> | |||
| <plugin> | |||
| <groupId>org.springframework.boot</groupId> | |||
| <artifactId>spring-boot-maven-plugin</artifactId> | |||
| <configuration> | |||
| <executable>true</executable> | |||
| <layout>ZIP</layout> | |||
| <excludeGroupIds> | |||
| antlr, | |||
| cn.afterturn, | |||
| ch.qos.logback, | |||
| com.alibaba, | |||
| com.amazonaws, | |||
| com.baomidou, | |||
| com.mchange, | |||
| com.fasterxml.jackson.core, | |||
| com.fasterxml.jackson.dataformat, | |||
| com.fasterxml.jackson.datatype, | |||
| com.fasterxml.jackson.module, | |||
| com.fasterxml.uuid, | |||
| com.fasterxml, | |||
| com.github.axet, | |||
| com.github.jsqlparser, | |||
| com.github.pagehelper, | |||
| com.github.ulisesbocchio, | |||
| com.github.virtuald, | |||
| com.google.code.findbugs, | |||
| com.google.code.gson, | |||
| com.google.errorprone, | |||
| com.google.guava, | |||
| com.google.protobuf, | |||
| com.google.zxing, | |||
| com.jayway.jsonpath, | |||
| com.jhlabs, | |||
| com.puppycrawl.tools, | |||
| com.rabbitmq, | |||
| com.squareup.okhttp3, | |||
| com.squareup.okio, | |||
| com.sun, | |||
| com.sun.mail, | |||
| com.thoughtworks.xstream, | |||
| com.zaxxer, | |||
| commons-beanutils, | |||
| commons-cli, | |||
| commons-codec, | |||
| commons-collections, | |||
| commons-fileupload, | |||
| commons-io, | |||
| commons-logging, | |||
| io.lettuce, | |||
| io.netty, | |||
| io.projectreactor, | |||
| io.springfox, | |||
| io.swagger, | |||
| io.undertow, | |||
| javax.activation, | |||
| javax.annotation, | |||
| javax.mail, | |||
| javax.persistence, | |||
| javax.servlet, | |||
| javax.validation, | |||
| javax.xml.bind, | |||
| javax.xml.soap, | |||
| javax.xml.ws, | |||
| joda-time, | |||
| junit, | |||
| mysql, | |||
| net.bytebuddy, | |||
| net.minidev, | |||
| net.sf.dozer, | |||
| net.sf.saxon, | |||
| ognl, | |||
| org.antlr, | |||
| org.apache.commons, | |||
| org.apache.httpcomponents, | |||
| org.apache.logging.log4j, | |||
| org.apache.poi, | |||
| org.apache.poi.wso2, | |||
| org.apache.rocketmq, | |||
| org.apache.shiro, | |||
| org.apache.tomcat.embed, | |||
| org.apache.xmlbeans, | |||
| org.aspectj, | |||
| org.assertj, | |||
| org.bouncycastle, | |||
| org.checkerframework, | |||
| org.codehaus.mojo, | |||
| org.crazycake, | |||
| org.dom4j, | |||
| org.flowable, | |||
| org.flywaydb, | |||
| org.glassfish, | |||
| org.hibernate.validator, | |||
| org.jasypt, | |||
| org.javassist, | |||
| org.jboss.logging, | |||
| org.jboss.spec.javax.annotation, | |||
| org.jboss.spec.javax.websocket, | |||
| org.jboss.xnio, | |||
| org.jdom, | |||
| org.jodd, | |||
| org.jvnet.mimepull, | |||
| org.jvnet.staxex, | |||
| org.mapstruct, | |||
| org.mockito, | |||
| org.mybatis, | |||
| org.mybatis.generator, | |||
| org.mybatis.spring.boot, | |||
| org.ow2.asm, | |||
| org.projectlombok, | |||
| org.quartz-scheduler, | |||
| org.reactivestreams, | |||
| org.reflections, | |||
| org.rocketmq.spring.boot, | |||
| org.slf4j, | |||
| org.springframework, | |||
| org.springframework.amqp, | |||
| org.springframework.boot, | |||
| org.springframework.data, | |||
| org.springframework.retry, | |||
| org.springframework.ws, | |||
| org.yaml, | |||
| redis.clients, | |||
| software.amazon.ion, | |||
| tk.mybatis, | |||
| xmlpull, | |||
| xpp3 | |||
| </excludeGroupIds> | |||
| </configuration> | |||
| </plugin> | |||
| </plugins> | |||
| </build> | |||
| </project> | |||
| @@ -0,0 +1,77 @@ | |||
| package com.iformall; | |||
| import org.mybatis.spring.annotation.MapperScan; | |||
| import org.rocketmq.starter.annotation.EnableRocketMQ; | |||
| import org.springframework.beans.factory.annotation.Value; | |||
| import org.springframework.boot.SpringApplication; | |||
| import org.springframework.boot.autoconfigure.SpringBootApplication; | |||
| import org.springframework.context.annotation.Bean; | |||
| import org.springframework.context.annotation.EnableAspectJAutoProxy; | |||
| import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties; | |||
| import org.springframework.scheduling.annotation.EnableAsync; | |||
| /** | |||
| * @author chenkx | |||
| * @date 2017-12-26 | |||
| */ | |||
| @SpringBootApplication | |||
| @MapperScan(basePackages = {"com.iformall.mapper"}) | |||
| @EnableEncryptableProperties | |||
| @EnableAsync | |||
| @EnableRocketMQ | |||
| @EnableAspectJAutoProxy(exposeProxy = true) | |||
| public class CApplication { | |||
| @Value("${fm.exception}") | |||
| private boolean fmException; | |||
| @Value("${fm.exception_emails}") | |||
| private String fmExceptionEmails; | |||
| @Value("${fm.open}") | |||
| private boolean fmOpen; | |||
| @Value("${fm.upload_dir}") | |||
| private String uploadDir; | |||
| @Value("${fm.ocr_data}") | |||
| private String ocrData; | |||
| @Value("${fm.videoType}") | |||
| private String videoType; | |||
| @Bean | |||
| public boolean isFmException() { | |||
| return fmException; | |||
| } | |||
| @Bean | |||
| public String fmExceptionEmails() { | |||
| return fmExceptionEmails; | |||
| } | |||
| @Bean | |||
| public boolean isFmOpen() { | |||
| return fmOpen; | |||
| } | |||
| @Bean | |||
| public String fmUploadDir() { | |||
| return uploadDir; | |||
| } | |||
| @Bean | |||
| public String ocrData() { | |||
| return ocrData; | |||
| } | |||
| @Bean | |||
| public String videoType() { | |||
| return videoType; | |||
| } | |||
| public static void main(String[] args) { | |||
| SpringApplication.run(CApplication.class, args); | |||
| } | |||
| } | |||
| @@ -0,0 +1,16 @@ | |||
| package com.iformall.annotation; | |||
| import java.lang.annotation.*; | |||
| /** | |||
| * api接口,忽略Token验证 | |||
| * @author stormeye.wu | |||
| * @email wuguoqiang@iformall.com | |||
| * @date 2017-03-23 15:44 | |||
| */ | |||
| @Target(ElementType.METHOD) | |||
| @Retention(RetentionPolicy.RUNTIME) | |||
| @Documented | |||
| public @interface AuthIgnore { | |||
| } | |||
| @@ -0,0 +1,19 @@ | |||
| package com.iformall.annotation; | |||
| import java.lang.annotation.ElementType; | |||
| import java.lang.annotation.Retention; | |||
| import java.lang.annotation.RetentionPolicy; | |||
| import java.lang.annotation.Target; | |||
| /** | |||
| * 登录用户信息 | |||
| * | |||
| * @author stormeye.wu | |||
| * @email wuguoqiang@iformall.com | |||
| * @date 2017-03-23 20:39 | |||
| */ | |||
| @Target(ElementType.PARAMETER) | |||
| @Retention(RetentionPolicy.RUNTIME) | |||
| public @interface LoginUser { | |||
| } | |||
| @@ -0,0 +1,53 @@ | |||
| package com.iformall.annotation; | |||
| import java.lang.annotation.ElementType; | |||
| import java.lang.annotation.Retention; | |||
| import java.lang.annotation.RetentionPolicy; | |||
| import java.lang.annotation.Target; | |||
| import java.util.concurrent.TimeUnit; | |||
| /** | |||
| * - /api/wxCouponChannel/change | |||
| * - /api/user/userinfo | |||
| * - /api/wxBusiness/listAll | |||
| * - /api/wxCampaign/list | |||
| * - /api/mall/mallInfo | |||
| * - /api/mall/getAppIcon | |||
| * - /api/mall/getWeapNote | |||
| */ | |||
| @Target({ElementType.METHOD}) | |||
| @Retention(RetentionPolicy.RUNTIME) | |||
| public @interface RedisCache { | |||
| /** | |||
| * 缓存key的名称 | |||
| * @return | |||
| */ | |||
| String key() default ""; | |||
| /** | |||
| * 自动生成key | |||
| * @return | |||
| */ | |||
| boolean autoKey() default true; | |||
| /** | |||
| * 参数md5,解决key过长问题 | |||
| * @return | |||
| */ | |||
| boolean md5() default true ; | |||
| /** | |||
| * key 过期日期默认60秒 | |||
| * @return | |||
| */ | |||
| int expireTime() default 60; | |||
| /** | |||
| * 时间单位默认为秒 | |||
| * @return | |||
| */ | |||
| TimeUnit dateUnit() default TimeUnit.SECONDS; | |||
| } | |||
| @@ -0,0 +1,16 @@ | |||
| package com.iformall.annotation; | |||
| import java.lang.annotation.*; | |||
| /** | |||
| * api接口,忽略Token验证 | |||
| * @author stormeye.wu | |||
| * @email wuguoqiang@iformall.com | |||
| * @date 2017-03-23 15:44 | |||
| */ | |||
| @Target(ElementType.METHOD) | |||
| @Retention(RetentionPolicy.RUNTIME) | |||
| @Documented | |||
| public @interface TenantIgnore { | |||
| } | |||
| @@ -0,0 +1,146 @@ | |||
| package com.iformall.aop; | |||
| import com.alibaba.fastjson.JSONObject; | |||
| import com.iformall.annotation.RedisCache; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.interceptor.BodyReaderHttpServletRequestWrapper; | |||
| import com.iformall.utils.HashUtil; | |||
| import com.iformall.utils.RedisLock; | |||
| import lombok.extern.slf4j.Slf4j; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.aspectj.lang.ProceedingJoinPoint; | |||
| import org.aspectj.lang.annotation.Around; | |||
| import org.aspectj.lang.annotation.Aspect; | |||
| import org.aspectj.lang.annotation.Pointcut; | |||
| import org.aspectj.lang.reflect.MethodSignature; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.data.redis.core.StringRedisTemplate; | |||
| import org.springframework.data.redis.core.ValueOperations; | |||
| import org.springframework.stereotype.Component; | |||
| import org.springframework.web.context.request.RequestContextHolder; | |||
| import org.springframework.web.context.request.ServletRequestAttributes; | |||
| import javax.servlet.http.HttpServletRequest; | |||
| import java.lang.reflect.Method; | |||
| import java.util.Arrays; | |||
| import java.util.Objects; | |||
| @Slf4j | |||
| @Aspect | |||
| @Component | |||
| public class RedisCacheAspect { | |||
| /** | |||
| * 参数分隔符 param1|param2|param3 | |||
| **/ | |||
| private static final String DELIMITER_PARAMS = "|"; | |||
| /** | |||
| * key 分隔符 | |||
| */ | |||
| private static final String DELIMITER_KEY = ":"; | |||
| @Autowired | |||
| private StringRedisTemplate stringRedisTemplate; | |||
| @Autowired | |||
| RedisLock redisLock; | |||
| @Pointcut("@annotation(com.iformall.annotation.RedisCache)") | |||
| public void cacheAspect() { | |||
| } | |||
| @Around("cacheAspect()") | |||
| public Object round(ProceedingJoinPoint jp) throws Throwable { | |||
| HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
| // 查询token信息 | |||
| //从header中获取token | |||
| String token = request.getHeader("token"); | |||
| //如果header中不存在token,则从参数中获取token | |||
| if (StringUtils.isBlank(token)) { | |||
| token = request.getParameter("token"); | |||
| } | |||
| if(StringUtils.isBlank(token) || "null".equals(token) || "undefined".equals(token)){ | |||
| token=""; | |||
| //throw new MallinkException(ErrorCode.NET_TOKEN_EMPTY.getCode(),"token为空["+token+"]"); | |||
| } | |||
| log.info("token>>>>>>>>>>>>>>>"+token); | |||
| // 请求参数 | |||
| Object[] args = jp.getArgs(); | |||
| // 接口 返回结果 | |||
| Object result; | |||
| String redisKey; | |||
| //得到注释的名称 | |||
| MethodSignature signature = (MethodSignature) jp.getSignature(); | |||
| //判断tag是否在用户权限中 如果存在加入参数查询 | |||
| Method method = signature.getMethod(); | |||
| RedisCache cache = method.getAnnotation(RedisCache.class) ; | |||
| if (cache.autoKey()) { | |||
| // 构建 redisKey => reqPath:tenantId:md5(param1_param2_param3) | |||
| String requestUrl = request.getRequestURI(); | |||
| // 接口路径 reqPath => /api/xxx | |||
| String reqPath = requestUrl.substring(requestUrl.indexOf("/api/")); | |||
| if (cache.md5()) { | |||
| String md5Before = StringUtils.join(args, DELIMITER_PARAMS); | |||
| redisKey = StringUtils.join("gpt:",reqPath, DELIMITER_KEY, "1", DELIMITER_KEY, HashUtil.md5(StringUtils.join(token, md5Before, DELIMITER_PARAMS))); | |||
| } else { | |||
| redisKey = StringUtils.join("gpt:",reqPath, DELIMITER_KEY, "1", DELIMITER_KEY, StringUtils.join(token,args, DELIMITER_PARAMS)); | |||
| } | |||
| } else { | |||
| redisKey = cache.key(); | |||
| } | |||
| // redisKey 不存在,获取接口数据并返回 | |||
| if (StringUtils.isBlank(redisKey)) { | |||
| result = jp.proceed(args); | |||
| } else { | |||
| ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue(); | |||
| String value = valueOperations.get(redisKey); | |||
| if (value == null) { | |||
| String lockKey = StringUtils.join(redisKey, ":", "lock"); | |||
| long time = System.currentTimeMillis() + 2000; | |||
| String timeStr = String.valueOf(time); | |||
| try { | |||
| //分布式锁,保证一个线程读DB,其它线程排队 | |||
| if (redisLock.lock2(lockKey, timeStr)) { | |||
| log.debug("CacheAspect 读库中, key:{}: " + lockKey); | |||
| result = jp.proceed(args); | |||
| String json_data = JSONObject.toJSONString(result); | |||
| valueOperations.set(redisKey, json_data, cache.expireTime(), cache.dateUnit()); | |||
| log.debug("CacheAspect 缓存不存在,获取接口数据并放入缓存,key:{}, expire:{}", redisKey, cache.expireTime()); | |||
| } else { | |||
| log.debug("CacheAspect 读库等待中, key:{}: " + lockKey); | |||
| Thread.sleep(2000); | |||
| value = valueOperations.get(redisKey); | |||
| result = parseCache(jp, redisKey, value); | |||
| } | |||
| } catch (Throwable throwable) { | |||
| log.error("CacheAspect proceed error , Illegal argument: {} in {}.{}()", Arrays.toString(jp.getArgs()), | |||
| jp.getSignature().getDeclaringTypeName(), jp.getSignature().getName(), throwable); | |||
| throw throwable; | |||
| } finally { | |||
| redisLock.unlock(lockKey, timeStr); | |||
| } | |||
| } else { | |||
| result = parseCache(jp, redisKey, value); | |||
| } | |||
| // 计数器 | |||
| stringRedisTemplate.opsForHash().increment("hotapi", redisKey, 1); | |||
| } | |||
| return result; | |||
| } | |||
| private Object parseCache(ProceedingJoinPoint jp, String redisKey, String value) { | |||
| if (StringUtils.isBlank(value)) { | |||
| log.debug("CacheAspect 缓存不存在,解析缓存数据为空:{},key:{}", value, redisKey); | |||
| return null; | |||
| } | |||
| Class<?> returnType = ((MethodSignature) jp.getSignature()).getReturnType(); | |||
| log.debug("CacheAspect 缓存存在,解析缓存并返回,key:{}", redisKey); | |||
| return JSONObject.parseObject(value, returnType); | |||
| } | |||
| } | |||
| @@ -0,0 +1,52 @@ | |||
| package com.iformall.config; | |||
| import org.springframework.boot.context.properties.ConfigurationProperties; | |||
| import org.springframework.stereotype.Component; | |||
| /** | |||
| * @author Stormeye | |||
| */ | |||
| @Component | |||
| @ConfigurationProperties(prefix = "aws") | |||
| public class AwsProperty { | |||
| // AWS ACCESS KEY | |||
| private String access; | |||
| private String secret; | |||
| private String clientRegion; | |||
| private String bucketName; | |||
| public String getAccess() { | |||
| return access; | |||
| } | |||
| public void setAccess(String access) { | |||
| this.access = access; | |||
| } | |||
| public String getSecret() { | |||
| return secret; | |||
| } | |||
| public void setSecret(String secret) { | |||
| this.secret = secret; | |||
| } | |||
| public String getClientRegion() { | |||
| return clientRegion; | |||
| } | |||
| public void setClientRegion(String clientRegion) { | |||
| this.clientRegion = clientRegion; | |||
| } | |||
| public String getBucketName() { | |||
| return bucketName; | |||
| } | |||
| public void setBucketName(String bucketName) { | |||
| this.bucketName = bucketName; | |||
| } | |||
| } | |||
| @@ -0,0 +1,14 @@ | |||
| package com.iformall.config; | |||
| import com.iformall.plugin.MyBatisItercepters; | |||
| import org.springframework.context.annotation.Bean; | |||
| import org.springframework.context.annotation.Configuration; | |||
| @Configuration | |||
| public class MyBatisConfiguration extends BaseMyBatisConfiguration { | |||
| @Bean | |||
| public MyBatisItercepters intercepters() { | |||
| return allIntercepters(); | |||
| } | |||
| } | |||
| @@ -0,0 +1,76 @@ | |||
| package com.iformall.config; | |||
| import com.fasterxml.jackson.annotation.JsonAutoDetect; | |||
| import com.fasterxml.jackson.annotation.PropertyAccessor; | |||
| import com.fasterxml.jackson.databind.DeserializationFeature; | |||
| import com.fasterxml.jackson.databind.ObjectMapper; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.cache.CacheManager; | |||
| import org.springframework.cache.annotation.CachingConfigurerSupport; | |||
| import org.springframework.cache.annotation.EnableCaching; | |||
| import org.springframework.context.annotation.Bean; | |||
| import org.springframework.context.annotation.Configuration; | |||
| import org.springframework.data.redis.cache.RedisCacheConfiguration; | |||
| import org.springframework.data.redis.cache.RedisCacheManager; | |||
| import org.springframework.data.redis.cache.RedisCacheWriter; | |||
| import org.springframework.data.redis.connection.RedisConnectionFactory; | |||
| import org.springframework.data.redis.core.RedisTemplate; | |||
| import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; | |||
| import org.springframework.data.redis.serializer.StringRedisSerializer; | |||
| import java.time.Duration; | |||
| import java.util.HashMap; | |||
| import java.util.Map; | |||
| /** | |||
| * Created by Stormeye on 2018/10/1. | |||
| */ | |||
| @Configuration | |||
| @EnableCaching | |||
| public class RedisConfig extends CachingConfigurerSupport { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| //缓存管理器 | |||
| @Bean | |||
| public CacheManager cacheManager(RedisConnectionFactory connectionFactory) { | |||
| //user信息缓存配置 | |||
| RedisCacheConfiguration userCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(10)).disableCachingNullValues().prefixKeysWith("user"); | |||
| Map<String, RedisCacheConfiguration> redisCacheConfigurationMap = new HashMap<>(); | |||
| redisCacheConfigurationMap.put("user", userCacheConfiguration); | |||
| //初始化一个RedisCacheWriter | |||
| RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(connectionFactory); | |||
| // 设置CacheManager的值序列化方式为JdkSerializationRedisSerializer,但其实RedisCacheConfiguration默认就是使用StringRedisSerializer序列化key,JdkSerializationRedisSerializer序列化value,所以以下注释代码为默认实现 | |||
| // ClassLoader loader = this.getClass().getClassLoader(); | |||
| // JdkSerializationRedisSerializer jdkSerializer = new JdkSerializationRedisSerializer(loader); | |||
| // RedisSerializationContext.SerializationPair<Object> pair = RedisSerializationContext.SerializationPair.fromSerializer(jdkSerializer); | |||
| // RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig().serializeValuesWith(pair); | |||
| RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig(); | |||
| //设置默认超过期时间是30秒 | |||
| defaultCacheConfig.entryTtl(Duration.ofSeconds(30)); | |||
| //初始化RedisCacheManager | |||
| RedisCacheManager cacheManager = new RedisCacheManager(redisCacheWriter, defaultCacheConfig, redisCacheConfigurationMap); | |||
| return cacheManager; | |||
| } | |||
| @Bean("objectCommonRedisTemplate") | |||
| public RedisTemplate<String, Object> getObjectValueOperations(RedisConnectionFactory connectionFactory) { | |||
| RedisTemplate<String, Object> template = new RedisTemplate<>(); | |||
| template.setConnectionFactory(connectionFactory); | |||
| Jackson2JsonRedisSerializer<Object> j = new Jackson2JsonRedisSerializer<Object>(Object.class); | |||
| ObjectMapper om = new ObjectMapper(); | |||
| om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); | |||
| om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); | |||
| j.setObjectMapper(om); | |||
| // value值的序列化 | |||
| template.setValueSerializer(j); | |||
| template.setHashValueSerializer(j); | |||
| // key的序列化 | |||
| template.setKeySerializer(new StringRedisSerializer()); | |||
| template.setHashKeySerializer(new StringRedisSerializer()); | |||
| template.afterPropertiesSet(); | |||
| return template; | |||
| } | |||
| } | |||
| @@ -0,0 +1,61 @@ | |||
| package com.iformall.config; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.context.annotation.Bean; | |||
| import org.springframework.context.annotation.Configuration; | |||
| import springfox.documentation.builders.ApiInfoBuilder; | |||
| import springfox.documentation.builders.ParameterBuilder; | |||
| import springfox.documentation.builders.PathSelectors; | |||
| import springfox.documentation.builders.RequestHandlerSelectors; | |||
| import springfox.documentation.schema.ModelRef; | |||
| import springfox.documentation.service.ApiInfo; | |||
| import springfox.documentation.service.Parameter; | |||
| import springfox.documentation.spi.DocumentationType; | |||
| import springfox.documentation.spring.web.paths.RelativePathProvider; | |||
| import springfox.documentation.spring.web.plugins.Docket; | |||
| import springfox.documentation.swagger2.annotations.EnableSwagger2; | |||
| import javax.servlet.ServletContext; | |||
| import java.util.ArrayList; | |||
| import java.util.List; | |||
| //参考:http://blog.csdn.net/catoop/article/details/50668896 | |||
| @Configuration | |||
| @EnableSwagger2 | |||
| public class Swagger2Config { | |||
| @Autowired | |||
| private ServletContext servletContext; | |||
| @Bean | |||
| public Docket createRestApi() { | |||
| ParameterBuilder tokenPar = new ParameterBuilder(); | |||
| List<Parameter> pars = new ArrayList<Parameter>(); | |||
| //增加一个request的header参数 | |||
| tokenPar.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build(); | |||
| pars.add(tokenPar.build()); | |||
| return new Docket(DocumentationType.SWAGGER_2) | |||
| .apiInfo(apiInfo()) | |||
| .select() | |||
| .apis(RequestHandlerSelectors.basePackage("com.iformall.controller")) | |||
| .paths(PathSelectors.any()) | |||
| .build() | |||
| .globalOperationParameters(pars) | |||
| .pathProvider(new RelativePathProvider(servletContext) { | |||
| @Override | |||
| public String getApplicationBasePath() { | |||
| return "/api"; | |||
| } | |||
| }); | |||
| } | |||
| private ApiInfo apiInfo() { | |||
| return new ApiInfoBuilder() | |||
| .title("c端 api") | |||
| .description("c api") | |||
| .termsOfServiceUrl("http://localhost:7000") | |||
| .version("2.0") | |||
| .build(); | |||
| } | |||
| } | |||
| @@ -0,0 +1,111 @@ | |||
| package com.iformall.config; | |||
| import com.fasterxml.jackson.annotation.JsonInclude; | |||
| import com.fasterxml.jackson.databind.DeserializationConfig; | |||
| import com.fasterxml.jackson.databind.DeserializationFeature; | |||
| import com.fasterxml.jackson.databind.ObjectMapper; | |||
| import com.fasterxml.jackson.databind.module.SimpleModule; | |||
| import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; | |||
| import com.iformall.interceptor.AuthorizationInterceptor; | |||
| import com.iformall.interceptor.HttpServletRequestWrapperFilter; | |||
| import com.iformall.interceptor.RequestInterceptor; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.boot.web.servlet.FilterRegistrationBean; | |||
| import org.springframework.context.annotation.Bean; | |||
| import org.springframework.context.annotation.Configuration; | |||
| import org.springframework.http.converter.HttpMessageConverter; | |||
| import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; | |||
| import org.springframework.web.method.support.HandlerMethodArgumentResolver; | |||
| import org.springframework.web.servlet.config.annotation.*; | |||
| import java.math.BigDecimal; | |||
| import java.math.BigInteger; | |||
| import java.text.SimpleDateFormat; | |||
| import java.util.List; | |||
| /** | |||
| * MVC配置 | |||
| * | |||
| * @author stormeye.wu | |||
| * @email wugq@mippoint.com | |||
| * @date 2017-04-20 22:30 | |||
| */ | |||
| @Configuration | |||
| @EnableWebMvc | |||
| public class WebMvcConfig implements WebMvcConfigurer { | |||
| @Autowired | |||
| private AuthorizationInterceptor authorizationInterceptor; | |||
| @Autowired | |||
| private RequestInterceptor requestInterceptor; | |||
| @Override | |||
| public void addInterceptors(InterceptorRegistry registry) { | |||
| registry.addInterceptor(authorizationInterceptor).addPathPatterns("/api/**"); | |||
| registry.addInterceptor(requestInterceptor).addPathPatterns("/api/**"); | |||
| } | |||
| // @Override | |||
| // public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { | |||
| // argumentResolvers.add(loginUserHandlerMethodArgumentResolver); | |||
| // } | |||
| @Override | |||
| public void addResourceHandlers(ResourceHandlerRegistry registry) { | |||
| registry.addResourceHandler("swagger-ui.html") | |||
| .addResourceLocations("classpath:/META-INF/resources/"); | |||
| registry.addResourceHandler("/webjars/**") | |||
| .addResourceLocations("classpath:/META-INF/resources/webjars/"); | |||
| //registry.addResourceHandler("/app/**").addResourceLocations("classpath:/app/"); | |||
| } | |||
| @Override | |||
| public void addCorsMappings(CorsRegistry registry) { | |||
| registry.addMapping("/api/**") | |||
| .allowedOrigins("*") | |||
| .allowCredentials(true) | |||
| .allowedMethods("GET", "POST", "DELETE", "PUT") | |||
| .maxAge(3600); | |||
| } | |||
| @Override | |||
| public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { | |||
| MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); | |||
| //ObjectMapper 是Jackson库的主要类。它提供一些功能将转换成Java对象匹配JSON结构,反之亦然 | |||
| ObjectMapper objectMapper = new ObjectMapper(); | |||
| SimpleModule simpleModule = new SimpleModule(); | |||
| //不显示为null的字段 | |||
| objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); | |||
| DeserializationConfig dc = objectMapper.getDeserializationConfig(); | |||
| // 设置反序列化日期格式、忽略不存在get、set的属性 | |||
| objectMapper.setConfig( | |||
| dc.with(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")) | |||
| .without(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) | |||
| ); | |||
| //序列化将Long转String类型 | |||
| simpleModule.addSerializer(Long.class, ToStringSerializer.instance); | |||
| simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); | |||
| SimpleModule bigIntegerModule = new SimpleModule(); | |||
| //序列化将BigInteger转String类型 | |||
| bigIntegerModule.addSerializer(BigInteger.class, ToStringSerializer.instance); | |||
| SimpleModule bigDecimalModule = new SimpleModule(); | |||
| //序列化将BigDecimal转String类型 | |||
| bigDecimalModule.addSerializer(BigDecimal.class, ToStringSerializer.instance); | |||
| objectMapper.registerModule(simpleModule); | |||
| objectMapper.registerModule(bigDecimalModule); | |||
| objectMapper.registerModule(bigIntegerModule); | |||
| jackson2HttpMessageConverter.setObjectMapper(objectMapper); | |||
| converters.add(jackson2HttpMessageConverter); | |||
| } | |||
| @Bean | |||
| public FilterRegistrationBean<HttpServletRequestWrapperFilter> Filters() { | |||
| FilterRegistrationBean<HttpServletRequestWrapperFilter> registrationBean = new FilterRegistrationBean<HttpServletRequestWrapperFilter>(); | |||
| registrationBean.setFilter(new HttpServletRequestWrapperFilter()); | |||
| registrationBean.addUrlPatterns("/*"); | |||
| registrationBean.setName("koalaSignFilter"); | |||
| return registrationBean; | |||
| } | |||
| } | |||
| @@ -0,0 +1,92 @@ | |||
| package com.iformall.controller; | |||
| import cn.binarywang.wx.miniapp.api.WxMaService; | |||
| import com.alibaba.fastjson.JSONObject; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.common.IdWorker; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.*; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.service.*; | |||
| import com.iformall.utils.Constant; | |||
| import com.iformall.utils.IPUtil; | |||
| import com.iformall.utils.MaUtil; | |||
| import com.iformall.utils.RedisCacheUtils; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.beans.factory.annotation.Qualifier; | |||
| import org.springframework.data.redis.core.RedisTemplate; | |||
| import org.springframework.web.bind.WebDataBinder; | |||
| import org.springframework.web.bind.annotation.InitBinder; | |||
| import org.springframework.web.bind.annotation.RestController; | |||
| import org.springframework.web.context.request.RequestContextHolder; | |||
| import org.springframework.web.context.request.ServletRequestAttributes; | |||
| import javax.servlet.http.HttpServletRequest; | |||
| import java.beans.PropertyEditorSupport; | |||
| import java.text.ParseException; | |||
| import java.text.SimpleDateFormat; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| @RestController | |||
| public class BaseController { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| private boolean isFmOpen; | |||
| @Autowired | |||
| @Qualifier("objectCommonRedisTemplate") | |||
| RedisTemplate<String, Object> objectCommonRedisTemplate; | |||
| @Autowired | |||
| MaUtil maUtil; | |||
| @InitBinder | |||
| public void InitBinder(WebDataBinder dataBinder) { | |||
| dataBinder.registerCustomEditor(Date.class, new PropertyEditorSupport() { | |||
| public void setAsText(String value) { | |||
| try { | |||
| setValue(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value)); | |||
| } catch (ParseException e) { | |||
| try { | |||
| setValue(new SimpleDateFormat("yyyy-MM-dd ").parse(value)); | |||
| } catch (ParseException e1) { | |||
| setValue(null); | |||
| } | |||
| } | |||
| } | |||
| public String getAsText() { | |||
| return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format((Date) getValue()); | |||
| } | |||
| }); | |||
| } | |||
| public TenantEntity getTenantInfo() { | |||
| HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
| String tenantId = (String) request.getAttribute(Constant.TENANT_ID); | |||
| String parentTenantId = (String) request.getAttribute(Constant.PARENT_TENANT_ID); | |||
| TenantEntity tenantEntity = new TenantEntity() ; | |||
| tenantEntity.setTenantId(tenantId); | |||
| tenantEntity.setParentTenantId(parentTenantId); | |||
| return tenantEntity; | |||
| } | |||
| public WxCUser getCUser() { | |||
| HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
| WxCUser cUser = (WxCUser) request.getAttribute(Constant.currentUser); | |||
| if (null == cUser) { | |||
| throw new MallinkException(ErrorCode.UNLOGIN); | |||
| } | |||
| return cUser; | |||
| } | |||
| } | |||
| @@ -0,0 +1,208 @@ | |||
| package com.iformall.controller; | |||
| import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; | |||
| import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils; | |||
| import com.alibaba.fastjson.JSON; | |||
| import com.alibaba.fastjson.JSONObject; | |||
| import com.iformall.annotation.AuthIgnore; | |||
| import com.iformall.annotation.TenantIgnore; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.common.Result; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.common.SysConfigConstant; | |||
| import com.iformall.domain.po.*; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.enums.*; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.service.*; | |||
| import com.iformall.service.cache.WxCUserCache; | |||
| import com.iformall.service.wx.WxWeappService; | |||
| import com.iformall.utils.Constant; | |||
| import com.iformall.utils.IPUtil; | |||
| import com.iformall.utils.MaUtil; | |||
| import com.iformall.utils.RedisCacheUtils; | |||
| import io.swagger.annotations.Api; | |||
| import io.swagger.annotations.ApiOperation; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.web.bind.annotation.*; | |||
| import org.springframework.web.context.request.RequestContextHolder; | |||
| import org.springframework.web.context.request.ServletRequestAttributes; | |||
| import javax.servlet.http.HttpServletRequest; | |||
| import javax.servlet.http.HttpServletResponse; | |||
| import java.io.IOException; | |||
| import java.io.PrintWriter; | |||
| import java.math.BigDecimal; | |||
| import java.util.Date; | |||
| import java.util.HashMap; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| @RestController | |||
| @RequestMapping("/api/user") | |||
| @Api(description = "用户登陆授权相关接口") | |||
| public class WxUserGrantController extends BaseController { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| WxWeappService wxWeappService; | |||
| @Autowired | |||
| WxAppinfoService wxAppinfoServie; | |||
| @Autowired | |||
| WxCUserService wxCUserService; | |||
| /** | |||
| * 微信消息服务验证 | |||
| * | |||
| * @param response | |||
| * @param request | |||
| * @throws IOException | |||
| */ | |||
| @AuthIgnore | |||
| @RequestMapping(value = "/signature") | |||
| @ResponseBody | |||
| public void signature(HttpServletResponse response, HttpServletRequest request) throws IOException { | |||
| String signature = request.getParameter("signature"); | |||
| String timestamp = request.getParameter("timestamp"); | |||
| String nonce = request.getParameter("nonce"); | |||
| String echostr = request.getParameter("echostr"); | |||
| logger.warn("收到的微信服务验证信息:" + signature + "\n" + timestamp + "\n" + nonce + "\n" + echostr); | |||
| PrintWriter out = response.getWriter(); | |||
| // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败 | |||
| // 当前无法确定此消息的appId及token, 所以直接返回echostr | |||
| //if (CheckUtil.checkSignature(wp.getToken(), signature, timestamp, nonce)) { | |||
| out.print(echostr); | |||
| logger.warn("微信服务验证成功====================" + echostr); | |||
| System.out.println("微信服务验证成功!"); | |||
| //} | |||
| out.close(); | |||
| } | |||
| /** | |||
| * 用户登录 | |||
| * | |||
| * @param map | |||
| * @return | |||
| */ | |||
| @AuthIgnore | |||
| @TenantIgnore | |||
| @PostMapping("/login") | |||
| @ApiOperation(value = "用户登录", notes = "{\"code\":\"string\"}") | |||
| public ResultData userLogin(@RequestBody Map<String, String> map) { | |||
| Map resultMap = new HashMap(); | |||
| String code = map.get("code"); | |||
| if (StringUtils.isBlank(code)) { | |||
| return new ResultData(ErrorCode.PARAM_EMPITY.getCode(), "code不能为空"); | |||
| } | |||
| String session_key = null; | |||
| String openId = null; | |||
| String unionId = null; | |||
| try { | |||
| TenantEntity tenantEntity = this.getTenantInfo(); | |||
| WxAppinfo wxAppinfo = wxAppinfoServie.getCAppInfoFromRedis(tenantEntity.getTenantId()); | |||
| WxMaJscode2SessionResult session = wxWeappService.jsCode2SessionInfo(code, wxAppinfo, false); | |||
| logger.info("sessionResult: " + session); | |||
| if (null != session) { | |||
| logger.info("sessionResultDetail: [openid]" + session.getOpenid()+",[sessionkey]"+session.getSessionKey()+",[unionid]"+session.getUnionid()); | |||
| } | |||
| //获取会话密钥(session_key) | |||
| session_key = session.getSessionKey(); | |||
| openId = session.getOpenid(); | |||
| unionId = session.getUnionid(); | |||
| logger.info("session_key: " + session_key + ", openId: " + openId + ", unionId: " + unionId); | |||
| resultMap.put("openId", openId); | |||
| resultMap.put("sessionKey", session_key); | |||
| } catch (Exception e) { | |||
| logger.error(e.getMessage(), e); | |||
| return new ResultData(ErrorCode.PARAM_EMPITY, resultMap); | |||
| } | |||
| HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
| String ipaddress = IPUtil.getIpAddr(request); | |||
| //处理登陆用户 | |||
| WxCUser cq = new WxCUser(); | |||
| cq.setOpenId(openId); | |||
| WxCUser cUser = wxCUserService.getByOpenId(cq); | |||
| if (null == cUser) { | |||
| cUser = new WxCUser(); | |||
| cUser.setOpenId(openId); | |||
| cUser.setUnionId(unionId); | |||
| wxCUserService.saveOrUpdate(cUser); | |||
| } | |||
| WxCUserCache.cacheApp(objectCommonRedisTemplate, cUser); | |||
| resultMap.put("token", String.valueOf(cUser.getId())); | |||
| return new ResultData(resultMap); | |||
| } | |||
| /** | |||
| * 授权后获取用户的手机号等信息 | |||
| * | |||
| * @param map | |||
| * @return | |||
| */ | |||
| @PostMapping("/getUserPhone") | |||
| @ApiOperation(value = "授权后获取用户的手机号", notes = "{\"encryptedData\":\"string\",\"iv\":\"string\",\"sessionKey\":\"string\"}") | |||
| public ResultData getUserPhone(@RequestBody Map<String, String> map) { | |||
| logger.info(map.toString()); | |||
| String encryptedData = map.get("encryptedData"); | |||
| String iv = map.get("iv"); | |||
| String sessionKey = map.get("sessionKey"); | |||
| //登录凭证不能为空 | |||
| if (StringUtils.isBlank(encryptedData)) { | |||
| return new ResultData(ErrorCode.PARAM_EMPITY.getCode(), "encryptedData 不能为空"); | |||
| } | |||
| if (StringUtils.isBlank(iv)) { | |||
| return new ResultData(ErrorCode.PARAM_EMPITY.getCode(), "iv 不能为空"); | |||
| } | |||
| if (StringUtils.isBlank(sessionKey)) { | |||
| return new ResultData(ErrorCode.PARAM_EMPITY.getCode(), "sessionKey 不能为空"); | |||
| } | |||
| Map resultMap = new HashMap(); | |||
| WxCUser user = getCUser(); | |||
| if (user == null) { | |||
| return new ResultData(ErrorCode.UNLOGIN); | |||
| } | |||
| WxAppinfo wxAppinfo = wxAppinfoServie.getCAppInfoFromRedis(user.getTenantId()); | |||
| if(wxAppinfo == null){ | |||
| return new ResultData(ErrorCode.APPINFO_NOFUND); | |||
| } | |||
| try { | |||
| // 解密 | |||
| String phone = wxWeappService.decryptPhoneNoInfo(encryptedData, iv,sessionKey, user, wxAppinfo, false); | |||
| resultMap.put("msg", "授权手机成功!"); | |||
| resultMap.put("phone", phone); | |||
| } catch (MallinkException e) { | |||
| return new ResultData(e.getErrorCode(), e.getMessage()); | |||
| }catch (Exception e) { | |||
| this.logger.error(e.getMessage(), e); | |||
| return new ResultData(ErrorCode.SERVER_ERROR.getCode(), "解密并保存出错", resultMap); | |||
| } | |||
| return new ResultData(resultMap); | |||
| } | |||
| @ApiOperation("获取当前用户信息") | |||
| @GetMapping("/userinfo") | |||
| public ResultData getUserInfo() { | |||
| WxCUser user = getCUser(); | |||
| return new ResultData(user); | |||
| } | |||
| } | |||
| @@ -0,0 +1,78 @@ | |||
| package com.iformall.interceptor; | |||
| import com.alibaba.fastjson.JSONObject; | |||
| import com.iformall.annotation.AuthIgnore; | |||
| import com.iformall.annotation.TenantIgnore; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.common.TenantThreadLocal; | |||
| import com.iformall.domain.po.WxCUser; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.service.cache.WxCUserCache; | |||
| import com.iformall.utils.Constant; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.beans.factory.annotation.Qualifier; | |||
| import org.springframework.data.redis.core.RedisTemplate; | |||
| import org.springframework.stereotype.Component; | |||
| import org.springframework.web.method.HandlerMethod; | |||
| import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; | |||
| import javax.servlet.http.HttpServletRequest; | |||
| import javax.servlet.http.HttpServletResponse; | |||
| /** | |||
| * 权限(Token)验证 | |||
| * @author stormeye.wu | |||
| * @email wuguoqiang@iformall.com | |||
| * @date 2017-03-23 15:38 | |||
| */ | |||
| @Component | |||
| public class AuthorizationInterceptor extends HandlerInterceptorAdapter { | |||
| @Autowired | |||
| @Qualifier("objectCommonRedisTemplate") | |||
| RedisTemplate<String, Object> redisTemplate; | |||
| @Override | |||
| public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { | |||
| System.out.println(" requesturi......"+request.getRequestURL()); | |||
| AuthIgnore annotation; | |||
| if(handler instanceof HandlerMethod) { | |||
| annotation = ((HandlerMethod) handler).getMethodAnnotation(AuthIgnore.class); | |||
| }else{ | |||
| return true; | |||
| } | |||
| //如果有@IgnoreAuth注解,则不验证token | |||
| if(annotation != null){ | |||
| return true; | |||
| } | |||
| //从header中获取token | |||
| String token = request.getHeader("token"); | |||
| //如果header中不存在token,则从参数中获取token | |||
| if(StringUtils.isBlank(token)){ | |||
| token = request.getParameter("token"); | |||
| } | |||
| //token为空 | |||
| if(StringUtils.isBlank(token) || "null".equals(token) || "undefined".equals(token)){ | |||
| throw new MallinkException(ErrorCode.UNLOGIN); | |||
| } | |||
| WxCUser wxCUser = WxCUserCache.getCacheAppInfo(redisTemplate, Long.parseLong(token)); | |||
| if (null == wxCUser) { | |||
| throw new MallinkException(ErrorCode.UNLOGIN); | |||
| } | |||
| request.setAttribute(Constant.TENANT_ID, wxCUser.getTenantId()); | |||
| request.setAttribute(Constant.PARENT_TENANT_ID, wxCUser.getParentTenantId()); | |||
| request.setAttribute(Constant.currentUser, wxCUser); | |||
| return true; | |||
| } | |||
| } | |||
| @@ -0,0 +1,76 @@ | |||
| package com.iformall.interceptor; | |||
| import javax.servlet.ReadListener; | |||
| import javax.servlet.ServletInputStream; | |||
| import javax.servlet.http.HttpServletRequest; | |||
| import java.io.*; | |||
| public class BodyReaderHttpServletRequestWrapper extends XssHttpServletRequestWrapper { | |||
| private final String body; | |||
| public BodyReaderHttpServletRequestWrapper(HttpServletRequest request) throws IOException { | |||
| super(request); | |||
| StringBuilder stringBuilder = new StringBuilder(); | |||
| BufferedReader bufferedReader = null; | |||
| try { | |||
| InputStream inputStream = request.getInputStream(); | |||
| if (inputStream != null) { | |||
| bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"utf-8")); | |||
| char[] charBuffer = new char[1024]; | |||
| int bytesRead = -1; | |||
| while ((bytesRead = bufferedReader.read(charBuffer)) > 0) { | |||
| stringBuilder.append(charBuffer, 0, bytesRead); | |||
| } | |||
| } else { | |||
| stringBuilder.append(""); | |||
| } | |||
| } catch (IOException ex) { | |||
| throw ex; | |||
| } finally { | |||
| if (bufferedReader != null) { | |||
| try { | |||
| bufferedReader.close(); | |||
| } catch (IOException ex) { | |||
| throw ex; | |||
| } | |||
| } | |||
| } | |||
| body = stringBuilder.toString(); | |||
| } | |||
| @Override | |||
| public ServletInputStream getInputStream() throws IOException { | |||
| final ByteArrayInputStream byteArrayInputStream = | |||
| new ByteArrayInputStream(body.getBytes("utf-8")); | |||
| return new ServletInputStream() { | |||
| @Override | |||
| public boolean isFinished() { | |||
| return false; | |||
| } | |||
| @Override | |||
| public boolean isReady() { | |||
| return false; | |||
| } | |||
| @Override | |||
| public void setReadListener(ReadListener readListener) { | |||
| } | |||
| @Override | |||
| public int read() throws IOException { | |||
| return byteArrayInputStream.read(); | |||
| } | |||
| }; | |||
| } | |||
| @Override | |||
| public BufferedReader getReader() throws IOException { | |||
| return new BufferedReader(new InputStreamReader(this.getInputStream())); | |||
| } | |||
| public String getBody() { | |||
| return this.body; | |||
| } | |||
| } | |||
| @@ -0,0 +1,70 @@ | |||
| package com.iformall.interceptor; | |||
| import com.iformall.utils.UrlCheck; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import javax.servlet.*; | |||
| import javax.servlet.http.HttpServletRequest; | |||
| import java.io.IOException; | |||
| public class HttpServletRequestWrapperFilter implements Filter { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| // 多个跨域域名设置 | |||
| // public static final String[] ALLOW_DOMAIN = {"https://admin.malls.iformall.com"}; | |||
| @Override | |||
| public void init(FilterConfig filterConfig) throws ServletException { | |||
| } | |||
| @Override | |||
| public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) | |||
| throws IOException, ServletException { | |||
| logger.debug("doFilter start"); | |||
| long start = System.currentTimeMillis(); | |||
| ServletRequest requestWrapper = null; | |||
| /* // 跨域访问 | |||
| HttpServletRequest req = (HttpServletRequest) request; | |||
| HttpServletResponse res = (HttpServletResponse) response; | |||
| String originHeader = req.getHeader("Origin"); | |||
| if (Arrays.asList(ALLOW_DOMAIN).contains(originHeader)) { | |||
| //通过在响应 header 中设置 ‘*’ 来允许来自所有域的跨域请求访问。 | |||
| res.setHeader("Access-Control-Allow-Origin", originHeader); | |||
| //通过对 Credentials 参数的设置,就可以保持跨域 Ajax 时的 Cookie | |||
| //设置了Allow-Credentials,Allow-Origin就不能为*,需要指明具体的url域 | |||
| res.setHeader("Access-Control-Allow-Credentials", "true"); | |||
| //请求方式 | |||
| res.setHeader("Access-Control-Allow-Methods", "*"); | |||
| //(预检请求)的返回结果(即 Access-Control-Allow-Methods 和Access-Control-Allow-Headers 提供的信息) 可以被缓存多久 | |||
| res.setHeader("Access-Control-Max-Age", "86400"); | |||
| //首部字段用于预检请求的响应。其指明了实际请求中允许携带的首部字段 | |||
| //res.setHeader("Access-Control-Allow-Headers", "*"); | |||
| res.setHeader("Access-Control-Allow-Headers", | |||
| "Timestamp,Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token,Access-Control-Allow-Headers"); | |||
| } | |||
| */ | |||
| //sql,xss过滤 | |||
| XssHttpServletRequestWrapper xssHttpServletRequestWrapper = new XssHttpServletRequestWrapper((HttpServletRequest)request); | |||
| String url = ""; | |||
| if (request instanceof HttpServletRequest) { | |||
| url = ((HttpServletRequest) request).getRequestURI(); | |||
| if (!UrlCheck.checkUrl(url)) { | |||
| requestWrapper = new BodyReaderHttpServletRequestWrapper((HttpServletRequest) request); | |||
| } | |||
| } | |||
| if (null == requestWrapper) { | |||
| chain.doFilter(xssHttpServletRequestWrapper, response); | |||
| } else { | |||
| chain.doFilter(requestWrapper, response); | |||
| } | |||
| logger.debug("doFilter end: " + url + " "+ (System.currentTimeMillis()- start) + "ms"); | |||
| } | |||
| @Override | |||
| public void destroy() { | |||
| } | |||
| } | |||
| @@ -0,0 +1,123 @@ | |||
| package com.iformall.interceptor; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.utils.HashUtil; | |||
| import com.iformall.utils.IPUtil; | |||
| import com.iformall.utils.UrlCheck; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.dao.DataAccessException; | |||
| import org.springframework.data.redis.connection.RedisConnection; | |||
| import org.springframework.data.redis.core.RedisCallback; | |||
| import org.springframework.data.redis.core.RedisTemplate; | |||
| import org.springframework.data.redis.serializer.RedisSerializer; | |||
| import org.springframework.stereotype.Component; | |||
| import org.springframework.web.servlet.ModelAndView; | |||
| import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; | |||
| import redis.clients.jedis.Protocol; | |||
| import redis.clients.jedis.util.SafeEncoder; | |||
| import javax.annotation.Resource; | |||
| import javax.servlet.http.HttpServletRequest; | |||
| import javax.servlet.http.HttpServletResponse; | |||
| import java.io.ByteArrayOutputStream; | |||
| import java.io.InputStream; | |||
| import java.nio.charset.Charset; | |||
| import java.util.Enumeration; | |||
| import java.util.concurrent.TimeUnit; | |||
| /** | |||
| * 幂等检查 | |||
| * @author stormeye.wu | |||
| * @email wuguoqiang@iformall.com | |||
| * @date 2017-03-23 15:38 | |||
| */ | |||
| @Component | |||
| public class RequestInterceptor extends HandlerInterceptorAdapter { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Resource | |||
| private RedisTemplate<String, String> redisTemplate; | |||
| @Override | |||
| public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { | |||
| logger.debug("preHandle start"); | |||
| if ("GET".equalsIgnoreCase(request.getMethod())) { | |||
| // 获取不检查幂等 | |||
| logger.debug("preHandle start 1"); | |||
| return true; | |||
| } | |||
| String ipaddress = IPUtil.getIpAddr(request); | |||
| String url = request.getRequestURL().toString(); | |||
| if (UrlCheck.checkUrl(url)) { | |||
| // pvlog不检查幂等 | |||
| // awsFileUpload不检查幂等 | |||
| // stopFee | |||
| return true; | |||
| } | |||
| StringBuilder sb = new StringBuilder(); | |||
| sb.append(url); | |||
| sb.append("method=").append(request.getMethod()).append("&"); | |||
| sb.append("ip=").append(ipaddress).append("&"); | |||
| final Enumeration parameterNames = request.getParameterNames(); | |||
| while (parameterNames.hasMoreElements()) { | |||
| String key = (String) parameterNames.nextElement(); | |||
| if(key.equalsIgnoreCase("ran")) // 跳过ran | |||
| continue; | |||
| String parameter = request.getParameter(key); | |||
| sb.append(key).append("=").append(parameter).append("&"); | |||
| } | |||
| InputStream inStream = request.getInputStream(); | |||
| ByteArrayOutputStream outSteam = new ByteArrayOutputStream(); | |||
| byte[] buffer = new byte[1024]; | |||
| int len = 0; | |||
| while ((len = inStream.read(buffer)) != -1) { | |||
| outSteam.write(buffer, 0, len); | |||
| } | |||
| String resultBody = new String(outSteam.toByteArray(), Charset.forName("UTF-8")); | |||
| inStream.close(); | |||
| outSteam.close(); | |||
| sb.append(resultBody); | |||
| String key = "request:C:" + HashUtil.md5(sb.toString()); | |||
| Boolean isAbsent = redisTemplate.<Boolean>execute(new RedisCallback<Boolean>() { | |||
| @Override | |||
| public Boolean doInRedis(RedisConnection connection) throws DataAccessException { | |||
| RedisSerializer valueSerializer = redisTemplate.getValueSerializer(); | |||
| RedisSerializer keySerializer = redisTemplate.getKeySerializer(); | |||
| Object obj = connection.execute("set", keySerializer.serialize(key), | |||
| valueSerializer.serialize(key), | |||
| SafeEncoder.encode("NX"), | |||
| SafeEncoder.encode("EX"), | |||
| Protocol.toByteArray(3)); // 3s | |||
| return obj != null; | |||
| } | |||
| }); | |||
| if (isAbsent) { | |||
| logger.info(key + ": 第一次提交"); | |||
| logger.debug("preHandle start 2"); | |||
| return true; | |||
| } | |||
| logger.info(key + ": 第二次提交"); | |||
| logger.debug("preHandle start 3"); | |||
| throw new MallinkException(ErrorCode.SERVER_ERROR.getCode(),"请勿重复提交"); | |||
| } | |||
| @Override | |||
| public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { | |||
| logger.debug("postHandle"); | |||
| } | |||
| @Override | |||
| public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { | |||
| logger.debug("afterCompletion:"); | |||
| } | |||
| } | |||
| @@ -0,0 +1,71 @@ | |||
| package com.iformall.interceptor; | |||
| import java.io.BufferedReader; | |||
| import java.io.IOException; | |||
| import javax.servlet.http.HttpServletRequest; | |||
| import org.aspectj.lang.ProceedingJoinPoint; | |||
| import org.aspectj.lang.annotation.Around; | |||
| import org.aspectj.lang.annotation.Aspect; | |||
| import org.aspectj.lang.annotation.Pointcut; | |||
| import org.springframework.context.annotation.Configuration; | |||
| import org.springframework.web.context.request.RequestAttributes; | |||
| import org.springframework.web.context.request.RequestContextHolder; | |||
| import org.springframework.web.context.request.ServletRequestAttributes; | |||
| import com.alibaba.fastjson.JSON; | |||
| import lombok.extern.slf4j.Slf4j; | |||
| /** | |||
| * 测试所有controler请求返回信息输出 | |||
| * @author alascor | |||
| * | |||
| */ | |||
| //@Aspect | |||
| //@Configuration | |||
| @Slf4j | |||
| public class TestControllerReturnAspect { | |||
| // @Pointcut("execution(* com.iformall.controller.*Controller.*(..))") | |||
| public void excudeService() { | |||
| } | |||
| // @Around("excudeService()") | |||
| public Object doAround(ProceedingJoinPoint pjp) throws Throwable { | |||
| RequestAttributes ra = RequestContextHolder.getRequestAttributes(); | |||
| ServletRequestAttributes sra = (ServletRequestAttributes) ra; | |||
| HttpServletRequest request = sra.getRequest(); | |||
| String method = request.getMethod(); | |||
| String uri = request.getRequestURI(); | |||
| String paraString = JSON.toJSONString(request.getParameterMap()); | |||
| String requestBody = getBodyRequest(request); | |||
| //log.info("***************************************************"); | |||
| //log.info("请求开始, URI: {}, method: {}, params: {}", uri, method, paraString); | |||
| // result的值就是被拦截方法的返回值 | |||
| Object result = pjp.proceed(); | |||
| log.info("开发调试请求结果日志,生产请关闭!!!!>>>>>>>>请求结束,URI: {}, method: {}, params: {},requestBody:{}. 返回值:{} " ,uri, method, paraString,requestBody, JSON.toJSONString(result)); | |||
| return result; | |||
| } | |||
| private String getBodyRequest(HttpServletRequest request) throws IOException { | |||
| // 直接从HttpServletRequest的Reader流中获取RequestBody | |||
| BufferedReader reader = request.getReader(); | |||
| StringBuilder builder = new StringBuilder(); | |||
| String line = reader.readLine(); | |||
| while(line != null){ | |||
| builder.append(line); | |||
| line = reader.readLine(); | |||
| } | |||
| reader.close(); | |||
| String reqBody = builder.toString(); | |||
| return reqBody; | |||
| } | |||
| } | |||
| @@ -0,0 +1,72 @@ | |||
| package com.iformall.interceptor; | |||
| import com.iformall.utils.IPUtil; | |||
| import lombok.Data; | |||
| import org.aspectj.lang.JoinPoint; | |||
| import org.aspectj.lang.annotation.AfterReturning; | |||
| import org.aspectj.lang.annotation.Aspect; | |||
| import org.aspectj.lang.annotation.Before; | |||
| import org.aspectj.lang.annotation.Pointcut; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.stereotype.Component; | |||
| import org.springframework.web.context.request.RequestContextHolder; | |||
| import org.springframework.web.context.request.ServletRequestAttributes; | |||
| import javax.servlet.http.HttpServletRequest; | |||
| import java.util.Arrays; | |||
| @Aspect | |||
| @Component | |||
| public class WebLogAspect { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Data | |||
| private class MethodInfo { | |||
| Long startTime; | |||
| String url; | |||
| String ip; | |||
| String method; | |||
| String classMethod; | |||
| } | |||
| ThreadLocal<MethodInfo> startInfo = new ThreadLocal<>(); | |||
| @Pointcut("execution(public * com.iformall.controller..*.*(..))") | |||
| public void webLog() {} | |||
| @Before("webLog()") | |||
| public void doBefore(JoinPoint joinPoint) throws Throwable { | |||
| logger.debug("aspect start"); | |||
| // 接收到请求,记录请求内容 | |||
| ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); | |||
| HttpServletRequest request = attributes.getRequest(); | |||
| MethodInfo info = new MethodInfo(); | |||
| info.setUrl(request.getRequestURL().toString()); | |||
| info.setStartTime(System.currentTimeMillis()); | |||
| info.setIp(IPUtil.getIpAddr(request)); | |||
| info.setMethod(request.getMethod()); | |||
| info.setClassMethod(joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName()); | |||
| startInfo.set(info); | |||
| logger.debug("aspect start ..."); | |||
| } | |||
| @AfterReturning(returning = "ret", pointcut = "webLog()") | |||
| public void doAfterReturning(Object ret) throws Throwable { | |||
| logger.debug("aspect after"); | |||
| // 处理完请求,返回内容 | |||
| MethodInfo info = startInfo.get(); | |||
| StringBuilder sb = new StringBuilder(); | |||
| sb.append("URL: ").append(info.getUrl()) | |||
| .append(", METHOD: ").append(info.getMethod()) | |||
| .append(", DO: ").append(info.getClassMethod()) | |||
| .append(", IP: ").append(info.getIp()) | |||
| .append(", SPEND TIME: ").append(System.currentTimeMillis() -info.getStartTime()).append("ms"); | |||
| logger.info(sb.toString()); | |||
| logger.debug("aspect after .."); | |||
| } | |||
| } | |||
| @@ -0,0 +1,125 @@ | |||
| package com.iformall.interceptor; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.util.StringUtils; | |||
| import javax.servlet.http.HttpServletRequest; | |||
| import javax.servlet.http.HttpServletRequestWrapper; | |||
| import java.util.HashMap; | |||
| import java.util.HashSet; | |||
| import java.util.Map; | |||
| import java.util.Set; | |||
| /** | |||
| * 防止sql注入,xss攻击 | |||
| * 前端可以对输入信息做预处理,后端也可以做处理。 | |||
| */ | |||
| public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { | |||
| private final Logger log = LoggerFactory.getLogger(getClass()); | |||
| private static String key = "and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|;|or|-|+"; | |||
| private static Set<String> notAllowedKeyWords = new HashSet<String>(0); | |||
| private static String replacedString="INVALID"; | |||
| static { | |||
| String keyStr[] = key.split("\\|"); | |||
| for (String str : keyStr) { | |||
| notAllowedKeyWords.add(str); | |||
| } | |||
| } | |||
| private String currentUrl; | |||
| public XssHttpServletRequestWrapper(HttpServletRequest servletRequest) { | |||
| super(servletRequest); | |||
| currentUrl = servletRequest.getRequestURI(); | |||
| } | |||
| /**覆盖getParameter方法,将参数名和参数值都做xss过滤。 | |||
| * 如果需要获得原始的值,则通过super.getParameterValues(name)来获取 | |||
| * getParameterNames,getParameterValues和getParameterMap也可能需要覆盖 | |||
| */ | |||
| @Override | |||
| public String getParameter(String parameter) { | |||
| String value = super.getParameter(parameter); | |||
| if (value == null) { | |||
| return null; | |||
| } | |||
| return cleanXSS(value); | |||
| } | |||
| @Override | |||
| public String[] getParameterValues(String parameter) { | |||
| String[] values = super.getParameterValues(parameter); | |||
| if (values == null) { | |||
| return null; | |||
| } | |||
| int count = values.length; | |||
| String[] encodedValues = new String[count]; | |||
| for (int i = 0; i < count; i++) { | |||
| encodedValues[i] = cleanXSS(values[i]); | |||
| } | |||
| return encodedValues; | |||
| } | |||
| @Override | |||
| public Map<String, String[]> getParameterMap(){ | |||
| Map<String, String[]> values=super.getParameterMap(); | |||
| if (values == null) { | |||
| return null; | |||
| } | |||
| Map<String, String[]> result=new HashMap<>(); | |||
| for(String key:values.keySet()){ | |||
| String encodedKey=cleanXSS(key); | |||
| int count=values.get(key).length; | |||
| String[] encodedValues = new String[count]; | |||
| for (int i = 0; i < count; i++){ | |||
| encodedValues[i]=cleanXSS(values.get(key)[i]); | |||
| } | |||
| result.put(encodedKey,encodedValues); | |||
| } | |||
| return result; | |||
| } | |||
| /** | |||
| * 覆盖getHeader方法,将参数名和参数值都做xss过滤。 | |||
| * 如果需要获得原始的值,则通过super.getHeaders(name)来获取 | |||
| * getHeaderNames 也可能需要覆盖 | |||
| */ | |||
| @Override | |||
| public String getHeader(String name) { | |||
| if(name.equalsIgnoreCase("user-agent")) { | |||
| return super.getHeader(name); | |||
| } | |||
| String value = super.getHeader(name); | |||
| if (value == null) { | |||
| return null; | |||
| } | |||
| return cleanXSS(value); | |||
| } | |||
| private String cleanXSS(String valueP) { | |||
| // You'll need to remove the spaces from the html entities below | |||
| String value = valueP.replaceAll("<", "<").replaceAll(">", ">"); | |||
| value = value.replaceAll("<", "& lt;").replaceAll(">", "& gt;"); | |||
| value = value.replaceAll("\\(", "& #40;").replaceAll("\\)", "& #41;"); | |||
| value = value.replaceAll("'", "& #39;"); | |||
| value = value.replaceAll("eval\\((.*)\\)", ""); | |||
| value = value.replaceAll("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']", "\"\""); | |||
| value = value.replaceAll("script", ""); | |||
| value = cleanSqlKeyWords(value); | |||
| return value; | |||
| } | |||
| private String cleanSqlKeyWords(String value) { | |||
| String paramValue = value; | |||
| for (String keyword : notAllowedKeyWords) { | |||
| if (paramValue.length() > keyword.length() + 4 | |||
| && (paramValue.contains(" "+keyword)||paramValue.contains(keyword+" ")||paramValue.contains(" "+keyword+" "))) { | |||
| paramValue = StringUtils.replace(paramValue, keyword, replacedString); | |||
| log.error(this.currentUrl + "已被过滤,因为参数中包含不允许sql的关键词(" + keyword | |||
| + ")"+";参数:"+value+";过滤后的参数:"+paramValue); | |||
| } | |||
| } | |||
| return paramValue; | |||
| } | |||
| } | |||
| @@ -0,0 +1,186 @@ | |||
| package com.iformall.tenant; | |||
| import com.iformall.common.TenantThreadLocal; | |||
| import com.iformall.plugin.autoTenantId.TenantInfo; | |||
| import com.iformall.utils.Constant; | |||
| import org.apache.ibatis.mapping.MappedStatement; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.web.context.request.RequestContextHolder; | |||
| import org.springframework.web.context.request.ServletRequestAttributes; | |||
| import java.util.Arrays; | |||
| import java.util.List; | |||
| import javax.servlet.http.HttpServletRequest; | |||
| public class TenantInfoImpl implements TenantInfo { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| private static String[] filterTables = new String[] { | |||
| "wx_mall", | |||
| "wx_mall_dispose", | |||
| "wx_appinfo", | |||
| "mall_permission", | |||
| "mall_sale_type", | |||
| "mall_user_role", | |||
| "wx_brand", | |||
| "wx_channel", | |||
| "wx_business", | |||
| "wx_coupon_type", | |||
| "wx_game_template", | |||
| "wx_group", | |||
| "wx_mall_apply", | |||
| "wx_bank_province_city", | |||
| "wx_tags", | |||
| "wx_tags_group", | |||
| "wx_tags_type", | |||
| "wx_user_channel", | |||
| "wx_score_rules", | |||
| "wx_level_config", | |||
| "wx_c_user_basic_info", | |||
| "user_basic_info_address", | |||
| "mall_coo_user_info", | |||
| "wx_c_user_basic_child", | |||
| "wx_c_user_basic_sign", | |||
| "wx_credit_history", | |||
| "wx_score_history", | |||
| "wx_c_user_tags", | |||
| "wx_weapp_ext_set", | |||
| "wx_msg_validationcode_model", | |||
| "wx_component_verify_ticket", | |||
| "wx_opinion", | |||
| "wx_question_oneself", | |||
| "wx_question_oneself_log", | |||
| "wx_question_oneself_topic", | |||
| "wx_question_oneself_user", | |||
| "sys_config", | |||
| "wx_theme_mall", | |||
| "wx_miniapp_theme", | |||
| "wx_customize_module", | |||
| "fengniao_map_config", | |||
| "wx_c_user", | |||
| "tt_c_user", | |||
| "tt_buser", | |||
| "wx_buser", | |||
| "wx_merchant_b_user", | |||
| "wx_user_visit", | |||
| "tt_goods_category", | |||
| "tt_merchant_poi", | |||
| }; | |||
| private static String[] filterSubTables = new String[] { | |||
| "wx_mall", | |||
| "wx_mall_dispose", | |||
| "wx_appinfo", | |||
| "wx_authorizer_info", | |||
| "wx_brand", | |||
| "wx_c_user", | |||
| "tt_c_user", | |||
| "tt_buser", | |||
| "wx_buser", | |||
| "wx_merchant_b_user", | |||
| "wx_user_visit", | |||
| "wx_c_user_basic_info", | |||
| "user_basic_info_address", | |||
| "mall_coo_user_info", | |||
| "wx_c_user_basic_child", | |||
| "wx_c_user_basic_sign", | |||
| "wx_c_user_car", | |||
| "wx_c_user_from_b", | |||
| "wx_c_user_tags", | |||
| "wx_cuser_floating_layer", | |||
| "wx_floating_layer", | |||
| "wx_question", | |||
| "wx_question_config", | |||
| "wx_question_log", | |||
| "wx_user_visit", | |||
| "wx_level_config", | |||
| "wx_score_rules", | |||
| "view_coupon_data", | |||
| "view_touch_user", | |||
| "wx_weapp_audit_status", | |||
| "wx_weapp_code_status", | |||
| "wx_weapp_release_status", | |||
| "mem_coupon_from_dsp", | |||
| "wx_component_verify_ticket", | |||
| "wx_opinion", | |||
| "wx_question_oneself", | |||
| "wx_question_oneself_log", | |||
| "wx_question_oneself_topic", | |||
| "wx_question_oneself_user", | |||
| "sys_config", | |||
| "wx_theme_mall", | |||
| "wx_miniapp_theme", | |||
| "wx_customize_module", | |||
| "fengniao_map_config", | |||
| "tt_goods_category", | |||
| "tt_merchant_poi", | |||
| }; | |||
| @Override | |||
| public String getTenantId() { | |||
| String tenantId = null; | |||
| try { | |||
| //HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
| //tenantId = (String) request.getAttribute(Constant.TENANT_ID); | |||
| tenantId = TenantThreadLocal.getTenantId(); | |||
| return tenantId; | |||
| } catch (Exception e) { | |||
| logger.error(e.getMessage()); | |||
| } | |||
| return tenantId; | |||
| } | |||
| @Override | |||
| public String getParentTenantId() { | |||
| String parentTenantId = null; | |||
| try { | |||
| //HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||
| //parentTenantId = (String) request.getAttribute(Constant.PARENT_TENANT_ID); | |||
| parentTenantId = TenantThreadLocal.getParentTenantId(); | |||
| return parentTenantId; | |||
| } catch (Exception e) { | |||
| logger.error(e.getMessage()); | |||
| } | |||
| return parentTenantId; | |||
| } | |||
| @Override | |||
| public boolean doTableFilter(String tableName) { | |||
| List<String> list = filterTables(); | |||
| if (list.contains(tableName)) { | |||
| return true; | |||
| } | |||
| return false; | |||
| } | |||
| @Override | |||
| public boolean doTableFilterSub(String tableName) { | |||
| List<String> list = filterSubTables(); | |||
| if (list.contains(tableName)) { | |||
| return true; | |||
| } | |||
| return false; | |||
| } | |||
| @Override | |||
| public boolean doMappedStatementFIlter(MappedStatement ms) { | |||
| if ("com.iformall.mapper.WxCUserMapper.getByToken".equals(ms.getId())) | |||
| return true; | |||
| if ("com.iformall.mapper.WxCouponActionLogMapper.getCountByUserAndCoupon".equals(ms.getId())) | |||
| return true; | |||
| return false; | |||
| } | |||
| @Override | |||
| public List<String> filterTables() { | |||
| return Arrays.asList(filterTables); | |||
| } | |||
| @Override | |||
| public List<String> filterSubTables() { | |||
| return Arrays.asList(filterSubTables); | |||
| } | |||
| } | |||
| @@ -0,0 +1,175 @@ | |||
| package com.iformall.utils; | |||
| import net.sourceforge.pinyin4j.PinyinHelper; | |||
| import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; | |||
| import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; | |||
| import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; | |||
| import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; | |||
| import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.util.ResourceUtils; | |||
| import javax.imageio.ImageIO; | |||
| import java.awt.*; | |||
| import java.awt.image.BufferedImage; | |||
| import java.io.ByteArrayInputStream; | |||
| import java.io.ByteArrayOutputStream; | |||
| import java.io.File; | |||
| import java.io.InputStream; | |||
| import java.time.LocalDateTime; | |||
| import java.time.format.DateTimeFormatter; | |||
| import java.util.Locale; | |||
| public class ImgIdeaUtil { | |||
| private static final Logger logger = LoggerFactory.getLogger(ImgIdeaUtil.class); | |||
| //模板图片 | |||
| private static final String imgTempPath = "imgTemp/gertificate.jpg"; | |||
| //字体路径 | |||
| private static final String fontPath = "opt/HWLS.TTF"; | |||
| /** | |||
| * 生成图片证书 | |||
| * @return | |||
| */ | |||
| public static byte[] imgGertificate(String name, String englishName, LocalDateTime date){ | |||
| if(StringUtils.isBlank(name)){ | |||
| logger.error("名字为空,无法生成证书"); | |||
| return null; | |||
| } | |||
| if(name.length() == 2){ | |||
| name = name.replaceAll("(\\S)", "$0 "); | |||
| } | |||
| if(StringUtils.isBlank(englishName)){ | |||
| englishName = getUpEname(name); | |||
| } | |||
| if(date == null){ | |||
| date = LocalDateTime.now(); | |||
| } | |||
| DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dMMM yyyy", Locale.UK); | |||
| String dateFormat = date.format(formatter); | |||
| try { | |||
| InputStream backImgUrl = ClassLoader.getSystemResourceAsStream(imgTempPath); | |||
| //InputStream backImgUrl = ImgIdeaUtil.class.getClassLoader().getResourceAsStream(imgTempPath); | |||
| Font font = Font.createFont(Font.TRUETYPE_FONT, ResourceUtils.getFile("classpath:"+fontPath)); | |||
| BufferedImage backImg = ImageIO.read(backImgUrl); | |||
| Graphics g = backImg.getGraphics(); | |||
| //图片加中文名 | |||
| Font fTxtBottomName = font.deriveFont(Font.PLAIN, 170); | |||
| //Font fTxtBottomName = new Font("华文隶书", Font.PLAIN, 170); | |||
| FontMetrics metricsName = g.getFontMetrics(fTxtBottomName); | |||
| int xName = (backImg.getWidth() - metricsName.stringWidth(name)) / 2; | |||
| Color myColorTxtBottomName = Color.BLACK; //颜色 | |||
| g.setColor(myColorTxtBottomName); | |||
| g.setFont(fTxtBottomName); | |||
| g.drawString(name, xName , 1150);//g.drawString(文字, x 位置, y 位置); | |||
| //图片加英文名 | |||
| Font fTxtBottomEname = font.deriveFont(Font.PLAIN, 120); | |||
| //Font fTxtBottomEname = new Font("华文隶书", Font.PLAIN, 120); | |||
| FontMetrics metricsEname = g.getFontMetrics(fTxtBottomEname); | |||
| int xEname = (backImg.getWidth() - metricsEname.stringWidth(englishName)) / 2; | |||
| Color myColorTxtBottomEname = Color.BLACK; | |||
| g.setColor(myColorTxtBottomEname); | |||
| g.setFont(fTxtBottomEname); | |||
| g.drawString(englishName, xEname, 1300); | |||
| //图片加日期 | |||
| Font fTxtBottomDate = font.deriveFont(Font.PLAIN, 90); | |||
| //Font fTxtBottomDate = new Font("华文隶书", Font.PLAIN, 90); | |||
| Color myColorTxtBottomDate = Color.BLACK; | |||
| g.setColor(myColorTxtBottomDate); | |||
| g.setFont(fTxtBottomDate); | |||
| g.drawString(dateFormat, 440, 2100); | |||
| //调这个方法就是开始这个整合 (可以多张图片,多个文字整合成一张图片,只有把他们放在这方法里面就行) | |||
| g.dispose(); | |||
| ByteArrayOutputStream out = new ByteArrayOutputStream(); | |||
| ImageIO.write(backImg, "png", out); | |||
| return out.toByteArray(); | |||
| } catch (Exception e) { | |||
| e.printStackTrace(); | |||
| logger.error("生成证书异常", e.getMessage()); | |||
| } | |||
| return null; | |||
| } | |||
| /** | |||
| * //姓、名的第一个字母需要为大写 | |||
| * @param name | |||
| * @return | |||
| */ | |||
| public static String getUpEname(String name) { | |||
| char[] strs = name.toCharArray(); | |||
| String newname = null; | |||
| if (strs.length == 2) { | |||
| newname = toUpCase(getEname("" + strs[0])) + " " + toUpCase(getEname("" + strs[1])); | |||
| } else if (strs.length == 3){ | |||
| newname = toUpCase(getEname("" + strs[0])) + " " | |||
| + toUpCase(getEname("" + strs[1] + strs[2])); | |||
| }else if (strs.length == 4){ | |||
| newname = toUpCase(getEname("" + strs[0] + strs[1])) + " " | |||
| + toUpCase(getEname("" + strs[2] + strs[3])); | |||
| } else{ | |||
| newname = toUpCase(getEname(name)); | |||
| } | |||
| return newname; | |||
| } | |||
| /** | |||
| * //将中文转换为英文 | |||
| * @param name | |||
| * @return | |||
| */ | |||
| public static String getEname(String name){ | |||
| HanyuPinyinOutputFormat pyFormat = new HanyuPinyinOutputFormat(); | |||
| pyFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); | |||
| pyFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); | |||
| pyFormat.setVCharType(HanyuPinyinVCharType.WITH_V); | |||
| String s = ""; | |||
| try { | |||
| s = PinyinHelper.toHanyuPinyinString(name, pyFormat, ""); | |||
| } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) { | |||
| badHanyuPinyinOutputFormatCombination.printStackTrace(); | |||
| } | |||
| return s; | |||
| } | |||
| /** | |||
| * 首字母大写 | |||
| * @param str | |||
| * @return | |||
| */ | |||
| private static String toUpCase(String str) { | |||
| StringBuffer newstr = new StringBuffer(); | |||
| newstr.append((str.substring(0, 1)).toUpperCase()).append( | |||
| str.substring(1, str.length())); | |||
| return newstr.toString(); | |||
| } | |||
| // public static void main(String[] args) { | |||
| // String serverUploadImgUrl = "C:/Users/xiaohu/Desktop/img"; // 图片保存路径 | |||
| // try { | |||
| // byte[] bytes = imgGertificate("郑方元", null, null); | |||
| // ByteArrayInputStream bais = new ByteArrayInputStream(bytes); | |||
| // BufferedImage bi1 =ImageIO.read(bais); | |||
| // | |||
| // ImageIO.write(bi1, "png", new File(serverUploadImgUrl+"/0.png")); | |||
| // | |||
| // } catch (Exception e) { | |||
| // e.printStackTrace(); | |||
| // } | |||
| // System.out.println("结束"); | |||
| // } | |||
| } | |||
| @@ -0,0 +1,14 @@ | |||
| package com.iformall.utils; | |||
| /** | |||
| * @author gongbiao | |||
| */ | |||
| public class UrlCheck { | |||
| public static boolean checkUrl(String url) { | |||
| return url.contains("awsFileUpload") | |||
| || url.contains("awsFilesUpload") | |||
| || url.contains("getCarStopFee"); | |||
| } | |||
| } | |||
| @@ -0,0 +1,184 @@ | |||
| spring: | |||
| profiles: | |||
| #include: aliyunRocketMQ | |||
| include: rabbitMQ | |||
| # JDBC | |||
| datasource: | |||
| url: jdbc:mysql://101.200.130.134:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true | |||
| username: root | |||
| password: fm2020test | |||
| type: com.alibaba.druid.pool.DruidDataSource | |||
| driver-class-name: com.mysql.cj.jdbc.Driver | |||
| filters: stat | |||
| maxActive: 20 | |||
| initialSize: 1 | |||
| maxWait: 60000 | |||
| minIdle: 1 | |||
| timeBetweenEvictionRunsMillis: 28000 | |||
| minEvictableIdleTimeMillis: 28000 | |||
| validationQuery: select 'x' | |||
| testWhileIdle: true | |||
| testOnBorrow: false | |||
| testOnReturn: false | |||
| poolPreparedStatements: true | |||
| maxOpenPreparedStatements: 20 | |||
| #jackson: | |||
| #date-format: yyyy-MM-dd HH:mm:ss | |||
| # REDIS | |||
| redis: | |||
| host: 101.200.130.134 | |||
| port: 6379 | |||
| password: iF0rm@2l2ol9 | |||
| timeout: 3600 | |||
| expire: 1800 #30分钟 | |||
| database: 5 | |||
| jedis: | |||
| pool: | |||
| max-active: 200 | |||
| max-idle: 100 | |||
| max-wait: -1 | |||
| min-idle: 0 | |||
| # SMS | |||
| aliyun: | |||
| sms: | |||
| accessKeyId: LTAI4G7ixY4AhvM35F8o3W3V | |||
| accessKeySecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||
| product: Dysmsapi | |||
| domain: dysmsapi.aliyuncs.com | |||
| regionId: cn-hangzhou | |||
| dateFormat: yyyyMMdd | |||
| endpointName: cn-hangzhou | |||
| oss: | |||
| endpoint: oss-cn-beijing.aliyuncs.com | |||
| keyid: LTAI4G7ixY4AhvM35F8o3W3V | |||
| keysecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||
| bucketname: formall | |||
| filehost: malinkcapi | |||
| filedomain: https://formall.oss-accelerate.aliyuncs.com | |||
| mail: | |||
| host: smtp.exmail.qq.com | |||
| username: zhengfangyuan@iformall.com | |||
| password: 2hSeppFRaw7KZZyf # 授权密码 | |||
| properties: | |||
| mail: | |||
| smtp: | |||
| auth: true | |||
| starttls: | |||
| enable: true | |||
| socketFactory: | |||
| port: 465 | |||
| class: javax.net.ssl.SSLSocketFactory | |||
| # ROCKETMQ | |||
| rocketmq: | |||
| nameServer: 127.0.0.1:9876 | |||
| producer: | |||
| retry-times-when-send-async-failed: 0 | |||
| send-msg-timeout: 300000 | |||
| compress-msg-body-over-howmuch: 4096 | |||
| max-message-size: 4194304 | |||
| retry-another-broker-when-not-store-ok: false | |||
| retry-times-when-send-failed: 2 | |||
| # RABBITMQ | |||
| rabbitmq: | |||
| host: 101.200.130.134 | |||
| port: 5672 | |||
| username: fumao | |||
| password: f9l98 | |||
| publisher-confirms: true | |||
| publisher-returns: false | |||
| virtual-host: / | |||
| aliyunRocketmq: | |||
| accessKeyId: "LTAI4G7ixY4AhvM35F8o3W3V" | |||
| accessKeySecret: "VfWqGb83qIQrS9us45utskl8itd7ry" | |||
| groupId: "GID_P_1" | |||
| namesrvAddr: "http://MQ_INST_1796289517488555_Bcqaq2is.cn-beijing.mq-internal.aliyuncs.com:8080" | |||
| aws: | |||
| clientRegion: cn-northwest-1 | |||
| bucketName: iformall-net | |||
| access: ENC(3gx5ghDFBqGrEhO3Wf8aYmXsnwHO7Cj3HNKJGOeUj0o=) | |||
| secret: ENC(HVKIJwCJKVXLlUpGlQPwNqJOlnpxn4xYuy91SH0seTSm2uAttIQHvA49fXWWax90v5wloIk0QuU=) | |||
| #wechat: | |||
| # open: | |||
| # componentAppId: "wxdfc8fb4e62d6b52b" | |||
| # componentSecret: "98daa62b316dd6feabaad708327ce233" | |||
| # componentToken: "formall2018" | |||
| # componentAesKey: "htKq8EjBMPNndfZQK9JiFojFaqFwFpw42VfeWFtx7HN" | |||
| # redis: | |||
| # host: 101.201.103.81 | |||
| # port: 6379 | |||
| # password: ENC(xPFDlgd6v8zUhJMbcKc0KmmQiqs9qHtk) | |||
| # timeout: 3600 | |||
| # expire: 1800 #30分钟 | |||
| # database: 2 | |||
| # defaultExpiration: 2592000 # 默认生命周期30天 | |||
| # jedis: | |||
| # pool: | |||
| # max-active: 100 | |||
| # max-idle: 500 | |||
| # max-wait: -1 | |||
| # min-idle: 10 | |||
| wechat: | |||
| web: | |||
| appId: "wx091907dd0bfd3f6b" | |||
| secret: "2a2ca10738998b9ef92c1fe8a4d366a6" | |||
| url: "https://admintest.malls.iformall.com" | |||
| open: | |||
| componentAppId: wxdfc8fb4e62d6b52b | |||
| componentSecret: 98daa62b316dd6feabaad708327ce233 | |||
| componentToken: formall2018 | |||
| componentAesKey: htKq8EjBMPNndfZQK9JiFojFaqFwFpw42VfeWFtx7HN | |||
| redis: | |||
| host: 101.200.130.134 | |||
| port: 6379 | |||
| password: iF0rm@2l2ol9 | |||
| timeout: 3600 | |||
| expire: 1800 #30分钟 | |||
| database: 2 | |||
| defaultExpiration: 2592000 # 默认生命周期30天 | |||
| jedis: | |||
| pool: | |||
| max-active: 100 | |||
| max-idle: 100 | |||
| max-wait: -1 | |||
| min-idle: 10 | |||
| alipay: | |||
| open: | |||
| appId: 2021002137663024 | |||
| appPrivateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCUfymV5J73QQMG52PVIGUbowkloYCO4B7TQoKbrTZf2YeYsg/To/o4PiXPMNwEUfEUU8NYQ6WwNhCd2fa1ei8WFXJUf3bfgswtBk1aOmHLeY9yoXFxIKMTQ9RcobnmBzKQZlaAPMTSr7t1QtKZKPuc2gEHGRFYKO/ZuL8gIpnsVidVtmi52yd7hzao/pI3ThLA0lreg4L3rYP5ESQZRytxIPgUQ4KI11pZxFgbe+uy28AGDYIQscSIb+SWOHPYKLvOEqqepIZ8M18w/U0lZzpzepzi/V/llekvXJ6UEf1lzl7x/4UIA3WPN1B40+NzbD/OxEGTuM0UctOG6ZTd4Te9AgMBAAECggEAPYksnHbvARspu/SrRCh2fatkIPn6Ijrxyy3mnch7neCw9i/jqxpqmF/4nxFqO0gRlRDZBHyT7p+Y5zDpsW5+kLI2fJmNkzXKkmXoLBnBaOZo8WHBdtXFfjg/iltig9Y7t+cQtXd5QK2eCwuz5dA75FXa0ywqKdRdAGY0nYZ5LpwrHVU8RXheUDCJyhKNj2+W6lIaSKDxLZU3laO1oBrv1agcy7Crd5E2ndb8O3Enga+z7wSz2h7A1BasC/Yl/Ro0Y21wLCH3s/R6qA0Paq12+WEF+xdodM7SrP43CCTVFGbC1TfEOdanJfixop8QuYsIp7pHrL925+vP4eY9RfckgQKBgQDQqLdpDzzU7Ot/L9Vc/r8d4iwXXbX8+HwVFV4oBuausgFyv8eJJpfrI+IlEoB1ubJcPpJBFqfmeYTW6/v6ioFljJAlWfFvesUVt/HszBMIOsU0Bzt7ex6WlwKOagb0q0ZPA4T0OY0K0lg0loaaaR8ZTr4ivDymaGBtTBYhslpc7QKBgQC2MBznGEc5r2dhyENvdPOR20PnXQcevGnPdqSus8m0VmDcHE72RVcckcZtwczsb3NaLSqmjAcWTn51/VFmlvhB3F34FcFTPZGq6sj7fWK8HuFq7l7mu5OzYuVr73zy9ggsUuaw10IqvvwIVxszNAF0hiRnSGH3z27CoRmz3s+8EQKBgQCK3o7atBJ3X4rIJiypbL4DhIB1uJ+jUjk6yvLUTut+fufp1+tTw0S+cS5UIAEw2Lr1G4u5F/v8rwmTBJG6SC4gSLGyui6uVBYRA1BWmedcxchzfRDAeMt9y9kesUAZ3Fe5xIzbAeZ1ulKMBVZmM+pHrJlsgr0Wv0bV1xqvqITtbQKBgBIsIGXopQoa9dvqBtfyOW1eCprkS5aEQqWf9vM6Ga90QjsSU8n6xqKh48IE57TZtQ7UnIF6TCasc66/MsRh4KdpHLJnMR5lcMc0nhF/wz5ychehaTPol+X3wlyOyc7OPah2KG6ROhdbb3ZBggQMduyxiKYIsUTvmuOtAAxR+DSRAoGADtuDzGQDOJYWiO2uuP6FpA5IJaiwlSfu3xncJVfhO8SVr6VBJFg88igbIB3w6nk/sv7j9VTXqXre9HMvp1flxaaLsdxM4HcTSALS9q6t/ajaveqte6S5kAtWx0WW8C6PtgWXHbxcD7LXARSsKLoEl2JXXyUVS/m2l/RzHBQ8GJI= | |||
| appPublicKeyCertPath: /opt/iformall/service/alipay/appCertPublicKey_2021002137663024.crt | |||
| alipayCertPath: /opt/iformall/service/alipay/alipayCertPublicKey_RSA2.crt | |||
| alipayRootCertPath: /opt/iformall/service/alipay/alipayRootCert.crt | |||
| callback: https://callbacktest.malls.iformall.com/api/alipay/notify/callback | |||
| video: | |||
| aliyun: | |||
| accessKeyId: LTAI4G7ixY4AhvM35F8o3W3V | |||
| accessKeySecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||
| regionId: cn-beijing | |||
| jasypt: | |||
| encryptor: | |||
| password: oRqdnDbK5pj3eMmB | |||
| fm: | |||
| exception: true | |||
| exception_emails: xuxiaohu@iformall.com | |||
| deploy: 1 | |||
| open: true | |||
| upload_dir: /home/test/server/uploads/ | |||
| ocr_data: /root/ocr_data/ | |||
| videoType: aliyun | |||
| logging: | |||
| level: | |||
| com.iformall: debug | |||
| path: ./logs/c | |||
| @@ -0,0 +1,144 @@ | |||
| spring: | |||
| profiles: | |||
| include: aliyunRocketMQ | |||
| # JDBC | |||
| datasource: | |||
| url: jdbc:mysql://zc349w82qvn56ftl5e64-rw4rm.rwlb.rds.aliyuncs.com:3306/mallink?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false&useAffectedRows=true | |||
| username: ENC(nUefcxWYlMS/1cDxikIKwA==) | |||
| password: ENC(neToS+hzeFjgSFB/7UEl5qYnW2rUjrPq) | |||
| type: com.alibaba.druid.pool.DruidDataSource | |||
| driver-class-name: com.mysql.cj.jdbc.Driver | |||
| filters: stat | |||
| maxActive: 200 | |||
| initialSize: 1 | |||
| maxWait: 60000 | |||
| minIdle: 1 | |||
| timeBetweenEvictionRunsMillis: 28000 | |||
| minEvictableIdleTimeMillis: 28000 | |||
| validationQuery: select 'x' | |||
| testWhileIdle: true | |||
| testOnBorrow: false | |||
| testOnReturn: false | |||
| poolPreparedStatements: true | |||
| maxOpenPreparedStatements: 20 | |||
| # REDIS | |||
| redis: | |||
| host: r-2zeaglwf13qqmnllj5.redis.rds.aliyuncs.com | |||
| port: 6379 | |||
| password: mallone:iF0rm@2l2ol9 | |||
| timeout: 3600 | |||
| expire: 1800 #30分钟 | |||
| database: 1 | |||
| defaultExpiration: 2592000 # 默认生命周期30天 | |||
| jedis: | |||
| pool: | |||
| max-active: 100 | |||
| max-idle: 100 | |||
| max-wait: -1 | |||
| min-idle: 10 | |||
| # SMS | |||
| aliyun: | |||
| sms: | |||
| accessKeyId: LTAI4G7ixY4AhvM35F8o3W3V | |||
| accessKeySecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||
| product: Dysmsapi | |||
| domain: dysmsapi.aliyuncs.com | |||
| regionId: cn-hangzhou | |||
| dateFormat: yyyyMMdd | |||
| endpointName: cn-hangzhou | |||
| oss: | |||
| endpoint: oss-cn-beijing.aliyuncs.com | |||
| keyid: LTAI4G7ixY4AhvM35F8o3W3V | |||
| keysecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||
| bucketname: formall | |||
| filehost: malinkadmin | |||
| filedomain: https://formall.oss-accelerate.aliyuncs.com | |||
| mail: | |||
| host: smtp.exmail.qq.com | |||
| username: zhengfangyuan@iformall.com | |||
| password: 2hSeppFRaw7KZZyf # 授权密码 | |||
| properties: | |||
| mail: | |||
| smtp: | |||
| auth: true | |||
| starttls: | |||
| enable: true | |||
| socketFactory: | |||
| port: 465 | |||
| class: javax.net.ssl.SSLSocketFactory | |||
| # RABBITMQ | |||
| rabbitmq: | |||
| host: localhost | |||
| port: 5672 | |||
| username: ENC(lRmLd6EzgeY1RT5ktcHv9g==) | |||
| password: ENC(gBI8mCjr3OC0v57jcnSb660Ux7mW03K2oePgvohhg7w=) | |||
| publisher-confirms: true | |||
| publisher-returns: false | |||
| virtual-host: / | |||
| aliyunRocketmq: | |||
| accessKeyId: "LTAI4G7ixY4AhvM35F8o3W3V" | |||
| accessKeySecret: "VfWqGb83qIQrS9us45utskl8itd7ry" | |||
| groupId: "GID_P_1" | |||
| namesrvAddr: "http://MQ_INST_1796289517488555_Bcqaq2is.cn-beijing.mq-internal.aliyuncs.com:8080" | |||
| aws: | |||
| clientRegion: cn-northwest-1 | |||
| bucketName: iformall-net | |||
| access: ENC(a6SN1sZ1enNL49ypiOXkg/pPPAnZD8H4buQFTTKN08s=) | |||
| secret: ENC(5P5ff4bTMJUbXVR4ZsM03UHzOKZ4+Zg5Iutcdkyp/Quny/oXg+A4KpfwEyGarlLu3vQMJahGP5M=) | |||
| wechat: | |||
| open: | |||
| componentAppId: ENC(b3JG0MUZgQfz5Zj+DC2ZM1zDeLOiGTmmeokfe2O8kaM=) | |||
| componentSecret: ENC(QVyc4BPGdnSjXGs2ivgpDBE1v8wPWHLLRMYI7Vv8uYwC0SiZHQz0QpyyQV/b48Pb) | |||
| componentToken: ENC(rkxj0733WxFFDLgA9x01m2s5Fi2L+0PC) | |||
| componentAesKey: ENC(EIbJUBpbYOrLb4YQ/HXLQmxlxgAqIp2ZmpnGICC8pu5xiTz3Cqfkbwd2S8raCcK/IvYcX2GmedI=) | |||
| redis: | |||
| host: r-2zeaglwf13qqmnllj5.redis.rds.aliyuncs.com | |||
| port: 6379 | |||
| password: mallone:iF0rm@2l2ol9 | |||
| timeout: 3600 | |||
| expire: 1800 #30分钟 | |||
| database: 2 | |||
| defaultExpiration: 2592000 # 默认生命周期30天 | |||
| jedis: | |||
| pool: | |||
| max-active: 100 | |||
| max-idle: 100 | |||
| max-wait: -1 | |||
| min-idle: 10 | |||
| alipay: | |||
| open: | |||
| appId: 2021002140616334 | |||
| appPrivateKey: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCEJmHIlS0luIH7zJRRVlypCcgiSkqpSlnmgyCEM7nu8IerV8Yf7dMBitBklTpJB+4URV1bW+q6Ijzo8RsCyjm1Kx+EFiKf1PiJXlT0h1+bF3fYdDr6r5GK0/TtB8O80p774NcRD3HgbzUS8AEe/GcBvhiXbDRgJh7yAngW9vxl9u1o5UcaxOXVLWDrjlQGF6qyXUlycCNIdPXj3LduP3PBK5daVZwJm33Pr7kmSI0agZvV267HaTpSKaiXI7Zwo+nFMqx9g9kpzmYRfOgHx3DWpQUFI646IB8nEpLpQp3/0eDocuqiHXYgEpLpPoFKoVE228v74YSFh3Y4fFGX+qtjAgMBAAECggEAIJK9Y42xtSyHjaNdo7bf3CK3HAyn3pafFjyYFT4SxJyxNEDMay5Z5nVq7IAD/+BehMycOFqtvveVf+1+NO/XzZo1iH9URYVfRazkz+lWXYopVkdACm6gN1ILeymAy9g2q+s918ywyxteP668+ABK+5j5wsk/F7wNwKVvKGn0yMT7DP0FAL1e0KWndZCZlF79VnFpBLscDJq28GqRzqYop4CWqHHTA6DBvIqkfQV4U3IzqnzOsxNLEMBwhnbK08XfYZ3DxCPH0jQdA2Jj/aABrntq2EpWjzW5H9iZqrVo33rmsNHUSQvla/333RkbpwGyNhI6kcPBRq4cVSAa3y7dMQKBgQDVfyDUPWKXVwIJUgO1my8WIUu2p6nhuT7Mfnpk4X7ewdFaRVjb/r0KvhLgoz2/KOwkqtWTlEvNaCDDycpLXk+V5ZH833kYsDEmxY7ikOUjCcrfYJgT7P77//cZ4Kx8a5X45SiKAZT2GQv7BTtIfNhrfTUj6AQx/3MP3sa2QAWeNQKBgQCedWoF7t+qyck2hctqtTFC7fRkEk7RNJVph1ZOeTqOIAKhmhkwaOE3joxQ/VqHDy212YdW4hI0BWUzbEdMy0Idz2G3y9ERVD84hZehf5GGRdiSrY9EEQgHlcI6Qb8/AnDdpy1DlKUMwTYjVNzkDL3AzeWn61JS1XQaOzZBsJy2NwKBgFa+pJQXrOtYytcGn8M2Hlebh6vbS8cPAVkNOqWqiWXw0iMfcg9Q3XZz7C+hpAD7m5b6YnToGDSJTma+opck5qk88agRFJ7XV+Es+/VKcg9edzNzh9bwwFmbksbM5shW3kSWt3X7Vo73dkqzwXaeY0CpSuIf7zRxWkrkdVCvipjRAoGAMcJlPN+6VQNwsDJromKryXy31gT5wzBkCvN44sOm46KhsOWXK2CD+NJGtdgZaXgWvphEq7/qP3PCR9ekvDTH2lyZLwJN8Mcn4zPwXcKVjDi6vbTK3HEMuHUKvQiQadT2ZGRvDl3LRqoVuhqYEvT9UWJWz9hRzblB8ErPyukPDRkCgYB7bMv2iflpaGE1J3gkTlVJB+2QSfnAXaUDMLWsZN4gYjwEBVCEJ+mhWL1/GeEIBjSs5/qZIeRsYzlxGEcnsJzRfog6ITBF14AeZ+xNkHq83ja87OGVKMypiccGwRehijDhJi6tgMJ0u0w6PiqcJvh0SX4jBhDDPjuWzK2XD+lx8A== | |||
| appPublicKeyCertPath: /opt/iformall/service/alipay/appCertPublicKey_2021002140616334.crt | |||
| alipayCertPath: /opt/iformall/service/alipay/alipayCertPublicKey_RSA2.crt | |||
| alipayRootCertPath: /opt/iformall/service/alipay/alipayRootCert.crt | |||
| callback: https://callback.malls.iformall.com/api/alipay/notify/callback | |||
| video: | |||
| aliyun: | |||
| accessKeyId: LTAI4G7ixY4AhvM35F8o3W3V | |||
| accessKeySecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||
| regionId: cn-beijing | |||
| endPoint: https://oss-cn-beijing.aliyuncs.com | |||
| corePoolSize: 6 | |||
| maxPoolSize: 20 | |||
| queueCapacity: 1000 | |||
| namePrefix: aliyun-video-upload | |||
| fm: | |||
| exception: true | |||
| exception_emails: houtaikaifa@iformall.com | |||
| deploy: 3 | |||
| open: true | |||
| upload_dir: /root/uploads/ | |||
| ocr_data: /root/ocr_data/ | |||
| videoType: aliyun | |||
| logging: | |||
| level: | |||
| com.iformall: debug | |||
| path: ./logs/c | |||
| @@ -0,0 +1,145 @@ | |||
| spring: | |||
| profiles: | |||
| include: aliyunRocketMQ | |||
| # JDBC | |||
| datasource: | |||
| url: jdbc:mysql://rm-2zel9i9t555zy7lftmo.mysql.rds.aliyuncs.com:3306/mallink?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false&useAffectedRows=true&allowMultiQueries=true | |||
| username: mallone | |||
| password: m@l9oNEl20#@ | |||
| type: com.alibaba.druid.pool.DruidDataSource | |||
| driver-class-name: com.mysql.cj.jdbc.Driver | |||
| filters: stat | |||
| maxActive: 20 | |||
| initialSize: 1 | |||
| maxWait: 60000 | |||
| minIdle: 1 | |||
| timeBetweenEvictionRunsMillis: 28000 | |||
| minEvictableIdleTimeMillis: 28000 | |||
| validationQuery: select 'x' | |||
| testWhileIdle: true | |||
| testOnBorrow: false | |||
| testOnReturn: false | |||
| poolPreparedStatements: true | |||
| maxOpenPreparedStatements: 20 | |||
| connectionProperties: "druid.stat.mergeSql=true;druid.stat.slowSqlMillis=60000" | |||
| # REDIS | |||
| redis: | |||
| host: r-2zeaglwf13qqmnllj5pd.redis.rds.aliyuncs.com | |||
| port: 6379 | |||
| password: mallone:iF0rm@2l2ol9 | |||
| timeout: 3600 | |||
| expire: 1800 #30分钟 | |||
| database: 1 | |||
| defaultExpiration: 2592000 # 默认生命周期30天 | |||
| jedis: | |||
| pool: | |||
| max-active: 100 | |||
| max-idle: 20 | |||
| max-wait: -1 | |||
| min-idle: 0 | |||
| # SMS | |||
| aliyun: | |||
| sms: | |||
| accessKeyId: LTAI4G7ixY4AhvM35F8o3W3V | |||
| accessKeySecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||
| product: Dysmsapi | |||
| domain: dysmsapi.aliyuncs.com | |||
| regionId: cn-hangzhou | |||
| dateFormat: yyyyMMdd | |||
| endpointName: cn-hangzhou | |||
| oss: | |||
| endpoint: oss-cn-beijing.aliyuncs.com | |||
| keyid: LTAI4G7ixY4AhvM35F8o3W3V | |||
| keysecret: VfWqGb83qIQrS9us45utskl8itd7ry | |||
| bucketname: formall | |||
| filehost: malinkadmin | |||
| filedomain: https://formall.oss-accelerate.aliyuncs.com | |||
| mail: | |||
| host: smtp.exmail.qq.com | |||
| username: zhengfangyuan@iformall.com | |||
| password: xnydCeUzofB2h8qp # 授权密码 | |||
| properties: | |||
| mail: | |||
| smtp: | |||
| auth: true | |||
| starttls: | |||
| enable: true | |||
| socketFactory: | |||
| port: 465 | |||
| class: javax.net.ssl.SSLSocketFactory | |||
| # RABBITMQ | |||
| rabbitmq: | |||
| host: localhost | |||
| port: 5672 | |||
| username: admin | |||
| password: ibh2D9R3v2DEN3gk | |||
| #username: ENC(lRmLd6EzgeY1RT5ktcHv9g==) | |||
| #password: ENC(gBI8mCjr3OC0v57jcnSb660Ux7mW03K2oePgvohhg7w=) | |||
| publisher-confirms: true | |||
| publisher-returns: false | |||
| virtual-host: / | |||
| # | |||
| aliyunRocketmq: | |||
| accessKeyId: "LTAI4G7ixY4AhvM35F8o3W3V" | |||
| accessKeySecret: "VfWqGb83qIQrS9us45utskl8itd7ry" | |||
| groupId: "GID_P_1" | |||
| namesrvAddr: "http://MQ_INST_1796289517488555_Bcqaq2is.cn-beijing.mq-internal.aliyuncs.com:8080" | |||
| flyway: | |||
| enabled: false | |||
| aws: | |||
| clientRegion: cn-northwest-1 | |||
| bucketName: iformall-net | |||
| access: AKIAOEHX2MJVBURWTB3Q | |||
| secret: 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 | |||
| #access: ENC(a6SN1sZ1enNL49ypiOXkg/pPPAnZD8H4buQFTTKN08s=) | |||
| #secret: ENC(5P5ff4bTMJUbXVR4ZsM03UHzOKZ4+Zg5Iutcdkyp/Quny/oXg+A4KpfwEyGarlLu3vQMJahGP5M=) | |||
| wechat: | |||
| web: | |||
| appId: "wx9cc4ca09eb20fe03" | |||
| secret: "af1d7f7a1268022a73cb4ce0b9cf0985" | |||
| url: "https://admin.malls.iformall.com" | |||
| open: | |||
| componentAppId: wx7f58f461ec1e2b4f | |||
| componentSecret: 7eb9b795606739b5526dd7f61d923f5a | |||
| componentToken: formall2018 | |||
| componentAesKey: htKq8EjBMPNndfZQK9JiFojFaqFwFpw42VfeWFtx7HN | |||
| #componentAppId: ENC(b3JG0MUZgQfz5Zj+DC2ZM1zDeLOiGTmmeokfe2O8kaM=) | |||
| #componentSecret: ENC(QVyc4BPGdnSjXGs2ivgpDBE1v8wPWHLLRMYI7Vv8uYwC0SiZHQz0QpyyQV/b48Pb) | |||
| #componentToken: ENC(rkxj0733WxFFDLgA9x01m2s5Fi2L+0PC) | |||
| #componentAesKey: ENC(EIbJUBpbYOrLb4YQ/HXLQmxlxgAqIp2ZmpnGICC8pu5xiTz3Cqfkbwd2S8raCcK/IvYcX2GmedI=) | |||
| redis: | |||
| host: r-2zeaglwf13qqmnllj5pd.redis.rds.aliyuncs.com | |||
| port: 6379 | |||
| password: mallone:iF0rm@2l2ol9 | |||
| timeout: 3600 | |||
| expire: 1800 #30分钟 | |||
| database: 2 | |||
| defaultExpiration: 2592000 # 默认生命周期30天 | |||
| jedis: | |||
| pool: | |||
| max-active: 100 | |||
| max-idle: 100 | |||
| max-wait: -1 | |||
| min-idle: 10 | |||
| fm: | |||
| exception: true | |||
| exception_emails: houtaikaifa@iformall.com | |||
| deploy: 3 | |||
| open: true | |||
| upload_dir: /root/uploads/ | |||
| ueditor: | |||
| config: config.json | |||
| unified: true | |||
| upload-path: ./upload/ | |||
| url-prefix: "" | |||
| logging: | |||
| level: | |||
| com.iformall.mapper: debug | |||
| path: ./logs/admin | |||
| @@ -0,0 +1,101 @@ | |||
| spring: | |||
| profiles: | |||
| include: rabbitMQ | |||
| # JDBC | |||
| datasource: | |||
| url: jdbc:mysql://formalldb.cfqyqflkdlit.rds.cn-northwest-1.amazonaws.com.cn:3306/mallinkTest?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false&useAffectedRows=true | |||
| username: ENC(Uc0AjgkytxHHCwZrmDASWg==) | |||
| password: ENC(nV4Mi3bEbBx0Fj7uUyYH55eTaqsFMjKvmNzagicH4pc=) | |||
| type: com.alibaba.druid.pool.DruidDataSource | |||
| driver-class-name: com.mysql.cj.jdbc.Driver | |||
| filters: stat | |||
| maxActive: 20 | |||
| initialSize: 1 | |||
| maxWait: 60000 | |||
| minIdle: 1 | |||
| timeBetweenEvictionRunsMillis: 28000 | |||
| minEvictableIdleTimeMillis: 28000 | |||
| validationQuery: select 'x' | |||
| testWhileIdle: true | |||
| testOnBorrow: false | |||
| testOnReturn: false | |||
| poolPreparedStatements: true | |||
| maxOpenPreparedStatements: 20 | |||
| # REDIS | |||
| redis: | |||
| host: 127.0.0.1 | |||
| port: 6379 | |||
| password: ENC(QFwqv3NshvvGhFPiP8rwhvbnxk+rFSqhJi8Pw6TogSg=) | |||
| timeout: 3600 | |||
| expire: 1800 #30分钟 | |||
| database: 1 | |||
| defaultExpiration: 2592000 # 默认生命周期30天 | |||
| jedis: | |||
| pool: | |||
| max-active: 8 | |||
| max-idle: 8 | |||
| max-wait: -1 | |||
| min-idle: 0 | |||
| mail: | |||
| host: smtp.exmail.qq.com | |||
| username: ENC(TtJQE2C4cWo8CpVGMMl5hiy5eykepd96J5XjsW3Kj5fgP+6+5ctDNQ==) | |||
| password: ENC(Zh6A6kRtA2ABtH6nzdvsqQSO1/8p3mparJr8neI2BLU=) # 授权密码 | |||
| properties: | |||
| mail: | |||
| smtp: | |||
| auth: true | |||
| starttls: | |||
| enable: true | |||
| socketFactory: | |||
| port: 465 | |||
| class: javax.net.ssl.SSLSocketFactory | |||
| # RABBITMQ | |||
| rabbitmq: | |||
| host: 127.0.0.1 | |||
| port: 5672 | |||
| username: ENC(aSRr6mnSryEqzHHz1hJf1g==) | |||
| password: ENC(GnjF/mdqKdvmDYC0tIIso7+20/jBALPw39tiWCYJ4iw=) | |||
| publisher-confirms: true | |||
| publisher-returns: false | |||
| virtual-host: / | |||
| aws: | |||
| clientRegion: cn-northwest-1 | |||
| bucketName: iformall-net | |||
| access: ENC(NCLcmjwKpAWdn/abD17OKIY7yKepVLWzEpqRYUlURCw=) | |||
| secret: ENC(TRcZqql0Rq5PExlMeH/4WiZ/i02b8FXKmLTBChJmbluTa1uoLS9LrHyNEMrqe1DK+QgOAdvqGBo=) | |||
| wechat: | |||
| open: | |||
| componentAppId: ENC(hnH31XdNzArfMfikKgBFpqQuJUl6rVOPFFcAVyb595o=) | |||
| componentSecret: ENC(t/GUVX5L+U7LCwSvZ5WmxAnmTMrc/Uy1nljsrokuzzsBL2j6BEVnrS/n7DCdGc/G) | |||
| componentToken: ENC(gUF1m0YgCCI2IY54fX6sGLZVlCswA8tG) | |||
| componentAesKey: ENC(TYHcrIkICtfrCfGq4HW6s1b/pHf7OD2uyPN11SzJNB0acqJ/4JVX1nuljo/cAtgMG4O05TImLQc=) | |||
| redis: | |||
| host: 127.0.0.1 | |||
| port: 6379 | |||
| password: ENC(QFwqv3NshvvGhFPiP8rwhvbnxk+rFSqhJi8Pw6TogSg=) | |||
| timeout: 3600 | |||
| expire: 1800 #30分钟 | |||
| database: 2 | |||
| defaultExpiration: 2592000 # 默认生命周期30天 | |||
| jedis: | |||
| pool: | |||
| max-active: 100 | |||
| max-idle: 100 | |||
| max-wait: -1 | |||
| min-idle: 10 | |||
| fm: | |||
| exception: true | |||
| exception_emails: houtaikaifa@iformall.com | |||
| deploy: 2 | |||
| open: true | |||
| upload_dir: /home/ec2-user/server/uploads/ | |||
| ocr_data: /home/ec2-user/server/ocr_data/ | |||
| logging: | |||
| level: | |||
| com.iformall: debug | |||
| path: ./logs/c | |||
| @@ -0,0 +1,54 @@ | |||
| server: | |||
| port: 7000 | |||
| servlet: | |||
| context-path: /C | |||
| spring: | |||
| application: | |||
| name: mallink | |||
| profiles: | |||
| active: dev | |||
| jackson: | |||
| date-format: yyyy-MM-dd HH:mm:ss | |||
| time-zone: GMT+8 | |||
| default-property-inclusion: non_null | |||
| # rocketmq: | |||
| # nameServer: 127.0.0.1:9876 | |||
| # producer: | |||
| # retry-times-when-send-async-failed: 0 | |||
| # send-msg-timeout: 300000 | |||
| # compress-msg-body-over-howmuch: 4096 | |||
| # max-message-size: 4194304 | |||
| # retry-another-broker-when-not-store-ok: false | |||
| # retry-times-when-send-failed: 2 | |||
| # MybatisPlus | |||
| mybatis-plus: | |||
| mapper-locations: classpath:mapper/*Mapper.xml | |||
| global-config: | |||
| db-config: | |||
| id-type: id_worker | |||
| field-strategy: not_null | |||
| db-type: mysql | |||
| configuration: | |||
| jdbc-type-for-null: 'null' | |||
| cache-enabled: false | |||
| call-setters-on-nulls: true | |||
| type-aliases-package: com.iformall.domain.po | |||
| type-enums-package: com.iformall.enums | |||
| # PageHelper | |||
| pagehelper: | |||
| helperDialect: mysql | |||
| reasonable: false | |||
| supportMethodsArguments: true | |||
| params: count=countSql | |||
| offset-as-page-num: true | |||
| page-size-zero: true | |||
| row-bounds-with-count: true | |||
| mapper: | |||
| mappers: | |||
| - com.iformall.common.CommonMapper | |||
| version: @project.version@ | |||
| @@ -0,0 +1,100 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <configuration scan="true" scanPeriod="10 seconds"> | |||
| <!-- 外部指定路径 --> | |||
| <springProperty scop="context" name="logPath" source="logging.path" /> | |||
| <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | |||
| <encoder> | |||
| <Pattern>[%date{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] --%mdc{client}%msg%n</Pattern> | |||
| </encoder> | |||
| </appender> | |||
| <appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | |||
| <file>${logPath}/trace.log</file> | |||
| <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | |||
| <FileNamePattern>${logPath}/daily/trace.%d{yyyy-MM-dd}.log</FileNamePattern> | |||
| <maxHistory>30</maxHistory> <!-- 保留180天 --> | |||
| </rollingPolicy> | |||
| <layout> | |||
| <pattern>[%date{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%logger:%line]--%mdc{client} %msg%n</pattern> | |||
| </layout> | |||
| </appender> | |||
| <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | |||
| <file>${logPath}/info.log</file> | |||
| <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | |||
| <FileNamePattern>${logPath}/daily/info.%d{yyyy-MM-dd}.log</FileNamePattern> | |||
| <maxHistory>30</maxHistory> <!-- 保留180天 --> | |||
| </rollingPolicy> | |||
| <layout> | |||
| <pattern>[%date{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%logger:%line]--%mdc{client} %msg%n</pattern> | |||
| </layout> | |||
| <filter class="ch.qos.logback.classic.filter.LevelFilter"> | |||
| <level>INFO</level> | |||
| <onMatch>ACCEPT</onMatch> | |||
| <onMismatch>DENY</onMismatch> | |||
| </filter> | |||
| </appender> | |||
| <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | |||
| <file>${logPath}/debug.log</file> | |||
| <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | |||
| <FileNamePattern>${logPath}/daily/debug.%d{yyyy-MM-dd}.log</FileNamePattern> | |||
| <maxHistory>30</maxHistory> <!-- 保留180天 --> | |||
| </rollingPolicy> | |||
| <layout> | |||
| <pattern>[%date{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%logger:%line]--%mdc{client} %msg%n</pattern> | |||
| </layout> | |||
| <filter class="ch.qos.logback.classic.filter.LevelFilter"> | |||
| <level>DEBUG</level> | |||
| <onMatch>ACCEPT</onMatch> | |||
| <onMismatch>DENY</onMismatch> | |||
| </filter> | |||
| </appender> | |||
| <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | |||
| <file>${logPath}/warn.log</file> | |||
| <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | |||
| <FileNamePattern>${logPath}/daily/warn.%d{yyyy-MM-dd}.log</FileNamePattern> | |||
| <maxHistory>30</maxHistory> <!-- 保留180天 --> | |||
| </rollingPolicy> | |||
| <layout> | |||
| <pattern>[%date{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%logger:%line]--%mdc{client} %msg%n</pattern> | |||
| </layout> | |||
| <filter class="ch.qos.logback.classic.filter.LevelFilter"> | |||
| <level>WARN</level> | |||
| <onMatch>ACCEPT</onMatch> | |||
| <onMismatch>DENY</onMismatch> | |||
| </filter> | |||
| </appender> | |||
| <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> | |||
| <file>${logPath}/error.log</file> | |||
| <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | |||
| <FileNamePattern>${logPath}/daily/error.%d{yyyy-MM-dd}.log</FileNamePattern> | |||
| <maxHistory>30</maxHistory> <!-- 保留180天 --> | |||
| </rollingPolicy> | |||
| <layout> | |||
| <pattern>[%date{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%logger:%line]--%mdc{client} %msg%n</pattern> | |||
| </layout> | |||
| <filter class="ch.qos.logback.classic.filter.LevelFilter"> | |||
| <level>ERROR</level> | |||
| <onMatch>ACCEPT</onMatch> | |||
| <onMismatch>DENY</onMismatch> | |||
| </filter> | |||
| </appender> | |||
| <root level="TRACE"> | |||
| <appender-ref ref="TRACE_FILE" /> | |||
| <appender-ref ref="INFO_FILE" /> | |||
| <!-- <appender-ref ref="DEBUG_FILE" /> --> | |||
| <!-- <appender-ref ref="WARN_FILE" /> --> | |||
| <appender-ref ref="ERROR_FILE" /> | |||
| </root> | |||
| <root level="INFO"> | |||
| <appender-ref ref="STDOUT" /> | |||
| </root> | |||
| </configuration> | |||
| @@ -0,0 +1,32 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <classpath> | |||
| <classpathentry kind="src" output="target/classes" path="src/main/java"> | |||
| <attributes> | |||
| <attribute name="optional" value="true"/> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"> | |||
| <attributes> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry kind="src" output="target/test-classes" path="src/test/java"> | |||
| <attributes> | |||
| <attribute name="optional" value="true"/> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| <attribute name="test" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> | |||
| <attributes> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> | |||
| <attributes> | |||
| <attribute name="maven.pomderived" value="true"/> | |||
| </attributes> | |||
| </classpathentry> | |||
| <classpathentry kind="output" path="target/classes"/> | |||
| </classpath> | |||
| @@ -0,0 +1 @@ | |||
| /target/ | |||
| @@ -0,0 +1,23 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <projectDescription> | |||
| <name>mallinkService</name> | |||
| <comment></comment> | |||
| <projects> | |||
| </projects> | |||
| <buildSpec> | |||
| <buildCommand> | |||
| <name>org.eclipse.jdt.core.javabuilder</name> | |||
| <arguments> | |||
| </arguments> | |||
| </buildCommand> | |||
| <buildCommand> | |||
| <name>org.eclipse.m2e.core.maven2Builder</name> | |||
| <arguments> | |||
| </arguments> | |||
| </buildCommand> | |||
| </buildSpec> | |||
| <natures> | |||
| <nature>org.eclipse.jdt.core.javanature</nature> | |||
| <nature>org.eclipse.m2e.core.maven2Nature</nature> | |||
| </natures> | |||
| </projectDescription> | |||
| @@ -0,0 +1,4 @@ | |||
| eclipse.preferences.version=1 | |||
| encoding//src/main/java=UTF-8 | |||
| encoding//src/main/resources=UTF-8 | |||
| encoding/<project>=UTF-8 | |||
| @@ -0,0 +1,9 @@ | |||
| eclipse.preferences.version=1 | |||
| org.eclipse.jdt.core.compiler.codegen.methodParameters=generate | |||
| org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 | |||
| org.eclipse.jdt.core.compiler.compliance=1.8 | |||
| org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled | |||
| org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning | |||
| org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore | |||
| org.eclipse.jdt.core.compiler.release=disabled | |||
| org.eclipse.jdt.core.compiler.source=1.8 | |||
| @@ -0,0 +1,4 @@ | |||
| activeProfiles= | |||
| eclipse.preferences.version=1 | |||
| resolveWorkspaceProjects=true | |||
| version=1 | |||
| @@ -0,0 +1,45 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <project xmlns="http://maven.apache.org/POM/4.0.0" | |||
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||
| xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |||
| <parent> | |||
| <artifactId>mallink</artifactId> | |||
| <groupId>com.iformall.gpt</groupId> | |||
| <version>1.0</version> | |||
| </parent> | |||
| <modelVersion>4.0.0</modelVersion> | |||
| <artifactId>mallinkService</artifactId> | |||
| <dependencies> | |||
| <!-- | |||
| <dependency> | |||
| <groupId>com.iformall</groupId> | |||
| <artifactId>mybatis-tenant</artifactId> | |||
| <version>1.0</version> | |||
| <scope>compile</scope> | |||
| </dependency> | |||
| --> | |||
| <dependency> | |||
| <groupId>net.sf.dozer</groupId> | |||
| <artifactId>dozer</artifactId> | |||
| <version>5.5.1</version> | |||
| </dependency> | |||
| <dependency> | |||
| <groupId>com.aliyun.openservices</groupId> | |||
| <artifactId>ons-client</artifactId> | |||
| <version>1.8.4.Final</version> | |||
| </dependency> | |||
| <dependency> | |||
| <groupId>com.iformall.gpt</groupId> | |||
| <artifactId>mybatis-multi-tenancy</artifactId> | |||
| <version>1.0</version> | |||
| </dependency> | |||
| <dependency> | |||
| <groupId>com.alipay.sdk</groupId> | |||
| <artifactId>alipay-easysdk</artifactId> | |||
| <version>2.2.0</version> | |||
| </dependency> | |||
| </dependencies> | |||
| </project> | |||
| @@ -0,0 +1,13 @@ | |||
| package com.iformall.common; | |||
| import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||
| import java.io.Serializable; | |||
| /** | |||
| * @author chenkx | |||
| * @date 2017-12-27 | |||
| */ | |||
| public interface CommonMapper<T, ID extends Serializable> extends BaseMapper<T> { | |||
| } | |||
| @@ -0,0 +1,48 @@ | |||
| package com.iformall.common; | |||
| import java.text.MessageFormat; | |||
| /** | |||
| * @author chenkx | |||
| * @date 2017-12-28. | |||
| */ | |||
| public enum ErrorCode{ | |||
| UNLOGIN(1000,"未登陆"), | |||
| PHONE_DECRYPTED_FAILD(1001,"手机号解密失败"), | |||
| APPINFO_NOFUND(1002,"appinfo未查询到"), | |||
| PARAM_EMPITY(1003,"参数为空"), | |||
| SERVER_ERROR(500,"系统错误") | |||
| ; | |||
| private int code; | |||
| private String message; | |||
| ErrorCode(int code, String message) { | |||
| this.code = code; | |||
| this.message = message; | |||
| } | |||
| public int getCode() { | |||
| return code; | |||
| } | |||
| public String getMessage(Object... param) { | |||
| if (param.length == 0) { | |||
| return message; | |||
| } | |||
| return MessageFormat.format(message, param); | |||
| } | |||
| public static ErrorCode getByCode(int code) { | |||
| ErrorCode[] values = ErrorCode.values(); | |||
| for (ErrorCode value : values) { | |||
| if (value.getCode() == code) { | |||
| return value; | |||
| } | |||
| } | |||
| return null; | |||
| } | |||
| } | |||
| @@ -0,0 +1,345 @@ | |||
| package com.iformall.common; | |||
| import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.apache.http.HttpHost; | |||
| import org.apache.http.NoHttpResponseException; | |||
| import org.apache.http.auth.AuthScope; | |||
| import org.apache.http.auth.UsernamePasswordCredentials; | |||
| import org.apache.http.client.CredentialsProvider; | |||
| import org.apache.http.client.HttpRequestRetryHandler; | |||
| import org.apache.http.client.config.RequestConfig; | |||
| import org.apache.http.config.Registry; | |||
| import org.apache.http.config.RegistryBuilder; | |||
| import org.apache.http.config.SocketConfig; | |||
| import org.apache.http.conn.ConnectTimeoutException; | |||
| import org.apache.http.conn.DnsResolver; | |||
| import org.apache.http.conn.HttpClientConnectionManager; | |||
| import org.apache.http.conn.socket.ConnectionSocketFactory; | |||
| import org.apache.http.conn.socket.PlainConnectionSocketFactory; | |||
| import org.apache.http.conn.ssl.SSLConnectionSocketFactory; | |||
| import org.apache.http.impl.client.BasicCredentialsProvider; | |||
| import org.apache.http.impl.client.CloseableHttpClient; | |||
| import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy; | |||
| import org.apache.http.impl.client.HttpClientBuilder; | |||
| import org.apache.http.impl.client.HttpClients; | |||
| import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; | |||
| import org.apache.http.protocol.HttpContext; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import java.io.IOException; | |||
| import java.util.concurrent.TimeUnit; | |||
| import java.util.concurrent.atomic.AtomicBoolean; | |||
| /** | |||
| * httpclient 连接管理器 自带DNS解析. | |||
| * <p>大部分代码拷贝自:DefaultApacheHttpClientBuilder</p> | |||
| * | |||
| * @author Andy.Huo | |||
| */ | |||
| public class FmHttpClientBuilder implements ApacheHttpClientBuilder { | |||
| protected final Logger log = LoggerFactory.getLogger(FmHttpClientBuilder.class); | |||
| private final AtomicBoolean prepared = new AtomicBoolean(false); | |||
| private int connectionRequestTimeout = 3000; | |||
| private int connectionTimeout = 5000; | |||
| private int soTimeout = 5000; | |||
| private int idleConnTimeout = 60000; | |||
| private int checkWaitTime = 60000; | |||
| private int maxConnPerHost = 10; | |||
| private int maxTotalConn = 50; | |||
| private String userAgent; | |||
| private DnsResolver dnsResover; | |||
| private HttpRequestRetryHandler httpRequestRetryHandler = new HttpRequestRetryHandler() { | |||
| @Override | |||
| public boolean retryRequest(IOException exception, int executionCount, HttpContext context) { | |||
| if (executionCount > 3) { | |||
| log.warn("Maximum tries reached for client http pool "); | |||
| return false; | |||
| } | |||
| if (exception instanceof NoHttpResponseException) { // NoHttpResponseException 重试 | |||
| log.warn("NoHttpResponseException on " + executionCount + " call"); | |||
| return true; | |||
| } | |||
| if (exception instanceof ConnectTimeoutException) { // 连接超时重试 | |||
| log.warn("ConnectTimeoutException on " + executionCount + " call"); | |||
| return true; | |||
| } | |||
| //if (exception instanceof SocketTimeoutException) { //响应超时不重试,避免造成业务数据不一致 | |||
| // log.warn("SocketTimeoutException on " + executionCount + " call"); | |||
| //} | |||
| return false; | |||
| } | |||
| }; | |||
| private SSLConnectionSocketFactory sslConnectionSocketFactory = SSLConnectionSocketFactory.getSocketFactory(); | |||
| private PlainConnectionSocketFactory plainConnectionSocketFactory = PlainConnectionSocketFactory.getSocketFactory(); | |||
| private String httpProxyHost; | |||
| private int httpProxyPort; | |||
| private String httpProxyUsername; | |||
| private String httpProxyPassword; | |||
| /** | |||
| * 闲置连接监控线程. | |||
| */ | |||
| private IdleConnectionMonitorThread idleConnectionMonitorThread; | |||
| private HttpClientBuilder httpClientBuilder; | |||
| private FmHttpClientBuilder() { | |||
| } | |||
| private static FmHttpClientBuilder instance = new FmHttpClientBuilder(); | |||
| public static FmHttpClientBuilder get() { | |||
| return instance; | |||
| } | |||
| @Override | |||
| public ApacheHttpClientBuilder httpProxyHost(String httpProxyHost) { | |||
| this.httpProxyHost = httpProxyHost; | |||
| return this; | |||
| } | |||
| @Override | |||
| public ApacheHttpClientBuilder httpProxyPort(int httpProxyPort) { | |||
| this.httpProxyPort = httpProxyPort; | |||
| return this; | |||
| } | |||
| @Override | |||
| public ApacheHttpClientBuilder httpProxyUsername(String httpProxyUsername) { | |||
| this.httpProxyUsername = httpProxyUsername; | |||
| return this; | |||
| } | |||
| @Override | |||
| public ApacheHttpClientBuilder httpProxyPassword(String httpProxyPassword) { | |||
| this.httpProxyPassword = httpProxyPassword; | |||
| return this; | |||
| } | |||
| @Override | |||
| public ApacheHttpClientBuilder sslConnectionSocketFactory(SSLConnectionSocketFactory sslConnectionSocketFactory) { | |||
| this.sslConnectionSocketFactory = sslConnectionSocketFactory; | |||
| return this; | |||
| } | |||
| /** | |||
| * 获取链接的超时时间设置,默认3000ms | |||
| * <p> | |||
| * 设置为零时不超时,一直等待. 设置为负数是使用系统默认设置(非上述的3000ms的默认值,而是httpclient的默认设置). | |||
| * </p> | |||
| * | |||
| * @param connectionRequestTimeout 获取链接的超时时间设置(单位毫秒),默认3000ms | |||
| */ | |||
| public void setConnectionRequestTimeout(int connectionRequestTimeout) { | |||
| this.connectionRequestTimeout = connectionRequestTimeout; | |||
| } | |||
| /** | |||
| * 建立链接的超时时间,默认为5000ms.由于是在链接池获取链接,此设置应该并不起什么作用 | |||
| * <p> | |||
| * 设置为零时不超时,一直等待. 设置为负数是使用系统默认设置(非上述的5000ms的默认值,而是httpclient的默认设置). | |||
| * </p> | |||
| * | |||
| * @param connectionTimeout 建立链接的超时时间设置(单位毫秒),默认5000ms | |||
| */ | |||
| public void setConnectionTimeout(int connectionTimeout) { | |||
| this.connectionTimeout = connectionTimeout; | |||
| } | |||
| /** | |||
| * 默认NIO的socket超时设置,默认5000ms. | |||
| * | |||
| * @param soTimeout 默认NIO的socket超时设置,默认5000ms. | |||
| * @see java.net.SocketOptions#SO_TIMEOUT | |||
| */ | |||
| public void setSoTimeout(int soTimeout) { | |||
| this.soTimeout = soTimeout; | |||
| } | |||
| /** | |||
| * 空闲链接的超时时间,默认60000ms. | |||
| * <p> | |||
| * 超时的链接将在下一次空闲链接检查是被销毁 | |||
| * </p> | |||
| * | |||
| * @param idleConnTimeout 空闲链接的超时时间,默认60000ms. | |||
| */ | |||
| public void setIdleConnTimeout(int idleConnTimeout) { | |||
| this.idleConnTimeout = idleConnTimeout; | |||
| } | |||
| /** | |||
| * 检查空间链接的间隔周期,默认60000ms. | |||
| * | |||
| * @param checkWaitTime 检查空间链接的间隔周期,默认60000ms. | |||
| */ | |||
| public void setCheckWaitTime(int checkWaitTime) { | |||
| this.checkWaitTime = checkWaitTime; | |||
| } | |||
| /** | |||
| * 每路的最大链接数,默认10. | |||
| * | |||
| * @param maxConnPerHost 每路的最大链接数,默认10 | |||
| */ | |||
| public void setMaxConnPerHost(int maxConnPerHost) { | |||
| this.maxConnPerHost = maxConnPerHost; | |||
| } | |||
| /** | |||
| * 最大总连接数,默认50. | |||
| * | |||
| * @param maxTotalConn 最大总连接数,默认50 | |||
| */ | |||
| public void setMaxTotalConn(int maxTotalConn) { | |||
| this.maxTotalConn = maxTotalConn; | |||
| } | |||
| /** | |||
| * 自定义httpclient的User Agent. | |||
| * | |||
| * @param userAgent User Agent | |||
| */ | |||
| public void setUserAgent(String userAgent) { | |||
| this.userAgent = userAgent; | |||
| } | |||
| public IdleConnectionMonitorThread getIdleConnectionMonitorThread() { | |||
| return this.idleConnectionMonitorThread; | |||
| } | |||
| private synchronized void prepare() { | |||
| if (prepared.get()) { | |||
| return; | |||
| } | |||
| Registry<ConnectionSocketFactory> registry = | |||
| RegistryBuilder.<ConnectionSocketFactory>create() | |||
| .register("http", this.plainConnectionSocketFactory) | |||
| .register("https", this.sslConnectionSocketFactory) | |||
| .build(); | |||
| @SuppressWarnings("resource") | |||
| PoolingHttpClientConnectionManager connectionManager; | |||
| if (dnsResover != null) { | |||
| if (log.isDebugEnabled()) { | |||
| log.debug("specified dns resolver."); | |||
| } | |||
| connectionManager = new PoolingHttpClientConnectionManager(registry, dnsResover); | |||
| } else { | |||
| if (log.isDebugEnabled()) { | |||
| log.debug("Not specified dns resolver."); | |||
| } | |||
| connectionManager = new PoolingHttpClientConnectionManager(registry); | |||
| } | |||
| connectionManager.setMaxTotal(this.maxTotalConn); | |||
| connectionManager.setDefaultMaxPerRoute(this.maxConnPerHost); | |||
| connectionManager | |||
| .setDefaultSocketConfig(SocketConfig.copy(SocketConfig.DEFAULT).setSoTimeout(this.soTimeout).build()); | |||
| this.idleConnectionMonitorThread = new IdleConnectionMonitorThread( | |||
| connectionManager, this.idleConnTimeout, this.checkWaitTime); | |||
| this.idleConnectionMonitorThread.setDaemon(true); | |||
| this.idleConnectionMonitorThread.start(); | |||
| this.httpClientBuilder = HttpClients.custom().setConnectionManager(connectionManager) | |||
| .setConnectionManagerShared(true) | |||
| .setKeepAliveStrategy(DefaultConnectionKeepAliveStrategy.INSTANCE) | |||
| .setDefaultRequestConfig( | |||
| RequestConfig.custom() | |||
| .setSocketTimeout(this.soTimeout) | |||
| .setConnectTimeout(this.connectionTimeout) | |||
| .setConnectionRequestTimeout(this.connectionRequestTimeout) | |||
| .build()) | |||
| .setRetryHandler(this.httpRequestRetryHandler) | |||
| .evictExpiredConnections() | |||
| //MaxIdleTime 必须小于服务端的关闭时间否则有可能出现NoHttpResponse | |||
| .evictIdleConnections(3,TimeUnit.SECONDS);//用来关闭闲置连接,它会启动一个守护线程进行清理工作。用户可以通过builder#evictIdleConnections开启该组件,并通过builder#setmaxIdleTime设置最大空闲时间。 | |||
| ; | |||
| if (StringUtils.isNotBlank(this.httpProxyHost) && StringUtils.isNotBlank(this.httpProxyUsername)) { | |||
| // 使用代理服务器 需要用户认证的代理服务器 | |||
| CredentialsProvider provider = new BasicCredentialsProvider(); | |||
| provider.setCredentials(new AuthScope(this.httpProxyHost, this.httpProxyPort), | |||
| new UsernamePasswordCredentials(this.httpProxyUsername, this.httpProxyPassword)); | |||
| this.httpClientBuilder.setDefaultCredentialsProvider(provider); | |||
| this.httpClientBuilder.setProxy(new HttpHost(this.httpProxyHost, this.httpProxyPort)); | |||
| } | |||
| if (StringUtils.isNotBlank(this.userAgent)) { | |||
| this.httpClientBuilder.setUserAgent(this.userAgent); | |||
| } | |||
| prepared.set(true); | |||
| } | |||
| @Override | |||
| public CloseableHttpClient build() { | |||
| if (!prepared.get()) { | |||
| prepare(); | |||
| } | |||
| return this.httpClientBuilder.build(); | |||
| } | |||
| public DnsResolver getDnsResover() { | |||
| return dnsResover; | |||
| } | |||
| public void setDnsResover(DnsResolver dnsResover) { | |||
| this.dnsResover = dnsResover; | |||
| } | |||
| public static class IdleConnectionMonitorThread extends Thread { | |||
| private final HttpClientConnectionManager connMgr; | |||
| private final int idleConnTimeout; | |||
| private final int checkWaitTime; | |||
| private volatile boolean shutdown; | |||
| /** | |||
| * 构造方法. | |||
| */ | |||
| public IdleConnectionMonitorThread(HttpClientConnectionManager connMgr, int idleConnTimeout, int checkWaitTime) { | |||
| super("IdleConnectionMonitorThread"); | |||
| this.connMgr = connMgr; | |||
| this.idleConnTimeout = idleConnTimeout; | |||
| this.checkWaitTime = checkWaitTime; | |||
| } | |||
| @Override | |||
| public void run() { | |||
| try { | |||
| while (!this.shutdown) { | |||
| synchronized (this) { | |||
| wait(this.checkWaitTime); | |||
| this.connMgr.closeExpiredConnections(); | |||
| this.connMgr.closeIdleConnections(this.idleConnTimeout, TimeUnit.MILLISECONDS); | |||
| } | |||
| } | |||
| } catch (InterruptedException ignore) { | |||
| Thread.currentThread().interrupt(); | |||
| } | |||
| } | |||
| /** | |||
| * 触发. | |||
| */ | |||
| public void trigger() { | |||
| synchronized (this) { | |||
| notifyAll(); | |||
| } | |||
| } | |||
| /** | |||
| * 关闭. | |||
| */ | |||
| public void shutdown() { | |||
| this.shutdown = true; | |||
| synchronized (this) { | |||
| notifyAll(); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,115 @@ | |||
| package com.iformall.common; | |||
| import com.iformall.exception.MallinkException; | |||
| import org.apache.shiro.authz.AuthorizationException; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.web.bind.annotation.ControllerAdvice; | |||
| import org.springframework.web.bind.annotation.ExceptionHandler; | |||
| import org.springframework.web.bind.annotation.ResponseBody; | |||
| import javax.servlet.http.HttpServletRequest; | |||
| import java.io.PrintWriter; | |||
| import java.io.StringWriter; | |||
| import java.text.SimpleDateFormat; | |||
| import java.util.Date; | |||
| import java.util.Enumeration; | |||
| @ControllerAdvice | |||
| public class GlobalDefultExceptionHandler { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| private boolean isFmException; | |||
| @Autowired | |||
| private String fmExceptionEmails; | |||
| //@Autowired | |||
| //private MailService mailService; | |||
| @ExceptionHandler(Exception.class) | |||
| @ResponseBody | |||
| public ResultData defultExcepitonHandler(HttpServletRequest request, Exception e) { | |||
| log(e, request); | |||
| if(isFmException) { | |||
| // 处理异常,发送邮件 | |||
| if(checkExceptionType(e)) { | |||
| // 某些异常不发邮件 | |||
| MallinkException me = (MallinkException)e; | |||
| return new ResultData(me.getErrorCode(),me.getMessage()); | |||
| } | |||
| StringWriter sw = new StringWriter(); | |||
| PrintWriter pw = new PrintWriter(sw); | |||
| e.printStackTrace(pw); | |||
| SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 | |||
| StringBuilder sb = new StringBuilder(); | |||
| sb.append(df.format(new Date())); | |||
| sb.append("\n"); | |||
| sb.append(sw.toString()); | |||
| String[] receivers = fmExceptionEmails.split(","); | |||
| //发送邮件 | |||
| //mailService.sendSimpleMail(receivers, "请求地址:" + request.getRequestURL() + "异常", sb.toString()); | |||
| } | |||
| if(checkExceptionType(e)) { | |||
| MallinkException me = (MallinkException)e; | |||
| return new ResultData(me.getErrorCode(),me.getMessage()); | |||
| } else if(checkAuthException(e)) { | |||
| return new ResultData(ErrorCode.SERVER_ERROR); | |||
| } else { | |||
| return new ResultData(Result.ERROR, e.getMessage()); | |||
| } | |||
| } | |||
| private void log(Exception ex, HttpServletRequest request) { | |||
| logger.error("************************异常开始*******************************"); | |||
| if(checkExceptionType(ex)) { | |||
| // 特殊异常不打印堆栈 | |||
| logger.error(ex.getMessage()); | |||
| logger.error("************************异常结束*******************************"); | |||
| return; | |||
| } | |||
| logger.error("请求地址:" + request.getRequestURL()); | |||
| logger.error("message:"+ ex.getMessage()); | |||
| Enumeration enumeration = request.getParameterNames(); | |||
| logger.error("请求参数"); | |||
| while (enumeration.hasMoreElements()) { | |||
| String name = enumeration.nextElement().toString(); | |||
| logger.error(name + "---" + request.getParameter(name)); | |||
| } | |||
| StackTraceElement[] error = ex.getStackTrace(); | |||
| for (StackTraceElement stackTraceElement : error) { | |||
| logger.error(stackTraceElement.toString()); | |||
| } | |||
| logger.error("************************异常结束*******************************"); | |||
| } | |||
| private boolean checkExceptionType(Exception e) { | |||
| // if(e instanceof MallinkException) { | |||
| // MallinkException me = (MallinkException)e; | |||
| // if(me.getErrorCode() == ErrorCode.UNLOGIN.getCode() | |||
| // || me.getErrorCode() == ErrorCode.NET_TOKEN_INVALID.getCode()) { | |||
| // // token异常问题, 不发邮件 | |||
| // return true; | |||
| // } else if(me.getErrorCode() == ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION.getCode()) { | |||
| // // 重复访问不打印异常消息 | |||
| // return true; | |||
| // } | |||
| // } | |||
| return false; | |||
| } | |||
| private boolean checkAuthException(Exception e) { | |||
| return e instanceof AuthorizationException; | |||
| } | |||
| } | |||
| @@ -0,0 +1,199 @@ | |||
| package com.iformall.common; | |||
| import com.iformall.utils.IPUtil; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import java.lang.management.ManagementFactory; | |||
| import java.net.UnknownHostException; | |||
| import java.util.ArrayList; | |||
| import java.util.List; | |||
| /** | |||
| * 产生唯一ID的snow flake | |||
| * 41(timestamp)+16(ip)+18(pid)+8(seq) | |||
| * | |||
| * @author changstone | |||
| * | |||
| */ | |||
| public class IdWorker { | |||
| private final Logger logger = LoggerFactory.getLogger(IdWorker.class); | |||
| // ==============================Fields=========================================== | |||
| /** 开始时间截 (2015-01-01) */ | |||
| private final long twepoch = 1489111610226L; | |||
| /** 机器id所占的位数 */ | |||
| private final long workerIdBits = 5L; | |||
| /** 数据标识id所占的位数 */ | |||
| private final long dataCenterIdBits = 5L; | |||
| /** 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) */ | |||
| private final long maxWorkerId = -1L ^ (-1L << workerIdBits); | |||
| /** 支持的最大数据标识id,结果是31 */ | |||
| private final long maxDataCenterId = -1L ^ (-1L << dataCenterIdBits); | |||
| /** 序列在id中占的位数 */ | |||
| private final long sequenceBits = 12L; | |||
| /** 机器ID向左移12位 */ | |||
| private final long workerIdShift = sequenceBits; | |||
| /** 数据标识id向左移17位(12+5) */ | |||
| private final long dataCenterIdShift = sequenceBits + workerIdBits; | |||
| /** 时间截向左移22位(5+5+12) */ | |||
| private final long timestampLeftShift = sequenceBits + workerIdBits + dataCenterIdBits; | |||
| /** 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) */ | |||
| private final long sequenceMask = -1L ^ (-1L << sequenceBits); | |||
| /** 工作机器ID(0~31) */ | |||
| private long workerId; | |||
| /** 数据中心ID(0~31) */ | |||
| private long dataCenterId; | |||
| /** 毫秒内序列(0~4095) */ | |||
| private long sequence = 0L; | |||
| /** 上次生成ID的时间截 */ | |||
| private long lastTimestamp = -1L; | |||
| ///////////////////////////////////////////////////////////////////////////////// | |||
| private static IdWorker instance = null; | |||
| public static IdWorker get() { | |||
| if(instance == null) { | |||
| synchronized (IdWorker.class){ | |||
| if(instance==null){ | |||
| instance = new IdWorker(); | |||
| } | |||
| } | |||
| } | |||
| return instance; | |||
| } | |||
| private IdWorker() { | |||
| String ipAddr = "192.168.1.1"; | |||
| try { | |||
| ipAddr = IPUtil.getLocalHostLANAddress().getHostAddress(); | |||
| } catch (UnknownHostException e) { | |||
| e.printStackTrace(); | |||
| } | |||
| String[] ipArray = ipAddr.split("\\."); | |||
| Long workerId = (Long.valueOf(ipArray[3]) % maxWorkerId) & maxWorkerId; /// Long.valueOf(ipArray[2]) << 8 | | |||
| String pName = ManagementFactory.getRuntimeMXBean().getName(); | |||
| Long dataCenterId = Long.valueOf(pName.split("@")[0]) & maxDataCenterId; | |||
| if (workerId > maxWorkerId || workerId < 0) { | |||
| throw new IllegalArgumentException(String.format("workerId can't be greater than %d or less than 0", maxWorkerId)); | |||
| } | |||
| if (dataCenterId > maxDataCenterId || dataCenterId < 0) { | |||
| throw new IllegalArgumentException(String.format("dataCenterId can't be greater than %d or less than 0", maxDataCenterId)); | |||
| } | |||
| this.workerId = workerId; | |||
| this.dataCenterId = dataCenterId; | |||
| } | |||
| //==============================Constructors===================================== | |||
| /** | |||
| * 构造函数 | |||
| * @param workerId 工作ID (0~31) | |||
| * @param dataCenterId 数据中心ID (0~31) | |||
| */ | |||
| public IdWorker(long workerId, long dataCenterId) { | |||
| if (workerId > maxWorkerId || workerId < 0) { | |||
| throw new IllegalArgumentException(String.format("workerId can't be greater than %d or less than 0", maxWorkerId)); | |||
| } | |||
| if (dataCenterId > maxDataCenterId || dataCenterId < 0) { | |||
| throw new IllegalArgumentException(String.format("dataCenterId can't be greater than %d or less than 0", maxDataCenterId)); | |||
| } | |||
| this.workerId = workerId; | |||
| this.dataCenterId = dataCenterId; | |||
| } | |||
| // ==============================Methods========================================== | |||
| /** | |||
| * 获得下一个ID (该方法是线程安全的) | |||
| * @return SnowflakeId | |||
| */ | |||
| public synchronized long nextId() { | |||
| long timestamp = timeGen(); | |||
| //如果当前时间小于上一次ID生成的时间戳,说明系统时钟回退过这个时候应当抛出异常 | |||
| if (timestamp < lastTimestamp) { | |||
| throw new RuntimeException( | |||
| String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", lastTimestamp - timestamp)); | |||
| } | |||
| //如果是同一时间生成的,则进行毫秒内序列 | |||
| if (lastTimestamp == timestamp) { | |||
| sequence = (sequence + 1) & sequenceMask; | |||
| //毫秒内序列溢出 | |||
| if (sequence == 0) { | |||
| //阻塞到下一个毫秒,获得新的时间戳 | |||
| timestamp = tilNextMillis(lastTimestamp); | |||
| } | |||
| } | |||
| //时间戳改变,毫秒内序列重置 | |||
| else { | |||
| sequence = 0L; | |||
| } | |||
| //上次生成ID的时间截 | |||
| lastTimestamp = timestamp; | |||
| //移位并通过或运算拼到一起组成64位的ID | |||
| return ((timestamp - twepoch) << timestampLeftShift) // | |||
| | (dataCenterId << dataCenterIdShift) // | |||
| | (workerId << workerIdShift) // | |||
| | sequence; | |||
| } | |||
| /** | |||
| * 阻塞到下一个毫秒,直到获得新的时间戳 | |||
| * @param lastTimestamp 上次生成ID的时间截 | |||
| * @return 当前时间戳 | |||
| */ | |||
| protected long tilNextMillis(long lastTimestamp) { | |||
| long timestamp = timeGen(); | |||
| while (timestamp <= lastTimestamp) { | |||
| timestamp = timeGen(); | |||
| } | |||
| return timestamp; | |||
| } | |||
| /** | |||
| * 返回以毫秒为单位的当前时间 | |||
| * @return 当前时间(毫秒) | |||
| */ | |||
| protected long timeGen() { | |||
| return System.currentTimeMillis(); | |||
| } | |||
| //==============================Test============================================= | |||
| /** 测试 */ | |||
| public static void main(String[] args) { | |||
| System.out.println(System.currentTimeMillis()); | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| List<Thread> list = new ArrayList<>(); | |||
| for(int j=0;j< 40;j++) { | |||
| list.add(new Thread(() -> { | |||
| long startTime = System.nanoTime(); | |||
| for (int i = 0; i < 50000; i++) { | |||
| long id = idWorker.nextId(); | |||
| System.out.println(Thread.currentThread().getId() + ", " + id); | |||
| //System.out.println(String.valueOf(id)); | |||
| //System.out.println(String.valueOf(id).length()); | |||
| } | |||
| System.out.println((System.nanoTime() - startTime) / 1000000 + "ms"); | |||
| })); | |||
| } | |||
| for(int j=0;j<10;j++){ | |||
| Thread thread = list.get(j); | |||
| thread.start(); | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,12 @@ | |||
| package com.iformall.common; | |||
| import java.lang.annotation.ElementType; | |||
| import java.lang.annotation.Retention; | |||
| import java.lang.annotation.RetentionPolicy; | |||
| import java.lang.annotation.Target; | |||
| @Target(ElementType.FIELD) | |||
| @Retention(RetentionPolicy.RUNTIME) | |||
| public @interface LogColumn { | |||
| String value() default ""; | |||
| } | |||
| @@ -0,0 +1,47 @@ | |||
| package com.iformall.common; | |||
| import org.springframework.web.context.request.RequestAttributes; | |||
| public class NonWebRequestAttributes implements RequestAttributes{ | |||
| @Override | |||
| public Object getAttribute(String arg0, int arg1) { | |||
| return null; | |||
| } | |||
| @Override | |||
| public String[] getAttributeNames(int arg0) { | |||
| return null; | |||
| } | |||
| @Override | |||
| public String getSessionId() { | |||
| return null; | |||
| } | |||
| @Override | |||
| public Object getSessionMutex() { | |||
| return null; | |||
| } | |||
| @Override | |||
| public void registerDestructionCallback(String arg0, Runnable arg1, int arg2) { | |||
| } | |||
| @Override | |||
| public void removeAttribute(String arg0, int arg1) { | |||
| } | |||
| @Override | |||
| public Object resolveReference(String arg0) { | |||
| return null; | |||
| } | |||
| @Override | |||
| public void setAttribute(String arg0, Object arg1, int arg2) { | |||
| } | |||
| } | |||
| @@ -0,0 +1,32 @@ | |||
| package com.iformall.common; | |||
| /** | |||
| * @author chenkx | |||
| * @date 2018-01-05. | |||
| */ | |||
| public class Result { | |||
| public int code; | |||
| public String message; | |||
| public static final int SUCCESS = 200; | |||
| public static final int ERROR = 500; | |||
| public static final int UNLOGIN = 701; | |||
| public Result() { | |||
| this.code = 200; | |||
| this.message = "success"; | |||
| } | |||
| public Result(int code, String message) { | |||
| this.code = code; | |||
| this.message = message; | |||
| } | |||
| public Result(ErrorCode errorCode) { | |||
| this.code = errorCode.getCode(); | |||
| this.message = errorCode.getMessage(); | |||
| } | |||
| } | |||
| @@ -0,0 +1,98 @@ | |||
| package com.iformall.common; | |||
| import java.beans.BeanInfo; | |||
| import java.beans.Introspector; | |||
| import java.beans.PropertyDescriptor; | |||
| import java.util.ArrayList; | |||
| import java.util.HashMap; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| /** | |||
| * @author chenkx | |||
| * @date 2018-01-05. | |||
| */ | |||
| public class ResultData extends Result { | |||
| public Object data; | |||
| public ResultData() { | |||
| super(); | |||
| } | |||
| public ResultData(Object data) { | |||
| this(); | |||
| this.data = data; | |||
| } | |||
| public static ResultData returnResultObject(int code) { | |||
| String value = ErrorCode.getByCode(code).getMessage(); | |||
| return new ResultData(code, value); | |||
| } | |||
| public ResultData(Enum<?>[] ens) { | |||
| List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); | |||
| for (Enum<?> en : ens) { | |||
| Map<String, Object> map = enumToMap(en); | |||
| list.add(map); | |||
| } | |||
| data = list; | |||
| } | |||
| private Map<String, Object> enumToMap(Enum<?> en) { | |||
| Map<String, Object> map = new HashMap<>(); | |||
| try { | |||
| BeanInfo info = Introspector.getBeanInfo(en.getClass()); | |||
| PropertyDescriptor[] descriptors = info.getPropertyDescriptors(); | |||
| for (PropertyDescriptor property : descriptors) { | |||
| if (property.getPropertyType().getName().equals(Class.class.getName())) { | |||
| continue; | |||
| } | |||
| Object value = property.getReadMethod().invoke(en); | |||
| map.put(property.getName(), value); | |||
| } | |||
| } catch (Exception ex) { | |||
| throw new RuntimeException(ex); | |||
| } | |||
| return map; | |||
| } | |||
| public ResultData(int code, Exception e) { | |||
| super(code, e.toString()); | |||
| } | |||
| public ResultData(int code, String message) { | |||
| super(code, message); | |||
| } | |||
| public ResultData(int code, String message, Object data) { | |||
| this.code = code; | |||
| this.message = message; | |||
| this.data = data; | |||
| } | |||
| public ResultData(ErrorCode errorCode, Object data) { | |||
| this.code = errorCode.getCode(); | |||
| this.message = errorCode.getMessage(); | |||
| this.data = data; | |||
| } | |||
| public ResultData(ErrorCode errorCode) { | |||
| this.code = errorCode.getCode(); | |||
| this.message = errorCode.getMessage(); | |||
| } | |||
| public HashMap<String, Object> toHashMap() { | |||
| HashMap<String, Object> map = new HashMap<>(3); | |||
| map.put("code", this.code); | |||
| map.put("message", this.message); | |||
| map.put("data", data); | |||
| return map; | |||
| } | |||
| } | |||
| @@ -0,0 +1,16 @@ | |||
| package com.iformall.common; | |||
| import java.lang.annotation.ElementType; | |||
| import java.lang.annotation.Retention; | |||
| import java.lang.annotation.RetentionPolicy; | |||
| import java.lang.annotation.Target; | |||
| /** | |||
| * @author luozukai | |||
| * 排序注解 | |||
| */ | |||
| @Target(ElementType.FIELD) | |||
| @Retention(RetentionPolicy.RUNTIME) | |||
| public @interface SortColumn { | |||
| String column(); | |||
| } | |||
| @@ -0,0 +1,13 @@ | |||
| package com.iformall.common; | |||
| public class SysConfigConstant { | |||
| public static final String vierfy_seconds_key="vierfySeconds"; | |||
| public static final String card_vierfy_seconds_key="cardVierfySeconds"; | |||
| public static final String default_merchant_b_user = "defaultMerchantBUserId"; | |||
| public static final String coupon_detail_show_selled = "couponDetailShowSelled"; | |||
| public static final String coupon_list_show_selled = "couponListShowSelled"; | |||
| public static final String member_seconds_key="memberSeconds"; | |||
| public static final String merchant_credit_locked="merchantCreditLocked"; | |||
| } | |||
| @@ -0,0 +1,46 @@ | |||
| package com.iformall.common; | |||
| import org.springframework.web.context.request.RequestAttributes; | |||
| import org.springframework.web.context.request.RequestContextHolder; | |||
| public class TenantThreadLocal { | |||
| //private static ThreadLocal<String> local = new ThreadLocal<String>(); | |||
| //private static ThreadLocal<String> parentLocal = new ThreadLocal<String>(); | |||
| public static void setCurrentThreadTenant(String tenantId,String parentId) { | |||
| getRequestAttributesSafely().setAttribute("tenaneId", tenantId, RequestAttributes.SCOPE_REQUEST); | |||
| getRequestAttributesSafely().setAttribute("parentTenaneId", parentId, RequestAttributes.SCOPE_REQUEST); | |||
| //local.set(tenantId); | |||
| //parentLocal.set(parentId); | |||
| } | |||
| public static String getTenantId() { | |||
| return (String)getRequestAttributesSafely().getAttribute("tenaneId", RequestAttributes.SCOPE_REQUEST); | |||
| //return local.get(); | |||
| } | |||
| public static String getParentTenantId() { | |||
| return (String)getRequestAttributesSafely().getAttribute("parentTenaneId", RequestAttributes.SCOPE_REQUEST); | |||
| //return parentLocal.get(); | |||
| } | |||
| public static void remove() { | |||
| getRequestAttributesSafely().removeAttribute("tenaneId", RequestAttributes.SCOPE_REQUEST); | |||
| getRequestAttributesSafely().removeAttribute("parentTenaneId", RequestAttributes.SCOPE_REQUEST); | |||
| //local.remove(); | |||
| //parentLocal.remove(); | |||
| } | |||
| //如果是非web的线程,则都为空 | |||
| public static RequestAttributes getRequestAttributesSafely(){ | |||
| RequestAttributes requestAttributes = null; | |||
| try{ | |||
| requestAttributes = RequestContextHolder.currentRequestAttributes(); | |||
| }catch (IllegalStateException e){ | |||
| requestAttributes = new NonWebRequestAttributes(); | |||
| } | |||
| return requestAttributes; | |||
| } | |||
| } | |||
| @@ -0,0 +1,52 @@ | |||
| package com.iformall.config; | |||
| import org.springframework.boot.context.properties.ConfigurationProperties; | |||
| import org.springframework.stereotype.Component; | |||
| /** | |||
| * @author Stormeye | |||
| */ | |||
| @Component | |||
| @ConfigurationProperties(prefix = "aws") | |||
| public class AwsProperty { | |||
| // AWS ACCESS KEY | |||
| private String access; | |||
| private String secret; | |||
| private String clientRegion; | |||
| private String bucketName; | |||
| public String getAccess() { | |||
| return access; | |||
| } | |||
| public void setAccess(String access) { | |||
| this.access = access; | |||
| } | |||
| public String getSecret() { | |||
| return secret; | |||
| } | |||
| public void setSecret(String secret) { | |||
| this.secret = secret; | |||
| } | |||
| public String getClientRegion() { | |||
| return clientRegion; | |||
| } | |||
| public void setClientRegion(String clientRegion) { | |||
| this.clientRegion = clientRegion; | |||
| } | |||
| public String getBucketName() { | |||
| return bucketName; | |||
| } | |||
| public void setBucketName(String bucketName) { | |||
| this.bucketName = bucketName; | |||
| } | |||
| } | |||
| @@ -0,0 +1,368 @@ | |||
| package com.iformall.config; | |||
| import java.util.ArrayList; | |||
| import java.util.List; | |||
| import java.util.Properties; | |||
| import com.iformall.plugin.MyBatisItercepters; | |||
| import com.iformall.plugin.MyBatisPlus; | |||
| import com.iformall.plugin.autoTenantId.MultiTenancy; | |||
| import com.iformall.plugin.shard.impl.EnumShardingRule; | |||
| import com.iformall.plugin.shard.impl.ShardingSphere; | |||
| import com.iformall.plugin.shard.plugin.ShardingSpherePlugin; | |||
| public class BaseMyBatisConfiguration { | |||
| protected MyBatisItercepters allIntercepters() { | |||
| MyBatisItercepters intercepters = new MyBatisItercepters(); | |||
| // List<MyBatisPlus> plugins = new ArrayList<MyBatisPlus>(); | |||
| // plugins.add(multiTenancy()); | |||
| // plugins.add(baseShardingSpherePlugin()); | |||
| // | |||
| // intercepters.setPlugins(plugins); | |||
| return intercepters; | |||
| } | |||
| /** | |||
| * 自动 tenantId 配置 | |||
| * @return | |||
| */ | |||
| protected MultiTenancy multiTenancy() { | |||
| MultiTenancy multiTenancy = new MultiTenancy(); | |||
| Properties properties = new Properties(); | |||
| properties.setProperty("tenantIdColumn", "tenant_id"); | |||
| properties.setProperty("parentTenantIdColumn", "parent_tenant_id"); | |||
| properties.setProperty("dialect", "mysql"); | |||
| properties.setProperty("tenantInfo", "com.iformall.tenant.TenantInfoImpl"); | |||
| multiTenancy.setProperties(properties); | |||
| return multiTenancy; | |||
| } | |||
| /** | |||
| * 分表配置 | |||
| * @return | |||
| */ | |||
| protected ShardingSpherePlugin baseShardingSpherePlugin() { | |||
| ShardingSpherePlugin shardingSpherePlugin = new ShardingSpherePlugin(); | |||
| List<ShardingSphere> shardingList = new ArrayList<ShardingSphere>(); | |||
| ShardingSphere wxCouponrSharding = new ShardingSphere(); | |||
| wxCouponrSharding.setColumn("tenant_id"); | |||
| wxCouponrSharding.setTableName("wx_coupon"); | |||
| wxCouponrSharding.setCount(100); | |||
| wxCouponrSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxCouponrSharding); | |||
| ShardingSphere ttPoiTakeRateSharding = new ShardingSphere(); | |||
| ttPoiTakeRateSharding.setColumn("tenant_id"); | |||
| ttPoiTakeRateSharding.setTableName("tt_poi_take_rate"); | |||
| ttPoiTakeRateSharding.setCount(100); | |||
| ttPoiTakeRateSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(ttPoiTakeRateSharding); | |||
| ShardingSphere wxCouponrMerchantSharding = new ShardingSphere(); | |||
| wxCouponrMerchantSharding.setColumn("tenant_id"); | |||
| wxCouponrMerchantSharding.setTableName("wx_coupon_merchant"); | |||
| wxCouponrMerchantSharding.setCount(100); | |||
| wxCouponrMerchantSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxCouponrMerchantSharding); | |||
| ShardingSphere wxCouponrChannelSharding = new ShardingSphere(); | |||
| wxCouponrChannelSharding.setColumn("tenant_id"); | |||
| wxCouponrChannelSharding.setTableName("wx_coupon_channel"); | |||
| wxCouponrChannelSharding.setCount(100); | |||
| wxCouponrChannelSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxCouponrChannelSharding); | |||
| ShardingSphere wxCUserSharding = new ShardingSphere(); | |||
| wxCUserSharding.setColumn("tenant_id"); | |||
| wxCUserSharding.setTableName("wx_c_user"); | |||
| wxCUserSharding.setCount(100); | |||
| wxCUserSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxCUserSharding); | |||
| ShardingSphere ttCUserSharding = new ShardingSphere(); | |||
| ttCUserSharding.setColumn("tenant_id"); | |||
| ttCUserSharding.setTableName("tt_c_user"); | |||
| ttCUserSharding.setCount(100); | |||
| ttCUserSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(ttCUserSharding); | |||
| ShardingSphere wxMemberCardSharding = new ShardingSphere(); | |||
| wxMemberCardSharding.setColumn("final_tenant_id"); | |||
| wxMemberCardSharding.setTableName("wx_member_card"); | |||
| wxMemberCardSharding.setCount(100); | |||
| wxMemberCardSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxMemberCardSharding); | |||
| ShardingSphere basicInfoSharding = new ShardingSphere(); | |||
| basicInfoSharding.setColumn("final_tenant_id"); | |||
| basicInfoSharding.setTableName("wx_c_user_basic_info"); | |||
| basicInfoSharding.setCount(100); | |||
| basicInfoSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(basicInfoSharding); | |||
| ShardingSphere basicInfoAddressSharding = new ShardingSphere(); | |||
| basicInfoAddressSharding.setColumn("final_tenant_id"); | |||
| basicInfoAddressSharding.setTableName("user_basic_info_address"); | |||
| basicInfoAddressSharding.setCount(100); | |||
| basicInfoAddressSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(basicInfoAddressSharding); | |||
| ShardingSphere mallCooUserInfoSharding = new ShardingSphere(); | |||
| mallCooUserInfoSharding.setColumn("tenant_id"); | |||
| mallCooUserInfoSharding.setTableName("mall_coo_user_info"); | |||
| mallCooUserInfoSharding.setCount(100); | |||
| mallCooUserInfoSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(mallCooUserInfoSharding); | |||
| ShardingSphere basicSignSharding = new ShardingSphere(); | |||
| basicSignSharding.setColumn("tenant_id"); | |||
| basicSignSharding.setTableName("wx_c_user_basic_sign"); | |||
| basicSignSharding.setCount(100); | |||
| basicSignSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(basicSignSharding); | |||
| ShardingSphere wxbasicChildSharding = new ShardingSphere(); | |||
| wxbasicChildSharding.setColumn("tenant_id"); | |||
| wxbasicChildSharding.setTableName("wx_c_user_basic_child"); | |||
| wxbasicChildSharding.setCount(100); | |||
| wxbasicChildSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxbasicChildSharding); | |||
| ShardingSphere wxCUserFromSharding = new ShardingSphere(); | |||
| wxCUserFromSharding.setColumn("tenant_id"); | |||
| wxCUserFromSharding.setTableName("wx_c_user_from"); | |||
| wxCUserFromSharding.setCount(100); | |||
| wxCUserFromSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxCUserFromSharding); | |||
| ShardingSphere wxBusinessCircleOrderSharding = new ShardingSphere(); | |||
| wxBusinessCircleOrderSharding.setColumn("tenant_id"); | |||
| wxBusinessCircleOrderSharding.setTableName("wx_business_circle_order"); | |||
| wxBusinessCircleOrderSharding.setCount(100); | |||
| wxBusinessCircleOrderSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxBusinessCircleOrderSharding); | |||
| ShardingSphere aliBusinessCircleOrderSharding = new ShardingSphere(); | |||
| aliBusinessCircleOrderSharding.setColumn("tenant_id"); | |||
| aliBusinessCircleOrderSharding.setTableName("ali_business_circle_order"); | |||
| aliBusinessCircleOrderSharding.setCount(100); | |||
| aliBusinessCircleOrderSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(aliBusinessCircleOrderSharding); | |||
| ShardingSphere wxThirdPartyOrdersSharding = new ShardingSphere(); | |||
| wxThirdPartyOrdersSharding.setColumn("tenant_id"); | |||
| wxThirdPartyOrdersSharding.setTableName("wx_third_party_orders"); | |||
| wxThirdPartyOrdersSharding.setCount(100); | |||
| wxThirdPartyOrdersSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxThirdPartyOrdersSharding); | |||
| ShardingSphere wxOrderSharding = new ShardingSphere(); | |||
| wxOrderSharding.setColumn("tenant_id"); | |||
| wxOrderSharding.setTableName("wx_order"); | |||
| wxOrderSharding.setCount(100); | |||
| wxOrderSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxOrderSharding); | |||
| ShardingSphere orderCpsSharding = new ShardingSphere(); | |||
| orderCpsSharding.setColumn("tenant_id"); | |||
| orderCpsSharding.setTableName("order_cps"); | |||
| orderCpsSharding.setCount(100); | |||
| orderCpsSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(orderCpsSharding); | |||
| ShardingSphere orderSnapshotSharding = new ShardingSphere(); | |||
| orderSnapshotSharding.setColumn("tenant_id"); | |||
| orderSnapshotSharding.setTableName("order_snapshot"); | |||
| orderSnapshotSharding.setCount(100); | |||
| orderSnapshotSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(orderSnapshotSharding); | |||
| ShardingSphere wxPayOrderSharding = new ShardingSphere(); | |||
| wxPayOrderSharding.setColumn("tenant_id"); | |||
| wxPayOrderSharding.setTableName("wx_pay_order"); | |||
| wxPayOrderSharding.setCount(100); | |||
| wxPayOrderSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxPayOrderSharding); | |||
| ShardingSphere wxCouponOrderSharding = new ShardingSphere(); | |||
| wxCouponOrderSharding.setColumn("tenant_id"); | |||
| wxCouponOrderSharding.setTableName("wx_coupon_order"); | |||
| wxCouponOrderSharding.setCount(100); | |||
| wxCouponOrderSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxCouponOrderSharding); | |||
| // ShardingSphere wxCouponSendSharding = new ShardingSphere(); | |||
| // wxCouponSendSharding.setColumn("tenant_id"); | |||
| // wxCouponSendSharding.setTableName("wx_coupon_send"); | |||
| // wxCouponSendSharding.setCount(100); | |||
| // wxCouponSendSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| // shardingList.add(wxCouponSendSharding); | |||
| ShardingSphere wxOrderGroupSharding = new ShardingSphere(); | |||
| wxOrderGroupSharding.setColumn("tenant_id"); | |||
| wxOrderGroupSharding.setTableName("wx_order_group"); | |||
| wxOrderGroupSharding.setCount(100); | |||
| wxOrderGroupSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxOrderGroupSharding); | |||
| ShardingSphere wxOrderPressSharding = new ShardingSphere(); | |||
| wxOrderPressSharding.setColumn("tenant_id"); | |||
| wxOrderPressSharding.setTableName("wx_order_press"); | |||
| wxOrderPressSharding.setCount(100); | |||
| wxOrderPressSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxOrderPressSharding); | |||
| ShardingSphere wxPosOrderSharding = new ShardingSphere(); | |||
| wxPosOrderSharding.setColumn("tenant_id"); | |||
| wxPosOrderSharding.setTableName("pos_order"); | |||
| wxPosOrderSharding.setCount(100); | |||
| wxPosOrderSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxPosOrderSharding); | |||
| ShardingSphere wxPosPayOrderSharding = new ShardingSphere(); | |||
| wxPosPayOrderSharding.setColumn("tenant_id"); | |||
| wxPosPayOrderSharding.setTableName("pos_pay_order"); | |||
| wxPosPayOrderSharding.setCount(100); | |||
| wxPosPayOrderSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxPosPayOrderSharding); | |||
| //TODO ,逻辑待处理,tenant_id未和basic_info的final_tenant_id对应,去掉parent_tenant_id | |||
| ShardingSphere wxScoreHistorySharding = new ShardingSphere(); | |||
| wxScoreHistorySharding.setColumn("tenant_id"); | |||
| wxScoreHistorySharding.setTableName("wx_score_history"); | |||
| wxScoreHistorySharding.setCount(100); | |||
| wxScoreHistorySharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxScoreHistorySharding); | |||
| //TODO ,逻辑待处理,tenant_id未和basic_info的final_tenant_id对应,去掉parent_tenant_id | |||
| ShardingSphere wxCreditHistorySharding = new ShardingSphere(); | |||
| wxCreditHistorySharding.setColumn("tenant_id"); | |||
| wxCreditHistorySharding.setTableName("wx_credit_history"); | |||
| wxCreditHistorySharding.setCount(100); | |||
| wxCreditHistorySharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxCreditHistorySharding); | |||
| //TODO ,打标签定时任务。逻辑待处理, | |||
| ShardingSphere wxCUserTagsSharding = new ShardingSphere(); | |||
| wxCUserTagsSharding.setColumn("tenant_id"); | |||
| wxCUserTagsSharding.setTableName("wx_c_user_tags"); | |||
| wxCUserTagsSharding.setCount(100); | |||
| wxCUserTagsSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxCUserTagsSharding); | |||
| ShardingSphere wxCarCmdLogSharding = new ShardingSphere(); | |||
| wxCarCmdLogSharding.setColumn("tenant_id"); | |||
| wxCarCmdLogSharding.setTableName("wx_car_cmd_log"); | |||
| wxCarCmdLogSharding.setCount(100); | |||
| wxCarCmdLogSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxCarCmdLogSharding); | |||
| ShardingSphere wxMerchantSubsidySharding = new ShardingSphere(); | |||
| wxMerchantSubsidySharding.setColumn("tenant_id"); | |||
| wxMerchantSubsidySharding.setTableName("wx_merchant_subsidy"); | |||
| wxMerchantSubsidySharding.setCount(100); | |||
| wxMerchantSubsidySharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxMerchantSubsidySharding); | |||
| ShardingSphere wxProfitSharingOrderSharding = new ShardingSphere(); | |||
| wxProfitSharingOrderSharding.setColumn("tenant_id"); | |||
| wxProfitSharingOrderSharding.setTableName("wx_profit_sharing_order"); | |||
| wxProfitSharingOrderSharding.setCount(100); | |||
| wxProfitSharingOrderSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxProfitSharingOrderSharding); | |||
| ShardingSphere wxCouponActionLogSharding = new ShardingSphere(); | |||
| wxCouponActionLogSharding.setColumn("tenant_id"); | |||
| wxCouponActionLogSharding.setTableName("wx_coupon_action_log"); | |||
| wxCouponActionLogSharding.setCount(100); | |||
| wxCouponActionLogSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxCouponActionLogSharding); | |||
| ShardingSphere wxCarJSOrderSharding = new ShardingSphere(); | |||
| wxCarJSOrderSharding.setColumn("car_number"); | |||
| wxCarJSOrderSharding.setTableName("wx_car_js_order"); | |||
| wxCarJSOrderSharding.setCount(100); | |||
| wxCarJSOrderSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxCarJSOrderSharding); | |||
| ShardingSphere wxCashOutSharding = new ShardingSphere(); | |||
| wxCashOutSharding.setColumn("tenant_id"); | |||
| wxCashOutSharding.setTableName("wx_cash_out"); | |||
| wxCashOutSharding.setCount(100); | |||
| wxCashOutSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxCashOutSharding); | |||
| ShardingSphere alipayCUserSharding = new ShardingSphere(); | |||
| alipayCUserSharding.setColumn("tenant_id"); | |||
| alipayCUserSharding.setTableName("alipay_c_user"); | |||
| alipayCUserSharding.setCount(100); | |||
| alipayCUserSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(alipayCUserSharding); | |||
| ShardingSphere wxComposeOrderSharding = new ShardingSphere(); | |||
| wxComposeOrderSharding.setColumn("tenant_id"); | |||
| wxComposeOrderSharding.setTableName("wx_batch_order"); | |||
| wxComposeOrderSharding.setCount(100); | |||
| wxComposeOrderSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxComposeOrderSharding); | |||
| ShardingSphere wxPressBatchSharding = new ShardingSphere(); | |||
| wxPressBatchSharding.setColumn("tenant_id"); | |||
| wxPressBatchSharding.setTableName("wx_press_batch"); | |||
| wxPressBatchSharding.setCount(100); | |||
| wxPressBatchSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxPressBatchSharding); | |||
| ShardingSphere wxPressBatchItemSharding = new ShardingSphere(); | |||
| wxPressBatchItemSharding.setColumn("tenant_id"); | |||
| wxPressBatchItemSharding.setTableName("wx_press_batch_item"); | |||
| wxPressBatchItemSharding.setCount(100); | |||
| wxPressBatchItemSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxPressBatchItemSharding); | |||
| ShardingSphere wxCouponMallSharding = new ShardingSphere(); | |||
| wxCouponMallSharding.setColumn("tenant_id"); | |||
| wxCouponMallSharding.setTableName("wx_coupon_mall"); | |||
| wxCouponMallSharding.setCount(100); | |||
| wxCouponMallSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxCouponMallSharding); | |||
| ShardingSphere wxCarPayOrderSharding = new ShardingSphere(); | |||
| wxCarPayOrderSharding.setColumn("tenant_id"); | |||
| wxCarPayOrderSharding.setTableName("wx_car_pay_order"); | |||
| wxCarPayOrderSharding.setCount(100); | |||
| wxCarPayOrderSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxCarPayOrderSharding); | |||
| ShardingSphere wxCouponBatchSharding = new ShardingSphere(); | |||
| wxCouponBatchSharding.setColumn("tenant_id"); | |||
| wxCouponBatchSharding.setTableName("wx_coupon_batch"); | |||
| wxCouponBatchSharding.setCount(100); | |||
| wxCouponBatchSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxCouponBatchSharding); | |||
| ShardingSphere wxCouponBatchItemSharding = new ShardingSphere(); | |||
| wxCouponBatchItemSharding.setColumn("tenant_id"); | |||
| wxCouponBatchItemSharding.setTableName("wx_coupon_batch_item"); | |||
| wxCouponBatchItemSharding.setCount(100); | |||
| wxCouponBatchItemSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxCouponBatchItemSharding); | |||
| ShardingSphere wxBusinessSharding = new ShardingSphere(); | |||
| wxBusinessSharding.setColumn("final_tenant_id"); | |||
| wxBusinessSharding.setTableName("wx_business"); | |||
| wxBusinessSharding.setCount(100); | |||
| wxBusinessSharding.setRule(EnumShardingRule.HASH.getCode()); | |||
| shardingList.add(wxBusinessSharding); | |||
| //初始化 | |||
| shardingSpherePlugin.setShardingSpheres(shardingList); | |||
| Properties properties = new Properties(); | |||
| properties.setProperty("dialect", "mysql"); | |||
| shardingSpherePlugin.setProperties(properties); | |||
| return shardingSpherePlugin; | |||
| } | |||
| } | |||
| @@ -0,0 +1,69 @@ | |||
| package com.iformall.config; | |||
| import org.apache.commons.lang3.builder.ToStringBuilder; | |||
| import org.apache.commons.lang3.builder.ToStringStyle; | |||
| import org.springframework.boot.context.properties.ConfigurationProperties; | |||
| /** | |||
| * Stormeye | |||
| */ | |||
| @ConfigurationProperties(prefix = "wechat.open") | |||
| public class WechatOpenProperties { | |||
| /** | |||
| * 设置微信三方平台的appid | |||
| */ | |||
| private String componentAppId; | |||
| /** | |||
| * 设置微信三方平台的app secret | |||
| */ | |||
| private String componentSecret; | |||
| /** | |||
| * 设置微信三方平台的token | |||
| */ | |||
| private String componentToken; | |||
| /** | |||
| * 设置微信三方平台的EncodingAESKey | |||
| */ | |||
| private String componentAesKey; | |||
| public String getComponentAppId() { | |||
| return componentAppId; | |||
| } | |||
| public void setComponentAppId(String componentAppId) { | |||
| this.componentAppId = componentAppId; | |||
| } | |||
| public String getComponentSecret() { | |||
| return componentSecret; | |||
| } | |||
| public void setComponentSecret(String componentSecret) { | |||
| this.componentSecret = componentSecret; | |||
| } | |||
| public String getComponentToken() { | |||
| return componentToken; | |||
| } | |||
| public void setComponentToken(String componentToken) { | |||
| this.componentToken = componentToken; | |||
| } | |||
| public String getComponentAesKey() { | |||
| return componentAesKey; | |||
| } | |||
| public void setComponentAesKey(String componentAesKey) { | |||
| this.componentAesKey = componentAesKey; | |||
| } | |||
| @Override | |||
| public String toString() { | |||
| return ToStringBuilder.reflectionToString(this, | |||
| ToStringStyle.MULTI_LINE_STYLE); | |||
| } | |||
| } | |||
| @@ -0,0 +1,124 @@ | |||
| package com.iformall.config; | |||
| import org.springframework.boot.context.properties.ConfigurationProperties; | |||
| import redis.clients.jedis.JedisPoolConfig; | |||
| import redis.clients.jedis.Protocol; | |||
| import javax.net.ssl.HostnameVerifier; | |||
| import javax.net.ssl.SSLParameters; | |||
| import javax.net.ssl.SSLSocketFactory; | |||
| /** | |||
| * Stormeye | |||
| */ | |||
| @ConfigurationProperties(prefix = "wechat.redis") | |||
| public class WechatRedisProperies extends JedisPoolConfig { | |||
| private String host = Protocol.DEFAULT_HOST; | |||
| private int port = Protocol.DEFAULT_PORT; | |||
| private String password; | |||
| private int database = 1; | |||
| private int connectionTimeout = Protocol.DEFAULT_TIMEOUT; | |||
| private int soTimeout = Protocol.DEFAULT_TIMEOUT; | |||
| private String clientName; | |||
| private boolean ssl; | |||
| private SSLSocketFactory sslSocketFactory; | |||
| private SSLParameters sslParameters; | |||
| private HostnameVerifier hostnameVerifier; | |||
| public boolean isSsl() { | |||
| return ssl; | |||
| } | |||
| public void setSsl(boolean ssl) { | |||
| this.ssl = ssl; | |||
| } | |||
| public SSLSocketFactory getSslSocketFactory() { | |||
| return sslSocketFactory; | |||
| } | |||
| public void setSslSocketFactory(SSLSocketFactory sslSocketFactory) { | |||
| this.sslSocketFactory = sslSocketFactory; | |||
| } | |||
| public SSLParameters getSslParameters() { | |||
| return sslParameters; | |||
| } | |||
| public void setSslParameters(SSLParameters sslParameters) { | |||
| this.sslParameters = sslParameters; | |||
| } | |||
| public HostnameVerifier getHostnameVerifier() { | |||
| return hostnameVerifier; | |||
| } | |||
| public void setHostnameVerifier(HostnameVerifier hostnameVerifier) { | |||
| this.hostnameVerifier = hostnameVerifier; | |||
| } | |||
| public String getHost() { | |||
| return host; | |||
| } | |||
| public void setHost(String host) { | |||
| if (host == null || "".equals(host)) { | |||
| host = Protocol.DEFAULT_HOST; | |||
| } | |||
| this.host = host; | |||
| } | |||
| public int getPort() { | |||
| return port; | |||
| } | |||
| public void setPort(int port) { | |||
| this.port = port; | |||
| } | |||
| public String getPassword() { | |||
| return password; | |||
| } | |||
| public void setPassword(String password) { | |||
| if ("".equals(password)) { | |||
| password = null; | |||
| } | |||
| this.password = password; | |||
| } | |||
| public int getDatabase() { | |||
| return database; | |||
| } | |||
| public void setDatabase(int database) { | |||
| this.database = database; | |||
| } | |||
| public String getClientName() { | |||
| return clientName; | |||
| } | |||
| public void setClientName(String clientName) { | |||
| if ("".equals(clientName)) { | |||
| clientName = null; | |||
| } | |||
| this.clientName = clientName; | |||
| } | |||
| public int getConnectionTimeout() { | |||
| return connectionTimeout; | |||
| } | |||
| public void setConnectionTimeout(int connectionTimeout) { | |||
| this.connectionTimeout = connectionTimeout; | |||
| } | |||
| public int getSoTimeout() { | |||
| return soTimeout; | |||
| } | |||
| public void setSoTimeout(int soTimeout) { | |||
| this.soTimeout = soTimeout; | |||
| } | |||
| } | |||
| @@ -0,0 +1,55 @@ | |||
| package com.iformall.domain.po; | |||
| import com.baomidou.mybatisplus.annotation.TableName; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| import java.util.Date; | |||
| @TableName(value = "wx_appinfo") | |||
| @Data | |||
| @EqualsAndHashCode(callSuper = true) | |||
| public class WxAppinfo extends TenantEntity { | |||
| private Long id; | |||
| @io.swagger.annotations.ApiModelProperty(value="小程序ID",name="appId") | |||
| private String appId; | |||
| @io.swagger.annotations.ApiModelProperty(value="公众号ID",name="parentAppId") | |||
| private String parentAppId; | |||
| @io.swagger.annotations.ApiModelProperty(value="小程序名",name="name") | |||
| private String name; | |||
| @io.swagger.annotations.ApiModelProperty(value="小程序secret",name="secret") | |||
| private String secret; | |||
| @io.swagger.annotations.ApiModelProperty(value="消息token",name="token") | |||
| private String token; | |||
| @io.swagger.annotations.ApiModelProperty(value="消息aeskey",name="aesKey") | |||
| private String aesKey; | |||
| @io.swagger.annotations.ApiModelProperty(value="消息类型",name="msgDataFormat") | |||
| private String msgDataFormat; | |||
| @io.swagger.annotations.ApiModelProperty(value="微信访问token",name="accessToken") | |||
| private String accessToken; | |||
| @io.swagger.annotations.ApiModelProperty(value="上次生成accesstoken时间",name="lastTokenTime") | |||
| private Date lastTokenTime; | |||
| @io.swagger.annotations.ApiModelProperty(value="微信token有效时间单位(秒)",name="expiresIn") | |||
| private Integer expiresIn; | |||
| @io.swagger.annotations.ApiModelProperty(value="支付ID,参看wx_pay_account",name="payId") | |||
| private Long payId; | |||
| @io.swagger.annotations.ApiModelProperty(value="1B端2C端",name="type") | |||
| private Integer type; | |||
| @io.swagger.annotations.ApiModelProperty(value="模板类型",name="mouldType") | |||
| private Integer mouldType; | |||
| @io.swagger.annotations.ApiModelProperty(value="是否启用(0:启用,1禁用)",name="enable") | |||
| private Integer enable; | |||
| @io.swagger.annotations.ApiModelProperty(value="app平台 EnumAppPlat ",name="plat") | |||
| private Integer plat; | |||
| @io.swagger.annotations.ApiModelProperty(value="小程序链接",name="sortUrl") | |||
| private String sortUrl; | |||
| @io.swagger.annotations.ApiModelProperty(value="主体营业执照",name="businessLicense") | |||
| private String businessLicense; | |||
| @io.swagger.annotations.ApiModelProperty(value="主体ICP证",name="icp") | |||
| private String icp; | |||
| } | |||
| @@ -0,0 +1,29 @@ | |||
| package com.iformall.domain.po; | |||
| import com.baomidou.mybatisplus.annotation.TableName; | |||
| import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| import lombok.ToString; | |||
| import java.util.Date; | |||
| @TableName(value = "wx_c_user") | |||
| @JsonIgnoreProperties(ignoreUnknown = true) | |||
| @Data | |||
| @ToString(callSuper = true) | |||
| @EqualsAndHashCode(callSuper = true) | |||
| public class WxCUser extends TenantEntity { | |||
| private Long id; | |||
| @io.swagger.annotations.ApiModelProperty(value="微信openId",name="openId") | |||
| private String openId; | |||
| @io.swagger.annotations.ApiModelProperty(value="微信unionId",name="unionId") | |||
| private String unionId; | |||
| @io.swagger.annotations.ApiModelProperty(value="用户绑定的手机号",name="phone") | |||
| private String phone; | |||
| @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") | |||
| private Date updateDate; | |||
| @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") | |||
| private Date createDate; | |||
| } | |||
| @@ -0,0 +1,122 @@ | |||
| package com.iformall.domain.po; | |||
| import com.alibaba.fastjson.JSON; | |||
| import com.baomidou.mybatisplus.annotation.TableField; | |||
| import com.baomidou.mybatisplus.annotation.TableName; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import lombok.Data; | |||
| import lombok.EqualsAndHashCode; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| @TableName(value = "wx_pay_account") | |||
| @Data | |||
| @EqualsAndHashCode(callSuper = true) | |||
| public class WxPayAccount extends TenantEntity { | |||
| protected Long id; | |||
| @io.swagger.annotations.ApiModelProperty(value="微信商户号/特约服务商号",name="mchId") | |||
| private String mchId; | |||
| @io.swagger.annotations.ApiModelProperty(value="微信服务商号",name="subMchId") | |||
| private String subMchId; | |||
| @io.swagger.annotations.ApiModelProperty(value="服务商模式下的子商户公众账号ID",name="subAppId") | |||
| private String subAppId; | |||
| @io.swagger.annotations.ApiModelProperty(value="支付密钥",name="apiKey") | |||
| private String apiKey; | |||
| @io.swagger.annotations.ApiModelProperty(value="平台证书本地存放位置",name="certPath") | |||
| private String certPath; | |||
| @io.swagger.annotations.ApiModelProperty(value="商户支付密钥",name="merchantApiKey") | |||
| private String merchantApiKey; | |||
| @io.swagger.annotations.ApiModelProperty(value="商户自己的证书",name="merchantCertPath") | |||
| private String merchantCertPath; | |||
| @io.swagger.annotations.ApiModelProperty(value="微信回调,支持3种回调,(1.url/pay 2.url/refund3.url/separate)",name="notifyUrl") | |||
| private String notifyUrl; | |||
| @io.swagger.annotations.ApiModelProperty(value="tt回调token",name="notifyToken") | |||
| private String notifyToken; | |||
| @io.swagger.annotations.ApiModelProperty(value="平台apiV3秘钥",name="apiV3Key") | |||
| private String apiV3Key; | |||
| @io.swagger.annotations.ApiModelProperty(value="平台证书序列号",name="certSerialNo") | |||
| private String certSerialNo; | |||
| @io.swagger.annotations.ApiModelProperty(value="平台私钥文件",name="privateKeyPath") | |||
| private String privateKeyPath; | |||
| @io.swagger.annotations.ApiModelProperty(value="平台证书密钥文件",name="privateCertPemPath") | |||
| private String privateCertPemPath; | |||
| @io.swagger.annotations.ApiModelProperty(value="商户自己的apiv3密钥",name="merchantApiv3Key") | |||
| private String merchantApiv3Key; | |||
| @io.swagger.annotations.ApiModelProperty(value="商户自己的平台证书序列号",name="merchantCertSerialNo") | |||
| private String merchantCertSerialNo; | |||
| @io.swagger.annotations.ApiModelProperty(value="商户自己的密钥文件",name="merchantKeyPath") | |||
| private String merchantKeyPath; | |||
| @io.swagger.annotations.ApiModelProperty(value="商户自己的证书密钥文件",name="merchantCertPemPath") | |||
| private String merchantCertPemPath; | |||
| @io.swagger.annotations.ApiModelProperty(value="商户模式-0:普通商户模式1:服务商模式",name="type") | |||
| private Integer type; | |||
| @io.swagger.annotations.ApiModelProperty(value="EnumPayMchType 0:总分1:直连",name="mchType") | |||
| private Integer mchType; | |||
| @io.swagger.annotations.ApiModelProperty(value="开通的支付方式。抖音用 ",name="openPay") | |||
| private String openPay; | |||
| @io.swagger.annotations.ApiModelProperty(value="支付版本 EnumPayVersion",name="payVersion") | |||
| private Integer payVersion; | |||
| @io.swagger.annotations.ApiModelProperty(value="是否开启分账(0:未开启分账1:开启分账)",name="type") | |||
| private Integer share; | |||
| @io.swagger.annotations.ApiModelProperty(value="手续费(万分之几,默认60)",name="rate") | |||
| private Integer rate; | |||
| @io.swagger.annotations.ApiModelProperty(value="实际手续费(万分之几,默认60)",name="realRate") | |||
| private Integer realRate; | |||
| @io.swagger.annotations.ApiModelProperty(value="是否抽成",name="isCommission") | |||
| private Integer isCommission; | |||
| /** | |||
| * 微信适用。抖音通过类别获取 | |||
| */ | |||
| @io.swagger.annotations.ApiModelProperty(value="系统提点",name="systemRate") | |||
| private Integer systemRate; | |||
| @io.swagger.annotations.ApiModelProperty(value="销售提点",name="sellRate") | |||
| private Integer sellRate; | |||
| public String getPayNotifyV3Url() { | |||
| return notifyUrl + "/pay/v3/"+this.getTenantId(); | |||
| } | |||
| public String getPayNotifyUrl() { | |||
| return notifyUrl + "/pay/"+this.getTenantId(); | |||
| } | |||
| public String getRefundNotifyV3Url() { | |||
| return notifyUrl + "/refund/v3/"+this.getTenantId(); | |||
| } | |||
| public String getRefundNotifyUrl() { | |||
| return notifyUrl + "/refund/"+this.getTenantId(); | |||
| } | |||
| public String getSubsidyNotifyV3Url() { | |||
| return notifyUrl + "/subsidyPay/v3/"+this.getTenantId(); | |||
| } | |||
| public String getSubsidyNotifyUrl() { | |||
| return notifyUrl + "/subsidyPay"; | |||
| } | |||
| public boolean checkShare() { return share > 0; } | |||
| @io.swagger.annotations.ApiModelProperty(value="微信支付分serviceId",name="serviceId") | |||
| private String serviceId; | |||
| @io.swagger.annotations.ApiModelProperty(value="微信支付分回调地址",name="payScoreNotifyUrl") | |||
| private String payScoreNotifyUrl; | |||
| @io.swagger.annotations.ApiModelProperty(value="商圈版本",name="businessType") | |||
| private Integer businessType; | |||
| @io.swagger.annotations.ApiModelProperty(value="品牌ID",name="brandid") | |||
| private String brandid; | |||
| @io.swagger.annotations.ApiModelProperty(value="商圈会员卡ID",name="cardId") | |||
| private String cardId; | |||
| // @io.swagger.annotations.ApiModelProperty(value="app平台 EnumAppPlat ",name="plat") | |||
| // private Integer plat; | |||
| @TableField(exist = false) | |||
| private Long appInfoId; | |||
| } | |||
| @@ -0,0 +1,246 @@ | |||
| package com.iformall.domain.po.base; | |||
| import com.baomidou.mybatisplus.annotation.TableField; | |||
| import com.iformall.common.SortColumn; | |||
| import lombok.Data; | |||
| import lombok.extern.slf4j.Slf4j; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import java.io.Serializable; | |||
| import java.lang.reflect.Field; | |||
| import java.util.ArrayList; | |||
| import java.util.Arrays; | |||
| import java.util.List; | |||
| /** | |||
| * @author luozukai | |||
| * @date 2019/4/24 14:32 | |||
| */ | |||
| @Data | |||
| @Slf4j | |||
| public class BaseEntity implements Serializable { | |||
| private static final long serialVersionUID = 1L; | |||
| @TableField(exist = false) | |||
| private List<Long> ids; | |||
| @TableField(exist = false) | |||
| private String sortColumn; | |||
| @TableField(exist = false) | |||
| private String sortOrder; | |||
| @TableField(exist = false) | |||
| private String sortColumns; | |||
| @TableField(exist = false) | |||
| protected String floorForRule; | |||
| @TableField(exist = false) | |||
| protected String businessForRule; | |||
| @TableField(exist = false) | |||
| protected String[] tempShop; | |||
| public String getSortColumns() { | |||
| if(StringUtils.isBlank(sortColumn)){ | |||
| return sortColumns; | |||
| } | |||
| try { | |||
| //扫描子类SortColumn注解的属性,替换sortColumn | |||
| if(StringUtils.isNotBlank(sortColumn)) { | |||
| List<Field> fieldList = new ArrayList<>() ; | |||
| Class tempClass = this.getClass(); | |||
| while (tempClass != null) {//当父类为null的时候说明到达了最上层的父类(Object类). | |||
| fieldList.addAll(Arrays.asList(tempClass.getDeclaredFields())); | |||
| tempClass = tempClass.getSuperclass(); //得到父类,然后赋给自己 | |||
| } | |||
| //扫描注解,优先解析注解 | |||
| for (Field field : fieldList) { | |||
| SortColumn sortColumnField = field.getAnnotation(SortColumn.class); | |||
| if (sortColumnField != null && field.getName().equals(sortColumn)) { | |||
| if(StringUtils.isBlank(sortOrder)){ | |||
| return sortColumnField.column(); | |||
| } | |||
| return sortColumnField.column() + " "+sortOrder; | |||
| } | |||
| } | |||
| //判断是否合法 | |||
| boolean find = false; | |||
| for (Field field : fieldList){ | |||
| if (field.getName().equals(sortColumn)) { | |||
| find = true; | |||
| break; | |||
| } | |||
| } | |||
| if(!find) { | |||
| return null; | |||
| } | |||
| //默认驼峰解析 | |||
| if(StringUtils.isBlank(sortOrder)){ | |||
| return underscoreName(sortColumn); | |||
| } | |||
| return underscoreName(sortColumn) +" "+sortOrder; | |||
| } | |||
| } catch (Exception e) { | |||
| log.error("BaseEntity.getSortColumn解析失败",e); | |||
| e.printStackTrace(); | |||
| } | |||
| return sortColumns; | |||
| } | |||
| /** | |||
| * 转换为下划线 | |||
| * | |||
| * @param camelCaseName | |||
| * @return | |||
| */ | |||
| private static String underscoreName(String camelCaseName) { | |||
| StringBuilder result = new StringBuilder(); | |||
| if (camelCaseName != null && camelCaseName.length() > 0) { | |||
| result.append(camelCaseName.substring(0, 1).toLowerCase()); | |||
| for (int i = 1; i < camelCaseName.length(); i++) { | |||
| char ch = camelCaseName.charAt(i); | |||
| if (Character.isUpperCase(ch)) { | |||
| result.append("_"); | |||
| result.append(Character.toLowerCase(ch)); | |||
| } else { | |||
| result.append(ch); | |||
| } | |||
| } | |||
| } | |||
| return result.toString(); | |||
| } | |||
| public void setSortColumns(SortField... fields) | |||
| { | |||
| if (fields == null || fields.length == 0) { | |||
| return; | |||
| } | |||
| for (int k = 0; k < fields.length; k++) { | |||
| if (fields[k] == null) { | |||
| return; | |||
| } | |||
| } | |||
| StringBuilder sb = new StringBuilder(fields[0].toString()); | |||
| for (int k = 1; k < fields.length; k++) { | |||
| sb.append(","); | |||
| sb.append(fields[k].toString()); | |||
| } | |||
| this.sortColumns=sb.toString(); | |||
| } | |||
| public void setSortColumns(String sortColumns) | |||
| { | |||
| this.sortColumns=sortColumns; | |||
| } | |||
| public enum SortField { | |||
| Id_ASC("`id` ASC"), | |||
| Id_DESC("`id` DESC"), | |||
| CId_ASC("c.`id` ASC"), | |||
| CId_DESC("c.`id` DESC"), | |||
| CCId_ASC("cc.`id` ASC"), | |||
| CCId_DESC("cc.`id` DESC"), | |||
| CreateDate_ASC("`create_date` ASC"), | |||
| CreateDate_DESC("`create_date` DESC"), | |||
| CCreateDate_ASC("c.`create_date` ASC"), | |||
| CCreateDate_DESC("c.`create_date` DESC"), | |||
| SId_ASC("s.`id` ASC"), | |||
| SId_DESC("s.`id` DESC"), | |||
| SCreateDate_ASC("s.`create_date` ASC"), | |||
| SCreateDate_DESC("s.`create_date` DESC"), | |||
| UpdateDate_ASC("`update_date` ASC"), | |||
| UpdateDate_DESC("`update_date` DESC"), | |||
| CUpdateDate_ASC("c.`update_date` ASC"), | |||
| CUpdateDate_DESC("c.`update_date` DESC"), | |||
| CCUpdateDate_ASC("cc.`update_date` ASC"), | |||
| CCUpdateDate_DESC("cc.`update_date` DESC"), | |||
| Createtime_ASC("`createtime` ASC"), | |||
| Createtime_DESC("`createtime` DESC"), | |||
| CreateTime_ASC("`create_time` ASC"), | |||
| CreateTime_DESC("`create_time` DESC"), | |||
| ReportTime_ASC("`reportTime` ASC"), | |||
| ReportTime_DESC("`reportTime` DESC"), | |||
| ActiveTime_ASC("`active_time` ASC"), | |||
| ActiveTime_DESC("`active_time` DESC"), | |||
| wcubiActiveTime_ASC("wcubi.`active_time` ASC"), | |||
| wcubiActiveTime_DESC("wcubi.`active_time` DESC"), | |||
| TopTime_ASC("`top_time` ASC"), | |||
| TopTime_DESC("`top_time` DESC"), | |||
| MerchantId_ASC("`merchant_id` ASC"), | |||
| MerchantId_DESC("`merchant_id` DESC"), | |||
| LimitDate_ASC("`limit_date` ASC"), | |||
| LimitDate_DESC("`limit_date` DESC"), | |||
| SortNum_ASC("`sort_num` ASC"), | |||
| SortNum_DESC("`sort_num` DESC"), | |||
| Sort_ASC("`sort` ASC"), | |||
| Sort_DESC("`sort` DESC"), | |||
| Points_ASC("`points` ASC"), | |||
| Points_DESC("`points` DESC"), | |||
| Period_ASC("`period` ASC"), | |||
| Period_DESC("`period` DESC"), | |||
| UsedPower_ASC("`usedPower` ASC"), | |||
| UsedPower_DESC("`usedPower` DESC"), | |||
| Date_ASC("`date` ASC"), | |||
| Date_DESC("`date` DESC"), | |||
| TradeAmt_ASC("`trade_amt` ASC"), | |||
| TradeAmt_DESC("`trade_amt` DESC"), | |||
| ReportDate_ASC("`report_date` ASC"), | |||
| ReportDate_DESC("`report_date` DESC"), | |||
| ActivityStartTime_ASC("`activity_start_time` ASC"), | |||
| ActivityStartTime_DESC("`activity_start_time` DESC"), | |||
| MerchantAdmin("`is_admin` desc"),//商场服务台排在首位 | |||
| ; | |||
| private String value; | |||
| SortField(String value) { | |||
| this.value = value; | |||
| } | |||
| public String getValue() { | |||
| return value; | |||
| } | |||
| @Override | |||
| public String toString() { | |||
| return this.getValue(); | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,103 @@ | |||
| package com.iformall.domain.po.base; | |||
| import com.baomidou.mybatisplus.annotation.TableField; | |||
| import com.fasterxml.jackson.annotation.JsonIgnore; | |||
| import com.fasterxml.jackson.annotation.JsonProperty; | |||
| import lombok.EqualsAndHashCode; | |||
| import java.util.List; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| /** | |||
| * @author Stormeye | |||
| * @date 2019/4/24 14:32 | |||
| */ | |||
| @EqualsAndHashCode(callSuper = true) | |||
| public class TenantEntity extends BaseEntity { | |||
| private static final long serialVersionUID = 1441638860618733611L; | |||
| @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") | |||
| protected String tenantId; | |||
| @io.swagger.annotations.ApiModelProperty(value="父租户ID",name="parentTenantId") | |||
| protected String parentTenantId; | |||
| @io.swagger.annotations.ApiModelProperty(value="父租户ID",name="parentTenantId") | |||
| @TableField(exist = false) | |||
| protected String finalTenantId; | |||
| @JsonIgnore | |||
| @TableField(exist = false) | |||
| protected String shardTableSuffix; | |||
| @io.swagger.annotations.ApiModelProperty(value="租户编号列表,查询使用",name="tenantIdList") | |||
| @TableField(exist = false) | |||
| protected List<String> tenantIdList; | |||
| @io.swagger.annotations.ApiModelProperty(value="父租户编号列表,查询使用",name="parentTenantIdList") | |||
| @TableField(exist = false) | |||
| protected List<String> parentTenantIdList; | |||
| public void updateTenantInfo(TenantEntity info) { | |||
| tenantId = info.getTenantId(); | |||
| if (StringUtils.isNotBlank(info.getParentTenantId())) { | |||
| parentTenantId = info.getParentTenantId(); | |||
| }else{ | |||
| parentTenantId = null; | |||
| } | |||
| getFinalTenantId(); | |||
| } | |||
| public String getFinalTenantId() { | |||
| finalTenantId = tenantId; | |||
| if (StringUtils.isNotBlank(parentTenantId)) { | |||
| finalTenantId = parentTenantId; | |||
| } | |||
| return finalTenantId; | |||
| } | |||
| public String getShardTableSuffix() { | |||
| if(StringUtils.isNotBlank(getTenantId())){ | |||
| shardTableSuffix = "_" + Integer.parseInt(getTenantId())%100; | |||
| } | |||
| return shardTableSuffix; | |||
| } | |||
| public String getTenantId() { | |||
| return tenantId; | |||
| } | |||
| public void setTenantId(String tenantId) { | |||
| this.tenantId = tenantId; | |||
| } | |||
| public String getParentTenantId() { | |||
| return parentTenantId; | |||
| } | |||
| public void setParentTenantId(String parentTenantId) { | |||
| this.parentTenantId = parentTenantId; | |||
| } | |||
| public void setFinalTenantId(String finalTenantId) { | |||
| this.finalTenantId = finalTenantId; | |||
| } | |||
| public List<String> getTenantIdList() { | |||
| return tenantIdList; | |||
| } | |||
| public void setTenantIdList(List<String> tenantIdList) { | |||
| this.tenantIdList = tenantIdList; | |||
| } | |||
| public List<String> getParentTenantIdList() { | |||
| return parentTenantIdList; | |||
| } | |||
| public void setParentTenantIdList(List<String> parentTenantIdList) { | |||
| this.parentTenantIdList = parentTenantIdList; | |||
| } | |||
| } | |||
| @@ -0,0 +1,43 @@ | |||
| package com.iformall.enums; | |||
| /** | |||
| * Created by Stormeye on 2018/08/09. | |||
| */ | |||
| public enum EnumAppType { | |||
| // 1-B端, 2-C端, 3-服务号, 4-订阅号 | |||
| B(1, "B端"), | |||
| C(2, "C端"), | |||
| MP_S(3,"公众号-服务号"), | |||
| MP_P(4, "公众号-订阅号"), | |||
| A(5, "A端"), | |||
| TT_GOODS(10, "抖音商品库"), | |||
| ; | |||
| public static EnumAppType getEnum(Integer code) { | |||
| for (EnumAppType value : values()) { | |||
| if (value.getCode().equals(code)) { | |||
| return value; | |||
| } | |||
| } | |||
| return null; | |||
| } | |||
| private Integer code; | |||
| private String message; | |||
| EnumAppType(Integer code, String message) { | |||
| this.code = code; | |||
| this.message = message; | |||
| } | |||
| public Integer getCode() { | |||
| return code; | |||
| } | |||
| public String getMessage() { | |||
| return message; | |||
| } | |||
| } | |||
| @@ -0,0 +1,17 @@ | |||
| package com.iformall.exception; | |||
| public class BeanMappingException extends RuntimeException { | |||
| private static final long serialVersionUID = -3616240376550557648L; | |||
| public BeanMappingException() { | |||
| this("Bean对象映射异常"); | |||
| } | |||
| public BeanMappingException(String message) { | |||
| super(message); | |||
| } | |||
| public BeanMappingException(Throwable cause) { | |||
| super(cause); | |||
| } | |||
| } | |||
| @@ -0,0 +1,14 @@ | |||
| package com.iformall.exception; | |||
| /** | |||
| * Created by Stormeye on 2018/8/10. | |||
| */ | |||
| public class BizMessageException extends RuntimeException { | |||
| public BizMessageException() { | |||
| super(); | |||
| } | |||
| public BizMessageException(String bizMessage) { | |||
| super(bizMessage); | |||
| } | |||
| } | |||
| @@ -0,0 +1,36 @@ | |||
| package com.iformall.exception; | |||
| import com.iformall.common.ErrorCode; | |||
| /** | |||
| * Created by Stormeye on 2018/8/10. | |||
| */ | |||
| public class MallinkException extends RuntimeException { | |||
| private int errorCode; | |||
| private String message; | |||
| public MallinkException(int errorC, String message) { | |||
| this.errorCode = errorC; | |||
| this.message = message; | |||
| } | |||
| public MallinkException(ErrorCode errCode) { | |||
| this.errorCode = errCode.getCode(); | |||
| this.message = errCode.getMessage(); | |||
| } | |||
| public MallinkException() { | |||
| super(); | |||
| } | |||
| public int getErrorCode() { | |||
| return errorCode; | |||
| } | |||
| @Override | |||
| public String getMessage() { | |||
| return message; | |||
| } | |||
| } | |||
| @@ -0,0 +1,16 @@ | |||
| package com.iformall.mapper; | |||
| import java.util.*; | |||
| import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxAppinfo; | |||
| public interface WxAppinfoMapper extends CommonMapper<WxAppinfo, Long> { | |||
| List<WxAppinfo> findList(WxAppinfo wxAppinfo); | |||
| WxAppinfo findByAppId(String appId); | |||
| WxAppinfo findByAppId(String appId,String tenantId); | |||
| int updateAccessToken(WxAppinfo updateApp); | |||
| } | |||
| @@ -0,0 +1,19 @@ | |||
| package com.iformall.mapper; | |||
| import java.util.List; | |||
| import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxCUser; | |||
| import org.apache.ibatis.annotations.Param; | |||
| public interface WxCUserMapper extends CommonMapper<WxCUser, Long> { | |||
| List<WxCUser> findList(WxCUser record); | |||
| WxCUser findByOpenId(WxCUser record); | |||
| WxCUser findByUnionId(WxCUser record); | |||
| WxCUser selectById(@Param("id")Long id,@Param("tenantId")String tenantId); | |||
| } | |||
| @@ -0,0 +1,11 @@ | |||
| package com.iformall.mapper; | |||
| import java.util.*; | |||
| import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxPayAccount; | |||
| public interface WxPayAccountMapper extends CommonMapper<WxPayAccount, Long> { | |||
| List<WxPayAccount> findList(WxPayAccount wxPayAccount); | |||
| } | |||
| @@ -0,0 +1,23 @@ | |||
| package com.iformall.service; | |||
| import com.iformall.domain.po.WxAppinfo; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| public interface WxAppinfoService { | |||
| /** | |||
| * 获取c端小程序信息 | |||
| * @return | |||
| */ | |||
| WxAppinfo getCAppInfo(TenantEntity tenantEntity); | |||
| /** | |||
| * 保存或更新实体 | |||
| * | |||
| * @param record | |||
| */ | |||
| void saveOrUpdate(WxAppinfo record); | |||
| WxAppinfo getCAppInfoFromRedis(String tenantId); | |||
| } | |||
| @@ -0,0 +1,44 @@ | |||
| package com.iformall.service; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.domain.po.WxCUser; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import me.chanjar.weixin.mp.bean.result.WxMpUser; | |||
| import java.util.List; | |||
| public interface WxCUserService { | |||
| /** | |||
| * 根据Id获得实体 | |||
| * | |||
| * @param id | |||
| * @return | |||
| */ | |||
| WxCUser getById(Long id,String tenantId); | |||
| /** | |||
| * 根据openId获得实体 | |||
| * | |||
| * @param record | |||
| * @return | |||
| */ | |||
| WxCUser getByOpenId(WxCUser record); | |||
| /** | |||
| * 根据object获得实体 | |||
| * | |||
| * @param record | |||
| * @return | |||
| */ | |||
| WxCUser getByObject(WxCUser record); | |||
| /** | |||
| * 保存或更新实体 | |||
| * | |||
| * @param record | |||
| */ | |||
| int saveOrUpdate(WxCUser record); | |||
| } | |||
| @@ -0,0 +1,48 @@ | |||
| package com.iformall.service; | |||
| import com.github.binarywang.wxpay.service.WxPayService; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.domain.po.WxAppinfo; | |||
| import com.iformall.domain.po.WxPayAccount; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| public interface WxPayAccountService { | |||
| /** | |||
| * 根据实体查询分页列表 | |||
| * | |||
| * @param record | |||
| * @param pageIndex | |||
| * @param pageSize | |||
| * @return | |||
| */ | |||
| PageInfo<WxPayAccount> listAsPage(WxPayAccount record, Integer pageIndex, Integer pageSize); | |||
| /** | |||
| * 根据Id获得实体 | |||
| * | |||
| * @param id | |||
| * @return | |||
| */ | |||
| WxPayAccount getById(Long id); | |||
| WxPayAccount getByIdFromRedis(Long id); | |||
| /** | |||
| * 保存或更新实体 | |||
| * | |||
| * @param record | |||
| */ | |||
| void saveOrUpdate(WxPayAccount record); | |||
| /** | |||
| * 根据Id删除实体 | |||
| * | |||
| * @param id | |||
| */ | |||
| void deleteById(Long id); | |||
| WxPayAccount getPayAccount(TenantEntity tenantEntity); | |||
| WxPayService getWxPayService(String tenantId); | |||
| } | |||
| @@ -0,0 +1,32 @@ | |||
| package com.iformall.service.cache; | |||
| import org.springframework.data.redis.core.RedisTemplate; | |||
| import com.iformall.domain.po.WxAppinfo; | |||
| import com.iformall.enums.EnumAppType; | |||
| import com.iformall.utils.Constant; | |||
| import com.iformall.utils.RedisCacheUtils; | |||
| public class WxAppInfoCache { | |||
| private static String getKey(String tenantId) { | |||
| String key = Constant.appinfoPrev + tenantId | |||
| + "-" + EnumAppType.C.getCode(); | |||
| return key; | |||
| } | |||
| public static WxAppinfo getCacheAppInfo(RedisTemplate<String, Object> wxAppinfoRedisTemplate,String tenantId) { | |||
| String key = getKey(tenantId); | |||
| return RedisCacheUtils.getCacheObject(wxAppinfoRedisTemplate, key, WxAppinfo.class); | |||
| } | |||
| public static void cacheApp(RedisTemplate<String, Object> wxAppinfoRedisTemplate,WxAppinfo appInfo) { | |||
| String key = getKey(appInfo.getTenantId()); | |||
| RedisCacheUtils.cache(wxAppinfoRedisTemplate, key, appInfo, 3600*24*7); | |||
| } | |||
| public static void removeCache(RedisTemplate<String, Object> wxAppinfoRedisTemplate,String tenantId) { | |||
| String key = getKey(tenantId); | |||
| RedisCacheUtils.removeCache(wxAppinfoRedisTemplate, key); | |||
| } | |||
| } | |||
| @@ -0,0 +1,30 @@ | |||
| package com.iformall.service.cache; | |||
| import org.springframework.data.redis.core.RedisTemplate; | |||
| import com.iformall.domain.po.WxCUser; | |||
| import com.iformall.utils.Constant; | |||
| import com.iformall.utils.RedisCacheUtils; | |||
| public class WxCUserCache { | |||
| private static String getKey(Long userId) { | |||
| String key = Constant.cuserPre + userId; | |||
| return key; | |||
| } | |||
| public static WxCUser getCacheAppInfo(RedisTemplate<String, Object> wxAppinfoRedisTemplate,Long userId) { | |||
| String key = getKey(userId); | |||
| return RedisCacheUtils.getCacheObject(wxAppinfoRedisTemplate, key, WxCUser.class); | |||
| } | |||
| public static void cacheApp(RedisTemplate<String, Object> wxAppinfoRedisTemplate,WxCUser wxCUser) { | |||
| String key = getKey(wxCUser.getId()); | |||
| RedisCacheUtils.cache(wxAppinfoRedisTemplate, key, wxCUser, 3600*24*7); | |||
| } | |||
| public static void removeCache(RedisTemplate<String, Object> wxAppinfoRedisTemplate,Long userId) { | |||
| String key = getKey(userId); | |||
| RedisCacheUtils.removeCache(wxAppinfoRedisTemplate, key); | |||
| } | |||
| } | |||
| @@ -0,0 +1,69 @@ | |||
| package com.iformall.service.impl; | |||
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||
| import com.iformall.common.IdWorker; | |||
| import com.iformall.domain.po.WxAppinfo; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.enums.EnumAppType; | |||
| import com.iformall.mapper.WxAppinfoMapper; | |||
| import com.iformall.service.WxAppinfoService; | |||
| import com.iformall.service.cache.WxAppInfoCache; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.beans.factory.annotation.Qualifier; | |||
| import org.springframework.data.redis.core.RedisTemplate; | |||
| import org.springframework.stereotype.Service; | |||
| import java.util.List; | |||
| @Service | |||
| public class WxAppinfoServiceImpl implements WxAppinfoService { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| WxAppinfoMapper wxAppinfoMapper; | |||
| @Autowired | |||
| @Qualifier("objectCommonRedisTemplate") | |||
| RedisTemplate<String, Object> wxAppinfoRedisTemplate; | |||
| @Override | |||
| public WxAppinfo getCAppInfo(TenantEntity tenantEntity) { | |||
| WxAppinfo appInfo = null; | |||
| WxAppinfo appinfoQ = new WxAppinfo(); | |||
| appinfoQ.updateTenantInfo(tenantEntity); | |||
| appinfoQ.setType(EnumAppType.C.getCode()); | |||
| List<WxAppinfo> appList = wxAppinfoMapper.selectList(new QueryWrapper(appinfoQ)); | |||
| if (appList.size() > 0) { | |||
| appInfo = appList.get(0); | |||
| } | |||
| return appInfo; | |||
| } | |||
| @Override | |||
| public void saveOrUpdate(WxAppinfo record) { | |||
| if (record.getId() == null) { | |||
| //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| record.setId(idWorker.nextId()); | |||
| wxAppinfoMapper.insert(record); | |||
| } else { | |||
| WxAppInfoCache.removeCache(wxAppinfoRedisTemplate, record.getTenantId()); | |||
| wxAppinfoMapper.updateById(record); | |||
| } | |||
| } | |||
| @Override | |||
| public WxAppinfo getCAppInfoFromRedis(String tenantId) { | |||
| WxAppinfo record = WxAppInfoCache.getCacheAppInfo(wxAppinfoRedisTemplate, tenantId); | |||
| if (null == record) { | |||
| TenantEntity tenantEntity = new TenantEntity(); | |||
| tenantEntity.setTenantId(tenantId); | |||
| record = this.getCAppInfo(tenantEntity); | |||
| if(record != null){ | |||
| WxAppInfoCache.cacheApp(wxAppinfoRedisTemplate, record); | |||
| } | |||
| } | |||
| return record; | |||
| } | |||
| } | |||
| @@ -0,0 +1,66 @@ | |||
| package com.iformall.service.impl; | |||
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||
| import com.github.pagehelper.PageHelper; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.IdWorker; | |||
| import com.iformall.domain.po.*; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.enums.*; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.mapper.WxCUserMapper; | |||
| import com.iformall.service.*; | |||
| import com.iformall.utils.Constant; | |||
| import me.chanjar.weixin.mp.bean.result.WxMpUser; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.beans.factory.annotation.Qualifier; | |||
| import org.springframework.data.redis.core.RedisTemplate; | |||
| import org.springframework.stereotype.Service; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| @Service | |||
| public class WxCUserServiceImpl implements WxCUserService { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| WxCUserMapper wxCUserMapper; | |||
| @Override | |||
| public WxCUser getById(Long id,String tenantId) { | |||
| return wxCUserMapper.selectById(id,tenantId); | |||
| } | |||
| @Override | |||
| public WxCUser getByOpenId(WxCUser record) { | |||
| return wxCUserMapper.findByOpenId(record); | |||
| } | |||
| @Override | |||
| public WxCUser getByObject(WxCUser record) { | |||
| return wxCUserMapper.selectOne(new QueryWrapper(record)); | |||
| } | |||
| @Override | |||
| public int saveOrUpdate(WxCUser user) { | |||
| int ret = 0; | |||
| Date curr = new Date(); | |||
| if (user.getId() == null) { | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| user.setId(idWorker.nextId()); | |||
| user.setCreateDate(curr); | |||
| user.setUpdateDate(curr); | |||
| ret = wxCUserMapper.insert(user); | |||
| } else { | |||
| user.setUpdateDate(curr); | |||
| ret = wxCUserMapper.updateById(user); | |||
| } | |||
| return ret; | |||
| } | |||
| } | |||
| @@ -0,0 +1,117 @@ | |||
| package com.iformall.service.impl; | |||
| import com.github.binarywang.wxpay.service.WxPayService; | |||
| import com.github.pagehelper.PageHelper; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.domain.po.WxAppinfo; | |||
| import com.iformall.domain.po.WxPayAccount; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.mapper.WxPayAccountMapper; | |||
| import com.iformall.service.WxAppinfoService; | |||
| import com.iformall.service.WxPayAccountService; | |||
| import com.iformall.utils.Constant; | |||
| import com.iformall.utils.MaUtil; | |||
| import com.iformall.utils.RedisCacheUtils; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.beans.factory.annotation.Qualifier; | |||
| import org.springframework.data.redis.core.RedisTemplate; | |||
| import org.springframework.stereotype.Service; | |||
| import com.iformall.common.IdWorker; | |||
| @Service | |||
| public class WxPayAccountServiceImpl implements WxPayAccountService { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| WxPayAccountMapper wxPayAccountMapper; | |||
| @Autowired | |||
| WxAppinfoService wxAppinfoService; | |||
| @Autowired | |||
| @Qualifier("objectCommonRedisTemplate") | |||
| RedisTemplate<String, Object> wxPayAccountRedisTemplate; | |||
| @Autowired | |||
| MaUtil maUtil; | |||
| @Override | |||
| public PageInfo<WxPayAccount> listAsPage(WxPayAccount record, Integer pageIndex, Integer pageSize) { | |||
| return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxPayAccountMapper.findList(record)); | |||
| } | |||
| @Override | |||
| public WxPayAccount getById(Long id) { | |||
| return wxPayAccountMapper.selectById(id); | |||
| } | |||
| @Override | |||
| public WxPayAccount getByIdFromRedis(Long id) { | |||
| WxPayAccount record = null; | |||
| String key = Constant.payaccountPrev + id; | |||
| record = RedisCacheUtils.getCacheObject(wxPayAccountRedisTemplate, key, WxPayAccount.class); | |||
| if (null == record) { | |||
| record = this.getById(id); | |||
| if(record != null){ | |||
| RedisCacheUtils.cache(wxPayAccountRedisTemplate, key, record, 3600*24*7); | |||
| } | |||
| } | |||
| return record; | |||
| } | |||
| @Override | |||
| public void saveOrUpdate(WxPayAccount record) { | |||
| if (record.getId() == null) { | |||
| //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| record.setId(idWorker.nextId()); | |||
| wxPayAccountMapper.insert(record); | |||
| } else { | |||
| wxPayAccountMapper.updateById(record); | |||
| } | |||
| deleteRedis(record.getId()); | |||
| } | |||
| @Override | |||
| public void deleteById(Long id) { | |||
| wxPayAccountMapper.deleteById(id); | |||
| deleteRedis(id); | |||
| } | |||
| @Override | |||
| public WxPayAccount getPayAccount(TenantEntity tenantEntity) { | |||
| WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(tenantEntity); | |||
| if(cAppInfo != null){ | |||
| return this.getById(cAppInfo.getPayId()); | |||
| } | |||
| return null; | |||
| } | |||
| private void deleteRedis(Long id){ | |||
| String key1 = Constant.payaccountPrev + id; | |||
| RedisCacheUtils.removeCache(wxPayAccountRedisTemplate, key1); | |||
| } | |||
| @Override | |||
| public WxPayService getWxPayService(String tenantId) { | |||
| // TenantEntity tenantEntity = new TenantEntity(); | |||
| // tenantEntity.setTenantId(tenantId); | |||
| WxAppinfo cAppInfo = wxAppinfoService.getCAppInfoFromRedis(tenantId); | |||
| if(cAppInfo == null){ | |||
| throw new MallinkException(ErrorCode.APPINFO_NOFUND); | |||
| } | |||
| WxPayAccount payAccount = this.getByIdFromRedis(cAppInfo.getPayId()); | |||
| if(payAccount == null){ | |||
| throw new MallinkException(ErrorCode.APPINFO_NOFUND.getCode(),"payAccount未查询到"); | |||
| } | |||
| return maUtil.getWxPayService(cAppInfo,payAccount); | |||
| } | |||
| } | |||
| @@ -0,0 +1,117 @@ | |||
| package com.iformall.service.wx; | |||
| import cn.binarywang.wx.miniapp.api.WxMaService; | |||
| import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; | |||
| import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; | |||
| import cn.binarywang.wx.miniapp.bean.WxMaUserInfo; | |||
| import com.iformall.common.IdWorker; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.*; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.mapper.WxAppinfoMapper; | |||
| import com.iformall.mapper.WxCUserMapper; | |||
| import com.iformall.service.WxAppinfoService; | |||
| import com.iformall.service.cache.WxAppInfoCache; | |||
| import com.iformall.service.cache.WxCUserCache; | |||
| import com.iformall.utils.Constant; | |||
| import com.iformall.utils.MaUtil; | |||
| import com.iformall.utils.sign.AppUtils; | |||
| import lombok.SneakyThrows; | |||
| import me.chanjar.weixin.common.error.WxErrorException; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.beans.factory.annotation.Qualifier; | |||
| import org.springframework.data.redis.core.RedisTemplate; | |||
| import org.springframework.stereotype.Service; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.exception.MallinkException; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| @Service | |||
| public class WxWeappService { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| MaUtil maUtil; | |||
| @Autowired | |||
| WxAppinfoMapper wxAppinfoMapper; | |||
| @Autowired | |||
| WxCUserMapper wxCUserMapper; | |||
| @Autowired | |||
| @Qualifier("objectCommonRedisTemplate") | |||
| RedisTemplate<String, Object> redisTemplate; | |||
| @SneakyThrows | |||
| public WxMaJscode2SessionResult jsCode2SessionInfo(String code, WxAppinfo wxAppinfo, Boolean isFmOpen) { | |||
| WxMaService wxMaService = this.getWxMaService(wxAppinfo, isFmOpen); | |||
| return wxMaService.jsCode2SessionInfo(code); | |||
| } | |||
| public String decryptPhoneNoInfo(String encryptedData, String iv, String sessionKey,WxCUser cUser, WxAppinfo wxAppinfo, boolean isFmOpen) { | |||
| WxMaService wxMaService = this.getWxMaService(wxAppinfo, isFmOpen); | |||
| WxMaPhoneNumberInfo phoneNoInfo = wxMaService.getUserService().getPhoneNoInfo(sessionKey, encryptedData, iv); | |||
| if (null != phoneNoInfo) { | |||
| logger.info("解密用户手机号 {}" + phoneNoInfo.toString()); | |||
| if(phoneNoInfo.getPhoneNumber().contains("*")){ | |||
| throw new MallinkException(ErrorCode.PHONE_DECRYPTED_FAILD); | |||
| } | |||
| WxCUser updateUser = new WxCUser(); | |||
| updateUser.setId(cUser.getId()); | |||
| updateUser.updateTenantInfo(cUser); | |||
| updateUser.setPhone(phoneNoInfo.getPhoneNumber()); | |||
| updateUser.setUpdateDate(new Date()); | |||
| wxCUserMapper.updateById(updateUser); | |||
| cUser.setPhone(updateUser.getPhone()); | |||
| WxCUserCache.cacheApp(redisTemplate, cUser); | |||
| return updateUser.getPhone(); | |||
| } else { | |||
| throw new MallinkException(ErrorCode.PHONE_DECRYPTED_FAILD); | |||
| } | |||
| } | |||
| public WxMaService getWxMaService(WxAppinfo wxAppinfo, Boolean isFmOpen) { | |||
| WxMaService wxMaService = maUtil.getWeappService(wxAppinfo); | |||
| if (StringUtils.isBlank(wxAppinfo.getAccessToken())) { | |||
| // 如果没有accessToken,主动获取保存到数据库中,下次访问可以拿来使用 | |||
| updateAppAccessToken(wxAppinfo, wxMaService); | |||
| } else { | |||
| // 检查token是否已过期, 1小时就重新获取 | |||
| Date curDate = new Date(); | |||
| if (curDate.getTime() > wxAppinfo.getLastTokenTime().getTime() + Constant.H_EXPIRE) { | |||
| updateAppAccessToken(wxAppinfo, wxMaService); | |||
| } | |||
| } | |||
| return wxMaService; | |||
| } | |||
| private void updateAppAccessToken(WxAppinfo wxAppinfo, WxMaService wxMaService) { | |||
| try { | |||
| String accessToken = wxMaService.getAccessToken(true); | |||
| WxAppinfo updateApp = new WxAppinfo(); | |||
| updateApp.setAppId(wxAppinfo.getAppId()); | |||
| updateApp.setAccessToken(accessToken); | |||
| updateApp.setLastTokenTime(new Date()); | |||
| updateApp.setExpiresIn(7200); | |||
| wxAppinfo.setAccessToken(updateApp.getAccessToken()); | |||
| wxAppinfo.setLastTokenTime(updateApp.getLastTokenTime()); | |||
| wxAppinfo.setExpiresIn(updateApp.getExpiresIn()); | |||
| wxAppinfoMapper.updateAccessToken(updateApp); | |||
| WxAppInfoCache.cacheApp(redisTemplate, wxAppinfo); | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| } catch (Exception e) { | |||
| logger.error(e.getMessage()); | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,13 @@ | |||
| package com.iformall.utils; | |||
| public class Constant { | |||
| public static final int H_EXPIRE = 3600000;//1个小时 | |||
| public static final String appinfoPrev = "gpt:appinfo:"; | |||
| public static final String cuserPre = "gpt:wxCUser:"; | |||
| public static final String payaccountPrev = "gpt:payAccount:"; | |||
| public static final String currentUser = "currentUser"; | |||
| public static final String TENANT_ID = "tenantId"; | |||
| public static final String PARENT_TENANT_ID = "parentTenantId"; | |||
| } | |||
| @@ -0,0 +1,114 @@ | |||
| package com.iformall.utils; | |||
| import java.io.UnsupportedEncodingException; | |||
| import java.security.MessageDigest; | |||
| import java.util.Base64; | |||
| /** | |||
| * @author Stormeye | |||
| * @since 2018.08.09 | |||
| */ | |||
| public class HashUtil { | |||
| private static final java.security.SecureRandom random = new java.security.SecureRandom(); | |||
| private static final char[] HEX_DIGITS = "0123456789abcdef".toCharArray(); | |||
| private static final char[] CHAR_ARRAY = "_-0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" | |||
| .toCharArray(); | |||
| public static String md5(String srcStr) { | |||
| return hash("MD5", srcStr); | |||
| } | |||
| public static String sha1(String srcStr) { | |||
| return hash("SHA-1", srcStr); | |||
| } | |||
| public static String sha256(String srcStr) { | |||
| return hash("SHA-256", srcStr); | |||
| } | |||
| public static String sha384(String srcStr) { | |||
| return hash("SHA-384", srcStr); | |||
| } | |||
| public static String sha512(String srcStr) { | |||
| return hash("SHA-512", srcStr); | |||
| } | |||
| public static String hash(String algorithm, String srcStr) { | |||
| try { | |||
| MessageDigest md = MessageDigest.getInstance(algorithm); | |||
| byte[] bytes = md.digest(srcStr.getBytes("utf-8")); | |||
| return toHex(bytes); | |||
| } catch (Exception e) { | |||
| throw new RuntimeException(e); | |||
| } | |||
| } | |||
| private static String toHex(byte[] bytes) { | |||
| StringBuilder ret = new StringBuilder(bytes.length * 2); | |||
| for (int i = 0; i < bytes.length; i++) { | |||
| ret.append(HEX_DIGITS[(bytes[i] >> 4) & 0x0f]); | |||
| ret.append(HEX_DIGITS[bytes[i] & 0x0f]); | |||
| } | |||
| return ret.toString(); | |||
| } | |||
| /** | |||
| * md5 128bit 16bytes sha1 160bit 20bytes sha256 256bit 32bytes sha384 | |||
| * 384bit 48bytes sha512 512bit 64bytes | |||
| */ | |||
| public static String generateSalt(int saltLength) { | |||
| StringBuilder salt = new StringBuilder(); | |||
| for (int i = 0; i < saltLength; i++) { | |||
| salt.append(CHAR_ARRAY[random.nextInt(CHAR_ARRAY.length)]); | |||
| } | |||
| return salt.toString(); | |||
| } | |||
| public static String generateSaltForSha256() { | |||
| return generateSalt(32); | |||
| } | |||
| public static String generateSaltForSha512() { | |||
| return generateSalt(64); | |||
| } | |||
| public static boolean slowEquals(byte[] a, byte[] b) { | |||
| if (a == null || b == null) { | |||
| return false; | |||
| } | |||
| int diff = a.length ^ b.length; | |||
| for (int i = 0; i < a.length && i < b.length; i++) { | |||
| diff |= a[i] ^ b[i]; | |||
| } | |||
| return diff == 0; | |||
| } | |||
| public static String EncoderByMd5(String str) { | |||
| if (str == null) { | |||
| return null; | |||
| } | |||
| try { | |||
| String enc = hash("md5", str); | |||
| enc = new String(Base64.getUrlEncoder().encode(enc.getBytes("utf-8")), "utf-8"); | |||
| return enc; | |||
| } catch (UnsupportedEncodingException e) { | |||
| return null; | |||
| } | |||
| } | |||
| public static String DecodeByMD5(String str) { | |||
| if (str == null) { | |||
| return null; | |||
| } | |||
| try { | |||
| String dec = new String(Base64.getUrlDecoder().decode(str), "utf-8"); | |||
| return dec; | |||
| } catch (Exception e) { | |||
| System.out.println(str); | |||
| System.out.println(e.getMessage()); | |||
| return null; | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,93 @@ | |||
| package com.iformall.utils; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import javax.servlet.http.HttpServletRequest; | |||
| import java.net.Inet4Address; | |||
| import java.net.InetAddress; | |||
| import java.net.NetworkInterface; | |||
| import java.net.UnknownHostException; | |||
| import java.util.Enumeration; | |||
| public class IPUtil { | |||
| private final static Logger logger = LoggerFactory.getLogger(IPUtil.class); | |||
| private final static String UNKNOWN = "unknown"; | |||
| public static String getIpAddr(HttpServletRequest request) { | |||
| String ipAddress = request.getHeader("x-forwarded-for"); | |||
| if (ipAddress == null || ipAddress.length() == 0 || UNKNOWN.equalsIgnoreCase(ipAddress)) { | |||
| ipAddress = request.getHeader("Proxy-Client-IP"); | |||
| } | |||
| if (ipAddress == null || ipAddress.length() == 0 || UNKNOWN.equalsIgnoreCase(ipAddress)) { | |||
| ipAddress = request.getHeader("WL-Proxy-Client-IP"); | |||
| } | |||
| if (ipAddress == null || ipAddress.length() == 0 || UNKNOWN.equalsIgnoreCase(ipAddress)) { | |||
| ipAddress = request.getHeader("HTTP_CLIENT_IP"); | |||
| } | |||
| if (ipAddress == null || ipAddress.length() == 0 || UNKNOWN.equalsIgnoreCase(ipAddress)) { | |||
| ipAddress = request.getHeader("HTTP_X_FORWARDED_FOR"); | |||
| } | |||
| if (ipAddress == null || ipAddress.length() == 0 || UNKNOWN.equalsIgnoreCase(ipAddress)) { | |||
| ipAddress = request.getRemoteAddr(); | |||
| if (ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")) { | |||
| //根据网卡获取本机配置的IP地址 | |||
| InetAddress inetAddress = null; | |||
| try { | |||
| inetAddress = InetAddress.getLocalHost(); | |||
| } catch (UnknownHostException e) { | |||
| logger.error(e.getMessage()); | |||
| } | |||
| ipAddress = inetAddress.getHostAddress(); | |||
| } | |||
| } | |||
| //对于通过多个代理的情况,第一个IP为客户端真实的IP地址,多个IP按照','分割 | |||
| if (null != ipAddress && ipAddress.length() > 15) { | |||
| //"***.***.***.***".length() = 15 | |||
| if (ipAddress.indexOf(",") > 0) { | |||
| ipAddress = ipAddress.substring(0, ipAddress.indexOf(",")); | |||
| } | |||
| } | |||
| return ipAddress; | |||
| } | |||
| // 正确的IP拿法,即优先拿site-local地址 | |||
| public static InetAddress getLocalHostLANAddress() throws UnknownHostException { | |||
| try { | |||
| InetAddress candidateAddress = null; | |||
| // 遍历所有的网络接口 | |||
| for (Enumeration ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements();) { | |||
| NetworkInterface iface = (NetworkInterface) ifaces.nextElement(); | |||
| // 在所有的接口下再遍历IP | |||
| for (Enumeration inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements();) { | |||
| InetAddress inetAddr = (InetAddress) inetAddrs.nextElement(); | |||
| if (!inetAddr.isLoopbackAddress() && (inetAddr instanceof Inet4Address)) {// 排除loopback类型地址, ipv4 | |||
| if (inetAddr.isSiteLocalAddress()) { | |||
| // 如果是site-local地址,就是它了 | |||
| return inetAddr; | |||
| } else if (candidateAddress == null) { | |||
| // site-local类型的地址未被发现,先记录候选地址 | |||
| candidateAddress = inetAddr; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| if (candidateAddress != null) { | |||
| return candidateAddress; | |||
| } | |||
| // 如果没有发现 non-loopback地址.只能用最次选的方案 | |||
| InetAddress jdkSuppliedAddress = InetAddress.getLocalHost(); | |||
| if (jdkSuppliedAddress == null) { | |||
| throw new UnknownHostException("The JDK InetAddress.getLocalHost() method unexpectedly returned null."); | |||
| } | |||
| return jdkSuppliedAddress; | |||
| } catch (Exception e) { | |||
| UnknownHostException unknownHostException = new UnknownHostException( | |||
| "Failed to determine LAN address: " + e); | |||
| unknownHostException.initCause(e); | |||
| throw unknownHostException; | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,141 @@ | |||
| package com.iformall.utils; | |||
| import cn.binarywang.wx.miniapp.api.WxMaService; | |||
| import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl; | |||
| import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl; | |||
| import com.github.binarywang.wxpay.config.WxPayConfig; | |||
| import com.github.binarywang.wxpay.service.WxPayService; | |||
| import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl; | |||
| import com.iformall.common.FmHttpClientBuilder; | |||
| import com.iformall.domain.po.WxAppinfo; | |||
| import com.iformall.domain.po.WxPayAccount; | |||
| import java.util.Date; | |||
| import java.util.Map; | |||
| import java.util.concurrent.ConcurrentHashMap; | |||
| import com.iformall.mapper.WxAppinfoMapper; | |||
| import com.iformall.service.WxAppinfoService; | |||
| import lombok.extern.flogger.Flogger; | |||
| import me.chanjar.weixin.common.error.WxErrorException; | |||
| 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.Service; | |||
| @Service | |||
| public class MaUtil { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| private WxAppinfoService wxAppinfoService; | |||
| @Autowired | |||
| private WxAppinfoMapper wxAppinfoMapper; | |||
| private static Map<String,String> appServiceKeyMap = new ConcurrentHashMap<String,String>(); | |||
| private static Map<String,WxPayService> payServiceMap = new ConcurrentHashMap<String,WxPayService>(); | |||
| private static Map<String,WxMaService> wxMaServiceMap = new ConcurrentHashMap<String,WxMaService>(); | |||
| private static Map<String,String> wxMaAppServiceKeyMap = new ConcurrentHashMap<String,String>(); | |||
| private static Map<String,String> webServiceKeyMap = new ConcurrentHashMap<String,String>(); | |||
| public WxMaService getWeappService(WxAppinfo appinfo) { | |||
| WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl(); | |||
| config.setAppid(appinfo.getAppId()); | |||
| config.setSecret(appinfo.getSecret()); | |||
| config.setToken(appinfo.getToken()); | |||
| config.setAesKey(appinfo.getAesKey()); | |||
| config.setMsgDataFormat(appinfo.getMsgDataFormat()); | |||
| if (StringUtils.isNotBlank(appinfo.getAccessToken())) { | |||
| config.setAccessToken(appinfo.getAccessToken()); | |||
| config.setExpiresTime(appinfo.getLastTokenTime().getTime()+appinfo.getExpiresIn()*1000); | |||
| } | |||
| config.setApacheHttpClientBuilder(FmHttpClientBuilder.get()); | |||
| String key = appinfo.getAppId()+String.valueOf(config.getExpiresTime()); | |||
| WxMaService service = wxMaServiceMap.get(key); | |||
| if ( null == service ) { | |||
| synchronized("getWxMaServcieBlock"+appinfo.getAppId()) { | |||
| service = wxMaServiceMap.get(key); | |||
| if (null == service) { | |||
| //删除掉之前的 | |||
| String appServiceKey = wxMaAppServiceKeyMap.get(appinfo.getAppId()); | |||
| if (!StringUtils.isBlank(appServiceKey)) { | |||
| if (wxMaServiceMap.containsKey(appServiceKey)) { | |||
| wxMaServiceMap.remove(appServiceKey); | |||
| } | |||
| wxMaAppServiceKeyMap.remove(appinfo.getAppId()); | |||
| } | |||
| service = new WxMaServiceImpl(); | |||
| service.setWxMaConfig(config); | |||
| wxMaServiceMap.put(key, service); | |||
| wxMaAppServiceKeyMap.put(appinfo.getAppId(),key); | |||
| } | |||
| } | |||
| } | |||
| return service; | |||
| } | |||
| public WxPayService getWxPayService(WxAppinfo appinfo, WxPayAccount payAccount) { | |||
| return getWxPayService(appinfo,payAccount,true); | |||
| } | |||
| //自研非服务商模式 | |||
| public WxPayService getWxPayServiceBySelfModel(WxAppinfo appinfo, WxPayAccount payAccount) { | |||
| return getWxPayService(appinfo,payAccount,false); | |||
| } | |||
| //@isService 是否服务商模式 | |||
| private WxPayService getWxPayService(WxAppinfo appinfo, WxPayAccount payAccount,boolean isService) { | |||
| WxPayConfig config = new WxPayConfig(); | |||
| //以下是apiv3以及支付分相关 | |||
| // config.setServiceId(payAccount.getServiceId()); | |||
| // config.setPayScoreNotifyUrl(payAccount.getPayScoreNotifyUrl()); | |||
| //服务商,取平台的 | |||
| int iss = 0; | |||
| if (isService) { | |||
| iss = 1; | |||
| config.setAppId(appinfo.getAppId()); | |||
| config.setMchId(payAccount.getMchId()); | |||
| config.setMchKey(payAccount.getApiKey()); | |||
| config.setSubAppId(appinfo.getAppId()); | |||
| config.setSubMchId(payAccount.getSubMchId()); | |||
| config.setKeyPath(payAccount.getCertPath()); | |||
| config.setPrivateKeyPath(payAccount.getPrivateKeyPath()); | |||
| config.setPrivateCertPath(payAccount.getPrivateCertPemPath()); | |||
| //config.setCertSerialNo(payAccount.getCertSerialNo()); | |||
| config.setApiV3Key(payAccount.getApiV3Key()); | |||
| }else { | |||
| config.setAppId(appinfo.getAppId()); | |||
| config.setMchId(payAccount.getSubMchId()); | |||
| config.setMchKey(payAccount.getMerchantApiKey()); | |||
| config.setSubAppId(appinfo.getAppId()); | |||
| config.setSubMchId(payAccount.getSubMchId()); | |||
| config.setKeyPath(payAccount.getMerchantCertPath()); | |||
| config.setPrivateKeyPath(payAccount.getMerchantKeyPath()); | |||
| config.setPrivateCertPath(payAccount.getMerchantCertPemPath()); | |||
| //config.setCertSerialNo(payAccount.getCertSerialNo()); | |||
| config.setApiV3Key(payAccount.getMerchantApiv3Key()); | |||
| } | |||
| String key = new StringBuffer(appinfo.getAppId()).append("_").append(iss).toString(); | |||
| WxPayService service = payServiceMap.get(key); | |||
| if ( null == service ) { | |||
| synchronized("getWxPayServiceBlock"+key) { | |||
| service = payServiceMap.get(key); | |||
| if (null == service) { | |||
| service = new WxPayServiceImpl(); | |||
| service.setConfig(config); | |||
| payServiceMap.put(key, service); | |||
| } | |||
| } | |||
| } | |||
| return service; | |||
| } | |||
| } | |||