Commit e73d3eca by 涂亚平

瑞金医院

1 parent b12d4fc8
Showing with 6175 additions and 1962 deletions
2025-11-25 11:02:10,187 [main] ERROR org.springframework.boot.SpringApplication:822 - Application run failed 2025-12-09 13:27:21,225 [http-nio-23510-exec-6] ERROR com.show.common.exception.GlobalExceptionHandler:89 - JSON parse error: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO at [Source: (PushbackInputStream); line: 1, column: 256] (through reference chain: com.show.dto.work.SubmitWorkDTO["works"])
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:627) 2025-12-09 13:28:27,940 [http-nio-23510-exec-7] ERROR com.show.common.exception.GlobalExceptionHandler:89 - JSON parse error: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:607) at [Source: (PushbackInputStream); line: 1, column: 194] (through reference chain: com.show.dto.work.SubmitWorkDTO["works"])
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321) 2025-12-09 13:31:19,273 [http-nio-23510-exec-4] ERROR com.show.common.exception.GlobalExceptionHandler:89 - JSON parse error: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160) at [Source: (PushbackInputStream); line: 1, column: 194] (through reference chain: com.show.dto.work.SubmitWorkDTO["works"])
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:845)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:743)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:390)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1214)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1203)
at com.subsidy.MeishuApplication.main(MeishuApplication.java:22)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622)
... 19 common frames omitted
Caused by: org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO
at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:593)
at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.afterPropertiesSet(MybatisSqlSessionFactoryBean.java:429)
at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.getObject(MybatisSqlSessionFactoryBean.java:626)
at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration.sqlSessionFactory(MybatisPlusAutoConfiguration.java:214)
at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$613d0b41.CGLIB$sqlSessionFactory$0(<generated>)
at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$613d0b41$$FastClassBySpringCGLIB$$bf8a77ff.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363)
at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$613d0b41.sqlSessionFactory(<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.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
... 20 common frames omitted
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:122)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:94)
at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:591)
... 33 common frames omitted
Caused by: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO
at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:118)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:262)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:253)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:245)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:118)
... 35 common frames omitted
Caused by: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO
at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:120)
at org.apache.ibatis.builder.BaseBuilder.resolveAlias(BaseBuilder.java:149)
at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:116)
... 39 common frames omitted
Caused by: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO
at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:200)
at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:89)
at org.apache.ibatis.io.Resources.classForName(Resources.java:261)
at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:116)
... 41 common frames omitted
2025-11-25 11:02:05,245 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:244 - Multiple Spring Data modules found, entering strict repository configuration mode! 2025-12-15 09:24:48,127 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:244 - Multiple Spring Data modules found, entering strict repository configuration mode!
2025-11-25 11:02:05,253 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:126 - Bootstrapping Spring Data repositories in DEFAULT mode. 2025-12-15 09:24:48,135 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:126 - Bootstrapping Spring Data repositories in DEFAULT mode.
2025-11-25 11:02:05,285 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:182 - Finished Spring Data repository scanning in 20ms. Found 0 repository interfaces. 2025-12-15 09:24:48,180 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:182 - Finished Spring Data repository scanning in 29ms. Found 0 repository interfaces.
2025-11-25 11:02:05,382 [main] WARN org.mybatis.spring.mapper.ClassPathMapperScanner:44 - No MyBatis mapper was found in '[com.subsidy.mapper]' package. Please check your configuration. 2025-12-15 09:24:48,536 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$cf2efc2f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2025-11-25 11:02:05,599 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$23749ea7] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2025-12-15 09:24:48,643 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'redisConfig' of type [com.show.common.configure.RedisConfig$$EnhancerBySpringCGLIB$$82817e2a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2025-11-25 11:02:05,693 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'redisConfig' of type [com.subsidy.common.configure.RedisConfig$$EnhancerBySpringCGLIB$$233ca9ae] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2025-12-15 09:24:48,959 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer:90 - Tomcat initialized with port(s): 23510 (http)
2025-11-25 11:02:06,011 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer:90 - Tomcat initialized with port(s): 23504 (http) 2025-12-15 09:24:48,971 [main] INFO org.apache.coyote.http11.Http11NioProtocol:173 - Initializing ProtocolHandler ["http-nio-23510"]
2025-11-25 11:02:06,022 [main] INFO org.apache.coyote.http11.Http11NioProtocol:173 - Initializing ProtocolHandler ["http-nio-23504"] 2025-12-15 09:24:48,977 [main] INFO org.apache.catalina.core.StandardService:173 - Starting service [Tomcat]
2025-11-25 11:02:06,029 [main] INFO org.apache.catalina.core.StandardService:173 - Starting service [Tomcat] 2025-12-15 09:24:48,977 [main] INFO org.apache.catalina.core.StandardEngine:173 - Starting Servlet engine: [Apache Tomcat/9.0.22]
2025-11-25 11:02:06,029 [main] INFO org.apache.catalina.core.StandardEngine:173 - Starting Servlet engine: [Apache Tomcat/9.0.22] 2025-12-15 09:24:48,983 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - Loaded APR based Apache Tomcat Native library [1.2.37] using APR version [1.7.4].
2025-11-25 11:02:06,035 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - Loaded APR based Apache Tomcat Native library [1.2.37] using APR version [1.7.4]. 2025-12-15 09:24:48,983 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
2025-11-25 11:02:06,035 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true]. 2025-12-15 09:24:48,983 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
2025-11-25 11:02:06,035 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true] 2025-12-15 09:24:48,986 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - OpenSSL successfully initialized [OpenSSL 1.1.1u 30 May 2023]
2025-11-25 11:02:06,037 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - OpenSSL successfully initialized [OpenSSL 1.1.1u 30 May 2023] 2025-12-15 09:24:49,126 [main] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]:173 - Initializing Spring embedded WebApplicationContext
2025-11-25 11:02:06,173 [main] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]:173 - Initializing Spring embedded WebApplicationContext 2025-12-15 09:24:49,127 [main] INFO org.springframework.web.context.ContextLoader:284 - Root WebApplicationContext: initialization completed in 2257 ms
2025-11-25 11:02:06,174 [main] INFO org.springframework.web.context.ContextLoader:284 - Root WebApplicationContext: initialization completed in 1695 ms 2025-12-15 09:24:49,225 [main] INFO com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure:56 - Init DruidDataSource
2025-11-25 11:02:07,686 [main] INFO springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69 - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)] 2025-12-15 09:24:50,296 [main] INFO com.alibaba.druid.pool.DruidDataSource:994 - {dataSource-1} inited
2025-11-25 11:02:07,854 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:171 - Initializing ExecutorService 'applicationTaskExecutor' 2025-12-15 09:24:53,704 [main] INFO springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69 - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
2025-11-25 11:02:08,016 [main] INFO com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure:56 - Init DruidDataSource 2025-12-15 09:24:53,913 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:171 - Initializing ExecutorService 'applicationTaskExecutor'
2025-11-25 11:02:10,005 [main] INFO com.alibaba.druid.pool.DruidDataSource:994 - {dataSource-1} inited 2025-12-15 09:24:54,930 [main] INFO org.quartz.impl.StdSchedulerFactory:1208 - Using default implementation for ThreadExecutor
2025-11-25 11:02:10,147 [main] WARN org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext:557 - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO 2025-12-15 09:24:54,944 [main] INFO org.quartz.core.SchedulerSignalerImpl:61 - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
2025-11-25 11:02:10,147 [main] INFO com.alibaba.druid.pool.DruidDataSource:2029 - {dataSource-1} closing ... 2025-12-15 09:24:54,944 [main] INFO org.quartz.core.QuartzScheduler:229 - Quartz Scheduler v.2.3.1 created.
2025-11-25 11:02:10,150 [main] INFO com.alibaba.druid.pool.DruidDataSource:2101 - {dataSource-1} closed 2025-12-15 09:24:54,945 [main] INFO org.quartz.simpl.RAMJobStore:155 - RAMJobStore initialized.
2025-11-25 11:02:10,151 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:208 - Shutting down ExecutorService 'applicationTaskExecutor' 2025-12-15 09:24:54,946 [main] INFO org.quartz.core.QuartzScheduler:294 - Scheduler meta-data: Quartz Scheduler (v2.3.1) 'quartzScheduler' with instanceId 'NON_CLUSTERED'
2025-11-25 11:02:10,169 [main] INFO org.apache.catalina.core.StandardService:173 - Stopping service [Tomcat] Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
2025-11-25 11:02:10,178 [main] INFO org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener:136 - 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.
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2025-12-15 09:24:54,946 [main] INFO org.quartz.impl.StdSchedulerFactory:1362 - Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance.
2025-11-25 11:02:10,187 [main] ERROR org.springframework.boot.SpringApplication:822 - Application run failed 2025-12-15 09:24:54,946 [main] INFO org.quartz.impl.StdSchedulerFactory:1366 - Quartz scheduler version: 2.3.1
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO 2025-12-15 09:24:54,947 [main] INFO org.quartz.core.QuartzScheduler:2293 - JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@68fc636a
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:627) 2025-12-15 09:24:54,965 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler:171 - Initializing ExecutorService 'taskScheduler'
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:607) 2025-12-15 09:24:55,044 [main] INFO springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:160 - Context refreshed
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1321) 2025-12-15 09:24:55,069 [main] INFO springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:163 - Found 1 custom documentation plugin(s)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1160) 2025-12-15 09:24:55,106 [main] INFO springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41 - Scanning for api listing references
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) 2025-12-15 09:24:55,339 [main] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean:726 - Starting Quartz Scheduler now
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) 2025-12-15 09:24:55,340 [main] INFO org.quartz.core.QuartzScheduler:547 - Scheduler quartzScheduler_$_NON_CLUSTERED started.
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) 2025-12-15 09:24:55,351 [main] INFO org.apache.coyote.http11.Http11NioProtocol:173 - Starting ProtocolHandler ["http-nio-23510"]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 2025-12-15 09:24:55,383 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer:202 - Tomcat started on port(s): 23510 (http) with context path ''
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) 2025-12-15 09:45:41,621 [http-nio-23510-exec-1] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]:173 - Initializing Spring DispatcherServlet 'dispatcherServlet'
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) 2025-12-15 09:45:41,621 [http-nio-23510-exec-1] INFO org.springframework.web.servlet.DispatcherServlet:524 - Initializing Servlet 'dispatcherServlet'
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:845) 2025-12-15 09:45:41,630 [http-nio-23510-exec-1] INFO org.springframework.web.servlet.DispatcherServlet:546 - Completed initialization in 9 ms
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877) 2025-12-15 09:58:55,472 [Thread-22] INFO org.quartz.core.QuartzScheduler:585 - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549) 2025-12-15 09:58:55,472 [Thread-22] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler:208 - Shutting down ExecutorService 'taskScheduler'
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) 2025-12-15 09:58:55,473 [Thread-22] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean:844 - Shutting down Quartz Scheduler
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:743) 2025-12-15 09:58:55,473 [Thread-22] INFO org.quartz.core.QuartzScheduler:666 - Scheduler quartzScheduler_$_NON_CLUSTERED shutting down.
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:390) 2025-12-15 09:58:55,473 [Thread-22] INFO org.quartz.core.QuartzScheduler:585 - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
at org.springframework.boot.SpringApplication.run(SpringApplication.java:312) 2025-12-15 09:58:55,473 [Thread-22] INFO org.quartz.core.QuartzScheduler:740 - Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete.
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1214) 2025-12-15 09:58:55,478 [Thread-22] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:208 - Shutting down ExecutorService 'applicationTaskExecutor'
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1203) 2025-12-15 09:58:55,496 [Thread-22] INFO com.alibaba.druid.pool.DruidDataSource:2029 - {dataSource-1} closing ...
at com.subsidy.MeishuApplication.main(MeishuApplication.java:22) 2025-12-15 09:58:55,498 [Thread-22] INFO com.alibaba.druid.pool.DruidDataSource:2101 - {dataSource-1} closed
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO 2025-12-15 09:59:13,240 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:244 - Multiple Spring Data modules found, entering strict repository configuration mode!
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) 2025-12-15 09:59:13,244 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:126 - Bootstrapping Spring Data repositories in DEFAULT mode.
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622) 2025-12-15 09:59:13,287 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:182 - Finished Spring Data repository scanning in 29ms. Found 0 repository interfaces.
... 19 common frames omitted 2025-12-15 09:59:13,651 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$298240fe] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
Caused by: org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO 2025-12-15 09:59:13,749 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'redisConfig' of type [com.show.common.configure.RedisConfig$$EnhancerBySpringCGLIB$$dcd4c2f9] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:593) 2025-12-15 09:59:14,169 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer:90 - Tomcat initialized with port(s): 23510 (http)
at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.afterPropertiesSet(MybatisSqlSessionFactoryBean.java:429) 2025-12-15 09:59:14,182 [main] INFO org.apache.coyote.http11.Http11NioProtocol:173 - Initializing ProtocolHandler ["http-nio-23510"]
at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.getObject(MybatisSqlSessionFactoryBean.java:626) 2025-12-15 09:59:14,190 [main] INFO org.apache.catalina.core.StandardService:173 - Starting service [Tomcat]
at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration.sqlSessionFactory(MybatisPlusAutoConfiguration.java:214) 2025-12-15 09:59:14,191 [main] INFO org.apache.catalina.core.StandardEngine:173 - Starting Servlet engine: [Apache Tomcat/9.0.22]
at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$613d0b41.CGLIB$sqlSessionFactory$0(<generated>) 2025-12-15 09:59:14,197 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - Loaded APR based Apache Tomcat Native library [1.2.37] using APR version [1.7.4].
at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$613d0b41$$FastClassBySpringCGLIB$$bf8a77ff.invoke(<generated>) 2025-12-15 09:59:14,197 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) 2025-12-15 09:59:14,197 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363) 2025-12-15 09:59:14,200 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - OpenSSL successfully initialized [OpenSSL 1.1.1u 30 May 2023]
at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$613d0b41.sqlSessionFactory(<generated>) 2025-12-15 09:59:14,349 [main] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]:173 - Initializing Spring embedded WebApplicationContext
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 2025-12-15 09:59:14,349 [main] INFO org.springframework.web.context.ContextLoader:284 - Root WebApplicationContext: initialization completed in 2039 ms
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 2025-12-15 09:59:14,463 [main] INFO com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure:56 - Init DruidDataSource
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 2025-12-15 09:59:15,659 [main] INFO com.alibaba.druid.pool.DruidDataSource:994 - {dataSource-1} inited
at java.lang.reflect.Method.invoke(Method.java:498) 2025-12-15 09:59:18,655 [main] INFO springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69 - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) 2025-12-15 09:59:18,819 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:171 - Initializing ExecutorService 'applicationTaskExecutor'
... 20 common frames omitted 2025-12-15 09:59:19,530 [main] INFO org.quartz.impl.StdSchedulerFactory:1208 - Using default implementation for ThreadExecutor
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\show\target\classes\mapper\AdministerMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO 2025-12-15 09:59:19,540 [main] INFO org.quartz.core.SchedulerSignalerImpl:61 - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:122) 2025-12-15 09:59:19,541 [main] INFO org.quartz.core.QuartzScheduler:229 - Quartz Scheduler v.2.3.1 created.
at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:94) 2025-12-15 09:59:19,542 [main] INFO org.quartz.simpl.RAMJobStore:155 - RAMJobStore initialized.
at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:591) 2025-12-15 09:59:19,542 [main] INFO org.quartz.core.QuartzScheduler:294 - Scheduler meta-data: Quartz Scheduler (v2.3.1) 'quartzScheduler' with instanceId 'NON_CLUSTERED'
... 33 common frames omitted Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
Caused by: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO NOT STARTED.
at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:118) Currently in standby mode.
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:262) Number of jobs executed: 0
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:253) Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:245) Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:118)
... 35 common frames omitted 2025-12-15 09:59:19,543 [main] INFO org.quartz.impl.StdSchedulerFactory:1362 - Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance.
Caused by: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.subsidy.model.AdministerDO'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO 2025-12-15 09:59:19,543 [main] INFO org.quartz.impl.StdSchedulerFactory:1366 - Quartz scheduler version: 2.3.1
at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:120) 2025-12-15 09:59:19,543 [main] INFO org.quartz.core.QuartzScheduler:2293 - JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@18301763
at org.apache.ibatis.builder.BaseBuilder.resolveAlias(BaseBuilder.java:149) 2025-12-15 09:59:19,558 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler:171 - Initializing ExecutorService 'taskScheduler'
at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:116) 2025-12-15 09:59:19,621 [main] INFO springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:160 - Context refreshed
... 39 common frames omitted 2025-12-15 09:59:19,639 [main] INFO springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:163 - Found 1 custom documentation plugin(s)
Caused by: java.lang.ClassNotFoundException: Cannot find class: com.subsidy.model.AdministerDO 2025-12-15 09:59:19,671 [main] INFO springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41 - Scanning for api listing references
at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:200) 2025-12-15 09:59:19,866 [main] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean:726 - Starting Quartz Scheduler now
at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:89) 2025-12-15 09:59:19,867 [main] INFO org.quartz.core.QuartzScheduler:547 - Scheduler quartzScheduler_$_NON_CLUSTERED started.
at org.apache.ibatis.io.Resources.classForName(Resources.java:261) 2025-12-15 09:59:19,877 [main] INFO org.apache.coyote.http11.Http11NioProtocol:173 - Starting ProtocolHandler ["http-nio-23510"]
at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:116) 2025-12-15 09:59:19,898 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer:202 - Tomcat started on port(s): 23510 (http) with context path ''
... 41 common frames omitted 2025-12-15 09:59:20,116 [http-nio-23510-exec-1] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]:173 - Initializing Spring DispatcherServlet 'dispatcherServlet'
2025-12-15 09:59:20,116 [http-nio-23510-exec-1] INFO org.springframework.web.servlet.DispatcherServlet:524 - Initializing Servlet 'dispatcherServlet'
2025-12-15 09:59:20,123 [http-nio-23510-exec-1] INFO org.springframework.web.servlet.DispatcherServlet:546 - Completed initialization in 7 ms
2025-12-15 10:24:46,373 [Thread-19] INFO org.quartz.core.QuartzScheduler:585 - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
2025-12-15 10:24:46,391 [Thread-19] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler:208 - Shutting down ExecutorService 'taskScheduler'
2025-12-15 10:24:46,397 [Thread-19] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean:844 - Shutting down Quartz Scheduler
2025-12-15 10:24:46,398 [Thread-19] INFO org.quartz.core.QuartzScheduler:666 - Scheduler quartzScheduler_$_NON_CLUSTERED shutting down.
2025-12-15 10:24:46,398 [Thread-19] INFO org.quartz.core.QuartzScheduler:585 - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
2025-12-15 10:24:46,399 [Thread-19] INFO org.quartz.core.QuartzScheduler:740 - Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete.
2025-12-15 10:24:46,446 [Thread-19] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:208 - Shutting down ExecutorService 'applicationTaskExecutor'
2025-12-15 10:24:46,515 [Thread-19] INFO com.alibaba.druid.pool.DruidDataSource:2029 - {dataSource-1} closing ...
2025-12-15 10:24:46,542 [Thread-19] INFO com.alibaba.druid.pool.DruidDataSource:2101 - {dataSource-1} closed
2025-12-15 10:24:54,840 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:244 - Multiple Spring Data modules found, entering strict repository configuration mode!
2025-12-15 10:24:54,844 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:126 - Bootstrapping Spring Data repositories in DEFAULT mode.
2025-12-15 10:24:54,885 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:182 - Finished Spring Data repository scanning in 27ms. Found 0 repository interfaces.
2025-12-15 10:24:55,233 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$ae588d75] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2025-12-15 10:24:55,333 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'redisConfig' of type [com.show.common.configure.RedisConfig$$EnhancerBySpringCGLIB$$61ab0f70] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2025-12-15 10:24:55,653 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer:90 - Tomcat initialized with port(s): 23510 (http)
2025-12-15 10:24:55,666 [main] INFO org.apache.coyote.http11.Http11NioProtocol:173 - Initializing ProtocolHandler ["http-nio-23510"]
2025-12-15 10:24:55,673 [main] INFO org.apache.catalina.core.StandardService:173 - Starting service [Tomcat]
2025-12-15 10:24:55,673 [main] INFO org.apache.catalina.core.StandardEngine:173 - Starting Servlet engine: [Apache Tomcat/9.0.22]
2025-12-15 10:24:55,678 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - Loaded APR based Apache Tomcat Native library [1.2.37] using APR version [1.7.4].
2025-12-15 10:24:55,678 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
2025-12-15 10:24:55,678 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
2025-12-15 10:24:55,681 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - OpenSSL successfully initialized [OpenSSL 1.1.1u 30 May 2023]
2025-12-15 10:24:55,819 [main] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]:173 - Initializing Spring embedded WebApplicationContext
2025-12-15 10:24:55,820 [main] INFO org.springframework.web.context.ContextLoader:284 - Root WebApplicationContext: initialization completed in 1933 ms
2025-12-15 10:24:55,920 [main] INFO com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure:56 - Init DruidDataSource
2025-12-15 10:24:57,255 [main] INFO com.alibaba.druid.pool.DruidDataSource:994 - {dataSource-1} inited
2025-12-15 10:25:00,524 [main] INFO springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69 - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
2025-12-15 10:25:00,698 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:171 - Initializing ExecutorService 'applicationTaskExecutor'
2025-12-15 10:25:01,549 [main] INFO org.quartz.impl.StdSchedulerFactory:1208 - Using default implementation for ThreadExecutor
2025-12-15 10:25:01,560 [main] INFO org.quartz.core.SchedulerSignalerImpl:61 - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
2025-12-15 10:25:01,560 [main] INFO org.quartz.core.QuartzScheduler:229 - Quartz Scheduler v.2.3.1 created.
2025-12-15 10:25:01,561 [main] INFO org.quartz.simpl.RAMJobStore:155 - RAMJobStore initialized.
2025-12-15 10:25:01,562 [main] INFO org.quartz.core.QuartzScheduler:294 - Scheduler meta-data: Quartz Scheduler (v2.3.1) '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.
2025-12-15 10:25:01,562 [main] INFO org.quartz.impl.StdSchedulerFactory:1362 - Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance.
2025-12-15 10:25:01,562 [main] INFO org.quartz.impl.StdSchedulerFactory:1366 - Quartz scheduler version: 2.3.1
2025-12-15 10:25:01,563 [main] INFO org.quartz.core.QuartzScheduler:2293 - JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@655f92a1
2025-12-15 10:25:01,579 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler:171 - Initializing ExecutorService 'taskScheduler'
2025-12-15 10:25:01,646 [main] INFO springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:160 - Context refreshed
2025-12-15 10:25:01,669 [main] INFO springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:163 - Found 1 custom documentation plugin(s)
2025-12-15 10:25:01,702 [main] INFO springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41 - Scanning for api listing references
2025-12-15 10:25:01,924 [main] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean:726 - Starting Quartz Scheduler now
2025-12-15 10:25:01,925 [main] INFO org.quartz.core.QuartzScheduler:547 - Scheduler quartzScheduler_$_NON_CLUSTERED started.
2025-12-15 10:25:01,936 [main] INFO org.apache.coyote.http11.Http11NioProtocol:173 - Starting ProtocolHandler ["http-nio-23510"]
2025-12-15 10:25:01,966 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer:202 - Tomcat started on port(s): 23510 (http) with context path ''
2025-12-15 10:25:44,669 [http-nio-23510-exec-1] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]:173 - Initializing Spring DispatcherServlet 'dispatcherServlet'
2025-12-15 10:25:44,669 [http-nio-23510-exec-1] INFO org.springframework.web.servlet.DispatcherServlet:524 - Initializing Servlet 'dispatcherServlet'
2025-12-15 10:25:44,678 [http-nio-23510-exec-1] INFO org.springframework.web.servlet.DispatcherServlet:546 - Completed initialization in 9 ms
2025-12-15 10:26:13,976 [Thread-21] INFO org.quartz.core.QuartzScheduler:585 - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
2025-12-15 10:26:13,977 [Thread-21] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler:208 - Shutting down ExecutorService 'taskScheduler'
2025-12-15 10:26:13,977 [Thread-21] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean:844 - Shutting down Quartz Scheduler
2025-12-15 10:26:13,977 [Thread-21] INFO org.quartz.core.QuartzScheduler:666 - Scheduler quartzScheduler_$_NON_CLUSTERED shutting down.
2025-12-15 10:26:13,977 [Thread-21] INFO org.quartz.core.QuartzScheduler:585 - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
2025-12-15 10:26:13,978 [Thread-21] INFO org.quartz.core.QuartzScheduler:740 - Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete.
2025-12-15 10:26:13,984 [Thread-21] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:208 - Shutting down ExecutorService 'applicationTaskExecutor'
2025-12-15 10:26:14,000 [Thread-21] INFO com.alibaba.druid.pool.DruidDataSource:2029 - {dataSource-1} closing ...
2025-12-15 10:26:14,003 [Thread-21] INFO com.alibaba.druid.pool.DruidDataSource:2101 - {dataSource-1} closed
2025-12-15 10:26:20,045 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:244 - Multiple Spring Data modules found, entering strict repository configuration mode!
2025-12-15 10:26:20,050 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:126 - Bootstrapping Spring Data repositories in DEFAULT mode.
2025-12-15 10:26:20,090 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:182 - Finished Spring Data repository scanning in 28ms. Found 0 repository interfaces.
2025-12-15 10:26:20,437 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$6775700f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2025-12-15 10:26:20,533 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'redisConfig' of type [com.show.common.configure.RedisConfig$$EnhancerBySpringCGLIB$$1ac7f20a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2025-12-15 10:26:20,860 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer:90 - Tomcat initialized with port(s): 23510 (http)
2025-12-15 10:26:20,872 [main] INFO org.apache.coyote.http11.Http11NioProtocol:173 - Initializing ProtocolHandler ["http-nio-23510"]
2025-12-15 10:26:20,879 [main] INFO org.apache.catalina.core.StandardService:173 - Starting service [Tomcat]
2025-12-15 10:26:20,879 [main] INFO org.apache.catalina.core.StandardEngine:173 - Starting Servlet engine: [Apache Tomcat/9.0.22]
2025-12-15 10:26:20,884 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - Loaded APR based Apache Tomcat Native library [1.2.37] using APR version [1.7.4].
2025-12-15 10:26:20,884 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
2025-12-15 10:26:20,884 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
2025-12-15 10:26:20,887 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - OpenSSL successfully initialized [OpenSSL 1.1.1u 30 May 2023]
2025-12-15 10:26:21,037 [main] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]:173 - Initializing Spring embedded WebApplicationContext
2025-12-15 10:26:21,037 [main] INFO org.springframework.web.context.ContextLoader:284 - Root WebApplicationContext: initialization completed in 1898 ms
2025-12-15 10:26:21,140 [main] INFO com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure:56 - Init DruidDataSource
2025-12-15 10:26:22,307 [main] INFO com.alibaba.druid.pool.DruidDataSource:994 - {dataSource-1} inited
2025-12-15 10:26:25,514 [main] INFO springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69 - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
2025-12-15 10:26:25,684 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:171 - Initializing ExecutorService 'applicationTaskExecutor'
2025-12-15 10:26:26,447 [main] INFO org.quartz.impl.StdSchedulerFactory:1208 - Using default implementation for ThreadExecutor
2025-12-15 10:26:26,457 [main] INFO org.quartz.core.SchedulerSignalerImpl:61 - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
2025-12-15 10:26:26,457 [main] INFO org.quartz.core.QuartzScheduler:229 - Quartz Scheduler v.2.3.1 created.
2025-12-15 10:26:26,458 [main] INFO org.quartz.simpl.RAMJobStore:155 - RAMJobStore initialized.
2025-12-15 10:26:26,459 [main] INFO org.quartz.core.QuartzScheduler:294 - Scheduler meta-data: Quartz Scheduler (v2.3.1) '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.
2025-12-15 10:26:26,460 [main] INFO org.quartz.impl.StdSchedulerFactory:1362 - Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance.
2025-12-15 10:26:26,460 [main] INFO org.quartz.impl.StdSchedulerFactory:1366 - Quartz scheduler version: 2.3.1
2025-12-15 10:26:26,460 [main] INFO org.quartz.core.QuartzScheduler:2293 - JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@5ec3689b
2025-12-15 10:26:26,475 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler:171 - Initializing ExecutorService 'taskScheduler'
2025-12-15 10:26:26,538 [main] INFO springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:160 - Context refreshed
2025-12-15 10:26:26,558 [main] INFO springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:163 - Found 1 custom documentation plugin(s)
2025-12-15 10:26:26,594 [main] INFO springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41 - Scanning for api listing references
2025-12-15 10:26:26,805 [main] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean:726 - Starting Quartz Scheduler now
2025-12-15 10:26:26,806 [main] INFO org.quartz.core.QuartzScheduler:547 - Scheduler quartzScheduler_$_NON_CLUSTERED started.
2025-12-15 10:26:26,814 [main] INFO org.apache.coyote.http11.Http11NioProtocol:173 - Starting ProtocolHandler ["http-nio-23510"]
2025-12-15 10:26:26,837 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer:202 - Tomcat started on port(s): 23510 (http) with context path ''
2025-12-15 10:28:04,263 [http-nio-23510-exec-1] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]:173 - Initializing Spring DispatcherServlet 'dispatcherServlet'
2025-12-15 10:28:04,263 [http-nio-23510-exec-1] INFO org.springframework.web.servlet.DispatcherServlet:524 - Initializing Servlet 'dispatcherServlet'
2025-12-15 10:28:04,269 [http-nio-23510-exec-1] INFO org.springframework.web.servlet.DispatcherServlet:546 - Completed initialization in 6 ms
2025-12-15 14:20:28,824 [Thread-19] INFO org.quartz.core.QuartzScheduler:585 - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
2025-12-15 14:20:28,840 [Thread-19] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler:208 - Shutting down ExecutorService 'taskScheduler'
2025-12-15 14:20:28,845 [Thread-19] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean:844 - Shutting down Quartz Scheduler
2025-12-15 14:20:28,845 [Thread-19] INFO org.quartz.core.QuartzScheduler:666 - Scheduler quartzScheduler_$_NON_CLUSTERED shutting down.
2025-12-15 14:20:28,845 [Thread-19] INFO org.quartz.core.QuartzScheduler:585 - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
2025-12-15 14:20:28,847 [Thread-19] INFO org.quartz.core.QuartzScheduler:740 - Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete.
2025-12-15 14:20:28,895 [Thread-19] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:208 - Shutting down ExecutorService 'applicationTaskExecutor'
2025-12-15 14:20:28,982 [Thread-19] INFO com.alibaba.druid.pool.DruidDataSource:2029 - {dataSource-1} closing ...
2025-12-15 14:20:28,990 [Thread-19] INFO com.alibaba.druid.pool.DruidDataSource:2101 - {dataSource-1} closed
2025-12-15 14:20:37,155 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:244 - Multiple Spring Data modules found, entering strict repository configuration mode!
2025-12-15 14:20:37,162 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:126 - Bootstrapping Spring Data repositories in DEFAULT mode.
2025-12-15 14:20:37,220 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:182 - Finished Spring Data repository scanning in 37ms. Found 0 repository interfaces.
2025-12-15 14:20:37,681 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$43e98983] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2025-12-15 14:20:37,813 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'redisConfig' of type [com.show.common.configure.RedisConfig$$EnhancerBySpringCGLIB$$f73c0b7e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2025-12-15 14:20:38,199 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer:90 - Tomcat initialized with port(s): 23510 (http)
2025-12-15 14:20:38,215 [main] INFO org.apache.coyote.http11.Http11NioProtocol:173 - Initializing ProtocolHandler ["http-nio-23510"]
2025-12-15 14:20:38,223 [main] INFO org.apache.catalina.core.StandardService:173 - Starting service [Tomcat]
2025-12-15 14:20:38,223 [main] INFO org.apache.catalina.core.StandardEngine:173 - Starting Servlet engine: [Apache Tomcat/9.0.22]
2025-12-15 14:20:38,230 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - Loaded APR based Apache Tomcat Native library [1.2.37] using APR version [1.7.4].
2025-12-15 14:20:38,230 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
2025-12-15 14:20:38,230 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
2025-12-15 14:20:38,234 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - OpenSSL successfully initialized [OpenSSL 1.1.1u 30 May 2023]
2025-12-15 14:20:38,384 [main] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]:173 - Initializing Spring embedded WebApplicationContext
2025-12-15 14:20:38,384 [main] INFO org.springframework.web.context.ContextLoader:284 - Root WebApplicationContext: initialization completed in 2482 ms
2025-12-15 14:20:38,513 [main] INFO com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure:56 - Init DruidDataSource
2025-12-15 14:20:39,647 [main] INFO com.alibaba.druid.pool.DruidDataSource:994 - {dataSource-1} inited
2025-12-15 14:20:42,926 [main] INFO springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69 - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
2025-12-15 14:20:43,109 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:171 - Initializing ExecutorService 'applicationTaskExecutor'
2025-12-15 14:20:43,931 [main] INFO org.quartz.impl.StdSchedulerFactory:1208 - Using default implementation for ThreadExecutor
2025-12-15 14:20:43,944 [main] INFO org.quartz.core.SchedulerSignalerImpl:61 - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
2025-12-15 14:20:43,944 [main] INFO org.quartz.core.QuartzScheduler:229 - Quartz Scheduler v.2.3.1 created.
2025-12-15 14:20:43,945 [main] INFO org.quartz.simpl.RAMJobStore:155 - RAMJobStore initialized.
2025-12-15 14:20:43,945 [main] INFO org.quartz.core.QuartzScheduler:294 - Scheduler meta-data: Quartz Scheduler (v2.3.1) '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.
2025-12-15 14:20:43,946 [main] INFO org.quartz.impl.StdSchedulerFactory:1362 - Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance.
2025-12-15 14:20:43,946 [main] INFO org.quartz.impl.StdSchedulerFactory:1366 - Quartz scheduler version: 2.3.1
2025-12-15 14:20:43,946 [main] INFO org.quartz.core.QuartzScheduler:2293 - JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@1b53e6fc
2025-12-15 14:20:43,961 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler:171 - Initializing ExecutorService 'taskScheduler'
2025-12-15 14:20:44,027 [main] INFO springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:160 - Context refreshed
2025-12-15 14:20:44,045 [main] INFO springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:163 - Found 1 custom documentation plugin(s)
2025-12-15 14:20:44,077 [main] INFO springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41 - Scanning for api listing references
2025-12-15 14:20:44,296 [main] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean:726 - Starting Quartz Scheduler now
2025-12-15 14:20:44,296 [main] INFO org.quartz.core.QuartzScheduler:547 - Scheduler quartzScheduler_$_NON_CLUSTERED started.
2025-12-15 14:20:44,305 [main] INFO org.apache.coyote.http11.Http11NioProtocol:173 - Starting ProtocolHandler ["http-nio-23510"]
2025-12-15 14:20:44,333 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer:202 - Tomcat started on port(s): 23510 (http) with context path ''
2025-12-15 14:25:25,108 [http-nio-23510-exec-1] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]:173 - Initializing Spring DispatcherServlet 'dispatcherServlet'
2025-12-15 14:25:25,108 [http-nio-23510-exec-1] INFO org.springframework.web.servlet.DispatcherServlet:524 - Initializing Servlet 'dispatcherServlet'
2025-12-15 14:25:25,115 [http-nio-23510-exec-1] INFO org.springframework.web.servlet.DispatcherServlet:546 - Completed initialization in 7 ms
2025-12-15 15:25:02,670 [Thread-22] INFO org.quartz.core.QuartzScheduler:585 - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
2025-12-15 15:25:02,674 [Thread-22] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler:208 - Shutting down ExecutorService 'taskScheduler'
2025-12-15 15:25:02,678 [Thread-22] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean:844 - Shutting down Quartz Scheduler
2025-12-15 15:25:02,678 [Thread-22] INFO org.quartz.core.QuartzScheduler:666 - Scheduler quartzScheduler_$_NON_CLUSTERED shutting down.
2025-12-15 15:25:02,678 [Thread-22] INFO org.quartz.core.QuartzScheduler:585 - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
2025-12-15 15:25:02,679 [Thread-22] INFO org.quartz.core.QuartzScheduler:740 - Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete.
2025-12-15 15:25:02,701 [Thread-22] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:208 - Shutting down ExecutorService 'applicationTaskExecutor'
2025-12-15 15:25:02,863 [Thread-22] INFO com.alibaba.druid.pool.DruidDataSource:2029 - {dataSource-1} closing ...
2025-12-15 15:25:02,899 [Thread-22] INFO com.alibaba.druid.pool.DruidDataSource:2101 - {dataSource-1} closed
2025-12-15 15:25:10,181 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:244 - Multiple Spring Data modules found, entering strict repository configuration mode!
2025-12-15 15:25:10,186 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:126 - Bootstrapping Spring Data repositories in DEFAULT mode.
2025-12-15 15:25:10,227 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:182 - Finished Spring Data repository scanning in 30ms. Found 0 repository interfaces.
2025-12-15 15:25:10,621 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$890f06eb] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2025-12-15 15:25:10,723 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'redisConfig' of type [com.show.common.configure.RedisConfig$$EnhancerBySpringCGLIB$$3c6188e6] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2025-12-15 15:25:11,136 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer:90 - Tomcat initialized with port(s): 23510 (http)
2025-12-15 15:25:11,151 [main] INFO org.apache.coyote.http11.Http11NioProtocol:173 - Initializing ProtocolHandler ["http-nio-23510"]
2025-12-15 15:25:11,160 [main] INFO org.apache.catalina.core.StandardService:173 - Starting service [Tomcat]
2025-12-15 15:25:11,161 [main] INFO org.apache.catalina.core.StandardEngine:173 - Starting Servlet engine: [Apache Tomcat/9.0.22]
2025-12-15 15:25:11,168 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - Loaded APR based Apache Tomcat Native library [1.2.37] using APR version [1.7.4].
2025-12-15 15:25:11,168 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
2025-12-15 15:25:11,168 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
2025-12-15 15:25:11,172 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - OpenSSL successfully initialized [OpenSSL 1.1.1u 30 May 2023]
2025-12-15 15:25:11,347 [main] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]:173 - Initializing Spring embedded WebApplicationContext
2025-12-15 15:25:11,347 [main] INFO org.springframework.web.context.ContextLoader:284 - Root WebApplicationContext: initialization completed in 2200 ms
2025-12-15 15:25:11,481 [main] INFO com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure:56 - Init DruidDataSource
2025-12-15 15:25:12,659 [main] INFO com.alibaba.druid.pool.DruidDataSource:994 - {dataSource-1} inited
2025-12-15 15:25:16,027 [main] INFO springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69 - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
2025-12-15 15:25:16,233 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:171 - Initializing ExecutorService 'applicationTaskExecutor'
2025-12-15 15:25:16,980 [main] INFO org.quartz.impl.StdSchedulerFactory:1208 - Using default implementation for ThreadExecutor
2025-12-15 15:25:16,991 [main] INFO org.quartz.core.SchedulerSignalerImpl:61 - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
2025-12-15 15:25:16,991 [main] INFO org.quartz.core.QuartzScheduler:229 - Quartz Scheduler v.2.3.1 created.
2025-12-15 15:25:16,992 [main] INFO org.quartz.simpl.RAMJobStore:155 - RAMJobStore initialized.
2025-12-15 15:25:16,993 [main] INFO org.quartz.core.QuartzScheduler:294 - Scheduler meta-data: Quartz Scheduler (v2.3.1) '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.
2025-12-15 15:25:16,993 [main] INFO org.quartz.impl.StdSchedulerFactory:1362 - Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance.
2025-12-15 15:25:16,993 [main] INFO org.quartz.impl.StdSchedulerFactory:1366 - Quartz scheduler version: 2.3.1
2025-12-15 15:25:16,993 [main] INFO org.quartz.core.QuartzScheduler:2293 - JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@8ad6d29
2025-12-15 15:25:17,009 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler:171 - Initializing ExecutorService 'taskScheduler'
2025-12-15 15:25:17,077 [main] INFO springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:160 - Context refreshed
2025-12-15 15:25:17,099 [main] INFO springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:163 - Found 1 custom documentation plugin(s)
2025-12-15 15:25:17,133 [main] INFO springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41 - Scanning for api listing references
2025-12-15 15:25:17,346 [main] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean:726 - Starting Quartz Scheduler now
2025-12-15 15:25:17,346 [main] INFO org.quartz.core.QuartzScheduler:547 - Scheduler quartzScheduler_$_NON_CLUSTERED started.
2025-12-15 15:25:17,360 [main] INFO org.apache.coyote.http11.Http11NioProtocol:173 - Starting ProtocolHandler ["http-nio-23510"]
2025-12-15 15:25:17,385 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer:202 - Tomcat started on port(s): 23510 (http) with context path ''
2025-12-15 15:28:18,562 [http-nio-23510-exec-3] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]:173 - Initializing Spring DispatcherServlet 'dispatcherServlet'
2025-12-15 15:28:18,562 [http-nio-23510-exec-3] INFO org.springframework.web.servlet.DispatcherServlet:524 - Initializing Servlet 'dispatcherServlet'
2025-12-15 15:28:18,569 [http-nio-23510-exec-3] INFO org.springframework.web.servlet.DispatcherServlet:546 - Completed initialization in 7 ms
2025-12-15 15:34:56,893 [Thread-20] INFO org.quartz.core.QuartzScheduler:585 - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
2025-12-15 15:34:56,894 [Thread-20] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler:208 - Shutting down ExecutorService 'taskScheduler'
2025-12-15 15:34:56,894 [Thread-20] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean:844 - Shutting down Quartz Scheduler
2025-12-15 15:34:56,894 [Thread-20] INFO org.quartz.core.QuartzScheduler:666 - Scheduler quartzScheduler_$_NON_CLUSTERED shutting down.
2025-12-15 15:34:56,894 [Thread-20] INFO org.quartz.core.QuartzScheduler:585 - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
2025-12-15 15:34:56,895 [Thread-20] INFO org.quartz.core.QuartzScheduler:740 - Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete.
2025-12-15 15:34:56,900 [Thread-20] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:208 - Shutting down ExecutorService 'applicationTaskExecutor'
2025-12-15 15:34:56,916 [Thread-20] INFO com.alibaba.druid.pool.DruidDataSource:2029 - {dataSource-1} closing ...
2025-12-15 15:34:56,919 [Thread-20] INFO com.alibaba.druid.pool.DruidDataSource:2101 - {dataSource-1} closed
2025-12-15 15:35:01,485 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:244 - Multiple Spring Data modules found, entering strict repository configuration mode!
2025-12-15 15:35:01,490 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:126 - Bootstrapping Spring Data repositories in DEFAULT mode.
2025-12-15 15:35:01,539 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate:182 - Finished Spring Data repository scanning in 33ms. Found 0 repository interfaces.
2025-12-15 15:35:01,914 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$b3429b5a] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2025-12-15 15:35:02,013 [main] INFO org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330 - Bean 'redisConfig' of type [com.show.common.configure.RedisConfig$$EnhancerBySpringCGLIB$$66951d55] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2025-12-15 15:35:02,349 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer:90 - Tomcat initialized with port(s): 23510 (http)
2025-12-15 15:35:02,361 [main] INFO org.apache.coyote.http11.Http11NioProtocol:173 - Initializing ProtocolHandler ["http-nio-23510"]
2025-12-15 15:35:02,368 [main] INFO org.apache.catalina.core.StandardService:173 - Starting service [Tomcat]
2025-12-15 15:35:02,368 [main] INFO org.apache.catalina.core.StandardEngine:173 - Starting Servlet engine: [Apache Tomcat/9.0.22]
2025-12-15 15:35:02,374 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - Loaded APR based Apache Tomcat Native library [1.2.37] using APR version [1.7.4].
2025-12-15 15:35:02,374 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
2025-12-15 15:35:02,374 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
2025-12-15 15:35:02,377 [main] INFO org.apache.catalina.core.AprLifecycleListener:173 - OpenSSL successfully initialized [OpenSSL 1.1.1u 30 May 2023]
2025-12-15 15:35:02,523 [main] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]:173 - Initializing Spring embedded WebApplicationContext
2025-12-15 15:35:02,523 [main] INFO org.springframework.web.context.ContextLoader:284 - Root WebApplicationContext: initialization completed in 1964 ms
2025-12-15 15:35:02,625 [main] INFO com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure:56 - Init DruidDataSource
2025-12-15 15:35:03,829 [main] INFO com.alibaba.druid.pool.DruidDataSource:994 - {dataSource-1} inited
2025-12-15 15:35:07,101 [main] INFO springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping:69 - Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)]
2025-12-15 15:35:07,329 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:171 - Initializing ExecutorService 'applicationTaskExecutor'
2025-12-15 15:35:08,163 [main] INFO org.quartz.impl.StdSchedulerFactory:1208 - Using default implementation for ThreadExecutor
2025-12-15 15:35:08,177 [main] INFO org.quartz.core.SchedulerSignalerImpl:61 - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
2025-12-15 15:35:08,178 [main] INFO org.quartz.core.QuartzScheduler:229 - Quartz Scheduler v.2.3.1 created.
2025-12-15 15:35:08,179 [main] INFO org.quartz.simpl.RAMJobStore:155 - RAMJobStore initialized.
2025-12-15 15:35:08,180 [main] INFO org.quartz.core.QuartzScheduler:294 - Scheduler meta-data: Quartz Scheduler (v2.3.1) '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.
2025-12-15 15:35:08,180 [main] INFO org.quartz.impl.StdSchedulerFactory:1362 - Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance.
2025-12-15 15:35:08,180 [main] INFO org.quartz.impl.StdSchedulerFactory:1366 - Quartz scheduler version: 2.3.1
2025-12-15 15:35:08,180 [main] INFO org.quartz.core.QuartzScheduler:2293 - JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@38394e76
2025-12-15 15:35:08,200 [main] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler:171 - Initializing ExecutorService 'taskScheduler'
2025-12-15 15:35:08,291 [main] INFO springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:160 - Context refreshed
2025-12-15 15:35:08,319 [main] INFO springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper:163 - Found 1 custom documentation plugin(s)
2025-12-15 15:35:08,363 [main] INFO springfox.documentation.spring.web.scanners.ApiListingReferenceScanner:41 - Scanning for api listing references
2025-12-15 15:35:08,660 [main] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean:726 - Starting Quartz Scheduler now
2025-12-15 15:35:08,661 [main] INFO org.quartz.core.QuartzScheduler:547 - Scheduler quartzScheduler_$_NON_CLUSTERED started.
2025-12-15 15:35:08,671 [main] INFO org.apache.coyote.http11.Http11NioProtocol:173 - Starting ProtocolHandler ["http-nio-23510"]
2025-12-15 15:35:08,716 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer:202 - Tomcat started on port(s): 23510 (http) with context path ''
2025-12-15 15:47:08,398 [http-nio-23510-exec-2] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]:173 - Initializing Spring DispatcherServlet 'dispatcherServlet'
2025-12-15 15:47:08,398 [http-nio-23510-exec-2] INFO org.springframework.web.servlet.DispatcherServlet:524 - Initializing Servlet 'dispatcherServlet'
2025-12-15 15:47:08,404 [http-nio-23510-exec-2] INFO org.springframework.web.servlet.DispatcherServlet:546 - Completed initialization in 6 ms
2025-12-15 15:47:48,043 [Thread-21] INFO org.quartz.core.QuartzScheduler:585 - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
2025-12-15 15:47:48,043 [Thread-21] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler:208 - Shutting down ExecutorService 'taskScheduler'
2025-12-15 15:47:48,043 [Thread-21] INFO org.springframework.scheduling.quartz.SchedulerFactoryBean:844 - Shutting down Quartz Scheduler
2025-12-15 15:47:48,043 [Thread-21] INFO org.quartz.core.QuartzScheduler:666 - Scheduler quartzScheduler_$_NON_CLUSTERED shutting down.
2025-12-15 15:47:48,043 [Thread-21] INFO org.quartz.core.QuartzScheduler:585 - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
2025-12-15 15:47:48,044 [Thread-21] INFO org.quartz.core.QuartzScheduler:740 - Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete.
2025-12-15 15:47:48,049 [Thread-21] INFO org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor:208 - Shutting down ExecutorService 'applicationTaskExecutor'
2025-12-15 15:47:48,066 [Thread-21] INFO com.alibaba.druid.pool.DruidDataSource:2029 - {dataSource-1} closing ...
2025-12-15 15:47:48,067 [Thread-21] INFO com.alibaba.druid.pool.DruidDataSource:2101 - {dataSource-1} closed
...@@ -28,7 +28,7 @@ org.springframework.jdbc.BadSqlGrammarException: ...@@ -28,7 +28,7 @@ org.springframework.jdbc.BadSqlGrammarException:
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
at com.sun.proxy.$Proxy124.getMemberList(Unknown Source) at com.sun.proxy.$Proxy124.getMemberList(Unknown Source)
at com.subsidy.job.ProjectSalaryNotificationJob.execute(ProjectSalaryNotificationJob.java:71) at com.show.job.ProjectSalaryNotificationJob.execute(ProjectSalaryNotificationJob.java:71)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: java.sql.SQLSyntaxErrorException: Unknown column 't.project_id' in 'where clause' Caused by: java.sql.SQLSyntaxErrorException: Unknown column 't.project_id' in 'where clause'
...@@ -98,7 +98,7 @@ Caused by: org.springframework.jdbc.BadSqlGrammarException: ...@@ -98,7 +98,7 @@ Caused by: org.springframework.jdbc.BadSqlGrammarException:
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
at com.sun.proxy.$Proxy124.getMemberList(Unknown Source) at com.sun.proxy.$Proxy124.getMemberList(Unknown Source)
at com.subsidy.job.ProjectSalaryNotificationJob.execute(ProjectSalaryNotificationJob.java:71) at com.show.job.ProjectSalaryNotificationJob.execute(ProjectSalaryNotificationJob.java:71)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
... 1 common frames omitted ... 1 common frames omitted
Caused by: java.sql.SQLSyntaxErrorException: Unknown column 't.project_id' in 'where clause' Caused by: java.sql.SQLSyntaxErrorException: Unknown column 't.project_id' in 'where clause'
...@@ -137,7 +137,7 @@ Caused by: java.sql.SQLSyntaxErrorException: Unknown column 't.project_id' in 'w ...@@ -137,7 +137,7 @@ Caused by: java.sql.SQLSyntaxErrorException: Unknown column 't.project_id' in 'w
... 20 common frames omitted ... 20 common frames omitted
2024-08-20 14:40:05,530 [schedulerFactoryBean_Worker-1] ERROR org.quartz.core.JobRunShell:211 - Job CourseNotificationJob.QWE2024-08-工资发放-2024-08-20 14:40:00 threw an unhandled Exception: 2024-08-20 14:40:05,530 [schedulerFactoryBean_Worker-1] ERROR org.quartz.core.JobRunShell:211 - Job CourseNotificationJob.QWE2024-08-工资发放-2024-08-20 14:40:00 threw an unhandled Exception:
java.lang.NullPointerException: null java.lang.NullPointerException: null
at com.subsidy.job.ProjectSalaryNotificationJob.execute(ProjectSalaryNotificationJob.java:88) at com.show.job.ProjectSalaryNotificationJob.execute(ProjectSalaryNotificationJob.java:88)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
2024-08-20 14:40:05,531 [schedulerFactoryBean_Worker-1] ERROR org.quartz.core.ErrorLogger:2407 - Job (CourseNotificationJob.QWE2024-08-工资发放-2024-08-20 14:40:00 threw an exception. 2024-08-20 14:40:05,531 [schedulerFactoryBean_Worker-1] ERROR org.quartz.core.ErrorLogger:2407 - Job (CourseNotificationJob.QWE2024-08-工资发放-2024-08-20 14:40:00 threw an exception.
...@@ -145,6 +145,6 @@ org.quartz.SchedulerException: Job threw an unhandled exception. ...@@ -145,6 +145,6 @@ org.quartz.SchedulerException: Job threw an unhandled exception.
at org.quartz.core.JobRunShell.run(JobRunShell.java:213) at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: java.lang.NullPointerException: null Caused by: java.lang.NullPointerException: null
at com.subsidy.job.ProjectSalaryNotificationJob.execute(ProjectSalaryNotificationJob.java:88) at com.show.job.ProjectSalaryNotificationJob.execute(ProjectSalaryNotificationJob.java:88)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
... 1 common frames omitted ... 1 common frames omitted
...@@ -275,7 +275,7 @@ ...@@ -275,7 +275,7 @@
</dependencies> </dependencies>
<build> <build>
<finalName>ecnutracks</finalName> <finalName>show</finalName>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
......
package com.subsidy; package com.show;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
...@@ -11,9 +10,8 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -11,9 +10,8 @@ import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
@SpringBootApplication @SpringBootApplication
@MapperScan(basePackages = {"com.subsidy.mapper"}) @MapperScan(basePackages = {"com.show.mapper"})
@EnableScheduling @EnableScheduling
//@EnableCaching
@EnableAsync @EnableAsync
@EnableTransactionManagement @EnableTransactionManagement
public class MeishuApplication { public class MeishuApplication {
......
package com.subsidy.common; package com.show.common;
import com.subsidy.common.configure.RemoteProperties; import com.show.common.configure.RemoteProperties;
import lombok.Data; import lombok.Data;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
......
package com.subsidy.common; package com.show.common;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
......
package com.subsidy.common.configure; package com.show.common.configure;
import lombok.Data; import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
......
package com.subsidy.common.configure; package com.show.common.configure;
import org.apache.catalina.connector.Connector; import org.apache.catalina.connector.Connector;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
......
package com.subsidy.common.configure; package com.show.common.configure;
import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.config.GlobalConfig; import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.subsidy.common.handler.MetaHandler; import com.show.common.handler.MetaHandler;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
......
package com.subsidy.common.configure; package com.show.common.configure;
import lombok.Data; import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
......
package com.subsidy.common.configure; package com.show.common.configure;
import lombok.Data; import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
......
package com.subsidy.common.configure; package com.show.common.configure;
import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.annotation.PropertyAccessor;
......
package com.subsidy.common.configure; package com.show.common.configure;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.PropertySource;
......
package com.subsidy.common.configure; package com.show.common.configure;
import lombok.Data; import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
......
package com.subsidy.common.configure; package com.show.common.configure;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
......
package com.subsidy.common.configure; package com.show.common.configure;
import lombok.Data; import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
......
package com.subsidy.common.configure; package com.show.common.configure;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.builders.RequestHandlerSelectors;
...@@ -29,10 +28,10 @@ public class SwaggerConfig { ...@@ -29,10 +28,10 @@ public class SwaggerConfig {
.enable(!isProd) .enable(!isProd)
.pathMapping("/") .pathMapping("/")
.select() .select()
.apis(RequestHandlerSelectors.basePackage("com.subsidy")) .apis(RequestHandlerSelectors.basePackage("com.show"))
.paths(PathSelectors.any()) .paths(PathSelectors.any())
.build().apiInfo(new ApiInfoBuilder() .build().apiInfo(new ApiInfoBuilder()
.title("ecnu") .title("共创展厅")
.description("接口文档规范") .description("接口文档规范")
.version("1.0") .version("1.0")
// .contact(new Contact("啊啊啊啊","www.youkehulian.com","tcp@meishu.com")) // .contact(new Contact("啊啊啊啊","www.youkehulian.com","tcp@meishu.com"))
......
package com.subsidy.common.configure; package com.show.common.configure;
import lombok.Data; import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
......
package com.subsidy.common.configure; package com.show.common.configure;
import com.subsidy.common.interceptor.AuthenticationInterceptor; import com.show.common.interceptor.AuthenticationInterceptor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
......
package com.subsidy.common.configure; package com.show.common.configure;
import org.aspectj.lang.JoinPoint; import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*; import org.aspectj.lang.annotation.*;
...@@ -6,12 +6,6 @@ import org.slf4j.Logger; ...@@ -6,12 +6,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
@Aspect @Aspect
@Component @Component
...@@ -20,10 +14,10 @@ public class WebLogAspect { ...@@ -20,10 +14,10 @@ public class WebLogAspect {
private final Logger logger = LoggerFactory.getLogger(WebLogAspect.class); private final Logger logger = LoggerFactory.getLogger(WebLogAspect.class);
@Pointcut("execution(public * com.subsidy.controller.*.*(..))")//切入点描述 这个是controller包的切入点 @Pointcut("execution(public * com.show.controller.*.*(..))")//切入点描述 这个是controller包的切入点
public void controllerLog(){}//签名,可以理解成这个切入点的一个名称 public void controllerLog(){}//签名,可以理解成这个切入点的一个名称
@Pointcut("execution(public * com.subsidy.controller.*.*(..))") @Pointcut("execution(public * com.show.controller.*.*(..))")
public void serviceImplLog(){} public void serviceImplLog(){}
@Before("controllerLog()") //在切入点的方法run之前要干的 @Before("controllerLog()") //在切入点的方法run之前要干的
......
package com.subsidy.common.configure; package com.show.common.configure;
import lombok.Data; import lombok.Data;
......
package com.show.common.constant;
public class ApplyType {
public static final String NEW_SHOW = "新的作品";
public static final String UPDATE_SHOW = "作品更新";
}
package com.show.common.constant;
public class AssigneeType {
public static final String USER = "用户";
public static final String ROLE = "角色";
public static final String STUDENT = "学生";
public static final String TEACHER = "老师";
}
package com.subsidy.common.constant; package com.show.common.constant;
public class AttendanceConstant { public class AttendanceConstant {
......
package com.show.common.constant;
public class BoolFlag {
public static final String SHI = "是";
public static final String FOU = "否";
}
package com.subsidy.common.constant; package com.show.common.constant;
import lombok.Getter; import lombok.Getter;
......
package com.show.common.constant;
/**
* 枚举类
*/
public class ConstantUtils {
public static final String DELETE_SUCCESS = "删除成功";
public static final String UPLOAD_FAIL = "上传失败";
public static final String ADD_SUCCESS = "新增成功";
public static final String COMMIT_SUCCESS = "提交成功";
public static final String SUCCESS_SEND_OUT = "发送成功";
public static final String FAIL_SEND_OUT = "发送失败";
public static final String SAVE_SUCCESS = "保存成功";
public static final String SHARE_SUCCESS = "共享成功";
public static final String SUBMIT_SUCCESS = "提交成功";
public static final String SUCCESS_UPDATE = "更新成功";
public static final String FAIL_UPDATE = "更新失败";
public static final String SET_SUCCESS = "设置成功";
public static final String SUCCESS_VERIFY = "验证成功";
public static final String FAIL_VERIFY = "验证失败";
public static final String COMPANY_NAME = "TeachAI";
public static final String ALREADY_DONE = "已完成";
public static final String ALREADY_RECOMMEND = "已推荐";
public static final String VERIFY_NAME = "有课互联";
public static final String NOTICE_NAME = "有课进度通知";
public static final String TECH_NAME = "有课互联学习平台";
public static final String SUCCESS_REJECT = "驳回成功";
public static final String SUCCESS_CHECK = "审批成功";
/**
* 短信模板---验证模板
*/
public static final String TEMPLATE_CODE = "SMS_190945394";
/**
* 短信 地域ID
*/
public static final String REGION_ID = "cn-hangzhou";
/**
* 短信 RAM账号AccessKey ID
*/
public static final String ACCESS_KEY_ID = "LTAI5tLUBG4B6QxhHrhddc7p";
/**
* 短信 RAM账号AccessKey Secret
*/
public static final String SECRET = "eber38QGHZixTQ6bFfrd80kbg67jIP";
/**
* 腾讯云点播视频转码模板
*/
public static final Long TEMPLATE_VOD = 100030L;
/**
* 手机端token
*/
public static final String MOBILE_TERMINATE = "mobile";
public static final String ADMINISTER_TERMINATE = "administer";
/**
* API密钥--微信参数
*/
public static final String SECRET_ID = "AKIDOcePHvZ2C5VeYHQGSO5aqtlNxJQLqfz2";
public static final String SECRET_KEY = "vjHYRmrfDbw0rWxA7oFcj7F8lDPKCm8E";
/**
* 图形验证码
*/
public static final Long CAPTCHAAPP_ID = 2013197365L;
public static final String APP_SECRET_KEY = "04ABoF0ZVuMje8NP84DE5Sg**";
public static final Long BUSINESS_ID = 1L;
public static final String UTF8 = "UTF-8";
/**
* 保利威视
*/
public static final String POLYV_VIEWLOG_2 = "http://api.polyv.net/live/v1/statistics/{channelId}/viewlog";
/**
* 推送人社局图片格式
*/
public static final String IMAGE_FORMAT = "?x-oss-process=image/auto-orient,1/resize,m_pad,w_500,h_500/quality,Q_100/format,jpg";
}
package com.subsidy.common.constant; package com.show.common.constant;
public class MemberType { public class MemberType {
......
package com.subsidy.common.constant; package com.show.common.constant;
import lombok.Data; import lombok.Data;
......
package com.subsidy.common.constant; package com.show.common.constant;
public class Role { public class Role {
......
package com.subsidy.common.constant; package com.show.common.constant;
public class SMSTemplate { public class SMSTemplate {
......
package com.show.common.constant;
public class ShowStatus {
public static final String PUBLISH = "已发布";
public static final String HIDDEN = "已隐藏";
}
package com.subsidy.common.constant; package com.show.common.constant;
import lombok.Getter;
public class SmsCode { public class SmsCode {
......
package com.show.common.constant;
public class SubmitStatus {
public static final String TO_REVIEW = "待审核";
public static final String PASS = "已通过";
public static final String REJECT = "驳回中";
public static final String HIDE = "已隐藏";
}
package com.show.common.constant;
public class TaskType {
public static final String COMMIT = "提交";
public static final String CHECK = "审批";
public static final String REJECT = "驳回";
}
package com.subsidy.common.constant; package com.show.common.constant;
import lombok.Getter; import lombok.Getter;
......
package com.show.common.constant;
public class WorkflowInstanceStatus {
public static final String DOING = "运行中";
public static final String DONE = "已完成";
public static final String END = "已终止";
public static final String REJECTING = "驳回中";
}
package com.show.common.constant;
public class WorkflowTaskStatus {
public static final String TODO = "待审核";
public static final String DONE = "已通过";
public static final String REJECT = "驳回中";
public static final String CANCEL = "已结束";
public static final String COMMIT = "已提交";
}
package com.subsidy.common.constant; package com.show.common.constant;
public class WxConstant { public class WxConstant {
......
package com.subsidy.common.exception; package com.show.common.exception;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.subsidy.common.ResponseData; import com.show.common.ResponseData;
import com.subsidy.common.ResponseVO; import com.show.common.ResponseVO;
import com.subsidy.common.configure.RemoteProperties; import com.show.common.configure.RemoteProperties;
import com.subsidy.common.constant.Code; import com.show.common.constant.Code;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T; import org.apache.poi.ss.formula.functions.T;
import org.springframework.http.converter.HttpMessageNotReadableException; import org.springframework.http.converter.HttpMessageNotReadableException;
......
package com.subsidy.common.exception; package com.show.common.exception;
import com.subsidy.common.configure.RemoteProperties; import com.show.common.configure.RemoteProperties;
/** /**
* 异常处理 * 异常处理
......
package com.subsidy.common.handler; package com.show.common.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject; import org.apache.ibatis.reflection.MetaObject;
......
package com.subsidy.common.interceptor; package com.show.common.interceptor;
import com.auth0.jwt.interfaces.Claim; import com.auth0.jwt.interfaces.Claim;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.subsidy.common.exception.HttpException; import com.show.common.exception.HttpException;
import com.subsidy.mapper.AdministerMapper; import com.show.mapper.MemberMapper;
import com.subsidy.model.AdministerDO; import com.show.model.MemberDO;
import com.subsidy.util.ConstantUtils; import com.show.util.JwtUtil;
import com.subsidy.util.JwtUtil; import com.show.util.Localstorage;
import com.subsidy.util.Localstorage;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.CrossOrigin;
...@@ -32,7 +31,7 @@ import java.util.Map; ...@@ -32,7 +31,7 @@ import java.util.Map;
public class AuthenticationInterceptor implements HandlerInterceptor { public class AuthenticationInterceptor implements HandlerInterceptor {
@Autowired @Autowired
private AdministerMapper administerMapper; private MemberMapper memberMapper;
@Override @Override
@CrossOrigin() @CrossOrigin()
...@@ -71,37 +70,19 @@ public class AuthenticationInterceptor implements HandlerInterceptor { ...@@ -71,37 +70,19 @@ public class AuthenticationInterceptor implements HandlerInterceptor {
Map<String, Claim> claimMap = JwtUtil.getClaims(token); Map<String, Claim> claimMap = JwtUtil.getClaims(token);
if (claimMap != null) { if (claimMap != null) {
//String[] role = methodAnnotation.value(); //String[] role = methodAnnotation.value();
String type = claimMap.get("type").asString(); // String type = claimMap.get("type").asString();
if (ConstantUtils.ADMINISTER_TERMINATE.equals(type)) { // if (ConstantUtils.ADMINISTER_TERMINATE.equals(type)) {
AdministerDO administerDO = administerMapper.selectById(claimMap.get("id").asLong()); MemberDO memberDO = memberMapper.selectById(claimMap.get("id").asLong());
if (null != administerDO) { if (null != memberDO) {
Localstorage.setUser(administerDO,type); Localstorage.setUser(memberDO);
return true; return true;
} }
} else if (ConstantUtils.MOBILE_TERMINATE.equals(type)) {
/**
* 学生端设置单设备登录
*/
/* String tk = (String) redisUtil.get(ConstantUtils.MOBILE_TERMINATE+"_"+claimMap.get("id").asLong());
if(StringUtils.isNotBlank(tk)) {
if(tk.equals(token)) {
return true;
}
throw new HttpException(1011);
} else {
throw new HttpException(1010);
}*/
} else { } else {
throw new HttpException(1010); throw new HttpException(1010);
} }
} }
} }
throw new HttpException(1010); return true;
} }
return true;
}
} }
package com.subsidy.common.interceptor; package com.show.common.interceptor;
import java.lang.annotation.*; import java.lang.annotation.*;
......
package com.subsidy.common.interceptor; package com.show.common.interceptor;
import java.lang.annotation.*; import java.lang.annotation.*;
......
package com.show.controller;
import com.show.common.ResponseData;
import com.show.common.ResponseVO;
import com.show.model.AcademyDictDO;
import com.show.service.AcademyDictService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-12-15
*/
@RestController
@Api(tags = "院校字典表")
@RequestMapping("/academyDict")
public class AcademyDictController {
@Autowired
private AcademyDictService academyDictService;
@PostMapping("academyDetail")
@ApiOperation("查看院校详情 id")
public ResponseVO academyDetail(@RequestBody AcademyDictDO academyDictDO){
return ResponseData.generateCreatedResponse(0,academyDictService.academyDetail(academyDictDO));
}
}
package com.subsidy.controller; package com.show.controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -8,15 +8,15 @@ import io.swagger.annotations.Api; ...@@ -8,15 +8,15 @@ import io.swagger.annotations.Api;
/** /**
* <p> * <p>
* 管理平台用户 前端控制器 * 院校权限映射表 前端控制器
* </p> * </p>
* *
* @author Tuyp * @author Tuyp
* @since 2025-11-25 * @since 2025-11-27
*/ */
@RestController @RestController
@Api(tags = "管理平台用户") @Api(tags = "院校权限映射表")
@RequestMapping("/administer-do") @RequestMapping("/academy-permission-mapping-do")
public class AdministerController { public class AcademyPermissionMappingController {
} }
package com.show.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-12-15
*/
@RestController
@Api(tags = "")
@RequestMapping("/academy-platforms-do")
public class AcademyPlatformsController {
}
package com.show.controller;
import com.show.common.ResponseData;
import com.show.common.ResponseVO;
import com.show.dto.member.MemberWorkGroupDTO;
import com.show.dto.member.UpdateMemberInfoDTO;
import com.show.model.MemberDO;
import com.show.model.ShowWorksDO;
import com.show.service.MemberService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 学生表 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
@RestController
@Api(tags = "学生表")
@RequestMapping("/member")
public class MemberController {
@Autowired
private MemberService memberService;
@PostMapping("memberPage")
@ApiOperation("学生首页 id 学生id")
public ResponseVO memberPage(@RequestBody MemberDO memberDO){
return ResponseData.generateCreatedResponse(0,memberService.memberPage(memberDO));
}
@PostMapping("login")
@ApiOperation("学生登录 studyNo 学号 idCard 身份证后4位 ")
public ResponseVO login(@RequestBody MemberDO memberDO){
return ResponseData.generateCreatedResponse(0,memberService.login(memberDO));
}
@PostMapping("activeMember")
@ApiOperation("激活创作者账户 id image,aliasName,telephone")
public ResponseVO activeMember(@RequestBody UpdateMemberInfoDTO updateMemberInfoDTO){
return ResponseData.generateCreatedResponse(0,memberService.activeMember(updateMemberInfoDTO));
}
@PostMapping("applyCenterSummary")
@ApiOperation("审批中心数量汇总 memberId")
public ResponseVO applyCenterSummary(@RequestBody ShowWorksDO showWorksDO){
return ResponseData.generateCreatedResponse(0,memberService.applyCenterSummary(showWorksDO));
}
@PostMapping("memberWorkGroup")
@ApiOperation("审批中心-分组 pageNum pageSize memberId applyType")
public ResponseVO memberWorkGroup(@RequestBody MemberWorkGroupDTO memberWorkGroupDTO){
return ResponseData.generateCreatedResponse(0,memberService.memberWorkGroup(memberWorkGroupDTO));
}
@PostMapping("updateMemberInfo")
@ApiOperation("修改个人信息 id image,aliasName,telephone memberContactsDOS [contactMethod imgUrl] ")
public ResponseVO updateMemberInfo(@RequestBody UpdateMemberInfoDTO updateMemberInfoDTO){
return ResponseData.generateCreatedResponse(0,memberService.updateMemberInfo(updateMemberInfoDTO));
}
@PostMapping("sendMsg")
@ApiOperation("发送短信 telephone")
public ResponseVO sendMsg(@RequestBody MemberDO memberDO){
return ResponseData.generateCreatedResponse(0,memberService.sendMsg(memberDO));
}
}
package com.show.controller;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.*;
import com.show.common.ResponseData;
import com.show.common.ResponseVO;
import com.show.common.exception.HttpException;
import com.show.vo.oss.GetSecretVO;
import com.show.vo.oss.UploadFileVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
@Api(tags = "oss")
@RestController
@RequestMapping("/oss")
public class OssController {
public static final String keyId = "LTAI5tLUBG4B6QxhHrhddc7p";
public static final String secret = "eber38QGHZixTQ6bFfrd80kbg67jIP";
@Value("${spring.profiles.active}")
private String env;
@PostMapping("getSecret")
@ApiOperation("oss秘钥")
public ResponseVO getSecret() {
GetSecretVO getSecretVO = new GetSecretVO();
getSecretVO.setKey(keyId);
getSecretVO.setSecret(secret);
return ResponseData.generateCreatedResponse(0, getSecretVO);
}
@PostMapping("uploadFile")
@ApiOperation("分片上传")
public ResponseVO fenpian(@RequestParam("file") MultipartFile file) {
UploadFileVO uploadFileVO = new UploadFileVO();
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-beijing.aliyuncs.com";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
// 填写Bucket名称,例如examplebucket。
// String bucketName = "zhongzhi-cms";
// 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
String objectName = System.currentTimeMillis() + "_" + file.getOriginalFilename();
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, keyId, secret);
if ("dev".equals(env)) {
env = "ykhl-bigger-test";
}
if ("prod".equals(env)) {
env = "ykhl-bigger";
}
try {
// 创建InitiateMultipartUploadRequest对象。
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(env, objectName);
// 如果需要在初始化分片时设置请求头,请参考以下示例代码。
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType(file.getContentType());
metadata.setContentDisposition("inline");
metadata.setHeader("x-oss-force-download", false);
request.setObjectMetadata(metadata);
// 初始化分片。
InitiateMultipartUploadResult upresult = ossClient.initiateMultipartUpload(request);
// 返回uploadId,它是分片上传事件的唯一标识。您可以根据该uploadId发起相关的操作,例如取消分片上传、查询分片上传等。
String uploadId = upresult.getUploadId();
// partETags是PartETag的集合。PartETag由分片的ETag和分片号组成。
List<PartETag> partETags = new ArrayList<PartETag>();
// 每个分片的大小,用于计算文件有多少个分片。单位为字节。
final long partSize = 1 * 1024 * 1024L; //1 MB。
long fileLength = file.getSize();
int partCount = (int) (fileLength / partSize);
if (fileLength % partSize != 0) {
partCount++;
}
// 遍历分片上传。
for (int i = 0; i < partCount; i++) {
long startPos = i * partSize;
long curPartSize = (i + 1 == partCount) ? (fileLength - startPos) : partSize;
UploadPartRequest uploadPartRequest = new UploadPartRequest();
uploadPartRequest.setBucketName(env);
uploadPartRequest.setKey(objectName);
uploadPartRequest.setUploadId(uploadId);
// 设置上传的分片流。
// 以本地文件为例说明如何创建FIleInputstream,并通过InputStream.skip()方法跳过指定数据。
InputStream instream = file.getInputStream();
instream.skip(startPos);
uploadPartRequest.setInputStream(instream);
// 设置分片大小。除了最后一个分片没有大小限制,其他的分片最小为100 KB。
uploadPartRequest.setPartSize(curPartSize);
// 设置分片号。每一个上传的分片都有一个分片号,取值范围是1~10000,如果超出此范围,OSS将返回InvalidArgument错误码。
uploadPartRequest.setPartNumber(i + 1);
// 每个分片不需要按顺序上传,甚至可以在不同客户端上传,OSS会按照分片号排序组成完整的文件。
UploadPartResult uploadPartResult = ossClient.uploadPart(uploadPartRequest);
// 每次上传分片之后,OSS的返回结果包含PartETag。PartETag将被保存在partETags中。
partETags.add(uploadPartResult.getPartETag());
}
// 创建CompleteMultipartUploadRequest对象。
// 在执行完成分片上传操作时,需要提供所有有效的partETags。OSS收到提交的partETags后,会逐一验证每个分片的有效性。当所有的数据分片验证通过后,OSS将把这些分片组合成一个完整的文件。
CompleteMultipartUploadRequest completeMultipartUploadRequest =
new CompleteMultipartUploadRequest(env, objectName, uploadId, partETags);
// 完成分片上传。
CompleteMultipartUploadResult completeMultipartUploadResult = ossClient.completeMultipartUpload(completeMultipartUploadRequest);
uploadFileVO.setUrl(completeMultipartUploadResult.getLocation()+"?x-oss-process=image/auto-orient,1/quality,q_60");
} catch (Exception e) {
e.printStackTrace();
// throw new HttpException();
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
return ResponseData.generateCreatedResponse(0, uploadFileVO);
}
@PostMapping("uploadFile6")
@ApiOperation("分片上传 压缩至60%")
public ResponseVO uploadFile6(@RequestParam("file") MultipartFile file) {
UploadFileVO uploadFileVO = new UploadFileVO();
// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-beijing.aliyuncs.com";
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
// 填写Bucket名称,例如examplebucket。
// String bucketName = "zhongzhi-cms";
// 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
String objectName = System.currentTimeMillis() + "_" + file.getOriginalFilename();
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, keyId, secret);
if ("dev".equals(env)) {
env = "ykhl-bigger-test";
}
if ("prod".equals(env)) {
env = "ykhl-bigger";
}
try {
// 创建InitiateMultipartUploadRequest对象。
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(env, objectName);
// 如果需要在初始化分片时设置请求头,请参考以下示例代码。
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType(file.getContentType());
metadata.setContentDisposition("inline");
metadata.setHeader("x-oss-force-download", false);
request.setObjectMetadata(metadata);
// 初始化分片。
InitiateMultipartUploadResult upresult = ossClient.initiateMultipartUpload(request);
// 返回uploadId,它是分片上传事件的唯一标识。您可以根据该uploadId发起相关的操作,例如取消分片上传、查询分片上传等。
String uploadId = upresult.getUploadId();
// partETags是PartETag的集合。PartETag由分片的ETag和分片号组成。
List<PartETag> partETags = new ArrayList<PartETag>();
// 每个分片的大小,用于计算文件有多少个分片。单位为字节。
final long partSize = 1 * 1024 * 1024L; //1 MB。
long fileLength = file.getSize();
int partCount = (int) (fileLength / partSize);
if (fileLength % partSize != 0) {
partCount++;
}
// 遍历分片上传。
for (int i = 0; i < partCount; i++) {
long startPos = i * partSize;
long curPartSize = (i + 1 == partCount) ? (fileLength - startPos) : partSize;
UploadPartRequest uploadPartRequest = new UploadPartRequest();
uploadPartRequest.setBucketName(env);
uploadPartRequest.setKey(objectName);
uploadPartRequest.setUploadId(uploadId);
// 设置上传的分片流。
// 以本地文件为例说明如何创建FIleInputstream,并通过InputStream.skip()方法跳过指定数据。
InputStream instream = file.getInputStream();
instream.skip(startPos);
uploadPartRequest.setInputStream(instream);
// 设置分片大小。除了最后一个分片没有大小限制,其他的分片最小为100 KB。
uploadPartRequest.setPartSize(curPartSize);
// 设置分片号。每一个上传的分片都有一个分片号,取值范围是1~10000,如果超出此范围,OSS将返回InvalidArgument错误码。
uploadPartRequest.setPartNumber(i + 1);
// 每个分片不需要按顺序上传,甚至可以在不同客户端上传,OSS会按照分片号排序组成完整的文件。
UploadPartResult uploadPartResult = ossClient.uploadPart(uploadPartRequest);
// 每次上传分片之后,OSS的返回结果包含PartETag。PartETag将被保存在partETags中。
partETags.add(uploadPartResult.getPartETag());
}
// 创建CompleteMultipartUploadRequest对象。
// 在执行完成分片上传操作时,需要提供所有有效的partETags。OSS收到提交的partETags后,会逐一验证每个分片的有效性。当所有的数据分片验证通过后,OSS将把这些分片组合成一个完整的文件。
CompleteMultipartUploadRequest completeMultipartUploadRequest =
new CompleteMultipartUploadRequest(env, objectName, uploadId, partETags);
// 完成分片上传。
CompleteMultipartUploadResult completeMultipartUploadResult = ossClient.completeMultipartUpload(completeMultipartUploadRequest);
uploadFileVO.setUrl(completeMultipartUploadResult.getLocation()+"?x-oss-process=image/auto-orient,1/quality,q_60");
}catch (Exception e) {
e.printStackTrace();
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
return ResponseData.generateCreatedResponse(0, uploadFileVO);
}
}
package com.show.controller;
import com.show.common.ResponseData;
import com.show.common.ResponseVO;
import com.show.model.ShowBannersDO;
import com.show.service.ShowBannersService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
@RestController
@Api(tags = "banner")
@RequestMapping("/showBanners")
public class ShowBannersController {
@Autowired
private ShowBannersService showBannersService;
@PostMapping("homePageBanners")
@ApiOperation("首页banner academyId")
public ResponseVO homePageBanners(@RequestBody ShowBannersDO showBannersDO){
return ResponseData.generateCreatedResponse(0,showBannersService.homePageBanners(showBannersDO));
}
// @PostMapping("addBanner")
// @ApiOperation("添加banner academyId bannerUrl ")
// public ResponseVO addBanner(@RequestBody ShowBannersDO showBannersDO){
// return ResponseData.generateCreatedResponse(0,showBannersService.addBanner(showBannersDO));
// }
//
// @PostMapping("deleteBanner")
// @ApiOperation("删除banner id")
// public ResponseVO deleteBanner(@RequestBody ShowBannersDO showBannersDO){
// return ResponseData.generateCreatedResponse(0,showBannersService.deleteBanner(showBannersDO));
// }
//
// @PostMapping("updateBanner")
// @ApiOperation("修改banner id bannerUrl showFlag:是/否 ")
// public ResponseVO updateBanner(@RequestBody ShowBannersDO showBannersDO){
// return ResponseData.generateCreatedResponse(0,showBannersService.updateBanner(showBannersDO));
// }
// @PostMapping("allBanners")
// @ApiOperation("查看所有banner academyId ")
// public ResponseVO allBanners(@RequestBody ShowBannersDO showBannersDO){
// return ResponseData.generateCreatedResponse(0,showBannersService.allBanners(showBannersDO));
// }
}
package com.show.controller;
import com.show.common.ResponseData;
import com.show.common.ResponseVO;
import com.show.model.ShowLabelDictDO;
import com.show.service.ShowLabelDictService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
@RestController
@Api(tags = "标签")
@RequestMapping("/showLabelDict")
public class ShowLabelDictController {
@Autowired
private ShowLabelDictService showLabelDictService;
// @PostMapping("addLabel")
// @ApiOperation("新建标签 academyId label ")
// public ResponseVO addLabel(@RequestBody ShowLabelDictDO showLabelDictDO){
// return ResponseData.generateCreatedResponse(0,showLabelDictService.addLabel(showLabelDictDO));
// }
@PostMapping("labels")
@ApiOperation("查看所有标签 academyId label ")
public ResponseVO labels(@RequestBody ShowLabelDictDO showLabelDictDO){
return ResponseData.generateCreatedResponse(0,showLabelDictService.labels(showLabelDictDO));
}
// @PostMapping("deleteLabel")
// @ApiOperation("删除标签 id ")
// public ResponseVO deleteLabel(@RequestBody ShowLabelDictDO showLabelDictDO){
// return ResponseData.generateCreatedResponse(0,showLabelDictService.deleteLabel(showLabelDictDO));
// }
//
// @PostMapping("updateLabel")
// @ApiOperation("编辑标签 id label")
// public ResponseVO updateLabel(@RequestBody ShowLabelDictDO showLabelDictDO){
// return ResponseData.generateCreatedResponse(0,showLabelDictService.updateLabel(showLabelDictDO));
// }
}
package com.show.controller;
import com.show.common.ResponseData;
import com.show.common.ResponseVO;
import com.show.model.ShowMemberContactsDO;
import com.show.service.ShowMemberContactsService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 学生联系方式表 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-11-26
*/
@RestController
@Api(tags = "学生联系方式表")
@RequestMapping("/showMemberContacts")
public class ShowMemberContactsController {
@Autowired
private ShowMemberContactsService showMemberContactsService;
@PostMapping("memberContacts")
@ApiOperation("查看学生联系方式 memberId")
public ResponseVO memberContacts(@RequestBody ShowMemberContactsDO showMemberContactsDO){
return ResponseData.generateCreatedResponse(0,showMemberContactsService.memberContacts(showMemberContactsDO));
}
@PostMapping("addContact")
@ApiOperation("添加联系方式 memberId contactMethod imgUrl")
public ResponseVO addContact(@RequestBody ShowMemberContactsDO showMemberContactsDO){
return ResponseData.generateCreatedResponse(0,showMemberContactsService.addContact(showMemberContactsDO));
}
@PostMapping("deleteContact")
@ApiOperation("删除联系方式 id")
public ResponseVO deleteContact(@RequestBody ShowMemberContactsDO showMemberContactsDO){
return ResponseData.generateCreatedResponse(0,showMemberContactsService.deleteContact(showMemberContactsDO));
}
@PostMapping("updateContact")
@ApiOperation("编辑联系方式 id imgUrl")
public ResponseVO updateContact(@RequestBody ShowMemberContactsDO showMemberContactsDO){
return ResponseData.generateCreatedResponse(0,showMemberContactsService.updateContact(showMemberContactsDO));
}
}
package com.show.controller;
import com.show.common.ResponseData;
import com.show.common.ResponseVO;
import com.show.dto.member.CreatorsDTO;
import com.show.dto.work.MemberWorksDTO;
import com.show.dto.work.MyWorksDTO;
import com.show.dto.work.PageWorksDTO;
import com.show.dto.work.SubmitWorkDTO;
import com.show.model.MemberDO;
import com.show.model.ShowWorksDO;
import com.show.service.ShowWorksService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
@RestController
@Api(tags = "展评字典表")
@RequestMapping("/showWorks")
public class ShowWorksController {
@Autowired
private ShowWorksService showWorksService;
@PostMapping("hotSpotWorks")
@ApiOperation("首页热点内容 academyId ")
public ResponseVO hotSpotWorks(@RequestBody MemberDO memberDO){
return ResponseData.generateCreatedResponse(0,showWorksService.hotSpotWorks(memberDO));
}
@PostMapping("pageWorks")
@ApiOperation("首页共创作品 pageSize pageNum academyId labelId title")
public ResponseVO pageWorks(@RequestBody PageWorksDTO pageWorksDTO){
return ResponseData.generateCreatedResponse(0,showWorksService.pageWorks(pageWorksDTO));
}
@PostMapping("oneWork")
@ApiOperation("首页查看作品详情 id ")
public ResponseVO oneWork(@RequestBody ShowWorksDO showWorksDO){
return ResponseData.generateCreatedResponse(0,showWorksService.oneWork(showWorksDO));
}
@PostMapping("memberWorks")
@ApiOperation("查看某个人的所有作品(已通过的) memberId pageSize pageNum")
public ResponseVO memberWorks(@RequestBody MemberWorksDTO memberWorksDTO){
return ResponseData.generateCreatedResponse(0,showWorksService.memberWorks(memberWorksDTO));
}
@PostMapping("creators")
@ApiOperation("创作者 academyId aliasName pageSize pageNum")
public ResponseVO creators(@RequestBody CreatorsDTO creatorsDTO){
return ResponseData.generateCreatedResponse(0,showWorksService.creators(creatorsDTO));
}
@PostMapping("myWorks")
@ApiOperation("创作者主页-作品管理 pageSize pageNum memberId submitStatus")
public ResponseVO myWorks(@RequestBody MyWorksDTO myWorksDTO){
return ResponseData.generateCreatedResponse(0,showWorksService.myWorks(myWorksDTO));
}
@PostMapping("myWorksOverview")
@ApiOperation("创作者主页-作品管理-概览 memberId ")
public ResponseVO myWorksOverview(@RequestBody MyWorksDTO myWorksDTO){
return ResponseData.generateCreatedResponse(0,showWorksService.myWorksOverview(myWorksDTO));
}
@PostMapping("hideWork")
@ApiOperation("隐藏作品 id")
public ResponseVO hideWork(@RequestBody ShowWorksDO showWorksDO){
return ResponseData.generateCreatedResponse(0,showWorksService.hideWork(showWorksDO));
}
@PostMapping("showWork")
@ApiOperation("隐藏作品打开 id")
public ResponseVO showWork(@RequestBody ShowWorksDO showWorksDO){
return ResponseData.generateCreatedResponse(0,showWorksService.showWork(showWorksDO));
}
@PostMapping("submitWork")
@ApiOperation("发布作品/驳回后再提交 memberId labelIds[] title workDesc works instanceId")
public ResponseVO submitWork(@RequestBody SubmitWorkDTO submitWorkDTO){
return ResponseData.generateCreatedResponse(0,showWorksService.submitWork(submitWorkDTO));
}
// @PostMapping("updateWork")
// @ApiOperation("编辑作品 id memberId labelIds[] title workDesc works instanceId ")
// public ResponseVO updateWork(@RequestBody SubmitWorkDTO submitWorkDTO){
// return ResponseData.generateCreatedResponse(0,showWorksService.updateWork(submitWorkDTO));
// }
@PostMapping("addViewCnt")
@ApiOperation("添加浏览量 id 作品id")
public ResponseVO addViewCnt(@RequestBody ShowWorksDO showWorksDO){
return ResponseData.generateCreatedResponse(0,showWorksService.addViewCnt(showWorksDO));
}
}
package com.show.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;
/**
* <p>
* 短信验证码记录表 前端控制器
* </p>
*
* @author Tuyp
* @since 2025-12-15
*/
@RestController
@Api(tags = "短信验证码记录表")
@RequestMapping("/sms-verify-code-do")
public class SmsVerifyCodeController {
}
package com.show.controller;
import com.show.common.ResponseData;
import com.show.common.ResponseVO;
import com.show.dto.work.WorkflowHistory;
import com.show.service.WorkflowService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/workflow")
@Api(tags = "工作流")
public class WorkFlowController {
@Autowired
private WorkflowService workflowService;
@PostMapping("/history")
@ApiOperation("查看某个审批的每个节点审批历史记录 instanceId ")
public ResponseVO getWorkflowHistory(@RequestBody WorkflowHistory workflowHistory) {
return ResponseData.generateCreatedResponse(0,workflowService.getWorkflowHistory(workflowHistory));
}
}
\ No newline at end of file
package com.show.dto.member;
import lombok.Data;
@Data
public class CreatorsDTO {
private Long academyId;
private String aliasName;
private Integer pageSize;
private Integer pageNum;
}
package com.show.dto.member;
import lombok.Data;
@Data
public class MemberWorkGroupDTO {
private Integer pageSize;
private Integer pageNum;
private Long memberId;
private String applyType;
}
package com.show.dto.member;
import com.show.model.MemberDO;
import com.show.model.ShowMemberContactsDO;
import lombok.Data;
import java.util.List;
@Data
public class UpdateMemberInfoDTO extends MemberDO {
private List<ShowMemberContactsDO> memberContactsDOS;
private String verifyCode;
}
package com.show.dto.work;
import lombok.Data;
@Data
public class FlowNodesDTO {
private Long mappingId;
}
package com.show.dto.work;
import lombok.Data;
@Data
public class HotSpotWorksDTO {
private Long academyId;
}
package com.show.dto.work;
import lombok.Data;
@Data
public class MemberWorksDTO {
private Long memberId;
private Integer pageSize;
private Integer pageNum;
}
package com.show.dto.work;
import lombok.Data;
@Data
public class MyWorksDTO {
private Integer pageSize;
private Integer pageNum;
private Long memberId;
private String submitStatus;
}
package com.show.dto.work;
import lombok.Data;
@Data
public class PageWorksDTO {
private Integer pageSize;
private Integer pageNum;
private Long labelId;
private Long academyId;
private String title;
}
package com.show.dto.work;
import com.show.model.ShowWorksDO;
import lombok.Data;
import java.util.List;
@Data
public class SubmitWorkDTO extends ShowWorksDO {
private List<Long> labelIds;
}
package com.show.dto.work;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.show.util.BaseModel;
import lombok.Data;
@Data
@TableName("workflow_history")
public class WorkflowHistory extends BaseModel {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long instanceId;
private Long nodeId;
private String nodeKey;
private String nodeName;
private Long assignee;
private String assigneeType;
private String status;
private String approveOpinion;
}
\ No newline at end of file
package com.show.mapper;
import com.show.model.AcademyDictDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* Mapper 接口
* </p>
*
* @author Tuyp
* @since 2025-12-15
*/
@Repository
public interface AcademyDictMapper extends BaseMapper<AcademyDictDO> {
}
package com.show.mapper;
import com.show.model.AcademyPermissionMappingDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* 院校权限映射表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2025-11-27
*/
@Repository
public interface AcademyPermissionMappingMapper extends BaseMapper<AcademyPermissionMappingDO> {
/**
* 院校端对应申请的academy_permission_mapping的id 学生
* name : 审批项名称
*/
Long permissionMappingId(Long memberId,String name);
}
package com.show.mapper;
import com.show.model.AcademyPlatformsDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* Mapper 接口
* </p>
*
* @author Tuyp
* @since 2025-12-15
*/
@Repository
public interface AcademyPlatformsMapper extends BaseMapper<AcademyPlatformsDO> {
}
package com.show.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.show.model.AcademyRoleDictDO;
import com.show.vo.work.NamesVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* 角色表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-12-12
*/
@Repository
public interface AcademyRoleDictMapper extends BaseMapper<AcademyRoleDictDO> {
List<AcademyRoleDictDO> roles(Long academyId);
List<AcademyRoleDictDO> checkRoles(Long academyId, String checkRole);
List<NamesVO> rolesName(@Param("roleIds") List<String> roleIds);
}
package com.show.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.show.model.AdministerDO;
import com.show.vo.administer.NamesVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* 管理平台用户 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2024-02-23
*/
@Repository
public interface AdministerMapper extends BaseMapper<AdministerDO> {
/**
* 获取用户名
*/
List<NamesVO> names(@Param("ids") List<String> ids);
/**
* 获取用户名
*/
String administerName(Long id);
}
package com.show.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.show.model.MemberDO;
import com.show.vo.member.LoginVO;
import com.show.vo.member.MemberBaseInoVO;
import com.show.vo.member.MemberWorkGroupVO;
import org.springframework.stereotype.Repository;
/**
* <p>
* 学生表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
@Repository
public interface MemberMapper extends BaseMapper<MemberDO> {
/**
* 学员基本信息
*/
MemberBaseInoVO memberBaseIno(Long id);
/**
* 登录
*/
LoginVO login(String studyNo);
/**
* 审批中心-作品
*/
IPage<MemberWorkGroupVO> memberWorkGroup(IPage page, Long memberId, String applyType);
}
package com.subsidy.mapper; package com.show.mapper;
import com.subsidy.model.AdministerDO; import com.show.model.ShowBannersDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
/** /**
* <p> * <p>
* 管理平台用户 Mapper 接口 * Mapper 接口
* </p> * </p>
* *
* @author Tuyp * @author Tuyp
* @since 2025-11-25 * @since 2025-11-25
*/ */
@Repository @Repository
public interface AdministerMapper extends BaseMapper<AdministerDO> { public interface ShowBannersMapper extends BaseMapper<ShowBannersDO> {
} }
package com.show.mapper;
import com.show.model.ShowLabelDictDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* Mapper 接口
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
@Repository
public interface ShowLabelDictMapper extends BaseMapper<ShowLabelDictDO> {
}
package com.show.mapper;
import com.show.model.ShowMemberContactsDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* 学生联系方式表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2025-11-26
*/
@Repository
public interface ShowMemberContactsMapper extends BaseMapper<ShowMemberContactsDO> {
/**
* 现有的联系方式
*/
List<String> memberCurrentContacts(Long memberId);
/**
* 需要删除的旧的联系方式
*/
List<Long> deleteIds(Long memberId,List<ShowMemberContactsDO> showMemberContactsDOS);
}
package com.show.mapper;
import com.show.model.ShowWorkLabelsDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* Mapper 接口
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
@Repository
public interface ShowWorkLabelsMapper extends BaseMapper<ShowWorkLabelsDO> {
}
package com.show.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.show.model.ShowLabelDictDO;
import com.show.model.ShowWorksDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.show.vo.work.*;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
@Repository
public interface ShowWorksMapper extends BaseMapper<ShowWorksDO> {
/**
* 首页热点作品
* @return
*/
List<HotSpotWorksVO> hotSpotWorks(Long academyId);
/**
* 首页作品下拉
*/
IPage<PageWorksVO> pageWorks(IPage iPage,Long labelId,Long academyId,String title);
/**
* 查看作品详情
*/
OneWorkVO oneWork(Long id);
/**
* 作品对应的标签
*/
List<ShowLabelDictDO> workLabels(Long workId);
/**
* 查看某人的作品(已通过)
*/
IPage<PageWorksVO> memberWorks(IPage iPage,Long memberId);
/**
* 查看某人的作品(已通过)
*/
List<PageWorksVO> memberWorksWithoutPage(Long memberId);
/**
* 查看某人所有作品
*/
IPage<MyWorksVO> myWorks(IPage iPage, Long memberId, String submitStatus);
/**
* 首页创作者
*/
IPage<CreatorsVO> creators(IPage iPage, Long academyId, String aliasName);
/**
* 将作品置为已结束
*/
void finishWork(Long id);
/**
* 修改作品
*/
void updateSubmitWork(Long id,String homePage,String works,String workDesc,String newStatus);
}
package com.show.mapper;
import com.show.model.SmsVerifyCodeDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* 短信验证码记录表 Mapper 接口
* </p>
*
* @author Tuyp
* @since 2025-12-15
*/
@Repository
public interface SmsVerifyCodeMapper extends BaseMapper<SmsVerifyCodeDO> {
}
package com.show.mapper;
import com.show.model.WorkflowCopyToDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* Mapper 接口
* </p>
*
* @author Tuyp
* @since 2025-11-27
*/
@Repository
public interface WorkflowCopyToMapper extends BaseMapper<WorkflowCopyToDO> {
}
package com.show.mapper;
import com.show.model.WorkflowInstance;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.show.model.WorkflowNode;
import org.springframework.stereotype.Repository;
/**
* <p>
* Mapper 接口
* </p>
*
* @author Tuyp
* @since 2025-11-27
*/
@Repository
public interface WorkflowInstanceMapper extends BaseMapper<WorkflowInstance> {
/**
* 查看当前工作流所属节点详情1
*/
WorkflowNode instanceCurrentNode(Long instanceId);
}
package com.show.mapper;
import com.show.model.WorkflowNode;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* <p>
* Mapper 接口
* </p>
*
* @author Tuyp
* @since 2025-11-27
*/
@Repository
public interface WorkflowNodeMapper extends BaseMapper<WorkflowNode> {
}
package com.show.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.show.model.WorkflowTask;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.show.vo.work.GetWorkflowHistoryVO;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author Tuyp
* @since 2025-11-27
*/
@Repository
public interface WorkflowTaskMapper extends BaseMapper<WorkflowTask> {
/**
* 查看某人某个待审批的节点某个老师以角色身份可以在几个task里面
*/
List<WorkflowTask> administerRoleTasks(Long userId, Long instanceId, Long nodeId, Integer role);
/**
* 查看某个人物某项没有的角色d taskId
*/
List<WorkflowTask> administerNotInRoleTask(Integer role, Long userId, Long instanceId, Long nodeId);
/**
* 查出学生提交的第一条
*/
WorkflowTask studentTask(Long instanceId);
/**
* 将所有待审核的任务置为已结束
*/
void finishTodoTask(Long instanceId);
/**
* 将之前的workTask都置为0
*/
void beforeTaskDone(Long instanceId);
/**
* 作品更新
*/
List<GetWorkflowHistoryVO> updatedWorks(Long instanceId);
}
package com.show.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.show.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
*
* </p>
*
* @author Tuyp
* @since 2025-12-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("academy_dict")
public class AcademyDictDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private String academyName;
private String shortName;
private String location;
private String academyType;
/**
* 院校代码
*/
private String academyCode;
/**
* 院校logo
*/
private String academyLogo;
/**
* 教师小程序首页封面
*/
private String teacherLogo;
/**
* 企业开放状态
*/
private String companyInfoStatus;
/**
* 职位封面
*/
private String positionLogo;
/**
* 共创展厅logo
*/
private String showLogo;
}
package com.show.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.show.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 院校权限映射表
* </p>
*
* @author Tuyp
* @since 2025-11-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("academy_permission_mapping")
public class AcademyPermissionMappingDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long academyId;
private Long permissionId;
private String workflowFlag;
/**
* 排序
*/
private Integer orderNo;
/**
* 别名
*/
private String aliasName;
/**
* 版本号
*/
private Integer versionCode;
}
package com.show.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.show.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
*
* </p>
*
* @author Tuyp
* @since 2025-12-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("academy_platforms")
public class AcademyPlatformsDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 院校id
*/
private Long academyId;
/**
* 平台名称
*/
private String platformName;
/**
* logo
*/
private String logo;
}
package com.show.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.show.util.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 角色表
* </p>
*
* @author Tuyp
* @since 2024-12-12
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("academy_role_dict")
public class AcademyRoleDictDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long academyId;
/**
* 角色
*/
private String role;
private String roleType;
}
package com.subsidy.model; package com.show.model;
import com.subsidy.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.show.util.BaseModel;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
...@@ -13,7 +13,7 @@ import lombok.EqualsAndHashCode; ...@@ -13,7 +13,7 @@ import lombok.EqualsAndHashCode;
* </p> * </p>
* *
* @author Tuyp * @author Tuyp
* @since 2025-11-25 * @since 2024-02-23
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
...@@ -49,11 +49,6 @@ public class AdministerDO extends BaseModel { ...@@ -49,11 +49,6 @@ public class AdministerDO extends BaseModel {
private Long companyId; private Long companyId;
/** /**
* 劳务id
*/
private Long laborId;
/**
* 院校id * 院校id
*/ */
private Long academyId; private Long academyId;
...@@ -64,6 +59,10 @@ public class AdministerDO extends BaseModel { ...@@ -64,6 +59,10 @@ public class AdministerDO extends BaseModel {
private Long collegeId; private Long collegeId;
/** /**
*
*/
/**
* 成员名称 * 成员名称
*/ */
private String userName; private String userName;
...@@ -84,7 +83,7 @@ public class AdministerDO extends BaseModel { ...@@ -84,7 +83,7 @@ public class AdministerDO extends BaseModel {
private Integer role; private Integer role;
/** /**
* 上次登录使用的角色 * 上次登录使用的角色
*/ */
private Integer lastRole; private Integer lastRole;
...@@ -93,14 +92,10 @@ public class AdministerDO extends BaseModel { ...@@ -93,14 +92,10 @@ public class AdministerDO extends BaseModel {
*/ */
private String remark; private String remark;
/**
* 微信openid
*/
private String openid; private String openid;
private String workNo; private Long workNo;
// 0: 首次 1:非首次
private String firstLogin; private String firstLogin;
} }
package com.show.model;
import com.show.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 学生表
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("member")
public class MemberDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 院校名
*/
private Long academyId;
/**
* 公司名
*/
private Long companyId;
/**
* 姓名
*/
private String userName;
/**
* 别名
*/
private String aliasName;
/**
* 账号
*/
private String accountName;
/**
* 英文名
*/
private String accountNameEn;
/**
* 邮箱
*/
private String email;
/**
* 工号
*/
private String workNo;
/**
* 入职时间
*/
private String inductionDate;
/**
* 手机号
*/
private String telephone;
/**
* 密码
*/
private String password;
/**
* 性别
*/
private String gender;
/**
* 头像
*/
private String image;
/**
* 人脸核验--照片
*/
private String checkImage;
/**
* 采集时间
*/
private LocalDateTime checkTime;
/**
* 身份证号
*/
private String idCard;
/**
* 身份证照片
*/
private String idCardPhoto;
/**
* 启用/冻结
*/
private String status;
/**
* 是否登陆过 1 是 0 不是
*/
private Integer firstLogin;
private String activityStatus;
/**
* 激活时间
*/
private String activeDate;
/**
* QQ号
*/
private String qqNo;
/**
* 微信账号
*/
private String wechat;
/**
* 实习状态
*/
private String practiceStatus;
/**
* 学院id
*/
private Long collegeId;
/**
* 专业
*/
private String major;
private Long majorId;
/**
* 入学年份
*/
private String enrollmentYear;
/**
* 工资账户
*/
private String payrollAccount;
private String education;
/**
* 开户行
*/
private String bank;
private String openId;
/**
* 0:学生 2:职工 3:人才
*/
private Integer memberType;
/**
* 学号
*/
private String studyNo;
private Long classId;
/**
* 班级
*/
private String className;
/**
* 上报专业
*/
private String reportMajor;
/**
* 考生号
*/
private String examNo;
/**
* 学制
*/
private String educationalSystem;
/**
* 民族
*/
private String nationality;
/**
* 政治面貌
*/
private String politicalStatus;
/**
* 生源地
*/
private String originalPlace;
/**
* 培养方式
*/
private String cultureMethod;
/**
* 毕业情况
*/
private String graduateStatus;
/**
* 师范生类别
*/
private String pedagogicalType;
/**
* 毕业季节
*/
private String graduateSeason;
/**
* 贫困生类别
*/
private String povertyStatus;
/**
* 家庭电话
*/
private String homePhone;
/**
* 家庭地址
*/
private String homeAddress;
/**
* 邮编
*/
private String homeZipCode;
/**
* 扩招标志
*/
private String expandFlag;
/**
* 备注
*/
private String remark;
/**
* 学籍状态
*/
private String studentStatus;
/**
* 是否建立档案
*/
private String fileEstablishFlag;
/**
* 52贫困县
*/
private String poorCounties;
/**
* 学习形式
*/
private String studyForm;
/**
* 层级
*/
private String cc;
/**
* 年级
*/
private String nj;
/**
* 异动状态
*/
private String unusualStatus;
/**
* 志愿者证书地址
*/
private String volunteerCertUrl;
}
package com.show.model;
import com.show.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
*
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("show_banners")
public class ShowBannersDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 院校id
*/
private Long academyId;
private String bannerUrl;
/**
* 首页展示,是/否
*/
private String showFlag;
private Integer orderNo;
private String backColor;
}
package com.show.model;
import com.show.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
*
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("show_label_dict")
public class ShowLabelDictDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long academyId;
private String label;
}
package com.show.model;
import com.show.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 学生联系方式表
* </p>
*
* @author Tuyp
* @since 2025-11-26
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("show_member_contacts")
public class ShowMemberContactsDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long memberId;
/**
* 联系方式
*/
private String contactMethod;
/**
* 二维码
*/
private String imgUrl;
}
package com.show.model;
import com.show.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
*
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("show_work_labels")
public class ShowWorkLabelsDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Long workId;
private Long labelId;
}
package com.show.model;
import com.show.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
*
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("show_works")
public class ShowWorksDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 学生id
*/
private Long memberId;
/**
* 标题
*/
private String title;
/**
* 提交时间
*/
private String submitDate;
/**
* 提交状态
*/
private String submitStatus;
/**
* 展示状态
*/
private String showStatus;
/**
* 新的作品/作品更新
*/
private String newStatus;
/**
* 驳回原因
*/
private String opinion;
/**
* 展评描述
*/
private String workDesc;
/**
* 展评地址数组
*/
private String works;
/**
* 封面
*/
private String homePage;
/**
* 热点
*/
private String hotSpot;
/**
* 浏览量
*/
private Integer viewCnt;
/**
* 审批流id
*/
private Long instanceId;
}
package com.show.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.show.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 短信验证码记录表
* </p>
*
* @author Tuyp
* @since 2025-12-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sms_verify_code")
public class SmsVerifyCodeDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 手机号
*/
private String telephone;
/**
* 验证码
*/
private String verifyCode;
}
package com.show.model;
import com.show.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
*
* </p>
*
* @author Tuyp
* @since 2025-11-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("workflow_copy_to")
public class WorkflowCopyToDO extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* academy_permission_mapping的id
*/
private Long mappingId;
/**
* 用户/角色
*/
private String copyType;
/**
* 用户id/角色id
*/
private Long copyId;
/**
* 版本号
*/
private Integer versionCode;
}
package com.show.model;
import com.show.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
*
* </p>
*
* @author Tuyp
* @since 2025-11-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("workflow_instance")
public class WorkflowInstance extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* academy_permission_mapping的id
*/
private Long workflowId;
/**
* 申请类型
*/
private String applyType;
/**
* 申请人id
*/
private Long applyId;
private Integer versionCode;
private String workflowCode;
private String workflowVersion;
private String status;
/**
* workflow_node的主键id
*/
private Long currentNode;
/**
* 审批结束时间
*/
private Date finishTime;
private Long appId;
}
package com.show.model;
import com.show.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
*
* </p>
*
* @author Tuyp
* @since 2025-11-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("workflow_node")
public class WorkflowNode extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 审批id
*/
private Long workflowId;
private Integer versionCode;
/**
* 当前key
*/
private String nodeKey;
/**
* 节点名称
*/
private String nodeName;
private String nodeType;
private String nodePattern;
/**
* 类型:用户/角色
*/
private String approveType;
/**
* 用户id,角色id 逗号间隔
*/
private String approveConfig;
/**
* 前置节点
*/
private String prevNode;
/**
* 后置节点
*/
private String nextNode;
}
package com.show.model;
import com.show.util.BaseModel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
*
* </p>
*
* @author Tuyp
* @since 2025-11-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("workflow_task")
public class WorkflowTask extends BaseModel {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 实例id
*/
private Long instanceId;
/**
* 节点id
*/
private Long nodeId;
/**
* 节点node_key
*/
private String nodeKey;
/**
* 节点名称
*/
private String nodeName;
/**
* 审批人
*/
private Long assignee;
/**
* 审批类型:用户/角色
*/
private String assigneeType;
/**
* 最终审批人
*/
private Long checkId;
/**
* 审批状态
*/
private String status;
/**
* 审批意见
*/
private String approveOpinion;
private String startTime;
private String endTime;
/**
* 空:当前的 0:之前的(三方协议用)
*/
private Integer currentWork;
}
package com.show.service;
import com.show.model.AcademyDictDO;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author Tuyp
* @since 2025-12-15
*/
public interface AcademyDictService extends IService<AcademyDictDO> {
AcademyDictDO academyDetail(AcademyDictDO academyDictDO);
}
package com.show.service;
import com.show.model.AcademyPermissionMappingDO;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 院校权限映射表 服务类
* </p>
*
* @author Tuyp
* @since 2025-11-27
*/
public interface AcademyPermissionMappingService extends IService<AcademyPermissionMappingDO> {
}
package com.show.service;
import com.show.model.AcademyPlatformsDO;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author Tuyp
* @since 2025-12-15
*/
public interface AcademyPlatformsService extends IService<AcademyPlatformsDO> {
}
package com.show.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.show.dto.member.MemberWorkGroupDTO;
import com.show.dto.member.UpdateMemberInfoDTO;
import com.show.model.MemberDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.show.model.ShowWorksDO;
import com.show.vo.member.ApplyCenterSummaryVO;
import com.show.vo.member.LoginVO;
import com.show.vo.member.MemberBaseInoVO;
import com.show.vo.member.MemberWorkGroupVO;
/**
* <p>
* 学生表 服务类
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
public interface MemberService extends IService<MemberDO> {
MemberBaseInoVO memberPage(MemberDO memberDO);
LoginVO login(MemberDO memberDO);
String activeMember(UpdateMemberInfoDTO updateMemberInfoDTO);
ApplyCenterSummaryVO applyCenterSummary(ShowWorksDO showWorksDO);
IPage<MemberWorkGroupVO> memberWorkGroup(MemberWorkGroupDTO memberWorkGroupDTO);
String updateMemberInfo(UpdateMemberInfoDTO updateMemberInfoDTO);
String sendMsg(MemberDO memberDO);
}
package com.show.service;
import com.show.model.ShowBannersDO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
public interface ShowBannersService extends IService<ShowBannersDO> {
List<ShowBannersDO> homePageBanners(ShowBannersDO showBannersDO);
String addBanner(ShowBannersDO showBannersDO);
String deleteBanner(ShowBannersDO showBannersDO);
String updateBanner(ShowBannersDO showBannersDO);
List<ShowBannersDO> allBanners(ShowBannersDO showBannersDO);
}
package com.show.service;
import com.show.model.ShowLabelDictDO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
public interface ShowLabelDictService extends IService<ShowLabelDictDO> {
String addLabel(ShowLabelDictDO showLabelDictDO);
List<ShowLabelDictDO> labels(ShowLabelDictDO showLabelDictDO);
String deleteLabel(ShowLabelDictDO showLabelDictDO);
String updateLabel(ShowLabelDictDO showLabelDictDO);
}
package com.show.service;
import com.show.model.ShowMemberContactsDO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 学生联系方式表 服务类
* </p>
*
* @author Tuyp
* @since 2025-11-26
*/
public interface ShowMemberContactsService extends IService<ShowMemberContactsDO> {
List<ShowMemberContactsDO> memberContacts(ShowMemberContactsDO showMemberContactsDO);
String addContact(ShowMemberContactsDO showMemberContactsDO);
String deleteContact(ShowMemberContactsDO showMemberContactsDO);
String updateContact(ShowMemberContactsDO showMemberContactsDO);
}
package com.subsidy.service; package com.show.service;
import com.subsidy.model.AdministerDO; import com.show.model.ShowWorkLabelsDO;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/** /**
* <p> * <p>
* 管理平台用户 服务类 * 服务类
* </p> * </p>
* *
* @author Tuyp * @author Tuyp
* @since 2025-11-25 * @since 2025-11-25
*/ */
public interface AdministerService extends IService<AdministerDO> { public interface ShowWorkLabelsService extends IService<ShowWorkLabelsDO> {
} }
package com.show.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.show.dto.member.CreatorsDTO;
import com.show.dto.work.MemberWorksDTO;
import com.show.dto.work.MyWorksDTO;
import com.show.dto.work.PageWorksDTO;
import com.show.dto.work.SubmitWorkDTO;
import com.show.model.MemberDO;
import com.show.model.ShowWorksDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.show.vo.work.*;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
public interface ShowWorksService extends IService<ShowWorksDO> {
List<HotSpotWorksVO> hotSpotWorks(MemberDO memberDO);
IPage<PageWorksVO> pageWorks(PageWorksDTO pageWorksDTO);
OneWorkVO oneWork(ShowWorksDO showWorksDO);
IPage<PageWorksVO> memberWorks(MemberWorksDTO memberWorksDTO);
IPage<MyWorksVO> myWorks(MyWorksDTO myWorksDTO);
MyWorksOverviewVO myWorksOverview(MyWorksDTO myWorksDTO);
String hideWork(ShowWorksDO showWorksDO);
IPage<CreatorsVO> creators(CreatorsDTO creatorsDTO);
String showWork(ShowWorksDO showWorksDO);
String submitWork(SubmitWorkDTO submitWorkDTO);
String updateWork(SubmitWorkDTO submitWorkDTO);
String addViewCnt(ShowWorksDO showWorksDO);
}
package com.show.service;
import com.show.model.SmsVerifyCodeDO;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 短信验证码记录表 服务类
* </p>
*
* @author Tuyp
* @since 2025-12-15
*/
public interface SmsVerifyCodeService extends IService<SmsVerifyCodeDO> {
}
package com.show.service;
import com.show.dto.work.FlowNodesDTO;
import com.show.dto.work.WorkflowHistory;
import com.show.model.WorkflowInstance;
import com.show.model.WorkflowTask;
import com.show.vo.work.CopiesVO;
import com.show.vo.work.FlowNodesVO;
import com.show.vo.work.GetWorkflowHistoryVO;
import java.util.List;
public interface WorkflowService {
/**
* 处理任务(驳回)
*/
String reject(Long taskId, String assignee, String approveOpinion);
/**
* 获取工作流历史记录
*/
List<GetWorkflowHistoryVO> getWorkflowHistory(WorkflowHistory workflowHistory);
void createTasks(Long instanceId, Long mappingId, String nodeKey, Integer versionCode) ;
/**
* 修改任务状态 -->改为审核中
*/
String updateWorkTaskStatus(Long instanceId);
/**
* 获取当前活动任务
*/
List<WorkflowTask> getActiveTasks(WorkflowHistory workflowHistory);
/**
* 获取工作流实例详情
*/
WorkflowInstance getWorkflowInstance(WorkflowHistory workflowHistory);
/**
* 启动工作流实例
*/
WorkflowInstance startWorkflow(Long memberId,String applyName,String roleType);
/**
* 被驳回,提交申请后继续审批流
*/
WorkflowInstance rejectWorkflow(Long instanceId,Long memberId,String applyName,String roleType);
}
\ No newline at end of file
package com.show.service.impl;
import com.show.model.AcademyDictDO;
import com.show.mapper.AcademyDictMapper;
import com.show.service.AcademyDictService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author Tuyp
* @since 2025-12-15
*/
@Service
public class AcademyDictServiceImpl extends ServiceImpl<AcademyDictMapper, AcademyDictDO> implements AcademyDictService {
@Override
public AcademyDictDO academyDetail(AcademyDictDO academyDictDO) {
return this.baseMapper.selectById(academyDictDO.getId());
}
}
package com.show.service.impl;
import com.show.model.AcademyPermissionMappingDO;
import com.show.mapper.AcademyPermissionMappingMapper;
import com.show.service.AcademyPermissionMappingService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 院校权限映射表 服务实现类
* </p>
*
* @author Tuyp
* @since 2025-11-27
*/
@Service
public class AcademyPermissionMappingServiceImpl extends ServiceImpl<AcademyPermissionMappingMapper, AcademyPermissionMappingDO> implements AcademyPermissionMappingService {
}
package com.show.service.impl;
import com.show.model.AcademyPlatformsDO;
import com.show.mapper.AcademyPlatformsMapper;
import com.show.service.AcademyPlatformsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author Tuyp
* @since 2025-12-15
*/
@Service
public class AcademyPlatformsServiceImpl extends ServiceImpl<AcademyPlatformsMapper, AcademyPlatformsDO> implements AcademyPlatformsService {
}
package com.show.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.show.common.constant.ApplyType;
import com.show.common.exception.HttpException;
import com.show.dto.member.MemberWorkGroupDTO;
import com.show.dto.member.UpdateMemberInfoDTO;
import com.show.mapper.ShowMemberContactsMapper;
import com.show.mapper.ShowWorksMapper;
import com.show.mapper.SmsVerifyCodeMapper;
import com.show.model.*;
import com.show.mapper.MemberMapper;
import com.show.service.MemberService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.show.util.ConstantUtils;
import com.show.util.DateUtil;
import com.show.util.RandomUtil;
import com.show.util.SMSUtils;
import com.show.vo.member.ApplyCenterSummaryVO;
import com.show.vo.member.LoginVO;
import com.show.vo.member.MemberBaseInoVO;
import com.show.vo.member.MemberWorkGroupVO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 学生表 服务实现类
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
@Service
public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberDO> implements MemberService {
@Autowired
private ShowWorksMapper showWorksMapper;
@Autowired
private ShowMemberContactsMapper showMemberContactsMapper;
@Autowired
private SmsVerifyCodeMapper smsVerifyCodeMapper;
@Override
public MemberBaseInoVO memberPage(MemberDO memberDO) {
return this.baseMapper.memberBaseIno(memberDO.getId());
}
@Override
public LoginVO login(MemberDO memberDO) {
LoginVO loginVO = this.baseMapper.login(memberDO.getStudyNo());
if (null != loginVO) {
if (!memberDO.getIdCard().equals(loginVO.getIdCard().substring(loginVO.getIdCard().length() - 4))) {
throw new HttpException(24026);
} else {
return loginVO;
}
} else {
throw new HttpException(10011);
}
}
@Override
public String activeMember(UpdateMemberInfoDTO updateMemberInfoDTO) {
//验证验证码对不对
Integer smsCnt = smsVerifyCodeMapper.selectCount(new QueryWrapper<SmsVerifyCodeDO>()
.lambda()
.eq(SmsVerifyCodeDO::getTelephone, updateMemberInfoDTO.getTelephone())
.eq(SmsVerifyCodeDO::getVerifyCode, updateMemberInfoDTO.getVerifyCode())
.gt(SmsVerifyCodeDO::getCreateDate, LocalDateTime.now().minusMinutes(10L))
);
if (smsCnt > 0) {
updateMemberInfoDTO.setActivityStatus("已激活");
updateMemberInfoDTO.setActiveDate(DateUtil.currentTime());
this.baseMapper.updateById(updateMemberInfoDTO);
} else {
throw new HttpException(10004);
}
return ConstantUtils.SUCCESS_UPDATE;
}
@Override
public ApplyCenterSummaryVO applyCenterSummary(ShowWorksDO showWorksDO) {
ApplyCenterSummaryVO applyCenterSummaryVO = new ApplyCenterSummaryVO();
//总数
int totalCnt = showWorksMapper.selectCount(new QueryWrapper<ShowWorksDO>()
.lambda()
.eq(ShowWorksDO::getMemberId, showWorksDO.getMemberId()));
applyCenterSummaryVO.setTotalCnt(totalCnt);
//新作品
int newWorkCnt = showWorksMapper.selectCount(new QueryWrapper<ShowWorksDO>()
.lambda()
.eq(ShowWorksDO::getMemberId, showWorksDO.getMemberId())
.eq(ShowWorksDO::getNewStatus, ApplyType.NEW_SHOW));
applyCenterSummaryVO.setNewWorkCnt(newWorkCnt);
applyCenterSummaryVO.setUpdateCnt(totalCnt - newWorkCnt);
return applyCenterSummaryVO;
}
@Override
public IPage<MemberWorkGroupVO> memberWorkGroup(MemberWorkGroupDTO memberWorkGroupDTO) {
Page pager = new Page(memberWorkGroupDTO.getPageNum(), memberWorkGroupDTO.getPageSize());
IPage<MemberWorkGroupVO> memberWorkGroupVOIPage = this.baseMapper.memberWorkGroup(pager, memberWorkGroupDTO.getMemberId(), memberWorkGroupDTO.getApplyType());
List<MemberWorkGroupVO> memberWorkGroupVOS = memberWorkGroupVOIPage.getRecords();
for (MemberWorkGroupVO memberWorkGroupVO : memberWorkGroupVOS) {
//标签
List<ShowLabelDictDO> showLabelDictDOS = showWorksMapper.workLabels(memberWorkGroupVO.getId());
memberWorkGroupVO.setShowLabelDictDOS(showLabelDictDOS);
}
return memberWorkGroupVOIPage;
}
@Override
public String updateMemberInfo(UpdateMemberInfoDTO updateMemberInfoDTO) {
//验证验证码对不对
Integer smsCnt = smsVerifyCodeMapper.selectCount(new QueryWrapper<SmsVerifyCodeDO>()
.lambda()
.eq(SmsVerifyCodeDO::getTelephone, updateMemberInfoDTO.getTelephone())
.eq(SmsVerifyCodeDO::getVerifyCode, updateMemberInfoDTO.getVerifyCode())
.gt(SmsVerifyCodeDO::getCreateDate, LocalDateTime.now().minusMinutes(10L))
);
if (smsCnt > 0) {
MemberDO memberDO = this.baseMapper.selectById(updateMemberInfoDTO.getId());
Integer count = this.baseMapper.selectCount(new QueryWrapper<MemberDO>()
.lambda()
.eq(MemberDO::getAcademyId, memberDO.getAcademyId())
.eq(MemberDO::getTelephone, updateMemberInfoDTO.getTelephone())
.ne(MemberDO::getId, updateMemberInfoDTO.getId())
.eq(MemberDO::getMemberType, 0));
if (count > 0) {
throw new HttpException(10003);
}
if (!StringUtils.isEmpty(memberDO.getAliasName())) {
Integer count1 = this.baseMapper.selectCount(new QueryWrapper<MemberDO>()
.lambda()
.eq(MemberDO::getAliasName, updateMemberInfoDTO.getAliasName())
.ne(MemberDO::getId, updateMemberInfoDTO.getId()));
if (count1 > 0) {
throw new HttpException(50006);
}
}
BeanUtils.copyProperties(updateMemberInfoDTO, memberDO);
this.baseMapper.updateById(memberDO);
//联系方式
//新的
List<ShowMemberContactsDO> showMemberContactsDOS = updateMemberInfoDTO.getMemberContactsDOS();
//
// //旧的
// List<String> methods = showMemberContactsMapper.memberCurrentContacts(updateMemberInfoDTO.getId());
//
// List<Long> list = showMemberContactsMapper.deleteIds(updateMemberInfoDTO.getId(), updateMemberInfoDTO.getMemberContactsDOS());
//
// //将新的加入到
// for (ShowMemberContactsDO showMemberContactsDO : showMemberContactsDOS){
// //有的话就更新
// if (methods.contains(showMemberContactsDO.getContactMethod())){
// ShowMemberContactsDO showMemberContactsDO1 = showMemberContactsMapper.selectOne(new QueryWrapper<ShowMemberContactsDO>()
// .lambda()
// .eq(ShowMemberContactsDO::getMemberId,updateMemberInfoDTO.getId())
// .eq(ShowMemberContactsDO::getContactMethod,showMemberContactsDO.getContactMethod()));
// showMemberContactsDO1.setImgUrl(showMemberContactsDO.getImgUrl());
// showMemberContactsMapper.updateById(showMemberContactsDO1);
// }else {
// //没有的话就新增
// showMemberContactsDO.setMemberId(updateMemberInfoDTO.getId());
// showMemberContactsMapper.insert(showMemberContactsDO);
// }
// }
//
// //删除旧的
// list.stream().forEach(x->showMemberContactsMapper.deleteById(x));
showMemberContactsMapper.delete(new QueryWrapper<ShowMemberContactsDO>()
.lambda()
.eq(ShowMemberContactsDO::getMemberId, updateMemberInfoDTO.getId()));
showMemberContactsDOS.stream().forEach(x -> {
x.setMemberId(updateMemberInfoDTO.getId());
showMemberContactsMapper.insert(x);
});
} else {
throw new HttpException(10004);
}
return ConstantUtils.SUCCESS_UPDATE;
}
@Override
public String sendMsg(MemberDO memberDO) {
String verifyCode = RandomUtil.getRandomCode(6);
String param = "{ \"code\":\"" + verifyCode + "\"}";
//插入短信验证码
smsVerifyCodeMapper.delete(new QueryWrapper<SmsVerifyCodeDO>()
.lambda()
.eq(SmsVerifyCodeDO::getTelephone, memberDO.getTelephone()));
SmsVerifyCodeDO smsCodeDO = new SmsVerifyCodeDO();
smsCodeDO.setTelephone(memberDO.getTelephone());
smsCodeDO.setVerifyCode(verifyCode);
smsCodeDO.setCreateDate(LocalDateTime.now());
smsVerifyCodeMapper.insert(smsCodeDO);
return SMSUtils.sendVerifySMS(ConstantUtils.TEMPLATE_CODE, smsCodeDO.getTelephone(), param);
}
}
package com.show.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.show.common.constant.BoolFlag;
import com.show.model.ShowBannersDO;
import com.show.mapper.ShowBannersMapper;
import com.show.service.ShowBannersService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.show.util.ConstantUtils;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
@Service
public class ShowBannersServiceImpl extends ServiceImpl<ShowBannersMapper, ShowBannersDO> implements ShowBannersService {
@Override
public List<ShowBannersDO> homePageBanners(ShowBannersDO showBannersDO) {
return this.baseMapper.selectList(new QueryWrapper<ShowBannersDO>()
.lambda()
.eq(ShowBannersDO::getShowFlag, BoolFlag.SHI)
.eq(ShowBannersDO::getAcademyId,showBannersDO.getAcademyId())
.orderByAsc(ShowBannersDO::getOrderNo));
}
@Override
public String addBanner(ShowBannersDO showBannersDO) {
showBannersDO.setBannerUrl(BoolFlag.FOU);
this.baseMapper.insert(showBannersDO);
return ConstantUtils.ADD_SUCCESS;
}
@Override
public String deleteBanner(ShowBannersDO showBannersDO) {
this.baseMapper.deleteById(showBannersDO.getId());
return ConstantUtils.DELETE_SUCCESS;
}
@Override
public String updateBanner(ShowBannersDO showBannersDO) {
this.baseMapper.updateById(showBannersDO);
return ConstantUtils.SUCCESS_UPDATE;
}
@Override
public List<ShowBannersDO> allBanners(ShowBannersDO showBannersDO) {
return this.baseMapper.selectList(new QueryWrapper<ShowBannersDO>()
.lambda()
.eq(ShowBannersDO::getAcademyId,showBannersDO.getAcademyId())
.orderByAsc(ShowBannersDO::getOrderNo));
}
}
package com.show.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.show.common.exception.HttpException;
import com.show.mapper.ShowWorkLabelsMapper;
import com.show.model.ShowLabelDictDO;
import com.show.mapper.ShowLabelDictMapper;
import com.show.model.ShowWorkLabelsDO;
import com.show.service.ShowLabelDictService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.show.util.ConstantUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
@Service
public class ShowLabelDictServiceImpl extends ServiceImpl<ShowLabelDictMapper, ShowLabelDictDO> implements ShowLabelDictService {
@Autowired
private ShowWorkLabelsMapper showWorkLabelsMapper;
@Override
public String addLabel(ShowLabelDictDO showLabelDictDO) {
this.baseMapper.insert(showLabelDictDO);
return ConstantUtils.ADD_SUCCESS;
}
@Override
public List<ShowLabelDictDO> labels(ShowLabelDictDO showLabelDictDO) {
return this.baseMapper.selectList(new QueryWrapper<ShowLabelDictDO>()
.lambda()
.like(StringUtils.isNotEmpty(showLabelDictDO.getLabel()),ShowLabelDictDO::getLabel,showLabelDictDO.getLabel())
.eq(ShowLabelDictDO::getAcademyId,showLabelDictDO.getAcademyId()));
}
@Override
public String deleteLabel(ShowLabelDictDO showLabelDictDO) {
// 当前没有展品关联到这个标签
int count = showWorkLabelsMapper.selectCount(new QueryWrapper<ShowWorkLabelsDO>()
.lambda()
.eq(ShowWorkLabelsDO::getLabelId,showLabelDictDO.getId()));
if (count > 0){
throw new HttpException(10001);
}
this.baseMapper.deleteById(showLabelDictDO.getId());
return ConstantUtils.DELETE_SUCCESS;
}
@Override
public String updateLabel(ShowLabelDictDO showLabelDictDO) {
this.baseMapper.updateById(showLabelDictDO);
return ConstantUtils.SUCCESS_UPDATE;
}
}
package com.show.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.show.common.exception.HttpException;
import com.show.model.ShowMemberContactsDO;
import com.show.mapper.ShowMemberContactsMapper;
import com.show.service.ShowMemberContactsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.show.util.ConstantUtils;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 学生联系方式表 服务实现类
* </p>
*
* @author Tuyp
* @since 2025-11-26
*/
@Service
public class ShowMemberContactsServiceImpl extends ServiceImpl<ShowMemberContactsMapper, ShowMemberContactsDO> implements ShowMemberContactsService {
@Override
public List<ShowMemberContactsDO> memberContacts(ShowMemberContactsDO showMemberContactsDO) {
return this.baseMapper.selectList(new QueryWrapper<ShowMemberContactsDO>()
.lambda()
.eq(ShowMemberContactsDO::getMemberId,showMemberContactsDO.getMemberId()));
}
@Override
public String addContact(ShowMemberContactsDO showMemberContactsDO) {
//查看当前这个人是否有这个联系方式
int count = this.baseMapper.selectCount(new QueryWrapper<ShowMemberContactsDO>()
.lambda()
.eq(ShowMemberContactsDO::getContactMethod,showMemberContactsDO.getContactMethod())
.eq(ShowMemberContactsDO::getMemberId,showMemberContactsDO.getMemberId()));
if (count > 0){
throw new HttpException(10002);
}
this.baseMapper.insert(showMemberContactsDO);
return ConstantUtils.ADD_SUCCESS;
}
@Override
public String deleteContact(ShowMemberContactsDO showMemberContactsDO) {
this.baseMapper.deleteById(showMemberContactsDO.getId());
return ConstantUtils.DELETE_SUCCESS;
}
@Override
public String updateContact(ShowMemberContactsDO showMemberContactsDO) {
this.baseMapper.updateById(showMemberContactsDO);
return ConstantUtils.SUCCESS_UPDATE;
}
}
package com.subsidy.service.impl; package com.show.service.impl;
import com.subsidy.model.AdministerDO; import com.show.model.ShowWorkLabelsDO;
import com.subsidy.mapper.AdministerMapper; import com.show.mapper.ShowWorkLabelsMapper;
import com.subsidy.service.AdministerService; import com.show.service.ShowWorkLabelsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
* <p> * <p>
* 管理平台用户 服务实现类 * 服务实现类
* </p> * </p>
* *
* @author Tuyp * @author Tuyp
* @since 2025-11-25 * @since 2025-11-25
*/ */
@Service @Service
public class AdministerServiceImpl extends ServiceImpl<AdministerMapper, AdministerDO> implements AdministerService { public class ShowWorkLabelsServiceImpl extends ServiceImpl<ShowWorkLabelsMapper, ShowWorkLabelsDO> implements ShowWorkLabelsService {
} }
package com.show.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.show.common.constant.*;
import com.show.dto.member.CreatorsDTO;
import com.show.dto.work.MemberWorksDTO;
import com.show.dto.work.MyWorksDTO;
import com.show.dto.work.PageWorksDTO;
import com.show.dto.work.SubmitWorkDTO;
import com.show.mapper.ShowWorkLabelsMapper;
import com.show.mapper.WorkflowInstanceMapper;
import com.show.model.*;
import com.show.mapper.ShowWorksMapper;
import com.show.service.ShowWorksService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.show.service.WorkflowService;
import com.show.util.ConstantUtils;
import com.show.util.DateUtil;
import com.show.vo.work.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author Tuyp
* @since 2025-11-25
*/
@Service
public class ShowWorksServiceImpl extends ServiceImpl<ShowWorksMapper, ShowWorksDO> implements ShowWorksService {
@Autowired
private ShowWorkLabelsMapper showWorkLabelsMapper;
@Autowired
private WorkflowService workflowService;
@Autowired
private WorkflowInstanceMapper workflowInstanceMapper;
@Override
public List<HotSpotWorksVO> hotSpotWorks(MemberDO memberDO) {
return this.baseMapper.hotSpotWorks(memberDO.getAcademyId());
}
@Override
public IPage<PageWorksVO> pageWorks(PageWorksDTO pageWorksDTO) {
Page pager = new Page(pageWorksDTO.getPageNum(), pageWorksDTO.getPageSize());
return this.baseMapper.pageWorks(pager,pageWorksDTO.getLabelId(),pageWorksDTO.getAcademyId(),pageWorksDTO.getTitle());
}
@Override
public OneWorkVO oneWork(ShowWorksDO showWorksDO) {
OneWorkVO oneWorkVO = this.baseMapper.oneWork(showWorksDO.getId());
//标签
List<ShowLabelDictDO> showLabelDictDOS = this.baseMapper.workLabels(showWorksDO.getId());
oneWorkVO.setShowLabelDictDOS(showLabelDictDOS);
return oneWorkVO;
}
@Override
public IPage<PageWorksVO> memberWorks(MemberWorksDTO memberWorksDTO) {
Page pager = new Page(memberWorksDTO.getPageNum(), memberWorksDTO.getPageSize());
return this.baseMapper.memberWorks(pager,memberWorksDTO.getMemberId());
}
@Override
public IPage<MyWorksVO> myWorks(MyWorksDTO myWorksDTO) {
Page pager = new Page(myWorksDTO.getPageNum(), myWorksDTO.getPageSize());
IPage<MyWorksVO> myWorksVOIPage = this.baseMapper.myWorks(pager, myWorksDTO.getMemberId(), myWorksDTO.getSubmitStatus());
List<MyWorksVO> myWorksVOS = myWorksVOIPage.getRecords();
myWorksVOS.stream().forEach(x->{
List<ShowLabelDictDO> showLabelDictDOS = this.baseMapper.workLabels(x.getId());
x.setShowLabelDictDOS(showLabelDictDOS);
});
return myWorksVOIPage;
}
@Override
public MyWorksOverviewVO myWorksOverview(MyWorksDTO myWorksDTO) {
MyWorksOverviewVO myWorksOverviewVO = new MyWorksOverviewVO();
myWorksDTO.setPageNum(1);
myWorksDTO.setPageSize(-1);
List<MyWorksVO> myWorksVOS = myWorks(myWorksDTO).getRecords();
int passCnt = 0 ;
int toCheckCnt = 0 ;
for (MyWorksVO myWorksVO : myWorksVOS){
if (SubmitStatus.PASS.equals(myWorksVO.getSubmitStatus()) && ShowStatus.PUBLISH.equals(myWorksVO.getShowStatus())){
passCnt ++;
}else if (SubmitStatus.REJECT.equals(myWorksVO.getSubmitStatus())||SubmitStatus.TO_REVIEW.equals(myWorksDTO.getSubmitStatus())){
toCheckCnt++;
}
}
myWorksOverviewVO.setTotalCnt(myWorksVOS.size());
myWorksOverviewVO.setPassCnt(passCnt);
myWorksOverviewVO.setToCheckCnt(toCheckCnt);
return myWorksOverviewVO;
}
@Override
public String hideWork(ShowWorksDO showWorksDO) {
showWorksDO.setShowStatus(ShowStatus.HIDDEN);
this.baseMapper.updateById(showWorksDO);
return ConstantUtils.SUCCESS_UPDATE;
}
@Override
public IPage<CreatorsVO> creators(CreatorsDTO creatorsDTO) {
Page pager = new Page(creatorsDTO.getPageNum(), creatorsDTO.getPageSize());
IPage<CreatorsVO> creators = this.baseMapper.creators(pager, creatorsDTO.getAcademyId(), creatorsDTO.getAliasName());
List<CreatorsVO> creatorsVOS = creators.getRecords();
creatorsVOS.stream().forEach(x->{
//这个人的作品 倒序
List<PageWorksVO> pageWorksVOS = this.baseMapper.memberWorksWithoutPage(x.getId());
x.setWorkCnt(pageWorksVOS.size());
x.setPageWorksVOS(pageWorksVOS);
});
return creators;
}
@Override
public String showWork(ShowWorksDO showWorksDO) {
showWorksDO.setShowStatus(ShowStatus.PUBLISH);
this.baseMapper.updateById(showWorksDO);
return ConstantUtils.SUCCESS_UPDATE;
}
@Override
@Transactional(rollbackFor = Exception.class)
public String submitWork(SubmitWorkDTO submitWorkDTO) {
WorkflowInstance workflowInstance = new WorkflowInstance();
if (null == submitWorkDTO.getInstanceId()) {
//第一次提交
workflowInstance = workflowService.startWorkflow(submitWorkDTO.getMemberId(), ApplyType.NEW_SHOW, AssigneeType.STUDENT);
ShowWorksDO showWorksDO = new ShowWorksDO();
BeanUtils.copyProperties(submitWorkDTO,showWorksDO);
showWorksDO.setSubmitStatus(SubmitStatus.TO_REVIEW);
showWorksDO.setSubmitDate(DateUtil.currentTime());
showWorksDO.setViewCnt(0);
showWorksDO.setHotSpot(BoolFlag.FOU);
showWorksDO.setInstanceId(workflowInstance.getId());
showWorksDO.setNewStatus(ApplyType.NEW_SHOW);
this.baseMapper.insert(showWorksDO);
//标签
submitWorkDTO.getLabelIds().stream().forEach(x->{
ShowWorkLabelsDO showWorkLabelsDO = new ShowWorkLabelsDO();
showWorkLabelsDO.setWorkId(showWorksDO.getId());
showWorkLabelsDO.setLabelId(x);
showWorkLabelsMapper.insert(showWorkLabelsDO);
});
} else {
showWorkLabelsMapper.delete(new QueryWrapper<ShowWorkLabelsDO>()
.lambda()
.eq(ShowWorkLabelsDO::getWorkId,submitWorkDTO.getId()));
//标签
submitWorkDTO.getLabelIds().stream().forEach(x->{
ShowWorkLabelsDO showWorkLabelsDO = new ShowWorkLabelsDO();
showWorkLabelsDO.setWorkId(submitWorkDTO.getId());
showWorkLabelsDO.setLabelId(x);
showWorkLabelsMapper.insert(showWorkLabelsDO);
});
//查看当前状态 只要不是已通过的话 就不修改newStatus的状态
ShowWorksDO showWorksDO = this.baseMapper.selectById(submitWorkDTO.getId());
if (SubmitStatus.PASS.equals(showWorksDO.getSubmitStatus())){
//已通过,修改newStatus的状态
this.baseMapper.updateSubmitWork(submitWorkDTO.getId(),submitWorkDTO.getHomePage(),submitWorkDTO.getWorks(),submitWorkDTO.getWorkDesc(),ApplyType.UPDATE_SHOW);
}else {
this.baseMapper.updateSubmitWork(submitWorkDTO.getId(),submitWorkDTO.getHomePage(),submitWorkDTO.getWorks(),submitWorkDTO.getWorkDesc(),null);
}
//被驳回后提交
workflowInstance = workflowService.rejectWorkflow(submitWorkDTO.getInstanceId(), submitWorkDTO.getMemberId(), ApplyType.NEW_SHOW, AssigneeType.STUDENT);
workflowInstance.setStatus(WorkflowInstanceStatus.DOING);
if (SubmitStatus.PASS.equals(showWorksDO.getSubmitStatus())){
workflowInstance.setApplyType(ApplyType.UPDATE_SHOW);
}
workflowInstanceMapper.updateById(workflowInstance);
}
return ConstantUtils.ADD_SUCCESS;
}
@Override
public String updateWork(SubmitWorkDTO submitWorkDTO) {
// //将之前的置为已结束
// this.baseMapper.finishWork(submitWorkDTO.getId());
WorkflowInstance workflowInstance = new WorkflowInstance();
if (null == submitWorkDTO.getInstanceId()) {
//第一次提交
workflowInstance = workflowService.startWorkflow(submitWorkDTO.getMemberId(), ApplyType.UPDATE_SHOW, AssigneeType.STUDENT);
} else {
//被驳回后提交
workflowInstance = workflowService.rejectWorkflow(submitWorkDTO.getInstanceId(), submitWorkDTO.getMemberId(), ApplyType.UPDATE_SHOW, AssigneeType.STUDENT);
workflowInstance.setStatus(WorkflowInstanceStatus.DOING);
workflowInstanceMapper.updateById(workflowInstance);
}
ShowWorksDO showWorksDO = new ShowWorksDO();
BeanUtils.copyProperties(submitWorkDTO,showWorksDO);
showWorksDO.setSubmitStatus(SubmitStatus.TO_REVIEW);
showWorksDO.setSubmitDate(DateUtil.currentTime());
showWorksDO.setViewCnt(0);
showWorksDO.setHotSpot(BoolFlag.FOU);
showWorksDO.setInstanceId(workflowInstance.getId());
this.baseMapper.insert(showWorksDO);
//标签
submitWorkDTO.getLabelIds().stream().forEach(x->{
ShowWorkLabelsDO showWorkLabelsDO = new ShowWorkLabelsDO();
showWorkLabelsDO.setWorkId(showWorksDO.getId());
showWorkLabelsDO.setLabelId(x);
showWorkLabelsMapper.insert(showWorkLabelsDO);
});
return ConstantUtils.SUCCESS_UPDATE;
}
@Override
public String addViewCnt(ShowWorksDO showWorksDO) {
ShowWorksDO showWorksDO1 = this.baseMapper.selectById(showWorksDO.getId());
if (null == showWorksDO1.getViewCnt()){
showWorksDO1.setViewCnt(1);
}else {
showWorksDO1.setViewCnt(showWorksDO1.getViewCnt()+1);
}
this.baseMapper.updateById(showWorksDO1);
return ConstantUtils.SUCCESS_UPDATE;
}
}
package com.show.service.impl;
import com.show.model.SmsVerifyCodeDO;
import com.show.mapper.SmsVerifyCodeMapper;
import com.show.service.SmsVerifyCodeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 短信验证码记录表 服务实现类
* </p>
*
* @author Tuyp
* @since 2025-12-15
*/
@Service
public class SmsVerifyCodeServiceImpl extends ServiceImpl<SmsVerifyCodeMapper, SmsVerifyCodeDO> implements SmsVerifyCodeService {
}
package com.show.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.show.common.constant.*;
import com.show.common.exception.HttpException;
import com.show.dto.work.WorkflowHistory;
import com.show.mapper.*;
import com.show.model.*;
import com.show.service.WorkflowService;
import com.show.util.ConstantUtils;
import com.show.util.DateFormatUtil;
import com.show.util.DateUtil;
import com.show.vo.administer.NamesVO;
import com.show.vo.work.GetWorkflowHistoryVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.*;
@Service
public class WorkflowServiceImpl implements WorkflowService {
@Autowired
private WorkflowNodeMapper workflowNodeMapper;
@Autowired
private WorkflowInstanceMapper workflowInstanceMapper;
@Autowired
private WorkflowTaskMapper workflowTaskMapper;
@Autowired
private AcademyPermissionMappingMapper academyPermissionMappingMapper;
@Autowired
private MemberMapper memberMapper;
@Autowired
private AdministerMapper administerMapper;
@Autowired
private AcademyRoleDictMapper academyRoleDictMapper;
@Override
@Transactional
public String reject(Long taskId, String assignee, String approveOpinion) {
WorkflowTask task = workflowTaskMapper.selectById(taskId);
if (task == null || !task.getAssignee().equals(Long.valueOf(assignee)) || !WorkflowTaskStatus.TODO.equals(task.getStatus())) {
throw new RuntimeException("任务不存在或状态异常");
}
// 更新任务状态
task.setStatus(WorkflowTaskStatus.REJECT); // 驳回中
task.setApproveOpinion(approveOpinion);
task.setEndTime(DateFormatUtil.format(new Date(), DateFormatUtil.FMT_sdf14_L24));
task.setAssignee(Long.valueOf(assignee));
task.setCheckId(Long.valueOf(assignee));
workflowTaskMapper.updateById(task);
// 记录历史
WorkflowInstance instance = workflowInstanceMapper.selectById(task.getInstanceId());
WorkflowNode currentNode = workflowNodeMapper.selectById(task.getNodeId());
instance.setStatus(WorkflowInstanceStatus.REJECTING);
workflowInstanceMapper.updateById(instance);
// // 查找目标节点
// WorkflowNode targetWorkflowNode = nodeMapper.selectOne(new QueryWrapper<WorkflowNode>()
// .lambda()
// .eq(WorkflowNode::getWorkflowId, instance.getWorkflowId())
// .eq(WorkflowNode::getNodeKey, rejectDTO.getTargetNode()));
//
// if (targetWorkflowNode == null) {
// throw new RuntimeException("目标节点不存在");
// }
// 清除当前活动任务
clearActiveTasks(instance.getId(), currentNode.getId());
// // 创建目标节点任务
// createTasks(instance.getId(), targetWorkflowNode.getId(), null);
return ConstantUtils.SUCCESS_REJECT;
}
@Override
public List<GetWorkflowHistoryVO> getWorkflowHistory(WorkflowHistory workflowHistory) {
List<GetWorkflowHistoryVO> result = workflowTaskMapper.updatedWorks(workflowHistory.getInstanceId());
for (GetWorkflowHistoryVO getWorkflowHistoryVO : result){
//找到节点对应的所有审批人
WorkflowNode workflowNode = workflowNodeMapper.selectById(getWorkflowHistoryVO.getNodeId());
List<String> checkers = new ArrayList<>();
if (AssigneeType.USER.equals(getWorkflowHistoryVO.getAssigneeType())) {
List<String> split = Arrays.asList(workflowNode.getApproveConfig().split(","));
List<NamesVO> names = administerMapper.names(split);
for (NamesVO namesVO : names) {
checkers.add(namesVO.getName());
}
getWorkflowHistoryVO.setCheckers(checkers);
} else if (AssigneeType.ROLE.equals(getWorkflowHistoryVO.getAssigneeType())) {
String[] split = workflowNode.getApproveConfig().split(",");
for (String str : split) {
AcademyRoleDictDO academyRoleDictDO = academyRoleDictMapper.selectById(str);
checkers.add(academyRoleDictDO.getRole());
getWorkflowHistoryVO.setCheckers(checkers);
}
} else if (AssigneeType.STUDENT.equals(getWorkflowHistoryVO.getAssigneeType())) {
MemberDO memberDO = memberMapper.selectById(getWorkflowHistoryVO.getAssignee());
checkers.add(memberDO.getUserName());
getWorkflowHistoryVO.setCheckers(checkers);
} else {
AdministerDO administerDO = administerMapper.selectById(getWorkflowHistoryVO.getAssignee());
checkers.add(administerDO.getUserName());
getWorkflowHistoryVO.setCheckers(checkers);
}
//谁审批的
String operator = administerMapper.administerName(getWorkflowHistoryVO.getCheckId());
getWorkflowHistoryVO.setOperator(operator);
}
return result;
}
@Override
public String updateWorkTaskStatus(Long instanceId) {
//审批里置为进行中
WorkflowInstance instance = workflowInstanceMapper.selectById(instanceId);
instance.setStatus(WorkflowInstanceStatus.DOING);
workflowInstanceMapper.updateById(instance);
WorkflowNode workflowNode = workflowNodeMapper.selectById(instance.getCurrentNode());
//老师的任务重新造记录
createTasks(instance.getId(), instance.getWorkflowId(), workflowNode.getNodeKey(), workflowNode.getVersionCode());
return ConstantUtils.COMMIT_SUCCESS;
}
@Override
public List<WorkflowTask> getActiveTasks(WorkflowHistory workflowHistory) {
return workflowTaskMapper.selectList(new QueryWrapper<WorkflowTask>()
.lambda()
.eq(WorkflowTask::getInstanceId, workflowHistory.getInstanceId())
.eq(WorkflowTask::getStatus, 1) //待处理
.orderByAsc(WorkflowTask::getCreateDate));
}
@Override
public WorkflowInstance getWorkflowInstance(WorkflowHistory workflowHistory) {
return workflowInstanceMapper.selectById(workflowHistory.getId());
}
/**
* 通过 返回是否是最后一个节点
*/
public Boolean orHandlePass(Long instanceId, Integer role, Long userId, String opinion) {
Boolean flag = false;
//审批流处理== 通过
WorkflowNode workflowNode = workflowInstanceMapper.instanceCurrentNode(instanceId);
//1.获取当前节点是由角色还是用户审批
if (AssigneeType.USER.equals(workflowNode.getApproveType())) {
//用户
WorkflowTask workflowTask = workflowTaskMapper.selectOne(new QueryWrapper<WorkflowTask>()
.lambda()
.eq(WorkflowTask::getAssigneeType, AssigneeType.USER)
.eq(WorkflowTask::getInstanceId, instanceId)
.eq(WorkflowTask::getNodeId, workflowNode.getId())
.eq(WorkflowTask::getAssignee, userId)
.eq(WorkflowTask::getStatus, WorkflowTaskStatus.TODO));
workflowTask.setStatus(WorkflowTaskStatus.DONE); // 已通过
workflowTask.setEndTime(DateFormatUtil.format(new Date(), DateFormatUtil.FMT_sdf14_L24));
workflowTask.setCheckId(userId);
workflowTask.setApproveOpinion(opinion);
workflowTaskMapper.updateById(workflowTask);
// 该人不在的改为已结束
List<WorkflowTask> others = workflowTaskMapper.selectList(new QueryWrapper<WorkflowTask>()
.lambda()
.eq(WorkflowTask::getAssigneeType, AssigneeType.USER)
.eq(WorkflowTask::getInstanceId, instanceId)
.eq(WorkflowTask::getNodeId, workflowNode.getId())
.ne(WorkflowTask::getAssignee, userId)
.eq(WorkflowTask::getStatus, WorkflowTaskStatus.TODO));
for (WorkflowTask other : others) {
other.setStatus(WorkflowTaskStatus.CANCEL);
workflowTaskMapper.updateById(other);
}
// //审批通过
// this.approve(workflowTask.getId(), String.valueOf(userId), null);
} else {
//角色---> 将该节点所有成员出现的角色置为已处理,再流转到下个节点
List<WorkflowTask> workflowTasks = workflowTaskMapper.administerRoleTasks(userId, instanceId, workflowNode.getId(), role);
for (WorkflowTask workflowTask : workflowTasks) {
// 更新任务状态
workflowTask.setStatus(WorkflowTaskStatus.DONE); // 已通过
workflowTask.setEndTime(DateFormatUtil.format(new Date(), DateFormatUtil.FMT_sdf14_L24));
workflowTask.setCheckId(userId);
workflowTask.setApproveOpinion(opinion);
workflowTaskMapper.updateById(workflowTask);
}
// 该人不在的角色改为已结束
List<WorkflowTask> workflowTasks1 = workflowTaskMapper.administerNotInRoleTask(role, userId, instanceId, workflowNode.getId());
for (WorkflowTask workflowTask : workflowTasks1) {
workflowTask.setStatus(WorkflowTaskStatus.CANCEL);
workflowTaskMapper.updateById(workflowTask);
}
}
/**
* 判断是否是最后一个节点
*/
WorkflowInstance workflowInstance = workflowInstanceMapper.selectById(instanceId);
WorkflowNode currentNode = workflowNodeMapper.selectById(workflowInstance.getCurrentNode());
// 获取下一个节点
String nextNodeKey = currentNode.getNextNode();
WorkflowNode nextNode = workflowNodeMapper.selectOne(new QueryWrapper<WorkflowNode>()
.lambda()
.eq(WorkflowNode::getWorkflowId, workflowInstance.getWorkflowId())
.eq(WorkflowNode::getNodeKey, nextNodeKey)
.eq(WorkflowNode::getVersionCode, workflowInstance.getVersionCode()));
//下一个节点流存在 创建节点流
if (nextNode != null) {
workflowInstance.setCurrentNode(nextNode.getId());
workflowInstanceMapper.updateById(workflowInstance);
this.createTasks(workflowInstance.getId(), workflowInstance.getWorkflowId(), nextNode.getNodeKey(), workflowNode.getVersionCode());
} else {
flag = true;
// 如果是结束节点,更新实例状态
workflowInstance.setStatus(WorkflowInstanceStatus.DONE); // 已完成
workflowInstance.setFinishTime(new Date());
workflowInstanceMapper.updateById(workflowInstance);
}
return flag;
}
public void orHandleReject(Long instanceId, Integer role, Long userId, String approveOpinion) {
//审批流处理==
WorkflowNode workflowNode = workflowInstanceMapper.instanceCurrentNode(instanceId);
//1.获取当前节点是由角色还是用户审批
if (AssigneeType.USER.equals(workflowNode.getApproveType())) {
//用户
WorkflowTask workflowTask = workflowTaskMapper.selectOne(new QueryWrapper<WorkflowTask>()
.lambda()
.eq(WorkflowTask::getAssigneeType, AssigneeType.USER)
.eq(WorkflowTask::getInstanceId, instanceId)
.eq(WorkflowTask::getNodeId, workflowNode.getId())
.eq(WorkflowTask::getAssignee, userId)
.eq(WorkflowTask::getStatus, WorkflowTaskStatus.TODO));
//审批
this.reject(workflowTask.getId(), String.valueOf(userId), approveOpinion);
} else {
//角色---> 将该节点所有成员出现的角色置为驳回中,再流转到下个节点
List<WorkflowTask> workflowTasks = workflowTaskMapper.administerRoleTasks(userId, instanceId, workflowNode.getId(), role);
for (WorkflowTask workflowTask : workflowTasks) {
// 更新任务状态
workflowTask.setStatus(WorkflowTaskStatus.REJECT); // 驳回中
workflowTask.setApproveOpinion(approveOpinion);
workflowTask.setEndTime(DateFormatUtil.format(new Date(), DateFormatUtil.FMT_sdf14_L24));
workflowTask.setCheckId(userId);
workflowTaskMapper.updateById(workflowTask);
}
WorkflowInstance instance = workflowInstanceMapper.selectById(instanceId);
instance.setStatus(WorkflowInstanceStatus.REJECTING);
workflowInstanceMapper.updateById(instance);
// 该人不在的角色改为已结束
List<WorkflowTask> workflowTasks1 = workflowTaskMapper.administerNotInRoleTask(role, userId, instanceId, workflowNode.getId());
for (WorkflowTask workflowTask : workflowTasks1) {
workflowTask.setStatus(WorkflowTaskStatus.CANCEL);
workflowTaskMapper.updateById(workflowTask);
}
}
}
/**
* 创建任务
*
* @param instanceId
* @param mappingId
* @param nodeKey workflow_node的 nodeKey
*/
public void createTasks(Long instanceId, Long mappingId, String nodeKey, Integer versionCode) {
//查询节点
WorkflowNode node = workflowNodeMapper.selectOne(new QueryWrapper<WorkflowNode>()
.lambda()
.eq(WorkflowNode::getWorkflowId, mappingId)
.eq(WorkflowNode::getVersionCode, versionCode)
.eq(WorkflowNode::getNodeKey, nodeKey));
if (node == null) {
throw new RuntimeException("节点不存在");
}
// 根据节点配置创建任务
if (AssigneeType.ROLE.equals(node.getApproveType())) { // 角色审批
// 从approveConfig中获取角色ID列表
String[] roleIds = node.getApproveConfig().split(",");
for (String roleId : roleIds) {
// 这里需要根据角色ID获取用户列表,简化处理直接创建任务
WorkflowTask task = new WorkflowTask();
task.setInstanceId(instanceId);
task.setNodeId(node.getId());
task.setNodeKey(node.getNodeKey());
task.setNodeName(TaskType.CHECK);
task.setAssignee(Long.valueOf(roleId));
task.setAssigneeType(AssigneeType.ROLE); // 角色
task.setStatus(WorkflowTaskStatus.TODO); // 待处理
workflowTaskMapper.insert(task);
}
} else if (AssigneeType.USER.equals(node.getApproveType())) { // 用户审批
// 从approveConfig中获取用户ID列表
String[] userIds = node.getApproveConfig().split(",");
// //若同一审批人在流程中重复出现,默认只审批一次---->上个节点这个人审批过(指定用户情况,可多个),下个节点只有他自己的话,则直接跳过
// if (userIds.length == 1) {
// int count = workflowTaskMapper.selectCount(new QueryWrapper<WorkflowTask>()
// .lambda()
// .eq(WorkflowTask::getInstanceId, instanceId)
// .eq(WorkflowTask::getAssignee, userIds[0])
// .eq(WorkflowTask::getStatus, WorkflowTaskStatus.DONE));
// if (count > 0) {
// //当前审批 之前这个人已经审批通过了,直接跳过
// WorkflowTask task = new WorkflowTask();
// task.setInstanceId(instanceId);
// task.setNodeId(node.getId());
// task.setNodeKey(node.getNodeKey());
// task.setNodeName(TaskType.CHECK);
// task.setAssignee(Long.valueOf(userIds[0]));
// task.setAssigneeType(AssigneeType.USER); // 用户
// task.setStatus(WorkflowTaskStatus.DONE); // 已处理
// workflowTaskMapper.insert(task);
//
// //查询下个结点,创建新的审批工作
// createTasks(instanceId, mappingId, node.getNextNode(), versionCode);
// }
// }
for (String userId : userIds) {
WorkflowTask task = new WorkflowTask();
task.setInstanceId(instanceId);
task.setNodeId(node.getId());
task.setNodeKey(node.getNodeKey());
task.setNodeName(TaskType.CHECK);
task.setAssignee(Long.valueOf(userId));
task.setAssigneeType(AssigneeType.USER); // 用户
task.setStatus(WorkflowTaskStatus.TODO); // 待处理
workflowTaskMapper.insert(task);
}
}
}
/**
* 创建下一个节点的任务
*/
private void createNextTasks(WorkflowInstance instance, WorkflowNode currentNode, Integer versionCode) {
// 获取下一个节点
String nextNodeKey = currentNode.getNextNode();
WorkflowNode nextNode = workflowNodeMapper.selectOne(new QueryWrapper<WorkflowNode>()
.lambda()
.eq(WorkflowNode::getWorkflowId, instance.getWorkflowId())
.eq(WorkflowNode::getVersionCode, versionCode)
.eq(WorkflowNode::getNodeKey, nextNodeKey));
//下一个节点流存在 创建节点流
if (nextNode != null) {
instance.setCurrentNode(nextNode.getId());
workflowInstanceMapper.updateById(instance);
createTasks(instance.getId(), instance.getWorkflowId(), nextNode.getNodeKey(), versionCode);
} else {
// 如果是结束节点,更新实例状态
instance.setStatus(WorkflowInstanceStatus.DONE); // 已完成
instance.setFinishTime(new Date());
workflowInstanceMapper.updateById(instance);
}
}
// /**
// * 处理会签节点
// */
// private void handleSignTask(Long instanceId, Long nodeId, boolean isApprove) {
// // 查询当前节点所有任务
// List<WorkflowTask> tasks = workflowTaskMapper.selectList(new QueryWrapper<WorkflowTask>()
// .lambda()
// .eq(WorkflowTask::getInstanceId, instanceId)
// .eq(WorkflowTask::getNodeId, nodeId));
//
// // 统计已处理任务
// long processedCount = tasks.stream()
// .filter(t -> WorkflowTaskStatus.DONE.equals(t.getStatus()) || WorkflowTaskStatus.REJECT.equals(t.getStatus()))
// .count();
//
// // 如果有驳回,直接驳回
// if (!isApprove) {
// // 清除当前活动任务
// clearActiveTasks(instanceId, nodeId);
// // 创建驳回任务(简化处理,直接结束流程)
// WorkflowInstance instance = workflowInstanceMapper.selectById(instanceId);
// instance.setStatus(WorkflowInstanceStatus.END); // 已终止
// instance.setFinishTime(new Date());
// workflowInstanceMapper.updateById(instance);
// return;
// }
//
// // 如果所有任务都已处理,继续下一个节点
// if (processedCount == tasks.size()) {
// WorkflowInstance instance = workflowInstanceMapper.selectById(instanceId);
// WorkflowNode currentNode = workflowNodeMapper.selectById(nodeId);
// createNextTasks(instance, currentNode);
// }
// }
/**
* 处理或签节点
*/
private void handleOrSignTask(Long instanceId, Long nodeId, boolean isApprove, Integer versionCode) {
if (isApprove) {
// 只要有一个通过,就清除其他任务,继续下一个节点
clearActiveTasks(instanceId, nodeId);
WorkflowInstance instance = workflowInstanceMapper.selectById(instanceId);
WorkflowNode currentNode = workflowNodeMapper.selectById(nodeId);
createNextTasks(instance, currentNode, versionCode);
} else {
// 查询当前节点所有任务
QueryWrapper<WorkflowTask> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("instance_id", instanceId)
.eq("node_id", nodeId);
List<WorkflowTask> tasks = workflowTaskMapper.selectList(queryWrapper);
// 统计已处理任务
long processedCount = tasks.stream()
.filter(t -> WorkflowTaskStatus.DONE.equals(t.getStatus()) || WorkflowTaskStatus.REJECT.equals(t.getStatus()))
.count();
// 如果所有任务都驳回中,结束流程
if (processedCount == tasks.size()) {
WorkflowInstance instance = workflowInstanceMapper.selectById(instanceId);
instance.setStatus(WorkflowInstanceStatus.END); // 已终止
instance.setFinishTime(new Date());
workflowInstanceMapper.updateById(instance);
}
}
}
/**
* 清除当前活动任务 或签 or 驳回
*/
private void clearActiveTasks(Long instanceId, Long nodeId) {
// 待处理
List<WorkflowTask> activeTasks = workflowTaskMapper.selectList(new QueryWrapper<WorkflowTask>()
.lambda()
.eq(WorkflowTask::getInstanceId, instanceId)
.eq(WorkflowTask::getNodeId, nodeId)
.eq(WorkflowTask::getStatus, WorkflowTaskStatus.TODO));
//或签---清除该任务下其他用户的审批操作
for (WorkflowTask task : activeTasks) {
task.setStatus(WorkflowTaskStatus.CANCEL); // 已结束
task.setEndTime(DateFormatUtil.format(new Date(), DateFormatUtil.FMT_sdf14_L24));
workflowTaskMapper.updateById(task);
}
}
// /**
// * 记录历史
// */
// private void recordHistory(WorkflowTask task, String status) {
// WorkflowHistory history = new WorkflowHistory();
// history.setInstanceId(task.getInstanceId());
// history.setNodeId(task.getNodeId());
// history.setNodeKey(task.getNodeKey());
// history.setNodeName(task.getNodeName());
// history.setAssignee(task.getAssignee());
// history.setAssigneeType(task.getAssigneeType());
// history.setStatus(status);
// history.setApproveOpinion(task.getApproveOpinion());
// workflowHistoryMapper.insert(history);
// }
@Override
@Transactional(rollbackFor = Exception.class)
public WorkflowInstance startWorkflow(Long memberId, String applyName, String roleType) {
Long mappingId = academyPermissionMappingMapper.permissionMappingId(memberId, applyName);
AcademyPermissionMappingDO academyPermissionMappingDO = academyPermissionMappingMapper.selectById(mappingId);
if (null == mappingId) {
throw new HttpException(50005);
}
// 获取该工作流的开始节点
WorkflowNode startNode = workflowNodeMapper.selectOne(new QueryWrapper<WorkflowNode>()
.lambda()
.eq(WorkflowNode::getWorkflowId, mappingId)
.eq(WorkflowNode::getVersionCode, academyPermissionMappingDO.getVersionCode())
.isNull(WorkflowNode::getPrevNode));
if (null == startNode) {
throw new HttpException(50005);
}
// 某人创建工作流实例 ---> 发起审批
WorkflowInstance instance = new WorkflowInstance();
instance.setWorkflowId(mappingId);
instance.setApplyType(applyName);
instance.setApplyId(memberId);
instance.setStatus(WorkflowInstanceStatus.DOING); // 运行中
instance.setCurrentNode(startNode.getId()); // workNode的id
instance.setVersionCode(academyPermissionMappingDO.getVersionCode());
workflowInstanceMapper.insert(instance);
if (startNode == null) {
throw new RuntimeException("未找到开始节点");
}
WorkflowTask workflowTask = new WorkflowTask();
workflowTask.setInstanceId(instance.getId());
workflowTask.setNodeName(TaskType.COMMIT);
workflowTask.setAssignee(memberId);
workflowTask.setStatus(WorkflowTaskStatus.COMMIT);
workflowTask.setCreateDate(LocalDateTime.now());
workflowTask.setAssigneeType(roleType);
workflowTaskMapper.insert(workflowTask);
// 创建第一个任务 实例id mappingId 当前节点nodeKey
createTasks(instance.getId(), mappingId, startNode.getNodeKey(), academyPermissionMappingDO.getVersionCode());
return instance;
}
@Override
@Transactional(rollbackFor = Exception.class)
public WorkflowInstance rejectWorkflow(Long instanceId, Long memberId, String applyName, String roleType) {
WorkflowInstance workflowInstance = workflowInstanceMapper.selectById(instanceId);
WorkflowTask workflowTask = new WorkflowTask();
workflowTask.setInstanceId(instanceId);
workflowTask.setNodeName(TaskType.COMMIT);
workflowTask.setAssignee(memberId);
workflowTask.setStatus(WorkflowTaskStatus.COMMIT);
workflowTask.setCreateDate(LocalDateTime.now());
workflowTask.setAssigneeType(roleType);
workflowTaskMapper.insert(workflowTask);
// 创建第一个任务 实例id mappingId 当前节点nodeKey
WorkflowNode workflowNode = workflowNodeMapper.selectById(workflowInstance.getCurrentNode());
createTasks(instanceId, workflowInstance.getWorkflowId(), workflowNode.getNodeKey(), workflowInstance.getVersionCode());
return workflowInstance;
}
}
\ No newline at end of file
package com.subsidy.util; package com.show.util;
import com.tencentcloudapi.captcha.v20190722.CaptchaClient; import com.tencentcloudapi.captcha.v20190722.CaptchaClient;
import com.tencentcloudapi.captcha.v20190722.models.DescribeCaptchaResultRequest; import com.tencentcloudapi.captcha.v20190722.models.DescribeCaptchaResultRequest;
......
package com.subsidy.util; package com.show.util;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
...@@ -8,8 +8,8 @@ import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; ...@@ -8,8 +8,8 @@ import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile; import com.aliyuncs.profile.IClientProfile;
import com.subsidy.common.configure.AliyunSmsProperties; import com.show.common.configure.AliyunSmsProperties;
import com.subsidy.common.exception.HttpException; import com.show.common.exception.HttpException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
......
package com.subsidy.util; package com.show.util;
import sun.misc.BASE64Decoder; import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder; import sun.misc.BASE64Encoder;
......
package com.subsidy.util; package com.show.util;
import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.FieldStrategy;
......
package com.subsidy.util; package com.show.util;
import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
......
package com.subsidy.util; package com.show.util;
/** /**
...@@ -30,7 +30,7 @@ public class ConstantUtils { ...@@ -30,7 +30,7 @@ public class ConstantUtils {
public static final String SUCCESS_UPDATE = "更新成功"; public static final String SUCCESS_UPDATE = "更新成功";
public static final String FAIL_UPDATE = "更新失败"; public static final String SUCCESS_REJECT = "已驳回";
public static final String SET_SUCCESS = "设置成功"; public static final String SET_SUCCESS = "设置成功";
......
package com.subsidy.util; package com.show.util;
import java.awt.SystemTray;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
...@@ -18,7 +17,10 @@ public class DateFormatUtil { ...@@ -18,7 +17,10 @@ public class DateFormatUtil {
public final static String YEAR = "yyyy"; public final static String YEAR = "yyyy";
public final static String FMT_sdf14_L = "yyyy-MM-dd HH:mm:ss"; public final static String FMT_sdf14_L = "yyyy-MM-dd HH:mm:ss";
public final static String FMT_sdf14_L24 = "yyyy/MM/dd HH:mm:ss";
public final static String FMT_sdf_hms = "HH:mm:ss";
public final static String FMT_sdf_yMd = "yyyy-MM-dd"; public final static String FMT_sdf_yMd = "yyyy-MM-dd";
public final static String FMT_sdf_yyMMdd = "yyyy/MM/dd";
public final static String FMT_sdf_yM = "yyyy-M"; public final static String FMT_sdf_yM = "yyyy-M";
public final static String FMT_sdf_yMM = "yyyy-MM"; public final static String FMT_sdf_yMM = "yyyy-MM";
public final static String FMT_sdf_Hm = "H:mm"; public final static String FMT_sdf_Hm = "H:mm";
...@@ -117,4 +119,6 @@ public class DateFormatUtil { ...@@ -117,4 +119,6 @@ public class DateFormatUtil {
} }
return System.currentTimeMillis(); return System.currentTimeMillis();
} }
} }
package com.show.util;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class DateUtil {
public static Long dateDiff(String startDate, String endDate, String format) {
// 定义日期格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
// 将字符串日期转换为LocalDate对象
LocalDate date1 = LocalDate.parse(startDate, formatter);
LocalDate date2 = LocalDate.parse(endDate, formatter);
// 计算日期差
return ChronoUnit.DAYS.between(date1, date2);
}
/**
* 获取两个日期之间的所有日期(包括开始日期和结束日期)
*
* @return 日期列表
*/
public static List<String> getDatesBetween(String startDateStr, String endDateStr) {
List<String> dates = new ArrayList<>();
// 定义日期格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
// 解析字符串为 LocalDate 对象
LocalDate startDate = LocalDate.parse(startDateStr, formatter);
LocalDate endDate = LocalDate.parse(endDateStr, formatter);
// 使用循环遍历日期范围
LocalDate currentDate = startDate;
while (!currentDate.isAfter(endDate)) {
dates.add(currentDate.format(formatter));
currentDate = currentDate.plusDays(1); // 增加一天
}
return dates;
}
/**
* 获取两个日期之间的所有日期(包括开始日期和结束日期)
*
* @return 日期列表
*/
public static List<String> getDatesBetweenUtilNow(String startDateStr, String endDateStr) {
List<String> dates = new ArrayList<>();
// 定义日期格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
// 解析字符串为 LocalDate 对象
LocalDate startDate = LocalDate.parse(startDateStr, formatter);
LocalDate endDate = LocalDate.parse(endDateStr, formatter);
if (!endDate.isAfter(LocalDate.now())) {
// 使用循环遍历日期范围
LocalDate currentDate = startDate;
while (!currentDate.isAfter(endDate)) {
dates.add(currentDate.format(formatter));
currentDate = currentDate.plusDays(1); // 增加一天
}
} else {
// 使用循环遍历日期范围
LocalDate currentDate = startDate;
while (!currentDate.isAfter(LocalDate.now())) {
dates.add(currentDate.format(formatter));
currentDate = currentDate.plusDays(1); // 增加一天
}
}
return dates;
}
public static String dayOfWeek() {
// 获取当前日期
LocalDate today = LocalDate.now();
// 获取星期几
DayOfWeek dayOfWeek = today.getDayOfWeek();
// 转换为中文星期几
return getChineseDayOfWeek(dayOfWeek);
}
public static String getChineseDayOfWeek(DayOfWeek dayOfWeek) {
switch (dayOfWeek) {
case MONDAY:
return "星期一";
case TUESDAY:
return "星期二";
case WEDNESDAY:
return "星期三";
case THURSDAY:
return "星期四";
case FRIDAY:
return "星期五";
case SATURDAY:
return "星期六";
case SUNDAY:
return "星期天";
default:
return "未知";
}
}
public static Long calculateTimeDifference(String startTimeStr, String endTimeStr) {
// 定义时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DateFormatUtil.FMT_sdf_HHmm);
// 将字符串解析为 LocalTime 对象
LocalTime startTime = LocalTime.parse(startTimeStr, formatter);
LocalTime endTime = LocalTime.parse(endTimeStr, formatter);
// 计算时间差
Duration duration = Duration.between(startTime, endTime);
// 获取时间差的总秒数
return Math.abs(duration.getSeconds());
}
/**
* 查看某天是否在某个区间内
*/
public static boolean dateBetweenOrNot(Date date, Date startDate, Date endDate) {
try {
// 判断日期是否在范围内
return !date.before(startDate) && !date.after(endDate);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 查看某天是否在某个区间内 是的话true 不是的话 false
*/
public static boolean dateBeforeAfter(String date, String compareDate, String formatter) {
try {
Date parse = DateFormatUtil.parse(date, formatter);
Date parse2 = DateFormatUtil.parse(compareDate, formatter);
// 判断日期早晚
return parse.before(parse2);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public static String dateToMonth(Integer dayCnt) {
// 进行除法运算,并指定保留1位小数,使用四舍五入模式
return new BigDecimal(dayCnt).divide(new BigDecimal(30), 1, RoundingMode.HALF_UP).toString();
}
/**
* 计算时间差
*/
/**
* 计算两个时间字符串相差的小时数,保留一位小数
*
* @param timeStr1 第一个时间字符串
* @param timeStr2 第二个时间字符串
* @return 两个时间相差的小时数(绝对值)
* @throws ParseException 时间格式解析异常
* 取最小值
*/
public static String calculateHourDifference(String timeStr1, String timeStr2, String cumulativeTime) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(DateFormatUtil.FMT_sdf14_L24);
Date date1 = sdf.parse(timeStr1);
Date date2 = sdf.parse(timeStr2);
// 计算毫秒差的绝对值
long diffInMillies = Math.abs(date2.getTime() - date1.getTime());
// 转换为小时(1小时 = 3600000毫秒)
double diffInHours = diffInMillies / 3600000.0;
// 使用DecimalFormat保留一位小数
DecimalFormat df = new DecimalFormat("#.0");
df.setRoundingMode(RoundingMode.HALF_UP); // 四舍五入
double num1 = Double.parseDouble(df.format(diffInHours));
// 将字符串转换为double
double num2 = Double.parseDouble(cumulativeTime);
// 取最小值
double minValue = Math.min(num1, num2);
// 结果可以保持为数值类型,也可以转回字符串
return String.valueOf(minValue);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static String currentTime() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
// 获取当前时间并格式化为字符串
return sdf.format(new Date());
}
/**
* 时间烦我内 日期的时分秒在某个区间
*
* @param targetTimeStr
* @param startTimeStr
* @param endTimeStr
* @return
*/
public static Boolean betweenDateHour(String targetTimeStr, String startTimeStr, String endTimeStr) {
// 定义时间格式器
DateTimeFormatter fullFormatter = DateTimeFormatter.ofPattern(DateFormatUtil.FMT_sdf14_L24);
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm");
// 解析目标时间为LocalDateTime
LocalDateTime targetDateTime = LocalDateTime.parse(targetTimeStr, fullFormatter);
// 提取时间部分
LocalTime targetTime = targetDateTime.toLocalTime();
// 解析时间范围
LocalTime startTime = LocalTime.parse(startTimeStr, timeFormatter);
LocalTime endTime = LocalTime.parse(endTimeStr, timeFormatter);
// 判断是否在范围内(包含边界)
return !targetTime.isBefore(startTime) && !targetTime.isAfter(endTime);
}
/**
* 时间烦我内 日期的时分秒在某个区间
*
* @param targetTimeStr
* @param startTimeStr
* @param endTimeStr
* @return
*/
public static Boolean betweenDate(String targetTimeStr, String startTimeStr, String endTimeStr) {
// 定义日期时间格式器
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
// 解析时间字符串为LocalDateTime对象
LocalDateTime targetTime = LocalDateTime.parse(targetTimeStr, dateTimeFormatter);
// 解析开始日期和结束日期为LocalDate对象
LocalDate startDate = LocalDate.parse(startTimeStr, dateFormatter);
LocalDate endDate = LocalDate.parse(endTimeStr, dateFormatter);
// 将开始日期转换为当天的起始时间(00:00:00)
LocalDateTime startDateTime = startDate.atStartOfDay();
// 将结束日期转换为第二天的起始时间(00:00:00),这样包含整个结束日
LocalDateTime endDateTime = endDate.plusDays(1).atStartOfDay();
// 判断目标时间是否在范围内
return targetTime.isAfter(startDateTime) && targetTime.isBefore(endDateTime);
}
public static String localToString(LocalDateTime localDateTime){
return localDateTime.toString().replace("T"," ");
}
// 定义日期格式
private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
/**
* 计算两个日期之间的工作日天数(排除周六和周日)
* @param startDateStr 开始日期字符串,格式为"yyyy/MM/dd"
* @param endDateStr 结束日期字符串,格式为"yyyy/MM/dd"
* @return 工作日天数
*/
public static Integer calculateWorkdays(String startDateStr, String endDateStr) {
// 解析日期字符串为LocalDate对象
LocalDate startDate = LocalDate.parse(startDateStr, formatter);
LocalDate endDate = LocalDate.parse(endDateStr, formatter);
// 确保开始日期不晚于结束日期
if (startDate.isAfter(endDate)) {
LocalDate temp = startDate;
startDate = endDate;
endDate = temp;
}
long totalDays = ChronoUnit.DAYS.between(startDate, endDate) + 1; // 包含起止日期
int weekends = 0;
// 遍历每一天,统计周末天数
LocalDate currentDate = startDate;
while (!currentDate.isAfter(endDate)) {
int dayOfWeek = currentDate.getDayOfWeek().getValue();
// 6是周六,7是周日
if (dayOfWeek == 6 || dayOfWeek == 7) {
weekends++;
}
currentDate = currentDate.plusDays(1);
}
// 工作日 = 总天数 - 周末天数
return Integer.valueOf((int) totalDays) - weekends;
}
/**
* 计算指定年份对应的学年开始时间和结束时间,返回格式化字符串数组
* 学年定义为: 当年9月1日 00:00:00 至 次年8月31日 23:59:59
*
* @param year 学年的年份,例如2025表示2025学年
* @return 返回一个包含两个字符串的数组,第一个是开始时间,第二个是结束时间
* 格式为: yyyy/MM/dd HH:mm:ss
*/
public static String[] getSchoolYearTimeAsString(int year,int diff) {
// 定义日期时间格式化器
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
// 学年开始时间:当年9月1日 00:00:00
LocalDateTime startTime = LocalDateTime.of(year, 9, 1, 0, 0, 0);
// 学年结束时间:次年8月31日 23:59:59
LocalDateTime endTime = LocalDateTime.of(year + diff, 8, 31, 23, 59, 59);
// 格式化并返回字符串数组
return new String[]{
startTime.format(formatter),
endTime.format(formatter)
};
}
/**
* 检查两个时间字符串的间隔是否超过300秒
* @param time1 第一个时间字符串
* @return 如果间隔超过300秒返回true,否则返回false
* @throws ParseException 时间格式解析错误
*/
public static boolean isOver300Seconds(String time1) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
// 解析时间字符串为Date对象
Date date1 = sdf.parse(time1);
// 计算两个时间的毫秒差
long timeDiffMs = Math.abs(date1.getTime() - new Date().getTime());
// 转换为秒并判断是否超过300秒
long timeDiffSeconds = timeDiffMs / 1000;
return timeDiffSeconds >= 300;
}
public static Integer currentYear(){
return Year.now().getValue();
}
public static void main(String[] args) {
// 示例:计算2025学年的时间范围
int year = 2025;
String[] schoolYearTimes = getSchoolYearTimeAsString(year,2);
System.out.println(year + "学年开始时间: " + schoolYearTimes[0]);
System.out.println(year + "学年结束时间: " + schoolYearTimes[1]);
}
}
package com.subsidy.util; package com.show.util;
public class DudaoConstant { public class DudaoConstant {
......
package com.subsidy.util; package com.show.util;
import net.sf.ehcache.Cache; import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager; import net.sf.ehcache.CacheManager;
......
package com.subsidy.util; package com.show.util;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.bouncycastle.crypto.digests.SM3Digest; import org.bouncycastle.crypto.digests.SM3Digest;
......
package com.subsidy.util; package com.show.util;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
......
package com.subsidy.util; package com.show.util;
import org.apache.http.Header; import org.apache.http.Header;
......
package com.subsidy.util; package com.show.util;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader; import java.io.BufferedReader;
......
package com.subsidy.util; package com.show.util;
import com.auth0.jwt.JWT; import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier; import com.auth0.jwt.JWTVerifier;
......
package com.subsidy.util; package com.show.util;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -9,10 +9,10 @@ import java.util.concurrent.ConcurrentHashMap; ...@@ -9,10 +9,10 @@ import java.util.concurrent.ConcurrentHashMap;
public class Localstorage { public class Localstorage {
private static final ThreadLocal<Object> local = ThreadLocal.withInitial(() -> null); private static final ThreadLocal<Object> local = ThreadLocal.withInitial(() -> null);
private static ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<>(); private static ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<>();
public static void setUser(Object obj, String type) { public static void setUser(Object obj) {
// Map<String, Object> map = new HashMap<>(); // Map<String, Object> map = new HashMap<>();
map.put("user", obj); map.put("user", obj);
map.put("type", type); // map.put("type", type);
Localstorage.local.set(map); Localstorage.local.set(map);
} }
......
package com.subsidy.util; package com.show.util;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
......
package com.subsidy.util; package com.show.util;
import org.springframework.beans.BeanWrapper; import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl; import org.springframework.beans.BeanWrapperImpl;
......
package com.subsidy.util; package com.show.util;
import java.util.List; import java.util.List;
......
package com.subsidy.util; package com.show.util;
import cn.hutool.core.codec.Base64; import cn.hutool.core.codec.Base64;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS; import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.*; import java.io.*;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
......
package com.subsidy.util; package com.show.util;
import com.itextpdf.text.*; import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.BaseFont;
......
package com.subsidy.util; package com.show.util;
import lombok.Data; import lombok.Data;
import org.apache.poi.ss.formula.functions.T;
import java.util.List; import java.util.List;
......
package com.subsidy.util; package com.show.util;
import net.polyv.live.v1.util.LiveSignUtil; import net.polyv.live.v1.util.LiveSignUtil;
......
package com.subsidy.util; package com.show.util;
import cn.hutool.core.lang.UUID; import cn.hutool.core.lang.UUID;
......
package com.subsidy.util; package com.show.util;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.BoundListOperations; import org.springframework.data.redis.core.BoundListOperations;
......
package com.subsidy.util; package com.show.util;
public class RenSheJuConstant { public class RenSheJuConstant {
......
package com.subsidy.util; package com.show.util;
public class ResultMode { public class ResultMode {
......
package com.subsidy.util; package com.show.util;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
...@@ -11,8 +11,8 @@ import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; ...@@ -11,8 +11,8 @@ import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.http.MethodType; import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile; import com.aliyuncs.profile.IClientProfile;
import com.subsidy.common.configure.AliyunSmsProperties; import com.show.common.configure.AliyunSmsProperties;
import com.subsidy.common.exception.HttpException; import com.show.common.exception.HttpException;
import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
...@@ -21,8 +21,6 @@ import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombi ...@@ -21,8 +21,6 @@ import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombi
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Map;
/** /**
* 短信发送工具类 * 短信发送工具类
*/ */
......
package com.subsidy.util; package com.show.util;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.math.BigInteger;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.util.Arrays; import java.util.Arrays;
......
package com.subsidy.util; package com.show.util;
public class ShehuihuaConstant { public class ShehuihuaConstant {
......
package com.subsidy.util; package com.show.util;
import sun.misc.BASE64Encoder; import sun.misc.BASE64Encoder;
......
package com.subsidy.util; package com.show.util;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
......
package com.subsidy.util; package com.show.util;
import com.subsidy.common.configure.VODConfig; import com.show.common.configure.VODConfig;
import com.subsidy.common.exception.HttpException; import com.show.common.exception.HttpException;
import com.tencentcloudapi.common.Credential; import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException; import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile; import com.tencentcloudapi.common.profile.ClientProfile;
......
package com.subsidy.util.excel; package com.show.util.excel;
import java.lang.annotation.*; import java.lang.annotation.*;
......
package com.subsidy.util.excel; package com.show.util.excel;
import java.lang.annotation.*; import java.lang.annotation.*;
......
package com.subsidy.util.excel; package com.show.util.excel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.CharUtils; import org.apache.commons.lang3.CharUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils; import org.apache.commons.lang3.math.NumberUtils;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellRangeAddress; import org.apache.poi.hssf.util.CellRangeAddress;
......
package com.subsidy.util.tree; package com.show.util.tree;
import lombok.Data; import lombok.Data;
......
package com.subsidy.util.tree; package com.show.util.tree;
import lombok.Data; import lombok.Data;
......
package com.subsidy.util.tree; package com.show.util.tree;
public class SerialNumber{ public class SerialNumber{
......
package com.show.vo.administer;
import lombok.Data;
@Data
public class NamesVO {
private Long id;
private String name;
}
package com.show.vo.member;
import lombok.Data;
@Data
public class ApplyCenterSummaryVO {
private Integer totalCnt;
private Integer newWorkCnt;
private Integer updateCnt;
}
package com.show.vo.member;
import lombok.Data;
@Data
public class LoginVO {
private Long id;
private String userName;
private String aliasName;
private String image;
private String studyNo;
private Integer firstLogin;
private String activityStatus;
private String gender;
private String telephone;
private String idCard;
private String college;
private String major;
private String enrollmentYear;
private Long academyId;
private Long collegeId;
private Long majorId;
}
package com.show.vo.member;
import lombok.Data;
@Data
public class MemberBaseInoVO {
private Long id;
private String aliasName;
private String telephone;
private String college;
private String major;
private String image;
}
package com.show.vo.member;
import com.show.model.ShowLabelDictDO;
import lombok.Data;
import java.util.List;
@Data
public class MemberWorkGroupVO {
private Long id;
private String userName;
private String aliasName;
private String title;
private String submitDate;
private String submitStatus;
private String type;
private Long instanceId;
private List<ShowLabelDictDO> showLabelDictDOS;
}
package com.show.vo.oss;
import lombok.Data;
@Data
public class GetSecretVO {
private String key;
private String secret;
}
package com.show.vo.oss;
import lombok.Data;
@Data
public class UploadFileVO {
private String url;
}
package com.show.vo.work;
import lombok.Data;
import java.util.List;
@Data
public class CopiesVO {
private List<CopyDetailVO> users;
private List<CopyDetailVO> roles;
}
package com.show.vo.work;
import lombok.Data;
@Data
public class CopyDetailVO {
private Long id;
private String name;
private String copyType;
}
package com.show.vo.work;
import lombok.Data;
import java.util.List;
@Data
public class CreatorsVO {
private Long id;
private String aliasName;
private String college;
private String major;
private String image;
private Integer workCnt;
private List<PageWorksVO> pageWorksVOS;
}
package com.show.vo.work;
import com.show.model.WorkflowNode;
import lombok.Data;
import java.util.List;
@Data
public class FlowNodesVO extends WorkflowNode {
private List<NamesVO> namesVOS;
}
package com.show.vo.work;
import lombok.Data;
import java.util.List;
@Data
public class GetWorkflowHistoryVO {
private Long id;
private String nodeName;
private List<String> checkers;
private List<String> roles;
private String status;
private String approveOpinion;
private String endTime;
private String operator;
private String assigneeType;
private Long assignee;
private Long nodeId;
private Long checkId;
}
package com.show.vo.work;
import lombok.Data;
@Data
public class HotSpotWorksVO {
private Long id;
private String title;
private String homePage;
}
package com.show.vo.work;
import lombok.Data;
@Data
public class MyWorksOverviewVO {
private Integer totalCnt;
private Integer passCnt;
private Integer toCheckCnt;
}
package com.show.vo.work;
import com.show.model.ShowLabelDictDO;
import lombok.Data;
import java.util.List;
@Data
public class MyWorksVO {
private Long id;
private String title;
private String submitStatus;
private String userName;
private String aliasName;
private String submitDate;
private Integer viewCnt;
private String showStatus;
private String workDesc;
private String homePage;
private String works;
private Long instanceId;
private List<ShowLabelDictDO> showLabelDictDOS;
}
package com.show.vo.work;
import lombok.Data;
@Data
public class NamesVO {
private Long id;
private String name;
}
package com.show.vo.work;
import com.show.model.ShowLabelDictDO;
import lombok.Data;
import java.util.List;
@Data
public class OneWorkVO {
private Long id;
private String title;
private String aliasName;
private String userName;
private String works;
private String workDesc;
private String homePage;
private String submitDate;
private String submitStatus;
private String newStatus;
private String college;
private String major;
private String studyNo;
private String telephone;
private String className;
private Long instanceId;
private Long memberId;
private Integer viewCnt;
private String image;
private List<ShowLabelDictDO> showLabelDictDOS;
}
package com.show.vo.work;
import lombok.Data;
@Data
public class PageWorksVO {
private Long id;
private String title;
private String homePage;
private String aliasName;
private Long memberId;
private String image;
}
package com.subsidy.common.constant;
public class CourseNotification {
public static final String UNSENT = "待发送";
public static final String SENT = "已发送";
}
package com.subsidy.common.constant;
import lombok.Data;
@Data
public class ProjectReview {
/**
* 评分状态(对于评分)
*/
public static final String SUBMITTED = "已评审";
public static final String TO_SCORE = "待评审";
/**
* 评审状态(对于项目)
*/
// public static final String INNER_TO_REVIEWED = "待评审";
public static final String TO_REVIEWED = "待评审";
public static final String ASSIGNED = "已分配";
public static final String UNASSIGNED = "未分配";
public static final String REVIEW = "已评审";
}
package com.subsidy.common.constant;
import lombok.Data;
@Data
public class ProjectSchedule {
//报名阶段
public static final String REGISTER = "校内报名";
public static final String SEMI_FINAL_REVIEW = "市级复赛";
public static final String FINAL_REVIEW = "市级决赛";
}
package com.subsidy.common.constant;
import lombok.Data;
@Data
public class ProjectStatus {
public static final String UN_SUBMITTED = "填写中";
public static final String TO_REVIEW = "待评审";
public static final String WITHDRAWN = "已撤回";
public static final String FIRST_NOT_PASSED = "校内初审未通过";
public static final String SECOND_NOT_PASSED = "复赛审核未通过";
public static final String FIRST_REVIEW = "等待校内初审";
public static final String SECOND_REVIEW = "等待复赛审核";
public static final String THIRD_REVIEW = "等待决赛结果";
public static final String REMATCH_WINNING_AWARD = "优秀奖";
public static final String REMATCH_SILVER_AWARD = "银奖";
public static final String REMATCH_BRONZE_AWARD = "铜奖";
public static final String REMATCH_FINALS_GOLD_AWARD = "金奖";
}
package com.subsidy.common.constant;
import lombok.Data;
@Data
public class ProjectTrack {
public static final String COURSE_TRACK = "课程风采展示";
public static final String TEACH_TRACK = "教学技能赛道";
public static final String CONSULT_TRACK = "咨询辅导赛道";
}
package com.subsidy.common.constant;
/**
* <p>
* 项目组别
* </p>
*
* @author DengMin
* @since 2021/6/9
*/
public class ProjectType {
/**
* 赛道
*/
public static final String MAIN_TRACK = "主赛道";
public static final String SEED_TRACK = "种子赛道";
public static final String VOCATIONAL = "职教赛道";
/**
* 组别
*/
public static final String TECHNOLOGY_INNOVATION_GROUP = "科技创新";
public static final String CULTURAL_CREATIVE_GROUP = "文化创意";
public static final String VOCATIONAL_GROUP = "高职";
public static final String SECONDARY_GROUP = "中职";
}
# 本地环境配置 # 本地环境配置
spring.server.port=23509 spring.server.port=23510
# 数据源配置 # 数据源配置
spring.datasource.url=jdbc:mysql://116.62.57.92:3306/subsidy_new?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 spring.datasource.url=jdbc:mysql://116.62.57.92:3306/subsidy_new?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
......
# 生产环境配置 # 生产环境配置
spring.server.port=23509 spring.server.port=23510
# 数据源配置 # 数据源配置
spring.datasource.url=jdbc:mysql://rm-uf69w46mo6agw0ahao.mysql.rds.aliyuncs.com:3306/subsidy?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 #spring.datasource.url=jdbc:mysql://rm-uf69w46mo6agw0ahao.mysql.rds.aliyuncs.com:3306/subsidy?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.url=jdbc:mysql://rm-uf62202s176hufw8x0o.mysql.rds.aliyuncs.com:3306/subsidy?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=ykadmin_new spring.datasource.username=ykadmin_new
......
# 环境配置 # 环境配置
spring.profiles.active=dev spring.profiles.active=prod
#和CPU数 #和CPU数
spring.server.acceptorThreadCount=600 spring.server.acceptorThreadCount=600
spring.server.minSpareThreads=100 spring.server.minSpareThreads=100
......
...@@ -4,75 +4,11 @@ meishu.code-message[1010]=无效的令牌 ...@@ -4,75 +4,11 @@ meishu.code-message[1010]=无效的令牌
meishu.code-message[1011]=当前账户已在其他设备登录 meishu.code-message[1011]=当前账户已在其他设备登录
meishu.code-message[1012]=你已掉线,请重新登录 meishu.code-message[1012]=你已掉线,请重新登录
meishu.code-message[10002]=该用户已存在 meishu.code-message[10001]=该标签下仍有作品,无法删除
meishu.code-message[10003]=该用户已存在,请直接登录 meishu.code-message[10002]=已有此联系方式,请勿重复添加
meishu.code-message[10004]=验证码输入错误 meishu.code-message[10003]=该手机号已存在
meishu.code-message[10005]=该用户未注册,请先注册 meishu.code-message[10004]=验证码有误
meishu.code-message[10006]=该届赛事已存在
meishu.code-message[10007]=不在上传时间范围内
meishu.code-message[10008]=你已提交,不用再次提交
meishu.code-message[10009]=管理员不存在
meishu.code-message[10010]=PDF下载失败
meishu.code-message[10011]=发送失败,获取验证码频繁
# 学生
meishu.code-message[10020]=手机号已注册
meishu.code-message[10025]=验证码已过期
meishu.code-message[10021]=验证码不正确
meishu.code-message[10022]=输入的手机号和接收验证码手机号不一致
meishu.code-message[10023]=该身份证号已注册
meishu.code-message[10024]=手机号未注册
meishu.code-message[10026]=该账户已冻结
meishu.code-message[10027]=密码不正确
meishu.code-message[10028]=账号不存在
# 项目
meishu.code-message[10040]=项目已申请
meishu.code-message[10041]=项目负责人已存在
meishu.code-message[10042]=提交失败,您填写的项目信息不完整
meishu.code-message[10043]=项目已提交,请等待项目审核
meishu.code-message[10044]=撤回失败,您未申请项目
meishu.code-message[10045]=撤回失败,您的项目已进入审批状态
meishu.code-message[10046]=项目不存在
meishu.code-message[10047]=请选择要分配的项目
meishu.code-message[10048]=请选择要分配的评委
meishu.code-message[10049]=项目信息不完整
meishu.code-message[10050]=您不是该项目的评委
meishu.code-message[10051]=项目评分已提交
meishu.code-message[10052]=请先进行预评分
meishu.code-message[10053]=评委已分配了该项目
meishu.code-message[10054]=未指定赛事年份
meishu.code-message[10055]=创建失败,尚未处于大赛规定的报名时间
meishu.code-message[10056]=项目赛事已结束报名
meishu.code-message[10057]=赛事暂未开放
meishu.code-message[10058]=您已超过规定的项目上报数量
meishu.code-message[10059]=撤回失败,评委已进行了项目评分
meishu.code-message[10070]=撤回失败,评委不存在
meishu.code-message[10071]=撤回失败,项目未分配该评委
meishu.code-message[10072]=您已创建了类型的项目
meishu.code-message[10073]=撤回失败,项目已评审
meishu.code-message[10074]=不在评审时间内
meishu.code-message[10075]=评审已开始,不能撤回评委
meishu.code-message[10076]=请先设置评审起始时间
meishu.code-message[10077]=提交失败,有信息尚未填写
meishu.code-message[10078]=撤回失败,当前时间不在大赛时间段内
meishu.code-message[10079]=指导老师手机号不能重复
# 院校
meishu.code-message[10060]=账户不存在
meishu.code-message[10061]=密码错误
meishu.code-message[10062]=账户已存在
meishu.code-message[10063]=院校名称已存在
meishu.code-message[10064]=学校代码已存在
meishu.code-message[10065]=项目未分配评审
meishu.code-message[10066]=上传文件为空
meishu.code-message[10067]=系统已暂停登录功能
meishu.code-message[10068]=成员不能是负责人
meishu.code-message[10018]=不在大赛时间范围内
meishu.code-message[10019]=最多只能添加1位学校领队 meishu.code-message[50005]=审批流还未创建
meishu.code-message[10029]=最多只能添加9位观摩人员 meishu.code-message[50006]=昵称已存在
meishu.code-message[10030]=车牌号已存在 \ No newline at end of file
meishu.code-message[10031]=不在申报时间范围内
meishu.code-message[10032]=项目已淘汰
meishu.code-message[10033]=该项目没预约时间,无法修改
meishu.code-message[10034]=该时间段已被占用,请选择其他时间
meishu.code-message[10035]=该时间内已有项目,无法删除
\ No newline at end of file
...@@ -47,8 +47,8 @@ ...@@ -47,8 +47,8 @@
</appender> </appender>
<springProfile name="dev"> <springProfile name="dev">
<logger name="com.subsidy" level="debug" /> <logger name="com.show" level="debug" />
<logger name="com.subsidy" level="error" /> <logger name="com.show" level="error" />
<root level="INFO"> <root level="INFO">
<appender-ref ref="CONSOLE" /> <appender-ref ref="CONSOLE" />
<appender-ref ref="INFO_FILE" /> <appender-ref ref="INFO_FILE" />
...@@ -57,15 +57,15 @@ ...@@ -57,15 +57,15 @@
</springProfile> </springProfile>
<springProfile name="pre"> <springProfile name="pre">
<logger name="com.subsidy" level="debug" /> <logger name="com.show" level="debug" />
<logger name="com.subsidy" level="error" /> <logger name="com.show" level="error" />
<root level="INFO"> <root level="INFO">
<appender-ref ref="ERROR_FILE" /> <appender-ref ref="ERROR_FILE" />
</root> </root>
</springProfile> </springProfile>
<springProfile name="prod"> <springProfile name="prod">
<logger name="com.subsidy" level="error" /> <logger name="com.show" level="error" />
<root level="INFO"> <root level="INFO">
<appender-ref ref="ERROR_FILE" /> <appender-ref ref="ERROR_FILE" />
</root> </root>
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.show.mapper.AcademyDictMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.show.model.AcademyDictDO">
<id column="id" property="id" />
<result column="create_date" property="createDate" />
<result column="update_date" property="updateDate" />
<result column="delete_date" property="deleteDate" />
<result column="academy_name" property="academyName" />
<result column="short_name" property="shortName" />
<result column="location" property="location" />
<result column="academy_type" property="academyType" />
<result column="academy_code" property="academyCode" />
<result column="academy_logo" property="academyLogo" />
<result column="teacher_logo" property="teacherLogo" />
<result column="company_info_status" property="companyInfoStatus" />
<result column="position_logo" property="positionLogo" />
<result column="show_logo" property="showLogo" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
create_date,
update_date,
delete_date,
id, academy_name, short_name, location, academy_type, academy_code, academy_logo, teacher_logo, company_info_status, position_logo, show_logo
</sql>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.show.mapper.AcademyPermissionMappingMapper">
<select id="permissionMappingId" resultType="java.lang.Long">
SELECT
t.id
FROM
member t3
LEFT JOIN academy_permission_mapping t ON t3.academy_id = t.academy_id
LEFT JOIN academy_permissions_dict t2 ON t.permission_id = t2.id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
AND t2.NAME = #{name}
AND t2.permission_type = 1
AND t.workflow_flag = '是'
AND t3.id = #{memberId}
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.show.mapper.AcademyPlatformsMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.show.model.AcademyPlatformsDO">
<id column="id" property="id" />
<result column="create_date" property="createDate" />
<result column="update_date" property="updateDate" />
<result column="delete_date" property="deleteDate" />
<result column="academy_id" property="academyId" />
<result column="platform_name" property="platformName" />
<result column="logo" property="logo" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
create_date,
update_date,
delete_date,
id, academy_id, platform_name, logo
</sql>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.show.mapper.AcademyRoleDictMapper">
<select id="roles" parameterType="long" resultType="com.show.model.AcademyRoleDictDO">
SELECT
*
FROM
academy_role_dict t
WHERE
t.delete_date IS NULL
AND (
t.academy_id = #{academyId}
OR t.academy_id IS NULL)
and t.id not in (4,5)
<if test="academyId == 18">
and t.id not in(6,8,9,10)
</if>
</select>
<select id="checkRoles" resultType="com.show.model.AcademyRoleDictDO">
SELECT
*
FROM
academy_role_dict t
WHERE
t.delete_date IS NULL
and t.academy_id = #{academyId}
<if test="checkRole != null and checkRole != ''">
and t.check_role like concat('%',#{checkRole} ,'%')
</if>
</select>
<select id="rolesName" resultType="com.show.vo.work.NamesVO">
select t.id,role name from academy_role_dict t where t.delete_date is null
<if test="roleIds != null and roleIds.size>0">
and t.id in
<foreach collection="roleIds" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.AdministerMapper"> <mapper namespace="com.show.mapper.AdministerMapper">
<!-- 通用查询映射结果 --> <select id="names" resultType="com.show.vo.administer.NamesVO">
<resultMap id="BaseResultMap" type="com.subsidy.model.AdministerDO"> select id,user_name name from administer t where t.delete_date is null
<id column="id" property="id" /> <if test="ids != null and ids.size>0">
<result column="create_date" property="createDate" /> and t.id in
<result column="update_date" property="updateDate" /> <foreach collection="ids" item="item" index="index" open="(" close=")" separator=",">
<result column="delete_date" property="deleteDate" /> #{item}
<result column="telephone" property="telephone" /> </foreach>
<result column="account_name" property="accountName" /> </if>
<result column="password" property="password" /> </select>
<result column="company_id" property="companyId" />
<result column="labor_id" property="laborId" />
<result column="academy_id" property="academyId" />
<result column="college_id" property="collegeId" />
<result column="user_name" property="userName" />
<result column="img" property="img" />
<result column="status" property="status" />
<result column="role" property="role" />
<result column="last_role" property="lastRole" />
<result column="remark" property="remark" />
<result column="openid" property="openid" />
<result column="work_no" property="workNo" />
<result column="first_login" property="firstLogin" />
</resultMap>
<!-- 通用查询结果列 --> <select id="administerName" parameterType="long" resultType="string">
<sql id="Base_Column_List"> select user_name from administer t where t.delete_date is null
create_date, and t.id = #{id}
update_date, </select>
delete_date,
id, telephone, account_name, password, company_id, labor_id, academy_id, college_id, user_name, img, status, role, last_role, remark, openid, work_no, first_login
</sql>
</mapper> </mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.show.mapper.MemberMapper">
<select id="memberBaseIno" resultType="com.show.vo.member.MemberBaseInoVO">
SELECT
t2.id,
t2.alias_name,
t2.telephone,
t3.college,
t4.major,
t2.image
FROM
member t2
LEFT JOIN academy_college_dict t3 ON t2.college_id = t3.id
LEFT JOIN academy_major_dict t4 ON t2.major_id = t4.id
WHERE
t2.id = #{id}
</select>
<select id="login" resultType="com.show.vo.member.LoginVO">
SELECT
t.id,
t.user_name,
t.alias_name,
t.image,
t.gender,
t.study_no,
t.telephone,
t.id_card,
t.academy_id,
t.college_id,
t2.college,
t.major_id,
t3.major,
t.enrollment_year,
t.first_login,
t.activity_status
FROM
member t
left join academy_college_dict t2 on t.college_id = t2.id
left join academy_major_dict t3 on t.major_id = t3.id
where t.delete_date is null
and t.study_no = #{studyNo}
</select>
<select id="memberWorkGroup" resultType="com.show.vo.member.MemberWorkGroupVO">
SELECT
t.id,
t2.user_name,
t2.alias_name,
t.title,
t.submit_date,
t.submit_status,
t.new_status type,
t.instance_id
FROM
show_works t
left join member t2 on t.member_id = t2.id
WHERE
t.delete_date IS NULL
and t.member_id = #{memberId}
and t.new_status = #{applyType}
order by t.submit_status desc
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.show.mapper.ShowBannersMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.show.model.ShowBannersDO">
<id column="id" property="id" />
<result column="create_date" property="createDate" />
<result column="update_date" property="updateDate" />
<result column="delete_date" property="deleteDate" />
<result column="banner_url" property="bannerUrl" />
<result column="show_flag" property="showFlag" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
create_date,
update_date,
delete_date,
id, banner_url, show_flag
</sql>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.show.mapper.ShowLabelDictMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.show.model.ShowLabelDictDO">
<id column="id" property="id" />
<result column="create_date" property="createDate" />
<result column="update_date" property="updateDate" />
<result column="delete_date" property="deleteDate" />
<result column="label" property="label" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
create_date,
update_date,
delete_date,
id, label
</sql>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.show.mapper.ShowMemberContactsMapper">
<select id="memberCurrentContacts" resultType="string">
SELECT
t.contact_method
FROM
show_member_contacts t
WHERE
t.delete_date IS NULL
AND t.member_id = #{memberId}
</select>
<select id="deleteIds" resultType="long">
SELECT
t.id
FROM
show_member_contacts t
WHERE
t.delete_date IS NULL
AND t.member_id = #{memberId}
<if test="showMemberContactsDOS != null and showMemberContactsDOS.size>0">
and t.contact_method not in
<foreach collection="showMemberContactsDOS" item="item" index="index" open="(" close=")" separator=",">
#{item.contactMethod}
</foreach>
</if>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.show.mapper.ShowWorkLabelsMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.show.model.ShowWorkLabelsDO">
<id column="id" property="id" />
<result column="create_date" property="createDate" />
<result column="update_date" property="updateDate" />
<result column="delete_date" property="deleteDate" />
<result column="work_id" property="workId" />
<result column="label_id" property="labelId" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
create_date,
update_date,
delete_date,
id, work_id, label_id
</sql>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.show.mapper.ShowWorksMapper">
<update id="updateSubmitWork">
update show_works t set t.home_page = #{homePage},
t.works = #{works},
t.submit_status = '待审核',
t.work_desc = #{workDesc},
<if test="newStatus != null and newStatus != ''">
t.new_status = #{newStatus},
</if>
t.submit_date = now()
where t.id = #{id}
</update>
<select id="hotSpotWorks" resultType="com.show.vo.work.HotSpotWorksVO">
SELECT
t.id,
t.title,
t.home_page
FROM
show_works t
left join member t2 on t.member_id = t2.id
WHERE
t.delete_date IS NULL
AND t.hot_spot = '是'
and t2.academy_id = #{academyId}
and t.submit_status = '已通过'
and t.show_status = '已发布'
ORDER BY
t.delete_date DESC
</select>
<select id="pageWorks" resultType="com.show.vo.work.PageWorksVO">
SELECT
distinct t.id,
t.title,
t.home_page,
t2.alias_name,
t.member_id,
t2.image
FROM
show_works t
LEFT JOIN member t2 ON t.member_id = t2.id
LEFT JOIN show_work_labels t3 ON t.id = t3.work_id
WHERE
t.delete_date IS NULL
and t3.delete_date is null
AND t.submit_status = '已通过'
<if test="labelId != null and labelId != ''">
AND t3.label_id = #{labelId}
</if>
<if test="title != null and title != ''">
AND t.title like concat('%',#{title} ,'%')
</if>
and t2.academy_id = #{academyId}
ORDER BY
t.submit_status DESC,t.create_date desc
</select>
<select id="oneWork" resultType="com.show.vo.work.OneWorkVO">
SELECT
t.id,
t.title,
t2.alias_name,
t2.user_name,
t.works,
t.work_desc,
t.submit_date,
t.submit_status,
t3.college,
t4.major,
t.home_page,
t2.study_no,
t.instance_id,
t2.telephone,
t5.class_name,
t.member_id,
t.view_cnt,
t2.image
FROM
show_works t
LEFT JOIN member t2 ON t.member_id = t2.id
LEFT JOIN academy_college_dict t3 ON t2.college_id = t3.id
LEFT JOIN academy_major_dict t4 ON t2.major_id = t4.id
left join academy_class t5 on t2.class_id = t5.id
WHERE
t.delete_date IS NULL
AND t.id = #{id}
</select>
<select id="workLabels" resultType="com.show.model.ShowLabelDictDO">
SELECT
t2.*
FROM
show_work_labels t
LEFT JOIN show_label_dict t2 ON t.label_id = t2.id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
AND t.work_id = #{workId}
</select>
<select id="memberWorks" resultType="com.show.vo.work.PageWorksVO">
SELECT
t.id,
t.title,
t.home_page,
t2.alias_name
FROM
show_works t
LEFT JOIN member t2 ON t.member_id = t2.id
WHERE
t.delete_date IS NULL
AND t.submit_status = '已通过'
AND t.member_id = #{memberId}
ORDER BY
t.create_date DESC
</select>
<select id="memberWorksWithoutPage" resultType="com.show.vo.work.PageWorksVO">
SELECT
t.id,
t.title,
t.home_page,
t2.alias_name
FROM
show_works t
LEFT JOIN member t2 ON t.member_id = t2.id
WHERE
t.delete_date IS NULL
AND t.submit_status = '已通过'
AND t.member_id = #{memberId}
ORDER BY
t.delete_date DESC
</select>
<select id="myWorks" resultType="com.show.vo.work.MyWorksVO">
SELECT
t.id,
t.title,
t.submit_status,
t2.user_name,
t2.alias_name,
t.submit_date,
t.view_cnt,
t.show_status,
t.work_desc,
t.home_page,
t.instance_id,
t.works
FROM
show_works t
LEFT JOIN member t2 ON t.member_id = t2.id
WHERE
t.delete_date IS NULL
AND t.member_id = #{memberId}
<if test="submitStatus != null and submitStatus != ''">
and t.submit_status = #{submitStatus}
</if>
ORDER BY
t.create_date DESC
</select>
<select id="creators" resultType="com.show.vo.work.CreatorsVO">
SELECT
t.id,
t2.alias_name,
t3.college,
t4.major,
t2.image
FROM
(
SELECT DISTINCT
t2.id
FROM
show_works t
LEFT JOIN member t2 ON t.member_id = t2.id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
<if test="academyId != null and academyId != ''">
AND t2.academy_id = #{academyId}
</if>
<if test="aliasName != null and aliasName != ''">
AND t2.alias_name like concat('%',#{aliasName} ,'%')
</if>
) t
LEFT JOIN member t2 ON t.id = t2.id
LEFT JOIN academy_college_dict t3 ON t2.college_id = t3.id
LEFT JOIN academy_major_dict t4 ON t2.major_id = t4.id
ORDER BY
t2.active_date DESC
</select>
<select id="finishWork">
update show_works t set t.submit_status = '已结束' where t.id = #{id}
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.subsidy.mapper.AdministerMapper"> <mapper namespace="com.show.mapper.SmsVerifyCodeMapper">
<!-- 通用查询映射结果 --> <!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.subsidy.model.AdministerDO"> <resultMap id="BaseResultMap" type="com.show.model.SmsVerifyCodeDO">
<id column="id" property="id" /> <id column="id" property="id" />
<result column="create_date" property="createDate" /> <result column="create_date" property="createDate" />
<result column="update_date" property="updateDate" /> <result column="update_date" property="updateDate" />
<result column="delete_date" property="deleteDate" /> <result column="delete_date" property="deleteDate" />
<result column="telephone" property="telephone" /> <result column="telephone" property="telephone" />
<result column="account_name" property="accountName" /> <result column="verify_code" property="verifyCode" />
<result column="password" property="password" />
<result column="company_id" property="companyId" />
<result column="labor_id" property="laborId" />
<result column="academy_id" property="academyId" />
<result column="college_id" property="collegeId" />
<result column="user_name" property="userName" />
<result column="img" property="img" />
<result column="status" property="status" />
<result column="role" property="role" />
<result column="last_role" property="lastRole" />
<result column="remark" property="remark" />
<result column="openid" property="openid" />
<result column="work_no" property="workNo" />
<result column="first_login" property="firstLogin" />
</resultMap> </resultMap>
<!-- 通用查询结果列 --> <!-- 通用查询结果列 -->
...@@ -31,7 +17,7 @@ ...@@ -31,7 +17,7 @@
create_date, create_date,
update_date, update_date,
delete_date, delete_date,
id, telephone, account_name, password, company_id, labor_id, academy_id, college_id, user_name, img, status, role, last_role, remark, openid, work_no, first_login id, telephone, verify_code
</sql> </sql>
</mapper> </mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.show.mapper.WorkflowCopyToMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.show.model.WorkflowCopyToDO">
<id column="id" property="id" />
<result column="create_date" property="createDate" />
<result column="update_date" property="updateDate" />
<result column="delete_date" property="deleteDate" />
<result column="mapping_id" property="mappingId" />
<result column="copy_type" property="copyType" />
<result column="copy_id" property="copyId" />
<result column="version_code" property="versionCode" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
create_date,
update_date,
delete_date,
id, mapping_id, copy_type, copy_id, version_code
</sql>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.show.mapper.WorkflowInstanceMapper">
<select id="instanceCurrentNode" resultType="com.show.model.WorkflowNode">
SELECT
t2.*
FROM
workflow_instance t
LEFT JOIN workflow_node t2 ON t.current_node = t2.id
WHERE
t.delete_date IS NULL
AND t2.delete_date IS NULL
AND t.id = #{instanceId}
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.show.mapper.WorkflowNodeMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.show.model.WorkflowNode">
<id column="id" property="id" />
<result column="create_date" property="createDate" />
<result column="update_date" property="updateDate" />
<result column="delete_date" property="deleteDate" />
<result column="workflow_id" property="workflowId" />
<result column="version_code" property="versionCode" />
<result column="node_key" property="nodeKey" />
<result column="node_name" property="nodeName" />
<result column="node_type" property="nodeType" />
<result column="node_pattern" property="nodePattern" />
<result column="approve_type" property="approveType" />
<result column="approve_config" property="approveConfig" />
<result column="prev_node" property="prevNode" />
<result column="next_node" property="nextNode" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
create_date,
update_date,
delete_date,
id, workflow_id, version_code, node_key, node_name, node_type, node_pattern, approve_type, approve_config, prev_node, next_node
</sql>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.show.mapper.WorkflowTaskMapper">
<update id="finishTodoTask" parameterType="long">
UPDATE workflow_task t
SET t.STATUS = '已结束'
WHERE
t.instance_id = #{instanceId}
AND t.`status` = '待审核'
</update>
<update id="beforeTaskDone">
UPDATE workflow_task t
SET t.current_work = 0
WHERE
t.instance_id = #{instanceId}
</update>
<select id="administerRoleTasks" resultType="com.show.model.WorkflowTask">
SELECT
t2.*
FROM
academy_role_administer_mapping t
LEFT JOIN workflow_task t2 ON t.role_id = t2.assignee
WHERE
t.delete_date IS NULL
AND t.administer_id = #{userId}
AND t2.assignee_type = '角色'
AND t2.instance_id = #{instanceId}
AND t2.node_id = #{nodeId}
and t2.status = '待审核'
and t2.assignee = #{role}
</select>
<select id="administerNotInRoleTask" resultType="com.show.model.WorkflowTask">
SELECT
*
FROM
workflow_task t
WHERE
t.delete_date IS NULL
AND t.instance_id = #{instanceId}
AND t.node_id = #{nodeId}
AND t.assignee_type = '角色'
and t.check_id is null
AND t.assignee NOT IN (
SELECT
t2.assignee
FROM
academy_role_administer_mapping t
LEFT JOIN workflow_task t2 ON t.role_id = t2.assignee
WHERE
t.delete_date IS NULL
AND t.administer_id = #{userId}
AND t2.assignee_type = '角色'
AND t2.instance_id = #{instanceId}
AND t2.node_id = #{nodeId}
and t2.assignee = #{role}
)
</select>
<select id="studentTask" resultType="com.show.model.WorkflowTask">
SELECT
*
FROM
workflow_task t
WHERE
t.delete_date IS NULL
and t.instance_id = #{instanceId}
and t.node_name = '提交'
order by t.create_date
limit 1
</select>
<select id="updatedWorks" resultType="com.show.vo.work.GetWorkflowHistoryVO">
SELECT
t.id,
t.node_name,
t.node_id,
t.check_id,
t.`status`,
t.approve_opinion,
ifnull(t.update_date,t.create_date) endTime,
t.assignee,
t.assignee_type
FROM
workflow_task t
WHERE
t.delete_date IS NULL
AND t.instance_id = #{instanceId}
ORDER BY
t.id
</select>
</mapper>
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
outputDir=/src/main/java outputDir=/src/main/java
author=Tuyp author=Tuyp
# 父的包名 # 父的包名
setParent=com.subsidy setParent=com.show
# mapper.xml文件生成路径 # mapper.xml文件生成路径
mapperPath=/src/main/resources/mapper/ mapperPath=/src/main/resources/mapper/
# 数据库地址 # 数据库地址
......
{
"groups": [
{
"name": "meishu",
"type": "com.subsidy.common.configure.RemoteProperties",
"sourceType": "com.subsidy.common.configure.RemoteProperties"
},
{
"name": "polyv",
"type": "com.subsidy.common.configure.PolyvConfig",
"sourceType": "com.subsidy.common.configure.PolyvConfig"
},
{
"name": "qxueyou",
"type": "com.subsidy.common.configure.QXueYouConfig",
"sourceType": "com.subsidy.common.configure.QXueYouConfig"
},
{
"name": "renshe",
"type": "com.subsidy.common.configure.RenSheConfig",
"sourceType": "com.subsidy.common.configure.RenSheConfig"
},
{
"name": "sms",
"type": "com.subsidy.common.configure.AliyunSmsProperties",
"sourceType": "com.subsidy.common.configure.AliyunSmsProperties"
},
{
"name": "subsidy",
"type": "com.subsidy.common.configure.SubsidyConfig",
"sourceType": "com.subsidy.common.configure.SubsidyConfig"
},
{
"name": "vod",
"type": "com.subsidy.common.configure.VODConfig",
"sourceType": "com.subsidy.common.configure.VODConfig"
},
{
"name": "wechat",
"type": "com.subsidy.common.configure.WechatConfig",
"sourceType": "com.subsidy.common.configure.WechatConfig"
}
],
"properties": [
{
"name": "meishu.code-message",
"type": "java.util.Map<java.lang.Integer,java.lang.String>",
"sourceType": "com.subsidy.common.configure.RemoteProperties"
},
{
"name": "polyv.app-id",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.PolyvConfig"
},
{
"name": "polyv.app-secret",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.PolyvConfig"
},
{
"name": "polyv.secret-key",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.PolyvConfig"
},
{
"name": "polyv.user-id",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.PolyvConfig"
},
{
"name": "qxueyou.app-id",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.QXueYouConfig"
},
{
"name": "qxueyou.security-key",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.QXueYouConfig"
},
{
"name": "qxueyou.url",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.QXueYouConfig"
},
{
"name": "renshe.putuo",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.RenSheConfig"
},
{
"name": "renshe.secret-key",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.RenSheConfig"
},
{
"name": "renshe.url",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.RenSheConfig"
},
{
"name": "sms.access-key-id",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.AliyunSmsProperties"
},
{
"name": "sms.access-key-secret",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.AliyunSmsProperties"
},
{
"name": "sms.cpcode",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.AliyunSmsProperties"
},
{
"name": "sms.domain",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.AliyunSmsProperties"
},
{
"name": "sms.excode",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.AliyunSmsProperties"
},
{
"name": "sms.key",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.AliyunSmsProperties"
},
{
"name": "sms.product",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.AliyunSmsProperties"
},
{
"name": "sms.rcsapi",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.AliyunSmsProperties"
},
{
"name": "subsidy.app-id",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.SubsidyConfig"
},
{
"name": "subsidy.security-key",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.SubsidyConfig"
},
{
"name": "subsidy.url",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.SubsidyConfig"
},
{
"name": "vod.api",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.VODConfig"
},
{
"name": "vod.app-id",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.VODConfig"
},
{
"name": "vod.class-id",
"type": "java.lang.Integer",
"sourceType": "com.subsidy.common.configure.VODConfig"
},
{
"name": "vod.region",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.VODConfig"
},
{
"name": "vod.secret-id",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.VODConfig"
},
{
"name": "vod.secret-key",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.VODConfig"
},
{
"name": "wechat.app-id",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.WechatConfig"
},
{
"name": "wechat.app-secret",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.WechatConfig"
},
{
"name": "wechat.msg-url",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.WechatConfig"
},
{
"name": "wechat.template-id",
"type": "java.lang.String",
"sourceType": "com.subsidy.common.configure.WechatConfig"
}
],
"hints": []
}
\ No newline at end of file
# 本地环境配置
spring.server.port=23509
# 数据源配置
spring.datasource.url=jdbc:mysql://116.62.57.92:3306/subsidy_new?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
#spring.datasource.url=jdbc:mysql://rm-uf6rab73w0qg843opxo.mysql.rds.aliyuncs.com:3306/subsidy_test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=devloper
spring.datasource.password=dev@1553$
spring.datasource.druid.initialSize=5
spring.datasource.druid.minIdle=5
spring.datasource.druid.maxActive=200
spring.datasource.druid.maxWait=60000
spring.datasource.druid.timeBetweenEvictionRunsMillis=60000
spring.datasource.druid.minEvictableIdleTimeMillis=300000
spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL
spring.datasource.druid.testWhileIdle=true
spring.datasource.druid.testOnBorrow=false
spring.datasource.druid.testOnReturn=false
spring.datasource.druid.poolPreparedStatements=true
spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize=20
spring.datasource.druid.useGlobalDataSourceStat=true
# 控制台日志打印
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#spring.redis.host=r-uf6meywj6ysuehg148pd.redis.rds.aliyuncs.com
#spring.redis.password=r-uf6meywj6ysuehg148:Ykhl@208
#spring.redis.port=6379
#spring.redis.lettuce.pool.max-idle=16
#spring.redis.lettuce.pool.max-active=32
#spring.redis.lettuce.pool.min-idle=8
#spring.application.name=spring-boot-mongodb
## mongodb
##spring.data.mongodb.uri=mongodb://47.97.19.66:27017/subsidy
#spring.data.mongodb.username=root
#spring.data.mongodb.password=123456
##spring.data.mongodb.authentication-database=subsidy
#spring.data.mongodb.database=subsidy
#spring.data.mongodb.host=47.97.19.66
#spring.data.mongodb.port=27017
spring.redis.host=47.97.19.66
spring.redis.password=Ykhl@208
spring.redis.port=6389
spring.redis.lettuce.pool.max-idle=16
spring.redis.lettuce.pool.max-active=32
spring.redis.lettuce.pool.min-idle=8
qxueyou.appId=qxywz5nnWMI77CM3Tx
qxueyou.securityKey=626737T1-65K0-5xC2-0Y0V-2Aq95qxy
qxueyou.url=https://dev.qxueyou.com/auth/user/token
renshe.url = https://test.shzypxy.com
renshe.secretKey = ad927f0b-6a39-43a7-bac7-163baef1fff7
renshe.putuo = http://180.167.195.117:18015/ddproject
#微信公众号
wechat.appId=wx9e107b8f68c91a0c
wechat.appSecret=d772631f098ef7b597293c22899671e0
wechat.msgUrl=t.youkehulian.cn
wechat.templateId=GzQw2jCqpDMviTRR4vpqBSQXti2GtO0LHeWiLCvxN9U
\ No newline at end of file
# 生产环境配置
spring.server.port=23509
# 数据源配置
spring.datasource.url=jdbc:mysql://rm-uf69w46mo6agw0ahao.mysql.rds.aliyuncs.com:3306/subsidy?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=ykadmin_new
spring.datasource.password=youkedb608@good
spring.datasource.druid.initialSize=5
spring.datasource.druid.minIdle=5
spring.datasource.druid.maxActive=20
spring.datasource.druid.maxWait=60000
spring.datasource.druid.timeBetweenEvictionRunsMillis=60000
spring.datasource.druid.minEvictableIdleTimeMillis=300000
spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL
spring.datasource.druid.testWhileIdle=true
spring.datasource.druid.testOnBorrow=false
spring.datasource.druid.testOnReturn=false
spring.datasource.druid.poolPreparedStatements=true
spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize=20
spring.datasource.druid.useGlobalDataSourceStat=true
spring.datasource.druid.kill-when-socket-read-timeout=true
# 控制台日志打印
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
wechat.appId=wx7ccddebb8917ac25
wechat.appSecret=c0d0b367c80c47014ffabeff55081b6e
wechat.templateId=sP0Ycgtfie1g4Pfx0K8sjW9HZ9Xm-Tqq1ketofZWgQc
wechat.msgUrl=a.ykhl.com
wechat.miniprogram_state=formal
# 环境配置
spring.profiles.active=dev
#和CPU数
spring.server.acceptorThreadCount=600
spring.server.minSpareThreads=100
spring.server.maxSpareThreads=500
spring.server.maxThreads=500
spring.server.maxConnections=1000
#10秒超时
spring.server.connectionTimeout=20000
spring.server.protocol=org.apache.coyote.http11.Http11AprProtocol
spring.server.redirectPort=8443
spring.server.compression=on
#文件请求大小
spring.server.MaxFileSize=300MB
spring.server.MaxRequestSize=500MB
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=50MB
# 文件编码 UTF8
spring.mandatory-file-encoding=UTF-8
spring.jackson.time-zone=GMT+8
# 404 交给异常处理器处理
spring.mvc.throw-exception-if-no-handler-found=true
# 关闭静态资源的映射
spring.resources.add-mappings=false
# 关闭banner打印
mybatis-plus.global-config.banner=false
# mybatis-plus相关配置
mybatis-plus.mapper-locations=classpath:mapper/*.xml
# 是否开启自动驼峰命名规则映射
mybatis-plus.configuration.map-underscore-to-camel-case=true
# 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
mybatis-plus.configuration.call-setters-on-nulls=true
# 逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=NOW()
mybatis-plus.global-config.db-config.logic-not-delete-value=NULL
#日志配置
logging.config=classpath:logback-spring.xml
#ehcache缓存配置
spring.cache.type=ehcache
spring.cache.ehcache.config=classpath:ehcache.xml
# 阿里云短信
sms.product=Dysmsapi
sms.domain=dysmsapi.aliyuncs.com
sms.accessKeyId=LTAI5tLUBG4B6QxhHrhddc7p
sms.accessKeySecret=eber38QGHZixTQ6bFfrd80kbg67jIP
#wechat.app-id=wx7785293ff5e31f14
#wechat.app-secret=25d57cad61fc1b45b3afa46d4c35e8f6
#wechat.agentId=1000008
vod.appId=1302252447
vod.secretId=AKIDOcePHvZ2C5VeYHQGSO5aqtlNxJQLqfz2
vod.secretKey=vjHYRmrfDbw0rWxA7oFcj7F8lDPKCm8E
vod.api=vod.tencentcloudapi.com
vod.region=ap-shanghai
vod.classId=848920
subsidy.appId=qxywz5nnWMI7ABCS
subsidy.securityKey=626737T1-65K0-5xC2-0Y0V-2Aq9QUAJ
subsidy.url=http://subsidy.youkehulian.cn/auth/user/token
meishu.code-message[0]=成功
meishu.code-message[1010]=无效的令牌
meishu.code-message[1011]=当前账户已在其他设备登录
meishu.code-message[1012]=你已掉线,请重新登录
meishu.code-message[10002]=该用户已存在
meishu.code-message[10003]=该用户已存在,请直接登录
meishu.code-message[10004]=验证码输入错误
meishu.code-message[10005]=该用户未注册,请先注册
meishu.code-message[10006]=该届赛事已存在
meishu.code-message[10007]=不在上传时间范围内
meishu.code-message[10008]=你已提交,不用再次提交
meishu.code-message[10009]=管理员不存在
meishu.code-message[10010]=PDF下载失败
meishu.code-message[10011]=发送失败,获取验证码频繁
# 学生
meishu.code-message[10020]=手机号已注册
meishu.code-message[10025]=验证码已过期
meishu.code-message[10021]=验证码不正确
meishu.code-message[10022]=输入的手机号和接收验证码手机号不一致
meishu.code-message[10023]=该身份证号已注册
meishu.code-message[10024]=手机号未注册
meishu.code-message[10026]=该账户已冻结
meishu.code-message[10027]=密码不正确
meishu.code-message[10028]=账号不存在
# 项目
meishu.code-message[10040]=项目已申请
meishu.code-message[10041]=项目负责人已存在
meishu.code-message[10042]=提交失败,您填写的项目信息不完整
meishu.code-message[10043]=项目已提交,请等待项目审核
meishu.code-message[10044]=撤回失败,您未申请项目
meishu.code-message[10045]=撤回失败,您的项目已进入审批状态
meishu.code-message[10046]=项目不存在
meishu.code-message[10047]=请选择要分配的项目
meishu.code-message[10048]=请选择要分配的评委
meishu.code-message[10049]=项目信息不完整
meishu.code-message[10050]=您不是该项目的评委
meishu.code-message[10051]=项目评分已提交
meishu.code-message[10052]=请先进行预评分
meishu.code-message[10053]=评委已分配了该项目
meishu.code-message[10054]=未指定赛事年份
meishu.code-message[10055]=创建失败,尚未处于大赛规定的报名时间
meishu.code-message[10056]=项目赛事已结束报名
meishu.code-message[10057]=赛事暂未开放
meishu.code-message[10058]=您已超过规定的项目上报数量
meishu.code-message[10059]=撤回失败,评委已进行了项目评分
meishu.code-message[10070]=撤回失败,评委不存在
meishu.code-message[10071]=撤回失败,项目未分配该评委
meishu.code-message[10072]=您已创建了类型的项目
meishu.code-message[10073]=撤回失败,项目已评审
meishu.code-message[10074]=不在评审时间内
meishu.code-message[10075]=评审已开始,不能撤回评委
meishu.code-message[10076]=请先设置评审起始时间
meishu.code-message[10077]=提交失败,有信息尚未填写
meishu.code-message[10078]=撤回失败,当前时间不在大赛时间段内
meishu.code-message[10079]=指导老师手机号不能重复
# 院校
meishu.code-message[10060]=账户不存在
meishu.code-message[10061]=密码错误
meishu.code-message[10062]=账户已存在
meishu.code-message[10063]=院校名称已存在
meishu.code-message[10064]=学校代码已存在
meishu.code-message[10065]=项目未分配评审
meishu.code-message[10066]=上传文件为空
meishu.code-message[10067]=系统已暂停登录功能
meishu.code-message[10068]=成员不能是负责人
meishu.code-message[10018]=不在大赛时间范围内
meishu.code-message[10019]=最多只能添加1位学校领队
meishu.code-message[10029]=最多只能添加9位观摩人员
meishu.code-message[10030]=车牌号已存在
meishu.code-message[10031]=不在申报时间范围内
meishu.code-message[10032]=项目已淘汰
meishu.code-message[10033]=该项目没预约时间,无法修改
meishu.code-message[10034]=该时间段已被占用,请选择其他时间
meishu.code-message[10035]=该时间内已有项目,无法删除
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">
<diskStore path="java.io.tmpdir" />
<defaultCache eternal="false"
maxElementsInMemory="1000"
overflowToDisk="false"
diskPersistent="true"
timeToIdleSeconds="0"
timeToLiveSeconds="600"
memoryStoreEvictionPolicy="LRU" />
<!--
maxElementsInMemory 缓存最大个数,若放入Cache中的元素超过这个数值,则有以下两种情况
1)若overflowToDisk=true,则会将Cache中多出的元素放入磁盘文件中
2)若overflowToDisk=false,则根据memoryStoreEvictionPolicy策略替换Cache中原有的元素
eternal 缓存中对象是否永久有效
timeToIdleSeconds 缓存数据在失效前的允许闲置时间(单位:秒),仅当eternal=false时使用,默认值是0表示可闲置时间无穷大,若超过这个时间没有访问此Cache中的某个元素,那么此元素将被从Cache中清除
timeToLiveSeconds 缓存数据的总的存活时间(单位:秒),仅当eternal=false时使用,从创建开始计时,失效结束
overflowToDisk 内存不足时,是否启用磁盘缓存
diskPersistent 是否缓存虚拟机重启期数据
maxBytesLocalHeap 限制堆内存字节大小
-->
<!-- 云点播数据统计缓存 -->
<cache name="CDNStatDetails"
maxElementsInMemory="10000"
eternal="false"
overflowToDisk="false"
diskPersistent="false"
timeToIdleSeconds="0"
timeToLiveSeconds="28800"
memoryStoreEvictionPolicy="LRU"/>
<!-- 普通数据缓存 -->
<cache name="ResultData"
maxElementsInMemory="10000"
eternal="false"
overflowToDisk="false"
diskPersistent="false"
timeToIdleSeconds="0"
timeToLiveSeconds="7200"
memoryStoreEvictionPolicy="LRU"/>
</ehcache>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<property name="LOG_PATH" value="logs/" />
<property name="APP_NAME" value="springboot-logback" />
<contextName>${APP_NAME}</contextName>
<jmxConfigurator />
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>
<encoder>
<pattern>%d [%t] %5p %c:%L - %m%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_PATH}${APP_NAME}-info.log</File>
<encoder>
<pattern>%d [%t] %5p %c:%L - %m%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<FileNamePattern>${LOG_PATH}${APP_NAME}/info/%d{yyyy-MM-dd}-%i.log.gz
</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
</appender>
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_PATH}${APP_NAME}-error.log</File>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>error</level>
</filter>
<encoder>
<pattern>%d [%t] %5p %c:%L - %m%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>256MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<FileNamePattern>${LOG_PATH}${APP_NAME}/error/%d{yyyy-MM-dd}-%i.log.gz
</FileNamePattern>
<MaxHistory>180</MaxHistory>
</rollingPolicy>
</appender>
<springProfile name="dev">
<logger name="com.subsidy" level="debug" />
<logger name="com.subsidy" level="error" />
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="INFO_FILE" />
<appender-ref ref="ERROR_FILE" />
</root>
</springProfile>
<springProfile name="pre">
<logger name="com.subsidy" level="debug" />
<logger name="com.subsidy" level="error" />
<root level="INFO">
<appender-ref ref="ERROR_FILE" />
</root>
</springProfile>
<springProfile name="prod">
<logger name="com.subsidy" level="error" />
<root level="INFO">
<appender-ref ref="ERROR_FILE" />
</root>
</springProfile>
</configuration>
\ No newline at end of file
# 此处为本项目src所在路径(代码生成器输出路径)
outputDir=/src/main/java
author=Tuyp
# 父的包名
setParent=com.subsidy
# mapper.xml文件生成路径
mapperPath=/src/main/resources/mapper/
# 数据库地址
url=jdbc:mysql://116.62.57.92:3306/subsidy_new?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true&useAffectedRows=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
driverName=com.mysql.cj.jdbc.Driver
userName=devloper
password=dev@1553$
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="logImpl" value="SLF4J"/>
<!-- 开启驼峰命名转换 Table(create_date) -> Entity(createTime) -->
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
</configuration>
package ${package.Controller};
import org.springframework.web.bind.annotation.RequestMapping;
<#if restControllerStyle>
import org.springframework.web.bind.annotation.RestController;
<#else>
import org.springframework.stereotype.Controller;
</#if>
<#if superControllerClassPackage??>
import ${superControllerClassPackage};
</#if>
import io.swagger.annotations.Api;
/**
* <p>
* ${table.comment!} 前端控制器
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if restControllerStyle>
@RestController
@Api(tags = "${table.comment!}")
<#else>
@Controller
</#if>
@RequestMapping("<#if package.ModuleName?? && package.ModuleName != "">/${package.ModuleName}</#if>/<#if controllerMappingHyphenStyle??>${controllerMappingHyphen}<#else>${table.entityPath}</#if>")
<#if kotlin>
class ${table.controllerName}<#if superControllerClass??> : ${superControllerClass}()</#if>
<#else>
<#if superControllerClass??>
public class ${table.controllerName} extends ${superControllerClass} {
<#else>
public class ${table.controllerName} {
</#if>
}
</#if>
package ${package.Entity};
<#list table.importPackages as pkg>
import ${pkg};
</#list>
<#if swagger2>
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
</#if>
<#if entityLombokModel>
import lombok.Data;
import lombok.EqualsAndHashCode;
<#if chainModel>
import lombok.experimental.Accessors;
</#if>
</#if>
/**
* <p>
* ${table.comment!}
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if entityLombokModel>
@Data
<#if superEntityClass??>
@EqualsAndHashCode(callSuper = true)
<#else>
@EqualsAndHashCode(callSuper = false)
</#if>
<#if chainModel>
@Accessors(chain = true)
</#if>
</#if>
<#if table.convert>
@TableName("${table.name}")
</#if>
<#if swagger2>
@ApiModel(value="${entity}对象", description="${table.comment!}")
</#if>
<#if superEntityClass??>
public class ${entity} extends ${superEntityClass}<#if activeRecord><${entity}></#if> {
<#elseif activeRecord>
public class ${entity} extends Model<${entity}> {
<#else>
public class ${entity} implements Serializable {
</#if>
<#if entitySerialVersionUID>
private static final long serialVersionUID = 1L;
</#if>
<#-- ---------- BEGIN 字段循环遍历 ---------->
<#list table.fields as field>
<#if field.keyFlag>
<#assign keyPropertyName="${field.propertyName}"/>
</#if>
<#if field.comment!?length gt 0>
<#if swagger2>
@ApiModelProperty(value = "${field.comment}")
<#else>
/**
* ${field.comment}
*/
</#if>
</#if>
<#if field.keyFlag>
<#-- 主键 -->
<#if field.keyIdentityFlag>
@TableId(value = "${field.annotationColumnName}", type = IdType.AUTO)
<#elseif idType??>
@TableId(value = "${field.annotationColumnName}", type = IdType.${idType})
<#elseif field.convert>
@TableId("${field.annotationColumnName}")
</#if>
<#-- 普通字段 -->
<#elseif field.fill??>
<#-- ----- 存在字段填充设置 ----->
<#if field.convert>
@TableField(value = "${field.annotationColumnName}", fill = FieldFill.${field.fill})
<#else>
@TableField(fill = FieldFill.${field.fill})
</#if>
<#elseif field.convert>
@TableField("${field.annotationColumnName}")
</#if>
<#-- 乐观锁注解 -->
<#if (versionFieldName!"") == field.name>
@Version
</#if>
<#-- 逻辑删除注解 -->
<#if (logicDeleteFieldName!"") == field.name>
@TableLogic
</#if>
private ${field.propertyType} ${field.propertyName};
</#list>
<#------------ END 字段循环遍历 ---------->
<#if !entityLombokModel>
<#list table.fields as field>
<#if field.propertyType == "boolean">
<#assign getprefix="is"/>
<#else>
<#assign getprefix="get"/>
</#if>
public ${field.propertyType} ${getprefix}${field.capitalName}() {
return ${field.propertyName};
}
<#if chainModel>
public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
<#else>
public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) {
</#if>
this.${field.propertyName} = ${field.propertyName};
<#if chainModel>
return this;
</#if>
}
</#list>
</#if>
<#if entityColumnConstant>
<#list table.fields as field>
public static final String ${field.name?upper_case} = "${field.name}";
</#list>
</#if>
<#if activeRecord>
@Override
protected Serializable pkVal() {
<#if keyPropertyName??>
return this.${keyPropertyName};
<#else>
return null;
</#if>
}
</#if>
<#if !entityLombokModel>
@Override
public String toString() {
return "${entity}{" +
<#list table.fields as field>
<#if field_index==0>
"${field.propertyName}=" + ${field.propertyName} +
<#else>
", ${field.propertyName}=" + ${field.propertyName} +
</#if>
</#list>
"}";
}
</#if>
}
package ${package.Mapper};
import ${package.Entity}.${entity};
import ${superMapperClassPackage};
import org.springframework.stereotype.Repository;
/**
* <p>
* ${table.comment!} Mapper 接口
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if kotlin>
interface ${table.mapperName} : ${superMapperClass}<${entity}>
<#else>
@Repository
public interface ${table.mapperName} extends ${superMapperClass}<${entity}> {
}
</#if>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${package.Mapper}.${table.mapperName}">
<#if enableCache>
<!-- 开启二级缓存 -->
<cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
</#if>
<#if baseResultMap>
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="${package.Entity}.${entity}">
<#list table.fields as field>
<#if field.keyFlag><#--生成主键排在第一位-->
<id column="${field.name}" property="${field.propertyName}" />
</#if>
</#list>
<#list table.commonFields as field><#--生成公共字段 -->
<result column="${field.name}" property="${field.propertyName}" />
</#list>
<#list table.fields as field>
<#if !field.keyFlag><#--生成普通字段 -->
<result column="${field.name}" property="${field.propertyName}" />
</#if>
</#list>
</resultMap>
</#if>
<#if baseColumnList>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
<#list table.commonFields as field>
${field.columnName},
</#list>
${table.fieldNames}
</sql>
</#if>
</mapper>
package ${package.Service};
import ${package.Entity}.${entity};
import ${superServiceClassPackage};
/**
* <p>
* ${table.comment!} 服务类
* </p>
*
* @author ${author}
* @since ${date}
*/
<#if kotlin>
interface ${table.serviceName} : ${superServiceClass}<${entity}>
<#else>
public interface ${table.serviceName} extends ${superServiceClass}<${entity}> {
}
</#if>
package ${package.ServiceImpl};
import ${package.Entity}.${entity};
import ${package.Mapper}.${table.mapperName};
import ${package.Service}.${table.serviceName};
import ${superServiceImplClassPackage};
import org.springframework.stereotype.Service;
/**
* <p>
* ${table.comment!} 服务实现类
* </p>
*
* @author ${author}
* @since ${date}
*/
@Service
<#if kotlin>
open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} {
}
<#else>
public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}> implements ${table.serviceName} {
}
</#if>
This file is too large to display.
No preview for this file type
version=0.0.1
groupId=com.subsidy
artifactId=subsidy
com\subsidy\util\BaseModel.class
com\subsidy\common\constant\CourseNotification.class
com\subsidy\dto\project\DataOverviewDTO.class
com\subsidy\service\CollegeFileService.class
com\subsidy\util\JwtUtil.class
com\subsidy\dto\project\ProjectCollegeListDTO.class
com\subsidy\util\HttpUtil$2.class
com\subsidy\service\impl\CollegesDictServiceImpl.class
com\subsidy\controller\MatchDictController.class
com\subsidy\model\PermissionsDO.class
com\subsidy\vo\project\ProjectPageVO.class
com\subsidy\controller\TeacherController.class
com\subsidy\mapper\ProjectMembersMapper.class
com\subsidy\controller\ProjectJudgeController.class
com\subsidy\common\configure\MyTomcat.class
com\subsidy\common\configure\RemoteProperties.class
com\subsidy\service\PermissionsService.class
com\subsidy\dto\project\TeamMemberDTO.class
com\subsidy\util\RandomUtil.class
com\subsidy\vo\judge\ProjectReviewVO.class
com\subsidy\vo\project\ProjectDataOverview.class
com\subsidy\dto\project\ExportTeachListVO.class
com\subsidy\service\impl\MatchDictServiceImpl.class
com\subsidy\util\Base64Util.class
com\subsidy\vo\college\ExportSchoolProjectSummaryVO.class
com\subsidy\service\MatchDictService.class
com\subsidy\util\ExcelFormatUtils.class
com\subsidy\dto\projectJudge\ImportJudge.class
com\subsidy\util\CodeGenerator.class
com\subsidy\vo\projectReviewPeriod\ProjectReviewPeriodVO.class
com\subsidy\dto\college\GetCollegesListDTO.class
com\subsidy\util\excel\ExcelUtil.class
com\subsidy\dto\project\UploadVodsDTO.class
com\subsidy\util\HttpUtil$DataParse.class
com\subsidy\model\SmsVerifyCodeDO.class
com\subsidy\vo\project\VocationalReviewNumVO.class
com\subsidy\dto\teacher\RegisterDTO.class
com\subsidy\util\CodeGenerator$2.class
com\subsidy\vo\review\ReMatchReviewVO.class
com\subsidy\mapper\ProjectMapper.class
com\subsidy\util\HttpUtil$1.class
com\subsidy\model\ProjectDO.class
com\subsidy\dto\project\EditStatusDTO.class
com\subsidy\util\MyBeanUtils.class
com\subsidy\dto\project\ExportProjectDTO.class
com\subsidy\util\Signature.class
com\subsidy\util\SMSUtils.class
com\subsidy\model\CollegeFileDO.class
com\subsidy\vo\college\RecentFileVO.class
com\subsidy\dto\review\ProjectReviewDTO.class
com\subsidy\dto\review\ProjectReviewScoreDTO.class
com\subsidy\common\constant\ProjectTrack.class
com\subsidy\vo\project\ProjectJudgeVO.class
com\subsidy\vo\project\UploadVodsVO.class
com\subsidy\service\impl\ProjectMembersServiceImpl.class
com\subsidy\vo\ExcelFieldVO.class
com\subsidy\model\ProjectJudgeDO.class
com\subsidy\dto\project\UpdateProjectDTO.class
com\subsidy\dto\project\MentorDTO.class
com\subsidy\service\ProjectService.class
com\subsidy\vo\project\VocationalNumVO.class
com\subsidy\common\configure\WebLogAspect.class
com\subsidy\controller\SmsVerifyCodeController.class
com\subsidy\controller\PermissionsController.class
com\subsidy\service\ProjectConsultService.class
com\subsidy\controller\AdministerController.class
com\subsidy\util\RenSheJuConstant.class
com\subsidy\common\configure\QXueYouConfig.class
com\subsidy\dto\oss\GetSecretVO.class
com\subsidy\util\MyStringUtils.class
com\subsidy\service\ProjectMembersService.class
com\subsidy\model\CollegesDictDO.class
com\subsidy\vo\college\CollegesVO.class
com\subsidy\mapper\AdministerMapper.class
com\subsidy\vo\oss\UploadFileVO.class
com\subsidy\util\ActivityDetectionUtils.class
com\subsidy\mapper\PermissionsMapper.class
com\subsidy\common\configure\WechatConfig.class
com\subsidy\vo\college\MatchCollegeVodsVO.class
com\subsidy\util\excel\ExcelColumnUtil.class
com\subsidy\util\HttpUtil.class
com\subsidy\model\ProjectReviewDO.class
com\subsidy\common\configure\SubsidyConfig.class
com\subsidy\vo\review\SchoolReviewVO.class
com\subsidy\vo\review\SendNoticeVO.class
com\subsidy\vo\project\RecentVodVO.class
com\subsidy\util\SecretUtils.class
com\subsidy\vo\project\ReviewListVO.class
com\subsidy\dto\period\ProjectReviewPeriodDTO.class
com\subsidy\common\configure\MyTomcat$GwsTomcatConnectionCustomizer.class
com\subsidy\controller\ProjectController.class
com\subsidy\util\tree\Node.class
com\subsidy\dto\judge\ProjectJudgePageDTO.class
com\subsidy\dto\project\GetSeedTrackMatchPageDTO.class
com\subsidy\mapper\TeacherMapper.class
com\subsidy\util\ResultMode.class
com\subsidy\controller\MessageController.class
com\subsidy\common\RedisPrefixConstant.class
com\subsidy\vo\project\ProjectAssignNumVO.class
com\subsidy\vo\project\SignatureVO.class
com\subsidy\common\constant\Code.class
com\subsidy\common\ResponseVO.class
com\subsidy\dto\review\ReviewScoreDTO.class
com\subsidy\vo\project\SeedTrackProjectPageVO.class
com\subsidy\service\AdministerService.class
com\subsidy\service\impl\MessageServiceImpl.class
com\subsidy\common\ResponseData.class
com\subsidy\MeishuApplication.class
com\subsidy\model\TeacherDO.class
com\subsidy\service\ProjectReviewService.class
com\subsidy\common\constant\ProjectSchedule.class
com\subsidy\mapper\CollegeFileMapper.class
com\subsidy\dto\administer\AdministerPageDTO.class
com\subsidy\vo\review\FinalsReviewVO.class
com\subsidy\common\constant\ProjectType.class
com\subsidy\service\impl\ProjectReviewPeriodServiceImpl.class
com\subsidy\mapper\ProjectReviewPeriodMapper.class
com\subsidy\util\excel\ExcelColumn.class
com\subsidy\common\configure\RestTemplateConfig.class
com\subsidy\dto\college\FileManagementDTO.class
com\subsidy\dto\review\CancelReviewDTO.class
com\subsidy\util\ConstantUtils.class
com\subsidy\dto\match\SelectListPageDTO.class
com\subsidy\service\impl\TeacherServiceImpl.class
com\subsidy\common\constant\VodConstant.class
com\subsidy\service\ProjectJudgeService.class
com\subsidy\mapper\ProjectConsultMapper.class
com\subsidy\dto\teacher\LoginVO.class
com\subsidy\mapper\MessageMapper.class
com\subsidy\common\constant\AttendanceConstant.class
com\subsidy\dto\project\SeedTrackProjectNumDTO.class
META-INF\spring-configuration-metadata.json
com\subsidy\common\constant\WxConstant.class
com\subsidy\service\impl\ProjectJudgeServiceImpl.class
com\subsidy\common\exception\HttpException.class
com\subsidy\util\PageHelper.class
com\subsidy\vo\administer\PermissionVO.class
com\subsidy\dto\review\ProjectReviewPageDTO.class
com\subsidy\common\configure\RestTemplateConfig$WxMappingJackson2HttpMessageConverter.class
com\subsidy\dto\review\SubmittedDTO.class
com\subsidy\model\ProjectReviewPeriodDO.class
com\subsidy\vo\college\FileManagementVO.class
com\subsidy\controller\ProjectReviewController.class
com\subsidy\common\configure\PolyvConfig.class
com\subsidy\util\DudaoConstant.class
com\subsidy\mapper\ProjectReviewMapper.class
com\subsidy\common\configure\MybatisPlusConfig.class
com\subsidy\controller\ProjectMembersController.class
com\subsidy\util\PDFUtil.class
com\subsidy\mapper\CollegesDictMapper.class
com\subsidy\common\exception\GlobalExceptionHandler.class
com\subsidy\dto\project\ProjectListPageDTO.class
com\subsidy\util\AliyunSmsUtil.class
com\subsidy\common\constant\MemberType.class
com\subsidy\vo\project\SeedTrackProjectDetailVO.class
com\subsidy\dto\project\MatchCollegeVodsDTO.class
com\subsidy\common\configure\RedisConfig.class
com\subsidy\vo\project\ProjectMemberVO.class
com\subsidy\model\AdministerDO.class
com\subsidy\vo\college\GetCollegeInfoVO.class
com\subsidy\common\constant\ProjectReview.class
com\subsidy\util\OSSUtils.class
com\subsidy\vo\project\OneProjectVO.class
com\subsidy\util\TestMain.class
com\subsidy\vo\college\CollegeInfoVO.class
com\subsidy\common\constant\Platform.class
com\subsidy\service\impl\ProjectConsultServiceImpl.class
com\subsidy\mapper\ProjectJudgeMapper.class
com\subsidy\mapper\SmsVerifyCodeMapper.class
com\subsidy\service\impl\AdministerServiceImpl.class
com\subsidy\service\impl\ProjectServiceImpl.class
com\subsidy\dto\review\SetReviewDTO.class
com\subsidy\common\constant\SmsCode.class
com\subsidy\controller\CollegesDictController.class
com\subsidy\service\impl\PermissionsServiceImpl.class
com\subsidy\dto\message\MessagePageDTO.class
com\subsidy\dto\project\VocationalProjectNum.class
com\subsidy\mapper\MatchDictMapper.class
com\subsidy\service\impl\CollegeFileServiceImpl.class
com\subsidy\service\SmsVerifyCodeService.class
com\subsidy\service\MessageService.class
com\subsidy\model\MessageDO.class
com\subsidy\common\configure\WebConfig.class
com\subsidy\controller\ProjectConsultController.class
com\subsidy\service\impl\SmsVerifyCodeServiceImpl.class
com\subsidy\dto\project\ExportConsultListVO.class
com\subsidy\service\CollegesDictService.class
com\subsidy\controller\OssController.class
com\subsidy\controller\ProjectReviewPeriodController.class
com\subsidy\common\configure\VODConfig.class
com\subsidy\common\interceptor\AuthenticationInterceptor.class
com\subsidy\vo\teacher\TeacherInfoVO.class
com\subsidy\model\MatchDictDO.class
com\subsidy\util\tree\NumberTree.class
com\subsidy\util\MathUtil.class
com\subsidy\util\PolyvUtils.class
com\subsidy\common\interceptor\LoginRequired.class
com\subsidy\util\IpAddressUtil.class
com\subsidy\dto\college\ExportCollegeDTO.class
com\subsidy\dto\project\GetVocationalProjectDetailDTO.class
com\subsidy\util\CodeGenerator$1.class
com\subsidy\common\constant\SMSTemplate.class
com\subsidy\common\ResponseVO$ResponseVOBuilder.class
com\subsidy\service\ProjectReviewPeriodService.class
com\subsidy\common\constant\Role.class
com\subsidy\vo\message\MessageVO.class
com\subsidy\model\ProjectMembersDO.class
com\subsidy\common\handler\MetaHandler.class
com\subsidy\dto\project\ReviewVocationalNumDTO.class
com\subsidy\util\EhCacheUtil.class
com\subsidy\util\ShehuihuaConstant.class
com\subsidy\dto\project\ApproveDTO.class
com\subsidy\util\EncryptString.class
com\subsidy\vo\administer\AdministerVO.class
com\subsidy\util\VodUtil.class
com\subsidy\common\constant\ProjectStatus.class
com\subsidy\dto\project\ReviewListDTO.class
com\subsidy\util\HttpUtil$4.class
com\subsidy\controller\CollegeFileController.class
com\subsidy\common\configure\AliyunSmsProperties.class
com\subsidy\dto\message\CreateMessageDTO.class
com\subsidy\util\DateFormatUtil.class
com\subsidy\vo\judge\ProjectJudgePageVO.class
com\subsidy\common\configure\RenSheConfig.class
com\subsidy\util\Localstorage.class
com\subsidy\vo\college\ExcelFieldVO.class
com\subsidy\model\ProjectConsultDO.class
com\subsidy\common\interceptor\TimeRequired.class
com\subsidy\util\tree\SerialNumber.class
com\subsidy\util\HttpUtil$3.class
com\subsidy\vo\judge\JudgeInfoVO.class
com\subsidy\vo\match\MatchDictVO.class
com\subsidy\service\TeacherService.class
com\subsidy\service\impl\ProjectReviewServiceImpl.class
com\subsidy\util\RedisUtil.class
com\subsidy\dto\administer\LoginDTO.class
D:\code\ecutrack\src\main\java\com\subsidy\common\configure\WebLogAspect.java
D:\code\ecutrack\src\main\java\com\subsidy\model\ProjectDO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\OSSUtils.java
D:\code\ecutrack\src\main\java\com\subsidy\model\MessageDO.java
D:\code\ecutrack\src\main\java\com\subsidy\common\constant\ProjectSchedule.java
D:\code\ecutrack\src\main\java\com\subsidy\common\constant\ProjectType.java
D:\code\ecutrack\src\main\java\com\subsidy\controller\MatchDictController.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\review\ProjectReviewScoreDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\TestMain.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\match\SelectListPageDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\controller\ProjectReviewController.java
D:\code\ecutrack\src\main\java\com\subsidy\controller\ProjectMembersController.java
D:\code\ecutrack\src\main\java\com\subsidy\model\ProjectReviewDO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\SecretUtils.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\administer\AdministerPageDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\mapper\CollegesDictMapper.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\judge\ProjectJudgePageDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\Localstorage.java
D:\code\ecutrack\src\main\java\com\subsidy\common\interceptor\AuthenticationInterceptor.java
D:\code\ecutrack\src\main\java\com\subsidy\common\constant\Role.java
D:\code\ecutrack\src\main\java\com\subsidy\common\interceptor\LoginRequired.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\ExportProjectDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\model\CollegesDictDO.java
D:\code\ecutrack\src\main\java\com\subsidy\service\SmsVerifyCodeService.java
D:\code\ecutrack\src\main\java\com\subsidy\util\PDFUtil.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\administer\PermissionVO.java
D:\code\ecutrack\src\main\java\com\subsidy\common\constant\Code.java
D:\code\ecutrack\src\main\java\com\subsidy\util\IpAddressUtil.java
D:\code\ecutrack\src\main\java\com\subsidy\model\MatchDictDO.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\judge\JudgeInfoVO.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\college\FileManagementVO.java
D:\code\ecutrack\src\main\java\com\subsidy\common\constant\ProjectTrack.java
D:\code\ecutrack\src\main\java\com\subsidy\mapper\CollegeFileMapper.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\teacher\LoginVO.java
D:\code\ecutrack\src\main\java\com\subsidy\service\ProjectConsultService.java
D:\code\ecutrack\src\main\java\com\subsidy\controller\ProjectJudgeController.java
D:\code\ecutrack\src\main\java\com\subsidy\service\impl\CollegeFileServiceImpl.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\project\ProjectAssignNumVO.java
D:\code\ecutrack\src\main\java\com\subsidy\common\configure\RenSheConfig.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\project\VocationalReviewNumVO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\excel\ExcelColumn.java
D:\code\ecutrack\src\main\java\com\subsidy\service\impl\ProjectServiceImpl.java
D:\code\ecutrack\src\main\java\com\subsidy\util\AliyunSmsUtil.java
D:\code\ecutrack\src\main\java\com\subsidy\controller\ProjectReviewPeriodController.java
D:\code\ecutrack\src\main\java\com\subsidy\service\impl\TeacherServiceImpl.java
D:\code\ecutrack\src\main\java\com\subsidy\mapper\MatchDictMapper.java
D:\code\ecutrack\src\main\java\com\subsidy\util\VodUtil.java
D:\code\ecutrack\src\main\java\com\subsidy\util\MyStringUtils.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\teacher\RegisterDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\college\MatchCollegeVodsVO.java
D:\code\ecutrack\src\main\java\com\subsidy\service\impl\CollegesDictServiceImpl.java
D:\code\ecutrack\src\main\java\com\subsidy\util\BaseModel.java
D:\code\ecutrack\src\main\java\com\subsidy\util\SMSUtils.java
D:\code\ecutrack\src\main\java\com\subsidy\service\ProjectReviewPeriodService.java
D:\code\ecutrack\src\main\java\com\subsidy\service\impl\ProjectConsultServiceImpl.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\review\SubmittedDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\RedisUtil.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\review\SetReviewDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\project\SignatureVO.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\review\SendNoticeVO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\Signature.java
D:\code\ecutrack\src\main\java\com\subsidy\MeishuApplication.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\teacher\TeacherInfoVO.java
D:\code\ecutrack\src\main\java\com\subsidy\common\constant\ProjectStatus.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\projectReviewPeriod\ProjectReviewPeriodVO.java
D:\code\ecutrack\src\main\java\com\subsidy\service\impl\MatchDictServiceImpl.java
D:\code\ecutrack\src\main\java\com\subsidy\util\PolyvUtils.java
D:\code\ecutrack\src\main\java\com\subsidy\util\HttpUtil.java
D:\code\ecutrack\src\main\java\com\subsidy\common\configure\MybatisPlusConfig.java
D:\code\ecutrack\src\main\java\com\subsidy\service\impl\SmsVerifyCodeServiceImpl.java
D:\code\ecutrack\src\main\java\com\subsidy\controller\AdministerController.java
D:\code\ecutrack\src\main\java\com\subsidy\util\tree\Node.java
D:\code\ecutrack\src\main\java\com\subsidy\util\ResultMode.java
D:\code\ecutrack\src\main\java\com\subsidy\service\ProjectJudgeService.java
D:\code\ecutrack\src\main\java\com\subsidy\service\PermissionsService.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\college\CollegeInfoVO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\excel\ExcelUtil.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\review\ProjectReviewDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\service\impl\PermissionsServiceImpl.java
D:\code\ecutrack\src\main\java\com\subsidy\service\impl\ProjectReviewPeriodServiceImpl.java
D:\code\ecutrack\src\main\java\com\subsidy\util\DudaoConstant.java
D:\code\ecutrack\src\main\java\com\subsidy\controller\PermissionsController.java
D:\code\ecutrack\src\main\java\com\subsidy\service\ProjectMembersService.java
D:\code\ecutrack\src\main\java\com\subsidy\common\handler\MetaHandler.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\college\GetCollegesListDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\ActivityDetectionUtils.java
D:\code\ecutrack\src\main\java\com\subsidy\common\exception\HttpException.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\college\FileManagementDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\ShehuihuaConstant.java
D:\code\ecutrack\src\main\java\com\subsidy\mapper\PermissionsMapper.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\ExportTeachListVO.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\ExportConsultListVO.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\message\MessageVO.java
D:\code\ecutrack\src\main\java\com\subsidy\service\CollegesDictService.java
D:\code\ecutrack\src\main\java\com\subsidy\common\constant\ProjectReview.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\projectJudge\ImportJudge.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\judge\ProjectReviewVO.java
D:\code\ecutrack\src\main\java\com\subsidy\common\configure\SubsidyConfig.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\review\ReMatchReviewVO.java
D:\code\ecutrack\src\main\java\com\subsidy\service\ProjectReviewService.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\college\ExcelFieldVO.java
D:\code\ecutrack\src\main\java\com\subsidy\common\constant\SmsCode.java
D:\code\ecutrack\src\main\java\com\subsidy\model\PermissionsDO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\CodeGenerator.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\DataOverviewDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\PageHelper.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\college\RecentFileVO.java
D:\code\ecutrack\src\main\java\com\subsidy\controller\CollegeFileController.java
D:\code\ecutrack\src\main\java\com\subsidy\common\configure\RestTemplateConfig.java
D:\code\ecutrack\src\main\java\com\subsidy\common\constant\AttendanceConstant.java
D:\code\ecutrack\src\main\java\com\subsidy\controller\OssController.java
D:\code\ecutrack\src\main\java\com\subsidy\mapper\ProjectReviewMapper.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\SeedTrackProjectNumDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\mapper\TeacherMapper.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\review\CancelReviewDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\college\ExportSchoolProjectSummaryVO.java
D:\code\ecutrack\src\main\java\com\subsidy\common\configure\SwaggerConfig.java
D:\code\ecutrack\src\main\java\com\subsidy\util\RandomUtil.java
D:\code\ecutrack\src\main\java\com\subsidy\common\configure\QXueYouConfig.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\college\ExportCollegeDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\VocationalProjectNum.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\administer\LoginDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\message\CreateMessageDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\common\exception\GlobalExceptionHandler.java
D:\code\ecutrack\src\main\java\com\subsidy\common\constant\SMSTemplate.java
D:\code\ecutrack\src\main\java\com\subsidy\mapper\ProjectMembersMapper.java
D:\code\ecutrack\src\main\java\com\subsidy\common\constant\Platform.java
D:\code\ecutrack\src\main\java\com\subsidy\common\interceptor\TimeRequired.java
D:\code\ecutrack\src\main\java\com\subsidy\controller\SmsVerifyCodeController.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\project\ProjectPageVO.java
D:\code\ecutrack\src\main\java\com\subsidy\common\RedisPrefixConstant.java
D:\code\ecutrack\src\main\java\com\subsidy\common\ResponseVO.java
D:\code\ecutrack\src\main\java\com\subsidy\mapper\ProjectJudgeMapper.java
D:\code\ecutrack\src\main\java\com\subsidy\common\ResponseData.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\ApproveDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\MentorDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\review\SchoolReviewVO.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\project\UploadVodsVO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\MathUtil.java
D:\code\ecutrack\src\main\java\com\subsidy\model\ProjectMembersDO.java
D:\code\ecutrack\src\main\java\com\subsidy\mapper\ProjectMapper.java
D:\code\ecutrack\src\main\java\com\subsidy\model\ProjectReviewPeriodDO.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\ProjectCollegeListDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\review\ReviewScoreDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\controller\MessageController.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\review\FinalsReviewVO.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\project\ProjectMemberVO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\excel\ExcelColumnUtil.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\college\GetCollegeInfoVO.java
D:\code\ecutrack\src\main\java\com\subsidy\mapper\AdministerMapper.java
D:\code\ecutrack\src\main\java\com\subsidy\common\configure\PolyvConfig.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\project\SeedTrackProjectPageVO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\JwtUtil.java
D:\code\ecutrack\src\main\java\com\subsidy\model\SmsVerifyCodeDO.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\message\MessagePageDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\common\configure\WebConfig.java
D:\code\ecutrack\src\main\java\com\subsidy\mapper\ProjectReviewPeriodMapper.java
D:\code\ecutrack\src\main\java\com\subsidy\util\EhCacheUtil.java
D:\code\ecutrack\src\main\java\com\subsidy\mapper\SmsVerifyCodeMapper.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\project\RecentVodVO.java
D:\code\ecutrack\src\main\java\com\subsidy\service\MessageService.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\project\SeedTrackProjectDetailVO.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\UpdateProjectDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\GetSeedTrackMatchPageDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\ReviewListDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\ProjectListPageDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\period\ProjectReviewPeriodDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\ExcelFieldVO.java
D:\code\ecutrack\src\main\java\com\subsidy\common\configure\RemoteProperties.java
D:\code\ecutrack\src\main\java\com\subsidy\common\constant\CourseNotification.java
D:\code\ecutrack\src\main\java\com\subsidy\service\CollegeFileService.java
D:\code\ecutrack\src\main\java\com\subsidy\common\configure\RedisConfig.java
D:\code\ecutrack\src\main\java\com\subsidy\util\ImageCheckUtil.java
D:\code\ecutrack\src\main\java\com\subsidy\common\configure\AliyunSmsProperties.java
D:\code\ecutrack\src\main\java\com\subsidy\model\CollegeFileDO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\RenSheJuConstant.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\oss\UploadFileVO.java
D:\code\ecutrack\src\main\java\com\subsidy\controller\ProjectController.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\MatchCollegeVodsDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\service\impl\AdministerServiceImpl.java
D:\code\ecutrack\src\main\java\com\subsidy\util\MyBeanUtils.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\oss\GetSecretVO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\Base64Util.java
D:\code\ecutrack\src\main\java\com\subsidy\service\impl\ProjectReviewServiceImpl.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\project\ReviewListVO.java
D:\code\ecutrack\src\main\java\com\subsidy\controller\ProjectConsultController.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\project\VocationalNumVO.java
D:\code\ecutrack\src\main\java\com\subsidy\common\constant\MemberType.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\match\MatchDictVO.java
D:\code\ecutrack\src\main\java\com\subsidy\service\impl\ProjectJudgeServiceImpl.java
D:\code\ecutrack\src\main\java\com\subsidy\common\constant\WxConstant.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\college\CollegesVO.java
D:\code\ecutrack\src\main\java\com\subsidy\service\TeacherService.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\ReviewVocationalNumDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\service\ProjectService.java
D:\code\ecutrack\src\main\java\com\subsidy\model\ProjectConsultDO.java
D:\code\ecutrack\src\main\java\com\subsidy\mapper\MessageMapper.java
D:\code\ecutrack\src\main\java\com\subsidy\service\MatchDictService.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\project\ProjectDataOverview.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\GetVocationalProjectDetailDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\model\AdministerDO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\EncryptUtil.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\project\OneProjectVO.java
D:\code\ecutrack\src\main\java\com\subsidy\common\configure\VODConfig.java
D:\code\ecutrack\src\main\java\com\subsidy\controller\TeacherController.java
D:\code\ecutrack\src\main\java\com\subsidy\util\tree\NumberTree.java
D:\code\ecutrack\src\main\java\com\subsidy\model\ProjectJudgeDO.java
D:\code\ecutrack\src\main\java\com\subsidy\util\MongoUtil.java
D:\code\ecutrack\src\main\java\com\subsidy\service\AdministerService.java
D:\code\ecutrack\src\main\java\com\subsidy\util\DateFormatUtil.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\review\ProjectReviewPageDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\mapper\ProjectConsultMapper.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\project\ProjectJudgeVO.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\TeamMemberDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\common\configure\MyTomcat.java
D:\code\ecutrack\src\main\java\com\subsidy\model\TeacherDO.java
D:\code\ecutrack\src\main\java\com\subsidy\service\impl\MessageServiceImpl.java
D:\code\ecutrack\src\main\java\com\subsidy\util\ConstantUtils.java
D:\code\ecutrack\src\main\java\com\subsidy\util\tree\SerialNumber.java
D:\code\ecutrack\src\main\java\com\subsidy\common\configure\WechatConfig.java
D:\code\ecutrack\src\main\java\com\subsidy\service\impl\ProjectMembersServiceImpl.java
D:\code\ecutrack\src\main\java\com\subsidy\util\ExcelFormatUtils.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\judge\ProjectJudgePageVO.java
D:\code\ecutrack\src\main\java\com\subsidy\controller\CollegesDictController.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\UploadVodsDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\common\constant\VodConstant.java
D:\code\ecutrack\src\main\java\com\subsidy\dto\project\EditStatusDTO.java
D:\code\ecutrack\src\main\java\com\subsidy\vo\administer\AdministerVO.java
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!