添加后端代码、数据库文档和FRP配置
This commit is contained in:
313
backend/backend_complete.log
Normal file
313
backend/backend_complete.log
Normal file
@@ -0,0 +1,313 @@
|
||||
[[1;34mINFO[m] Scanning for projects...
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m------------------------< [0;36mcom.gpf:pet-hospital[0;1m >------------------------[m
|
||||
[[1;34mINFO[m] [1mBuilding 爱维宠物医院管理平台 1.0.0[m
|
||||
[[1;34mINFO[m] [1m--------------------------------[ jar ]---------------------------------[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m>>> [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m > [0;1mtest-compile[m @ [36mpet-hospital[0;1m >>>[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:resources[m [1m(default-resources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] Copying 2 resources
|
||||
[[1;34mINFO[m] Copying 1 resource
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:compile[m [1m(default-compile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Nothing to compile - all classes are up to date
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:testResources[m [1m(default-testResources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] skip non existing resourceDirectory /mnt/d/bs/gpf_pet_hospital/backend/src/test/resources
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:testCompile[m [1m(default-testCompile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] No sources to compile
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m<<< [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m < [0;1mtest-compile[m @ [36mpet-hospital[0;1m <<<[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Attaching agents: []
|
||||
|
||||
. ____ _ __ _ _
|
||||
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
|
||||
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
|
||||
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
|
||||
' |____| .__|_| |_|_| |_\__, | / / / /
|
||||
=========|_|==============|___/=/_/_/_/
|
||||
:: Spring Boot :: (v2.7.18)
|
||||
|
||||
2026-01-29 12:16:50.735 INFO 6824 --- [ main] c.g.pethospital.PetHospitalApplication : Starting PetHospitalApplication using Java 17.0.17 on LAPTOP-FS8K5GSO with PID 6824 (/mnt/d/bs/gpf_pet_hospital/backend/target/classes started by wangzq in /mnt/d/bs/gpf_pet_hospital/backend)
|
||||
2026-01-29 12:16:50.740 INFO 6824 --- [ main] c.g.pethospital.PetHospitalApplication : The following 1 profile is active: "dev"
|
||||
2026-01-29 12:16:56.239 INFO 6824 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http)
|
||||
2026-01-29 12:16:56.265 INFO 6824 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
|
||||
2026-01-29 12:16:56.266 INFO 6824 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.83]
|
||||
2026-01-29 12:16:56.426 INFO 6824 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring embedded WebApplicationContext
|
||||
2026-01-29 12:16:56.426 INFO 6824 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5611 ms
|
||||
2026-01-29 12:16:56.484 INFO 6824 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
|
||||
2026-01-29 12:16:57.245 INFO 6824 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
|
||||
2026-01-29 12:16:57.269 INFO 6824 --- [ main] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:testdb'
|
||||
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
|
||||
Initialization Sequence datacenterId:1 workerId:21
|
||||
_ _ |_ _ _|_. ___ _ | _
|
||||
| | |\/|_)(_| | |_\ |_)||_|_\
|
||||
/ |
|
||||
3.5.5
|
||||
2026-01-29 12:16:59.759 WARN 6824 --- [ main] .s.s.UserDetailsServiceAutoConfiguration :
|
||||
|
||||
Using generated security password: 926319ab-f1b3-4bae-8d73-5c7dc57ed41e
|
||||
|
||||
This generated password is for development use only. Your security configuration must be updated before running your application in production.
|
||||
|
||||
2026-01-29 12:17:00.150 INFO 6824 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@26be9a6, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@4d518c66, org.springframework.security.web.context.SecurityContextPersistenceFilter@5a4dda2, org.springframework.security.web.header.HeaderWriterFilter@6df4af5, org.springframework.security.web.authentication.logout.LogoutFilter@582e9152, com.gpf.pethospital.security.JwtAuthenticationFilter@411fa0ce, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@34045582, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1edccfd4, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@251d7fdd, org.springframework.security.web.session.SessionManagementFilter@250d440, org.springframework.security.web.access.ExceptionTranslationFilter@4966bab1, org.springframework.security.web.access.intercept.AuthorizationFilter@60b5e80d]
|
||||
2026-01-29 12:17:01.506 INFO 6824 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path '/api'
|
||||
2026-01-29 12:17:01.520 INFO 6824 --- [ main] c.g.pethospital.PetHospitalApplication : Started PetHospitalApplication in 12.044 seconds (JVM running for 12.638)
|
||||
2026-01-29 12:17:06.961 INFO 6824 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||
2026-01-29 12:17:06.961 INFO 6824 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
|
||||
2026-01-29 12:17:06.963 INFO 6824 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3c9c63df] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@598865562 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin123(String), admin123(String), admin123(String)
|
||||
<== Total: 0
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3c9c63df]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@66aeebc4] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@947374894 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT( * ) AS total FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: customer(String), 13900139001(String), customer@example.com(String)
|
||||
<== Columns: TOTAL
|
||||
<== Row: 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@66aeebc4]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@407d98a4] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@952904848 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: INSERT INTO `user` ( username, phone, email, password, role, status, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )
|
||||
==> Parameters: customer(String), 13900139001(String), customer@example.com(String), $2a$10$xQOy/03sZQwPYhFu613TA.pfqYWVVwm8ObpQ7qnhuiW4vHpbEN7fy(String), CUSTOMER(String), 1(Integer), 2026-01-29T12:17:11.108203849(LocalDateTime), 2026-01-29T12:17:11.108203849(LocalDateTime)
|
||||
<== Updates: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@407d98a4]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7038ac66] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@2130660369 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: customer(String), customer(String), customer(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 1, customer, 13900139001, customer@example.com, $2a$10$xQOy/03sZQwPYhFu613TA.pfqYWVVwm8ObpQ7qnhuiW4vHpbEN7fy, CUSTOMER, 1, null, 2026-01-29 12:17:11.108204, 2026-01-29 12:17:11.108204, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7038ac66]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@79f8c3da] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1968400554 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: INSERT INTO pet ( owner_id, name, breed, gender, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ? )
|
||||
==> Parameters: 1(Long), 小黄(String), 拉布拉多(String), F(String), 2026-01-29T12:17:18.870163031(LocalDateTime), 2026-01-29T12:17:18.870163031(LocalDateTime)
|
||||
<== Updates: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@79f8c3da]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@70112bd5] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1858967151 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@70112bd5]
|
||||
2026-01-29 12:17:23.261 ERROR 6824 --- [nio-8081-exec-8] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/api] threw exception [Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException:
|
||||
### Error updating database. Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "TIME_SLOT" not found; SQL statement:
|
||||
INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ) [42122-214]
|
||||
### The error may exist in com/gpf/pethospital/mapper/AppointmentMapper.java (best guess)
|
||||
### The error may involve com.gpf.pethospital.mapper.AppointmentMapper.insert
|
||||
### The error occurred while executing an update
|
||||
### SQL: INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )
|
||||
### Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "TIME_SLOT" not found; SQL statement:
|
||||
INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ) [42122-214]
|
||||
; bad SQL grammar []; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "TIME_SLOT" not found; SQL statement:
|
||||
INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ) [42122-214]] with root cause
|
||||
|
||||
org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "TIME_SLOT" not found; SQL statement:
|
||||
INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ) [42122-214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.get(DbException.java:223) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.get(DbException.java:199) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.table.Table.getColumn(Table.java:749) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseColumn(Parser.java:1256) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseColumnList(Parser.java:1241) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseInsert(Parser.java:1641) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parsePrepared(Parser.java:814) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parse(Parser.java:689) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parse(Parser.java:661) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.prepareCommand(Parser.java:569) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.engine.SessionLocal.prepareCommand(SessionLocal.java:554) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:92) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:1099) ~[h2-2.1.214.jar:2.1.214]
|
||||
at com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:372) ~[HikariCP-4.0.3.jar:na]
|
||||
at com.zaxxer.hikari.pool.HikariProxyConnection.prepareStatement(HikariProxyConnection.java) ~[HikariCP-4.0.3.jar:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.logging.jdbc.ConnectionLogger.invoke(ConnectionLogger.java:53) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy3/jdk.proxy3.$Proxy64.prepareStatement(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.statement.PreparedStatementHandler.instantiateStatement(PreparedStatementHandler.java:84) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java:90) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.statement.RoutingStatementHandler.prepare(RoutingStatementHandler.java:60) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy106.prepare(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:90) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy105.update(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:184) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy71.insert(Unknown Source) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:272) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:152) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy77.insert(Unknown Source) ~[na:na]
|
||||
at com.baomidou.mybatisplus.extension.service.IService.save(IService.java:60) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.extension.service.IService$$FastClassBySpringCGLIB$$f8525d18.invoke(<generated>) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at com.gpf.pethospital.service.impl.AppointmentServiceImpl$$EnhancerBySpringCGLIB$$4a795df8.save(<generated>) ~[classes/:na]
|
||||
at com.gpf.pethospital.controller.AppointmentController.create(AppointmentController.java:33) ~[classes/:na]
|
||||
at com.gpf.pethospital.controller.AppointmentController$$FastClassBySpringCGLIB$$4329551c.invoke(<generated>) ~[classes/:na]
|
||||
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at com.gpf.pethospital.controller.AppointmentController$$EnhancerBySpringCGLIB$$e7e92bd4.create(<generated>) ~[classes/:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:96) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at com.gpf.pethospital.security.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:45) ~[classes/:na]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]
|
||||
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@337f2551] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1035521358 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin123(String), admin123(String), admin123(String)
|
||||
<== Total: 0
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@337f2551]
|
||||
2026-01-29 12:17:30.582 INFO 6824 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
|
||||
2026-01-29 12:17:30.584 INFO 6824 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] [1;31mBUILD FAILURE[m
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] Total time: 49.018 s
|
||||
[[1;34mINFO[m] Finished at: 2026-01-29T12:17:30+08:00
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;31mERROR[m] Failed to execute goal [32morg.springframework.boot:spring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m on project [36mpet-hospital[m: [1;31mApplication finished with exit code: 143[m -> [1m[Help 1][m
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] To see the full stack trace of the errors, re-run Maven with the [1m-e[m switch.
|
||||
[[1;31mERROR[m] Re-run Maven using the [1m-X[m switch to enable full debug logging.
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] For more information about the errors and possible solutions, please read the following articles:
|
||||
[[1;31mERROR[m] [1m[Help 1][m http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
|
||||
79
backend/backend_final.log
Normal file
79
backend/backend_final.log
Normal file
@@ -0,0 +1,79 @@
|
||||
[[1;34mINFO[m] Scanning for projects...
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m------------------------< [0;36mcom.gpf:pet-hospital[0;1m >------------------------[m
|
||||
[[1;34mINFO[m] [1mBuilding 爱维宠物医院管理平台 1.0.0[m
|
||||
[[1;34mINFO[m] [1m--------------------------------[ jar ]---------------------------------[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m>>> [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m > [0;1mtest-compile[m @ [36mpet-hospital[0;1m >>>[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:resources[m [1m(default-resources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] Copying 2 resources
|
||||
[[1;34mINFO[m] Copying 1 resource
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:compile[m [1m(default-compile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Nothing to compile - all classes are up to date
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:testResources[m [1m(default-testResources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] skip non existing resourceDirectory /mnt/d/bs/gpf_pet_hospital/backend/src/test/resources
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:testCompile[m [1m(default-testCompile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] No sources to compile
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m<<< [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m < [0;1mtest-compile[m @ [36mpet-hospital[0;1m <<<[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Attaching agents: []
|
||||
|
||||
. ____ _ __ _ _
|
||||
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
|
||||
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
|
||||
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
|
||||
' |____| .__|_| |_|_| |_\__, | / / / /
|
||||
=========|_|==============|___/=/_/_/_/
|
||||
:: Spring Boot :: (v2.7.18)
|
||||
|
||||
2026-01-29 12:09:25.156 INFO 6050 --- [ main] c.g.pethospital.PetHospitalApplication : Starting PetHospitalApplication using Java 17.0.17 on LAPTOP-FS8K5GSO with PID 6050 (/mnt/d/bs/gpf_pet_hospital/backend/target/classes started by wangzq in /mnt/d/bs/gpf_pet_hospital/backend)
|
||||
2026-01-29 12:09:25.161 INFO 6050 --- [ main] c.g.pethospital.PetHospitalApplication : The following 1 profile is active: "dev"
|
||||
2026-01-29 12:09:30.848 INFO 6050 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http)
|
||||
2026-01-29 12:09:30.873 INFO 6050 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
|
||||
2026-01-29 12:09:30.873 INFO 6050 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.83]
|
||||
2026-01-29 12:09:31.043 INFO 6050 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring embedded WebApplicationContext
|
||||
2026-01-29 12:09:31.043 INFO 6050 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5806 ms
|
||||
2026-01-29 12:09:31.101 INFO 6050 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
|
||||
2026-01-29 12:09:31.897 INFO 6050 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
|
||||
2026-01-29 12:09:31.923 INFO 6050 --- [ main] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:testdb'
|
||||
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
|
||||
Initialization Sequence datacenterId:1 workerId:6
|
||||
_ _ |_ _ _|_. ___ _ | _
|
||||
| | |\/|_)(_| | |_\ |_)||_|_\
|
||||
/ |
|
||||
3.5.5
|
||||
2026-01-29 12:09:34.317 WARN 6050 --- [ main] .s.s.UserDetailsServiceAutoConfiguration :
|
||||
|
||||
Using generated security password: 332a46eb-449c-42d8-94b3-6f0bba3c5735
|
||||
|
||||
This generated password is for development use only. Your security configuration must be updated before running your application in production.
|
||||
|
||||
2026-01-29 12:09:34.688 INFO 6050 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@21edd891, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@de579ff, org.springframework.security.web.context.SecurityContextPersistenceFilter@7abeabe9, org.springframework.security.web.header.HeaderWriterFilter@22d477c2, org.springframework.security.web.authentication.logout.LogoutFilter@bb3ecfe, com.gpf.pethospital.security.JwtAuthenticationFilter@7971c2a9, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@1b52699c, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@250d440, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@2fd39436, org.springframework.security.web.session.SessionManagementFilter@448c92fc, org.springframework.security.web.access.ExceptionTranslationFilter@79ecc507, org.springframework.security.web.access.intercept.AuthorizationFilter@582e9152]
|
||||
2026-01-29 12:09:36.166 INFO 6050 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path '/api'
|
||||
2026-01-29 12:09:36.179 INFO 6050 --- [ main] c.g.pethospital.PetHospitalApplication : Started PetHospitalApplication in 12.27 seconds (JVM running for 12.892)
|
||||
2026-01-29 12:09:53.265 INFO 6050 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
|
||||
2026-01-29 12:09:53.269 INFO 6050 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] [1;31mBUILD FAILURE[m
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] Total time: 37.310 s
|
||||
[[1;34mINFO[m] Finished at: 2026-01-29T12:09:53+08:00
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;31mERROR[m] Failed to execute goal [32morg.springframework.boot:spring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m on project [36mpet-hospital[m: [1;31mApplication finished with exit code: 143[m -> [1m[Help 1][m
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] To see the full stack trace of the errors, re-run Maven with the [1m-e[m switch.
|
||||
[[1;31mERROR[m] Re-run Maven using the [1m-X[m switch to enable full debug logging.
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] For more information about the errors and possible solutions, please read the following articles:
|
||||
[[1;31mERROR[m] [1m[Help 1][m http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
|
||||
276
backend/backend_final_fixed.log
Normal file
276
backend/backend_final_fixed.log
Normal file
@@ -0,0 +1,276 @@
|
||||
[[1;34mINFO[m] Scanning for projects...
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m------------------------< [0;36mcom.gpf:pet-hospital[0;1m >------------------------[m
|
||||
[[1;34mINFO[m] [1mBuilding 爱维宠物医院管理平台 1.0.0[m
|
||||
[[1;34mINFO[m] [1m--------------------------------[ jar ]---------------------------------[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m>>> [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m > [0;1mtest-compile[m @ [36mpet-hospital[0;1m >>>[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:resources[m [1m(default-resources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] Copying 2 resources
|
||||
[[1;34mINFO[m] Copying 2 resources
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:compile[m [1m(default-compile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Nothing to compile - all classes are up to date
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:testResources[m [1m(default-testResources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] skip non existing resourceDirectory /mnt/d/bs/gpf_pet_hospital/backend/src/test/resources
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:testCompile[m [1m(default-testCompile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] No sources to compile
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m<<< [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m < [0;1mtest-compile[m @ [36mpet-hospital[0;1m <<<[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Attaching agents: []
|
||||
|
||||
. ____ _ __ _ _
|
||||
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
|
||||
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
|
||||
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
|
||||
' |____| .__|_| |_|_| |_\__, | / / / /
|
||||
=========|_|==============|___/=/_/_/_/
|
||||
:: Spring Boot :: (v2.7.18)
|
||||
|
||||
2026-01-29 12:17:52.260 INFO 6984 --- [ main] c.g.pethospital.PetHospitalApplication : Starting PetHospitalApplication using Java 17.0.17 on LAPTOP-FS8K5GSO with PID 6984 (/mnt/d/bs/gpf_pet_hospital/backend/target/classes started by wangzq in /mnt/d/bs/gpf_pet_hospital/backend)
|
||||
2026-01-29 12:17:52.265 INFO 6984 --- [ main] c.g.pethospital.PetHospitalApplication : The following 1 profile is active: "dev"
|
||||
2026-01-29 12:17:57.768 INFO 6984 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http)
|
||||
2026-01-29 12:17:57.795 INFO 6984 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
|
||||
2026-01-29 12:17:57.796 INFO 6984 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.83]
|
||||
2026-01-29 12:17:57.957 INFO 6984 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring embedded WebApplicationContext
|
||||
2026-01-29 12:17:57.957 INFO 6984 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5612 ms
|
||||
2026-01-29 12:17:58.012 INFO 6984 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
|
||||
2026-01-29 12:17:58.796 INFO 6984 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
|
||||
2026-01-29 12:17:58.826 INFO 6984 --- [ main] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:testdb'
|
||||
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
|
||||
Initialization Sequence datacenterId:1 workerId:16
|
||||
_ _ |_ _ _|_. ___ _ | _
|
||||
| | |\/|_)(_| | |_\ |_)||_|_\
|
||||
/ |
|
||||
3.5.5
|
||||
2026-01-29 12:18:01.177 WARN 6984 --- [ main] .s.s.UserDetailsServiceAutoConfiguration :
|
||||
|
||||
Using generated security password: 26737b8f-8750-49cd-b844-01692eface7e
|
||||
|
||||
This generated password is for development use only. Your security configuration must be updated before running your application in production.
|
||||
|
||||
2026-01-29 12:18:01.533 INFO 6984 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@435e416c, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@6af310c7, org.springframework.security.web.context.SecurityContextPersistenceFilter@21edd891, org.springframework.security.web.header.HeaderWriterFilter@340cb97f, org.springframework.security.web.authentication.logout.LogoutFilter@370c9018, com.gpf.pethospital.security.JwtAuthenticationFilter@4aed311e, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@7971c2a9, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@60b5e80d, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@4c38cd16, org.springframework.security.web.session.SessionManagementFilter@582e9152, org.springframework.security.web.access.ExceptionTranslationFilter@291a4791, org.springframework.security.web.access.intercept.AuthorizationFilter@482c351d]
|
||||
2026-01-29 12:18:03.110 INFO 6984 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path '/api'
|
||||
2026-01-29 12:18:03.124 INFO 6984 --- [ main] c.g.pethospital.PetHospitalApplication : Started PetHospitalApplication in 12.261 seconds (JVM running for 12.885)
|
||||
2026-01-29 12:18:11.902 INFO 6984 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||
2026-01-29 12:18:11.902 INFO 6984 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
|
||||
2026-01-29 12:18:11.903 INFO 6984 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1f20fef4] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@208105529 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: customer(String), customer(String), customer(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 3, customer, 13900139000, customer@example.com, $2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi, CUSTOMER, 1, null, 2026-01-29 12:17:59.555682, 2026-01-29 12:17:59.555682, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1f20fef4]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2b030f70] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1718503198 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2b030f70]
|
||||
2026-01-29 12:18:20.043 ERROR 6984 --- [nio-8081-exec-3] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/api] threw exception [Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException:
|
||||
### Error updating database. Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "TIME_SLOT" not found; SQL statement:
|
||||
INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ) [42122-214]
|
||||
### The error may exist in com/gpf/pethospital/mapper/AppointmentMapper.java (best guess)
|
||||
### The error may involve com.gpf.pethospital.mapper.AppointmentMapper.insert
|
||||
### The error occurred while executing an update
|
||||
### SQL: INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )
|
||||
### Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "TIME_SLOT" not found; SQL statement:
|
||||
INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ) [42122-214]
|
||||
; bad SQL grammar []; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "TIME_SLOT" not found; SQL statement:
|
||||
INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ) [42122-214]] with root cause
|
||||
|
||||
org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "TIME_SLOT" not found; SQL statement:
|
||||
INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ) [42122-214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.get(DbException.java:223) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.get(DbException.java:199) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.table.Table.getColumn(Table.java:749) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseColumn(Parser.java:1256) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseColumnList(Parser.java:1241) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseInsert(Parser.java:1641) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parsePrepared(Parser.java:814) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parse(Parser.java:689) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parse(Parser.java:661) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.prepareCommand(Parser.java:569) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.engine.SessionLocal.prepareCommand(SessionLocal.java:554) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:92) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:1099) ~[h2-2.1.214.jar:2.1.214]
|
||||
at com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:372) ~[HikariCP-4.0.3.jar:na]
|
||||
at com.zaxxer.hikari.pool.HikariProxyConnection.prepareStatement(HikariProxyConnection.java) ~[HikariCP-4.0.3.jar:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.logging.jdbc.ConnectionLogger.invoke(ConnectionLogger.java:53) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy3/jdk.proxy3.$Proxy64.prepareStatement(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.statement.PreparedStatementHandler.instantiateStatement(PreparedStatementHandler.java:84) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java:90) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.statement.RoutingStatementHandler.prepare(RoutingStatementHandler.java:60) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy106.prepare(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:90) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy105.update(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:184) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy71.insert(Unknown Source) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:272) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:152) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy77.insert(Unknown Source) ~[na:na]
|
||||
at com.baomidou.mybatisplus.extension.service.IService.save(IService.java:60) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.extension.service.IService$$FastClassBySpringCGLIB$$f8525d18.invoke(<generated>) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at com.gpf.pethospital.service.impl.AppointmentServiceImpl$$EnhancerBySpringCGLIB$$cb78fdc9.save(<generated>) ~[classes/:na]
|
||||
at com.gpf.pethospital.controller.AppointmentController.create(AppointmentController.java:33) ~[classes/:na]
|
||||
at com.gpf.pethospital.controller.AppointmentController$$FastClassBySpringCGLIB$$4329551c.invoke(<generated>) ~[classes/:na]
|
||||
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at com.gpf.pethospital.controller.AppointmentController$$EnhancerBySpringCGLIB$$29d26cb5.create(<generated>) ~[classes/:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:96) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at com.gpf.pethospital.security.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:45) ~[classes/:na]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]
|
||||
|
||||
2026-01-29 12:18:53.316 INFO 6984 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
|
||||
2026-01-29 12:18:53.318 INFO 6984 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] [1;31mBUILD FAILURE[m
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] Total time: 01:10 min
|
||||
[[1;34mINFO[m] Finished at: 2026-01-29T12:18:53+08:00
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;31mERROR[m] Failed to execute goal [32morg.springframework.boot:spring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m on project [36mpet-hospital[m: [1;31mApplication finished with exit code: 143[m -> [1m[Help 1][m
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] To see the full stack trace of the errors, re-run Maven with the [1m-e[m switch.
|
||||
[[1;31mERROR[m] Re-run Maven using the [1m-X[m switch to enable full debug logging.
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] For more information about the errors and possible solutions, please read the following articles:
|
||||
[[1;31mERROR[m] [1m[Help 1][m http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
|
||||
188
backend/backend_final_flow.log
Normal file
188
backend/backend_final_flow.log
Normal file
@@ -0,0 +1,188 @@
|
||||
[[1;34mINFO[m] Scanning for projects...
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m------------------------< [0;36mcom.gpf:pet-hospital[0;1m >------------------------[m
|
||||
[[1;34mINFO[m] [1mBuilding 爱维宠物医院管理平台 1.0.0[m
|
||||
[[1;34mINFO[m] [1m--------------------------------[ jar ]---------------------------------[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m>>> [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m > [0;1mtest-compile[m @ [36mpet-hospital[0;1m >>>[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:resources[m [1m(default-resources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] Copying 2 resources
|
||||
[[1;34mINFO[m] Copying 3 resources
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:compile[m [1m(default-compile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Nothing to compile - all classes are up to date
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:testResources[m [1m(default-testResources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] skip non existing resourceDirectory /mnt/d/bs/gpf_pet_hospital/backend/src/test/resources
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:testCompile[m [1m(default-testCompile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] No sources to compile
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m<<< [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m < [0;1mtest-compile[m @ [36mpet-hospital[0;1m <<<[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Attaching agents: []
|
||||
|
||||
. ____ _ __ _ _
|
||||
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
|
||||
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
|
||||
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
|
||||
' |____| .__|_| |_|_| |_\__, | / / / /
|
||||
=========|_|==============|___/=/_/_/_/
|
||||
:: Spring Boot :: (v2.7.18)
|
||||
|
||||
2026-01-29 12:23:12.006 INFO 7496 --- [ main] c.g.pethospital.PetHospitalApplication : Starting PetHospitalApplication using Java 17.0.17 on LAPTOP-FS8K5GSO with PID 7496 (/mnt/d/bs/gpf_pet_hospital/backend/target/classes started by wangzq in /mnt/d/bs/gpf_pet_hospital/backend)
|
||||
2026-01-29 12:23:12.011 INFO 7496 --- [ main] c.g.pethospital.PetHospitalApplication : The following 1 profile is active: "dev"
|
||||
2026-01-29 12:23:17.378 INFO 7496 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http)
|
||||
2026-01-29 12:23:17.408 INFO 7496 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
|
||||
2026-01-29 12:23:17.408 INFO 7496 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.83]
|
||||
2026-01-29 12:23:17.592 INFO 7496 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring embedded WebApplicationContext
|
||||
2026-01-29 12:23:17.593 INFO 7496 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5498 ms
|
||||
2026-01-29 12:23:17.652 INFO 7496 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
|
||||
2026-01-29 12:23:18.530 INFO 7496 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
|
||||
2026-01-29 12:23:18.554 INFO 7496 --- [ main] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:testdb'
|
||||
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
|
||||
Initialization Sequence datacenterId:1 workerId:11
|
||||
_ _ |_ _ _|_. ___ _ | _
|
||||
| | |\/|_)(_| | |_\ |_)||_|_\
|
||||
/ |
|
||||
3.5.5
|
||||
2026-01-29 12:23:19.273 WARN 7496 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'appointmentController' defined in file [/mnt/d/bs/gpf_pet_hospital/backend/target/classes/com/gpf/pethospital/controller/AppointmentController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'appointmentServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'appointmentMapper' defined in file [/mnt/d/bs/gpf_pet_hospital/backend/target/classes/com/gpf/pethospital/mapper/AppointmentMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionTemplate'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Invocation of init method failed; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #4 of URL [file:/mnt/d/bs/gpf_pet_hospital/backend/target/classes/data.sql]: INSERT INTO pet (name, species, breed, gender, age, owner_id, health_status) VALUES ('小白', '狗', '金毛', 'M', 3, 3, '健康'); nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "AGE" not found; SQL statement:
|
||||
INSERT INTO pet (name, species, breed, gender, age, owner_id, health_status) VALUES ('小白', '狗', '金毛', 'M', 3, 3, '健康') [42122-214]
|
||||
2026-01-29 12:23:19.274 INFO 7496 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
|
||||
2026-01-29 12:23:19.275 INFO 7496 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
|
||||
2026-01-29 12:23:19.280 INFO 7496 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
|
||||
2026-01-29 12:23:19.294 INFO 7496 --- [ main] ConditionEvaluationReportLoggingListener :
|
||||
|
||||
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
|
||||
2026-01-29 12:23:19.381 ERROR 7496 --- [ main] o.s.boot.SpringApplication : Application run failed
|
||||
|
||||
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'appointmentController' defined in file [/mnt/d/bs/gpf_pet_hospital/backend/target/classes/com/gpf/pethospital/controller/AppointmentController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'appointmentServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'appointmentMapper' defined in file [/mnt/d/bs/gpf_pet_hospital/backend/target/classes/com/gpf/pethospital/mapper/AppointmentMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionTemplate'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Invocation of init method failed; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #4 of URL [file:/mnt/d/bs/gpf_pet_hospital/backend/target/classes/data.sql]: INSERT INTO pet (name, species, breed, gender, age, owner_id, health_status) VALUES ('小白', '狗', '金毛', 'M', 3, 3, '健康'); nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "AGE" not found; SQL statement:
|
||||
INSERT INTO pet (name, species, breed, gender, age, owner_id, health_status) VALUES ('小白', '狗', '金毛', 'M', 3, 3, '健康') [42122-214]
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:801) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:224) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:929) ~[spring-context-5.3.31.jar:5.3.31]
|
||||
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:591) ~[spring-context-5.3.31.jar:5.3.31]
|
||||
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.18.jar:2.7.18]
|
||||
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) ~[spring-boot-2.7.18.jar:2.7.18]
|
||||
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:409) ~[spring-boot-2.7.18.jar:2.7.18]
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) ~[spring-boot-2.7.18.jar:2.7.18]
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300) ~[spring-boot-2.7.18.jar:2.7.18]
|
||||
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1289) ~[spring-boot-2.7.18.jar:2.7.18]
|
||||
at com.gpf.pethospital.PetHospitalApplication.main(PetHospitalApplication.java:15) ~[classes/:na]
|
||||
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'appointmentServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'appointmentMapper' defined in file [/mnt/d/bs/gpf_pet_hospital/backend/target/classes/com/gpf/pethospital/mapper/AppointmentMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionTemplate'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Invocation of init method failed; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #4 of URL [file:/mnt/d/bs/gpf_pet_hospital/backend/target/classes/data.sql]: INSERT INTO pet (name, species, breed, gender, age, owner_id, health_status) VALUES ('小白', '狗', '金毛', 'M', 3, 3, '健康'); nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "AGE" not found; SQL statement:
|
||||
INSERT INTO pet (name, species, breed, gender, age, owner_id, health_status) VALUES ('小白', '狗', '金毛', 'M', 3, 3, '健康') [42122-214]
|
||||
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:713) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:693) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:408) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:619) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:911) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:788) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
... 19 common frames omitted
|
||||
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'appointmentMapper' defined in file [/mnt/d/bs/gpf_pet_hospital/backend/target/classes/com/gpf/pethospital/mapper/AppointmentMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionTemplate'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Invocation of init method failed; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #4 of URL [file:/mnt/d/bs/gpf_pet_hospital/backend/target/classes/data.sql]: INSERT INTO pet (name, species, breed, gender, age, owner_id, health_status) VALUES ('小白', '狗', '金毛', 'M', 3, 3, '健康'); nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "AGE" not found; SQL statement:
|
||||
INSERT INTO pet (name, species, breed, gender, age, owner_id, health_status) VALUES ('小白', '狗', '金毛', 'M', 3, 3, '健康') [42122-214]
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1534) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1417) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:619) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:710) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
... 34 common frames omitted
|
||||
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Invocation of init method failed; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #4 of URL [file:/mnt/d/bs/gpf_pet_hospital/backend/target/classes/data.sql]: INSERT INTO pet (name, species, breed, gender, age, owner_id, health_status) VALUES ('小白', '狗', '金毛', 'M', 3, 3, '健康'); nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "AGE" not found; SQL statement:
|
||||
INSERT INTO pet (name, species, breed, gender, age, owner_id, health_status) VALUES ('小白', '狗', '金毛', 'M', 3, 3, '健康') [42122-214]
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1519) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
... 45 common frames omitted
|
||||
Caused by: org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #4 of URL [file:/mnt/d/bs/gpf_pet_hospital/backend/target/classes/data.sql]: INSERT INTO pet (name, species, breed, gender, age, owner_id, health_status) VALUES ('小白', '狗', '金毛', 'M', 3, 3, '健康'); nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "AGE" not found; SQL statement:
|
||||
INSERT INTO pet (name, species, breed, gender, age, owner_id, health_status) VALUES ('小白', '狗', '金毛', 'M', 3, 3, '健康') [42122-214]
|
||||
at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:282) ~[spring-jdbc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.jdbc.datasource.init.ResourceDatabasePopulator.populate(ResourceDatabasePopulator.java:254) ~[spring-jdbc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.jdbc.datasource.init.DatabasePopulatorUtils.execute(DatabasePopulatorUtils.java:54) ~[spring-jdbc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer.runScripts(DataSourceScriptDatabaseInitializer.java:90) ~[spring-boot-2.7.18.jar:2.7.18]
|
||||
at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.runScripts(AbstractScriptDatabaseInitializer.java:145) ~[spring-boot-2.7.18.jar:2.7.18]
|
||||
at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.applyScripts(AbstractScriptDatabaseInitializer.java:107) ~[spring-boot-2.7.18.jar:2.7.18]
|
||||
at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.applyDataScripts(AbstractScriptDatabaseInitializer.java:101) ~[spring-boot-2.7.18.jar:2.7.18]
|
||||
at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.initializeDatabase(AbstractScriptDatabaseInitializer.java:76) ~[spring-boot-2.7.18.jar:2.7.18]
|
||||
at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.afterPropertiesSet(AbstractScriptDatabaseInitializer.java:65) ~[spring-boot-2.7.18.jar:2.7.18]
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.31.jar:5.3.31]
|
||||
... 57 common frames omitted
|
||||
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "AGE" not found; SQL statement:
|
||||
INSERT INTO pet (name, species, breed, gender, age, owner_id, health_status) VALUES ('小白', '狗', '金毛', 'M', 3, 3, '健康') [42122-214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.get(DbException.java:223) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.get(DbException.java:199) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.table.Table.getColumn(Table.java:749) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseColumn(Parser.java:1256) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseColumnList(Parser.java:1241) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseInsert(Parser.java:1641) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parsePrepared(Parser.java:814) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parse(Parser.java:689) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parse(Parser.java:661) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.prepareCommand(Parser.java:569) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.engine.SessionLocal.prepareCommand(SessionLocal.java:554) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:237) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:223) ~[h2-2.1.214.jar:2.1.214]
|
||||
at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) ~[HikariCP-4.0.3.jar:na]
|
||||
at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) ~[HikariCP-4.0.3.jar:na]
|
||||
at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:261) ~[spring-jdbc-5.3.31.jar:5.3.31]
|
||||
... 67 common frames omitted
|
||||
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] [1;31mBUILD FAILURE[m
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] Total time: 16.764 s
|
||||
[[1;34mINFO[m] Finished at: 2026-01-29T12:23:19+08:00
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;31mERROR[m] Failed to execute goal [32morg.springframework.boot:spring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m on project [36mpet-hospital[m: [1;31mApplication finished with exit code: 1[m -> [1m[Help 1][m
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] To see the full stack trace of the errors, re-run Maven with the [1m-e[m switch.
|
||||
[[1;31mERROR[m] Re-run Maven using the [1m-X[m switch to enable full debug logging.
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] For more information about the errors and possible solutions, please read the following articles:
|
||||
[[1;31mERROR[m] [1m[Help 1][m http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
|
||||
344
backend/backend_full_flow.log
Normal file
344
backend/backend_full_flow.log
Normal file
@@ -0,0 +1,344 @@
|
||||
[[1;34mINFO[m] Scanning for projects...
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m------------------------< [0;36mcom.gpf:pet-hospital[0;1m >------------------------[m
|
||||
[[1;34mINFO[m] [1mBuilding 爱维宠物医院管理平台 1.0.0[m
|
||||
[[1;34mINFO[m] [1m--------------------------------[ jar ]---------------------------------[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m>>> [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m > [0;1mtest-compile[m @ [36mpet-hospital[0;1m >>>[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:resources[m [1m(default-resources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] Copying 2 resources
|
||||
[[1;34mINFO[m] Copying 3 resources
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:compile[m [1m(default-compile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Nothing to compile - all classes are up to date
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:testResources[m [1m(default-testResources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] skip non existing resourceDirectory /mnt/d/bs/gpf_pet_hospital/backend/src/test/resources
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:testCompile[m [1m(default-testCompile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] No sources to compile
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m<<< [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m < [0;1mtest-compile[m @ [36mpet-hospital[0;1m <<<[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Attaching agents: []
|
||||
|
||||
. ____ _ __ _ _
|
||||
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
|
||||
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
|
||||
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
|
||||
' |____| .__|_| |_|_| |_\__, | / / / /
|
||||
=========|_|==============|___/=/_/_/_/
|
||||
:: Spring Boot :: (v2.7.18)
|
||||
|
||||
2026-01-29 12:21:46.885 INFO 7324 --- [ main] c.g.pethospital.PetHospitalApplication : Starting PetHospitalApplication using Java 17.0.17 on LAPTOP-FS8K5GSO with PID 7324 (/mnt/d/bs/gpf_pet_hospital/backend/target/classes started by wangzq in /mnt/d/bs/gpf_pet_hospital/backend)
|
||||
2026-01-29 12:21:46.888 INFO 7324 --- [ main] c.g.pethospital.PetHospitalApplication : The following 1 profile is active: "dev"
|
||||
2026-01-29 12:21:52.609 INFO 7324 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http)
|
||||
2026-01-29 12:21:52.633 INFO 7324 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
|
||||
2026-01-29 12:21:52.634 INFO 7324 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.83]
|
||||
2026-01-29 12:21:52.800 INFO 7324 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring embedded WebApplicationContext
|
||||
2026-01-29 12:21:52.801 INFO 7324 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5830 ms
|
||||
2026-01-29 12:21:52.855 INFO 7324 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
|
||||
2026-01-29 12:21:53.685 INFO 7324 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
|
||||
2026-01-29 12:21:53.707 INFO 7324 --- [ main] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:testdb'
|
||||
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
|
||||
Initialization Sequence datacenterId:1 workerId:15
|
||||
_ _ |_ _ _|_. ___ _ | _
|
||||
| | |\/|_)(_| | |_\ |_)||_|_\
|
||||
/ |
|
||||
3.5.5
|
||||
2026-01-29 12:21:56.382 WARN 7324 --- [ main] .s.s.UserDetailsServiceAutoConfiguration :
|
||||
|
||||
Using generated security password: 3ae24633-3a04-4e91-9dd2-f686ccd8de18
|
||||
|
||||
This generated password is for development use only. Your security configuration must be updated before running your application in production.
|
||||
|
||||
2026-01-29 12:21:56.775 INFO 7324 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@240f350a, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@706f6d26, org.springframework.security.web.context.SecurityContextPersistenceFilter@6a1568d6, org.springframework.security.web.header.HeaderWriterFilter@40df6090, org.springframework.security.web.authentication.logout.LogoutFilter@6b27b2d0, com.gpf.pethospital.security.JwtAuthenticationFilter@3af2f846, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@1b37fbec, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@bb3ecfe, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@6af65f29, org.springframework.security.web.session.SessionManagementFilter@291a4791, org.springframework.security.web.access.ExceptionTranslationFilter@11a3a45f, org.springframework.security.web.access.intercept.AuthorizationFilter@62b6c045]
|
||||
2026-01-29 12:21:58.151 INFO 7324 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path '/api'
|
||||
2026-01-29 12:21:58.168 INFO 7324 --- [ main] c.g.pethospital.PetHospitalApplication : Started PetHospitalApplication in 12.599 seconds (JVM running for 13.252)
|
||||
2026-01-29 12:22:05.764 INFO 7324 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||
2026-01-29 12:22:05.765 INFO 7324 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
|
||||
2026-01-29 12:22:05.766 INFO 7324 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@31b23466] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@155985460 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin(String), admin(String), admin(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 1, admin, 13800138000, admin@example.com, $2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi, ADMIN, 1, null, 2026-01-29 12:21:54.441399, 2026-01-29 12:21:54.441399, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@31b23466]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@11618e07] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1428743376 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: INSERT INTO prescription ( visit_id, doctor_id, status, create_time, update_time ) VALUES ( ?, ?, ?, ?, ? )
|
||||
==> Parameters: 1(Long), 1(Long), DRAFT(String), 2026-01-29T12:22:11.451463382(LocalDateTime), 2026-01-29T12:22:11.451463382(LocalDateTime)
|
||||
<== Updates: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@11618e07]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1eccf175] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1908255895 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT(*) AS total FROM appointment WHERE deleted = 0
|
||||
==> Parameters:
|
||||
<== Columns: TOTAL
|
||||
<== Row: 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1eccf175]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@530348d5] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1397845812 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT(*) AS total FROM appointment WHERE deleted = 0
|
||||
==> Parameters:
|
||||
<== Columns: TOTAL
|
||||
<== Row: 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@530348d5]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@773e0205] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@2046423698 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: customer(String), customer(String), customer(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 3, customer, 13900139000, customer@example.com, $2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi, CUSTOMER, 1, null, 2026-01-29 12:21:54.449498, 2026-01-29 12:21:54.449498, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@773e0205]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1402ee31] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@449123009 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin(String), admin(String), admin(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 1, admin, 13800138000, admin@example.com, $2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi, ADMIN, 1, null, 2026-01-29 12:21:54.441399, 2026-01-29 12:21:54.441399, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1402ee31]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@393abbd] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@503935856 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT(*) AS total FROM appointment WHERE deleted = 0 AND (customer_id = ?)
|
||||
==> Parameters: 3(Long)
|
||||
<== Columns: TOTAL
|
||||
<== Row: 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@393abbd]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@22dbff1c] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@126819480 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT(*) AS total FROM appointment WHERE deleted = 0
|
||||
==> Parameters:
|
||||
<== Columns: TOTAL
|
||||
<== Row: 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@22dbff1c]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@27695f1d] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1044329755 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT(*) AS total FROM pet WHERE deleted = 0
|
||||
==> Parameters:
|
||||
<== Columns: TOTAL
|
||||
<== Row: 1
|
||||
<== Total: 1
|
||||
==> Preparing: SELECT id,owner_id,name,breed,gender,birthday,weight,photo,remark,create_time,update_time,deleted FROM pet WHERE deleted=0 LIMIT ?
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@27695f1d]
|
||||
2026-01-29 12:22:42.469 ERROR 7324 --- [nio-8081-exec-6] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/api] threw exception [Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException:
|
||||
### Error querying database. Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "BIRTHDAY" not found; SQL statement:
|
||||
SELECT id,owner_id,name,breed,gender,birthday,weight,photo,remark,create_time,update_time,deleted FROM pet WHERE deleted=0 LIMIT ? [42122-214]
|
||||
### The error may exist in com/gpf/pethospital/mapper/PetMapper.java (best guess)
|
||||
### The error may involve com.gpf.pethospital.mapper.PetMapper.selectList
|
||||
### The error occurred while executing a query
|
||||
### SQL: SELECT id,owner_id,name,breed,gender,birthday,weight,photo,remark,create_time,update_time,deleted FROM pet WHERE deleted=0 LIMIT ?
|
||||
### Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "BIRTHDAY" not found; SQL statement:
|
||||
SELECT id,owner_id,name,breed,gender,birthday,weight,photo,remark,create_time,update_time,deleted FROM pet WHERE deleted=0 LIMIT ? [42122-214]
|
||||
; bad SQL grammar []; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "BIRTHDAY" not found; SQL statement:
|
||||
SELECT id,owner_id,name,breed,gender,birthday,weight,photo,remark,create_time,update_time,deleted FROM pet WHERE deleted=0 LIMIT ? [42122-214]] with root cause
|
||||
|
||||
org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "BIRTHDAY" not found; SQL statement:
|
||||
SELECT id,owner_id,name,breed,gender,birthday,weight,photo,remark,create_time,update_time,deleted FROM pet WHERE deleted=0 LIMIT ? [42122-214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.get(DbException.java:223) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.get(DbException.java:199) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.expression.ExpressionColumn.getColumnException(ExpressionColumn.java:244) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.expression.ExpressionColumn.optimizeOther(ExpressionColumn.java:226) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:213) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.query.Select.optimizeExpressionsAndPreserveAliases(Select.java:1285) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.query.Select.prepareExpressions(Select.java:1167) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.query.Query.prepare(Query.java:218) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.prepareCommand(Parser.java:575) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.engine.SessionLocal.prepareCommand(SessionLocal.java:554) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:92) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:288) ~[h2-2.1.214.jar:2.1.214]
|
||||
at com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:337) ~[HikariCP-4.0.3.jar:na]
|
||||
at com.zaxxer.hikari.pool.HikariProxyConnection.prepareStatement(HikariProxyConnection.java) ~[HikariCP-4.0.3.jar:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.logging.jdbc.ConnectionLogger.invoke(ConnectionLogger.java:53) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy3/jdk.proxy3.$Proxy64.prepareStatement(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.statement.PreparedStatementHandler.instantiateStatement(PreparedStatementHandler.java:88) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java:90) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.statement.RoutingStatementHandler.prepare(RoutingStatementHandler.java:60) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy106.prepare(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:90) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:64) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:336) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy105.query(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy71.selectList(Unknown Source) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:152) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy85.selectList(Unknown Source) ~[na:na]
|
||||
at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectPage(BaseMapper.java:348) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732) ~[na:na]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:166) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy85.selectPage(Unknown Source) ~[na:na]
|
||||
at com.baomidou.mybatisplus.extension.service.IService.page(IService.java:448) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.extension.service.IService$$FastClassBySpringCGLIB$$f8525d18.invoke(<generated>) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at com.gpf.pethospital.service.impl.PetServiceImpl$$EnhancerBySpringCGLIB$$e0f570e.page(<generated>) ~[classes/:na]
|
||||
at com.gpf.pethospital.controller.PetController.list(PetController.java:33) ~[classes/:na]
|
||||
at com.gpf.pethospital.controller.PetController$$FastClassBySpringCGLIB$$78a1db9c.invoke(<generated>) ~[classes/:na]
|
||||
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at com.gpf.pethospital.controller.PetController$$EnhancerBySpringCGLIB$$28c5e4ba.list(<generated>) ~[classes/:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:529) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:96) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at com.gpf.pethospital.security.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:45) ~[classes/:na]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]
|
||||
|
||||
2026-01-29 12:22:57.837 INFO 7324 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
|
||||
2026-01-29 12:22:57.838 INFO 7324 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] [1;31mBUILD FAILURE[m
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] Total time: 01:20 min
|
||||
[[1;34mINFO[m] Finished at: 2026-01-29T12:22:57+08:00
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;31mERROR[m] Failed to execute goal [32morg.springframework.boot:spring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m on project [36mpet-hospital[m: [1;31mApplication finished with exit code: 143[m -> [1m[Help 1][m
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] To see the full stack trace of the errors, re-run Maven with the [1m-e[m switch.
|
||||
[[1;31mERROR[m] Re-run Maven using the [1m-X[m switch to enable full debug logging.
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] For more information about the errors and possible solutions, please read the following articles:
|
||||
[[1;31mERROR[m] [1m[Help 1][m http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
|
||||
429
backend/backend_jwt_fixed.log
Normal file
429
backend/backend_jwt_fixed.log
Normal file
@@ -0,0 +1,429 @@
|
||||
[[1;34mINFO[m] Scanning for projects...
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m------------------------< [0;36mcom.gpf:pet-hospital[0;1m >------------------------[m
|
||||
[[1;34mINFO[m] [1mBuilding 爱维宠物医院管理平台 1.0.0[m
|
||||
[[1;34mINFO[m] [1m--------------------------------[ jar ]---------------------------------[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m>>> [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m > [0;1mtest-compile[m @ [36mpet-hospital[0;1m >>>[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:resources[m [1m(default-resources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] Copying 2 resources
|
||||
[[1;34mINFO[m] Copying 1 resource
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:compile[m [1m(default-compile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Nothing to compile - all classes are up to date
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:testResources[m [1m(default-testResources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] skip non existing resourceDirectory /mnt/d/bs/gpf_pet_hospital/backend/src/test/resources
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:testCompile[m [1m(default-testCompile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] No sources to compile
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m<<< [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m < [0;1mtest-compile[m @ [36mpet-hospital[0;1m <<<[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Attaching agents: []
|
||||
|
||||
. ____ _ __ _ _
|
||||
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
|
||||
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
|
||||
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
|
||||
' |____| .__|_| |_|_| |_\__, | / / / /
|
||||
=========|_|==============|___/=/_/_/_/
|
||||
:: Spring Boot :: (v2.7.18)
|
||||
|
||||
2026-01-29 12:11:44.343 INFO 6533 --- [ main] c.g.pethospital.PetHospitalApplication : Starting PetHospitalApplication using Java 17.0.17 on LAPTOP-FS8K5GSO with PID 6533 (/mnt/d/bs/gpf_pet_hospital/backend/target/classes started by wangzq in /mnt/d/bs/gpf_pet_hospital/backend)
|
||||
2026-01-29 12:11:44.348 INFO 6533 --- [ main] c.g.pethospital.PetHospitalApplication : The following 1 profile is active: "dev"
|
||||
2026-01-29 12:11:49.720 INFO 6533 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http)
|
||||
2026-01-29 12:11:49.746 INFO 6533 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
|
||||
2026-01-29 12:11:49.746 INFO 6533 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.83]
|
||||
2026-01-29 12:11:49.915 INFO 6533 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring embedded WebApplicationContext
|
||||
2026-01-29 12:11:49.915 INFO 6533 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5483 ms
|
||||
2026-01-29 12:11:49.970 INFO 6533 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
|
||||
2026-01-29 12:11:50.790 INFO 6533 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
|
||||
2026-01-29 12:11:50.821 INFO 6533 --- [ main] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:testdb'
|
||||
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
|
||||
Initialization Sequence datacenterId:1 workerId:16
|
||||
_ _ |_ _ _|_. ___ _ | _
|
||||
| | |\/|_)(_| | |_\ |_)||_|_\
|
||||
/ |
|
||||
3.5.5
|
||||
2026-01-29 12:11:53.249 WARN 6533 --- [ main] .s.s.UserDetailsServiceAutoConfiguration :
|
||||
|
||||
Using generated security password: 609d260c-f511-4bb7-8d09-763961b92f36
|
||||
|
||||
This generated password is for development use only. Your security configuration must be updated before running your application in production.
|
||||
|
||||
2026-01-29 12:11:53.571 INFO 6533 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@797fcf9, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@16bd7ae1, org.springframework.security.web.context.SecurityContextPersistenceFilter@69796bd0, org.springframework.security.web.header.HeaderWriterFilter@7abeabe9, org.springframework.security.web.authentication.logout.LogoutFilter@46394f65, com.gpf.pethospital.security.JwtAuthenticationFilter@15d114ce, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@8c0a23f, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@26c8b296, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@3312f4f4, org.springframework.security.web.session.SessionManagementFilter@8c43966, org.springframework.security.web.access.ExceptionTranslationFilter@251c8145, org.springframework.security.web.access.intercept.AuthorizationFilter@391515c7]
|
||||
2026-01-29 12:11:55.004 INFO 6533 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path '/api'
|
||||
2026-01-29 12:11:55.018 INFO 6533 --- [ main] c.g.pethospital.PetHospitalApplication : Started PetHospitalApplication in 11.983 seconds (JVM running for 12.531)
|
||||
2026-01-29 12:12:01.117 INFO 6533 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||
2026-01-29 12:12:01.118 INFO 6533 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
|
||||
2026-01-29 12:12:01.120 INFO 6533 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3c9c63df] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@598865562 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin(String), admin(String), admin(String)
|
||||
<== Total: 0
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3c9c63df]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4d78424f] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@905814132 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT( * ) AS total FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin(String), 13800138000(String), admin@example.com(String)
|
||||
<== Columns: TOTAL
|
||||
<== Row: 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4d78424f]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5bd3eccd] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1551126099 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: INSERT INTO `user` ( username, phone, email, password, role, status, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )
|
||||
==> Parameters: admin(String), 13800138000(String), admin@example.com(String), $2a$10$m3/z7X3iQBgyaxxexhuKFuELrtYEWeWp819vohmW3WrY6pWj/R5HK(String), CUSTOMER(String), 1(Integer), 2026-01-29T12:12:05.326822806(LocalDateTime), 2026-01-29T12:12:05.326822806(LocalDateTime)
|
||||
<== Updates: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5bd3eccd]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@35fa3ce5] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@993903658 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin(String), admin(String), admin(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 1, admin, 13800138000, admin@example.com, $2a$10$m3/z7X3iQBgyaxxexhuKFuELrtYEWeWp819vohmW3WrY6pWj/R5HK, CUSTOMER, 1, null, 2026-01-29 12:12:05.326823, 2026-01-29 12:12:05.326823, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@35fa3ce5]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4fbe9fd8] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1098479711 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin(String), admin(String), admin(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 1, admin, 13800138000, admin@example.com, $2a$10$m3/z7X3iQBgyaxxexhuKFuELrtYEWeWp819vohmW3WrY6pWj/R5HK, CUSTOMER, 1, null, 2026-01-29 12:12:05.326823, 2026-01-29 12:12:05.326823, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4fbe9fd8]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2f3cfa05] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@142534824 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin(String), admin(String), admin(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 1, admin, 13800138000, admin@example.com, $2a$10$m3/z7X3iQBgyaxxexhuKFuELrtYEWeWp819vohmW3WrY6pWj/R5HK, CUSTOMER, 1, null, 2026-01-29 12:12:05.326823, 2026-01-29 12:12:05.326823, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2f3cfa05]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@337f2551] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@2089142133 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin(String), admin(String), admin(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 1, admin, 13800138000, admin@example.com, $2a$10$m3/z7X3iQBgyaxxexhuKFuELrtYEWeWp819vohmW3WrY6pWj/R5HK, CUSTOMER, 1, null, 2026-01-29 12:12:05.326823, 2026-01-29 12:12:05.326823, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@337f2551]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@58aced53] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1449859126 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT( * ) AS total FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin(String), 13800138000(String), admin@example.com(String)
|
||||
<== Columns: TOTAL
|
||||
<== Row: 1
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@58aced53]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6153cf09] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1871986003 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT( * ) AS total FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin123(String), 13900139000(String), admin123@example.com(String)
|
||||
<== Columns: TOTAL
|
||||
<== Row: 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6153cf09]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6baba479] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@782841704 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: INSERT INTO `user` ( username, phone, email, password, role, status, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )
|
||||
==> Parameters: admin123(String), 13900139000(String), admin123@example.com(String), $2a$10$/.neXm.CfrMpzxtwb9/nqeKxVQwOaim7Y77IUqmMH4XtlRVdgcNr.(String), CUSTOMER(String), 1(Integer), 2026-01-29T12:14:01.189417382(LocalDateTime), 2026-01-29T12:14:01.189417382(LocalDateTime)
|
||||
<== Updates: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6baba479]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7038ac66] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@2130660369 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin123(String), admin123(String), admin123(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 2, admin123, 13900139000, admin123@example.com, $2a$10$/.neXm.CfrMpzxtwb9/nqeKxVQwOaim7Y77IUqmMH4XtlRVdgcNr., CUSTOMER, 1, null, 2026-01-29 12:14:01.189417, 2026-01-29 12:14:01.189417, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7038ac66]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@57e83702] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1496302479 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin123(String), admin123(String), admin123(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 2, admin123, 13900139000, admin123@example.com, $2a$10$/.neXm.CfrMpzxtwb9/nqeKxVQwOaim7Y77IUqmMH4XtlRVdgcNr., CUSTOMER, 1, null, 2026-01-29 12:14:01.189417, 2026-01-29 12:14:01.189417, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@57e83702]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@234e6504] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1656828531 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT(*) AS total FROM pet WHERE deleted = 0 AND (owner_id = ?)
|
||||
==> Parameters: 2(Long)
|
||||
<== Columns: TOTAL
|
||||
<== Row: 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@234e6504]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1a43436d] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@2100380753 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT(*) AS total FROM pet WHERE deleted = 0 AND (owner_id = ?)
|
||||
==> Parameters: 2(Long)
|
||||
<== Columns: TOTAL
|
||||
<== Row: 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1a43436d]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@649b7e0d] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@67890336 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT(*) AS total FROM report WHERE deleted = 0
|
||||
==> Parameters:
|
||||
<== Columns: TOTAL
|
||||
<== Row: 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@649b7e0d]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@63c52e8c] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1349410361 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT(*) AS total FROM order_info WHERE deleted = 0 AND (customer_id = ?)
|
||||
==> Parameters: 2(Long)
|
||||
<== Columns: TOTAL
|
||||
<== Row: 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@63c52e8c]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@39c88552] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@912272537 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT(*) AS total FROM order_info WHERE deleted = 0 AND (customer_id = ?)
|
||||
==> Parameters: 2(Long)
|
||||
<== Columns: TOTAL
|
||||
<== Row: 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@39c88552]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@27aa8fcf] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@22254561 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin123(String), admin123(String), admin123(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 2, admin123, 13900139000, admin123@example.com, $2a$10$/.neXm.CfrMpzxtwb9/nqeKxVQwOaim7Y77IUqmMH4XtlRVdgcNr., CUSTOMER, 1, null, 2026-01-29 12:14:01.189417, 2026-01-29 12:14:01.189417, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@27aa8fcf]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@67592afd] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@111282002 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: INSERT INTO pet ( owner_id, name, breed, gender, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ? )
|
||||
==> Parameters: 2(Long), 小白(String), 金毛(String), M(String), 2026-01-29T12:16:24.527753394(LocalDateTime), 2026-01-29T12:16:24.527753394(LocalDateTime)
|
||||
<== Updates: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@67592afd]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2b91672] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@2134699660 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2b91672]
|
||||
2026-01-29 12:16:30.731 ERROR 6533 --- [nio-8081-exec-8] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/api] threw exception [Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException:
|
||||
### Error updating database. Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "TIME_SLOT" not found; SQL statement:
|
||||
INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ) [42122-214]
|
||||
### The error may exist in com/gpf/pethospital/mapper/AppointmentMapper.java (best guess)
|
||||
### The error may involve com.gpf.pethospital.mapper.AppointmentMapper.insert
|
||||
### The error occurred while executing an update
|
||||
### SQL: INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )
|
||||
### Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "TIME_SLOT" not found; SQL statement:
|
||||
INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ) [42122-214]
|
||||
; bad SQL grammar []; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "TIME_SLOT" not found; SQL statement:
|
||||
INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ) [42122-214]] with root cause
|
||||
|
||||
org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "TIME_SLOT" not found; SQL statement:
|
||||
INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? ) [42122-214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.get(DbException.java:223) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.get(DbException.java:199) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.table.Table.getColumn(Table.java:749) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseColumn(Parser.java:1256) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseColumnList(Parser.java:1241) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseInsert(Parser.java:1641) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parsePrepared(Parser.java:814) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parse(Parser.java:689) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parse(Parser.java:661) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.prepareCommand(Parser.java:569) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.engine.SessionLocal.prepareCommand(SessionLocal.java:554) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:92) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:1099) ~[h2-2.1.214.jar:2.1.214]
|
||||
at com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:372) ~[HikariCP-4.0.3.jar:na]
|
||||
at com.zaxxer.hikari.pool.HikariProxyConnection.prepareStatement(HikariProxyConnection.java) ~[HikariCP-4.0.3.jar:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.logging.jdbc.ConnectionLogger.invoke(ConnectionLogger.java:53) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy3/jdk.proxy3.$Proxy64.prepareStatement(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.statement.PreparedStatementHandler.instantiateStatement(PreparedStatementHandler.java:84) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java:90) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.statement.RoutingStatementHandler.prepare(RoutingStatementHandler.java:60) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.internal.reflect.GeneratedMethodAccessor15.invoke(Unknown Source) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy106.prepare(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:90) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy105.update(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:184) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy71.insert(Unknown Source) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:272) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:152) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy77.insert(Unknown Source) ~[na:na]
|
||||
at com.baomidou.mybatisplus.extension.service.IService.save(IService.java:60) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.extension.service.IService$$FastClassBySpringCGLIB$$f8525d18.invoke(<generated>) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at com.gpf.pethospital.service.impl.AppointmentServiceImpl$$EnhancerBySpringCGLIB$$4448a06d.save(<generated>) ~[classes/:na]
|
||||
at com.gpf.pethospital.controller.AppointmentController.create(AppointmentController.java:33) ~[classes/:na]
|
||||
at com.gpf.pethospital.controller.AppointmentController$$FastClassBySpringCGLIB$$4329551c.invoke(<generated>) ~[classes/:na]
|
||||
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at com.gpf.pethospital.controller.AppointmentController$$EnhancerBySpringCGLIB$$181e5b83.create(<generated>) ~[classes/:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:96) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at com.gpf.pethospital.security.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:45) ~[classes/:na]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]
|
||||
|
||||
2026-01-29 12:16:37.467 INFO 6533 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
|
||||
2026-01-29 12:16:37.469 INFO 6533 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] [1;31mBUILD FAILURE[m
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] Total time: 05:02 min
|
||||
[[1;34mINFO[m] Finished at: 2026-01-29T12:16:37+08:00
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;31mERROR[m] Failed to execute goal [32morg.springframework.boot:spring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m on project [36mpet-hospital[m: [1;31mApplication finished with exit code: 143[m -> [1m[Help 1][m
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] To see the full stack trace of the errors, re-run Maven with the [1m-e[m switch.
|
||||
[[1;31mERROR[m] Re-run Maven using the [1m-X[m switch to enable full debug logging.
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] For more information about the errors and possible solutions, please read the following articles:
|
||||
[[1;31mERROR[m] [1m[Help 1][m http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
|
||||
454
backend/backend_output.log
Normal file
454
backend/backend_output.log
Normal file
@@ -0,0 +1,454 @@
|
||||
[[1;34mINFO[m] Scanning for projects...
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m------------------------< [0;36mcom.gpf:pet-hospital[0;1m >------------------------[m
|
||||
[[1;34mINFO[m] [1mBuilding 爱维宠物医院管理平台 1.0.0[m
|
||||
[[1;34mINFO[m] [1m--------------------------------[ jar ]---------------------------------[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m>>> [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m > [0;1mtest-compile[m @ [36mpet-hospital[0;1m >>>[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:resources[m [1m(default-resources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] Copying 2 resources
|
||||
[[1;34mINFO[m] Copying 0 resource
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:compile[m [1m(default-compile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Nothing to compile - all classes are up to date
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:testResources[m [1m(default-testResources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] skip non existing resourceDirectory /mnt/d/bs/gpf_pet_hospital/backend/src/test/resources
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:testCompile[m [1m(default-testCompile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] No sources to compile
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m<<< [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m < [0;1mtest-compile[m @ [36mpet-hospital[0;1m <<<[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Attaching agents: []
|
||||
|
||||
. ____ _ __ _ _
|
||||
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
|
||||
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
|
||||
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
|
||||
' |____| .__|_| |_|_| |_\__, | / / / /
|
||||
=========|_|==============|___/=/_/_/_/
|
||||
:: Spring Boot :: (v2.7.18)
|
||||
|
||||
2026-01-29 12:04:47.805 INFO 5373 --- [ main] c.g.pethospital.PetHospitalApplication : Starting PetHospitalApplication using Java 17.0.17 on LAPTOP-FS8K5GSO with PID 5373 (/mnt/d/bs/gpf_pet_hospital/backend/target/classes started by wangzq in /mnt/d/bs/gpf_pet_hospital/backend)
|
||||
2026-01-29 12:04:47.811 INFO 5373 --- [ main] c.g.pethospital.PetHospitalApplication : The following 1 profile is active: "dev"
|
||||
2026-01-29 12:04:53.186 INFO 5373 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http)
|
||||
2026-01-29 12:04:53.211 INFO 5373 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
|
||||
2026-01-29 12:04:53.212 INFO 5373 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.83]
|
||||
2026-01-29 12:04:53.398 INFO 5373 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring embedded WebApplicationContext
|
||||
2026-01-29 12:04:53.398 INFO 5373 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5482 ms
|
||||
2026-01-29 12:04:53.460 INFO 5373 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
|
||||
2026-01-29 12:04:54.407 INFO 5373 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
|
||||
2026-01-29 12:04:54.438 INFO 5373 --- [ main] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:testdb'
|
||||
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
|
||||
Initialization Sequence datacenterId:1 workerId:11
|
||||
_ _ |_ _ _|_. ___ _ | _
|
||||
| | |\/|_)(_| | |_\ |_)||_|_\
|
||||
/ |
|
||||
3.5.5
|
||||
2026-01-29 12:04:56.741 WARN 5373 --- [ main] .s.s.UserDetailsServiceAutoConfiguration :
|
||||
|
||||
Using generated security password: bcbf67e6-f301-431f-9886-fb2c36acea73
|
||||
|
||||
This generated password is for development use only. Your security configuration must be updated before running your application in production.
|
||||
|
||||
2026-01-29 12:04:57.057 INFO 5373 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@35145874, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@77524ca7, org.springframework.security.web.context.SecurityContextPersistenceFilter@fbe70d8, org.springframework.security.web.header.HeaderWriterFilter@265c1a7c, org.springframework.security.web.authentication.logout.LogoutFilter@49580ca8, com.gpf.pethospital.security.JwtAuthenticationFilter@11df2829, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@7d2c345d, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@5db948c9, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@18e4674d, org.springframework.security.web.session.SessionManagementFilter@78c262ba, org.springframework.security.web.access.ExceptionTranslationFilter@740a0d5e, org.springframework.security.web.access.intercept.AuthorizationFilter@5b733ef7]
|
||||
2026-01-29 12:04:58.379 INFO 5373 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path '/api'
|
||||
2026-01-29 12:04:58.391 INFO 5373 --- [ main] c.g.pethospital.PetHospitalApplication : Started PetHospitalApplication in 11.994 seconds (JVM running for 12.596)
|
||||
2026-01-29 12:05:12.695 INFO 5373 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||
2026-01-29 12:05:12.695 INFO 5373 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
|
||||
2026-01-29 12:05:12.696 INFO 5373 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5dfce1d1] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@61730178 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5dfce1d1]
|
||||
2026-01-29 12:05:13.662 ERROR 5373 --- [nio-8081-exec-1] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/api] threw exception [Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException:
|
||||
### Error querying database. Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM [*]user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)"; expected "identifier"; SQL statement:
|
||||
SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?) [42001-214]
|
||||
### The error may exist in com/gpf/pethospital/mapper/UserMapper.java (best guess)
|
||||
### The error may involve com.gpf.pethospital.mapper.UserMapper.selectList
|
||||
### The error occurred while executing a query
|
||||
### SQL: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
### Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM [*]user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)"; expected "identifier"; SQL statement:
|
||||
SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?) [42001-214]
|
||||
; bad SQL grammar []; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM [*]user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)"; expected "identifier"; SQL statement:
|
||||
SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?) [42001-214]] with root cause
|
||||
|
||||
org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM [*]user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)"; expected "identifier"; SQL statement:
|
||||
SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?) [42001-214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.getSyntaxError(DbException.java:261) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.readIdentifier(Parser.java:5656) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.readTablePrimary(Parser.java:1814) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.readTableReference(Parser.java:2334) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseSelectFromPart(Parser.java:2772) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseSelect(Parser.java:2878) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQueryPrimary(Parser.java:2762) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQueryTerm(Parser.java:2633) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQueryExpressionBody(Parser.java:2612) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQueryExpressionBodyAndEndOfQuery(Parser.java:2605) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQueryExpression(Parser.java:2598) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQuery(Parser.java:2567) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parsePrepared(Parser.java:724) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parse(Parser.java:689) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parse(Parser.java:661) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.prepareCommand(Parser.java:569) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.engine.SessionLocal.prepareCommand(SessionLocal.java:554) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:92) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:288) ~[h2-2.1.214.jar:2.1.214]
|
||||
at com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:337) ~[HikariCP-4.0.3.jar:na]
|
||||
at com.zaxxer.hikari.pool.HikariProxyConnection.prepareStatement(HikariProxyConnection.java) ~[HikariCP-4.0.3.jar:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.logging.jdbc.ConnectionLogger.invoke(ConnectionLogger.java:53) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy3/jdk.proxy3.$Proxy64.prepareStatement(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.statement.PreparedStatementHandler.instantiateStatement(PreparedStatementHandler.java:88) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java:90) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.statement.RoutingStatementHandler.prepare(RoutingStatementHandler.java:60) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy106.prepare(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:90) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:64) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:336) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy105.query(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy71.selectList(Unknown Source) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:164) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:152) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy78.selectList(Unknown Source) ~[na:na]
|
||||
at com.baomidou.mybatisplus.core.mapper.BaseMapper.selectOne(BaseMapper.java:222) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732) ~[na:na]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:166) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy78.selectOne(Unknown Source) ~[na:na]
|
||||
at com.baomidou.mybatisplus.extension.service.impl.ServiceImpl.getOne(ServiceImpl.java:242) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.extension.service.IService.getOne(IService.java:327) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.extension.service.IService$$FastClassBySpringCGLIB$$f8525d18.invoke(<generated>) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at com.gpf.pethospital.service.impl.UserServiceImpl$$EnhancerBySpringCGLIB$$1dbf3365.getOne(<generated>) ~[classes/:na]
|
||||
at com.gpf.pethospital.controller.AuthController.login(AuthController.java:67) ~[classes/:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:96) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at com.gpf.pethospital.security.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:45) ~[classes/:na]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]
|
||||
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4d886b99] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1331623698 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT( * ) AS total FROM user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4d886b99]
|
||||
2026-01-29 12:05:38.384 ERROR 5373 --- [nio-8081-exec-2] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/api] threw exception [Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException:
|
||||
### Error querying database. Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "SELECT COUNT( * ) AS total FROM [*]user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)"; expected "identifier"; SQL statement:
|
||||
SELECT COUNT( * ) AS total FROM user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?) [42001-214]
|
||||
### The error may exist in com/gpf/pethospital/mapper/UserMapper.java (best guess)
|
||||
### The error may involve com.gpf.pethospital.mapper.UserMapper.selectCount
|
||||
### The error occurred while executing a query
|
||||
### SQL: SELECT COUNT( * ) AS total FROM user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
### Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "SELECT COUNT( * ) AS total FROM [*]user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)"; expected "identifier"; SQL statement:
|
||||
SELECT COUNT( * ) AS total FROM user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?) [42001-214]
|
||||
; bad SQL grammar []; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "SELECT COUNT( * ) AS total FROM [*]user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)"; expected "identifier"; SQL statement:
|
||||
SELECT COUNT( * ) AS total FROM user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?) [42001-214]] with root cause
|
||||
|
||||
org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "SELECT COUNT( * ) AS total FROM [*]user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)"; expected "identifier"; SQL statement:
|
||||
SELECT COUNT( * ) AS total FROM user WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?) [42001-214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.getSyntaxError(DbException.java:261) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.readIdentifier(Parser.java:5656) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.readTablePrimary(Parser.java:1814) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.readTableReference(Parser.java:2334) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseSelectFromPart(Parser.java:2772) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseSelect(Parser.java:2878) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQueryPrimary(Parser.java:2762) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQueryTerm(Parser.java:2633) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQueryExpressionBody(Parser.java:2612) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQueryExpressionBodyAndEndOfQuery(Parser.java:2605) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQueryExpression(Parser.java:2598) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQuery(Parser.java:2567) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parsePrepared(Parser.java:724) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parse(Parser.java:689) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parse(Parser.java:661) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.prepareCommand(Parser.java:569) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.engine.SessionLocal.prepareCommand(SessionLocal.java:554) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:92) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:288) ~[h2-2.1.214.jar:2.1.214]
|
||||
at com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:337) ~[HikariCP-4.0.3.jar:na]
|
||||
at com.zaxxer.hikari.pool.HikariProxyConnection.prepareStatement(HikariProxyConnection.java) ~[HikariCP-4.0.3.jar:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.logging.jdbc.ConnectionLogger.invoke(ConnectionLogger.java:53) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy3/jdk.proxy3.$Proxy64.prepareStatement(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.statement.PreparedStatementHandler.instantiateStatement(PreparedStatementHandler.java:88) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java:90) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.statement.RoutingStatementHandler.prepare(RoutingStatementHandler.java:60) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy106.prepare(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:90) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:64) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:336) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy105.query(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:75) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy71.selectOne(Unknown Source) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:160) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:87) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:152) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy78.selectCount(Unknown Source) ~[na:na]
|
||||
at com.baomidou.mybatisplus.extension.service.IService.count(IService.java:397) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.extension.service.IService$$FastClassBySpringCGLIB$$f8525d18.invoke(<generated>) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at com.gpf.pethospital.service.impl.UserServiceImpl$$EnhancerBySpringCGLIB$$1dbf3365.count(<generated>) ~[classes/:na]
|
||||
at com.gpf.pethospital.controller.AuthController.register(AuthController.java:45) ~[classes/:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:96) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at com.gpf.pethospital.security.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:45) ~[classes/:na]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]
|
||||
|
||||
2026-01-29 12:07:30.955 INFO 5373 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
|
||||
2026-01-29 12:07:30.957 INFO 5373 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] [1;31mBUILD FAILURE[m
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] Total time: 02:52 min
|
||||
[[1;34mINFO[m] Finished at: 2026-01-29T12:07:31+08:00
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;31mERROR[m] Failed to execute goal [32morg.springframework.boot:spring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m on project [36mpet-hospital[m: [1;31mApplication finished with exit code: 143[m -> [1m[Help 1][m
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] To see the full stack trace of the errors, re-run Maven with the [1m-e[m switch.
|
||||
[[1;31mERROR[m] Re-run Maven using the [1m-X[m switch to enable full debug logging.
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] For more information about the errors and possible solutions, please read the following articles:
|
||||
[[1;31mERROR[m] [1m[Help 1][m http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
|
||||
271
backend/backend_output_new.log
Normal file
271
backend/backend_output_new.log
Normal file
@@ -0,0 +1,271 @@
|
||||
[[1;34mINFO[m] Scanning for projects...
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m------------------------< [0;36mcom.gpf:pet-hospital[0;1m >------------------------[m
|
||||
[[1;34mINFO[m] [1mBuilding 爱维宠物医院管理平台 1.0.0[m
|
||||
[[1;34mINFO[m] [1m--------------------------------[ jar ]---------------------------------[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m>>> [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m > [0;1mtest-compile[m @ [36mpet-hospital[0;1m >>>[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:resources[m [1m(default-resources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] Copying 2 resources
|
||||
[[1;34mINFO[m] Copying 0 resource
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:compile[m [1m(default-compile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Changes detected - recompiling the module!
|
||||
[[1;34mINFO[m] Compiling 89 source files to /mnt/d/bs/gpf_pet_hospital/backend/target/classes
|
||||
[[1;34mINFO[m] /mnt/d/bs/gpf_pet_hospital/backend/src/main/java/com/gpf/pethospital/util/JwtUtil.java: /mnt/d/bs/gpf_pet_hospital/backend/src/main/java/com/gpf/pethospital/util/JwtUtil.java uses or overrides a deprecated API.
|
||||
[[1;34mINFO[m] /mnt/d/bs/gpf_pet_hospital/backend/src/main/java/com/gpf/pethospital/util/JwtUtil.java: Recompile with -Xlint:deprecation for details.
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:testResources[m [1m(default-testResources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] skip non existing resourceDirectory /mnt/d/bs/gpf_pet_hospital/backend/src/test/resources
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:testCompile[m [1m(default-testCompile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] No sources to compile
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m<<< [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m < [0;1mtest-compile[m @ [36mpet-hospital[0;1m <<<[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Attaching agents: []
|
||||
|
||||
. ____ _ __ _ _
|
||||
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
|
||||
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
|
||||
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
|
||||
' |____| .__|_| |_|_| |_\__, | / / / /
|
||||
=========|_|==============|___/=/_/_/_/
|
||||
:: Spring Boot :: (v2.7.18)
|
||||
|
||||
2026-01-29 12:07:59.679 INFO 5891 --- [ main] c.g.pethospital.PetHospitalApplication : Starting PetHospitalApplication using Java 17.0.17 on LAPTOP-FS8K5GSO with PID 5891 (/mnt/d/bs/gpf_pet_hospital/backend/target/classes started by wangzq in /mnt/d/bs/gpf_pet_hospital/backend)
|
||||
2026-01-29 12:07:59.683 INFO 5891 --- [ main] c.g.pethospital.PetHospitalApplication : The following 1 profile is active: "dev"
|
||||
2026-01-29 12:08:05.074 INFO 5891 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http)
|
||||
2026-01-29 12:08:05.099 INFO 5891 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
|
||||
2026-01-29 12:08:05.099 INFO 5891 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.83]
|
||||
2026-01-29 12:08:05.262 INFO 5891 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring embedded WebApplicationContext
|
||||
2026-01-29 12:08:05.263 INFO 5891 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5506 ms
|
||||
2026-01-29 12:08:05.337 INFO 5891 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
|
||||
2026-01-29 12:08:06.177 INFO 5891 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
|
||||
2026-01-29 12:08:06.202 INFO 5891 --- [ main] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:testdb'
|
||||
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
|
||||
Initialization Sequence datacenterId:1 workerId:12
|
||||
_ _ |_ _ _|_. ___ _ | _
|
||||
| | |\/|_)(_| | |_\ |_)||_|_\
|
||||
/ |
|
||||
3.5.5
|
||||
2026-01-29 12:08:08.609 WARN 5891 --- [ main] .s.s.UserDetailsServiceAutoConfiguration :
|
||||
|
||||
Using generated security password: 07eb8acb-7b5d-4e82-b3ad-dce7bd7d3078
|
||||
|
||||
This generated password is for development use only. Your security configuration must be updated before running your application in production.
|
||||
|
||||
2026-01-29 12:08:08.986 INFO 5891 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@626b639e, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@273fa9e, org.springframework.security.web.context.SecurityContextPersistenceFilter@3b35798, org.springframework.security.web.header.HeaderWriterFilter@7d2c345d, org.springframework.security.web.authentication.logout.LogoutFilter@39e53bef, com.gpf.pethospital.security.JwtAuthenticationFilter@527a8665, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@4702e7a5, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@73bb1337, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@7ab2a07e, org.springframework.security.web.session.SessionManagementFilter@7d1c164a, org.springframework.security.web.access.ExceptionTranslationFilter@fbe70d8, org.springframework.security.web.access.intercept.AuthorizationFilter@4b957db0]
|
||||
2026-01-29 12:08:10.363 INFO 5891 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path '/api'
|
||||
2026-01-29 12:08:10.378 INFO 5891 --- [ main] c.g.pethospital.PetHospitalApplication : Started PetHospitalApplication in 11.89 seconds (JVM running for 12.459)
|
||||
2026-01-29 12:08:41.327 INFO 5891 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||
2026-01-29 12:08:41.328 INFO 5891 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
|
||||
2026-01-29 12:08:41.330 INFO 5891 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@121856cf] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@754552516 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT( * ) AS total FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@121856cf]
|
||||
2026-01-29 12:08:42.218 ERROR 5891 --- [nio-8081-exec-1] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/api] threw exception [Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException:
|
||||
### Error querying database. Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "USER" not found (this database is empty); SQL statement:
|
||||
SELECT COUNT( * ) AS total FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?) [42104-214]
|
||||
### The error may exist in com/gpf/pethospital/mapper/UserMapper.java (best guess)
|
||||
### The error may involve com.gpf.pethospital.mapper.UserMapper.selectCount
|
||||
### The error occurred while executing a query
|
||||
### SQL: SELECT COUNT( * ) AS total FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
### Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "USER" not found (this database is empty); SQL statement:
|
||||
SELECT COUNT( * ) AS total FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?) [42104-214]
|
||||
; bad SQL grammar []; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "USER" not found (this database is empty); SQL statement:
|
||||
SELECT COUNT( * ) AS total FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?) [42104-214]] with root cause
|
||||
|
||||
org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "USER" not found (this database is empty); SQL statement:
|
||||
SELECT COUNT( * ) AS total FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?) [42104-214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:502) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.get(DbException.java:223) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.get(DbException.java:199) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.getTableOrViewNotFoundDbException(Parser.java:8385) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.getTableOrViewNotFoundDbException(Parser.java:8369) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.readTableOrView(Parser.java:8358) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.readTablePrimary(Parser.java:1863) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.readTableReference(Parser.java:2334) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseSelectFromPart(Parser.java:2772) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseSelect(Parser.java:2878) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQueryPrimary(Parser.java:2762) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQueryTerm(Parser.java:2633) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQueryExpressionBody(Parser.java:2612) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQueryExpressionBodyAndEndOfQuery(Parser.java:2605) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQueryExpression(Parser.java:2598) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parseQuery(Parser.java:2567) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parsePrepared(Parser.java:724) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parse(Parser.java:689) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.parse(Parser.java:661) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Parser.prepareCommand(Parser.java:569) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:631) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.engine.SessionLocal.prepareCommand(SessionLocal.java:554) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:92) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:288) ~[h2-2.1.214.jar:2.1.214]
|
||||
at com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:337) ~[HikariCP-4.0.3.jar:na]
|
||||
at com.zaxxer.hikari.pool.HikariProxyConnection.prepareStatement(HikariProxyConnection.java) ~[HikariCP-4.0.3.jar:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.logging.jdbc.ConnectionLogger.invoke(ConnectionLogger.java:53) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy3/jdk.proxy3.$Proxy64.prepareStatement(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.statement.PreparedStatementHandler.instantiateStatement(PreparedStatementHandler.java:88) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java:90) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.statement.RoutingStatementHandler.prepare(RoutingStatementHandler.java:60) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy107.prepare(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:90) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:64) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:336) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:81) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy106.query(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:75) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy71.selectOne(Unknown Source) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:160) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:87) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:152) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy78.selectCount(Unknown Source) ~[na:na]
|
||||
at com.baomidou.mybatisplus.extension.service.IService.count(IService.java:397) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.extension.service.IService$$FastClassBySpringCGLIB$$f8525d18.invoke(<generated>) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at com.gpf.pethospital.service.impl.UserServiceImpl$$EnhancerBySpringCGLIB$$4a59e45d.count(<generated>) ~[classes/:na]
|
||||
at com.gpf.pethospital.controller.AuthController.register(AuthController.java:45) ~[classes/:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:96) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at com.gpf.pethospital.security.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:45) ~[classes/:na]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]
|
||||
|
||||
2026-01-29 12:08:51.001 INFO 5891 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
|
||||
2026-01-29 12:08:51.003 INFO 5891 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] [1;31mBUILD FAILURE[m
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] Total time: 01:16 min
|
||||
[[1;34mINFO[m] Finished at: 2026-01-29T12:08:51+08:00
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;31mERROR[m] Failed to execute goal [32morg.springframework.boot:spring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m on project [36mpet-hospital[m: [1;31mApplication finished with exit code: 143[m -> [1m[Help 1][m
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] To see the full stack trace of the errors, re-run Maven with the [1m-e[m switch.
|
||||
[[1;31mERROR[m] Re-run Maven using the [1m-X[m switch to enable full debug logging.
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] For more information about the errors and possible solutions, please read the following articles:
|
||||
[[1;31mERROR[m] [1m[Help 1][m http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
|
||||
218
backend/backend_test_tables.log
Normal file
218
backend/backend_test_tables.log
Normal file
@@ -0,0 +1,218 @@
|
||||
[[1;34mINFO[m] Scanning for projects...
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m------------------------< [0;36mcom.gpf:pet-hospital[0;1m >------------------------[m
|
||||
[[1;34mINFO[m] [1mBuilding 爱维宠物医院管理平台 1.0.0[m
|
||||
[[1;34mINFO[m] [1m--------------------------------[ jar ]---------------------------------[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m>>> [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m > [0;1mtest-compile[m @ [36mpet-hospital[0;1m >>>[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:resources[m [1m(default-resources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] Copying 2 resources
|
||||
[[1;34mINFO[m] Copying 1 resource
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:compile[m [1m(default-compile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Nothing to compile - all classes are up to date
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:testResources[m [1m(default-testResources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] skip non existing resourceDirectory /mnt/d/bs/gpf_pet_hospital/backend/src/test/resources
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:testCompile[m [1m(default-testCompile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] No sources to compile
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m<<< [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m < [0;1mtest-compile[m @ [36mpet-hospital[0;1m <<<[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Attaching agents: []
|
||||
|
||||
. ____ _ __ _ _
|
||||
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
|
||||
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
|
||||
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
|
||||
' |____| .__|_| |_|_| |_\__, | / / / /
|
||||
=========|_|==============|___/=/_/_/_/
|
||||
:: Spring Boot :: (v2.7.18)
|
||||
|
||||
2026-01-29 12:10:45.802 INFO 6379 --- [ main] c.g.pethospital.PetHospitalApplication : Starting PetHospitalApplication using Java 17.0.17 on LAPTOP-FS8K5GSO with PID 6379 (/mnt/d/bs/gpf_pet_hospital/backend/target/classes started by wangzq in /mnt/d/bs/gpf_pet_hospital/backend)
|
||||
2026-01-29 12:10:45.807 INFO 6379 --- [ main] c.g.pethospital.PetHospitalApplication : The following 1 profile is active: "dev"
|
||||
2026-01-29 12:10:51.211 INFO 6379 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http)
|
||||
2026-01-29 12:10:51.236 INFO 6379 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
|
||||
2026-01-29 12:10:51.236 INFO 6379 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.83]
|
||||
2026-01-29 12:10:51.393 INFO 6379 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring embedded WebApplicationContext
|
||||
2026-01-29 12:10:51.394 INFO 6379 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5501 ms
|
||||
2026-01-29 12:10:51.447 INFO 6379 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
|
||||
2026-01-29 12:10:52.275 INFO 6379 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
|
||||
2026-01-29 12:10:52.301 INFO 6379 --- [ main] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:testdb'
|
||||
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
|
||||
Initialization Sequence datacenterId:1 workerId:16
|
||||
_ _ |_ _ _|_. ___ _ | _
|
||||
| | |\/|_)(_| | |_\ |_)||_|_\
|
||||
/ |
|
||||
3.5.5
|
||||
2026-01-29 12:10:54.594 WARN 6379 --- [ main] .s.s.UserDetailsServiceAutoConfiguration :
|
||||
|
||||
Using generated security password: 65907ba7-9111-4082-a03f-e9415af71a0f
|
||||
|
||||
This generated password is for development use only. Your security configuration must be updated before running your application in production.
|
||||
|
||||
2026-01-29 12:10:54.914 INFO 6379 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@26be9a6, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@4d518c66, org.springframework.security.web.context.SecurityContextPersistenceFilter@5a4dda2, org.springframework.security.web.header.HeaderWriterFilter@6df4af5, org.springframework.security.web.authentication.logout.LogoutFilter@582e9152, com.gpf.pethospital.security.JwtAuthenticationFilter@411fa0ce, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@34045582, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@1edccfd4, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@251d7fdd, org.springframework.security.web.session.SessionManagementFilter@250d440, org.springframework.security.web.access.ExceptionTranslationFilter@4966bab1, org.springframework.security.web.access.intercept.AuthorizationFilter@60b5e80d]
|
||||
2026-01-29 12:10:56.356 INFO 6379 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path '/api'
|
||||
2026-01-29 12:10:56.372 INFO 6379 --- [ main] c.g.pethospital.PetHospitalApplication : Started PetHospitalApplication in 11.887 seconds (JVM running for 12.549)
|
||||
2026-01-29 12:11:04.613 INFO 6379 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||
2026-01-29 12:11:04.614 INFO 6379 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
|
||||
2026-01-29 12:11:04.616 INFO 6379 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4643f176] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1864698444 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT( * ) AS total FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin(String), 13800138000(String), admin@example.com(String)
|
||||
<== Columns: TOTAL
|
||||
<== Row: 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4643f176]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3ec2f335] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1531731496 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: INSERT INTO `user` ( username, phone, email, password, role, status, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )
|
||||
==> Parameters: admin(String), 13800138000(String), admin@example.com(String), $2a$10$u68s2dGuJN0ETaIThD74HeDNq9hkdpKQ2aNxQjPW7jTG8/yr.ZId.(String), CUSTOMER(String), 1(Integer), 2026-01-29T12:11:05.481399469(LocalDateTime), 2026-01-29T12:11:05.481399469(LocalDateTime)
|
||||
<== Updates: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3ec2f335]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@d12e787] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1057347592 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin(String), admin(String), admin(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 1, admin, 13800138000, admin@example.com, $2a$10$u68s2dGuJN0ETaIThD74HeDNq9hkdpKQ2aNxQjPW7jTG8/yr.ZId., CUSTOMER, 1, null, 2026-01-29 12:11:05.481399, 2026-01-29 12:11:05.481399, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@d12e787]
|
||||
2026-01-29 12:11:08.292 ERROR 6379 --- [nio-8081-exec-2] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/api] threw exception [Request processing failed; nested exception is io.jsonwebtoken.io.DecodingException: Illegal base64 character: '-'] with root cause
|
||||
|
||||
io.jsonwebtoken.io.DecodingException: Illegal base64 character: '-'
|
||||
at io.jsonwebtoken.io.Base64.ctoi(Base64.java:221) ~[jjwt-api-0.11.5.jar:0.11.5]
|
||||
at io.jsonwebtoken.io.Base64.decodeFast(Base64.java:270) ~[jjwt-api-0.11.5.jar:0.11.5]
|
||||
at io.jsonwebtoken.io.Base64Decoder.decode(Base64Decoder.java:36) ~[jjwt-api-0.11.5.jar:0.11.5]
|
||||
at io.jsonwebtoken.io.Base64Decoder.decode(Base64Decoder.java:23) ~[jjwt-api-0.11.5.jar:0.11.5]
|
||||
at io.jsonwebtoken.io.ExceptionPropagatingDecoder.decode(ExceptionPropagatingDecoder.java:36) ~[jjwt-api-0.11.5.jar:0.11.5]
|
||||
at io.jsonwebtoken.impl.DefaultJwtBuilder.signWith(DefaultJwtBuilder.java:132) ~[jjwt-impl-0.11.5.jar:0.11.5]
|
||||
at com.gpf.pethospital.util.JwtUtil.generateToken(JwtUtil.java:31) ~[classes/:na]
|
||||
at com.gpf.pethospital.controller.AuthController.login(AuthController.java:74) ~[classes/:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:96) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at com.gpf.pethospital.security.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:45) ~[classes/:na]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]
|
||||
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@9b849ba] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@125810429 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT( * ) AS total FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin(String), 13800138000(String), admin@example.com(String)
|
||||
<== Columns: TOTAL
|
||||
<== Row: 1
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@9b849ba]
|
||||
2026-01-29 12:11:28.228 INFO 6379 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
|
||||
2026-01-29 12:11:28.231 INFO 6379 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] [1;31mBUILD FAILURE[m
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] Total time: 51.530 s
|
||||
[[1;34mINFO[m] Finished at: 2026-01-29T12:11:28+08:00
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;31mERROR[m] Failed to execute goal [32morg.springframework.boot:spring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m on project [36mpet-hospital[m: [1;31mApplication finished with exit code: 143[m -> [1m[Help 1][m
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] To see the full stack trace of the errors, re-run Maven with the [1m-e[m switch.
|
||||
[[1;31mERROR[m] Re-run Maven using the [1m-X[m switch to enable full debug logging.
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] For more information about the errors and possible solutions, please read the following articles:
|
||||
[[1;31mERROR[m] [1m[Help 1][m http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
|
||||
489
backend/backend_with_correct_schema.log
Normal file
489
backend/backend_with_correct_schema.log
Normal file
@@ -0,0 +1,489 @@
|
||||
[[1;34mINFO[m] Scanning for projects...
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m------------------------< [0;36mcom.gpf:pet-hospital[0;1m >------------------------[m
|
||||
[[1;34mINFO[m] [1mBuilding 爱维宠物医院管理平台 1.0.0[m
|
||||
[[1;34mINFO[m] [1m--------------------------------[ jar ]---------------------------------[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m>>> [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m > [0;1mtest-compile[m @ [36mpet-hospital[0;1m >>>[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:resources[m [1m(default-resources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] Copying 2 resources
|
||||
[[1;34mINFO[m] Copying 3 resources
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:compile[m [1m(default-compile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Nothing to compile - all classes are up to date
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:testResources[m [1m(default-testResources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] skip non existing resourceDirectory /mnt/d/bs/gpf_pet_hospital/backend/src/test/resources
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:testCompile[m [1m(default-testCompile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] No sources to compile
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m<<< [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m < [0;1mtest-compile[m @ [36mpet-hospital[0;1m <<<[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Attaching agents: []
|
||||
|
||||
. ____ _ __ _ _
|
||||
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
|
||||
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
|
||||
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
|
||||
' |____| .__|_| |_|_| |_\__, | / / / /
|
||||
=========|_|==============|___/=/_/_/_/
|
||||
:: Spring Boot :: (v2.7.18)
|
||||
|
||||
2026-01-29 12:19:06.333 INFO 7141 --- [ main] c.g.pethospital.PetHospitalApplication : Starting PetHospitalApplication using Java 17.0.17 on LAPTOP-FS8K5GSO with PID 7141 (/mnt/d/bs/gpf_pet_hospital/backend/target/classes started by wangzq in /mnt/d/bs/gpf_pet_hospital/backend)
|
||||
2026-01-29 12:19:06.337 INFO 7141 --- [ main] c.g.pethospital.PetHospitalApplication : The following 1 profile is active: "dev"
|
||||
2026-01-29 12:19:11.871 INFO 7141 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http)
|
||||
2026-01-29 12:19:11.896 INFO 7141 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
|
||||
2026-01-29 12:19:11.896 INFO 7141 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.83]
|
||||
2026-01-29 12:19:12.057 INFO 7141 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring embedded WebApplicationContext
|
||||
2026-01-29 12:19:12.058 INFO 7141 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5645 ms
|
||||
2026-01-29 12:19:12.111 INFO 7141 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
|
||||
2026-01-29 12:19:12.854 INFO 7141 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
|
||||
2026-01-29 12:19:12.876 INFO 7141 --- [ main] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:testdb'
|
||||
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
|
||||
Initialization Sequence datacenterId:1 workerId:8
|
||||
_ _ |_ _ _|_. ___ _ | _
|
||||
| | |\/|_)(_| | |_\ |_)||_|_\
|
||||
/ |
|
||||
3.5.5
|
||||
2026-01-29 12:19:15.314 WARN 7141 --- [ main] .s.s.UserDetailsServiceAutoConfiguration :
|
||||
|
||||
Using generated security password: 77b1aeeb-4e18-4223-9721-ff793ec89ea1
|
||||
|
||||
This generated password is for development use only. Your security configuration must be updated before running your application in production.
|
||||
|
||||
2026-01-29 12:19:15.635 INFO 7141 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@240f350a, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@706f6d26, org.springframework.security.web.context.SecurityContextPersistenceFilter@6a1568d6, org.springframework.security.web.header.HeaderWriterFilter@40df6090, org.springframework.security.web.authentication.logout.LogoutFilter@6b27b2d0, com.gpf.pethospital.security.JwtAuthenticationFilter@3af2f846, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@1b37fbec, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@bb3ecfe, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@6af65f29, org.springframework.security.web.session.SessionManagementFilter@291a4791, org.springframework.security.web.access.ExceptionTranslationFilter@11a3a45f, org.springframework.security.web.access.intercept.AuthorizationFilter@62b6c045]
|
||||
2026-01-29 12:19:16.997 INFO 7141 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path '/api'
|
||||
2026-01-29 12:19:17.013 INFO 7141 --- [ main] c.g.pethospital.PetHospitalApplication : Started PetHospitalApplication in 12.033 seconds (JVM running for 12.689)
|
||||
2026-01-29 12:19:22.832 INFO 7141 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||
2026-01-29 12:19:22.832 INFO 7141 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
|
||||
2026-01-29 12:19:22.833 INFO 7141 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@31b23466] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@155985460 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: customer(String), customer(String), customer(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 3, customer, 13900139000, customer@example.com, $2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi, CUSTOMER, 1, null, 2026-01-29 12:19:13.654131, 2026-01-29 12:19:13.654131, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@31b23466]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1562f046] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@495463010 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )
|
||||
==> Parameters: 3(Long), 1(Long), 2026-02-01(LocalDate), 09:00-10:00(String), PENDING(String), 常规检查(String), 2026-01-29T12:19:31.025850900(LocalDateTime), 2026-01-29T12:19:31.025850900(LocalDateTime)
|
||||
<== Updates: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1562f046]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7e0b09b] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@153570839 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin(String), admin(String), admin(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 1, admin, 13800138000, admin@example.com, $2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi, ADMIN, 1, null, 2026-01-29 12:19:13.645158, 2026-01-29 12:19:13.645158, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7e0b09b]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@14fac782] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@2084292749 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: INSERT INTO prescription ( visit_id, doctor_id, status, create_time, update_time ) VALUES ( ?, ?, ?, ?, ? )
|
||||
==> Parameters: 1(Long), 1(Long), DRAFT(String), 2026-01-29T12:19:48.104064819(LocalDateTime), 2026-01-29T12:19:48.104064819(LocalDateTime)
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@14fac782]
|
||||
2026-01-29 12:19:48.218 ERROR 7141 --- [nio-8081-exec-9] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/api] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException:
|
||||
### Error updating database. Cause: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not allowed for column "CUSTOMER_ID"; SQL statement:
|
||||
INSERT INTO prescription ( visit_id, doctor_id, status, create_time, update_time ) VALUES ( ?, ?, ?, ?, ? ) [23502-214]
|
||||
### The error may exist in com/gpf/pethospital/mapper/PrescriptionMapper.java (best guess)
|
||||
### The error may involve com.gpf.pethospital.mapper.PrescriptionMapper.insert-Inline
|
||||
### The error occurred while setting parameters
|
||||
### SQL: INSERT INTO prescription ( visit_id, doctor_id, status, create_time, update_time ) VALUES ( ?, ?, ?, ?, ? )
|
||||
### Cause: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not allowed for column "CUSTOMER_ID"; SQL statement:
|
||||
INSERT INTO prescription ( visit_id, doctor_id, status, create_time, update_time ) VALUES ( ?, ?, ?, ?, ? ) [23502-214]
|
||||
; NULL not allowed for column "CUSTOMER_ID"; SQL statement:
|
||||
INSERT INTO prescription ( visit_id, doctor_id, status, create_time, update_time ) VALUES ( ?, ?, ?, ?, ? ) [23502-214]; nested exception is org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not allowed for column "CUSTOMER_ID"; SQL statement:
|
||||
INSERT INTO prescription ( visit_id, doctor_id, status, create_time, update_time ) VALUES ( ?, ?, ?, ?, ? ) [23502-214]] with root cause
|
||||
|
||||
org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not allowed for column "CUSTOMER_ID"; SQL statement:
|
||||
INSERT INTO prescription ( visit_id, doctor_id, status, create_time, update_time ) VALUES ( ?, ?, ?, ?, ? ) [23502-214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:508) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.get(DbException.java:223) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.get(DbException.java:199) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.table.Column.validateConvertUpdateSequence(Column.java:365) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.table.Table.convertInsertRow(Table.java:926) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.dml.Insert.insertRows(Insert.java:167) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.dml.Insert.update(Insert.java:135) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.CommandContainer.executeUpdateWithGeneratedKeys(CommandContainer.java:242) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.CommandContainer.update(CommandContainer.java:163) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Command.executeUpdate(Command.java:252) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcPreparedStatement.execute(JdbcPreparedStatement.java:254) ~[h2-2.1.214.jar:2.1.214]
|
||||
at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44) ~[HikariCP-4.0.3.jar:na]
|
||||
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java) ~[HikariCP-4.0.3.jar:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:58) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy3/jdk.proxy3.$Proxy107.execute(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:48) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:75) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy106.update(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy105.update(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:184) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy71.insert(Unknown Source) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:272) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:152) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy86.insert(Unknown Source) ~[na:na]
|
||||
at com.baomidou.mybatisplus.extension.service.IService.save(IService.java:60) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.extension.service.IService$$FastClassBySpringCGLIB$$f8525d18.invoke(<generated>) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at com.gpf.pethospital.service.impl.PrescriptionServiceImpl$$EnhancerBySpringCGLIB$$834c711.save(<generated>) ~[classes/:na]
|
||||
at com.gpf.pethospital.controller.PrescriptionController.create(PrescriptionController.java:28) ~[classes/:na]
|
||||
at com.gpf.pethospital.controller.PrescriptionController$$FastClassBySpringCGLIB$$6a1d26f5.invoke(<generated>) ~[classes/:na]
|
||||
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:792) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.java:162) ~[spring-security-core-5.7.11.jar:5.7.11]
|
||||
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:707) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at com.gpf.pethospital.controller.PrescriptionController$$EnhancerBySpringCGLIB$$a4312665.create(<generated>) ~[classes/:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:96) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at com.gpf.pethospital.security.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:45) ~[classes/:na]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]
|
||||
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1402ee31] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@449123009 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: customer(String), customer(String), customer(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 3, customer, 13900139000, customer@example.com, $2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi, CUSTOMER, 1, null, 2026-01-29 12:19:13.654131, 2026-01-29 12:19:13.654131, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1402ee31]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@d3345fe] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@503378629 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT(*) AS total FROM prescription WHERE deleted = 0
|
||||
==> Parameters:
|
||||
<== Columns: TOTAL
|
||||
<== Row: 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@d3345fe]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@22dbff1c] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@543824485 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: INSERT INTO prescription ( status, create_time, update_time ) VALUES ( ?, ?, ? )
|
||||
==> Parameters: DRAFT(String), 2026-01-29T12:20:41.789304708(LocalDateTime), 2026-01-29T12:20:41.789304708(LocalDateTime)
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@22dbff1c]
|
||||
2026-01-29 12:20:41.792 ERROR 7141 --- [nio-8081-exec-4] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/api] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException:
|
||||
### Error updating database. Cause: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not allowed for column "VISIT_ID"; SQL statement:
|
||||
INSERT INTO prescription ( status, create_time, update_time ) VALUES ( ?, ?, ? ) [23502-214]
|
||||
### The error may exist in com/gpf/pethospital/mapper/PrescriptionMapper.java (best guess)
|
||||
### The error may involve com.gpf.pethospital.mapper.PrescriptionMapper.insert-Inline
|
||||
### The error occurred while setting parameters
|
||||
### SQL: INSERT INTO prescription ( status, create_time, update_time ) VALUES ( ?, ?, ? )
|
||||
### Cause: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not allowed for column "VISIT_ID"; SQL statement:
|
||||
INSERT INTO prescription ( status, create_time, update_time ) VALUES ( ?, ?, ? ) [23502-214]
|
||||
; NULL not allowed for column "VISIT_ID"; SQL statement:
|
||||
INSERT INTO prescription ( status, create_time, update_time ) VALUES ( ?, ?, ? ) [23502-214]; nested exception is org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not allowed for column "VISIT_ID"; SQL statement:
|
||||
INSERT INTO prescription ( status, create_time, update_time ) VALUES ( ?, ?, ? ) [23502-214]] with root cause
|
||||
|
||||
org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not allowed for column "VISIT_ID"; SQL statement:
|
||||
INSERT INTO prescription ( status, create_time, update_time ) VALUES ( ?, ?, ? ) [23502-214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:508) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.get(DbException.java:223) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.message.DbException.get(DbException.java:199) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.table.Column.validateConvertUpdateSequence(Column.java:365) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.table.Table.convertInsertRow(Table.java:926) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.dml.Insert.insertRows(Insert.java:167) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.dml.Insert.update(Insert.java:135) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.CommandContainer.executeUpdateWithGeneratedKeys(CommandContainer.java:242) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.CommandContainer.update(CommandContainer.java:163) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.command.Command.executeUpdate(Command.java:252) ~[h2-2.1.214.jar:2.1.214]
|
||||
at org.h2.jdbc.JdbcPreparedStatement.execute(JdbcPreparedStatement.java:254) ~[h2-2.1.214.jar:2.1.214]
|
||||
at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44) ~[HikariCP-4.0.3.jar:na]
|
||||
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java) ~[HikariCP-4.0.3.jar:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:58) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy3/jdk.proxy3.$Proxy107.execute(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:48) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:75) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy106.update(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:59) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy105.update(Unknown Source) ~[na:na]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:184) ~[mybatis-3.5.15.jar:3.5.15]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy71.insert(Unknown Source) ~[na:na]
|
||||
at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:272) ~[mybatis-spring-2.1.2.jar:2.1.2]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:152) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) ~[mybatis-plus-core-3.5.5.jar:3.5.5]
|
||||
at jdk.proxy2/jdk.proxy2.$Proxy86.insert(Unknown Source) ~[na:na]
|
||||
at com.baomidou.mybatisplus.extension.service.IService.save(IService.java:60) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at com.baomidou.mybatisplus.extension.service.IService$$FastClassBySpringCGLIB$$f8525d18.invoke(<generated>) ~[mybatis-plus-extension-3.5.5.jar:3.5.5]
|
||||
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:703) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at com.gpf.pethospital.service.impl.PrescriptionServiceImpl$$EnhancerBySpringCGLIB$$834c711.save(<generated>) ~[classes/:na]
|
||||
at com.gpf.pethospital.controller.PrescriptionController.create(PrescriptionController.java:28) ~[classes/:na]
|
||||
at com.gpf.pethospital.controller.PrescriptionController$$FastClassBySpringCGLIB$$6a1d26f5.invoke(<generated>) ~[classes/:na]
|
||||
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:792) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.authorization.method.AuthorizationManagerBeforeMethodInterceptor.invoke(AuthorizationManagerBeforeMethodInterceptor.java:162) ~[spring-security-core-5.7.11.jar:5.7.11]
|
||||
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:707) ~[spring-aop-5.3.31.jar:5.3.31]
|
||||
at com.gpf.pethospital.controller.PrescriptionController$$EnhancerBySpringCGLIB$$a4312665.create(<generated>) ~[classes/:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
|
||||
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
|
||||
at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.31.jar:5.3.31]
|
||||
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) ~[tomcat-embed-core-9.0.83.jar:4.0.FR]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:96) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at com.gpf.pethospital.security.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:45) ~[classes/:na]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.7.11.jar:5.7.11]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.31.jar:5.3.31]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.83.jar:9.0.83]
|
||||
at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]
|
||||
|
||||
2026-01-29 12:21:21.609 INFO 7141 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
|
||||
2026-01-29 12:21:21.611 INFO 7141 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] [1;31mBUILD FAILURE[m
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] Total time: 02:24 min
|
||||
[[1;34mINFO[m] Finished at: 2026-01-29T12:21:21+08:00
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;31mERROR[m] Failed to execute goal [32morg.springframework.boot:spring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m on project [36mpet-hospital[m: [1;31mApplication finished with exit code: 143[m -> [1m[Help 1][m
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] To see the full stack trace of the errors, re-run Maven with the [1m-e[m switch.
|
||||
[[1;31mERROR[m] Re-run Maven using the [1m-X[m switch to enable full debug logging.
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] For more information about the errors and possible solutions, please read the following articles:
|
||||
[[1;31mERROR[m] [1m[Help 1][m http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
|
||||
2
backend/backend_with_init.log
Normal file
2
backend/backend_with_init.log
Normal file
@@ -0,0 +1,2 @@
|
||||
Error: Could not find or load main class org.springframework.boot.loader.PropertiesLauncher
|
||||
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.loader.PropertiesLauncher
|
||||
79
backend/backend_with_schema.log
Normal file
79
backend/backend_with_schema.log
Normal file
@@ -0,0 +1,79 @@
|
||||
[[1;34mINFO[m] Scanning for projects...
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m------------------------< [0;36mcom.gpf:pet-hospital[0;1m >------------------------[m
|
||||
[[1;34mINFO[m] [1mBuilding 爱维宠物医院管理平台 1.0.0[m
|
||||
[[1;34mINFO[m] [1m--------------------------------[ jar ]---------------------------------[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m>>> [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m > [0;1mtest-compile[m @ [36mpet-hospital[0;1m >>>[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:resources[m [1m(default-resources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] Copying 2 resources
|
||||
[[1;34mINFO[m] Copying 1 resource
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:compile[m [1m(default-compile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Nothing to compile - all classes are up to date
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:testResources[m [1m(default-testResources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] skip non existing resourceDirectory /mnt/d/bs/gpf_pet_hospital/backend/src/test/resources
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:testCompile[m [1m(default-testCompile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] No sources to compile
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m<<< [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m < [0;1mtest-compile[m @ [36mpet-hospital[0;1m <<<[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Attaching agents: []
|
||||
|
||||
. ____ _ __ _ _
|
||||
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
|
||||
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
|
||||
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
|
||||
' |____| .__|_| |_|_| |_\__, | / / / /
|
||||
=========|_|==============|___/=/_/_/_/
|
||||
:: Spring Boot :: (v2.7.18)
|
||||
|
||||
2026-01-29 12:10:07.544 INFO 6203 --- [ main] c.g.pethospital.PetHospitalApplication : Starting PetHospitalApplication using Java 17.0.17 on LAPTOP-FS8K5GSO with PID 6203 (/mnt/d/bs/gpf_pet_hospital/backend/target/classes started by wangzq in /mnt/d/bs/gpf_pet_hospital/backend)
|
||||
2026-01-29 12:10:07.549 INFO 6203 --- [ main] c.g.pethospital.PetHospitalApplication : The following 1 profile is active: "dev"
|
||||
2026-01-29 12:10:13.073 INFO 6203 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http)
|
||||
2026-01-29 12:10:13.103 INFO 6203 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
|
||||
2026-01-29 12:10:13.104 INFO 6203 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.83]
|
||||
2026-01-29 12:10:13.299 INFO 6203 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring embedded WebApplicationContext
|
||||
2026-01-29 12:10:13.300 INFO 6203 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5675 ms
|
||||
2026-01-29 12:10:13.353 INFO 6203 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
|
||||
2026-01-29 12:10:14.132 INFO 6203 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
|
||||
2026-01-29 12:10:14.158 INFO 6203 --- [ main] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:testdb'
|
||||
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
|
||||
Initialization Sequence datacenterId:1 workerId:16
|
||||
_ _ |_ _ _|_. ___ _ | _
|
||||
| | |\/|_)(_| | |_\ |_)||_|_\
|
||||
/ |
|
||||
3.5.5
|
||||
2026-01-29 12:10:16.530 WARN 6203 --- [ main] .s.s.UserDetailsServiceAutoConfiguration :
|
||||
|
||||
Using generated security password: a12500af-8981-4b37-ac7e-b23ca72f676d
|
||||
|
||||
This generated password is for development use only. Your security configuration must be updated before running your application in production.
|
||||
|
||||
2026-01-29 12:10:16.846 INFO 6203 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@46394f65, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@31aab981, org.springframework.security.web.context.SecurityContextPersistenceFilter@76c86567, org.springframework.security.web.header.HeaderWriterFilter@4966bab1, org.springframework.security.web.authentication.logout.LogoutFilter@357f6391, com.gpf.pethospital.security.JwtAuthenticationFilter@26be9a6, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@5a4dda2, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@34045582, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@4d518c66, org.springframework.security.web.session.SessionManagementFilter@1b52699c, org.springframework.security.web.access.ExceptionTranslationFilter@38e83838, org.springframework.security.web.access.intercept.AuthorizationFilter@7971c2a9]
|
||||
2026-01-29 12:10:18.165 INFO 6203 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path '/api'
|
||||
2026-01-29 12:10:18.180 INFO 6203 --- [ main] c.g.pethospital.PetHospitalApplication : Started PetHospitalApplication in 12.026 seconds (JVM running for 12.681)
|
||||
2026-01-29 12:10:28.895 INFO 6203 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
|
||||
2026-01-29 12:10:28.897 INFO 6203 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] [1;31mBUILD FAILURE[m
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;34mINFO[m] Total time: 30.614 s
|
||||
[[1;34mINFO[m] Finished at: 2026-01-29T12:10:28+08:00
|
||||
[[1;34mINFO[m] [1m------------------------------------------------------------------------[m
|
||||
[[1;31mERROR[m] Failed to execute goal [32morg.springframework.boot:spring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m on project [36mpet-hospital[m: [1;31mApplication finished with exit code: 143[m -> [1m[Help 1][m
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] To see the full stack trace of the errors, re-run Maven with the [1m-e[m switch.
|
||||
[[1;31mERROR[m] Re-run Maven using the [1m-X[m switch to enable full debug logging.
|
||||
[[1;31mERROR[m]
|
||||
[[1;31mERROR[m] For more information about the errors and possible solutions, please read the following articles:
|
||||
[[1;31mERROR[m] [1m[Help 1][m http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
|
||||
180
backend/backend_working.log
Normal file
180
backend/backend_working.log
Normal file
@@ -0,0 +1,180 @@
|
||||
[[1;34mINFO[m] Scanning for projects...
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m------------------------< [0;36mcom.gpf:pet-hospital[0;1m >------------------------[m
|
||||
[[1;34mINFO[m] [1mBuilding 爱维宠物医院管理平台 1.0.0[m
|
||||
[[1;34mINFO[m] [1m--------------------------------[ jar ]---------------------------------[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m>>> [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m > [0;1mtest-compile[m @ [36mpet-hospital[0;1m >>>[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:resources[m [1m(default-resources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] Copying 2 resources
|
||||
[[1;34mINFO[m] Copying 3 resources
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:compile[m [1m(default-compile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Nothing to compile - all classes are up to date
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-resources-plugin:3.2.0:testResources[m [1m(default-testResources)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered resources.
|
||||
[[1;34mINFO[m] Using 'UTF-8' encoding to copy filtered properties files.
|
||||
[[1;34mINFO[m] skip non existing resourceDirectory /mnt/d/bs/gpf_pet_hospital/backend/src/test/resources
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mmaven-compiler-plugin:3.10.1:testCompile[m [1m(default-testCompile)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] No sources to compile
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m<<< [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[0;1m < [0;1mtest-compile[m @ [36mpet-hospital[0;1m <<<[m
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m]
|
||||
[[1;34mINFO[m] [1m--- [0;32mspring-boot-maven-plugin:2.7.18:run[m [1m(default-cli)[m @ [36mpet-hospital[0;1m ---[m
|
||||
[[1;34mINFO[m] Attaching agents: []
|
||||
|
||||
. ____ _ __ _ _
|
||||
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
|
||||
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
|
||||
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
|
||||
' |____| .__|_| |_|_| |_\__, | / / / /
|
||||
=========|_|==============|___/=/_/_/_/
|
||||
:: Spring Boot :: (v2.7.18)
|
||||
|
||||
2026-01-29 12:24:05.772 INFO 7628 --- [ main] c.g.pethospital.PetHospitalApplication : Starting PetHospitalApplication using Java 17.0.17 on LAPTOP-FS8K5GSO with PID 7628 (/mnt/d/bs/gpf_pet_hospital/backend/target/classes started by wangzq in /mnt/d/bs/gpf_pet_hospital/backend)
|
||||
2026-01-29 12:24:05.778 INFO 7628 --- [ main] c.g.pethospital.PetHospitalApplication : The following 1 profile is active: "dev"
|
||||
2026-01-29 12:24:11.364 INFO 7628 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http)
|
||||
2026-01-29 12:24:11.390 INFO 7628 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
|
||||
2026-01-29 12:24:11.390 INFO 7628 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.83]
|
||||
2026-01-29 12:24:11.547 INFO 7628 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring embedded WebApplicationContext
|
||||
2026-01-29 12:24:11.547 INFO 7628 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5683 ms
|
||||
2026-01-29 12:24:11.602 INFO 7628 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
|
||||
2026-01-29 12:24:12.451 INFO 7628 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
|
||||
2026-01-29 12:24:12.476 INFO 7628 --- [ main] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:testdb'
|
||||
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
|
||||
Initialization Sequence datacenterId:1 workerId:22
|
||||
_ _ |_ _ _|_. ___ _ | _
|
||||
| | |\/|_)(_| | |_\ |_)||_|_\
|
||||
/ |
|
||||
3.5.5
|
||||
2026-01-29 12:24:14.953 WARN 7628 --- [ main] .s.s.UserDetailsServiceAutoConfiguration :
|
||||
|
||||
Using generated security password: 894a2f39-1097-4906-9582-c51d7962caac
|
||||
|
||||
This generated password is for development use only. Your security configuration must be updated before running your application in production.
|
||||
|
||||
2026-01-29 12:24:15.337 INFO 7628 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@4aed311e, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@4c38cd16, org.springframework.security.web.context.SecurityContextPersistenceFilter@7971c2a9, org.springframework.security.web.header.HeaderWriterFilter@11c88cca, org.springframework.security.web.authentication.logout.LogoutFilter@111c229c, com.gpf.pethospital.security.JwtAuthenticationFilter@7ddcb0dc, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@60b5e80d, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@31aab981, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@f5bf288, org.springframework.security.web.session.SessionManagementFilter@349c4d1c, org.springframework.security.web.access.ExceptionTranslationFilter@340cb97f, org.springframework.security.web.access.intercept.AuthorizationFilter@320be73]
|
||||
2026-01-29 12:24:16.661 INFO 7628 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path '/api'
|
||||
2026-01-29 12:24:16.675 INFO 7628 --- [ main] c.g.pethospital.PetHospitalApplication : Started PetHospitalApplication in 12.299 seconds (JVM running for 12.864)
|
||||
2026-01-29 12:24:21.966 INFO 7628 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/api] : Initializing Spring DispatcherServlet 'dispatcherServlet'
|
||||
2026-01-29 12:24:21.966 INFO 7628 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
|
||||
2026-01-29 12:24:21.968 INFO 7628 --- [nio-8081-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1f20fef4] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@208105529 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: customer(String), customer(String), customer(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 3, customer, 13900139000, customer@example.com, $2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi, CUSTOMER, 1, null, 2026-01-29 12:24:13.2463, 2026-01-29 12:24:13.2463, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1f20fef4]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@75e8fc76] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1168243154 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT(*) AS total FROM pet WHERE deleted = 0 AND (owner_id = ?)
|
||||
==> Parameters: 3(Long)
|
||||
<== Columns: TOTAL
|
||||
<== Row: 1
|
||||
<== Total: 1
|
||||
==> Preparing: SELECT id,owner_id,name,breed,gender,birthday,weight,photo,remark,create_time,update_time,deleted FROM pet WHERE deleted=0 AND (owner_id = ?) LIMIT ?
|
||||
==> Parameters: 3(Long), 10(Long)
|
||||
<== Columns: ID, OWNER_ID, NAME, BREED, GENDER, BIRTHDAY, WEIGHT, PHOTO, REMARK, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 1, 3, 小白, 金毛, MALE, 2023-01-01, null, null, null, 2026-01-29 12:24:13.247041, 2026-01-29 12:24:13.247041, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@75e8fc76]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@41493577] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@2016262451 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: INSERT INTO appointment ( customer_id, pet_id, appointment_date, time_slot, status, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )
|
||||
==> Parameters: 3(Long), 1(Long), 2026-02-01(LocalDate), 09:00-10:00(String), PENDING(String), 常规检查(String), 2026-01-29T12:24:32.546247898(LocalDateTime), 2026-01-29T12:24:32.546247898(LocalDateTime)
|
||||
<== Updates: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@41493577]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@bf1d89a] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@87439252 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: admin(String), admin(String), admin(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 1, admin, 13800138000, admin@example.com, $2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi, ADMIN, 1, null, 2026-01-29 12:24:13.23867, 2026-01-29 12:24:13.23867, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@bf1d89a]
|
||||
2026-01-29 12:24:40.495 WARN 7628 --- [nio-8081-exec-8] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'status' for method parameter type String is not present]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4c2f1f92] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1931573387 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: UPDATE appointment SET status=?, update_time=? WHERE id=? AND deleted=0
|
||||
==> Parameters: ARRIVED(String), 2026-01-29T12:24:45.469184613(LocalDateTime), 1(Long)
|
||||
<== Updates: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4c2f1f92]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2cd992d5] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1326776275 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT id,username,phone,email,password,role,status,avatar,create_time,update_time,deleted FROM `user` WHERE deleted=0 AND (username = ? OR phone = ? OR email = ?)
|
||||
==> Parameters: customer(String), customer(String), customer(String)
|
||||
<== Columns: ID, USERNAME, PHONE, EMAIL, PASSWORD, ROLE, STATUS, AVATAR, CREATE_TIME, UPDATE_TIME, DELETED
|
||||
<== Row: 3, customer, 13900139000, customer@example.com, $2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi, CUSTOMER, 1, null, 2026-01-29 12:24:13.2463, 2026-01-29 12:24:13.2463, 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2cd992d5]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@47af24ef] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@630841539 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: INSERT INTO visit ( appointment_id, customer_id, pet_id, doctor_id, status, payment_status, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )
|
||||
==> Parameters: 1(Long), 3(Long), 1(Long), 1(Long), COMPLETED(String), UNPAID(String), 2026-01-29T12:24:49.989305686(LocalDateTime), 2026-01-29T12:24:49.989305686(LocalDateTime)
|
||||
<== Updates: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@47af24ef]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@15774d6c] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1399738390 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: INSERT INTO prescription ( visit_id, doctor_id, status, create_time, update_time ) VALUES ( ?, ?, ?, ?, ? )
|
||||
==> Parameters: 1(Long), 1(Long), SUBMITTED(String), 2026-01-29T12:24:54.704878297(LocalDateTime), 2026-01-29T12:24:54.704878297(LocalDateTime)
|
||||
<== Updates: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@15774d6c]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3f2e9c5] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1704824955 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: INSERT INTO order_info ( visit_id, customer_id, amount, status, payment_method, remark, create_time, update_time ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )
|
||||
==> Parameters: 1(Long), 3(Long), 50.00(BigDecimal), PAID(String), WECHAT(String), 支付处方费用(String), 2026-01-29T12:24:58.817900417(LocalDateTime), 2026-01-29T12:24:58.817900417(LocalDateTime)
|
||||
<== Updates: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3f2e9c5]
|
||||
Creating a new SqlSession
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@48c4f857] was not registered for synchronization because synchronization is not active
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7b6b5f95] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1731465716 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
JDBC Connection [HikariProxyConnection@1306442745 wrapping conn1: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT(*) AS total FROM order_info WHERE deleted = 0 AND (customer_id = ?)
|
||||
==> Preparing: SELECT COUNT(*) AS total FROM visit WHERE deleted = 0 AND (customer_id = ?)
|
||||
==> Parameters: 2(Long)
|
||||
==> Parameters: 2(Long)
|
||||
<== Columns: TOTAL
|
||||
<== Row: 0
|
||||
<== Columns: TOTAL
|
||||
<== Total: 1
|
||||
<== Row: 0
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7b6b5f95]
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@48c4f857]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@338fc1da] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@46490719 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT(*) AS total FROM pet WHERE deleted = 0 AND (owner_id = ?)
|
||||
==> Parameters: 2(Long)
|
||||
<== Columns: TOTAL
|
||||
<== Row: 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@338fc1da]
|
||||
Creating a new SqlSession
|
||||
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5490b9c8] was not registered for synchronization because synchronization is not active
|
||||
JDBC Connection [HikariProxyConnection@1309118785 wrapping conn0: url=jdbc:h2:mem:testdb user=SA] will not be managed by Spring
|
||||
==> Preparing: SELECT COUNT(*) AS total FROM pet WHERE deleted = 0 AND (owner_id = ?)
|
||||
==> Parameters: 2(Long)
|
||||
<== Columns: TOTAL
|
||||
<== Row: 0
|
||||
<== Total: 1
|
||||
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5490b9c8]
|
||||
131
backend/pom.xml
Normal file
131
backend/pom.xml
Normal file
@@ -0,0 +1,131 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
|
||||
https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.7.18</version>
|
||||
<relativePath/>
|
||||
</parent>
|
||||
|
||||
<groupId>com.gpf</groupId>
|
||||
<artifactId>pet-hospital</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<name>爱维宠物医院管理平台</name>
|
||||
<description>爱维宠物医院管理平台后端服务</description>
|
||||
|
||||
<properties>
|
||||
<java.version>17</java.version>
|
||||
<mysql.version>8.0.33</mysql.version>
|
||||
<mybatis-plus.version>3.5.5</mybatis-plus.version>
|
||||
<jwt.version>0.11.5</jwt.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<!-- Spring Boot Web -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Spring Boot Security -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-security</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Spring Boot Validation -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-validation</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Jakarta Validation API -->
|
||||
<dependency>
|
||||
<groupId>jakarta.validation</groupId>
|
||||
<artifactId>jakarta.validation-api</artifactId>
|
||||
<version>3.0.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- MySQL Driver -->
|
||||
<dependency>
|
||||
<groupId>com.mysql</groupId>
|
||||
<artifactId>mysql-connector-j</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- MyBatis Plus -->
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||||
<version>${mybatis-plus.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- JWT -->
|
||||
<dependency>
|
||||
<groupId>io.jsonwebtoken</groupId>
|
||||
<artifactId>jjwt-api</artifactId>
|
||||
<version>${jwt.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.jsonwebtoken</groupId>
|
||||
<artifactId>jjwt-impl</artifactId>
|
||||
<version>${jwt.version}</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.jsonwebtoken</groupId>
|
||||
<artifactId>jjwt-jackson</artifactId>
|
||||
<version>${jwt.version}</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- H2 Database -->
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Lombok -->
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<!-- Spring Boot Test -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Spring Boot Security Test -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.security</groupId>
|
||||
<artifactId>spring-security-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<excludes>
|
||||
<exclude>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.gpf.pethospital;
|
||||
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
/**
|
||||
* 爱维宠物医院管理平台主应用
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@MapperScan("com.gpf.pethospital.mapper")
|
||||
public class PetHospitalApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(PetHospitalApplication.class, args);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.gpf.pethospital.common;
|
||||
|
||||
public class ApiResponse<T> {
|
||||
private final int code;
|
||||
private final String message;
|
||||
private final T data;
|
||||
|
||||
private ApiResponse(int code, String message, T data) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public static <T> ApiResponse<T> success(T data) {
|
||||
return new ApiResponse<>(0, "ok", data);
|
||||
}
|
||||
|
||||
public static <T> ApiResponse<T> success(String message, T data) {
|
||||
return new ApiResponse<>(0, message, data);
|
||||
}
|
||||
|
||||
public static <T> ApiResponse<T> error(int code, String message) {
|
||||
return new ApiResponse<>(code, message, null);
|
||||
}
|
||||
|
||||
public int getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public T getData() {
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.gpf.pethospital.config;
|
||||
|
||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
||||
import org.apache.ibatis.reflection.MetaObject;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Configuration
|
||||
public class MybatisPlusConfig {
|
||||
@Bean
|
||||
public MybatisPlusInterceptor mybatisPlusInterceptor() {
|
||||
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
|
||||
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
|
||||
return interceptor;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public MetaObjectHandler metaObjectHandler() {
|
||||
return new MetaObjectHandler() {
|
||||
@Override
|
||||
public void insertFill(MetaObject metaObject) {
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
strictInsertFill(metaObject, "createTime", LocalDateTime.class, now);
|
||||
strictInsertFill(metaObject, "updateTime", LocalDateTime.class, now);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateFill(MetaObject metaObject) {
|
||||
strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.gpf.pethospital.config;
|
||||
|
||||
import com.gpf.pethospital.security.JwtAuthenticationFilter;
|
||||
import com.gpf.pethospital.util.JwtUtil;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
|
||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||
import org.springframework.security.config.http.SessionCreationPolicy;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.security.web.SecurityFilterChain;
|
||||
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
||||
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
|
||||
|
||||
@Configuration
|
||||
@EnableMethodSecurity
|
||||
public class SecurityConfig {
|
||||
@Value("${jwt.secret}")
|
||||
private String jwtSecret;
|
||||
|
||||
@Value("${jwt.expiration}")
|
||||
private long jwtExpiration;
|
||||
|
||||
@Bean
|
||||
public JwtUtil jwtUtil() {
|
||||
return new JwtUtil(jwtSecret, jwtExpiration);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public PasswordEncoder passwordEncoder() {
|
||||
return new BCryptPasswordEncoder();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public SecurityFilterChain filterChain(HttpSecurity http, JwtUtil jwtUtil) throws Exception {
|
||||
http
|
||||
.csrf(csrf -> csrf.disable())
|
||||
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
|
||||
.authorizeHttpRequests(auth -> auth
|
||||
.requestMatchers(new AntPathRequestMatcher("/auth/**")).permitAll()
|
||||
.requestMatchers(new AntPathRequestMatcher("/public/**")).permitAll()
|
||||
.anyRequest().authenticated()
|
||||
)
|
||||
.addFilterBefore(new JwtAuthenticationFilter(jwtUtil), UsernamePasswordAuthenticationFilter.class);
|
||||
return http.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.gpf.pethospital.config;
|
||||
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.CorsRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
@Configuration
|
||||
public class WebConfig implements WebMvcConfigurer {
|
||||
@Override
|
||||
public void addCorsMappings(CorsRegistry registry) {
|
||||
registry.addMapping("/**")
|
||||
.allowedOrigins("*")
|
||||
.allowedMethods("GET", "POST", "PUT", "DELETE", "PATCH")
|
||||
.allowedHeaders("*")
|
||||
.maxAge(3600);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
package com.gpf.pethospital.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.gpf.pethospital.common.ApiResponse;
|
||||
import com.gpf.pethospital.entity.Appointment;
|
||||
import com.gpf.pethospital.security.AuthUser;
|
||||
import com.gpf.pethospital.service.AppointmentService;
|
||||
import com.gpf.pethospital.util.SecurityUtils;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/appointments")
|
||||
public class AppointmentController {
|
||||
private final AppointmentService appointmentService;
|
||||
|
||||
public AppointmentController(AppointmentService appointmentService) {
|
||||
this.appointmentService = appointmentService;
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public ApiResponse<?> create(@RequestBody Appointment appointment) {
|
||||
AuthUser user = SecurityUtils.currentUser();
|
||||
if (user != null && "CUSTOMER".equals(user.getRole())) {
|
||||
appointment.setCustomerId(user.getId());
|
||||
}
|
||||
if (appointment.getStatus() == null) {
|
||||
appointment.setStatus("PENDING");
|
||||
}
|
||||
appointmentService.save(appointment);
|
||||
return ApiResponse.success("created", null);
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public ApiResponse<?> list(@RequestParam(defaultValue = "1") long page,
|
||||
@RequestParam(defaultValue = "10") long size) {
|
||||
AuthUser user = SecurityUtils.currentUser();
|
||||
LambdaQueryWrapper<Appointment> wrapper = new LambdaQueryWrapper<>();
|
||||
if (user != null && "CUSTOMER".equals(user.getRole())) {
|
||||
wrapper.eq(Appointment::getCustomerId, user.getId());
|
||||
}
|
||||
return ApiResponse.success(appointmentService.page(new Page<>(page, size), wrapper));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyRole('ADMIN','DOCTOR')")
|
||||
@GetMapping("/admin")
|
||||
public ApiResponse<?> adminList(@RequestParam(defaultValue = "1") long page,
|
||||
@RequestParam(defaultValue = "10") long size,
|
||||
@RequestParam(required = false) String status) {
|
||||
LambdaQueryWrapper<Appointment> wrapper = new LambdaQueryWrapper<>();
|
||||
if (status != null && !status.isBlank()) {
|
||||
wrapper.eq(Appointment::getStatus, status);
|
||||
}
|
||||
return ApiResponse.success(appointmentService.page(new Page<>(page, size), wrapper));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyRole('ADMIN','DOCTOR')")
|
||||
@PutMapping("/{id}/status")
|
||||
public ApiResponse<?> updateStatus(@PathVariable Long id, @RequestParam String status) {
|
||||
Appointment update = new Appointment();
|
||||
update.setId(id);
|
||||
update.setStatus(status);
|
||||
if ("CANCELLED".equals(status)) {
|
||||
update.setCancelTime(LocalDateTime.now());
|
||||
}
|
||||
appointmentService.updateById(update);
|
||||
return ApiResponse.success("updated", null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
package com.gpf.pethospital.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.gpf.pethospital.common.ApiResponse;
|
||||
import com.gpf.pethospital.dto.LoginRequest;
|
||||
import com.gpf.pethospital.dto.RegisterRequest;
|
||||
import com.gpf.pethospital.entity.User;
|
||||
import com.gpf.pethospital.service.UserService;
|
||||
import com.gpf.pethospital.util.JwtUtil;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
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 java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/auth")
|
||||
public class AuthController {
|
||||
private final UserService userService;
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
private final JwtUtil jwtUtil;
|
||||
|
||||
public AuthController(UserService userService, PasswordEncoder passwordEncoder, JwtUtil jwtUtil) {
|
||||
this.userService = userService;
|
||||
this.passwordEncoder = passwordEncoder;
|
||||
this.jwtUtil = jwtUtil;
|
||||
}
|
||||
|
||||
@PostMapping("/register")
|
||||
public ApiResponse<?> register(@Valid @RequestBody RegisterRequest request) {
|
||||
if ((request.getPhone() == null || request.getPhone().isBlank())
|
||||
&& (request.getEmail() == null || request.getEmail().isBlank())) {
|
||||
return ApiResponse.error(400, "phone or email is required");
|
||||
}
|
||||
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(User::getUsername, request.getUsername())
|
||||
.or()
|
||||
.eq(request.getPhone() != null && !request.getPhone().isBlank(), User::getPhone, request.getPhone())
|
||||
.or()
|
||||
.eq(request.getEmail() != null && !request.getEmail().isBlank(), User::getEmail, request.getEmail());
|
||||
if (userService.count(wrapper) > 0) {
|
||||
return ApiResponse.error(409, "user already exists");
|
||||
}
|
||||
User user = new User();
|
||||
user.setUsername(request.getUsername());
|
||||
user.setPhone(request.getPhone());
|
||||
user.setEmail(request.getEmail());
|
||||
user.setPassword(passwordEncoder.encode(request.getPassword()));
|
||||
user.setRole("CUSTOMER");
|
||||
user.setStatus(1);
|
||||
userService.save(user);
|
||||
return ApiResponse.success("registered", null);
|
||||
}
|
||||
|
||||
@PostMapping("/login")
|
||||
public ApiResponse<?> login(@Valid @RequestBody LoginRequest request) {
|
||||
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(User::getUsername, request.getAccount())
|
||||
.or()
|
||||
.eq(User::getPhone, request.getAccount())
|
||||
.or()
|
||||
.eq(User::getEmail, request.getAccount());
|
||||
User user = userService.getOne(wrapper);
|
||||
if (user == null || user.getStatus() != null && user.getStatus() == 0) {
|
||||
return ApiResponse.error(401, "invalid account or disabled");
|
||||
}
|
||||
if (!passwordEncoder.matches(request.getPassword(), user.getPassword())) {
|
||||
return ApiResponse.error(401, "invalid account or password");
|
||||
}
|
||||
String token = jwtUtil.generateToken(user.getId(), user.getRole(), user.getUsername());
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("token", token);
|
||||
data.put("role", user.getRole());
|
||||
data.put("userId", user.getId());
|
||||
data.put("username", user.getUsername());
|
||||
return ApiResponse.success(data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.gpf.pethospital.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.gpf.pethospital.common.ApiResponse;
|
||||
import com.gpf.pethospital.entity.Drug;
|
||||
import com.gpf.pethospital.service.DrugService;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/drugs")
|
||||
public class DrugController {
|
||||
private final DrugService drugService;
|
||||
|
||||
public DrugController(DrugService drugService) {
|
||||
this.drugService = drugService;
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@GetMapping
|
||||
public ApiResponse<?> list(@RequestParam(defaultValue = "1") long page,
|
||||
@RequestParam(defaultValue = "10") long size,
|
||||
@RequestParam(required = false) String keyword) {
|
||||
LambdaQueryWrapper<Drug> wrapper = new LambdaQueryWrapper<>();
|
||||
if (keyword != null && !keyword.isBlank()) {
|
||||
wrapper.like(Drug::getName, keyword)
|
||||
.or()
|
||||
.like(Drug::getSpecification, keyword);
|
||||
}
|
||||
return ApiResponse.success(drugService.page(new Page<>(page, size), wrapper));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@PostMapping
|
||||
public ApiResponse<?> create(@RequestBody Drug drug) {
|
||||
if (drug.getStatus() == null) {
|
||||
drug.setStatus(1);
|
||||
}
|
||||
drugService.save(drug);
|
||||
return ApiResponse.success("created", null);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@PutMapping("/{id}")
|
||||
public ApiResponse<?> update(@PathVariable Long id, @RequestBody Drug drug) {
|
||||
drug.setId(id);
|
||||
drugService.updateById(drug);
|
||||
return ApiResponse.success("updated", null);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@DeleteMapping("/{id}")
|
||||
public ApiResponse<?> delete(@PathVariable Long id) {
|
||||
drugService.removeById(id);
|
||||
return ApiResponse.success("deleted", null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.gpf.pethospital.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.gpf.pethospital.common.ApiResponse;
|
||||
import com.gpf.pethospital.entity.MedicalRecord;
|
||||
import com.gpf.pethospital.service.MedicalRecordService;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/medical-records")
|
||||
public class MedicalRecordController {
|
||||
private final MedicalRecordService medicalRecordService;
|
||||
|
||||
public MedicalRecordController(MedicalRecordService medicalRecordService) {
|
||||
this.medicalRecordService = medicalRecordService;
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyRole('ADMIN','DOCTOR')")
|
||||
@PostMapping
|
||||
public ApiResponse<?> create(@RequestBody MedicalRecord record) {
|
||||
if (record.getStatus() == null) {
|
||||
record.setStatus("DRAFT");
|
||||
}
|
||||
medicalRecordService.save(record);
|
||||
return ApiResponse.success("created", null);
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public ApiResponse<?> list(@RequestParam Long visitId) {
|
||||
LambdaQueryWrapper<MedicalRecord> wrapper = new LambdaQueryWrapper<MedicalRecord>()
|
||||
.eq(MedicalRecord::getVisitId, visitId);
|
||||
return ApiResponse.success(medicalRecordService.list(wrapper));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyRole('ADMIN','DOCTOR')")
|
||||
@PutMapping("/{id}")
|
||||
public ApiResponse<?> update(@PathVariable Long id, @RequestBody MedicalRecord record) {
|
||||
record.setId(id);
|
||||
medicalRecordService.updateById(record);
|
||||
return ApiResponse.success("updated", null);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@DeleteMapping("/{id}")
|
||||
public ApiResponse<?> delete(@PathVariable Long id) {
|
||||
medicalRecordService.removeById(id);
|
||||
return ApiResponse.success("deleted", null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package com.gpf.pethospital.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.gpf.pethospital.common.ApiResponse;
|
||||
import com.gpf.pethospital.dto.ReplyRequest;
|
||||
import com.gpf.pethospital.entity.Message;
|
||||
import com.gpf.pethospital.security.AuthUser;
|
||||
import com.gpf.pethospital.service.MessageService;
|
||||
import com.gpf.pethospital.util.SecurityUtils;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/messages")
|
||||
public class MessageController {
|
||||
private final MessageService messageService;
|
||||
|
||||
public MessageController(MessageService messageService) {
|
||||
this.messageService = messageService;
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public ApiResponse<?> create(@RequestBody Message message) {
|
||||
AuthUser user = SecurityUtils.currentUser();
|
||||
if (user != null) {
|
||||
message.setUserId(user.getId());
|
||||
message.setUserName(user.getUsername());
|
||||
}
|
||||
message.setStatus("PENDING");
|
||||
messageService.save(message);
|
||||
return ApiResponse.success("created", null);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@GetMapping("/admin")
|
||||
public ApiResponse<?> list(@RequestParam(defaultValue = "1") long page,
|
||||
@RequestParam(defaultValue = "10") long size,
|
||||
@RequestParam(required = false) String status) {
|
||||
LambdaQueryWrapper<Message> wrapper = new LambdaQueryWrapper<>();
|
||||
if (status != null && !status.isBlank()) {
|
||||
wrapper.eq(Message::getStatus, status);
|
||||
}
|
||||
return ApiResponse.success(messageService.page(new Page<>(page, size), wrapper));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@PutMapping("/admin/{id}/reply")
|
||||
public ApiResponse<?> reply(@PathVariable Long id, @Valid @RequestBody ReplyRequest request) {
|
||||
AuthUser user = SecurityUtils.currentUser();
|
||||
Message update = new Message();
|
||||
update.setId(id);
|
||||
update.setReply(request.getReply());
|
||||
update.setStatus("PROCESSED");
|
||||
update.setReplyTime(LocalDateTime.now());
|
||||
if (user != null) {
|
||||
update.setReplyUserId(user.getId());
|
||||
}
|
||||
messageService.updateById(update);
|
||||
return ApiResponse.success("updated", null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.gpf.pethospital.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.gpf.pethospital.common.ApiResponse;
|
||||
import com.gpf.pethospital.entity.Notice;
|
||||
import com.gpf.pethospital.service.NoticeService;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping
|
||||
public class NoticeController {
|
||||
private final NoticeService noticeService;
|
||||
|
||||
public NoticeController(NoticeService noticeService) {
|
||||
this.noticeService = noticeService;
|
||||
}
|
||||
|
||||
@GetMapping("/public/notices")
|
||||
public ApiResponse<?> publicList(@RequestParam(defaultValue = "1") long page,
|
||||
@RequestParam(defaultValue = "10") long size) {
|
||||
LambdaQueryWrapper<Notice> wrapper = new LambdaQueryWrapper<Notice>()
|
||||
.eq(Notice::getStatus, 1)
|
||||
.orderByDesc(Notice::getIsTop)
|
||||
.orderByDesc(Notice::getCreateTime);
|
||||
return ApiResponse.success(noticeService.page(new Page<>(page, size), wrapper));
|
||||
}
|
||||
|
||||
@GetMapping("/public/notices/{id}")
|
||||
public ApiResponse<?> publicDetail(@PathVariable Long id) {
|
||||
return ApiResponse.success(noticeService.getById(id));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@GetMapping("/notices")
|
||||
public ApiResponse<?> list(@RequestParam(defaultValue = "1") long page,
|
||||
@RequestParam(defaultValue = "10") long size) {
|
||||
return ApiResponse.success(noticeService.page(new Page<>(page, size)));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@PostMapping("/notices")
|
||||
public ApiResponse<?> create(@RequestBody Notice notice) {
|
||||
if (notice.getStatus() == null) {
|
||||
notice.setStatus(1);
|
||||
}
|
||||
noticeService.save(notice);
|
||||
return ApiResponse.success("created", null);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@PutMapping("/notices/{id}")
|
||||
public ApiResponse<?> update(@PathVariable Long id, @RequestBody Notice notice) {
|
||||
notice.setId(id);
|
||||
noticeService.updateById(notice);
|
||||
return ApiResponse.success("updated", null);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@DeleteMapping("/notices/{id}")
|
||||
public ApiResponse<?> delete(@PathVariable Long id) {
|
||||
noticeService.removeById(id);
|
||||
return ApiResponse.success("deleted", null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.gpf.pethospital.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.gpf.pethospital.common.ApiResponse;
|
||||
import com.gpf.pethospital.entity.Order;
|
||||
import com.gpf.pethospital.security.AuthUser;
|
||||
import com.gpf.pethospital.service.OrderService;
|
||||
import com.gpf.pethospital.util.SecurityUtils;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/orders")
|
||||
public class OrderController {
|
||||
private final OrderService orderService;
|
||||
|
||||
public OrderController(OrderService orderService) {
|
||||
this.orderService = orderService;
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public ApiResponse<?> create(@RequestBody Order order) {
|
||||
AuthUser user = SecurityUtils.currentUser();
|
||||
if (user != null && "CUSTOMER".equals(user.getRole())) {
|
||||
order.setCustomerId(user.getId());
|
||||
}
|
||||
if (order.getStatus() == null) {
|
||||
order.setStatus("UNPAID");
|
||||
}
|
||||
orderService.save(order);
|
||||
return ApiResponse.success("created", null);
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public ApiResponse<?> list(@RequestParam(defaultValue = "1") long page,
|
||||
@RequestParam(defaultValue = "10") long size) {
|
||||
AuthUser user = SecurityUtils.currentUser();
|
||||
LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>();
|
||||
if (user != null && "CUSTOMER".equals(user.getRole())) {
|
||||
wrapper.eq(Order::getCustomerId, user.getId());
|
||||
}
|
||||
return ApiResponse.success(orderService.page(new Page<>(page, size), wrapper));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyRole('ADMIN','DOCTOR')")
|
||||
@PutMapping("/{id}")
|
||||
public ApiResponse<?> update(@PathVariable Long id, @RequestBody Order order) {
|
||||
order.setId(id);
|
||||
orderService.updateById(order);
|
||||
return ApiResponse.success("updated", null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
package com.gpf.pethospital.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.gpf.pethospital.common.ApiResponse;
|
||||
import com.gpf.pethospital.entity.Pet;
|
||||
import com.gpf.pethospital.security.AuthUser;
|
||||
import com.gpf.pethospital.service.PetService;
|
||||
import com.gpf.pethospital.util.SecurityUtils;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/pets")
|
||||
public class PetController {
|
||||
private final PetService petService;
|
||||
|
||||
public PetController(PetService petService) {
|
||||
this.petService = petService;
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public ApiResponse<?> list(@RequestParam(defaultValue = "1") long page,
|
||||
@RequestParam(defaultValue = "10") long size,
|
||||
@RequestParam(required = false) Long ownerId) {
|
||||
AuthUser user = SecurityUtils.currentUser();
|
||||
LambdaQueryWrapper<Pet> wrapper = new LambdaQueryWrapper<>();
|
||||
if (user != null && "CUSTOMER".equals(user.getRole())) {
|
||||
wrapper.eq(Pet::getOwnerId, user.getId());
|
||||
} else if (ownerId != null) {
|
||||
wrapper.eq(Pet::getOwnerId, ownerId);
|
||||
}
|
||||
return ApiResponse.success(petService.page(new Page<>(page, size), wrapper));
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public ApiResponse<?> create(@RequestBody Pet pet) {
|
||||
AuthUser user = SecurityUtils.currentUser();
|
||||
if (user != null && "CUSTOMER".equals(user.getRole())) {
|
||||
pet.setOwnerId(user.getId());
|
||||
}
|
||||
petService.save(pet);
|
||||
return ApiResponse.success("created", null);
|
||||
}
|
||||
|
||||
@PutMapping("/{id}")
|
||||
public ApiResponse<?> update(@PathVariable Long id, @RequestBody Pet pet) {
|
||||
AuthUser user = SecurityUtils.currentUser();
|
||||
if (user != null && "CUSTOMER".equals(user.getRole())) {
|
||||
Pet existing = petService.getById(id);
|
||||
if (existing == null || !existing.getOwnerId().equals(user.getId())) {
|
||||
return ApiResponse.error(403, "forbidden");
|
||||
}
|
||||
}
|
||||
pet.setId(id);
|
||||
petService.updateById(pet);
|
||||
return ApiResponse.success("updated", null);
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public ApiResponse<?> delete(@PathVariable Long id) {
|
||||
AuthUser user = SecurityUtils.currentUser();
|
||||
if (user != null && "CUSTOMER".equals(user.getRole())) {
|
||||
Pet existing = petService.getById(id);
|
||||
if (existing == null || !existing.getOwnerId().equals(user.getId())) {
|
||||
return ApiResponse.error(403, "forbidden");
|
||||
}
|
||||
}
|
||||
petService.removeById(id);
|
||||
return ApiResponse.success("deleted", null);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@GetMapping("/admin/all")
|
||||
public ApiResponse<?> adminList(@RequestParam(defaultValue = "1") long page,
|
||||
@RequestParam(defaultValue = "10") long size) {
|
||||
return ApiResponse.success(petService.page(new Page<>(page, size)));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.gpf.pethospital.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.gpf.pethospital.common.ApiResponse;
|
||||
import com.gpf.pethospital.entity.Prescription;
|
||||
import com.gpf.pethospital.security.AuthUser;
|
||||
import com.gpf.pethospital.service.PrescriptionService;
|
||||
import com.gpf.pethospital.util.SecurityUtils;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/prescriptions")
|
||||
public class PrescriptionController {
|
||||
private final PrescriptionService prescriptionService;
|
||||
|
||||
public PrescriptionController(PrescriptionService prescriptionService) {
|
||||
this.prescriptionService = prescriptionService;
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyRole('ADMIN','DOCTOR')")
|
||||
@PostMapping
|
||||
public ApiResponse<?> create(@RequestBody Prescription prescription) {
|
||||
if (prescription.getStatus() == null) {
|
||||
prescription.setStatus("DRAFT");
|
||||
}
|
||||
prescriptionService.save(prescription);
|
||||
return ApiResponse.success("created", null);
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public ApiResponse<?> list(@RequestParam(defaultValue = "1") long page,
|
||||
@RequestParam(defaultValue = "10") long size,
|
||||
@RequestParam(required = false) Long visitId) {
|
||||
AuthUser user = SecurityUtils.currentUser();
|
||||
LambdaQueryWrapper<Prescription> wrapper = new LambdaQueryWrapper<>();
|
||||
if (visitId != null) {
|
||||
wrapper.eq(Prescription::getVisitId, visitId);
|
||||
}
|
||||
if (user != null && "DOCTOR".equals(user.getRole())) {
|
||||
wrapper.eq(Prescription::getDoctorId, user.getId());
|
||||
}
|
||||
return ApiResponse.success(prescriptionService.page(new Page<>(page, size), wrapper));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyRole('ADMIN','DOCTOR')")
|
||||
@PutMapping("/{id}")
|
||||
public ApiResponse<?> update(@PathVariable Long id, @RequestBody Prescription prescription) {
|
||||
prescription.setId(id);
|
||||
prescriptionService.updateById(prescription);
|
||||
return ApiResponse.success("updated", null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.gpf.pethospital.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.gpf.pethospital.common.ApiResponse;
|
||||
import com.gpf.pethospital.entity.PrescriptionItem;
|
||||
import com.gpf.pethospital.service.PrescriptionItemService;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/prescription-items")
|
||||
public class PrescriptionItemController {
|
||||
private final PrescriptionItemService prescriptionItemService;
|
||||
|
||||
public PrescriptionItemController(PrescriptionItemService prescriptionItemService) {
|
||||
this.prescriptionItemService = prescriptionItemService;
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public ApiResponse<?> list(@RequestParam Long prescriptionId) {
|
||||
LambdaQueryWrapper<PrescriptionItem> wrapper = new LambdaQueryWrapper<PrescriptionItem>()
|
||||
.eq(PrescriptionItem::getPrescriptionId, prescriptionId);
|
||||
return ApiResponse.success(prescriptionItemService.list(wrapper));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyRole('ADMIN','DOCTOR')")
|
||||
@PostMapping
|
||||
public ApiResponse<?> create(@RequestBody PrescriptionItem item) {
|
||||
prescriptionItemService.save(item);
|
||||
return ApiResponse.success("created", null);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyRole('ADMIN','DOCTOR')")
|
||||
@PutMapping("/{id}")
|
||||
public ApiResponse<?> update(@PathVariable Long id, @RequestBody PrescriptionItem item) {
|
||||
item.setId(id);
|
||||
prescriptionItemService.updateById(item);
|
||||
return ApiResponse.success("updated", null);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyRole('ADMIN','DOCTOR')")
|
||||
@DeleteMapping("/{id}")
|
||||
public ApiResponse<?> delete(@PathVariable Long id) {
|
||||
prescriptionItemService.removeById(id);
|
||||
return ApiResponse.success("deleted", null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.gpf.pethospital.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.gpf.pethospital.common.ApiResponse;
|
||||
import com.gpf.pethospital.entity.Report;
|
||||
import com.gpf.pethospital.security.AuthUser;
|
||||
import com.gpf.pethospital.service.ReportService;
|
||||
import com.gpf.pethospital.util.SecurityUtils;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/reports")
|
||||
public class ReportController {
|
||||
private final ReportService reportService;
|
||||
|
||||
public ReportController(ReportService reportService) {
|
||||
this.reportService = reportService;
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyRole('ADMIN','DOCTOR')")
|
||||
@PostMapping
|
||||
public ApiResponse<?> create(@RequestBody Report report) {
|
||||
reportService.save(report);
|
||||
return ApiResponse.success("created", null);
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public ApiResponse<?> list(@RequestParam(defaultValue = "1") long page,
|
||||
@RequestParam(defaultValue = "10") long size,
|
||||
@RequestParam(required = false) Long petId) {
|
||||
AuthUser user = SecurityUtils.currentUser();
|
||||
LambdaQueryWrapper<Report> wrapper = new LambdaQueryWrapper<>();
|
||||
if (petId != null) {
|
||||
wrapper.eq(Report::getPetId, petId);
|
||||
}
|
||||
if (user != null && "DOCTOR".equals(user.getRole())) {
|
||||
wrapper.eq(Report::getDoctorId, user.getId());
|
||||
}
|
||||
return ApiResponse.success(reportService.page(new Page<>(page, size), wrapper));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyRole('ADMIN','DOCTOR')")
|
||||
@PutMapping("/{id}")
|
||||
public ApiResponse<?> update(@PathVariable Long id, @RequestBody Report report) {
|
||||
report.setId(id);
|
||||
reportService.updateById(report);
|
||||
return ApiResponse.success("updated", null);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@DeleteMapping("/{id}")
|
||||
public ApiResponse<?> delete(@PathVariable Long id) {
|
||||
reportService.removeById(id);
|
||||
return ApiResponse.success("deleted", null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.gpf.pethospital.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.gpf.pethospital.common.ApiResponse;
|
||||
import com.gpf.pethospital.entity.Order;
|
||||
import com.gpf.pethospital.entity.User;
|
||||
import com.gpf.pethospital.service.AppointmentService;
|
||||
import com.gpf.pethospital.service.OrderService;
|
||||
import com.gpf.pethospital.service.PetService;
|
||||
import com.gpf.pethospital.service.UserService;
|
||||
import com.gpf.pethospital.service.VisitService;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/admin/stats")
|
||||
public class StatsController {
|
||||
private final OrderService orderService;
|
||||
private final AppointmentService appointmentService;
|
||||
private final VisitService visitService;
|
||||
private final PetService petService;
|
||||
private final UserService userService;
|
||||
|
||||
public StatsController(OrderService orderService,
|
||||
AppointmentService appointmentService,
|
||||
VisitService visitService,
|
||||
PetService petService,
|
||||
UserService userService) {
|
||||
this.orderService = orderService;
|
||||
this.appointmentService = appointmentService;
|
||||
this.visitService = visitService;
|
||||
this.petService = petService;
|
||||
this.userService = userService;
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@GetMapping
|
||||
public ApiResponse<?> summary() {
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("orders", orderService.count());
|
||||
data.put("appointments", appointmentService.count());
|
||||
data.put("visits", visitService.count());
|
||||
data.put("pets", petService.count());
|
||||
data.put("customers", userService.count(new LambdaQueryWrapper<User>().eq(User::getRole, "CUSTOMER")));
|
||||
|
||||
QueryWrapper<Order> wrapper = new QueryWrapper<>();
|
||||
wrapper.select("SUM(amount) AS total");
|
||||
List<Map<String, Object>> result = orderService.listMaps(wrapper);
|
||||
BigDecimal total = BigDecimal.ZERO;
|
||||
if (!result.isEmpty() && result.get(0).get("total") != null) {
|
||||
total = new BigDecimal(result.get(0).get("total").toString());
|
||||
}
|
||||
data.put("orderAmountTotal", total);
|
||||
return ApiResponse.success(data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.gpf.pethospital.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.gpf.pethospital.common.ApiResponse;
|
||||
import com.gpf.pethospital.entity.Drug;
|
||||
import com.gpf.pethospital.entity.StockIn;
|
||||
import com.gpf.pethospital.service.DrugService;
|
||||
import com.gpf.pethospital.service.StockInService;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/stock-in")
|
||||
public class StockInController {
|
||||
private final StockInService stockInService;
|
||||
private final DrugService drugService;
|
||||
|
||||
public StockInController(StockInService stockInService, DrugService drugService) {
|
||||
this.stockInService = stockInService;
|
||||
this.drugService = drugService;
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@GetMapping
|
||||
public ApiResponse<?> list(@RequestParam(defaultValue = "1") long page,
|
||||
@RequestParam(defaultValue = "10") long size,
|
||||
@RequestParam(required = false) Long drugId) {
|
||||
LambdaQueryWrapper<StockIn> wrapper = new LambdaQueryWrapper<>();
|
||||
if (drugId != null) {
|
||||
wrapper.eq(StockIn::getDrugId, drugId);
|
||||
}
|
||||
return ApiResponse.success(stockInService.page(new Page<>(page, size), wrapper));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@PostMapping
|
||||
@Transactional
|
||||
public ApiResponse<?> create(@RequestBody StockIn stockIn) {
|
||||
stockInService.save(stockIn);
|
||||
if (stockIn.getDrugId() != null && stockIn.getQuantity() != null) {
|
||||
Drug drug = drugService.getById(stockIn.getDrugId());
|
||||
if (drug != null) {
|
||||
int current = drug.getStock() == null ? 0 : drug.getStock();
|
||||
drug.setStock(current + stockIn.getQuantity());
|
||||
drugService.updateById(drug);
|
||||
}
|
||||
}
|
||||
return ApiResponse.success("created", null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.gpf.pethospital.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.gpf.pethospital.common.ApiResponse;
|
||||
import com.gpf.pethospital.entity.Drug;
|
||||
import com.gpf.pethospital.entity.StockOut;
|
||||
import com.gpf.pethospital.service.DrugService;
|
||||
import com.gpf.pethospital.service.StockOutService;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/stock-out")
|
||||
public class StockOutController {
|
||||
private final StockOutService stockOutService;
|
||||
private final DrugService drugService;
|
||||
|
||||
public StockOutController(StockOutService stockOutService, DrugService drugService) {
|
||||
this.stockOutService = stockOutService;
|
||||
this.drugService = drugService;
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@GetMapping
|
||||
public ApiResponse<?> list(@RequestParam(defaultValue = "1") long page,
|
||||
@RequestParam(defaultValue = "10") long size,
|
||||
@RequestParam(required = false) Long drugId) {
|
||||
LambdaQueryWrapper<StockOut> wrapper = new LambdaQueryWrapper<>();
|
||||
if (drugId != null) {
|
||||
wrapper.eq(StockOut::getDrugId, drugId);
|
||||
}
|
||||
return ApiResponse.success(stockOutService.page(new Page<>(page, size), wrapper));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@PostMapping
|
||||
@Transactional
|
||||
public ApiResponse<?> create(@RequestBody StockOut stockOut) {
|
||||
stockOutService.save(stockOut);
|
||||
if (stockOut.getDrugId() != null && stockOut.getQuantity() != null) {
|
||||
Drug drug = drugService.getById(stockOut.getDrugId());
|
||||
if (drug != null) {
|
||||
int current = drug.getStock() == null ? 0 : drug.getStock();
|
||||
drug.setStock(Math.max(0, current - stockOut.getQuantity()));
|
||||
drugService.updateById(drug);
|
||||
}
|
||||
}
|
||||
return ApiResponse.success("created", null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
package com.gpf.pethospital.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.gpf.pethospital.common.ApiResponse;
|
||||
import com.gpf.pethospital.entity.User;
|
||||
import com.gpf.pethospital.security.AuthUser;
|
||||
import com.gpf.pethospital.service.UserService;
|
||||
import com.gpf.pethospital.util.SecurityUtils;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/users")
|
||||
public class UserController {
|
||||
private final UserService userService;
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
|
||||
public UserController(UserService userService, PasswordEncoder passwordEncoder) {
|
||||
this.userService = userService;
|
||||
this.passwordEncoder = passwordEncoder;
|
||||
}
|
||||
|
||||
@GetMapping("/me")
|
||||
public ApiResponse<?> me() {
|
||||
AuthUser authUser = SecurityUtils.currentUser();
|
||||
if (authUser == null) {
|
||||
return ApiResponse.error(401, "unauthorized");
|
||||
}
|
||||
User user = userService.getById(authUser.getId());
|
||||
if (user != null) {
|
||||
user.setPassword(null);
|
||||
}
|
||||
return ApiResponse.success(user);
|
||||
}
|
||||
|
||||
@PutMapping("/me")
|
||||
public ApiResponse<?> updateMe(@RequestBody User payload) {
|
||||
AuthUser authUser = SecurityUtils.currentUser();
|
||||
if (authUser == null) {
|
||||
return ApiResponse.error(401, "unauthorized");
|
||||
}
|
||||
User update = new User();
|
||||
update.setId(authUser.getId());
|
||||
update.setUsername(payload.getUsername());
|
||||
update.setPhone(payload.getPhone());
|
||||
update.setEmail(payload.getEmail());
|
||||
update.setAvatar(payload.getAvatar());
|
||||
userService.updateById(update);
|
||||
return ApiResponse.success("updated", null);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@GetMapping
|
||||
public ApiResponse<?> list(@RequestParam(defaultValue = "1") long page,
|
||||
@RequestParam(defaultValue = "10") long size,
|
||||
@RequestParam(required = false) String role) {
|
||||
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
|
||||
if (role != null && !role.isBlank()) {
|
||||
wrapper.eq(User::getRole, role);
|
||||
}
|
||||
Page<User> result = userService.page(new Page<>(page, size), wrapper);
|
||||
result.getRecords().forEach(u -> u.setPassword(null));
|
||||
return ApiResponse.success(result);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@PostMapping
|
||||
public ApiResponse<?> create(@RequestBody User user) {
|
||||
if (user.getPassword() == null || user.getPassword().isBlank()) {
|
||||
return ApiResponse.error(400, "password required");
|
||||
}
|
||||
user.setPassword(passwordEncoder.encode(user.getPassword()));
|
||||
if (user.getStatus() == null) {
|
||||
user.setStatus(1);
|
||||
}
|
||||
userService.save(user);
|
||||
return ApiResponse.success("created", null);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@PutMapping("/{id}/status")
|
||||
public ApiResponse<?> updateStatus(@PathVariable Long id, @RequestParam Integer status) {
|
||||
User update = new User();
|
||||
update.setId(id);
|
||||
update.setStatus(status);
|
||||
userService.updateById(update);
|
||||
return ApiResponse.success("updated", null);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@PutMapping("/{id}/reset-password")
|
||||
public ApiResponse<?> resetPassword(@PathVariable Long id, @RequestParam String newPassword) {
|
||||
User update = new User();
|
||||
update.setId(id);
|
||||
update.setPassword(passwordEncoder.encode(newPassword));
|
||||
userService.updateById(update);
|
||||
return ApiResponse.success("updated", null);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
@GetMapping("/stats")
|
||||
public ApiResponse<?> stats() {
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("total", userService.count());
|
||||
data.put("admins", userService.count(new LambdaQueryWrapper<User>().eq(User::getRole, "ADMIN")));
|
||||
data.put("doctors", userService.count(new LambdaQueryWrapper<User>().eq(User::getRole, "DOCTOR")));
|
||||
data.put("customers", userService.count(new LambdaQueryWrapper<User>().eq(User::getRole, "CUSTOMER")));
|
||||
return ApiResponse.success(data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.gpf.pethospital.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.gpf.pethospital.common.ApiResponse;
|
||||
import com.gpf.pethospital.entity.Pet;
|
||||
import com.gpf.pethospital.entity.VaccineRecord;
|
||||
import com.gpf.pethospital.security.AuthUser;
|
||||
import com.gpf.pethospital.service.PetService;
|
||||
import com.gpf.pethospital.service.VaccineRecordService;
|
||||
import com.gpf.pethospital.util.SecurityUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/vaccines")
|
||||
public class VaccineRecordController {
|
||||
private final VaccineRecordService vaccineRecordService;
|
||||
private final PetService petService;
|
||||
|
||||
public VaccineRecordController(VaccineRecordService vaccineRecordService, PetService petService) {
|
||||
this.vaccineRecordService = vaccineRecordService;
|
||||
this.petService = petService;
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public ApiResponse<?> list(@RequestParam Long petId,
|
||||
@RequestParam(defaultValue = "1") long page,
|
||||
@RequestParam(defaultValue = "10") long size) {
|
||||
AuthUser user = SecurityUtils.currentUser();
|
||||
if (user != null && "CUSTOMER".equals(user.getRole())) {
|
||||
Pet pet = petService.getById(petId);
|
||||
if (pet == null || !pet.getOwnerId().equals(user.getId())) {
|
||||
return ApiResponse.error(403, "forbidden");
|
||||
}
|
||||
}
|
||||
LambdaQueryWrapper<VaccineRecord> wrapper = new LambdaQueryWrapper<VaccineRecord>()
|
||||
.eq(VaccineRecord::getPetId, petId);
|
||||
return ApiResponse.success(vaccineRecordService.page(new Page<>(page, size), wrapper));
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public ApiResponse<?> create(@RequestBody VaccineRecord record) {
|
||||
vaccineRecordService.save(record);
|
||||
return ApiResponse.success("created", null);
|
||||
}
|
||||
|
||||
@PutMapping("/{id}")
|
||||
public ApiResponse<?> update(@PathVariable Long id, @RequestBody VaccineRecord record) {
|
||||
record.setId(id);
|
||||
vaccineRecordService.updateById(record);
|
||||
return ApiResponse.success("updated", null);
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public ApiResponse<?> delete(@PathVariable Long id) {
|
||||
vaccineRecordService.removeById(id);
|
||||
return ApiResponse.success("deleted", null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.gpf.pethospital.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.gpf.pethospital.common.ApiResponse;
|
||||
import com.gpf.pethospital.entity.Visit;
|
||||
import com.gpf.pethospital.security.AuthUser;
|
||||
import com.gpf.pethospital.service.VisitService;
|
||||
import com.gpf.pethospital.util.SecurityUtils;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/visits")
|
||||
public class VisitController {
|
||||
private final VisitService visitService;
|
||||
|
||||
public VisitController(VisitService visitService) {
|
||||
this.visitService = visitService;
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyRole('ADMIN','DOCTOR')")
|
||||
@PostMapping
|
||||
public ApiResponse<?> create(@RequestBody Visit visit) {
|
||||
if (visit.getStatus() == null) {
|
||||
visit.setStatus("IN_PROGRESS");
|
||||
}
|
||||
if (visit.getPaymentStatus() == null) {
|
||||
visit.setPaymentStatus("UNPAID");
|
||||
}
|
||||
visitService.save(visit);
|
||||
return ApiResponse.success("created", null);
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public ApiResponse<?> list(@RequestParam(defaultValue = "1") long page,
|
||||
@RequestParam(defaultValue = "10") long size) {
|
||||
AuthUser user = SecurityUtils.currentUser();
|
||||
LambdaQueryWrapper<Visit> wrapper = new LambdaQueryWrapper<>();
|
||||
if (user != null) {
|
||||
if ("CUSTOMER".equals(user.getRole())) {
|
||||
wrapper.eq(Visit::getCustomerId, user.getId());
|
||||
} else if ("DOCTOR".equals(user.getRole())) {
|
||||
wrapper.eq(Visit::getDoctorId, user.getId());
|
||||
}
|
||||
}
|
||||
return ApiResponse.success(visitService.page(new Page<>(page, size), wrapper));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyRole('ADMIN','DOCTOR')")
|
||||
@PutMapping("/{id}")
|
||||
public ApiResponse<?> update(@PathVariable Long id, @RequestBody Visit visit) {
|
||||
visit.setId(id);
|
||||
visitService.updateById(visit);
|
||||
return ApiResponse.success("updated", null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.gpf.pethospital.dto;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
|
||||
public class LoginRequest {
|
||||
@NotBlank
|
||||
private String account;
|
||||
@NotBlank
|
||||
private String password;
|
||||
|
||||
public String getAccount() {
|
||||
return account;
|
||||
}
|
||||
|
||||
public void setAccount(String account) {
|
||||
this.account = account;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.gpf.pethospital.dto;
|
||||
|
||||
import jakarta.validation.constraints.Email;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
|
||||
public class RegisterRequest {
|
||||
@NotBlank
|
||||
private String username;
|
||||
private String phone;
|
||||
@Email
|
||||
private String email;
|
||||
@NotBlank
|
||||
private String password;
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public String getPhone() {
|
||||
return phone;
|
||||
}
|
||||
|
||||
public void setPhone(String phone) {
|
||||
this.phone = phone;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.gpf.pethospital.dto;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
|
||||
public class ReplyRequest {
|
||||
@NotBlank
|
||||
private String reply;
|
||||
|
||||
public String getReply() {
|
||||
return reply;
|
||||
}
|
||||
|
||||
public void setReply(String reply) {
|
||||
this.reply = reply;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package com.gpf.pethospital.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 门诊预约实体
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@TableName("appointment")
|
||||
public class Appointment {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 顾客ID
|
||||
*/
|
||||
private Long customerId;
|
||||
|
||||
/**
|
||||
* 宠物ID
|
||||
*/
|
||||
private Long petId;
|
||||
|
||||
/**
|
||||
* 预约医生ID(可为空,表示不指定医生)
|
||||
*/
|
||||
private Long doctorId;
|
||||
|
||||
/**
|
||||
* 科室
|
||||
*/
|
||||
private String department;
|
||||
|
||||
/**
|
||||
* 预约日期
|
||||
*/
|
||||
private LocalDate appointmentDate;
|
||||
|
||||
/**
|
||||
* 预约时段(例如:09:00-10:00)
|
||||
*/
|
||||
private String timeSlot;
|
||||
|
||||
/**
|
||||
* 预约状态:PENDING-待确认, CONFIRMED-已确认, ARRIVED-已到诊, CANCELLED-已取消, NO_SHOW-爽约
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 取消时间
|
||||
*/
|
||||
private LocalDateTime cancelTime;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记:0-未删除, 1-已删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
93
backend/src/main/java/com/gpf/pethospital/entity/Drug.java
Normal file
93
backend/src/main/java/com/gpf/pethospital/entity/Drug.java
Normal file
@@ -0,0 +1,93 @@
|
||||
package com.gpf.pethospital.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 药品实体
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@TableName("drug")
|
||||
public class Drug {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 药品名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 规格
|
||||
*/
|
||||
private String specification;
|
||||
|
||||
/**
|
||||
* 单位(如:片、盒、瓶)
|
||||
*/
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* 当前库存数量
|
||||
*/
|
||||
private Integer stock;
|
||||
|
||||
/**
|
||||
* 预警阈值
|
||||
*/
|
||||
private Integer alertThreshold;
|
||||
|
||||
/**
|
||||
* 进价
|
||||
*/
|
||||
private BigDecimal purchasePrice;
|
||||
|
||||
/**
|
||||
* 售价
|
||||
*/
|
||||
private BigDecimal salePrice;
|
||||
|
||||
/**
|
||||
* 生产厂家
|
||||
*/
|
||||
private String manufacturer;
|
||||
|
||||
/**
|
||||
* 批准文号
|
||||
*/
|
||||
private String approvalNumber;
|
||||
|
||||
/**
|
||||
* 有效期
|
||||
*/
|
||||
private LocalDateTime expiryDate;
|
||||
|
||||
/**
|
||||
* 状态:0-禁用, 1-启用
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记:0-未删除, 1-已删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
package com.gpf.pethospital.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 病历实体
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@TableName("medical_record")
|
||||
public class MedicalRecord {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 就诊记录ID
|
||||
*/
|
||||
private Long visitId;
|
||||
|
||||
/**
|
||||
* 主诉
|
||||
*/
|
||||
private String chiefComplaint;
|
||||
|
||||
/**
|
||||
* 现病史
|
||||
*/
|
||||
private String presentIllness;
|
||||
|
||||
/**
|
||||
* 体格检查
|
||||
*/
|
||||
private String physicalExamination;
|
||||
|
||||
/**
|
||||
* 检查结果
|
||||
*/
|
||||
private String examinationResults;
|
||||
|
||||
/**
|
||||
* 诊断结论
|
||||
*/
|
||||
private String diagnosis;
|
||||
|
||||
/**
|
||||
* 治疗方案
|
||||
*/
|
||||
private String treatmentPlan;
|
||||
|
||||
/**
|
||||
* 医嘱
|
||||
*/
|
||||
private String advice;
|
||||
|
||||
/**
|
||||
* 状态:DRAFT-草稿, COMPLETED-已完成
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记:0-未删除, 1-已删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
package com.gpf.pethospital.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 留言实体
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@TableName("message")
|
||||
public class Message {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 留言人ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 留言人姓名
|
||||
*/
|
||||
private String userName;
|
||||
|
||||
/**
|
||||
* 联系方式
|
||||
*/
|
||||
private String contact;
|
||||
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
private String title;
|
||||
|
||||
/**
|
||||
* 内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 处理状态:PENDING-待处理, PROCESSED-已处理
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 回复内容
|
||||
*/
|
||||
private String reply;
|
||||
|
||||
/**
|
||||
* 回复时间
|
||||
*/
|
||||
private LocalDateTime replyTime;
|
||||
|
||||
/**
|
||||
* 回复者ID
|
||||
*/
|
||||
private Long replyUserId;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记:0-未删除, 1-已删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
62
backend/src/main/java/com/gpf/pethospital/entity/Notice.java
Normal file
62
backend/src/main/java/com/gpf/pethospital/entity/Notice.java
Normal file
@@ -0,0 +1,62 @@
|
||||
package com.gpf.pethospital.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 公告实体
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@TableName("notice")
|
||||
public class Notice {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
private String title;
|
||||
|
||||
/**
|
||||
* 内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 是否置顶:0-否, 1-是
|
||||
*/
|
||||
private Integer isTop;
|
||||
|
||||
/**
|
||||
* 状态:0-下架, 1-上架
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 发布者ID
|
||||
*/
|
||||
private Long publisherId;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记:0-未删除, 1-已删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
78
backend/src/main/java/com/gpf/pethospital/entity/Order.java
Normal file
78
backend/src/main/java/com/gpf/pethospital/entity/Order.java
Normal file
@@ -0,0 +1,78 @@
|
||||
package com.gpf.pethospital.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 订单实体
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@TableName("order_info")
|
||||
public class Order {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 就诊记录ID
|
||||
*/
|
||||
private Long visitId;
|
||||
|
||||
/**
|
||||
* 顾客ID
|
||||
*/
|
||||
private Long customerId;
|
||||
|
||||
/**
|
||||
* 订单金额
|
||||
*/
|
||||
private BigDecimal amount;
|
||||
|
||||
/**
|
||||
* 订单状态:UNPAID-未支付, PAID-已支付, CANCELLED-已取消, REFUNDING-退款中, REFUNDED-已退款
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 支付方式:OFFLINE-线下支付, ALIPAY-支付宝, WECHAT-微信支付
|
||||
*/
|
||||
private String paymentMethod;
|
||||
|
||||
/**
|
||||
* 支付时间
|
||||
*/
|
||||
private LocalDateTime paymentTime;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记:0-未删除, 1-已删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
78
backend/src/main/java/com/gpf/pethospital/entity/Pet.java
Normal file
78
backend/src/main/java/com/gpf/pethospital/entity/Pet.java
Normal file
@@ -0,0 +1,78 @@
|
||||
package com.gpf.pethospital.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 宠物实体
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@TableName("pet")
|
||||
public class Pet {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 宠物主人ID
|
||||
*/
|
||||
private Long ownerId;
|
||||
|
||||
/**
|
||||
* 宠物名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 品种
|
||||
*/
|
||||
private String breed;
|
||||
|
||||
/**
|
||||
* 性别:MALE-雄性, FEMALE-雌性
|
||||
*/
|
||||
private String gender;
|
||||
|
||||
/**
|
||||
* 生日
|
||||
*/
|
||||
private LocalDate birthday;
|
||||
|
||||
/**
|
||||
* 体重(kg)
|
||||
*/
|
||||
private Double weight;
|
||||
|
||||
/**
|
||||
* 照片URL
|
||||
*/
|
||||
private String photo;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记:0-未删除, 1-已删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.gpf.pethospital.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 处方实体
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@TableName("prescription")
|
||||
public class Prescription {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 就诊记录ID
|
||||
*/
|
||||
private Long visitId;
|
||||
|
||||
/**
|
||||
* 医生ID
|
||||
*/
|
||||
private Long doctorId;
|
||||
|
||||
/**
|
||||
* 处方状态:DRAFT-草稿, SUBMITTED-已提交, ISSUED-已发药, VOIDED-已作废
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记:0-未删除, 1-已删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package com.gpf.pethospital.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 处方明细实体
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@TableName("prescription_item")
|
||||
public class PrescriptionItem {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 处方ID
|
||||
*/
|
||||
private Long prescriptionId;
|
||||
|
||||
/**
|
||||
* 药品ID
|
||||
*/
|
||||
private Long drugId;
|
||||
|
||||
/**
|
||||
* 药品名称(冗余字段,方便查询)
|
||||
*/
|
||||
private String drugName;
|
||||
|
||||
/**
|
||||
* 规格
|
||||
*/
|
||||
private String specification;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
private Integer quantity;
|
||||
|
||||
/**
|
||||
* 用法用量
|
||||
*/
|
||||
private String usage;
|
||||
|
||||
/**
|
||||
* 用药天数
|
||||
*/
|
||||
private Integer days;
|
||||
|
||||
/**
|
||||
* 单价
|
||||
*/
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
/**
|
||||
* 小计
|
||||
*/
|
||||
private BigDecimal subtotal;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记:0-未删除, 1-已删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
72
backend/src/main/java/com/gpf/pethospital/entity/Report.java
Normal file
72
backend/src/main/java/com/gpf/pethospital/entity/Report.java
Normal file
@@ -0,0 +1,72 @@
|
||||
package com.gpf.pethospital.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 检查报告实体
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@TableName("report")
|
||||
public class Report {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 就诊记录ID
|
||||
*/
|
||||
private Long visitId;
|
||||
|
||||
/**
|
||||
* 宠物ID
|
||||
*/
|
||||
private Long petId;
|
||||
|
||||
/**
|
||||
* 报告类型(如:血常规、X光、B超等)
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 报告名称
|
||||
*/
|
||||
private String title;
|
||||
|
||||
/**
|
||||
* 报告内容摘要
|
||||
*/
|
||||
private String summary;
|
||||
|
||||
/**
|
||||
* 附件URL(图片或PDF)
|
||||
*/
|
||||
private String attachmentUrl;
|
||||
|
||||
/**
|
||||
* 检查医生ID
|
||||
*/
|
||||
private Long doctorId;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记:0-未删除, 1-已删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
package com.gpf.pethospital.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 入库流水实体
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@TableName("stock_in")
|
||||
public class StockIn {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 药品ID
|
||||
*/
|
||||
private Long drugId;
|
||||
|
||||
/**
|
||||
* 入库数量
|
||||
*/
|
||||
private Integer quantity;
|
||||
|
||||
/**
|
||||
* 经办人ID
|
||||
*/
|
||||
private Long operatorId;
|
||||
|
||||
/**
|
||||
* 入库时间
|
||||
*/
|
||||
private LocalDateTime stockInTime;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记:0-未删除, 1-已删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
package com.gpf.pethospital.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 出库/消耗流水实体
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@TableName("stock_out")
|
||||
public class StockOut {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 药品ID
|
||||
*/
|
||||
private Long drugId;
|
||||
|
||||
/**
|
||||
* 处方ID(可为空)
|
||||
*/
|
||||
private Long prescriptionId;
|
||||
|
||||
/**
|
||||
* 出库数量
|
||||
*/
|
||||
private Integer quantity;
|
||||
|
||||
/**
|
||||
* 经办人ID
|
||||
*/
|
||||
private Long operatorId;
|
||||
|
||||
/**
|
||||
* 出库时间
|
||||
*/
|
||||
private LocalDateTime stockOutTime;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记:0-未删除, 1-已删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
72
backend/src/main/java/com/gpf/pethospital/entity/User.java
Normal file
72
backend/src/main/java/com/gpf/pethospital/entity/User.java
Normal file
@@ -0,0 +1,72 @@
|
||||
package com.gpf.pethospital.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 用户实体
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@TableName("`user`")
|
||||
public class User {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户名/姓名
|
||||
*/
|
||||
private String username;
|
||||
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 邮箱
|
||||
*/
|
||||
private String email;
|
||||
|
||||
/**
|
||||
* 密码(加密后)
|
||||
*/
|
||||
private String password;
|
||||
|
||||
/**
|
||||
* 角色:ADMIN-管理员, DOCTOR-医生, CUSTOMER-顾客
|
||||
*/
|
||||
private String role;
|
||||
|
||||
/**
|
||||
* 状态:0-禁用, 1-启用
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 头像URL
|
||||
*/
|
||||
private String avatar;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记:0-未删除, 1-已删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.gpf.pethospital.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 疫苗/驱虫记录实体
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@TableName("vaccine_record")
|
||||
public class VaccineRecord {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 宠物ID
|
||||
*/
|
||||
private Long petId;
|
||||
|
||||
/**
|
||||
* 记录类型:VACCINE-疫苗, DEWORMING-驱虫
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 项目名称(如:狂犬疫苗、体内驱虫等)
|
||||
*/
|
||||
private String itemName;
|
||||
|
||||
/**
|
||||
* 执行日期
|
||||
*/
|
||||
private LocalDate executeDate;
|
||||
|
||||
/**
|
||||
* 下次提醒日期
|
||||
*/
|
||||
private LocalDate nextReminderDate;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记:0-未删除, 1-已删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
93
backend/src/main/java/com/gpf/pethospital/entity/Visit.java
Normal file
93
backend/src/main/java/com/gpf/pethospital/entity/Visit.java
Normal file
@@ -0,0 +1,93 @@
|
||||
package com.gpf.pethospital.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 就诊记录实体
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@TableName("visit")
|
||||
public class Visit {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 预约ID(可为空,现场挂号无预约)
|
||||
*/
|
||||
private Long appointmentId;
|
||||
|
||||
/**
|
||||
* 顾客ID
|
||||
*/
|
||||
private Long customerId;
|
||||
|
||||
/**
|
||||
* 宠物ID
|
||||
*/
|
||||
private Long petId;
|
||||
|
||||
/**
|
||||
* 接诊医生ID
|
||||
*/
|
||||
private Long doctorId;
|
||||
|
||||
/**
|
||||
* 就诊状态:IN_PROGRESS-就诊中, COMPLETED-已完成
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 总费用
|
||||
*/
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
/**
|
||||
* 支付状态:UNPAID-未支付, PAID-已支付, REFUNDING-退款中, REFUNDED-已退款
|
||||
*/
|
||||
private String paymentStatus;
|
||||
|
||||
/**
|
||||
* 支付方式:OFFLINE-线下支付, ALIPAY-支付宝, WECHAT-微信支付
|
||||
*/
|
||||
private String paymentMethod;
|
||||
|
||||
/**
|
||||
* 支付时间
|
||||
*/
|
||||
private LocalDateTime paymentTime;
|
||||
|
||||
/**
|
||||
* 开始就诊时间
|
||||
*/
|
||||
private LocalDateTime startTime;
|
||||
|
||||
/**
|
||||
* 结束就诊时间
|
||||
*/
|
||||
private LocalDateTime endTime;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记:0-未删除, 1-已删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.gpf.pethospital.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.gpf.pethospital.entity.Appointment;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface AppointmentMapper extends BaseMapper<Appointment> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.gpf.pethospital.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.gpf.pethospital.entity.Drug;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface DrugMapper extends BaseMapper<Drug> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.gpf.pethospital.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.gpf.pethospital.entity.MedicalRecord;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface MedicalRecordMapper extends BaseMapper<MedicalRecord> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.gpf.pethospital.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.gpf.pethospital.entity.Message;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface MessageMapper extends BaseMapper<Message> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.gpf.pethospital.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.gpf.pethospital.entity.Notice;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface NoticeMapper extends BaseMapper<Notice> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.gpf.pethospital.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.gpf.pethospital.entity.Order;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface OrderMapper extends BaseMapper<Order> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.gpf.pethospital.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.gpf.pethospital.entity.Pet;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface PetMapper extends BaseMapper<Pet> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.gpf.pethospital.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.gpf.pethospital.entity.PrescriptionItem;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface PrescriptionItemMapper extends BaseMapper<PrescriptionItem> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.gpf.pethospital.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.gpf.pethospital.entity.Prescription;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface PrescriptionMapper extends BaseMapper<Prescription> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.gpf.pethospital.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.gpf.pethospital.entity.Report;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface ReportMapper extends BaseMapper<Report> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.gpf.pethospital.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.gpf.pethospital.entity.StockIn;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface StockInMapper extends BaseMapper<StockIn> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.gpf.pethospital.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.gpf.pethospital.entity.StockOut;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface StockOutMapper extends BaseMapper<StockOut> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.gpf.pethospital.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.gpf.pethospital.entity.User;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface UserMapper extends BaseMapper<User> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.gpf.pethospital.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.gpf.pethospital.entity.VaccineRecord;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface VaccineRecordMapper extends BaseMapper<VaccineRecord> {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.gpf.pethospital.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.gpf.pethospital.entity.Visit;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface VisitMapper extends BaseMapper<Visit> {
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.gpf.pethospital.security;
|
||||
|
||||
public class AuthUser {
|
||||
private final Long id;
|
||||
private final String username;
|
||||
private final String role;
|
||||
|
||||
public AuthUser(Long id, String username, String role) {
|
||||
this.id = id;
|
||||
this.username = username;
|
||||
this.role = role;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public String getRole() {
|
||||
return role;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.gpf.pethospital.security;
|
||||
|
||||
import com.gpf.pethospital.util.JwtUtil;
|
||||
import io.jsonwebtoken.Claims;
|
||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.filter.OncePerRequestFilter;
|
||||
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
|
||||
public class JwtAuthenticationFilter extends OncePerRequestFilter {
|
||||
private final JwtUtil jwtUtil;
|
||||
|
||||
public JwtAuthenticationFilter(JwtUtil jwtUtil) {
|
||||
this.jwtUtil = jwtUtil;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
|
||||
throws ServletException, IOException {
|
||||
String token = resolveToken(request);
|
||||
if (StringUtils.hasText(token)) {
|
||||
try {
|
||||
Claims claims = jwtUtil.parseToken(token);
|
||||
String username = claims.get("username", String.class);
|
||||
String role = claims.get("role", String.class);
|
||||
Number uid = claims.get("uid", Number.class);
|
||||
Long userId = uid == null ? null : uid.longValue();
|
||||
SimpleGrantedAuthority authority = new SimpleGrantedAuthority("ROLE_" + role);
|
||||
AuthUser principal = new AuthUser(userId, username, role);
|
||||
Authentication auth = new UsernamePasswordAuthenticationToken(principal, null, Collections.singleton(authority));
|
||||
SecurityContextHolder.getContext().setAuthentication(auth);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
filterChain.doFilter(request, response);
|
||||
}
|
||||
|
||||
private String resolveToken(HttpServletRequest request) {
|
||||
String bearer = request.getHeader("Authorization");
|
||||
if (StringUtils.hasText(bearer) && bearer.startsWith("Bearer ")) {
|
||||
return bearer.substring(7);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.gpf.pethospital.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.gpf.pethospital.entity.Appointment;
|
||||
|
||||
public interface AppointmentService extends IService<Appointment> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.gpf.pethospital.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.gpf.pethospital.entity.Drug;
|
||||
|
||||
public interface DrugService extends IService<Drug> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.gpf.pethospital.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.gpf.pethospital.entity.MedicalRecord;
|
||||
|
||||
public interface MedicalRecordService extends IService<MedicalRecord> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.gpf.pethospital.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.gpf.pethospital.entity.Message;
|
||||
|
||||
public interface MessageService extends IService<Message> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.gpf.pethospital.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.gpf.pethospital.entity.Notice;
|
||||
|
||||
public interface NoticeService extends IService<Notice> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.gpf.pethospital.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.gpf.pethospital.entity.Order;
|
||||
|
||||
public interface OrderService extends IService<Order> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.gpf.pethospital.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.gpf.pethospital.entity.Pet;
|
||||
|
||||
public interface PetService extends IService<Pet> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.gpf.pethospital.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.gpf.pethospital.entity.PrescriptionItem;
|
||||
|
||||
public interface PrescriptionItemService extends IService<PrescriptionItem> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.gpf.pethospital.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.gpf.pethospital.entity.Prescription;
|
||||
|
||||
public interface PrescriptionService extends IService<Prescription> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.gpf.pethospital.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.gpf.pethospital.entity.Report;
|
||||
|
||||
public interface ReportService extends IService<Report> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.gpf.pethospital.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.gpf.pethospital.entity.StockIn;
|
||||
|
||||
public interface StockInService extends IService<StockIn> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.gpf.pethospital.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.gpf.pethospital.entity.StockOut;
|
||||
|
||||
public interface StockOutService extends IService<StockOut> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.gpf.pethospital.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.gpf.pethospital.entity.User;
|
||||
|
||||
public interface UserService extends IService<User> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.gpf.pethospital.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.gpf.pethospital.entity.VaccineRecord;
|
||||
|
||||
public interface VaccineRecordService extends IService<VaccineRecord> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.gpf.pethospital.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.gpf.pethospital.entity.Visit;
|
||||
|
||||
public interface VisitService extends IService<Visit> {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.gpf.pethospital.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gpf.pethospital.entity.Appointment;
|
||||
import com.gpf.pethospital.mapper.AppointmentMapper;
|
||||
import com.gpf.pethospital.service.AppointmentService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class AppointmentServiceImpl extends ServiceImpl<AppointmentMapper, Appointment> implements AppointmentService {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.gpf.pethospital.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gpf.pethospital.entity.Drug;
|
||||
import com.gpf.pethospital.mapper.DrugMapper;
|
||||
import com.gpf.pethospital.service.DrugService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class DrugServiceImpl extends ServiceImpl<DrugMapper, Drug> implements DrugService {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.gpf.pethospital.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gpf.pethospital.entity.MedicalRecord;
|
||||
import com.gpf.pethospital.mapper.MedicalRecordMapper;
|
||||
import com.gpf.pethospital.service.MedicalRecordService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class MedicalRecordServiceImpl extends ServiceImpl<MedicalRecordMapper, MedicalRecord> implements MedicalRecordService {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.gpf.pethospital.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gpf.pethospital.entity.Message;
|
||||
import com.gpf.pethospital.mapper.MessageMapper;
|
||||
import com.gpf.pethospital.service.MessageService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> implements MessageService {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.gpf.pethospital.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gpf.pethospital.entity.Notice;
|
||||
import com.gpf.pethospital.mapper.NoticeMapper;
|
||||
import com.gpf.pethospital.service.NoticeService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class NoticeServiceImpl extends ServiceImpl<NoticeMapper, Notice> implements NoticeService {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.gpf.pethospital.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gpf.pethospital.entity.Order;
|
||||
import com.gpf.pethospital.mapper.OrderMapper;
|
||||
import com.gpf.pethospital.service.OrderService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.gpf.pethospital.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gpf.pethospital.entity.Pet;
|
||||
import com.gpf.pethospital.mapper.PetMapper;
|
||||
import com.gpf.pethospital.service.PetService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class PetServiceImpl extends ServiceImpl<PetMapper, Pet> implements PetService {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.gpf.pethospital.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gpf.pethospital.entity.PrescriptionItem;
|
||||
import com.gpf.pethospital.mapper.PrescriptionItemMapper;
|
||||
import com.gpf.pethospital.service.PrescriptionItemService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class PrescriptionItemServiceImpl extends ServiceImpl<PrescriptionItemMapper, PrescriptionItem> implements PrescriptionItemService {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.gpf.pethospital.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gpf.pethospital.entity.Prescription;
|
||||
import com.gpf.pethospital.mapper.PrescriptionMapper;
|
||||
import com.gpf.pethospital.service.PrescriptionService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class PrescriptionServiceImpl extends ServiceImpl<PrescriptionMapper, Prescription> implements PrescriptionService {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.gpf.pethospital.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gpf.pethospital.entity.Report;
|
||||
import com.gpf.pethospital.mapper.ReportMapper;
|
||||
import com.gpf.pethospital.service.ReportService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> implements ReportService {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.gpf.pethospital.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gpf.pethospital.entity.StockIn;
|
||||
import com.gpf.pethospital.mapper.StockInMapper;
|
||||
import com.gpf.pethospital.service.StockInService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class StockInServiceImpl extends ServiceImpl<StockInMapper, StockIn> implements StockInService {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.gpf.pethospital.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gpf.pethospital.entity.StockOut;
|
||||
import com.gpf.pethospital.mapper.StockOutMapper;
|
||||
import com.gpf.pethospital.service.StockOutService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class StockOutServiceImpl extends ServiceImpl<StockOutMapper, StockOut> implements StockOutService {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.gpf.pethospital.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gpf.pethospital.entity.User;
|
||||
import com.gpf.pethospital.mapper.UserMapper;
|
||||
import com.gpf.pethospital.service.UserService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.gpf.pethospital.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gpf.pethospital.entity.VaccineRecord;
|
||||
import com.gpf.pethospital.mapper.VaccineRecordMapper;
|
||||
import com.gpf.pethospital.service.VaccineRecordService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class VaccineRecordServiceImpl extends ServiceImpl<VaccineRecordMapper, VaccineRecord> implements VaccineRecordService {
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user