diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 8a43039..befd7f7 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -16,7 +16,7 @@
   </component>
   <component name="JavacSettings">
     <option name="ADDITIONAL_OPTIONS_OVERRIDE">
-      <module name="echo-backend" options="-parameters --add-opens jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED" />
+      <module name="echo-backend" options="-parameters" />
     </option>
   </component>
 </project>
\ No newline at end of file
diff --git a/.idea/dataSources.local.xml b/.idea/dataSources.local.xml
new file mode 100644
index 0000000..06df570
--- /dev/null
+++ b/.idea/dataSources.local.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="dataSourceStorageLocal" created-in="IU-243.21565.193">
+    <data-source name="ptProject@localhost" uuid="6689f15a-5cd0-40b0-970c-713db3e7bac2">
+      <database-info product="MySQL" version="8.0.40" jdbc-version="4.2" driver-name="MySQL Connector/J" driver-version="mysql-connector-j-8.2.0 (Revision: 06a1f724497fd81c6a659131fda822c9e5085b6c)" dbms="MYSQL" exact-version="8.0.40" exact-driver-version="8.2">
+        <extra-name-characters>#@</extra-name-characters>
+        <identifier-quote-string>`</identifier-quote-string>
+      </database-info>
+      <case-sensitivity plain-identifiers="lower" quoted-identifiers="lower" />
+      <user-name>root</user-name>
+      <schema-mapping>
+        <introspection-scope>
+          <node kind="schema" qname="@" />
+        </introspection-scope>
+      </schema-mapping>
+    </data-source>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
new file mode 100644
index 0000000..25041e4
--- /dev/null
+++ b/.idea/dataSources.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="DataSourceManagerImpl" format="xml" multifile-model="true">
+    <data-source source="LOCAL" name="ptProject@localhost" uuid="6689f15a-5cd0-40b0-970c-713db3e7bac2">
+      <driver-ref>mysql.8</driver-ref>
+      <synchronize>true</synchronize>
+      <imported>true</imported>
+      <jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
+      <jdbc-url>jdbc:mysql://localhost:3306/ptProject</jdbc-url>
+      <jdbc-additional-properties>
+        <property name="com.intellij.clouds.kubernetes.db.host.port" />
+        <property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
+        <property name="com.intellij.clouds.kubernetes.db.resource.type" value="Deployment" />
+        <property name="com.intellij.clouds.kubernetes.db.container.port" />
+      </jdbc-additional-properties>
+      <working-dir>$ProjectFileDir$</working-dir>
+    </data-source>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2.corrupted.20250604-035022.reason.txt b/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2.corrupted.20250604-035022.reason.txt
new file mode 100644
index 0000000..7281aab
--- /dev/null
+++ b/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2.corrupted.20250604-035022.reason.txt
@@ -0,0 +1,70 @@
+java.lang.IllegalStateException: Storage for [C:\Users\86157\AppData\Local\JetBrains\IntelliJIdea2024.3\data-source\3556057e\6689f15a-5cd0-40b0-970c-713db3e7bac2\entities\entities.dat] is already registered
+	at com.intellij.util.io.FilePageCache.registerPagedFileStorage(FilePageCache.java:410)
+	at com.intellij.util.io.PagedFileStorage.<init>(PagedFileStorage.java:74)
+	at com.intellij.util.io.ResizeableMappedFile.<init>(ResizeableMappedFile.java:71)
+	at com.intellij.util.io.PersistentBTreeEnumerator.<init>(PersistentBTreeEnumerator.java:130)
+	at com.intellij.util.io.PersistentEnumerator.createDefaultEnumerator(PersistentEnumerator.java:53)
+	at com.intellij.util.io.PersistentMapImpl.<init>(PersistentMapImpl.java:166)
+	at com.intellij.util.io.PersistentMapImpl.<init>(PersistentMapImpl.java:141)
+	at com.intellij.util.io.PersistentMapBuilder.buildImplementation(PersistentMapBuilder.java:91)
+	at com.intellij.util.io.PersistentMapBuilder.build(PersistentMapBuilder.java:74)
+	at com.intellij.database.model.ModelEntityStoragePersistentBackend.opened(ModelEntityStoragePersistentBackend.kt:136)
+	at com.intellij.database.model.ModelEntityStoragePersistentBackend.<init>(ModelEntityStoragePersistentBackend.kt:86)
+	at com.intellij.database.model.ModelEntityStoragePersistentBackendKt$ourFlusher$1$create$1.invoke(ModelEntityStoragePersistentBackend.kt:45)
+	at com.intellij.database.model.ModelEntityStoragePersistentBackendKt$ourFlusher$1$create$1.invoke(ModelEntityStoragePersistentBackend.kt:45)
+	at com.intellij.database.model.ModelEntityStoragePersistentBackendKt$ourFlusher$1.create$lambda$0(ModelEntityStoragePersistentBackend.kt:45)
+	at java.base/java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java:330)
+	at com.intellij.database.model.ModelEntityStoragePersistentBackendKt$ourFlusher$1.create(ModelEntityStoragePersistentBackend.kt:45)
+	at com.intellij.database.model.ModelEntityStoragePersistentBackendKt.create(ModelEntityStoragePersistentBackend.kt:76)
+	at com.intellij.database.dataSource.srcStorage.DbSrcModelStorage.createBackend(DbSrcModelStorage.java:298)
+	at com.intellij.database.dataSource.srcStorage.DbSrcModelStorage.createPersistentBackend(DbSrcModelStorage.java:288)
+	at com.intellij.database.dataSource.srcStorage.DbSrcModelStorage.createEntityStorage(DbSrcModelStorage.java:267)
+	at com.intellij.database.model.BaseModel.<init>(BaseModel.java:106)
+	at com.intellij.database.dialects.mysql.model.MysqlImplModel.<init>(MysqlImplModel.java:42)
+	at com.intellij.database.model.meta.BasicMetaModel.newModel(BasicMetaModel.java:60)
+	at com.intellij.database.model.ModelFacade.createModel(ModelFacade.java:31)
+	at com.intellij.database.model.ModelFactory.createModel(ModelFactory.kt:22)
+	at com.intellij.database.model.serialization.ModelImporter.deserializeFast(ModelImporter.java:94)
+	at com.intellij.database.model.serialization.ModelImporter.deserialize(ModelImporter.java:70)
+	at com.intellij.database.dataSource.DataSourceModelStorageImpl$Companion.readModel(DataSourceModelStorageImpl.kt:605)
+	at com.intellij.database.dataSource.DataSourceModelStorageImpl$Companion.readModel(DataSourceModelStorageImpl.kt:588)
+	at com.intellij.database.dataSource.DataSourceModelStorageImpl.readModel(DataSourceModelStorageImpl.kt:373)
+	at com.intellij.database.dataSource.DataSourceModelStorageImpl.loadModels(DataSourceModelStorageImpl.kt:262)
+	at com.intellij.database.dataSource.DataSourceModelStorageImpl.readStateHeavy(DataSourceModelStorageImpl.kt:161)
+	at com.intellij.database.dataSource.DataSourceModelStorageImpl.continueLoadingWhenInitialized$lambda$8$lambda$7$lambda$6$lambda$5(DataSourceModelStorageImpl.kt:144)
+	at com.intellij.openapi.progress.util.BackgroundTaskUtil.lambda$runUnderDisposeAwareIndicator$15(BackgroundTaskUtil.java:371)
+	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:223)
+	at com.intellij.platform.diagnostic.telemetry.helpers.TraceKt.use(trace.kt:45)
+	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:222)
+	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$14(CoreProgressManager.java:674)
+	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:749)
+	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:705)
+	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:673)
+	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
+	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:203)
+	at com.intellij.openapi.progress.util.BackgroundTaskUtil.runUnderDisposeAwareIndicator(BackgroundTaskUtil.java:366)
+	at com.intellij.openapi.progress.util.BackgroundTaskUtil.runUnderDisposeAwareIndicator(BackgroundTaskUtil.java:349)
+	at com.intellij.database.dataSource.DataSourceModelStorageImpl.continueLoadingWhenInitialized$lambda$8$lambda$7$lambda$6(DataSourceModelStorageImpl.kt:143)
+	at com.intellij.database.util.AsyncTask$Frame$compute$$inlined$supply$1$1.run(AsyncTask.kt:338)
+	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$14(CoreProgressManager.java:674)
+	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:749)
+	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:705)
+	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:673)
+	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
+	at com.intellij.database.util.AsyncTask$Frame$compute$$inlined$supply$1.get(AsyncTask.kt:900)
+	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
+	at com.intellij.util.concurrency.ChildContext$runInChildContext$1.invoke(propagation.kt:101)
+	at com.intellij.util.concurrency.ChildContext$runInChildContext$1.invoke(propagation.kt:101)
+	at com.intellij.util.concurrency.ChildContext.runInChildContext(propagation.kt:107)
+	at com.intellij.util.concurrency.ChildContext.runInChildContext(propagation.kt:101)
+	at com.intellij.util.concurrency.ContextRunnable.run(ContextRunnable.java:27)
+	at com.intellij.database.dataSource.DataSourceModelStorageImpl$continueLoadingWhenInitialized$2$1$1$1$1.invokeSuspend(DataSourceModelStorageImpl.kt:142)
+	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
+	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
+	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:608)
+	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:873)
+	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:763)
+	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:750)
+	Suppressed: java.lang.Exception: Storage[C:\Users\86157\AppData\Local\JetBrains\IntelliJIdea2024.3\data-source\3556057e\6689f15a-5cd0-40b0-970c-713db3e7bac2\entities\entities.dat] registration stack trace
+		at com.intellij.util.io.FilePageCache.registerPagedFileStorage(FilePageCache.java:437)
+		... 65 more
diff --git a/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2.corrupted.20250604-035022.xml b/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2.corrupted.20250604-035022.xml
new file mode 100644
index 0000000..a0d6068
--- /dev/null
+++ b/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2.corrupted.20250604-035022.xml
@@ -0,0 +1,2708 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dataSource name="ptProject@localhost">
+  <database-model serializer="dbm" dbms="MYSQL" family-id="MYSQL" format-version="4.53">
+    <root id="1">
+      <DefaultCasing>lower/lower</DefaultCasing>
+      <DefaultEngine>InnoDB</DefaultEngine>
+      <DefaultTmpEngine>InnoDB</DefaultTmpEngine>
+      <Grants>|root||root|localhost|ALTER|G
+|root||root|localhost|ALTER ROUTINE|G
+|root||root|localhost|APPLICATION_PASSWORD_ADMIN|G
+|root||mysql.infoschema|localhost|AUDIT_ABORT_EXEMPT|G
+|root||mysql.session|localhost|AUDIT_ABORT_EXEMPT|G
+|root||mysql.sys|localhost|AUDIT_ABORT_EXEMPT|G
+|root||root|localhost|AUDIT_ABORT_EXEMPT|G
+|root||root|localhost|AUDIT_ADMIN|G
+|root||mysql.session|localhost|AUTHENTICATION_POLICY_ADMIN|G
+|root||root|localhost|AUTHENTICATION_POLICY_ADMIN|G
+|root||mysql.session|localhost|BACKUP_ADMIN|G
+|root||root|localhost|BACKUP_ADMIN|G
+|root||root|localhost|BINLOG_ADMIN|G
+|root||root|localhost|BINLOG_ENCRYPTION_ADMIN|G
+|root||mysql.session|localhost|CLONE_ADMIN|G
+|root||root|localhost|CLONE_ADMIN|G
+|root||mysql.session|localhost|CONNECTION_ADMIN|G
+|root||root|localhost|CONNECTION_ADMIN|G
+|root||root|localhost|CREATE|G
+|root||root|localhost|CREATE ROLE|G
+|root||root|localhost|CREATE ROUTINE|G
+|root||root|localhost|CREATE TABLESPACE|G
+|root||root|localhost|CREATE TEMPORARY TABLES|G
+|root||root|localhost|CREATE USER|G
+|root||root|localhost|CREATE VIEW|G
+|root||root|localhost|DELETE|G
+|root||root|localhost|DROP|G
+|root||root|localhost|DROP ROLE|G
+|root||root|localhost|ENCRYPTION_KEY_ADMIN|G
+|root||root|localhost|EVENT|G
+|root||root|localhost|EXECUTE|G
+|root||root|localhost|FILE|G
+|root||mysql.infoschema|localhost|FIREWALL_EXEMPT|G
+|root||mysql.session|localhost|FIREWALL_EXEMPT|G
+|root||mysql.sys|localhost|FIREWALL_EXEMPT|G
+|root||root|localhost|FIREWALL_EXEMPT|G
+|root||root|localhost|FLUSH_OPTIMIZER_COSTS|G
+|root||root|localhost|FLUSH_STATUS|G
+|root||root|localhost|FLUSH_TABLES|G
+|root||root|localhost|FLUSH_USER_RESOURCES|G
+|root||root|localhost|GROUP_REPLICATION_ADMIN|G
+|root||root|localhost|GROUP_REPLICATION_STREAM|G
+|root||root|localhost|INDEX|G
+|root||root|localhost|INNODB_REDO_LOG_ARCHIVE|G
+|root||root|localhost|INNODB_REDO_LOG_ENABLE|G
+|root||root|localhost|INSERT|G
+|root||root|localhost|LOCK TABLES|G
+|root||root|localhost|PASSWORDLESS_USER_ADMIN|G
+|root||mysql.session|localhost|PERSIST_RO_VARIABLES_ADMIN|G
+|root||root|localhost|PERSIST_RO_VARIABLES_ADMIN|G
+|root||root|localhost|PROCESS|G
+|root||root|localhost|REFERENCES|G
+|root||root|localhost|RELOAD|G
+|root||root|localhost|REPLICATION CLIENT|G
+|root||root|localhost|REPLICATION SLAVE|G
+|root||root|localhost|REPLICATION_APPLIER|G
+|root||root|localhost|REPLICATION_SLAVE_ADMIN|G
+|root||root|localhost|RESOURCE_GROUP_ADMIN|G
+|root||root|localhost|RESOURCE_GROUP_USER|G
+|root||root|localhost|ROLE_ADMIN|G
+|root||mysql.infoschema|localhost|SELECT|G
+|root||root|localhost|SELECT|G
+|root||root|localhost|SENSITIVE_VARIABLES_OBSERVER|G
+|root||root|localhost|SERVICE_CONNECTION_ADMIN|G
+|root||mysql.session|localhost|SESSION_VARIABLES_ADMIN|G
+|root||root|localhost|SESSION_VARIABLES_ADMIN|G
+|root||root|localhost|SET_USER_ID|G
+|root||root|localhost|SHOW DATABASES|G
+|root||root|localhost|SHOW VIEW|G
+|root||root|localhost|SHOW_ROUTINE|G
+|root||mysql.session|localhost|SHUTDOWN|G
+|root||root|localhost|SHUTDOWN|G
+|root||mysql.session|localhost|SUPER|G
+|root||root|localhost|SUPER|G
+|root||mysql.infoschema|localhost|SYSTEM_USER|G
+|root||mysql.session|localhost|SYSTEM_USER|G
+|root||mysql.sys|localhost|SYSTEM_USER|G
+|root||root|localhost|SYSTEM_USER|G
+|root||mysql.session|localhost|SYSTEM_VARIABLES_ADMIN|G
+|root||root|localhost|SYSTEM_VARIABLES_ADMIN|G
+|root||root|localhost|TABLE_ENCRYPTION_ADMIN|G
+|root||root|localhost|TELEMETRY_LOG_ADMIN|G
+|root||root|localhost|TRIGGER|G
+|root||root|localhost|UPDATE|G
+|root||root|localhost|XA_RECOVER_ADMIN|G
+|root||root|localhost|grant option|G
+performance_schema|schema||mysql.session|localhost|SELECT|G
+sys|schema||mysql.sys|localhost|TRIGGER|G</Grants>
+      <ServerVersion>8.0.40</ServerVersion>
+    </root>
+    <collation id="2" parent="1" name="armscii8_general_ci">
+      <Charset>armscii8</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="3" parent="1" name="armscii8_bin">
+      <Charset>armscii8</Charset>
+    </collation>
+    <collation id="4" parent="1" name="ascii_general_ci">
+      <Charset>ascii</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="5" parent="1" name="ascii_bin">
+      <Charset>ascii</Charset>
+    </collation>
+    <collation id="6" parent="1" name="big5_chinese_ci">
+      <Charset>big5</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="7" parent="1" name="big5_bin">
+      <Charset>big5</Charset>
+    </collation>
+    <collation id="8" parent="1" name="binary">
+      <Charset>binary</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="9" parent="1" name="cp1250_general_ci">
+      <Charset>cp1250</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="10" parent="1" name="cp1250_czech_cs">
+      <Charset>cp1250</Charset>
+    </collation>
+    <collation id="11" parent="1" name="cp1250_croatian_ci">
+      <Charset>cp1250</Charset>
+    </collation>
+    <collation id="12" parent="1" name="cp1250_bin">
+      <Charset>cp1250</Charset>
+    </collation>
+    <collation id="13" parent="1" name="cp1250_polish_ci">
+      <Charset>cp1250</Charset>
+    </collation>
+    <collation id="14" parent="1" name="cp1251_bulgarian_ci">
+      <Charset>cp1251</Charset>
+    </collation>
+    <collation id="15" parent="1" name="cp1251_ukrainian_ci">
+      <Charset>cp1251</Charset>
+    </collation>
+    <collation id="16" parent="1" name="cp1251_bin">
+      <Charset>cp1251</Charset>
+    </collation>
+    <collation id="17" parent="1" name="cp1251_general_ci">
+      <Charset>cp1251</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="18" parent="1" name="cp1251_general_cs">
+      <Charset>cp1251</Charset>
+    </collation>
+    <collation id="19" parent="1" name="cp1256_general_ci">
+      <Charset>cp1256</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="20" parent="1" name="cp1256_bin">
+      <Charset>cp1256</Charset>
+    </collation>
+    <collation id="21" parent="1" name="cp1257_lithuanian_ci">
+      <Charset>cp1257</Charset>
+    </collation>
+    <collation id="22" parent="1" name="cp1257_bin">
+      <Charset>cp1257</Charset>
+    </collation>
+    <collation id="23" parent="1" name="cp1257_general_ci">
+      <Charset>cp1257</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="24" parent="1" name="cp850_general_ci">
+      <Charset>cp850</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="25" parent="1" name="cp850_bin">
+      <Charset>cp850</Charset>
+    </collation>
+    <collation id="26" parent="1" name="cp852_general_ci">
+      <Charset>cp852</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="27" parent="1" name="cp852_bin">
+      <Charset>cp852</Charset>
+    </collation>
+    <collation id="28" parent="1" name="cp866_general_ci">
+      <Charset>cp866</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="29" parent="1" name="cp866_bin">
+      <Charset>cp866</Charset>
+    </collation>
+    <collation id="30" parent="1" name="cp932_japanese_ci">
+      <Charset>cp932</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="31" parent="1" name="cp932_bin">
+      <Charset>cp932</Charset>
+    </collation>
+    <collation id="32" parent="1" name="dec8_swedish_ci">
+      <Charset>dec8</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="33" parent="1" name="dec8_bin">
+      <Charset>dec8</Charset>
+    </collation>
+    <collation id="34" parent="1" name="eucjpms_japanese_ci">
+      <Charset>eucjpms</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="35" parent="1" name="eucjpms_bin">
+      <Charset>eucjpms</Charset>
+    </collation>
+    <collation id="36" parent="1" name="euckr_korean_ci">
+      <Charset>euckr</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="37" parent="1" name="euckr_bin">
+      <Charset>euckr</Charset>
+    </collation>
+    <collation id="38" parent="1" name="gb18030_chinese_ci">
+      <Charset>gb18030</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="39" parent="1" name="gb18030_bin">
+      <Charset>gb18030</Charset>
+    </collation>
+    <collation id="40" parent="1" name="gb18030_unicode_520_ci">
+      <Charset>gb18030</Charset>
+    </collation>
+    <collation id="41" parent="1" name="gb2312_chinese_ci">
+      <Charset>gb2312</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="42" parent="1" name="gb2312_bin">
+      <Charset>gb2312</Charset>
+    </collation>
+    <collation id="43" parent="1" name="gbk_chinese_ci">
+      <Charset>gbk</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="44" parent="1" name="gbk_bin">
+      <Charset>gbk</Charset>
+    </collation>
+    <collation id="45" parent="1" name="geostd8_general_ci">
+      <Charset>geostd8</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="46" parent="1" name="geostd8_bin">
+      <Charset>geostd8</Charset>
+    </collation>
+    <collation id="47" parent="1" name="greek_general_ci">
+      <Charset>greek</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="48" parent="1" name="greek_bin">
+      <Charset>greek</Charset>
+    </collation>
+    <collation id="49" parent="1" name="hebrew_general_ci">
+      <Charset>hebrew</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="50" parent="1" name="hebrew_bin">
+      <Charset>hebrew</Charset>
+    </collation>
+    <collation id="51" parent="1" name="hp8_english_ci">
+      <Charset>hp8</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="52" parent="1" name="hp8_bin">
+      <Charset>hp8</Charset>
+    </collation>
+    <collation id="53" parent="1" name="keybcs2_general_ci">
+      <Charset>keybcs2</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="54" parent="1" name="keybcs2_bin">
+      <Charset>keybcs2</Charset>
+    </collation>
+    <collation id="55" parent="1" name="koi8r_general_ci">
+      <Charset>koi8r</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="56" parent="1" name="koi8r_bin">
+      <Charset>koi8r</Charset>
+    </collation>
+    <collation id="57" parent="1" name="koi8u_general_ci">
+      <Charset>koi8u</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="58" parent="1" name="koi8u_bin">
+      <Charset>koi8u</Charset>
+    </collation>
+    <collation id="59" parent="1" name="latin1_german1_ci">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="60" parent="1" name="latin1_swedish_ci">
+      <Charset>latin1</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="61" parent="1" name="latin1_danish_ci">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="62" parent="1" name="latin1_german2_ci">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="63" parent="1" name="latin1_bin">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="64" parent="1" name="latin1_general_ci">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="65" parent="1" name="latin1_general_cs">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="66" parent="1" name="latin1_spanish_ci">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="67" parent="1" name="latin2_czech_cs">
+      <Charset>latin2</Charset>
+    </collation>
+    <collation id="68" parent="1" name="latin2_general_ci">
+      <Charset>latin2</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="69" parent="1" name="latin2_hungarian_ci">
+      <Charset>latin2</Charset>
+    </collation>
+    <collation id="70" parent="1" name="latin2_croatian_ci">
+      <Charset>latin2</Charset>
+    </collation>
+    <collation id="71" parent="1" name="latin2_bin">
+      <Charset>latin2</Charset>
+    </collation>
+    <collation id="72" parent="1" name="latin5_turkish_ci">
+      <Charset>latin5</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="73" parent="1" name="latin5_bin">
+      <Charset>latin5</Charset>
+    </collation>
+    <collation id="74" parent="1" name="latin7_estonian_cs">
+      <Charset>latin7</Charset>
+    </collation>
+    <collation id="75" parent="1" name="latin7_general_ci">
+      <Charset>latin7</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="76" parent="1" name="latin7_general_cs">
+      <Charset>latin7</Charset>
+    </collation>
+    <collation id="77" parent="1" name="latin7_bin">
+      <Charset>latin7</Charset>
+    </collation>
+    <collation id="78" parent="1" name="macce_general_ci">
+      <Charset>macce</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="79" parent="1" name="macce_bin">
+      <Charset>macce</Charset>
+    </collation>
+    <collation id="80" parent="1" name="macroman_general_ci">
+      <Charset>macroman</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="81" parent="1" name="macroman_bin">
+      <Charset>macroman</Charset>
+    </collation>
+    <collation id="82" parent="1" name="sjis_japanese_ci">
+      <Charset>sjis</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="83" parent="1" name="sjis_bin">
+      <Charset>sjis</Charset>
+    </collation>
+    <collation id="84" parent="1" name="swe7_swedish_ci">
+      <Charset>swe7</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="85" parent="1" name="swe7_bin">
+      <Charset>swe7</Charset>
+    </collation>
+    <collation id="86" parent="1" name="tis620_thai_ci">
+      <Charset>tis620</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="87" parent="1" name="tis620_bin">
+      <Charset>tis620</Charset>
+    </collation>
+    <collation id="88" parent="1" name="ucs2_general_ci">
+      <Charset>ucs2</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="89" parent="1" name="ucs2_bin">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="90" parent="1" name="ucs2_unicode_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="91" parent="1" name="ucs2_icelandic_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="92" parent="1" name="ucs2_latvian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="93" parent="1" name="ucs2_romanian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="94" parent="1" name="ucs2_slovenian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="95" parent="1" name="ucs2_polish_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="96" parent="1" name="ucs2_estonian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="97" parent="1" name="ucs2_spanish_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="98" parent="1" name="ucs2_swedish_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="99" parent="1" name="ucs2_turkish_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="100" parent="1" name="ucs2_czech_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="101" parent="1" name="ucs2_danish_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="102" parent="1" name="ucs2_lithuanian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="103" parent="1" name="ucs2_slovak_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="104" parent="1" name="ucs2_spanish2_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="105" parent="1" name="ucs2_roman_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="106" parent="1" name="ucs2_persian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="107" parent="1" name="ucs2_esperanto_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="108" parent="1" name="ucs2_hungarian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="109" parent="1" name="ucs2_sinhala_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="110" parent="1" name="ucs2_german2_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="111" parent="1" name="ucs2_croatian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="112" parent="1" name="ucs2_unicode_520_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="113" parent="1" name="ucs2_vietnamese_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="114" parent="1" name="ucs2_general_mysql500_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="115" parent="1" name="ujis_japanese_ci">
+      <Charset>ujis</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="116" parent="1" name="ujis_bin">
+      <Charset>ujis</Charset>
+    </collation>
+    <collation id="117" parent="1" name="utf16_general_ci">
+      <Charset>utf16</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="118" parent="1" name="utf16_bin">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="119" parent="1" name="utf16_unicode_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="120" parent="1" name="utf16_icelandic_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="121" parent="1" name="utf16_latvian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="122" parent="1" name="utf16_romanian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="123" parent="1" name="utf16_slovenian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="124" parent="1" name="utf16_polish_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="125" parent="1" name="utf16_estonian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="126" parent="1" name="utf16_spanish_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="127" parent="1" name="utf16_swedish_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="128" parent="1" name="utf16_turkish_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="129" parent="1" name="utf16_czech_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="130" parent="1" name="utf16_danish_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="131" parent="1" name="utf16_lithuanian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="132" parent="1" name="utf16_slovak_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="133" parent="1" name="utf16_spanish2_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="134" parent="1" name="utf16_roman_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="135" parent="1" name="utf16_persian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="136" parent="1" name="utf16_esperanto_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="137" parent="1" name="utf16_hungarian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="138" parent="1" name="utf16_sinhala_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="139" parent="1" name="utf16_german2_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="140" parent="1" name="utf16_croatian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="141" parent="1" name="utf16_unicode_520_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="142" parent="1" name="utf16_vietnamese_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="143" parent="1" name="utf16le_general_ci">
+      <Charset>utf16le</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="144" parent="1" name="utf16le_bin">
+      <Charset>utf16le</Charset>
+    </collation>
+    <collation id="145" parent="1" name="utf32_general_ci">
+      <Charset>utf32</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="146" parent="1" name="utf32_bin">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="147" parent="1" name="utf32_unicode_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="148" parent="1" name="utf32_icelandic_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="149" parent="1" name="utf32_latvian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="150" parent="1" name="utf32_romanian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="151" parent="1" name="utf32_slovenian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="152" parent="1" name="utf32_polish_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="153" parent="1" name="utf32_estonian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="154" parent="1" name="utf32_spanish_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="155" parent="1" name="utf32_swedish_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="156" parent="1" name="utf32_turkish_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="157" parent="1" name="utf32_czech_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="158" parent="1" name="utf32_danish_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="159" parent="1" name="utf32_lithuanian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="160" parent="1" name="utf32_slovak_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="161" parent="1" name="utf32_spanish2_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="162" parent="1" name="utf32_roman_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="163" parent="1" name="utf32_persian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="164" parent="1" name="utf32_esperanto_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="165" parent="1" name="utf32_hungarian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="166" parent="1" name="utf32_sinhala_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="167" parent="1" name="utf32_german2_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="168" parent="1" name="utf32_croatian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="169" parent="1" name="utf32_unicode_520_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="170" parent="1" name="utf32_vietnamese_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="171" parent="1" name="utf8mb3_general_ci">
+      <Charset>utf8mb3</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="172" parent="1" name="utf8mb3_tolower_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="173" parent="1" name="utf8mb3_bin">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="174" parent="1" name="utf8mb3_unicode_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="175" parent="1" name="utf8mb3_icelandic_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="176" parent="1" name="utf8mb3_latvian_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="177" parent="1" name="utf8mb3_romanian_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="178" parent="1" name="utf8mb3_slovenian_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="179" parent="1" name="utf8mb3_polish_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="180" parent="1" name="utf8mb3_estonian_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="181" parent="1" name="utf8mb3_spanish_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="182" parent="1" name="utf8mb3_swedish_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="183" parent="1" name="utf8mb3_turkish_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="184" parent="1" name="utf8mb3_czech_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="185" parent="1" name="utf8mb3_danish_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="186" parent="1" name="utf8mb3_lithuanian_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="187" parent="1" name="utf8mb3_slovak_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="188" parent="1" name="utf8mb3_spanish2_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="189" parent="1" name="utf8mb3_roman_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="190" parent="1" name="utf8mb3_persian_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="191" parent="1" name="utf8mb3_esperanto_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="192" parent="1" name="utf8mb3_hungarian_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="193" parent="1" name="utf8mb3_sinhala_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="194" parent="1" name="utf8mb3_german2_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="195" parent="1" name="utf8mb3_croatian_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="196" parent="1" name="utf8mb3_unicode_520_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="197" parent="1" name="utf8mb3_vietnamese_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="198" parent="1" name="utf8mb3_general_mysql500_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="199" parent="1" name="utf8mb4_general_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="200" parent="1" name="utf8mb4_bin">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="201" parent="1" name="utf8mb4_unicode_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="202" parent="1" name="utf8mb4_icelandic_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="203" parent="1" name="utf8mb4_latvian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="204" parent="1" name="utf8mb4_romanian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="205" parent="1" name="utf8mb4_slovenian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="206" parent="1" name="utf8mb4_polish_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="207" parent="1" name="utf8mb4_estonian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="208" parent="1" name="utf8mb4_spanish_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="209" parent="1" name="utf8mb4_swedish_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="210" parent="1" name="utf8mb4_turkish_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="211" parent="1" name="utf8mb4_czech_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="212" parent="1" name="utf8mb4_danish_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="213" parent="1" name="utf8mb4_lithuanian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="214" parent="1" name="utf8mb4_slovak_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="215" parent="1" name="utf8mb4_spanish2_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="216" parent="1" name="utf8mb4_roman_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="217" parent="1" name="utf8mb4_persian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="218" parent="1" name="utf8mb4_esperanto_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="219" parent="1" name="utf8mb4_hungarian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="220" parent="1" name="utf8mb4_sinhala_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="221" parent="1" name="utf8mb4_german2_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="222" parent="1" name="utf8mb4_croatian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="223" parent="1" name="utf8mb4_unicode_520_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="224" parent="1" name="utf8mb4_vietnamese_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="225" parent="1" name="utf8mb4_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="226" parent="1" name="utf8mb4_de_pb_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="227" parent="1" name="utf8mb4_is_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="228" parent="1" name="utf8mb4_lv_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="229" parent="1" name="utf8mb4_ro_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="230" parent="1" name="utf8mb4_sl_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="231" parent="1" name="utf8mb4_pl_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="232" parent="1" name="utf8mb4_et_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="233" parent="1" name="utf8mb4_es_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="234" parent="1" name="utf8mb4_sv_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="235" parent="1" name="utf8mb4_tr_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="236" parent="1" name="utf8mb4_cs_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="237" parent="1" name="utf8mb4_da_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="238" parent="1" name="utf8mb4_lt_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="239" parent="1" name="utf8mb4_sk_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="240" parent="1" name="utf8mb4_es_trad_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="241" parent="1" name="utf8mb4_la_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="242" parent="1" name="utf8mb4_eo_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="243" parent="1" name="utf8mb4_hu_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="244" parent="1" name="utf8mb4_hr_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="245" parent="1" name="utf8mb4_vi_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="246" parent="1" name="utf8mb4_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="247" parent="1" name="utf8mb4_de_pb_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="248" parent="1" name="utf8mb4_is_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="249" parent="1" name="utf8mb4_lv_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="250" parent="1" name="utf8mb4_ro_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="251" parent="1" name="utf8mb4_sl_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="252" parent="1" name="utf8mb4_pl_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="253" parent="1" name="utf8mb4_et_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="254" parent="1" name="utf8mb4_es_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="255" parent="1" name="utf8mb4_sv_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="256" parent="1" name="utf8mb4_tr_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="257" parent="1" name="utf8mb4_cs_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="258" parent="1" name="utf8mb4_da_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="259" parent="1" name="utf8mb4_lt_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="260" parent="1" name="utf8mb4_sk_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="261" parent="1" name="utf8mb4_es_trad_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="262" parent="1" name="utf8mb4_la_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="263" parent="1" name="utf8mb4_eo_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="264" parent="1" name="utf8mb4_hu_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="265" parent="1" name="utf8mb4_hr_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="266" parent="1" name="utf8mb4_vi_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="267" parent="1" name="utf8mb4_ja_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="268" parent="1" name="utf8mb4_ja_0900_as_cs_ks">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="269" parent="1" name="utf8mb4_0900_as_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="270" parent="1" name="utf8mb4_ru_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="271" parent="1" name="utf8mb4_ru_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="272" parent="1" name="utf8mb4_zh_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="273" parent="1" name="utf8mb4_0900_bin">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="274" parent="1" name="utf8mb4_nb_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="275" parent="1" name="utf8mb4_nb_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="276" parent="1" name="utf8mb4_nn_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="277" parent="1" name="utf8mb4_nn_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="278" parent="1" name="utf8mb4_sr_latn_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="279" parent="1" name="utf8mb4_sr_latn_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="280" parent="1" name="utf8mb4_bs_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="281" parent="1" name="utf8mb4_bs_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="282" parent="1" name="utf8mb4_bg_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="283" parent="1" name="utf8mb4_bg_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="284" parent="1" name="utf8mb4_gl_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="285" parent="1" name="utf8mb4_gl_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="286" parent="1" name="utf8mb4_mn_cyrl_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="287" parent="1" name="utf8mb4_mn_cyrl_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <schema id="288" parent="1" name="mysql">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="289" parent="1" name="information_schema">
+      <CollationName>utf8mb3_general_ci</CollationName>
+    </schema>
+    <schema id="290" parent="1" name="performance_schema">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="291" parent="1" name="sys">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="292" parent="1" name="zhihui">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="293" parent="1" name="scp">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="294" parent="1" name="sp">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="295" parent="1" name="english_app">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="296" parent="1" name="ptproject">
+      <Current>1</Current>
+      <LastIntrospectionLocalTimestamp>2025-05-26.04:11:46</LastIntrospectionLocalTimestamp>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </schema>
+    <user id="297" parent="1" name="mysql.infoschema">
+      <CanLogin>0</CanLogin>
+      <Host>localhost</Host>
+      <Plugin>caching_sha2_password</Plugin>
+    </user>
+    <user id="298" parent="1" name="mysql.session">
+      <CanLogin>0</CanLogin>
+      <Host>localhost</Host>
+      <Plugin>caching_sha2_password</Plugin>
+    </user>
+    <user id="299" parent="1" name="mysql.sys">
+      <CanLogin>0</CanLogin>
+      <Host>localhost</Host>
+      <Plugin>caching_sha2_password</Plugin>
+    </user>
+    <user id="300" parent="1" name="root">
+      <Host>localhost</Host>
+      <Plugin>caching_sha2_password</Plugin>
+    </user>
+    <table id="301" parent="296" name="collections">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="302" parent="296" name="comment_likes">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="303" parent="296" name="comments">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="304" parent="296" name="downloads">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="305" parent="296" name="dynamic_comment">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="306" parent="296" name="dynamic_likes">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="307" parent="296" name="experience_history">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="308" parent="296" name="follow">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="309" parent="296" name="friend_relation">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="310" parent="296" name="group_comments">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="311" parent="296" name="group_interests">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="312" parent="296" name="group_members">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="313" parent="296" name="group_post">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="314" parent="296" name="level">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="315" parent="296" name="likes">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="316" parent="296" name="post">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="317" parent="296" name="promotions">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="318" parent="296" name="seed_comment_likes">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="319" parent="296" name="seed_comments">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="320" parent="296" name="seedcommentlike">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="321" parent="296" name="seeds">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="322" parent="296" name="tasks">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="323" parent="296" name="torrents">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="324" parent="296" name="user">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="325" parent="296" name="user_dynamic">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="326" parent="296" name="user_invite_code">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="327" parent="296" name="user_messages">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="328" parent="296" name="user_task_status">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <column id="329" parent="301" name="collectionId">
+      <AutoIncrement>1</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="330" parent="301" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="331" parent="301" name="postNo">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <foreign-key id="332" parent="301" name="collections_ibfk_1">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <OnUpdate>cascade</OnUpdate>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <foreign-key id="333" parent="301" name="collections_ibfk_2">
+      <ColNames>postNo</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <OnUpdate>cascade</OnUpdate>
+      <RefColNames>postNo</RefColNames>
+      <RefTableName>post</RefTableName>
+    </foreign-key>
+    <index id="334" parent="301" name="PRIMARY">
+      <ColNames>collectionId</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="335" parent="301" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="336" parent="301" name="postNo">
+      <ColNames>postNo</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="337" parent="301" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="338" parent="302" name="comment_id">
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="339" parent="302" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="340" parent="302" name="is_liked">
+      <Position>3</Position>
+      <StoredType>tinyint(1)|0s</StoredType>
+    </column>
+    <foreign-key id="341" parent="302" name="FK_Relationship_10">
+      <ColNames>comment_id</ColNames>
+      <RefColNames>comment_id</RefColNames>
+      <RefTableName>comments</RefTableName>
+    </foreign-key>
+    <foreign-key id="342" parent="302" name="FK_Relationship_11">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="343" parent="302" name="PRIMARY">
+      <ColNames>comment_id
+user_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="344" parent="302" name="FK_Relationship_11">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="345" parent="302" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="346" parent="303" name="comment_id">
+      <AutoIncrement>15</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="347" parent="303" name="post_id">
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="348" parent="303" name="com_comment_id">
+      <Position>3</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="349" parent="303" name="user_id">
+      <Position>4</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="350" parent="303" name="content">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="351" parent="303" name="is_anonymous">
+      <Position>6</Position>
+      <StoredType>tinyint(1)|0s</StoredType>
+    </column>
+    <column id="352" parent="303" name="likes_count">
+      <Position>7</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="353" parent="303" name="reply_count">
+      <Position>8</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="354" parent="303" name="comment_time">
+      <NotNull>1</NotNull>
+      <Position>9</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="355" parent="303" name="fk_post_id">
+      <ColNames>post_id</ColNames>
+      <RefColNames>postNo</RefColNames>
+      <RefTableName>post</RefTableName>
+    </foreign-key>
+    <foreign-key id="356" parent="303" name="FK_Relationship_6">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="357" parent="303" name="PRIMARY">
+      <ColNames>comment_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="358" parent="303" name="fk_post_id">
+      <ColNames>post_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="359" parent="303" name="FK_Relationship_9">
+      <ColNames>com_comment_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="360" parent="303" name="fk_user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="361" parent="303" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="362" parent="304" name="download_id">
+      <AutoIncrement>3</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="363" parent="304" name="torrent_id">
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="364" parent="304" name="user_id">
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="365" parent="304" name="download_time">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="366" parent="304" name="download_size">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <foreign-key id="367" parent="304" name="FK_Relationship_5">
+      <ColNames>torrent_id</ColNames>
+      <RefColNames>torrent_id</RefColNames>
+      <RefTableName>torrents</RefTableName>
+    </foreign-key>
+    <foreign-key id="368" parent="304" name="FK_Relationship_4">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="369" parent="304" name="PRIMARY">
+      <ColNames>download_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="370" parent="304" name="FK_Relationship_5">
+      <ColNames>torrent_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="371" parent="304" name="FK_Relationship_4">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="372" parent="304" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="373" parent="305" name="comment_id">
+      <AutoIncrement>3</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="374" parent="305" name="dynamic_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="375" parent="305" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="376" parent="305" name="comment_content">
+      <Position>4</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="377" parent="305" name="comment_time">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="378" parent="305" name="is_anonymous">
+      <DefaultExpression>0</DefaultExpression>
+      <Position>6</Position>
+      <StoredType>tinyint(1)|0s</StoredType>
+    </column>
+    <column id="379" parent="305" name="parent_comment_id">
+      <Position>7</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <foreign-key id="380" parent="305" name="dynamic_comment_ibfk_1">
+      <ColNames>dynamic_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>dynamic_id</RefColNames>
+      <RefTableName>user_dynamic</RefTableName>
+    </foreign-key>
+    <foreign-key id="381" parent="305" name="dynamic_comment_ibfk_2">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <foreign-key id="382" parent="305" name="dynamic_comment_ibfk_3">
+      <ColNames>parent_comment_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>comment_id</RefColNames>
+      <RefTableName>dynamic_comment</RefTableName>
+    </foreign-key>
+    <index id="383" parent="305" name="PRIMARY">
+      <ColNames>comment_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="384" parent="305" name="dynamic_id">
+      <ColNames>dynamic_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="385" parent="305" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="386" parent="305" name="parent_comment_id">
+      <ColNames>parent_comment_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="387" parent="305" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="388" parent="306" name="like_id">
+      <AutoIncrement>3</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="389" parent="306" name="dynamic_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="390" parent="306" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="391" parent="306" name="like_time">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="392" parent="306" name="dynamic_likes_ibfk_1">
+      <ColNames>dynamic_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>dynamic_id</RefColNames>
+      <RefTableName>user_dynamic</RefTableName>
+    </foreign-key>
+    <foreign-key id="393" parent="306" name="dynamic_likes_ibfk_2">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="394" parent="306" name="PRIMARY">
+      <ColNames>like_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="395" parent="306" name="dynamic_id">
+      <ColNames>dynamic_id
+user_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="396" parent="306" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="397" parent="306" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <key id="398" parent="306" name="dynamic_id">
+      <UnderlyingIndexName>dynamic_id</UnderlyingIndexName>
+    </key>
+    <column id="399" parent="307" name="history_id">
+      <AutoIncrement>1</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="400" parent="307" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="401" parent="307" name="experience_change">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="402" parent="307" name="source">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="403" parent="307" name="update_time">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="404" parent="307" name="experience_history_ibfk_1">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="405" parent="307" name="PRIMARY">
+      <ColNames>history_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="406" parent="307" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="407" parent="307" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="408" parent="308" name="record_id">
+      <AutoIncrement>5</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="409" parent="308" name="follower_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="410" parent="308" name="followed_id">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="411" parent="308" name="follow_time">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="412" parent="308" name="follow_ibfk_1">
+      <ColNames>follower_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <foreign-key id="413" parent="308" name="follow_ibfk_2">
+      <ColNames>followed_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="414" parent="308" name="PRIMARY">
+      <ColNames>record_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="415" parent="308" name="follower_id">
+      <ColNames>follower_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="416" parent="308" name="followed_id">
+      <ColNames>followed_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="417" parent="308" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="418" parent="309" name="relation_id">
+      <AutoIncrement>2</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="419" parent="309" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="420" parent="309" name="friend_id">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="421" parent="309" name="create_time">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="422" parent="309" name="friend_relation_ibfk_1">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <foreign-key id="423" parent="309" name="friend_relation_ibfk_2">
+      <ColNames>friend_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="424" parent="309" name="PRIMARY">
+      <ColNames>relation_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="425" parent="309" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="426" parent="309" name="friend_id">
+      <ColNames>friend_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="427" parent="309" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="428" parent="310" name="comment_id">
+      <AutoIncrement>5</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="429" parent="310" name="group_post_id">
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="430" parent="310" name="user_id">
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="431" parent="310" name="content">
+      <Position>4</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="432" parent="310" name="parent_comment_id">
+      <Position>5</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="433" parent="310" name="time">
+      <NotNull>1</NotNull>
+      <Position>6</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="434" parent="310" name="group_comments_ibfk_1">
+      <ColNames>group_post_id</ColNames>
+      <RefColNames>group_post_id</RefColNames>
+      <RefTableName>group_post</RefTableName>
+    </foreign-key>
+    <foreign-key id="435" parent="310" name="group_comments_ibfk_2">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <foreign-key id="436" parent="310" name="group_comments_ibfk_3">
+      <ColNames>parent_comment_id</ColNames>
+      <RefColNames>comment_id</RefColNames>
+      <RefTableName>group_comments</RefTableName>
+    </foreign-key>
+    <index id="437" parent="310" name="PRIMARY">
+      <ColNames>comment_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="438" parent="310" name="group_post_id">
+      <ColNames>group_post_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="439" parent="310" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="440" parent="310" name="parent_comment_id">
+      <ColNames>parent_comment_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="441" parent="310" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="442" parent="311" name="group_id">
+      <AutoIncrement>4</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="443" parent="311" name="group_name">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="444" parent="311" name="description">
+      <Position>3</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="445" parent="311" name="create_time">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="446" parent="311" name="user_id">
+      <Position>5</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="447" parent="311" name="member_count">
+      <DefaultExpression>0</DefaultExpression>
+      <Position>6</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="448" parent="311" name="category">
+      <Position>7</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="449" parent="311" name="cover_image">
+      <Position>8</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <foreign-key id="450" parent="311" name="group_interests_ibfk_1">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="451" parent="311" name="PRIMARY">
+      <ColNames>group_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="452" parent="311" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="453" parent="311" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="454" parent="312" name="relation_id">
+      <AutoIncrement>4</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="455" parent="312" name="group_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="456" parent="312" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <foreign-key id="457" parent="312" name="group_members_ibfk_1">
+      <ColNames>group_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>group_id</RefColNames>
+      <RefTableName>group_interests</RefTableName>
+    </foreign-key>
+    <foreign-key id="458" parent="312" name="group_members_ibfk_2">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="459" parent="312" name="PRIMARY">
+      <ColNames>relation_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="460" parent="312" name="unique_group_user">
+      <ColNames>group_id
+user_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="461" parent="312" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="462" parent="312" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <key id="463" parent="312" name="unique_group_user">
+      <UnderlyingIndexName>unique_group_user</UnderlyingIndexName>
+    </key>
+    <column id="464" parent="313" name="group_post_id">
+      <AutoIncrement>5</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="465" parent="313" name="group_id">
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="466" parent="313" name="user_id">
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="467" parent="313" name="content">
+      <Position>4</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="468" parent="313" name="title">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="469" parent="313" name="image">
+      <Position>6</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="470" parent="313" name="like_count">
+      <Position>7</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="471" parent="313" name="comment_count">
+      <Position>8</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="472" parent="313" name="time">
+      <NotNull>1</NotNull>
+      <Position>9</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="473" parent="313" name="group_post_ibfk_1">
+      <ColNames>group_id</ColNames>
+      <RefColNames>group_id</RefColNames>
+      <RefTableName>group_interests</RefTableName>
+    </foreign-key>
+    <foreign-key id="474" parent="313" name="group_post_ibfk_2">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="475" parent="313" name="PRIMARY">
+      <ColNames>group_post_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="476" parent="313" name="group_id">
+      <ColNames>group_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="477" parent="313" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="478" parent="313" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="479" parent="314" name="level_id">
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="480" parent="314" name="level_name">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="481" parent="314" name="required_experience">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="482" parent="314" name="required_share_ratio">
+      <Position>4</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="483" parent="314" name="required_upload_gb">
+      <Position>5</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="484" parent="314" name="required_seeding_hours">
+      <Position>6</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="485" parent="314" name="permissions">
+      <Position>7</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <index id="486" parent="314" name="PRIMARY">
+      <ColNames>level_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <key id="487" parent="314" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="488" parent="315" name="likeId">
+      <AutoIncrement>3</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="489" parent="315" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="490" parent="315" name="postNo">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <foreign-key id="491" parent="315" name="likes_ibfk_1">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <OnUpdate>cascade</OnUpdate>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <foreign-key id="492" parent="315" name="likes_ibfk_2">
+      <ColNames>postNo</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <OnUpdate>cascade</OnUpdate>
+      <RefColNames>postNo</RefColNames>
+      <RefTableName>post</RefTableName>
+    </foreign-key>
+    <index id="493" parent="315" name="PRIMARY">
+      <ColNames>likeId</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="494" parent="315" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="495" parent="315" name="postNo">
+      <ColNames>postNo</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="496" parent="315" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="497" parent="316" name="postNo">
+      <AutoIncrement>27</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="498" parent="316" name="userId">
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="499" parent="316" name="postContent">
+      <Position>3</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="500" parent="316" name="imageUrl">
+      <Position>4</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="501" parent="316" name="postTime">
+      <Position>5</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="502" parent="316" name="postLikeNum">
+      <Position>6</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="503" parent="316" name="postCollectNum">
+      <Position>7</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="504" parent="316" name="title">
+      <Position>8</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="505" parent="316" name="postType">
+      <Position>9</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <foreign-key id="506" parent="316" name="post_ibfk_1">
+      <ColNames>userId</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="507" parent="316" name="PRIMARY">
+      <ColNames>postNo</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="508" parent="316" name="userId">
+      <ColNames>userId</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="509" parent="316" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="510" parent="317" name="promo_id">
+      <AutoIncrement>3</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="511" parent="317" name="name">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="512" parent="317" name="upload_coeff">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="513" parent="317" name="download_coeff">
+      <Position>4</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="514" parent="317" name="time_range">
+      <Position>5</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="515" parent="317" name="criteria">
+      <Position>6</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="516" parent="317" name="p_start_time">
+      <NotNull>1</NotNull>
+      <Position>7</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="517" parent="317" name="p_end_time">
+      <NotNull>1</NotNull>
+      <Position>8</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <index id="518" parent="317" name="PRIMARY">
+      <ColNames>promo_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <key id="519" parent="317" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="520" parent="318" name="id">
+      <AutoIncrement>1</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="521" parent="318" name="comment_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="522" parent="318" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="523" parent="318" name="is_liked">
+      <DefaultExpression>1</DefaultExpression>
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>tinyint(1)|0s</StoredType>
+    </column>
+    <foreign-key id="524" parent="318" name="fk_comment">
+      <ColNames>comment_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>comment_id</RefColNames>
+      <RefTableName>seed_comments</RefTableName>
+    </foreign-key>
+    <foreign-key id="525" parent="318" name="fk_user">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="526" parent="318" name="PRIMARY">
+      <ColNames>id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="527" parent="318" name="fk_comment">
+      <ColNames>comment_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="528" parent="318" name="fk_user">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="529" parent="318" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="530" parent="319" name="comment_id">
+      <AutoIncrement>1</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="531" parent="319" name="seed_id">
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="532" parent="319" name="com_comment_id">
+      <Position>3</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="533" parent="319" name="user_id">
+      <Position>4</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="534" parent="319" name="content">
+      <Position>5</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="535" parent="319" name="is_anonymous">
+      <Position>6</Position>
+      <StoredType>tinyint|0s</StoredType>
+    </column>
+    <column id="536" parent="319" name="likes_count">
+      <DefaultExpression>0</DefaultExpression>
+      <Position>7</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="537" parent="319" name="reply_count">
+      <DefaultExpression>0</DefaultExpression>
+      <Position>8</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="538" parent="319" name="comment_time">
+      <Position>9</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="539" parent="319" name="seed_comments_ibfk_1">
+      <ColNames>seed_id</ColNames>
+      <RefColNames>seed_id</RefColNames>
+      <RefTableName>seeds</RefTableName>
+    </foreign-key>
+    <foreign-key id="540" parent="319" name="seed_comments_ibfk_2">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="541" parent="319" name="PRIMARY">
+      <ColNames>comment_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="542" parent="319" name="seed_id">
+      <ColNames>seed_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="543" parent="319" name="com_comment_id">
+      <ColNames>com_comment_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="544" parent="319" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="545" parent="319" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="546" parent="320" name="id">
+      <AutoIncrement>1</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="547" parent="320" name="comment_id">
+      <Position>2</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="548" parent="320" name="is_liked">
+      <Position>3</Position>
+      <StoredType>bit(1)|0s</StoredType>
+    </column>
+    <column id="549" parent="320" name="user_id">
+      <Position>4</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <index id="550" parent="320" name="PRIMARY">
+      <ColNames>id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <key id="551" parent="320" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="552" parent="321" name="seed_id">
+      <AutoIncrement>4</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="553" parent="321" name="torrent_id">
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="554" parent="321" name="user_id">
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="555" parent="321" name="start_time">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="556" parent="321" name="end_time">
+      <Position>5</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="557" parent="321" name="duration">
+      <Position>6</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <foreign-key id="558" parent="321" name="FK_Relationship_3">
+      <ColNames>torrent_id</ColNames>
+      <RefColNames>torrent_id</RefColNames>
+      <RefTableName>torrents</RefTableName>
+    </foreign-key>
+    <foreign-key id="559" parent="321" name="FK_Relationship_2">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="560" parent="321" name="PRIMARY">
+      <ColNames>seed_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="561" parent="321" name="FK_Relationship_3">
+      <ColNames>torrent_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="562" parent="321" name="FK_Relationship_2">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="563" parent="321" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="564" parent="322" name="task_id">
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>varchar(50)|0s</StoredType>
+    </column>
+    <column id="565" parent="322" name="title">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="566" parent="322" name="description">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="567" parent="322" name="reward_experience">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="568" parent="322" name="reward_points">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <index id="569" parent="322" name="PRIMARY">
+      <ColNames>task_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <key id="570" parent="322" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="571" parent="323" name="torrent_id">
+      <AutoIncrement>3</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="572" parent="323" name="user_id">
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="573" parent="323" name="title">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="574" parent="323" name="description">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>text|0s</StoredType>
+    </column>
+    <column id="575" parent="323" name="tags">
+      <Position>5</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="576" parent="323" name="category">
+      <Position>6</Position>
+      <StoredType>varchar(50)|0s</StoredType>
+    </column>
+    <column id="577" parent="323" name="upload_time">
+      <NotNull>1</NotNull>
+      <Position>7</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="578" parent="323" name="FK_Relationship_1">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="579" parent="323" name="PRIMARY">
+      <ColNames>torrent_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="580" parent="323" name="FK_Relationship_1">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="581" parent="323" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="582" parent="324" name="user_id">
+      <AutoIncrement>5</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="583" parent="324" name="username">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="584" parent="324" name="avatar_url">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="585" parent="324" name="email">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="586" parent="324" name="password">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="587" parent="324" name="role">
+      <NotNull>1</NotNull>
+      <Position>6</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="588" parent="324" name="invite_count">
+      <Position>7</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="589" parent="324" name="level">
+      <Position>8</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="590" parent="324" name="upload_count">
+      <Position>9</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="591" parent="324" name="download_count">
+      <Position>10</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="592" parent="324" name="share_rate">
+      <Position>11</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="593" parent="324" name="registration_date">
+      <NotNull>1</NotNull>
+      <Position>12</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="594" parent="324" name="last_login_time">
+      <Position>13</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="595" parent="324" name="user_points">
+      <Position>14</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="596" parent="324" name="is_promo">
+      <Position>15</Position>
+      <StoredType>tinyint(1)|0s</StoredType>
+    </column>
+    <column id="597" parent="324" name="current_experience">
+      <DefaultExpression>0</DefaultExpression>
+      <NotNull>1</NotNull>
+      <Position>16</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="598" parent="324" name="current_seeding_hours">
+      <DefaultExpression>0</DefaultExpression>
+      <NotNull>1</NotNull>
+      <Position>17</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <foreign-key id="599" parent="324" name="fk_user_level">
+      <ColNames>level</ColNames>
+      <OnDelete>set-null</OnDelete>
+      <OnUpdate>cascade</OnUpdate>
+      <RefColNames>level_id</RefColNames>
+      <RefTableName>level</RefTableName>
+    </foreign-key>
+    <index id="600" parent="324" name="PRIMARY">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="601" parent="324" name="fk_user_level">
+      <ColNames>level</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="602" parent="324" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="603" parent="325" name="dynamic_id">
+      <AutoIncrement>5</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="604" parent="325" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="605" parent="325" name="title">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="606" parent="325" name="content">
+      <Position>4</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="607" parent="325" name="image_url">
+      <Position>5</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="608" parent="325" name="time">
+      <NotNull>1</NotNull>
+      <Position>6</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="609" parent="325" name="likes_count">
+      <DefaultExpression>0</DefaultExpression>
+      <Position>7</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="610" parent="325" name="comments_count">
+      <DefaultExpression>0</DefaultExpression>
+      <Position>8</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <foreign-key id="611" parent="325" name="user_dynamic_ibfk_1">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="612" parent="325" name="PRIMARY">
+      <ColNames>dynamic_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="613" parent="325" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="614" parent="325" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="615" parent="326" name="invite_id">
+      <AutoIncrement>2</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="616" parent="326" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="617" parent="326" name="invite_code">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="618" parent="326" name="is_used">
+      <DefaultExpression>0</DefaultExpression>
+      <Position>4</Position>
+      <StoredType>tinyint(1)|0s</StoredType>
+    </column>
+    <column id="619" parent="326" name="created_at">
+      <DefaultExpression>CURRENT_TIMESTAMP</DefaultExpression>
+      <Position>5</Position>
+      <StoredType>timestamp|0s</StoredType>
+    </column>
+    <foreign-key id="620" parent="326" name="user_invite_code_ibfk_1">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="621" parent="326" name="PRIMARY">
+      <ColNames>invite_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="622" parent="326" name="invite_code">
+      <ColNames>invite_code</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="623" parent="326" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="624" parent="326" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <key id="625" parent="326" name="invite_code">
+      <UnderlyingIndexName>invite_code</UnderlyingIndexName>
+    </key>
+    <column id="626" parent="327" name="message_id">
+      <AutoIncrement>1</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="627" parent="327" name="sender_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="628" parent="327" name="receiver_id">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="629" parent="327" name="content">
+      <Position>4</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="630" parent="327" name="time">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="631" parent="327" name="user_messages_ibfk_1">
+      <ColNames>sender_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <foreign-key id="632" parent="327" name="user_messages_ibfk_2">
+      <ColNames>receiver_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="633" parent="327" name="PRIMARY">
+      <ColNames>message_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="634" parent="327" name="sender_id">
+      <ColNames>sender_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="635" parent="327" name="receiver_id">
+      <ColNames>receiver_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="636" parent="327" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="637" parent="328" name="status_id">
+      <AutoIncrement>2</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="638" parent="328" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="639" parent="328" name="task_id">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="640" parent="328" name="current_progress">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="641" parent="328" name="current_experience">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="642" parent="328" name="current_points">
+      <NotNull>1</NotNull>
+      <Position>6</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="643" parent="328" name="status">
+      <NotNull>1</NotNull>
+      <Position>7</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="644" parent="328" name="is_reward_claimed">
+      <DefaultExpression>0</DefaultExpression>
+      <Position>8</Position>
+      <StoredType>tinyint(1)|0s</StoredType>
+    </column>
+    <foreign-key id="645" parent="328" name="user_task_status_ibfk_1">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <foreign-key id="646" parent="328" name="user_task_status_ibfk_2">
+      <ColNames>task_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>task_id</RefColNames>
+      <RefTableName>tasks</RefTableName>
+    </foreign-key>
+    <index id="647" parent="328" name="PRIMARY">
+      <ColNames>status_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="648" parent="328" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="649" parent="328" name="task_id">
+      <ColNames>task_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="650" parent="328" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+  </database-model>
+</dataSource>
\ No newline at end of file
diff --git a/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2.xml b/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2.xml
new file mode 100644
index 0000000..a0d6068
--- /dev/null
+++ b/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2.xml
@@ -0,0 +1,2708 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dataSource name="ptProject@localhost">
+  <database-model serializer="dbm" dbms="MYSQL" family-id="MYSQL" format-version="4.53">
+    <root id="1">
+      <DefaultCasing>lower/lower</DefaultCasing>
+      <DefaultEngine>InnoDB</DefaultEngine>
+      <DefaultTmpEngine>InnoDB</DefaultTmpEngine>
+      <Grants>|root||root|localhost|ALTER|G
+|root||root|localhost|ALTER ROUTINE|G
+|root||root|localhost|APPLICATION_PASSWORD_ADMIN|G
+|root||mysql.infoschema|localhost|AUDIT_ABORT_EXEMPT|G
+|root||mysql.session|localhost|AUDIT_ABORT_EXEMPT|G
+|root||mysql.sys|localhost|AUDIT_ABORT_EXEMPT|G
+|root||root|localhost|AUDIT_ABORT_EXEMPT|G
+|root||root|localhost|AUDIT_ADMIN|G
+|root||mysql.session|localhost|AUTHENTICATION_POLICY_ADMIN|G
+|root||root|localhost|AUTHENTICATION_POLICY_ADMIN|G
+|root||mysql.session|localhost|BACKUP_ADMIN|G
+|root||root|localhost|BACKUP_ADMIN|G
+|root||root|localhost|BINLOG_ADMIN|G
+|root||root|localhost|BINLOG_ENCRYPTION_ADMIN|G
+|root||mysql.session|localhost|CLONE_ADMIN|G
+|root||root|localhost|CLONE_ADMIN|G
+|root||mysql.session|localhost|CONNECTION_ADMIN|G
+|root||root|localhost|CONNECTION_ADMIN|G
+|root||root|localhost|CREATE|G
+|root||root|localhost|CREATE ROLE|G
+|root||root|localhost|CREATE ROUTINE|G
+|root||root|localhost|CREATE TABLESPACE|G
+|root||root|localhost|CREATE TEMPORARY TABLES|G
+|root||root|localhost|CREATE USER|G
+|root||root|localhost|CREATE VIEW|G
+|root||root|localhost|DELETE|G
+|root||root|localhost|DROP|G
+|root||root|localhost|DROP ROLE|G
+|root||root|localhost|ENCRYPTION_KEY_ADMIN|G
+|root||root|localhost|EVENT|G
+|root||root|localhost|EXECUTE|G
+|root||root|localhost|FILE|G
+|root||mysql.infoschema|localhost|FIREWALL_EXEMPT|G
+|root||mysql.session|localhost|FIREWALL_EXEMPT|G
+|root||mysql.sys|localhost|FIREWALL_EXEMPT|G
+|root||root|localhost|FIREWALL_EXEMPT|G
+|root||root|localhost|FLUSH_OPTIMIZER_COSTS|G
+|root||root|localhost|FLUSH_STATUS|G
+|root||root|localhost|FLUSH_TABLES|G
+|root||root|localhost|FLUSH_USER_RESOURCES|G
+|root||root|localhost|GROUP_REPLICATION_ADMIN|G
+|root||root|localhost|GROUP_REPLICATION_STREAM|G
+|root||root|localhost|INDEX|G
+|root||root|localhost|INNODB_REDO_LOG_ARCHIVE|G
+|root||root|localhost|INNODB_REDO_LOG_ENABLE|G
+|root||root|localhost|INSERT|G
+|root||root|localhost|LOCK TABLES|G
+|root||root|localhost|PASSWORDLESS_USER_ADMIN|G
+|root||mysql.session|localhost|PERSIST_RO_VARIABLES_ADMIN|G
+|root||root|localhost|PERSIST_RO_VARIABLES_ADMIN|G
+|root||root|localhost|PROCESS|G
+|root||root|localhost|REFERENCES|G
+|root||root|localhost|RELOAD|G
+|root||root|localhost|REPLICATION CLIENT|G
+|root||root|localhost|REPLICATION SLAVE|G
+|root||root|localhost|REPLICATION_APPLIER|G
+|root||root|localhost|REPLICATION_SLAVE_ADMIN|G
+|root||root|localhost|RESOURCE_GROUP_ADMIN|G
+|root||root|localhost|RESOURCE_GROUP_USER|G
+|root||root|localhost|ROLE_ADMIN|G
+|root||mysql.infoschema|localhost|SELECT|G
+|root||root|localhost|SELECT|G
+|root||root|localhost|SENSITIVE_VARIABLES_OBSERVER|G
+|root||root|localhost|SERVICE_CONNECTION_ADMIN|G
+|root||mysql.session|localhost|SESSION_VARIABLES_ADMIN|G
+|root||root|localhost|SESSION_VARIABLES_ADMIN|G
+|root||root|localhost|SET_USER_ID|G
+|root||root|localhost|SHOW DATABASES|G
+|root||root|localhost|SHOW VIEW|G
+|root||root|localhost|SHOW_ROUTINE|G
+|root||mysql.session|localhost|SHUTDOWN|G
+|root||root|localhost|SHUTDOWN|G
+|root||mysql.session|localhost|SUPER|G
+|root||root|localhost|SUPER|G
+|root||mysql.infoschema|localhost|SYSTEM_USER|G
+|root||mysql.session|localhost|SYSTEM_USER|G
+|root||mysql.sys|localhost|SYSTEM_USER|G
+|root||root|localhost|SYSTEM_USER|G
+|root||mysql.session|localhost|SYSTEM_VARIABLES_ADMIN|G
+|root||root|localhost|SYSTEM_VARIABLES_ADMIN|G
+|root||root|localhost|TABLE_ENCRYPTION_ADMIN|G
+|root||root|localhost|TELEMETRY_LOG_ADMIN|G
+|root||root|localhost|TRIGGER|G
+|root||root|localhost|UPDATE|G
+|root||root|localhost|XA_RECOVER_ADMIN|G
+|root||root|localhost|grant option|G
+performance_schema|schema||mysql.session|localhost|SELECT|G
+sys|schema||mysql.sys|localhost|TRIGGER|G</Grants>
+      <ServerVersion>8.0.40</ServerVersion>
+    </root>
+    <collation id="2" parent="1" name="armscii8_general_ci">
+      <Charset>armscii8</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="3" parent="1" name="armscii8_bin">
+      <Charset>armscii8</Charset>
+    </collation>
+    <collation id="4" parent="1" name="ascii_general_ci">
+      <Charset>ascii</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="5" parent="1" name="ascii_bin">
+      <Charset>ascii</Charset>
+    </collation>
+    <collation id="6" parent="1" name="big5_chinese_ci">
+      <Charset>big5</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="7" parent="1" name="big5_bin">
+      <Charset>big5</Charset>
+    </collation>
+    <collation id="8" parent="1" name="binary">
+      <Charset>binary</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="9" parent="1" name="cp1250_general_ci">
+      <Charset>cp1250</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="10" parent="1" name="cp1250_czech_cs">
+      <Charset>cp1250</Charset>
+    </collation>
+    <collation id="11" parent="1" name="cp1250_croatian_ci">
+      <Charset>cp1250</Charset>
+    </collation>
+    <collation id="12" parent="1" name="cp1250_bin">
+      <Charset>cp1250</Charset>
+    </collation>
+    <collation id="13" parent="1" name="cp1250_polish_ci">
+      <Charset>cp1250</Charset>
+    </collation>
+    <collation id="14" parent="1" name="cp1251_bulgarian_ci">
+      <Charset>cp1251</Charset>
+    </collation>
+    <collation id="15" parent="1" name="cp1251_ukrainian_ci">
+      <Charset>cp1251</Charset>
+    </collation>
+    <collation id="16" parent="1" name="cp1251_bin">
+      <Charset>cp1251</Charset>
+    </collation>
+    <collation id="17" parent="1" name="cp1251_general_ci">
+      <Charset>cp1251</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="18" parent="1" name="cp1251_general_cs">
+      <Charset>cp1251</Charset>
+    </collation>
+    <collation id="19" parent="1" name="cp1256_general_ci">
+      <Charset>cp1256</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="20" parent="1" name="cp1256_bin">
+      <Charset>cp1256</Charset>
+    </collation>
+    <collation id="21" parent="1" name="cp1257_lithuanian_ci">
+      <Charset>cp1257</Charset>
+    </collation>
+    <collation id="22" parent="1" name="cp1257_bin">
+      <Charset>cp1257</Charset>
+    </collation>
+    <collation id="23" parent="1" name="cp1257_general_ci">
+      <Charset>cp1257</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="24" parent="1" name="cp850_general_ci">
+      <Charset>cp850</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="25" parent="1" name="cp850_bin">
+      <Charset>cp850</Charset>
+    </collation>
+    <collation id="26" parent="1" name="cp852_general_ci">
+      <Charset>cp852</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="27" parent="1" name="cp852_bin">
+      <Charset>cp852</Charset>
+    </collation>
+    <collation id="28" parent="1" name="cp866_general_ci">
+      <Charset>cp866</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="29" parent="1" name="cp866_bin">
+      <Charset>cp866</Charset>
+    </collation>
+    <collation id="30" parent="1" name="cp932_japanese_ci">
+      <Charset>cp932</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="31" parent="1" name="cp932_bin">
+      <Charset>cp932</Charset>
+    </collation>
+    <collation id="32" parent="1" name="dec8_swedish_ci">
+      <Charset>dec8</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="33" parent="1" name="dec8_bin">
+      <Charset>dec8</Charset>
+    </collation>
+    <collation id="34" parent="1" name="eucjpms_japanese_ci">
+      <Charset>eucjpms</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="35" parent="1" name="eucjpms_bin">
+      <Charset>eucjpms</Charset>
+    </collation>
+    <collation id="36" parent="1" name="euckr_korean_ci">
+      <Charset>euckr</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="37" parent="1" name="euckr_bin">
+      <Charset>euckr</Charset>
+    </collation>
+    <collation id="38" parent="1" name="gb18030_chinese_ci">
+      <Charset>gb18030</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="39" parent="1" name="gb18030_bin">
+      <Charset>gb18030</Charset>
+    </collation>
+    <collation id="40" parent="1" name="gb18030_unicode_520_ci">
+      <Charset>gb18030</Charset>
+    </collation>
+    <collation id="41" parent="1" name="gb2312_chinese_ci">
+      <Charset>gb2312</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="42" parent="1" name="gb2312_bin">
+      <Charset>gb2312</Charset>
+    </collation>
+    <collation id="43" parent="1" name="gbk_chinese_ci">
+      <Charset>gbk</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="44" parent="1" name="gbk_bin">
+      <Charset>gbk</Charset>
+    </collation>
+    <collation id="45" parent="1" name="geostd8_general_ci">
+      <Charset>geostd8</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="46" parent="1" name="geostd8_bin">
+      <Charset>geostd8</Charset>
+    </collation>
+    <collation id="47" parent="1" name="greek_general_ci">
+      <Charset>greek</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="48" parent="1" name="greek_bin">
+      <Charset>greek</Charset>
+    </collation>
+    <collation id="49" parent="1" name="hebrew_general_ci">
+      <Charset>hebrew</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="50" parent="1" name="hebrew_bin">
+      <Charset>hebrew</Charset>
+    </collation>
+    <collation id="51" parent="1" name="hp8_english_ci">
+      <Charset>hp8</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="52" parent="1" name="hp8_bin">
+      <Charset>hp8</Charset>
+    </collation>
+    <collation id="53" parent="1" name="keybcs2_general_ci">
+      <Charset>keybcs2</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="54" parent="1" name="keybcs2_bin">
+      <Charset>keybcs2</Charset>
+    </collation>
+    <collation id="55" parent="1" name="koi8r_general_ci">
+      <Charset>koi8r</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="56" parent="1" name="koi8r_bin">
+      <Charset>koi8r</Charset>
+    </collation>
+    <collation id="57" parent="1" name="koi8u_general_ci">
+      <Charset>koi8u</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="58" parent="1" name="koi8u_bin">
+      <Charset>koi8u</Charset>
+    </collation>
+    <collation id="59" parent="1" name="latin1_german1_ci">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="60" parent="1" name="latin1_swedish_ci">
+      <Charset>latin1</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="61" parent="1" name="latin1_danish_ci">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="62" parent="1" name="latin1_german2_ci">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="63" parent="1" name="latin1_bin">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="64" parent="1" name="latin1_general_ci">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="65" parent="1" name="latin1_general_cs">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="66" parent="1" name="latin1_spanish_ci">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="67" parent="1" name="latin2_czech_cs">
+      <Charset>latin2</Charset>
+    </collation>
+    <collation id="68" parent="1" name="latin2_general_ci">
+      <Charset>latin2</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="69" parent="1" name="latin2_hungarian_ci">
+      <Charset>latin2</Charset>
+    </collation>
+    <collation id="70" parent="1" name="latin2_croatian_ci">
+      <Charset>latin2</Charset>
+    </collation>
+    <collation id="71" parent="1" name="latin2_bin">
+      <Charset>latin2</Charset>
+    </collation>
+    <collation id="72" parent="1" name="latin5_turkish_ci">
+      <Charset>latin5</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="73" parent="1" name="latin5_bin">
+      <Charset>latin5</Charset>
+    </collation>
+    <collation id="74" parent="1" name="latin7_estonian_cs">
+      <Charset>latin7</Charset>
+    </collation>
+    <collation id="75" parent="1" name="latin7_general_ci">
+      <Charset>latin7</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="76" parent="1" name="latin7_general_cs">
+      <Charset>latin7</Charset>
+    </collation>
+    <collation id="77" parent="1" name="latin7_bin">
+      <Charset>latin7</Charset>
+    </collation>
+    <collation id="78" parent="1" name="macce_general_ci">
+      <Charset>macce</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="79" parent="1" name="macce_bin">
+      <Charset>macce</Charset>
+    </collation>
+    <collation id="80" parent="1" name="macroman_general_ci">
+      <Charset>macroman</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="81" parent="1" name="macroman_bin">
+      <Charset>macroman</Charset>
+    </collation>
+    <collation id="82" parent="1" name="sjis_japanese_ci">
+      <Charset>sjis</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="83" parent="1" name="sjis_bin">
+      <Charset>sjis</Charset>
+    </collation>
+    <collation id="84" parent="1" name="swe7_swedish_ci">
+      <Charset>swe7</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="85" parent="1" name="swe7_bin">
+      <Charset>swe7</Charset>
+    </collation>
+    <collation id="86" parent="1" name="tis620_thai_ci">
+      <Charset>tis620</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="87" parent="1" name="tis620_bin">
+      <Charset>tis620</Charset>
+    </collation>
+    <collation id="88" parent="1" name="ucs2_general_ci">
+      <Charset>ucs2</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="89" parent="1" name="ucs2_bin">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="90" parent="1" name="ucs2_unicode_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="91" parent="1" name="ucs2_icelandic_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="92" parent="1" name="ucs2_latvian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="93" parent="1" name="ucs2_romanian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="94" parent="1" name="ucs2_slovenian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="95" parent="1" name="ucs2_polish_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="96" parent="1" name="ucs2_estonian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="97" parent="1" name="ucs2_spanish_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="98" parent="1" name="ucs2_swedish_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="99" parent="1" name="ucs2_turkish_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="100" parent="1" name="ucs2_czech_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="101" parent="1" name="ucs2_danish_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="102" parent="1" name="ucs2_lithuanian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="103" parent="1" name="ucs2_slovak_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="104" parent="1" name="ucs2_spanish2_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="105" parent="1" name="ucs2_roman_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="106" parent="1" name="ucs2_persian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="107" parent="1" name="ucs2_esperanto_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="108" parent="1" name="ucs2_hungarian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="109" parent="1" name="ucs2_sinhala_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="110" parent="1" name="ucs2_german2_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="111" parent="1" name="ucs2_croatian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="112" parent="1" name="ucs2_unicode_520_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="113" parent="1" name="ucs2_vietnamese_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="114" parent="1" name="ucs2_general_mysql500_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="115" parent="1" name="ujis_japanese_ci">
+      <Charset>ujis</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="116" parent="1" name="ujis_bin">
+      <Charset>ujis</Charset>
+    </collation>
+    <collation id="117" parent="1" name="utf16_general_ci">
+      <Charset>utf16</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="118" parent="1" name="utf16_bin">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="119" parent="1" name="utf16_unicode_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="120" parent="1" name="utf16_icelandic_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="121" parent="1" name="utf16_latvian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="122" parent="1" name="utf16_romanian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="123" parent="1" name="utf16_slovenian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="124" parent="1" name="utf16_polish_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="125" parent="1" name="utf16_estonian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="126" parent="1" name="utf16_spanish_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="127" parent="1" name="utf16_swedish_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="128" parent="1" name="utf16_turkish_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="129" parent="1" name="utf16_czech_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="130" parent="1" name="utf16_danish_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="131" parent="1" name="utf16_lithuanian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="132" parent="1" name="utf16_slovak_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="133" parent="1" name="utf16_spanish2_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="134" parent="1" name="utf16_roman_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="135" parent="1" name="utf16_persian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="136" parent="1" name="utf16_esperanto_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="137" parent="1" name="utf16_hungarian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="138" parent="1" name="utf16_sinhala_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="139" parent="1" name="utf16_german2_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="140" parent="1" name="utf16_croatian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="141" parent="1" name="utf16_unicode_520_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="142" parent="1" name="utf16_vietnamese_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="143" parent="1" name="utf16le_general_ci">
+      <Charset>utf16le</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="144" parent="1" name="utf16le_bin">
+      <Charset>utf16le</Charset>
+    </collation>
+    <collation id="145" parent="1" name="utf32_general_ci">
+      <Charset>utf32</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="146" parent="1" name="utf32_bin">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="147" parent="1" name="utf32_unicode_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="148" parent="1" name="utf32_icelandic_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="149" parent="1" name="utf32_latvian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="150" parent="1" name="utf32_romanian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="151" parent="1" name="utf32_slovenian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="152" parent="1" name="utf32_polish_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="153" parent="1" name="utf32_estonian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="154" parent="1" name="utf32_spanish_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="155" parent="1" name="utf32_swedish_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="156" parent="1" name="utf32_turkish_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="157" parent="1" name="utf32_czech_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="158" parent="1" name="utf32_danish_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="159" parent="1" name="utf32_lithuanian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="160" parent="1" name="utf32_slovak_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="161" parent="1" name="utf32_spanish2_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="162" parent="1" name="utf32_roman_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="163" parent="1" name="utf32_persian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="164" parent="1" name="utf32_esperanto_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="165" parent="1" name="utf32_hungarian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="166" parent="1" name="utf32_sinhala_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="167" parent="1" name="utf32_german2_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="168" parent="1" name="utf32_croatian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="169" parent="1" name="utf32_unicode_520_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="170" parent="1" name="utf32_vietnamese_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="171" parent="1" name="utf8mb3_general_ci">
+      <Charset>utf8mb3</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="172" parent="1" name="utf8mb3_tolower_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="173" parent="1" name="utf8mb3_bin">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="174" parent="1" name="utf8mb3_unicode_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="175" parent="1" name="utf8mb3_icelandic_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="176" parent="1" name="utf8mb3_latvian_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="177" parent="1" name="utf8mb3_romanian_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="178" parent="1" name="utf8mb3_slovenian_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="179" parent="1" name="utf8mb3_polish_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="180" parent="1" name="utf8mb3_estonian_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="181" parent="1" name="utf8mb3_spanish_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="182" parent="1" name="utf8mb3_swedish_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="183" parent="1" name="utf8mb3_turkish_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="184" parent="1" name="utf8mb3_czech_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="185" parent="1" name="utf8mb3_danish_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="186" parent="1" name="utf8mb3_lithuanian_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="187" parent="1" name="utf8mb3_slovak_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="188" parent="1" name="utf8mb3_spanish2_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="189" parent="1" name="utf8mb3_roman_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="190" parent="1" name="utf8mb3_persian_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="191" parent="1" name="utf8mb3_esperanto_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="192" parent="1" name="utf8mb3_hungarian_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="193" parent="1" name="utf8mb3_sinhala_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="194" parent="1" name="utf8mb3_german2_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="195" parent="1" name="utf8mb3_croatian_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="196" parent="1" name="utf8mb3_unicode_520_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="197" parent="1" name="utf8mb3_vietnamese_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="198" parent="1" name="utf8mb3_general_mysql500_ci">
+      <Charset>utf8mb3</Charset>
+    </collation>
+    <collation id="199" parent="1" name="utf8mb4_general_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="200" parent="1" name="utf8mb4_bin">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="201" parent="1" name="utf8mb4_unicode_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="202" parent="1" name="utf8mb4_icelandic_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="203" parent="1" name="utf8mb4_latvian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="204" parent="1" name="utf8mb4_romanian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="205" parent="1" name="utf8mb4_slovenian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="206" parent="1" name="utf8mb4_polish_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="207" parent="1" name="utf8mb4_estonian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="208" parent="1" name="utf8mb4_spanish_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="209" parent="1" name="utf8mb4_swedish_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="210" parent="1" name="utf8mb4_turkish_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="211" parent="1" name="utf8mb4_czech_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="212" parent="1" name="utf8mb4_danish_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="213" parent="1" name="utf8mb4_lithuanian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="214" parent="1" name="utf8mb4_slovak_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="215" parent="1" name="utf8mb4_spanish2_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="216" parent="1" name="utf8mb4_roman_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="217" parent="1" name="utf8mb4_persian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="218" parent="1" name="utf8mb4_esperanto_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="219" parent="1" name="utf8mb4_hungarian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="220" parent="1" name="utf8mb4_sinhala_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="221" parent="1" name="utf8mb4_german2_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="222" parent="1" name="utf8mb4_croatian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="223" parent="1" name="utf8mb4_unicode_520_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="224" parent="1" name="utf8mb4_vietnamese_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="225" parent="1" name="utf8mb4_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="226" parent="1" name="utf8mb4_de_pb_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="227" parent="1" name="utf8mb4_is_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="228" parent="1" name="utf8mb4_lv_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="229" parent="1" name="utf8mb4_ro_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="230" parent="1" name="utf8mb4_sl_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="231" parent="1" name="utf8mb4_pl_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="232" parent="1" name="utf8mb4_et_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="233" parent="1" name="utf8mb4_es_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="234" parent="1" name="utf8mb4_sv_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="235" parent="1" name="utf8mb4_tr_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="236" parent="1" name="utf8mb4_cs_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="237" parent="1" name="utf8mb4_da_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="238" parent="1" name="utf8mb4_lt_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="239" parent="1" name="utf8mb4_sk_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="240" parent="1" name="utf8mb4_es_trad_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="241" parent="1" name="utf8mb4_la_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="242" parent="1" name="utf8mb4_eo_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="243" parent="1" name="utf8mb4_hu_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="244" parent="1" name="utf8mb4_hr_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="245" parent="1" name="utf8mb4_vi_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="246" parent="1" name="utf8mb4_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="247" parent="1" name="utf8mb4_de_pb_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="248" parent="1" name="utf8mb4_is_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="249" parent="1" name="utf8mb4_lv_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="250" parent="1" name="utf8mb4_ro_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="251" parent="1" name="utf8mb4_sl_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="252" parent="1" name="utf8mb4_pl_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="253" parent="1" name="utf8mb4_et_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="254" parent="1" name="utf8mb4_es_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="255" parent="1" name="utf8mb4_sv_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="256" parent="1" name="utf8mb4_tr_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="257" parent="1" name="utf8mb4_cs_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="258" parent="1" name="utf8mb4_da_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="259" parent="1" name="utf8mb4_lt_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="260" parent="1" name="utf8mb4_sk_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="261" parent="1" name="utf8mb4_es_trad_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="262" parent="1" name="utf8mb4_la_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="263" parent="1" name="utf8mb4_eo_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="264" parent="1" name="utf8mb4_hu_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="265" parent="1" name="utf8mb4_hr_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="266" parent="1" name="utf8mb4_vi_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="267" parent="1" name="utf8mb4_ja_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="268" parent="1" name="utf8mb4_ja_0900_as_cs_ks">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="269" parent="1" name="utf8mb4_0900_as_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="270" parent="1" name="utf8mb4_ru_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="271" parent="1" name="utf8mb4_ru_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="272" parent="1" name="utf8mb4_zh_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="273" parent="1" name="utf8mb4_0900_bin">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="274" parent="1" name="utf8mb4_nb_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="275" parent="1" name="utf8mb4_nb_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="276" parent="1" name="utf8mb4_nn_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="277" parent="1" name="utf8mb4_nn_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="278" parent="1" name="utf8mb4_sr_latn_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="279" parent="1" name="utf8mb4_sr_latn_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="280" parent="1" name="utf8mb4_bs_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="281" parent="1" name="utf8mb4_bs_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="282" parent="1" name="utf8mb4_bg_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="283" parent="1" name="utf8mb4_bg_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="284" parent="1" name="utf8mb4_gl_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="285" parent="1" name="utf8mb4_gl_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="286" parent="1" name="utf8mb4_mn_cyrl_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="287" parent="1" name="utf8mb4_mn_cyrl_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <schema id="288" parent="1" name="mysql">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="289" parent="1" name="information_schema">
+      <CollationName>utf8mb3_general_ci</CollationName>
+    </schema>
+    <schema id="290" parent="1" name="performance_schema">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="291" parent="1" name="sys">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="292" parent="1" name="zhihui">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="293" parent="1" name="scp">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="294" parent="1" name="sp">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="295" parent="1" name="english_app">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="296" parent="1" name="ptproject">
+      <Current>1</Current>
+      <LastIntrospectionLocalTimestamp>2025-05-26.04:11:46</LastIntrospectionLocalTimestamp>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </schema>
+    <user id="297" parent="1" name="mysql.infoschema">
+      <CanLogin>0</CanLogin>
+      <Host>localhost</Host>
+      <Plugin>caching_sha2_password</Plugin>
+    </user>
+    <user id="298" parent="1" name="mysql.session">
+      <CanLogin>0</CanLogin>
+      <Host>localhost</Host>
+      <Plugin>caching_sha2_password</Plugin>
+    </user>
+    <user id="299" parent="1" name="mysql.sys">
+      <CanLogin>0</CanLogin>
+      <Host>localhost</Host>
+      <Plugin>caching_sha2_password</Plugin>
+    </user>
+    <user id="300" parent="1" name="root">
+      <Host>localhost</Host>
+      <Plugin>caching_sha2_password</Plugin>
+    </user>
+    <table id="301" parent="296" name="collections">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="302" parent="296" name="comment_likes">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="303" parent="296" name="comments">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="304" parent="296" name="downloads">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="305" parent="296" name="dynamic_comment">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="306" parent="296" name="dynamic_likes">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="307" parent="296" name="experience_history">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="308" parent="296" name="follow">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="309" parent="296" name="friend_relation">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="310" parent="296" name="group_comments">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="311" parent="296" name="group_interests">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="312" parent="296" name="group_members">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="313" parent="296" name="group_post">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="314" parent="296" name="level">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="315" parent="296" name="likes">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="316" parent="296" name="post">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="317" parent="296" name="promotions">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="318" parent="296" name="seed_comment_likes">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="319" parent="296" name="seed_comments">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="320" parent="296" name="seedcommentlike">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="321" parent="296" name="seeds">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="322" parent="296" name="tasks">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="323" parent="296" name="torrents">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="324" parent="296" name="user">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="325" parent="296" name="user_dynamic">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="326" parent="296" name="user_invite_code">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="327" parent="296" name="user_messages">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <table id="328" parent="296" name="user_task_status">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_unicode_ci</CollationName>
+    </table>
+    <column id="329" parent="301" name="collectionId">
+      <AutoIncrement>1</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="330" parent="301" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="331" parent="301" name="postNo">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <foreign-key id="332" parent="301" name="collections_ibfk_1">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <OnUpdate>cascade</OnUpdate>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <foreign-key id="333" parent="301" name="collections_ibfk_2">
+      <ColNames>postNo</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <OnUpdate>cascade</OnUpdate>
+      <RefColNames>postNo</RefColNames>
+      <RefTableName>post</RefTableName>
+    </foreign-key>
+    <index id="334" parent="301" name="PRIMARY">
+      <ColNames>collectionId</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="335" parent="301" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="336" parent="301" name="postNo">
+      <ColNames>postNo</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="337" parent="301" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="338" parent="302" name="comment_id">
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="339" parent="302" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="340" parent="302" name="is_liked">
+      <Position>3</Position>
+      <StoredType>tinyint(1)|0s</StoredType>
+    </column>
+    <foreign-key id="341" parent="302" name="FK_Relationship_10">
+      <ColNames>comment_id</ColNames>
+      <RefColNames>comment_id</RefColNames>
+      <RefTableName>comments</RefTableName>
+    </foreign-key>
+    <foreign-key id="342" parent="302" name="FK_Relationship_11">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="343" parent="302" name="PRIMARY">
+      <ColNames>comment_id
+user_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="344" parent="302" name="FK_Relationship_11">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="345" parent="302" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="346" parent="303" name="comment_id">
+      <AutoIncrement>15</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="347" parent="303" name="post_id">
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="348" parent="303" name="com_comment_id">
+      <Position>3</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="349" parent="303" name="user_id">
+      <Position>4</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="350" parent="303" name="content">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="351" parent="303" name="is_anonymous">
+      <Position>6</Position>
+      <StoredType>tinyint(1)|0s</StoredType>
+    </column>
+    <column id="352" parent="303" name="likes_count">
+      <Position>7</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="353" parent="303" name="reply_count">
+      <Position>8</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="354" parent="303" name="comment_time">
+      <NotNull>1</NotNull>
+      <Position>9</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="355" parent="303" name="fk_post_id">
+      <ColNames>post_id</ColNames>
+      <RefColNames>postNo</RefColNames>
+      <RefTableName>post</RefTableName>
+    </foreign-key>
+    <foreign-key id="356" parent="303" name="FK_Relationship_6">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="357" parent="303" name="PRIMARY">
+      <ColNames>comment_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="358" parent="303" name="fk_post_id">
+      <ColNames>post_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="359" parent="303" name="FK_Relationship_9">
+      <ColNames>com_comment_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="360" parent="303" name="fk_user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="361" parent="303" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="362" parent="304" name="download_id">
+      <AutoIncrement>3</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="363" parent="304" name="torrent_id">
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="364" parent="304" name="user_id">
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="365" parent="304" name="download_time">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="366" parent="304" name="download_size">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <foreign-key id="367" parent="304" name="FK_Relationship_5">
+      <ColNames>torrent_id</ColNames>
+      <RefColNames>torrent_id</RefColNames>
+      <RefTableName>torrents</RefTableName>
+    </foreign-key>
+    <foreign-key id="368" parent="304" name="FK_Relationship_4">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="369" parent="304" name="PRIMARY">
+      <ColNames>download_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="370" parent="304" name="FK_Relationship_5">
+      <ColNames>torrent_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="371" parent="304" name="FK_Relationship_4">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="372" parent="304" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="373" parent="305" name="comment_id">
+      <AutoIncrement>3</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="374" parent="305" name="dynamic_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="375" parent="305" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="376" parent="305" name="comment_content">
+      <Position>4</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="377" parent="305" name="comment_time">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="378" parent="305" name="is_anonymous">
+      <DefaultExpression>0</DefaultExpression>
+      <Position>6</Position>
+      <StoredType>tinyint(1)|0s</StoredType>
+    </column>
+    <column id="379" parent="305" name="parent_comment_id">
+      <Position>7</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <foreign-key id="380" parent="305" name="dynamic_comment_ibfk_1">
+      <ColNames>dynamic_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>dynamic_id</RefColNames>
+      <RefTableName>user_dynamic</RefTableName>
+    </foreign-key>
+    <foreign-key id="381" parent="305" name="dynamic_comment_ibfk_2">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <foreign-key id="382" parent="305" name="dynamic_comment_ibfk_3">
+      <ColNames>parent_comment_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>comment_id</RefColNames>
+      <RefTableName>dynamic_comment</RefTableName>
+    </foreign-key>
+    <index id="383" parent="305" name="PRIMARY">
+      <ColNames>comment_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="384" parent="305" name="dynamic_id">
+      <ColNames>dynamic_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="385" parent="305" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="386" parent="305" name="parent_comment_id">
+      <ColNames>parent_comment_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="387" parent="305" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="388" parent="306" name="like_id">
+      <AutoIncrement>3</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="389" parent="306" name="dynamic_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="390" parent="306" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="391" parent="306" name="like_time">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="392" parent="306" name="dynamic_likes_ibfk_1">
+      <ColNames>dynamic_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>dynamic_id</RefColNames>
+      <RefTableName>user_dynamic</RefTableName>
+    </foreign-key>
+    <foreign-key id="393" parent="306" name="dynamic_likes_ibfk_2">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="394" parent="306" name="PRIMARY">
+      <ColNames>like_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="395" parent="306" name="dynamic_id">
+      <ColNames>dynamic_id
+user_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="396" parent="306" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="397" parent="306" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <key id="398" parent="306" name="dynamic_id">
+      <UnderlyingIndexName>dynamic_id</UnderlyingIndexName>
+    </key>
+    <column id="399" parent="307" name="history_id">
+      <AutoIncrement>1</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="400" parent="307" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="401" parent="307" name="experience_change">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="402" parent="307" name="source">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="403" parent="307" name="update_time">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="404" parent="307" name="experience_history_ibfk_1">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="405" parent="307" name="PRIMARY">
+      <ColNames>history_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="406" parent="307" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="407" parent="307" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="408" parent="308" name="record_id">
+      <AutoIncrement>5</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="409" parent="308" name="follower_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="410" parent="308" name="followed_id">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="411" parent="308" name="follow_time">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="412" parent="308" name="follow_ibfk_1">
+      <ColNames>follower_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <foreign-key id="413" parent="308" name="follow_ibfk_2">
+      <ColNames>followed_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="414" parent="308" name="PRIMARY">
+      <ColNames>record_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="415" parent="308" name="follower_id">
+      <ColNames>follower_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="416" parent="308" name="followed_id">
+      <ColNames>followed_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="417" parent="308" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="418" parent="309" name="relation_id">
+      <AutoIncrement>2</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="419" parent="309" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="420" parent="309" name="friend_id">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="421" parent="309" name="create_time">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="422" parent="309" name="friend_relation_ibfk_1">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <foreign-key id="423" parent="309" name="friend_relation_ibfk_2">
+      <ColNames>friend_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="424" parent="309" name="PRIMARY">
+      <ColNames>relation_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="425" parent="309" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="426" parent="309" name="friend_id">
+      <ColNames>friend_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="427" parent="309" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="428" parent="310" name="comment_id">
+      <AutoIncrement>5</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="429" parent="310" name="group_post_id">
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="430" parent="310" name="user_id">
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="431" parent="310" name="content">
+      <Position>4</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="432" parent="310" name="parent_comment_id">
+      <Position>5</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="433" parent="310" name="time">
+      <NotNull>1</NotNull>
+      <Position>6</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="434" parent="310" name="group_comments_ibfk_1">
+      <ColNames>group_post_id</ColNames>
+      <RefColNames>group_post_id</RefColNames>
+      <RefTableName>group_post</RefTableName>
+    </foreign-key>
+    <foreign-key id="435" parent="310" name="group_comments_ibfk_2">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <foreign-key id="436" parent="310" name="group_comments_ibfk_3">
+      <ColNames>parent_comment_id</ColNames>
+      <RefColNames>comment_id</RefColNames>
+      <RefTableName>group_comments</RefTableName>
+    </foreign-key>
+    <index id="437" parent="310" name="PRIMARY">
+      <ColNames>comment_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="438" parent="310" name="group_post_id">
+      <ColNames>group_post_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="439" parent="310" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="440" parent="310" name="parent_comment_id">
+      <ColNames>parent_comment_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="441" parent="310" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="442" parent="311" name="group_id">
+      <AutoIncrement>4</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="443" parent="311" name="group_name">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="444" parent="311" name="description">
+      <Position>3</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="445" parent="311" name="create_time">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="446" parent="311" name="user_id">
+      <Position>5</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="447" parent="311" name="member_count">
+      <DefaultExpression>0</DefaultExpression>
+      <Position>6</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="448" parent="311" name="category">
+      <Position>7</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="449" parent="311" name="cover_image">
+      <Position>8</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <foreign-key id="450" parent="311" name="group_interests_ibfk_1">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="451" parent="311" name="PRIMARY">
+      <ColNames>group_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="452" parent="311" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="453" parent="311" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="454" parent="312" name="relation_id">
+      <AutoIncrement>4</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="455" parent="312" name="group_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="456" parent="312" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <foreign-key id="457" parent="312" name="group_members_ibfk_1">
+      <ColNames>group_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>group_id</RefColNames>
+      <RefTableName>group_interests</RefTableName>
+    </foreign-key>
+    <foreign-key id="458" parent="312" name="group_members_ibfk_2">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="459" parent="312" name="PRIMARY">
+      <ColNames>relation_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="460" parent="312" name="unique_group_user">
+      <ColNames>group_id
+user_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="461" parent="312" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="462" parent="312" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <key id="463" parent="312" name="unique_group_user">
+      <UnderlyingIndexName>unique_group_user</UnderlyingIndexName>
+    </key>
+    <column id="464" parent="313" name="group_post_id">
+      <AutoIncrement>5</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="465" parent="313" name="group_id">
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="466" parent="313" name="user_id">
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="467" parent="313" name="content">
+      <Position>4</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="468" parent="313" name="title">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="469" parent="313" name="image">
+      <Position>6</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="470" parent="313" name="like_count">
+      <Position>7</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="471" parent="313" name="comment_count">
+      <Position>8</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="472" parent="313" name="time">
+      <NotNull>1</NotNull>
+      <Position>9</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="473" parent="313" name="group_post_ibfk_1">
+      <ColNames>group_id</ColNames>
+      <RefColNames>group_id</RefColNames>
+      <RefTableName>group_interests</RefTableName>
+    </foreign-key>
+    <foreign-key id="474" parent="313" name="group_post_ibfk_2">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="475" parent="313" name="PRIMARY">
+      <ColNames>group_post_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="476" parent="313" name="group_id">
+      <ColNames>group_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="477" parent="313" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="478" parent="313" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="479" parent="314" name="level_id">
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="480" parent="314" name="level_name">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="481" parent="314" name="required_experience">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="482" parent="314" name="required_share_ratio">
+      <Position>4</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="483" parent="314" name="required_upload_gb">
+      <Position>5</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="484" parent="314" name="required_seeding_hours">
+      <Position>6</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="485" parent="314" name="permissions">
+      <Position>7</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <index id="486" parent="314" name="PRIMARY">
+      <ColNames>level_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <key id="487" parent="314" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="488" parent="315" name="likeId">
+      <AutoIncrement>3</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="489" parent="315" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="490" parent="315" name="postNo">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <foreign-key id="491" parent="315" name="likes_ibfk_1">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <OnUpdate>cascade</OnUpdate>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <foreign-key id="492" parent="315" name="likes_ibfk_2">
+      <ColNames>postNo</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <OnUpdate>cascade</OnUpdate>
+      <RefColNames>postNo</RefColNames>
+      <RefTableName>post</RefTableName>
+    </foreign-key>
+    <index id="493" parent="315" name="PRIMARY">
+      <ColNames>likeId</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="494" parent="315" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="495" parent="315" name="postNo">
+      <ColNames>postNo</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="496" parent="315" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="497" parent="316" name="postNo">
+      <AutoIncrement>27</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="498" parent="316" name="userId">
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="499" parent="316" name="postContent">
+      <Position>3</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="500" parent="316" name="imageUrl">
+      <Position>4</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="501" parent="316" name="postTime">
+      <Position>5</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="502" parent="316" name="postLikeNum">
+      <Position>6</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="503" parent="316" name="postCollectNum">
+      <Position>7</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="504" parent="316" name="title">
+      <Position>8</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="505" parent="316" name="postType">
+      <Position>9</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <foreign-key id="506" parent="316" name="post_ibfk_1">
+      <ColNames>userId</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="507" parent="316" name="PRIMARY">
+      <ColNames>postNo</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="508" parent="316" name="userId">
+      <ColNames>userId</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="509" parent="316" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="510" parent="317" name="promo_id">
+      <AutoIncrement>3</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="511" parent="317" name="name">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="512" parent="317" name="upload_coeff">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="513" parent="317" name="download_coeff">
+      <Position>4</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="514" parent="317" name="time_range">
+      <Position>5</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="515" parent="317" name="criteria">
+      <Position>6</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="516" parent="317" name="p_start_time">
+      <NotNull>1</NotNull>
+      <Position>7</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="517" parent="317" name="p_end_time">
+      <NotNull>1</NotNull>
+      <Position>8</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <index id="518" parent="317" name="PRIMARY">
+      <ColNames>promo_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <key id="519" parent="317" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="520" parent="318" name="id">
+      <AutoIncrement>1</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="521" parent="318" name="comment_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="522" parent="318" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="523" parent="318" name="is_liked">
+      <DefaultExpression>1</DefaultExpression>
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>tinyint(1)|0s</StoredType>
+    </column>
+    <foreign-key id="524" parent="318" name="fk_comment">
+      <ColNames>comment_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>comment_id</RefColNames>
+      <RefTableName>seed_comments</RefTableName>
+    </foreign-key>
+    <foreign-key id="525" parent="318" name="fk_user">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="526" parent="318" name="PRIMARY">
+      <ColNames>id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="527" parent="318" name="fk_comment">
+      <ColNames>comment_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="528" parent="318" name="fk_user">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="529" parent="318" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="530" parent="319" name="comment_id">
+      <AutoIncrement>1</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="531" parent="319" name="seed_id">
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="532" parent="319" name="com_comment_id">
+      <Position>3</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="533" parent="319" name="user_id">
+      <Position>4</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="534" parent="319" name="content">
+      <Position>5</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="535" parent="319" name="is_anonymous">
+      <Position>6</Position>
+      <StoredType>tinyint|0s</StoredType>
+    </column>
+    <column id="536" parent="319" name="likes_count">
+      <DefaultExpression>0</DefaultExpression>
+      <Position>7</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="537" parent="319" name="reply_count">
+      <DefaultExpression>0</DefaultExpression>
+      <Position>8</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="538" parent="319" name="comment_time">
+      <Position>9</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="539" parent="319" name="seed_comments_ibfk_1">
+      <ColNames>seed_id</ColNames>
+      <RefColNames>seed_id</RefColNames>
+      <RefTableName>seeds</RefTableName>
+    </foreign-key>
+    <foreign-key id="540" parent="319" name="seed_comments_ibfk_2">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="541" parent="319" name="PRIMARY">
+      <ColNames>comment_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="542" parent="319" name="seed_id">
+      <ColNames>seed_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="543" parent="319" name="com_comment_id">
+      <ColNames>com_comment_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="544" parent="319" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="545" parent="319" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="546" parent="320" name="id">
+      <AutoIncrement>1</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="547" parent="320" name="comment_id">
+      <Position>2</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="548" parent="320" name="is_liked">
+      <Position>3</Position>
+      <StoredType>bit(1)|0s</StoredType>
+    </column>
+    <column id="549" parent="320" name="user_id">
+      <Position>4</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <index id="550" parent="320" name="PRIMARY">
+      <ColNames>id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <key id="551" parent="320" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="552" parent="321" name="seed_id">
+      <AutoIncrement>4</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="553" parent="321" name="torrent_id">
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="554" parent="321" name="user_id">
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="555" parent="321" name="start_time">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="556" parent="321" name="end_time">
+      <Position>5</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="557" parent="321" name="duration">
+      <Position>6</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <foreign-key id="558" parent="321" name="FK_Relationship_3">
+      <ColNames>torrent_id</ColNames>
+      <RefColNames>torrent_id</RefColNames>
+      <RefTableName>torrents</RefTableName>
+    </foreign-key>
+    <foreign-key id="559" parent="321" name="FK_Relationship_2">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="560" parent="321" name="PRIMARY">
+      <ColNames>seed_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="561" parent="321" name="FK_Relationship_3">
+      <ColNames>torrent_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="562" parent="321" name="FK_Relationship_2">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="563" parent="321" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="564" parent="322" name="task_id">
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>varchar(50)|0s</StoredType>
+    </column>
+    <column id="565" parent="322" name="title">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="566" parent="322" name="description">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="567" parent="322" name="reward_experience">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="568" parent="322" name="reward_points">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <index id="569" parent="322" name="PRIMARY">
+      <ColNames>task_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <key id="570" parent="322" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="571" parent="323" name="torrent_id">
+      <AutoIncrement>3</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="572" parent="323" name="user_id">
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="573" parent="323" name="title">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="574" parent="323" name="description">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>text|0s</StoredType>
+    </column>
+    <column id="575" parent="323" name="tags">
+      <Position>5</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="576" parent="323" name="category">
+      <Position>6</Position>
+      <StoredType>varchar(50)|0s</StoredType>
+    </column>
+    <column id="577" parent="323" name="upload_time">
+      <NotNull>1</NotNull>
+      <Position>7</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="578" parent="323" name="FK_Relationship_1">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="579" parent="323" name="PRIMARY">
+      <ColNames>torrent_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="580" parent="323" name="FK_Relationship_1">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="581" parent="323" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="582" parent="324" name="user_id">
+      <AutoIncrement>5</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="583" parent="324" name="username">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="584" parent="324" name="avatar_url">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="585" parent="324" name="email">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="586" parent="324" name="password">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="587" parent="324" name="role">
+      <NotNull>1</NotNull>
+      <Position>6</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="588" parent="324" name="invite_count">
+      <Position>7</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="589" parent="324" name="level">
+      <Position>8</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="590" parent="324" name="upload_count">
+      <Position>9</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="591" parent="324" name="download_count">
+      <Position>10</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="592" parent="324" name="share_rate">
+      <Position>11</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="593" parent="324" name="registration_date">
+      <NotNull>1</NotNull>
+      <Position>12</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="594" parent="324" name="last_login_time">
+      <Position>13</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="595" parent="324" name="user_points">
+      <Position>14</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="596" parent="324" name="is_promo">
+      <Position>15</Position>
+      <StoredType>tinyint(1)|0s</StoredType>
+    </column>
+    <column id="597" parent="324" name="current_experience">
+      <DefaultExpression>0</DefaultExpression>
+      <NotNull>1</NotNull>
+      <Position>16</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="598" parent="324" name="current_seeding_hours">
+      <DefaultExpression>0</DefaultExpression>
+      <NotNull>1</NotNull>
+      <Position>17</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <foreign-key id="599" parent="324" name="fk_user_level">
+      <ColNames>level</ColNames>
+      <OnDelete>set-null</OnDelete>
+      <OnUpdate>cascade</OnUpdate>
+      <RefColNames>level_id</RefColNames>
+      <RefTableName>level</RefTableName>
+    </foreign-key>
+    <index id="600" parent="324" name="PRIMARY">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="601" parent="324" name="fk_user_level">
+      <ColNames>level</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="602" parent="324" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="603" parent="325" name="dynamic_id">
+      <AutoIncrement>5</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="604" parent="325" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="605" parent="325" name="title">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="606" parent="325" name="content">
+      <Position>4</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="607" parent="325" name="image_url">
+      <Position>5</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="608" parent="325" name="time">
+      <NotNull>1</NotNull>
+      <Position>6</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <column id="609" parent="325" name="likes_count">
+      <DefaultExpression>0</DefaultExpression>
+      <Position>7</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="610" parent="325" name="comments_count">
+      <DefaultExpression>0</DefaultExpression>
+      <Position>8</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <foreign-key id="611" parent="325" name="user_dynamic_ibfk_1">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="612" parent="325" name="PRIMARY">
+      <ColNames>dynamic_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="613" parent="325" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="614" parent="325" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="615" parent="326" name="invite_id">
+      <AutoIncrement>2</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="616" parent="326" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="617" parent="326" name="invite_code">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="618" parent="326" name="is_used">
+      <DefaultExpression>0</DefaultExpression>
+      <Position>4</Position>
+      <StoredType>tinyint(1)|0s</StoredType>
+    </column>
+    <column id="619" parent="326" name="created_at">
+      <DefaultExpression>CURRENT_TIMESTAMP</DefaultExpression>
+      <Position>5</Position>
+      <StoredType>timestamp|0s</StoredType>
+    </column>
+    <foreign-key id="620" parent="326" name="user_invite_code_ibfk_1">
+      <ColNames>user_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="621" parent="326" name="PRIMARY">
+      <ColNames>invite_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="622" parent="326" name="invite_code">
+      <ColNames>invite_code</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="623" parent="326" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="624" parent="326" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <key id="625" parent="326" name="invite_code">
+      <UnderlyingIndexName>invite_code</UnderlyingIndexName>
+    </key>
+    <column id="626" parent="327" name="message_id">
+      <AutoIncrement>1</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="627" parent="327" name="sender_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="628" parent="327" name="receiver_id">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="629" parent="327" name="content">
+      <Position>4</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="630" parent="327" name="time">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>datetime|0s</StoredType>
+    </column>
+    <foreign-key id="631" parent="327" name="user_messages_ibfk_1">
+      <ColNames>sender_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <foreign-key id="632" parent="327" name="user_messages_ibfk_2">
+      <ColNames>receiver_id</ColNames>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <index id="633" parent="327" name="PRIMARY">
+      <ColNames>message_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="634" parent="327" name="sender_id">
+      <ColNames>sender_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="635" parent="327" name="receiver_id">
+      <ColNames>receiver_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="636" parent="327" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="637" parent="328" name="status_id">
+      <AutoIncrement>2</AutoIncrement>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+      <StoredType>bigint|0s</StoredType>
+    </column>
+    <column id="638" parent="328" name="user_id">
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="639" parent="328" name="task_id">
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="640" parent="328" name="current_progress">
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+      <StoredType>float|0s</StoredType>
+    </column>
+    <column id="641" parent="328" name="current_experience">
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="642" parent="328" name="current_points">
+      <NotNull>1</NotNull>
+      <Position>6</Position>
+      <StoredType>int|0s</StoredType>
+    </column>
+    <column id="643" parent="328" name="status">
+      <NotNull>1</NotNull>
+      <Position>7</Position>
+      <StoredType>varchar(255)|0s</StoredType>
+    </column>
+    <column id="644" parent="328" name="is_reward_claimed">
+      <DefaultExpression>0</DefaultExpression>
+      <Position>8</Position>
+      <StoredType>tinyint(1)|0s</StoredType>
+    </column>
+    <foreign-key id="645" parent="328" name="user_task_status_ibfk_1">
+      <ColNames>user_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>user_id</RefColNames>
+      <RefTableName>user</RefTableName>
+    </foreign-key>
+    <foreign-key id="646" parent="328" name="user_task_status_ibfk_2">
+      <ColNames>task_id</ColNames>
+      <OnDelete>cascade</OnDelete>
+      <RefColNames>task_id</RefColNames>
+      <RefTableName>tasks</RefTableName>
+    </foreign-key>
+    <index id="647" parent="328" name="PRIMARY">
+      <ColNames>status_id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="648" parent="328" name="user_id">
+      <ColNames>user_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <index id="649" parent="328" name="task_id">
+      <ColNames>task_id</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="650" parent="328" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+  </database-model>
+</dataSource>
\ No newline at end of file
diff --git a/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/information_schema.FNRwLQ.meta b/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/information_schema.FNRwLQ.meta
new file mode 100644
index 0000000..1ff3db2
--- /dev/null
+++ b/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/information_schema.FNRwLQ.meta
@@ -0,0 +1,2 @@
+#n:information_schema
+!<md> [null, 0, null, null, -2147483648, -2147483648]
diff --git a/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/mysql.osA4Bg.meta b/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/mysql.osA4Bg.meta
new file mode 100644
index 0000000..86a53f1
--- /dev/null
+++ b/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/mysql.osA4Bg.meta
@@ -0,0 +1,2 @@
+#n:mysql
+!<md> [null, 0, null, null, -2147483648, -2147483648]
diff --git a/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/performance_schema.kIw0nw.meta b/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/performance_schema.kIw0nw.meta
new file mode 100644
index 0000000..9394db1
--- /dev/null
+++ b/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/performance_schema.kIw0nw.meta
@@ -0,0 +1,2 @@
+#n:performance_schema
+!<md> [null, 0, null, null, -2147483648, -2147483648]
diff --git a/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/ptproject.lTCJ3Q.meta b/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/ptproject.lTCJ3Q.meta
new file mode 100644
index 0000000..9f5c3fe
--- /dev/null
+++ b/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/ptproject.lTCJ3Q.meta
@@ -0,0 +1,2 @@
+#n:ptproject
+!<md> [0, 0, null, null, -2147483648, -2147483648]
diff --git a/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/sys.zb4BAA.meta b/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/sys.zb4BAA.meta
new file mode 100644
index 0000000..2f4470b
--- /dev/null
+++ b/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/sys.zb4BAA.meta
@@ -0,0 +1,2 @@
+#n:sys
+!<md> [null, 0, null, null, -2147483648, -2147483648]
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 82dbec8..f58e1e2 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -8,6 +8,10 @@
       </list>
     </option>
   </component>
+  <component name="PWA">
+    <option name="enabled" value="true" />
+    <option name="wasEnabledAtLeastOnce" value="true" />
+  </component>
   <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/out" />
   </component>
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..2c23bf9
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/echo-backend.iml" filepath="$PROJECT_DIR$/echo-backend.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/sqlDataSources.xml b/.idea/sqlDataSources.xml
new file mode 100644
index 0000000..6e61ff0
--- /dev/null
+++ b/.idea/sqlDataSources.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="DdlMappings">
+    <mapping uuid="5ed5163f-eda8-4f8e-8280-68ea7ccf1937" name="ptProject@localhost Mapping">
+      <data-sources db="6689f15a-5cd0-40b0-970c-713db3e7bac2" ddl="9c2f634f-ddb0-4dcb-bced-271506c9e649" />
+      <scope>
+        <node kind="database" qname="@" />
+      </scope>
+    </mapping>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 94a25f7..9f66a54 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -2,5 +2,6 @@
 <project version="4">
   <component name="VcsDirectoryMappings">
     <mapping directory="$PROJECT_DIR$" vcs="Git" />
+    <mapping directory="$PROJECT_DIR$/ttorrent" vcs="Git" />
   </component>
 </project>
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index ae3ef3f..da307c7 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,41 +4,171 @@
     <option name="autoReloadType" value="SELECTIVE" />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="f008fe30-0711-42e2-bb33-17dcfdbad387" name="Changes" comment="">
-      <change beforePath="$PROJECT_DIR$/.idea/dbnavigator.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dbnavigator.xml" afterDir="false" />
+    <list default="true" id="f008fe30-0711-42e2-bb33-17dcfdbad387" name="Changes" comment="pom">
+      <change afterPath="$PROJECT_DIR$/.idea/dataSources.local.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/.idea/dataSources.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/information_schema.FNRwLQ.meta" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/mysql.osA4Bg.meta" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/performance_schema.kIw0nw.meta" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/ptproject.lTCJ3Q.meta" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/.idea/dataSources/6689f15a-5cd0-40b0-970c-713db3e7bac2/storage_v2/_src_/schema/sys.zb4BAA.meta" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/.idea/modules.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/.idea/sqlDataSources.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/echo-backend.iml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/logs/myapp.log" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/controller/CommentController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/controller/DynamicController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/controller/GroupController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/controller/LevelController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/controller/PostController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/controller/TaskController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/controller/UserFollowController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/controller/UserMessageController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/Collections.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/Comments.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/DynamicComment.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/DynamicLikes.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/ExperienceHistory.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/FriendRelation.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/Group.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/GroupComments.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/GroupMembers.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/GroupPost.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/Level.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/Likes.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/Post.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/Task.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/UserDynamic.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/UserFollow.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/UserInviteCode.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/UserMessages.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/UserTaskStatus.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/Users.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/CollectionsRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/CommentRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/DynamicCommentRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/DynamicLikesRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/ExperienceHistoryRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/FriendRelationRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/GroupCommentsRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/GroupMembersRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/GroupPostRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/GroupRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/LevelRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/LikesRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/PostRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/TaskRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/UserDynamicRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/UserFollowRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/UserInviteCodeRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/UserMessagesRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/UserRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/repository/UserTaskStatusRepository.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/CommentService.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/DynamicService.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/GroupService.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/LevelService.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/PostService.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/TaskService.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/UserFollowService.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/UserMessageService.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/utils/Result.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/test/java/com/example/myproject/controller/CommentControllerTest.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/test/java/com/example/myproject/controller/DynamicControllerTest.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/test/java/com/example/myproject/controller/GroupControllerTest.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/test/java/com/example/myproject/controller/LevelControllerTest.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/test/java/com/example/myproject/controller/PostControllerTest.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/test/java/com/example/myproject/controller/TaskControllerTest.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/test/java/com/example/myproject/controller/UserFollowControllerTest.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/test/java/com/example/myproject/controller/UserMessageControllerTest.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/controller/CommentController.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/controller/DynamicController.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/controller/GroupController.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/controller/LevelController.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/controller/PostController.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/controller/TaskController.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/controller/UserFollowController.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/controller/UserMessageController.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/Collections.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/Comments.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/DynamicComment.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/DynamicLikes.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/ExperienceHistory.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/FriendRelation.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/Group.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/GroupComments.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/GroupMembers.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/GroupPost.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/Level.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/Likes.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/Post.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/Task.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/UserDynamic.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/UserFollow.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/UserInviteCode.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/UserMessages.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/UserTaskStatus.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/Users.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/CollectionsRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/CommentRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/DynamicCommentRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/DynamicLikesRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/ExperienceHistoryRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/FriendRelationRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/GroupCommentsRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/GroupMembersRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/GroupPostRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/GroupRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/LevelRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/LikesRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/PostRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/TaskRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/UserDynamicRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/UserFollowRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/UserInviteCodeRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/UserMessagesRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/UserRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/repository/UserTaskStatusRepository.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/service/CommentService.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/service/DynamicService.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/service/GroupService.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/service/LevelService.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/service/PostService.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/service/TaskService.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/service/UserFollowService.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/service/UserMessageService.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/utils/Result.class" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/uploads/post/微信图片_20250408154007.jpg" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/vcs.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/create.sql" beforeDir="false" />
       <change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/MyProjectApplication.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/MyProjectApplication.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/common/base/Result.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/common/base/Result.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/config/MyMetaObjectHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/config/MyMetaObjectHandler.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/controller/InviteController.java" beforeDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/controller/UserController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/controller/UserController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/dto/param/InviteParam.java" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/dto/param/TorrentUploadParam.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/dto/param/TorrentUploadParam.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/EntityBase.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/EntityBase.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/InvitationEntity.java" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/User.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/entity/User.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/mapper/InvitationMapper.java" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/mapper/UserMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/mapper/UserMapper.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/InvitationService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/InvitationService.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/UserService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/UserService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/serviceImpl/InvitationServiceImpl.java" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/serviceImpl/TorrentServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/serviceImpl/TorrentServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/serviceImpl/UserServiceImpl.java" beforeDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/resources/application.properties" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application.properties" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/PromotionMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/PromotionMapper.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/test/java/com/example/myproject/controller/TorrentControllerTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/test/java/com/example/myproject/controller/TorrentControllerTest.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/test/java/com/example/myproject/controller/UserControllerTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/test/java/com/example/myproject/controller/UserControllerTest.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/classes/application.properties" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/application.properties" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/classes/com/example/myproject/MyProjectApplication.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/MyProjectApplication.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/example/myproject/controller/UserController$EmailRequest.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/controller/UserController$EmailRequest.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/example/myproject/controller/UserController$VerificationRequest.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/controller/UserController$VerificationRequest.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/example/myproject/controller/UserController$EmailRequest.class" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/example/myproject/controller/UserController$VerificationRequest.class" beforeDir="false" />
       <change beforePath="$PROJECT_DIR$/target/classes/com/example/myproject/controller/UserController.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/controller/UserController.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/User.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/entity/User.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/example/myproject/mapper/UserMapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/mapper/UserMapper.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/example/myproject/utils/Result.class" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/example/myproject/service/UserService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/service/UserService.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/example/myproject/service/serviceImpl/UserServiceImpl.class" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/echo-backend-1.0-SNAPSHOT.jar" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/echo-backend-1.0-SNAPSHOT.jar.original" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/maven-archiver/pom.properties" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/test-classes/classpath.index" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/test-classes/com/example/myproject/controller/UserControllerTest$1.class" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/test-classes/com/example/myproject/controller/UserControllerTest.class" beforeDir="false" />
     </list>
-    <option name="SHOW_DIALOG" value="false" />
+    <optiongit name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
     <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
     <option name="LAST_RESOLUTION" value="IGNORE" />
@@ -52,39 +182,56 @@
   </component>
   <component name="Git.Settings">
     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+    <option name="ROOT_SYNC" value="SYNC" />
   </component>
   <component name="MarkdownSettingsMigration">
     <option name="stateVersion" value="1" />
   </component>
-  <component name="MavenImportPreferences">
-    <option name="importingSettings">
-      <MavenImportingSettings>
-        <option name="workspaceImportEnabled" value="true" />
-      </MavenImportingSettings>
-    </option>
-  </component>
   <component name="ProblemsViewState">
-    <option name="selectedTabId" value="CurrentFile" />
+    <option name="selectedTabId" value="ProjectErrors" />
   </component>
+  <component name="ProjectColorInfo">{
+  &quot;associatedIndex&quot;: 0
+}</component>
   <component name="ProjectId" id="2vZNfNTEFyHApdxmHZ7Y0rlJjKB" />
   <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
   <component name="ProjectViewState">
     <option name="hideEmptyMiddlePackages" value="true" />
     <option name="showLibraryContents" value="true" />
   </component>
-  <component name="PropertiesComponent">{
-  &quot;keyToString&quot;: {
-    &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
-    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
-    &quot;last_opened_file_path&quot;: &quot;D:/study/学习资源/大三下/zy1&quot;
+  <component name="PropertiesComponent"><![CDATA[{
+  "keyToString": {
+    "JUnit.UserControllerTest.executor": "Run",
+    "RequestMappingsPanelOrder0": "0",
+    "RequestMappingsPanelOrder1": "1",
+    "RequestMappingsPanelWidth0": "75",
+    "RequestMappingsPanelWidth1": "75",
+    "RunOnceActivity.OpenProjectViewOnStart": "true",
+    "RunOnceActivity.ShowReadmeOnStart": "true",
+    "RunOnceActivity.git.unshallow": "true",
+    "Spring Boot.MyProjectApplication.executor": "Run",
+    "git-widget-placeholder": "my-branch",
+    "kotlin-language-version-configured": "true",
+    "last_opened_file_path": "D:/PT/echo-backend/src/main/java/com/example/myproject/service",
+    "node.js.detected.package.eslint": "true",
+    "node.js.selected.package.eslint": "(autodetect)",
+    "node.js.selected.package.tslint": "(autodetect)",
+    "nodejs_package_manager_path": "npm",
+    "settings.editor.selected.configurable": "project.propVCSSupport.DirectoryMappings",
+    "vue.rearranger.settings.migration": "true",
+    "应用程序.MyProjectApplication.executor": "Run"
   }
-}</component>
+}]]></component>
   <component name="RecentsManager">
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="D:\PT\echo-backend\src\main\java\com\example\myproject\service" />
+      <recent name="D:\PT\echo-backend\src\main\java\com\example\myproject\controller" />
+    </key>
     <key name="MoveFile.RECENT_KEYS">
       <recent name="D:\study\学习资源\大三下\school\echo-backend\src\main\resources\mapper" />
     </key>
   </component>
-  <component name="RunManager" selected="应用程序.MyProjectApplication">
+  <component name="RunManager" selected="Spring Boot.MyProjectApplication">
     <configuration name="BtClient" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
       <option name="MAIN_CLASS_NAME" value="com.example.myproject.client.BtClient" />
       <module name="echo-backend" />
@@ -152,13 +299,44 @@
         <option name="Make" enabled="true" />
       </method>
     </configuration>
+    <configuration name="UserControllerTest" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
+      <module name="echo-backend" />
+      <extension name="coverage">
+        <pattern>
+          <option name="PATTERN" value="com.example.myproject.controller.*" />
+          <option name="ENABLED" value="true" />
+        </pattern>
+      </extension>
+      <option name="PACKAGE_NAME" value="com.example.myproject.controller" />
+      <option name="MAIN_CLASS_NAME" value="com.example.myproject.controller.UserControllerTest" />
+      <option name="TEST_OBJECT" value="class" />
+      <method v="2">
+        <option name="Make" enabled="true" />
+      </method>
+    </configuration>
+    <configuration name="MyProjectApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
+      <module name="echo-backend" />
+      <option name="SPRING_BOOT_MAIN_CLASS" value="com.example.myproject.MyProjectApplication" />
+      <method v="2">
+        <option name="Make" enabled="true" />
+      </method>
+    </configuration>
     <recent_temporary>
       <list>
+        <item itemvalue="JUnit.UserControllerTest" />
         <item itemvalue="应用程序.MyProjectApplication" />
         <item itemvalue="JUnit.TorrentControllerTest" />
       </list>
     </recent_temporary>
   </component>
+  <component name="SharedIndexes">
+    <attachedChunks>
+      <set>
+        <option value="bundled-jdk-9823dce3aa75-fdfe4dae3a2d-intellij.indexing.shared.core-IU-243.21565.193" />
+        <option value="bundled-js-predefined-d6986cc7102b-e768b9ed790e-JavaScript-IU-243.21565.193" />
+      </set>
+    </attachedChunks>
+  </component>
   <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
   <component name="TaskManager">
     <task active="true" id="Default" summary="Default task">
@@ -167,7 +345,55 @@
       <option name="number" value="Default" />
       <option name="presentableId" value="Default" />
       <updated>1744348740342</updated>
+      <workItem from="1749007243227" duration="1245000" />
     </task>
+    <task id="LOCAL-00001" summary="pom">
+      <option name="closed" value="true" />
+      <created>1749011916131</created>
+      <option name="number" value="00001" />
+      <option name="presentableId" value="LOCAL-00001" />
+      <option name="project" value="LOCAL" />
+      <updated>1749011916131</updated>
+    </task>
+    <task id="LOCAL-00002" summary="pom">
+      <option name="closed" value="true" />
+      <created>1749012141761</created>
+      <option name="number" value="00002" />
+      <option name="presentableId" value="LOCAL-00002" />
+      <option name="project" value="LOCAL" />
+      <updated>1749012141761</updated>
+    </task>
+    <option name="localTasksCounter" value="3" />
     <servers />
   </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="3" />
+  </component>
+  <component name="Vcs.Log.Tabs.Properties">
+    <option name="TAB_STATES">
+      <map>
+        <entry key="MAIN">
+          <value>
+            <State>
+              <option name="FILTERS">
+                <map>
+                  <entry key="branch">
+                    <value>
+                      <list>
+                        <option value="master" />
+                      </list>
+                    </value>
+                  </entry>
+                </map>
+              </option>
+            </State>
+          </value>
+        </entry>
+      </map>
+    </option>
+  </component>
+  <component name="VcsManagerConfiguration">
+    <MESSAGE value="pom" />
+    <option name="LAST_COMMIT_MESSAGE" value="pom" />
+  </component>
 </project>
\ No newline at end of file
diff --git a/echo-backend.iml b/echo-backend.iml
new file mode 100644
index 0000000..e8ce722
--- /dev/null
+++ b/echo-backend.iml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module version="4">
+  <component name="AdditionalModuleElements">
+    <content url="file://$MODULE_DIR$" dumb="true">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+    </content>
+  </component>
+</module>
\ No newline at end of file
diff --git a/logs/myapp.log b/logs/myapp.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/logs/myapp.log
diff --git a/pom.xml b/pom.xml
index 20b8e71..0377a48 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <groupId>groupId</groupId>
@@ -10,14 +10,14 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.6.0</version> <!-- 使用你希望的Spring Boot版本 -->
-        <relativePath /> <!-- lookup parent from repository -->
+        <version>2.6.0</version>
+        <relativePath/> <!-- lookup parent from repository -->
     </parent>
+
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <sa-token.version>1.37.0</sa-token.version>
     </properties>
 
     <dependencies>
@@ -78,16 +78,6 @@
             <groupId>javax.xml.bind</groupId>
             <artifactId>jaxb-api</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.github.xiaoymin</groupId>
-            <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
-            <version>4.5.0</version>
-        </dependency>
-        <dependency>
-            <groupId>javax.validation</groupId>
-            <artifactId>validation-api</artifactId>
-            <version>2.0.1.Final</version>
-        </dependency>
         <!-- Spring Web MVC -->
         <dependency>
             <groupId>org.springframework</groupId>
@@ -118,17 +108,11 @@
             <version>1.18.30</version> <!-- 确保使用的是最新版本 -->
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>com.github.pagehelper</groupId>
-            <artifactId>pagehelper-spring-boot-starter</artifactId>
-            <version>1.4.7</version>
-        </dependency>
-
 
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
-            <version>1.7.32</version> <!-- 版本可以根据需要调整 -->
+            <version>1.7.30</version> <!-- 版本可以根据需要调整 -->
         </dependency>
         <dependency>
             <groupId>ch.qos.logback</groupId>
@@ -136,6 +120,7 @@
             <version>1.2.3</version> <!-- 版本可以根据需要调整 -->
         </dependency>
         <dependency>
+
             <groupId>commons-fileupload</groupId>
             <artifactId>commons-fileupload</artifactId>
             <version>1.4</version>
@@ -145,7 +130,11 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-validation</artifactId>
         </dependency>
-
+        <dependency>
+            <groupId>com.baidubce</groupId>
+            <artifactId>qianfan</artifactId>
+            <version>0.1.1</version>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-webflux</artifactId>
@@ -156,18 +145,51 @@
             <version>4.12</version>
             <scope>test</scope>
         </dependency>
-
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
+
+        <dependency>
+            <groupId>jakarta.persistence</groupId>
+            <artifactId>jakarta.persistence-api</artifactId>
+            <version>3.1.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>jakarta.transaction</groupId>
+            <artifactId>jakarta.transaction-api</artifactId>
+            <version>2.0.0</version> <!-- 使用最新版本 -->
+        </dependency>
+
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-core</artifactId>
+            <version>5.6.7.Final</version> <!-- 与 Jakarta 兼容的版本 -->
+        </dependency>
+
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.27</version> <!-- 使用适合你的版本 -->
+        </dependency>
+
         <dependency>
             <groupId>com.turn</groupId>
             <artifactId>ttorrent-common</artifactId>
             <version>1.3.0-SNAPSHOT</version>
         </dependency>
-
         <!-- ttorrent -->
         <dependency>
             <groupId>com.turn</groupId>
@@ -204,30 +226,33 @@
             <artifactId>ttorrent-tracker</artifactId>
             <version>1.3.0-SNAPSHOT</version>
         </dependency>
+
         <dependency>
-            <groupId>com.github.xiaoymin</groupId>
-            <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
-            <version>4.5.0</version>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+            <version>1.4.7</version>
         </dependency>
 
         <dependency>
             <groupId>cn.dev33</groupId>
             <artifactId>sa-token-spring-boot-starter</artifactId>
-            <version>${sa-token.version}</version>
+            <version>1.38.0</version> <!-- 请确认使用最新版本或与你的Spring Boot版本匹配 -->
         </dependency>
 
 
-
-
         <dependency>
-            <groupId>jakarta.persistence</groupId>
-            <artifactId>jakarta.persistence-api</artifactId>
-            <version>3.1.0</version>
+            <groupId>org.simpleframework</groupId>
+            <artifactId>simple</artifactId>
+            <version>4.1.21</version>
         </dependency>
 
+
+
     </dependencies>
 
 
+
+
     <build>
         <plugins>
             <plugin>
@@ -272,8 +297,7 @@
                 <artifactId>maven-surefire-plugin</artifactId>
                 <version>2.9</version>
                 <configuration>
-                    <!--suppress
-                    UnresolvedMavenProperty -->
+                    <!--suppress UnresolvedMavenProperty -->
                     <argLine>${surefireArgLine}</argLine>
                     <skipTests>false</skipTests>
                     <includes>
@@ -292,20 +316,20 @@
             </plugin>
 
         </plugins>
-<!--                <resources>-->
-<!--                    <resource>-->
-<!--                        <directory>src/main/java</directory>-->
-<!--                        <includes>-->
-<!--                            <include>**/*.xml</include>-->
-<!--                        </includes>-->
-<!--                    </resource>-->
-<!--                    <resource>-->
-<!--                        <directory>libs</directory>-->
-<!--                        <includes>-->
-<!--                            <include>*.jar</include>-->
-<!--                        </includes>-->
-<!--                    </resource>-->
-<!--                    </resources>-->
+        <!--                <resources>-->
+        <!--                    <resource>-->
+        <!--                        <directory>src/main/java</directory>-->
+        <!--                        <includes>-->
+        <!--                            <include>**/*.xml</include>-->
+        <!--                        </includes>-->
+        <!--                    </resource>-->
+        <!--                    <resource>-->
+        <!--                        <directory>libs</directory>-->
+        <!--                        <includes>-->
+        <!--                            <include>*.jar</include>-->
+        <!--                        </includes>-->
+        <!--                    </resource>-->
+        <!--                    </resources>-->
 
 
     </build>
diff --git a/src/main/java/com/example/myproject/MyProjectApplication.java b/src/main/java/com/example/myproject/MyProjectApplication.java
index eb58082..49cd5f0 100644
--- a/src/main/java/com/example/myproject/MyProjectApplication.java
+++ b/src/main/java/com/example/myproject/MyProjectApplication.java
@@ -5,14 +5,10 @@
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
-
-
 @SpringBootApplication
 @MapperScan("com.example.myproject.mapper")  // 扫描 Mapper 接口
-
 public class MyProjectApplication {
     public static void main(String[] args) {
         SpringApplication.run(MyProjectApplication.class, args);
     }
 }
-
diff --git a/src/main/java/com/example/myproject/controller/CommentController.java b/src/main/java/com/example/myproject/controller/CommentController.java
new file mode 100644
index 0000000..f8eb135
--- /dev/null
+++ b/src/main/java/com/example/myproject/controller/CommentController.java
@@ -0,0 +1,33 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.entity.Comments;
+import com.example.myproject.service.CommentService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/echo/forum/posts")
+public class CommentController {
+
+    @Autowired
+    private CommentService commentService;
+
+    // 添加评论
+    @PostMapping("/{post_id}/comments")
+    public String addComment(@PathVariable("post_id") Long postId, @RequestBody Comments comment) {
+        // 添加评论
+        commentService.addComment(postId, comment);
+        return "Comment added successfully!";
+    }
+
+    //获取所有评论
+    @GetMapping("/{post_id}/getAllComments")
+    public List<Map<String, Object>> getCommentsByPostId(@PathVariable("post_id") Long postId) {
+        // 获取评论并填充用户信息
+        return commentService.getCommentsByPostId(postId);
+    }
+
+}
diff --git a/src/main/java/com/example/myproject/controller/DynamicController.java b/src/main/java/com/example/myproject/controller/DynamicController.java
new file mode 100644
index 0000000..db1d0a2
--- /dev/null
+++ b/src/main/java/com/example/myproject/controller/DynamicController.java
@@ -0,0 +1,107 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.entity.UserDynamic;
+import com.example.myproject.service.DynamicService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/echo/dynamic")
+public class DynamicController {
+
+    @Autowired
+    private DynamicService dynamicService;
+
+    // 创建好友动态接口
+    @PostMapping("/{user_id}/createDynamic")
+    public Map<String, Object> createDynamic(@PathVariable("user_id") Long userId,
+                                             @RequestParam(value = "title", required = false) String title,
+                                             @RequestParam(value = "content") String content,
+                                             @RequestParam(value = "image_url", required = false) MultipartFile[] imageFiles) {
+        return dynamicService.createDynamic(userId, title, content, imageFiles);
+    }
+
+    //删除好友动态
+    @DeleteMapping("/me/deleteDynamic/{dynamic_id}")
+    public ResponseEntity<String> deleteDynamic(@PathVariable("dynamic_id") Long dynamicId) {
+        dynamicService.deleteDynamic(dynamicId);
+        return ResponseEntity.ok("动态删除成功");
+    }
+
+    //好友动态评论
+    @PostMapping("/{user_id}/feeds/{dynamic_id}/comments")
+    public ResponseEntity<Map<String, Object>> addComment(
+            @PathVariable("user_id") Long userId,
+            @PathVariable("dynamic_id") Long dynamicId,
+            @RequestBody Map<String, String> content) {
+
+        String commentContent = content.get("content");  // 获取评论内容
+        Map<String, Object> response = dynamicService.addComment(userId, dynamicId, commentContent);
+
+        return ResponseEntity.ok(response);
+    }
+
+    //获取某个好友的所有动态
+    @GetMapping("/{user_id}/getAdynamic")
+    public ResponseEntity<Map<String, Object>> getAllUserDynamics(@PathVariable("user_id") Long userId) {
+        Map<String, Object> response = dynamicService.getAllUserDynamics(userId);
+
+        if (response == null || response.isEmpty()) {
+            return ResponseEntity.noContent().build();
+        }
+
+        // 返回响应
+        return ResponseEntity.ok(response);
+    }
+
+    @GetMapping("/{user_id}/getAllDynamics")
+    public ResponseEntity<Map<String, Object>> getAllUserAndFriendsDynamics(@PathVariable("user_id") Long userId) {
+        // 获取当前用户所有好友的ID
+        List<Long> friendIds = dynamicService.getAllFriendIds(userId);
+        friendIds.add(userId);
+        Map<String, Object> response = dynamicService.getAllUserAndFriendsDynamics(friendIds);
+
+        if (response == null || response.isEmpty()) {
+            return ResponseEntity.noContent().build();
+        }
+
+        return ResponseEntity.ok(response);
+    }
+
+    //点赞好友动态
+    @PostMapping("/like")
+    public ResponseEntity<String> likeDynamic(@RequestBody Map<String, Long> request) {
+        Long userId = request.get("userId");
+        Long dynamicId = request.get("dynamicId");
+        // 执行点赞
+        boolean success = dynamicService.likeDynamic(userId, dynamicId);
+
+        if (success) {
+            return ResponseEntity.ok("Like successful");
+        } else {
+            return ResponseEntity.badRequest().body("Like failed");
+        }
+    }
+
+    @DeleteMapping("/unlike")
+    public ResponseEntity<String> unlikeDynamic(@RequestBody Map<String, Long> request) {
+        Long userId = request.get("userId");
+        Long dynamicId = request.get("dynamicId");
+
+        // 执行取消点赞
+        boolean success = dynamicService.unlikeDynamic(userId, dynamicId);
+
+        if (success) {
+            return ResponseEntity.ok("Unlike successful");
+        } else {
+            return ResponseEntity.badRequest().body("Unlike failed");
+        }
+    }
+
+
+}
diff --git a/src/main/java/com/example/myproject/controller/GroupController.java b/src/main/java/com/example/myproject/controller/GroupController.java
new file mode 100644
index 0000000..a0830b6
--- /dev/null
+++ b/src/main/java/com/example/myproject/controller/GroupController.java
@@ -0,0 +1,105 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.entity.Group;
+import com.example.myproject.entity.GroupComments;
+import com.example.myproject.service.GroupService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/echo/groups")
+public class GroupController {
+
+    @Autowired
+    private GroupService groupService;
+
+    @PostMapping("/createGroup")
+    public ResponseEntity<Map<String, Object>> createGroup(@RequestBody Group groupRequest) {
+        // 调用服务层方法创建小组
+        System.out.println("Received group name: " + groupRequest.getGroupName());
+        return groupService.createGroup(groupRequest);
+    }
+
+
+    // 加入小组接口
+    @PostMapping("/{group_id}/join")
+    public ResponseEntity<Map<String, Object>> joinGroup(@PathVariable("group_id") Long groupId,
+                                                         @RequestBody Map<String, Long> requestBody) {
+        Long userId = requestBody.get("user_id");
+        return groupService.joinGroup(groupId, userId);
+    }
+
+    // 退出小组接口
+    @PostMapping("/{group_id}/leave")
+    public ResponseEntity<Map<String, Object>> leaveGroup(@PathVariable("group_id") Long groupId,
+                                                          @RequestBody Map<String, Long> requestBody) {
+        Long userId = requestBody.get("user_id");
+        return groupService.leaveGroup(groupId, userId);
+    }
+
+    // 获取小组成员接口
+    @GetMapping("/{group_id}/members")
+    public ResponseEntity<Map<String, Object>> getGroupMembers(@PathVariable("group_id") Long groupId) {
+        return groupService.getGroupMembers(groupId);
+    }
+
+    //发布帖子
+    @PostMapping("/{group_id}/createPost")
+    public ResponseEntity<Map<String, Object>> createPost(
+            @PathVariable("group_id") Long groupId,
+            @RequestParam("user_id") Long userId,
+            @RequestParam("content") String content,
+            @RequestParam("title") String title,
+            @RequestParam(value = "images", required = false) MultipartFile[] imageFiles) {
+
+        Map<String, Object> response = groupService.createPost(groupId, userId, content, title, imageFiles);
+        return ResponseEntity.ok(response);
+    }
+
+    //获取某个小组内的所有帖子
+    @GetMapping("/{group_id}/getAllPosts")
+    public ResponseEntity<Map<String, Object>> getAllPosts(@PathVariable("group_id") Long groupId) {
+        Map<String, Object> response = groupService.getAllPosts(groupId);
+        return ResponseEntity.ok(response);
+    }
+
+    //获取所有小组名称
+    @PostMapping("/getAllGroups")
+    public ResponseEntity<Map<String, Object>> searchGroups(@RequestBody Map<String, Object> params) {
+        Map<String, Object> response = groupService.searchGroups(params);
+        return ResponseEntity.ok(response);
+    }
+
+    // 点赞帖子
+    @PostMapping("/{group_post_id}/like")
+    public ResponseEntity<Map<String, Object>> likePost(
+            @PathVariable("group_post_id") Long groupPostId) {
+        Map<String, Object> response = groupService.likePost(groupPostId);
+        return ResponseEntity.ok(response);
+    }
+
+    // 取消点赞
+    @PostMapping("/{group_post_id}/unlike")
+    public ResponseEntity<Map<String, Object>> unlikePost(
+            @PathVariable("group_post_id") Long groupPostId) {
+        Map<String, Object> response = groupService.unlikePost(groupPostId);
+        return ResponseEntity.ok(response);
+    }
+
+    // 添加评论接口
+    @PostMapping("/{group_post_id}/comment")
+    public ResponseEntity<Map<String, Object>> addComment(
+
+            @PathVariable("group_post_id") Long postId,
+            @RequestBody GroupComments comment) {
+
+        Map<String, Object> response = groupService.addComment(postId, comment);
+        return ResponseEntity.ok(response);
+    }
+
+}
diff --git a/src/main/java/com/example/myproject/controller/LevelController.java b/src/main/java/com/example/myproject/controller/LevelController.java
new file mode 100644
index 0000000..8781246
--- /dev/null
+++ b/src/main/java/com/example/myproject/controller/LevelController.java
@@ -0,0 +1,42 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.service.LevelService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+@RequestMapping("/echo/level")
+@RestController
+public class LevelController {
+
+    @Autowired
+    private LevelService levelService;
+
+    @GetMapping("/getExperience")
+    public Map<String, Object> getExperience(@RequestParam Long user_id) {
+        return levelService.getUserExperience(user_id);
+    }
+
+    @PostMapping("/updateExperience")
+    public Map<String, Object> updateExperience(@RequestBody Map<String, Object> params) {
+        Long userId = Long.valueOf(params.get("user_id").toString());
+        Integer experience = Integer.valueOf(params.get("experience").toString());
+        String source = params.get("source").toString();
+
+        return levelService.updateExperience(userId, experience, source);
+    }
+
+    // 检查用户是否满足升级条件
+    @GetMapping("/upgrade-check")
+    public Map<String, Object> checkUpgrade(@RequestParam Long user_id) {
+        return levelService.checkUpgrade(user_id);
+    }
+
+    @PostMapping("/upgrades")
+    public Map<String, Object> upgradeUserLevel(@RequestBody Map<String, Object> request) {
+        Long userId = Long.valueOf(request.get("user_id").toString());
+        Boolean canUpgrade = (Boolean) request.get("can_upgrade");
+        return levelService.upgradeUserLevel(userId, canUpgrade);
+    }
+}
diff --git a/src/main/java/com/example/myproject/controller/PostController.java b/src/main/java/com/example/myproject/controller/PostController.java
new file mode 100644
index 0000000..63fcbe8
--- /dev/null
+++ b/src/main/java/com/example/myproject/controller/PostController.java
@@ -0,0 +1,94 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.entity.Post;
+import com.example.myproject.service.PostService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+@RestController
+@RequestMapping("/echo/forum/posts")
+public class PostController {
+
+    @Autowired
+    private PostService postService;
+
+    //创建新帖子（已完成）
+    @PostMapping("/{user_id}/createPost")
+    public Map<String, Object> createPost(
+            @PathVariable("user_id") Long userId,
+            @RequestParam(value = "postContent") String postContent,
+            @RequestParam(value = "title", required = false) String title,
+            @RequestParam(value = "imageUrl") MultipartFile[] imageFiles) {
+        return postService.createPost(userId, postContent, title, imageFiles);
+    }
+
+    //编辑帖子（已完成）
+    @PutMapping("/{post_id}/editPost")
+    public String updatePost(@PathVariable("post_id") Long postId, @RequestBody Post post) {
+        postService.updatePost(postId, post);
+        return "Post updated successfully!";
+    }
+
+    //删除帖子（已完成）
+    @DeleteMapping("/{post_id}/deletePost")
+    public String deletePost(@PathVariable("post_id") Long postId) {
+        postService.deletePost(postId);
+        return "Post deleted successfully!";
+    }
+
+    //点赞帖子（已完成）
+    @PostMapping("/{post_id}/like")
+    public String likePost(@PathVariable("post_id") Long postId, @RequestBody Map<String, Long> requestBody) {
+
+        Long userId = requestBody.get("user_id");
+        postService.likePost(postId, userId);
+
+        return "Post liked successfully!";
+    }
+
+    //取消点赞（已完成）
+    @PostMapping("/{post_id}/unlike")
+    public String unlikePost(@PathVariable("post_id") Long postId, @RequestBody Map<String, Long> requestBody) {
+        Long userId = requestBody.get("user_id");
+        postService.unlikePost(postId, userId);
+
+        return "Post unliked successfully!";
+    }
+
+    //获取帖子列表（已完成）
+    @GetMapping("/getAllPosts")
+    public Map<String, Object> getAllPosts() {
+        return postService.getAllPosts();  // 调用服务层的 getAllPosts 方法
+    }
+
+    @GetMapping("/{postId}/getPost")
+    public Map<String, Object> getPostById(@PathVariable Long postId) {
+        return postService.getPostById(postId);
+    }
+
+
+    //收藏帖子（已完成）
+    @PostMapping("/{post_id}/collect")
+    public String collectPost(@PathVariable("post_id") Long postId, @RequestBody Map<String, Long> requestBody) {
+        Long userId = requestBody.get("user_id");
+        postService.collectPost(postId, userId);
+
+        return "Post collected successfully!";
+    }
+
+
+    //取消收藏（已完成）
+    @DeleteMapping("/{post_id}/uncollect")
+    public String uncollectPost(@PathVariable("post_id") Long postId, @RequestBody Map<String, Long> requestBody) {
+        Long userId = requestBody.get("user_id");
+        postService.uncollectPost(postId, userId);
+        return "Post uncollected successfully!";
+    }
+
+
+}
diff --git a/src/main/java/com/example/myproject/controller/TaskController.java b/src/main/java/com/example/myproject/controller/TaskController.java
new file mode 100644
index 0000000..2e01b0c
--- /dev/null
+++ b/src/main/java/com/example/myproject/controller/TaskController.java
@@ -0,0 +1,68 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.service.TaskService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("/echo/task/tutorial")
+public class TaskController {
+
+    @Autowired
+    private TaskService taskService;
+
+    //获取当前用户的新手任务列表
+    @GetMapping("/getAllTasks")
+    public Map<String, Object> getAllTasks(@RequestBody Map<String, Object> request) {
+        Long userId = Long.parseLong(request.get("user_id").toString());
+        return taskService.getAllTasksForUser(userId);
+    }
+
+    @PostMapping("/updateStatus")
+    public Map<String, Object> updateTaskStatus(@RequestBody Map<String, Object> request) {
+        Long userId = Long.parseLong(request.get("user_id").toString());
+        String taskId = request.get("task_id").toString();
+        return taskService.updateTaskStatus(userId, taskId);
+    }
+
+    //获取当前经验和任务奖励
+    @GetMapping("/getExperience")
+    public Map<String, Object> getExperience(@RequestBody Map<String, Object> request) {
+        Long userId = Long.parseLong(request.get("user_id").toString());
+        return taskService.getUserExperience(userId);
+    }
+
+    //获取当前的指引步骤
+    @GetMapping("/getNewStep")
+    public Map<String, Object> getNewStep(@RequestBody Map<String, Object> request) {
+        Long userId = Long.parseLong(request.get("user_id").toString());
+        return taskService.getNewStep(userId);
+    }
+
+    //更新进度
+    @PostMapping("/updateProgress")
+    public Map<String, Object> updateProgress(@RequestBody Map<String, Object> request) {
+        Long userId = Long.parseLong(request.get("user_id").toString());
+        String taskId = request.get("task_id").toString();
+        Integer progress = Integer.parseInt(request.get("progress").toString());
+        return taskService.updateTaskProgress(userId, taskId, progress);
+    }
+
+    //领取任务奖励
+    @PostMapping("/rewardClaim")
+    public Map<String, Object> rewardClaim(@RequestBody Map<String, Object> request) {
+        Long userId = Long.parseLong(request.get("user_id").toString());
+        String taskId = request.get("task_id").toString();
+        return taskService.claimReward(userId, taskId);
+    }
+
+    //检查任务奖励状态
+    @PostMapping("/rewardReview")
+    public Map<String, Object> rewardReview(@RequestBody Map<String, Object> request) {
+        Long userId = Long.parseLong(request.get("user_id").toString());
+        String taskId = request.get("task_id").toString();
+        return taskService.checkRewardStatus(userId, taskId);
+    }
+}
diff --git a/src/main/java/com/example/myproject/controller/UserController.java b/src/main/java/com/example/myproject/controller/UserController.java
index acda403..224c138 100644
--- a/src/main/java/com/example/myproject/controller/UserController.java
+++ b/src/main/java/com/example/myproject/controller/UserController.java
@@ -1,190 +1,155 @@
 package com.example.myproject.controller;
 
-import cn.dev33.satoken.annotation.SaCheckLogin;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.example.myproject.common.base.PageUtil;
-import com.example.myproject.dto.param.TorrentParam;
-import com.example.myproject.dto.vo.TorrentVO;
-import com.example.myproject.entity.TorrentEntity;
-import com.example.myproject.mapper.UserMapper;
-import com.example.myproject.mapper.VerificationTokenMapper;
-import com.example.myproject.entity.User;
-import com.example.myproject.entity.VerificationToken;
-import com.example.myproject.service.EmailService;
+import com.example.myproject.entity.Users;
+import com.example.myproject.repository.UserRepository;
+import com.example.myproject.service.DynamicService;
+import com.example.myproject.service.TaskService;
 import com.example.myproject.service.UserService;
-import com.example.myproject.common.base.Result;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.media.Content;
-import io.swagger.v3.oas.annotations.media.Schema;
-import io.swagger.v3.oas.annotations.responses.ApiResponse;
-import org.apache.commons.lang3.RandomStringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.AuthenticationException;
-import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.web.bind.annotation.*;
 
-import javax.annotation.Resource;
-import java.time.Instant;
-import java.time.temporal.ChronoUnit;
+import java.util.Map;
+import java.util.Optional;
+
 import java.util.List;
+import java.util.ArrayList;
+
 
 @RestController
-@RequestMapping("/user")
-@Api(value = "用户管理接口", tags = {"用户管理"})
+@RequestMapping("/echo/user")
 public class UserController {
 
-    @Resource
+    @Autowired
     private UserService userService;
 
     @Autowired
-    private AuthenticationManager authenticationManager;
+    private UserRepository userRepository;
 
     @Autowired
-    private UserMapper userMapper; // 使用 MyBatis-Plus
+    private DynamicService dynamicService;
 
-    @Autowired
-    private VerificationTokenMapper verificationTokenMapper; // 替换 JPA
-
-    private static final Logger logger = LoggerFactory.getLogger(UserController.class);
-
-    @PostMapping("/login")
-    @ApiOperation(value = "用户登录", notes = "使用用户名和密码进行登录")
-    public Result loginController(@RequestParam @ApiParam(value = "用户名", required = true) String username,
-                                  @RequestParam @ApiParam(value = "密码", required = true) String password) {
-        try {
-            Authentication authentication = authenticationManager.authenticate(
-                    new UsernamePasswordAuthenticationToken(username, password)
-            );
-            SecurityContextHolder.getContext().setAuthentication(authentication);
-
-            // 使用 MyBatis-Plus 查询
-            User user = userMapper.selectOne(new QueryWrapper<User>().eq("username", username));
-
-            System.out.println("Login successful for user: " + username);
-            return Result.ok(user);
-        } catch (AuthenticationException e) {
-            return Result.error("登录失败");
-        }
+    // 接口：生成邀请码
+    @PostMapping("/getInviteCode")
+    public Map<String, Object> generateInviteCode(@RequestBody Map<String, Object> request) {
+        Long userId = Long.parseLong(request.get("user_id").toString());
+        return userService.generateInviteCode(userId);
     }
 
+    //注册
     @PostMapping("/register")
-    @ApiOperation(value = "用户注册", notes = "使用用户信息进行注册")
-    public Result registerController(@RequestBody @ApiParam(value = "新用户信息", required = true) User newUser) {
-        if (userService.checkEmailExists(newUser.getEmail())) {
-            return Result.error( "邮箱已被使用，请使用其他邮箱注册或找回密码！");
-        }
-        boolean success = userService.preRegisterUser(newUser);
-        if (success) {
-            User responseUser = new User();
-            responseUser.setEmail(newUser.getEmail());
-            return Result.ok();
+    public Map<String, Object> register(@RequestBody Map<String, Object> request) {
+        String username = (String) request.get("username");
+        String email = (String) request.get("email");
+        String password = (String) request.get("password");
+        String role = (String) request.get("role");
+        String inviteCode = (String) request.get("inviteCode");
+
+        // 调用服务层的注册方法
+        String resultMessage = userService.registerUser(username, email, password, role, inviteCode);
+
+        // 返回注册结果
+        return Map.of("msg", resultMessage);
+    }
+
+    //登录
+    @PostMapping("/login")
+    public Map<String, Object> login(@RequestBody Map<String, Object> request) {
+        String username = (String) request.get("username");
+        String password = (String) request.get("password");
+
+        // 调用服务层的登录方法
+        String resultMessage = userService.loginUser(username, password);
+
+        // 根据登录结果返回不同的响应
+        if (resultMessage.equals("登录成功")) {
+            // 查询用户信息
+            Optional<Users> user = userRepository.findByUsername(username);
+            if (user.isPresent()) {
+                // 将用户的所有信息作为返回值
+                return Map.of("msg", resultMessage, "user", user.get());
+            } else {
+                return Map.of("msg", "用户信息查询失败");
+            }
         } else {
-            return Result.error("账号已存在或注册失败！");
+            return Map.of("msg", resultMessage);
         }
     }
 
-    public static class VerificationRequest {
-        private String email;
-        private String code;
+    //修改密码
+    @PostMapping("/password")
+    public Map<String, Object> changePassword(@RequestBody Map<String, Object> request) {
+        Long userId = Long.parseLong(request.get("user_id").toString());
+        String oldPassword = (String) request.get("old_password");
+        String newPassword = (String) request.get("new_password");
+        String confirmPassword = (String) request.get("confirm_password");
 
-        public String getEmail() { return email; }
-        public void setEmail(String email) { this.email = email; }
-        public String getCode() { return code; }
-        public void setCode(String code) { this.code = code; }
+        // 调用服务层的修改密码方法
+        String resultMessage = userService.changePassword(userId, oldPassword, newPassword, confirmPassword);
+
+        // 返回修改结果
+        return Map.of("message", resultMessage, "status", resultMessage.equals("密码修改成功") ? "success" : "error");
     }
 
-    @PostMapping("/verify-code")
-    @ApiOperation(value = "验证邮箱验证码", notes = "验证用户邮箱的验证码")
-    public Result verifyEmailCode(@RequestBody @ApiParam(value = "验证请求信息", required = true) VerificationRequest verificationRequest) {
-        String email = verificationRequest.getEmail();
-        String code = verificationRequest.getCode();
-        boolean isVerified = userService.verifyEmail(email, code);
-        if (isVerified) {
-            return Result.ok();
+    // 获取用户个人资料
+    @GetMapping("/{userId}/getProfile")
+    public Map<String, Object> getProfile(@PathVariable("userId") Long userId) {
+        return userService.getProfile(userId);
+    }
+
+    // 修改用户个人资料
+    @PutMapping("/{userId}/editProfile")
+    public Map<String, String> editProfile(
+            @PathVariable("userId") Long userId,
+            @RequestBody Map<String, Object> profileData) {
+
+        // 获取请求体中的修改数据
+        String avatarUrl = (String) profileData.get("avatarUrl");
+        String nickname = (String) profileData.get("nickname");
+        String gender = (String) profileData.get("gender");
+        String description = (String) profileData.get("description");
+        String hobbies = (String) profileData.get("hobbies");
+
+        // 调用服务层方法进行修改
+        boolean updated = userService.editProfile(userId, avatarUrl, nickname, gender, description, hobbies);
+
+        // 返回操作结果消息
+        if (updated) {
+            return Map.of("message", "用户资料更新成功");
         } else {
-            return Result.error( "验证码错误或已过期！");
+            return Map.of("message", "用户不存在");
         }
     }
 
-    @Autowired
-    private EmailService emailService;
-
-    public static class EmailRequest {
-        private String email;
-        public String getEmail() { return email; }
-        public void setEmail(String email) { this.email = email; }
+    // 计算分享率
+    @GetMapping("/{user_id}/calculate-share-rate")
+    public Map<String, Object> calculateShareRate(@PathVariable("user_id") Long userId) {
+        return userService.calculateShareRate(userId);
     }
 
-    @PostMapping("/get-verification-email")
-    @ApiOperation(value = "发送验证邮件", notes = "通过电子邮件发送验证邮件")
-    public ResponseEntity<Result> sendVerificationEmail(@RequestBody @ApiParam(value = "发送验证请求", required = true) EmailRequest emailVerificationRequest) {
-        String email = emailVerificationRequest.getEmail();
-        User user = userMapper.selectOne(new QueryWrapper<User>().eq("email", email));
-        if (user == null) {
-            logger.error("未找到与该邮箱地址相关联的用户: {}", email);
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST)
-                    .body(Result.error("未找到与该邮箱地址相关联的用户"));
+    // 获取用户所有好友的基本信息
+    @GetMapping("/{userId}/friends")
+    public List<Map<String, Object>> getUserFriends(@PathVariable("userId") Long userId) {
+        List<Long> friendIds = dynamicService.getAllFriendIds(userId);  // 注意这里用的是实例对象
+        List<Map<String, Object>> friends = new ArrayList<>();
+
+        for (Long friendId : friendIds) {
+            Optional<Users> userOpt = userRepository.findById(friendId);
+            if (userOpt.isPresent()) {
+                Users user = userOpt.get();
+                Map<String, Object> friendInfo = Map.of(
+                        "id", user.getUserId(),
+                        "avatar", user.getAvatarUrl() != null ? user.getAvatarUrl() : "https://example.com/default-avatar.jpg",
+                        "nickname", user.getUsername() != null ? user.getUsername() : "未知用户",
+                        "email", user.getEmail() != null ? user.getEmail() : "未填写"
+                );
+                friends.add(friendInfo);
+            }
         }
 
-        // 生成验证码
-        String token = RandomStringUtils.randomNumeric(6);
-        Instant expiryDate = Instant.now().plus(1, ChronoUnit.HOURS);
-        logger.info("生成的验证令牌: {}, 过期时间: {}", token, expiryDate);
-
-        VerificationToken verificationToken = new VerificationToken(token, user.getUsername(), email, user.getPassword(), expiryDate);
-
-        // 保存到 MyBatis-Plus 数据库
-        verificationTokenMapper.insert(verificationToken);
-
-        logger.info("验证令牌已保存，用户: {}", user.getUsername());
-        emailService.sendVerificationEmail(email, token);
-
-        return ResponseEntity.ok(Result.ok());
+        return friends;
     }
-    @PostMapping("/checkPassword")
-    public Result<String> checkPassword(@RequestParam Long userId, @RequestParam String password) {
-        boolean isPasswordCorrect = userService.checkPassword(userId, password);
-        if (isPasswordCorrect) {
-            return Result.ok();
-        } else {
-            return Result.error("原始密码输入错误");
-        }
-    }
-
-
-//    @SaCheckLogin
-//    @Operation(summary = "用户收藏列表", description = "获取用户收藏的种子列表-分页-排序")
-//    @ApiResponse(responseCode = "0", description = "操作成功",
-//            content = {@Content(mediaType = "application/json",
-//                    schema = @Schema(implementation = TorrentVO.class))
-//            })
-//    @PostMapping("/favorite/list")
-//    public Result listFavorites(@RequestBody FavoriteParam param) {
-//        if (param.getUserId() == null) {
-//            return Result.error("缺少 userId");
-//        }
-//
-//        // 校验排序字段是否合理（可选）
-//        param.validOrder(param.getOrderKey(TorrentEntity.class));
-//
-//        PageUtil.startPage(param);
-//
-//        List<TorrentEntity> list = favoriteService.getUserFavoritesPaged(param.getUserId());
-//
-//        return Result.ok(list, PageUtil.getPage(list));
-//    }
-//
-
 
 
 }
+
+
diff --git a/src/main/java/com/example/myproject/controller/UserFollowController.java b/src/main/java/com/example/myproject/controller/UserFollowController.java
new file mode 100644
index 0000000..f550beb
--- /dev/null
+++ b/src/main/java/com/example/myproject/controller/UserFollowController.java
@@ -0,0 +1,47 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.service.UserFollowService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("/echo/users")
+public class UserFollowController {
+
+    @Autowired
+    private UserFollowService userFollowService;
+
+    // 用户关注接口
+    @PostMapping("/{followed_id}/follow")
+    public ResponseEntity<Map<String, Object>> follow(@PathVariable("followed_id") Long followedId,
+                                                      @RequestBody Map<String, Long> request) {
+        Long followerId = request.get("follower_id");
+        Map<String, Object> response = userFollowService.follow(followerId, followedId);
+        return ResponseEntity.ok(response);
+    }
+
+    // 取消关注接口
+    @PostMapping("/{followed_id}/unfollow")
+    public ResponseEntity<Map<String, Object>> unfollow(@PathVariable("followed_id") Long followedId,
+                                                        @RequestBody Map<String, Long> request) {
+        Long followerId = request.get("follower_id");
+        Map<String, Object> response = userFollowService.unfollow(followerId, followedId);
+        return ResponseEntity.ok(response);
+    }
+
+    // 获取某个用户的粉丝列表
+    @GetMapping("/{user_id}/followers")
+    public ResponseEntity<Map<String, Object>> getFollowers(@PathVariable("user_id") Long userId) {
+        Map<String, Object> response = userFollowService.getFollowers(userId);
+        return ResponseEntity.ok(response);
+    }
+
+    @GetMapping("/{user_id}/following")
+    public ResponseEntity<Map<String, Object>> getFollowing(@PathVariable("user_id") Long userId) {
+        Map<String, Object> response = userFollowService.getFollowing(userId);
+        return ResponseEntity.ok(response);
+    }
+}
diff --git a/src/main/java/com/example/myproject/controller/UserMessageController.java b/src/main/java/com/example/myproject/controller/UserMessageController.java
new file mode 100644
index 0000000..c7014a7
--- /dev/null
+++ b/src/main/java/com/example/myproject/controller/UserMessageController.java
@@ -0,0 +1,39 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.service.UserMessageService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("/echo/message")
+public class UserMessageController {
+
+    @Autowired
+    private UserMessageService userMessageService;
+
+    @PostMapping("/sendMessages")
+    public ResponseEntity<Map<String, Object>> sendMessage(@RequestBody Map<String, Object> params) {
+        // 将参数转换为 Long 类型
+        Long senderId = Long.valueOf(params.get("sender_id").toString());
+        Long receiverId = Long.valueOf(params.get("receiver_id").toString());
+        String content = (String) params.get("content");
+        Map<String, Object> response = userMessageService.sendMessage(senderId, receiverId, content);
+        return ResponseEntity.ok(response);
+    }
+
+    @GetMapping("/{user_id}/getUserMessages")
+    public ResponseEntity<Map<String, Object>> getUserMessages(@PathVariable("user_id") Long userId) {
+        Map<String, Object> response = userMessageService.getUserMessages(userId);
+        return ResponseEntity.ok(response);
+    }
+
+    // 获取单条消息的详情
+    @GetMapping("/{message_id}/getAMessage")
+    public ResponseEntity<Map<String, Object>> getMessage(@PathVariable("message_id") Long messageId) {
+        Map<String, Object> response = userMessageService.getMessage(messageId);
+        return ResponseEntity.ok(response);
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/Collections.java b/src/main/java/com/example/myproject/entity/Collections.java
new file mode 100644
index 0000000..f7a8711
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/Collections.java
@@ -0,0 +1,44 @@
+package com.example.myproject.entity;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "collections")
+public class Collections {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "collectionId")
+    private Long collectionId;
+
+    @Column(name = "user_id")
+    private Long userId;
+
+    @Column(name = "postNo")
+    private Long postNo;
+
+    // Getters and Setters
+    public Long getCollectionId() {
+        return collectionId;
+    }
+
+    public void setCollectionId(Long collectionId) {
+        this.collectionId = collectionId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public Long getPostNo() {
+        return postNo;
+    }
+
+    public void setPostNo(Long postNo) {
+        this.postNo = postNo;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/Comments.java b/src/main/java/com/example/myproject/entity/Comments.java
new file mode 100644
index 0000000..fdf89fa
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/Comments.java
@@ -0,0 +1,116 @@
+package com.example.myproject.entity;
+
+import com.fasterxml.jackson.annotation.JsonBackReference;
+import javax.persistence.*;
+import java.util.Date;
+
+@Entity
+@Table(name = "comments")
+public class Comments {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "comment_id")
+    private Long commentId;
+
+    @ManyToOne
+    @JoinColumn(name = "post_id", nullable = false)
+    @JsonBackReference
+    private Post post;
+
+    @Column(name = "content", nullable = false)
+    private String content;
+
+    @Column(name = "is_anonymous")
+    private Boolean isAnonymous;  // 是否匿名
+
+    @Column(name = "likes_count")
+    private Integer likesCount = 0;  // 点赞数
+
+    @Column(name = "reply_count")
+    private Integer replyCount = 0;  // 回复数
+
+    @Column(name = "comment_time", nullable = false)
+    private Date commentTime;  // 评论时间
+
+    @Column(name = "user_id", nullable = false)
+    private Long userId;  // 评论者的 user_id
+
+
+    @Column(name = "com_comment_id", nullable = false)
+    private Long com_comment_id;
+
+    // Getters and Setters
+
+    public Long getCommentId() {
+        return commentId;
+    }
+
+    public void setCommentId(Long commentId) {
+        this.commentId = commentId;
+    }
+
+    public Post getPost() {
+        return post;
+    }
+
+    public void setPost(Post post) {
+        this.post = post;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public Boolean getIsAnonymous() {
+        return isAnonymous;
+    }
+
+    public void setIsAnonymous(Boolean isAnonymous) {
+        this.isAnonymous = isAnonymous;
+    }
+
+    public Integer getLikesCount() {
+        return likesCount;
+    }
+
+    public void setLikesCount(Integer likesCount) {
+        this.likesCount = likesCount;
+    }
+
+    public Integer getReplyCount() {
+        return replyCount;
+    }
+
+    public void setReplyCount(Integer replyCount) {
+        this.replyCount = replyCount;
+    }
+
+    public Date getCommentTime() {
+        return commentTime;
+    }
+
+    public void setCommentTime(Date commentTime) {
+        this.commentTime = commentTime;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public Long getParentComment() {
+        return com_comment_id;
+    }
+
+    public void setParentComment(Long com_comment_id) {
+        this.com_comment_id = com_comment_id;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/DynamicComment.java b/src/main/java/com/example/myproject/entity/DynamicComment.java
new file mode 100644
index 0000000..d5c84d3
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/DynamicComment.java
@@ -0,0 +1,89 @@
+package com.example.myproject.entity;
+
+import javax.persistence.*;
+import java.util.Date;
+
+@Entity
+@Table(name = "dynamic_comment")
+public class DynamicComment {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "comment_id")
+    private Long commentId;
+
+    @Column(name = "dynamic_id")
+    private Long dynamicId;
+
+    @Column(name = "user_id")
+    private Long userId;
+
+    @Column(name = "comment_content")
+    private String commentContent;
+
+    @Column(name = "comment_time")
+    private Date commentTime;
+
+    @Column(name = "is_anonymous")
+    private Boolean isAnonymous = false;
+
+    @Column(name = "parent_comment_id")
+    private Long parentCommentId;
+
+    // Getters and Setters
+    public Long getCommentId() {
+        return commentId;
+    }
+
+    public void setCommentId(Long commentId) {
+        this.commentId = commentId;
+    }
+
+    public Long getDynamicId() {
+        return dynamicId;
+    }
+
+    public void setDynamicId(Long dynamicId) {
+        this.dynamicId = dynamicId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getCommentContent() {
+        return commentContent;
+    }
+
+    public void setCommentContent(String commentContent) {
+        this.commentContent = commentContent;
+    }
+
+    public Date getCommentTime() {
+        return commentTime;
+    }
+
+    public void setCommentTime(Date commentTime) {
+        this.commentTime = commentTime;
+    }
+
+    public Boolean getIsAnonymous() {
+        return isAnonymous;
+    }
+
+    public void setIsAnonymous(Boolean isAnonymous) {
+        this.isAnonymous = isAnonymous;
+    }
+
+    public Long getParentCommentId() {
+        return parentCommentId;
+    }
+
+    public void setParentCommentId(Long parentCommentId) {
+        this.parentCommentId = parentCommentId;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/DynamicLikes.java b/src/main/java/com/example/myproject/entity/DynamicLikes.java
new file mode 100644
index 0000000..986f903
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/DynamicLikes.java
@@ -0,0 +1,56 @@
+package com.example.myproject.entity;
+
+import javax.persistence.*;
+import java.util.Date;
+
+@Entity
+@Table(name = "dynamic_likes")
+public class DynamicLikes {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "like_id")
+    private Long likeId;
+
+    @Column(name = "dynamic_id")
+    private Long dynamicId;
+
+    @Column(name = "user_id")
+    private Long userId;
+
+    @Column(name = "like_time")
+    private Date likeTime;
+
+    // Getters and Setters
+    public Long getLikeId() {
+        return likeId;
+    }
+
+    public void setLikeId(Long likeId) {
+        this.likeId = likeId;
+    }
+
+    public Long getDynamicId() {
+        return dynamicId;
+    }
+
+    public void setDynamicId(Long dynamicId) {
+        this.dynamicId = dynamicId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public Date getLikeTime() {
+        return likeTime;
+    }
+
+    public void setLikeTime(Date likeTime) {
+        this.likeTime = likeTime;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/ExperienceHistory.java b/src/main/java/com/example/myproject/entity/ExperienceHistory.java
new file mode 100644
index 0000000..8c52f6b
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/ExperienceHistory.java
@@ -0,0 +1,67 @@
+package com.example.myproject.entity;
+
+import javax.persistence.*;
+import java.util.Date;
+
+@Entity
+@Table(name = "experience_history")
+public class ExperienceHistory {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "history_id")
+    private Long historyId;
+
+    @Column(name = "user_id", nullable = false)
+    private Long userId;
+
+    @Column(name = "experience_change", nullable = false)
+    private Integer experienceChange;  // 经验值变化量
+
+    @Column(name = "source", nullable = false)
+    private String source;  // 更新来源
+
+    @Column(name = "update_time", nullable = false)
+    private Date updateTime;  // 更新操作的时间
+
+    // Getters and Setters
+    public Long getHistoryId() {
+        return historyId;
+    }
+
+    public void setHistoryId(Long historyId) {
+        this.historyId = historyId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public Integer getExperienceChange() {
+        return experienceChange;
+    }
+
+    public void setExperienceChange(Integer experienceChange) {
+        this.experienceChange = experienceChange;
+    }
+
+    public String getSource() {
+        return source;
+    }
+
+    public void setSource(String source) {
+        this.source = source;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/FriendRelation.java b/src/main/java/com/example/myproject/entity/FriendRelation.java
new file mode 100644
index 0000000..c086001
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/FriendRelation.java
@@ -0,0 +1,56 @@
+package com.example.myproject.entity;
+
+import javax.persistence.*;
+import java.util.Date;
+
+@Entity
+@Table(name = "friend_relation")
+public class FriendRelation {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "relation_id")
+    private Long relationId;
+
+    @Column(name = "user_id")
+    private Long userId;
+
+    @Column(name = "friend_id")
+    private Long friendId;  // 好友ID
+
+    @Column(name = "create_time")
+    private Date createTime;  // 好友关系创建时间
+
+    // Getters and Setters
+    public Long getRelationId() {
+        return relationId;
+    }
+
+    public void setRelationId(Long relationId) {
+        this.relationId = relationId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public Long getFriendId() {
+        return friendId;
+    }
+
+    public void setFriendId(Long friendId) {
+        this.friendId = friendId;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/Group.java b/src/main/java/com/example/myproject/entity/Group.java
new file mode 100644
index 0000000..ea4f2c7
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/Group.java
@@ -0,0 +1,98 @@
+package com.example.myproject.entity;
+
+import javax.persistence.*;
+import java.util.Date;
+
+@Entity
+@Table(name = "group_interests")
+public class Group {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "group_id")
+    private Long groupId;
+
+    @Column(name = "group_name")
+    private String groupName;
+
+    private String description;  // 小组简介
+
+    @Column(name = "create_time")
+    private Date createTime;  // 创建时间
+
+    @Column(name = "user_id")
+    private Long userId;  // 创建该小组的用户ID
+
+    @Column(name = "member_count")
+    private Integer memberCount;  // 小组成员人数
+
+    private String category;  // 小组类别
+
+    @Column(name = "cover_image")
+    private String coverImage;  // 小组封面图片
+
+    // Getters and Setters
+    public Long getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(Long groupId) {
+        this.groupId = groupId;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public Integer getMemberCount() {
+        return memberCount;
+    }
+
+    public void setMemberCount(Integer memberCount) {
+        this.memberCount = memberCount;
+    }
+
+    public String getCategory() {
+        return category;
+    }
+
+    public void setCategory(String category) {
+        this.category = category;
+    }
+
+    public String getCoverImage() {
+        return coverImage;
+    }
+
+    public void setCoverImage(String coverImage) {
+        this.coverImage = coverImage;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/GroupComments.java b/src/main/java/com/example/myproject/entity/GroupComments.java
new file mode 100644
index 0000000..fcf4205
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/GroupComments.java
@@ -0,0 +1,77 @@
+package com.example.myproject.entity;
+
+import javax.persistence.*;
+import java.util.Date;
+
+@Entity
+@Table(name = "group_comments")
+public class GroupComments {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "comment_id")
+    private Long commentId;  // 评论ID
+
+    @Column(name = "group_post_id")
+    private Long groupPostId;
+
+    @Column(name = "user_id")
+    private Long userId;
+
+    private String content;
+
+    @Column(name = "parent_comment_id")
+    private Long parentCommentId;
+
+    @Column(name = "time")
+    private Date time;  // 评论时间
+
+    // Getters and Setters
+    public Long getCommentId() {
+        return commentId;
+    }
+
+    public void setCommentId(Long commentId) {
+        this.commentId = commentId;
+    }
+
+    public Long getGroupPostId() {
+        return groupPostId;
+    }
+
+    public void setGroupPostId(Long groupPostId) {
+        this.groupPostId = groupPostId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public Long getParentCommentId() {
+        return parentCommentId;
+    }
+
+    public void setParentCommentId(Long parentCommentId) {
+        this.parentCommentId = parentCommentId;
+    }
+
+    public Date getTime() {
+        return time;
+    }
+
+    public void setTime(Date time) {
+        this.time = time;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/GroupMembers.java b/src/main/java/com/example/myproject/entity/GroupMembers.java
new file mode 100644
index 0000000..e66e18c
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/GroupMembers.java
@@ -0,0 +1,44 @@
+package com.example.myproject.entity;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "group_members")
+public class GroupMembers {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "relation_id")
+    private Long relationId;
+
+    @Column(name = "group_id", nullable = false)
+    private Long groupId;
+
+    @Column(name = "user_id", nullable = false)
+    private Long userId;
+
+    // Getters and Setters
+    public Long getRelationId() {
+        return relationId;
+    }
+
+    public void setRelationId(Long relationId) {
+        this.relationId = relationId;
+    }
+
+    public Long getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(Long groupId) {
+        this.groupId = groupId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/GroupPost.java b/src/main/java/com/example/myproject/entity/GroupPost.java
new file mode 100644
index 0000000..89867f7
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/GroupPost.java
@@ -0,0 +1,109 @@
+package com.example.myproject.entity;
+
+import javax.persistence.*;
+import java.util.Date;
+
+@Entity
+@Table(name = "group_post")
+public class GroupPost {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "group_post_id")
+    private Long groupPostId;
+
+    @Column(name = "group_id")
+    private Long groupId;
+
+    @Column(name = "user_id")
+    private Long userId;
+
+    private String content;
+
+    private String image;
+
+    @Column(name = "like_count")
+    private Integer likeCount;
+
+    @Column(name = "comment_count")
+    private Integer commentCount;  // 帖子评论数
+
+    @Column(name = "time")
+    private Date time;  // 帖子创建时间
+
+    private String title;
+
+
+    // Getters and Setters
+    public Long getGroupPostId() {
+        return groupPostId;
+    }
+
+    public void setGroupPostId(Long groupPostId) {
+        this.groupPostId = groupPostId;
+    }
+
+    public Long getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(Long groupId) {
+        this.groupId = groupId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getImage() {
+        return image;
+    }
+
+    public void setImage(String image) {
+        this.image = image;
+    }
+
+    public Integer getLikeCount() {
+        return likeCount;
+    }
+
+    public void setLikeCount(Integer likeCount) {
+        this.likeCount = likeCount;
+    }
+
+    public Integer getCommentCount() {
+        return commentCount;
+    }
+
+    public void setCommentCount(Integer commentCount) {
+        this.commentCount = commentCount;
+    }
+
+    public Date getTime() {
+        return time;
+    }
+
+    public void setTime(Date time) {
+        this.time = time;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/Level.java b/src/main/java/com/example/myproject/entity/Level.java
new file mode 100644
index 0000000..6837ef9
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/Level.java
@@ -0,0 +1,89 @@
+package com.example.myproject.entity;
+
+
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "level")
+public class Level {
+
+    @Id
+    @Column(name = "level_id")
+    private Long levelId;  // 等级唯一标识
+
+    @Column(name = "level_name", nullable = false)
+    private String levelName;  // 等级名称
+
+    @Column(name = "required_experience", nullable = false)
+    private Long requiredExperience;  // 所需经验值
+
+    @Column(name = "required_share_ratio")
+    private Float requiredShareRatio;  // 所需分享率
+
+    @Column(name = "required_upload_gb")
+    private Float requiredUploadGb;  // 所需上传数据量
+
+    @Column(name = "required_seeding_hours")
+    private Float requiredSeedingHours;  // 所需做种时长
+
+    @Column(name = "permissions")
+    private String permissions;  // 拥有的权限
+
+    // Getters and Setters
+    public Long getLevelId() {
+        return levelId;
+    }
+
+    public void setLevelId(Long levelId) {
+        this.levelId = levelId;
+    }
+
+    public String getLevelName() {
+        return levelName;
+    }
+
+    public void setLevelName(String levelName) {
+        this.levelName = levelName;
+    }
+
+    public Long getRequiredExperience() {
+        return requiredExperience;
+    }
+
+    public void setRequiredExperience(Long requiredExperience) {
+        this.requiredExperience = requiredExperience;
+    }
+
+    public Float getRequiredShareRatio() {
+        return requiredShareRatio;
+    }
+
+    public void setRequiredShareRatio(Float requiredShareRatio) {
+        this.requiredShareRatio = requiredShareRatio;
+    }
+
+    public Float getRequiredUploadGb() {
+        return requiredUploadGb;
+    }
+
+    public void setRequiredUploadGb(Float requiredUploadGb) {
+        this.requiredUploadGb = requiredUploadGb;
+    }
+
+    public Float getRequiredSeedingHours() {
+        return requiredSeedingHours;
+    }
+
+    public void setRequiredSeedingHours(Float requiredSeedingHours) {
+        this.requiredSeedingHours = requiredSeedingHours;
+    }
+
+    public String getPermissions() {
+        return permissions;
+    }
+
+    public void setPermissions(String permissions) {
+        this.permissions = permissions;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/Likes.java b/src/main/java/com/example/myproject/entity/Likes.java
new file mode 100644
index 0000000..7a3dcda
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/Likes.java
@@ -0,0 +1,44 @@
+package com.example.myproject.entity;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "likes")
+public class Likes {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)  // 使用自增主键
+    @Column(name = "likeId")
+    private Long likeId;
+
+    @Column(name = "user_id")
+    private Long userId;
+
+    @Column(name = "postNo")
+    private Long postNo;
+
+    // Getters and Setters
+    public Long getLikeId() {
+        return likeId;
+    }
+
+    public void setLikeId(Long likeId) {
+        this.likeId = likeId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public Long getPostNo() {
+        return postNo;
+    }
+
+    public void setPostNo(Long postNo) {
+        this.postNo = postNo;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/Post.java b/src/main/java/com/example/myproject/entity/Post.java
new file mode 100644
index 0000000..bb94aac
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/Post.java
@@ -0,0 +1,116 @@
+package com.example.myproject.entity;
+
+import com.fasterxml.jackson.annotation.JsonManagedReference;
+
+import javax.persistence.*;
+
+import java.util.Date;
+import java.util.List;
+
+@Entity
+@Table(name = "post")
+public class Post {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "postNo")
+    private Long postNo;
+
+
+    @Column(name = "userId")
+    private Long user_id;
+
+    @Column(name = "postContent")
+    private String postContent;
+
+    @Column(name = "imageUrl")
+    private String imageUrl;
+
+    @Column(name = "postTime")
+    private Date postTime;
+
+    @Column(name = "postLikeNum")
+    private Integer postLikeNum;
+
+    @Column(name = "postCollectNum")
+    private Integer postCollectNum;
+
+    @Column(name = "title")
+    private String title;
+
+    @Column(name = "postType")
+    private String postType;
+
+    // Getters and Setters
+    public Long getPostNo() {
+        return postNo;
+    }
+
+    public void setPostNo(Long postNo) {
+        this.postNo = postNo;
+    }
+
+    public Long getUser_id() {
+        return user_id;
+    }
+
+    public void setUser_id(Long user) {
+        this.user_id = user;
+    }
+
+    public String getPostContent() {
+        return postContent;
+    }
+
+    public void setPostContent(String postContent) {
+        this.postContent = postContent;
+    }
+
+    public String getImageUrl() {
+        return imageUrl;
+    }
+
+    public void setImageUrl(String imgUrl) {
+        this.imageUrl = imgUrl;
+    }
+
+    public Date getPostTime() {
+        return postTime;
+    }
+
+    public void setPostTime(Date postTime) {
+        this.postTime = postTime;
+    }
+
+    public Integer getPostLikeNum() {
+        return postLikeNum;
+    }
+
+    public void setPostLikeNum(Integer postLikeNum) {
+        this.postLikeNum = postLikeNum;
+    }
+
+    public Integer getPostCollectNum() {
+        return postCollectNum;
+    }
+
+    public void setPostCollectNum(Integer postCollectNum) {
+        this.postCollectNum = postCollectNum;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getPostType() {
+        return postType;
+    }
+
+    public void setPostType(String postType) {
+        this.postType = postType;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/Task.java b/src/main/java/com/example/myproject/entity/Task.java
new file mode 100644
index 0000000..15796a1
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/Task.java
@@ -0,0 +1,66 @@
+package com.example.myproject.entity;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "tasks")
+public class Task {
+
+    @Id
+    @Column(name = "task_id")
+    private String taskId;
+
+    @Column(name = "title", nullable = false)
+    private String title;
+
+    @Column(name = "description", nullable = false)
+    private String description;
+
+    @Column(name = "reward_experience", nullable = false)
+    private int rewardExperience;  // 任务奖励的经验
+
+    @Column(name = "reward_points", nullable = false)
+    private int rewardPoints;  // 任务奖励的积分
+
+
+    public String getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(String taskId) {
+        this.taskId = taskId;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+
+    public int getRewardExperience() {
+        return rewardExperience;
+    }
+
+    public void setRewardExperience(int rewardExperience) {
+        this.rewardExperience = rewardExperience;
+    }
+
+    public int getRewardPoints() {
+        return rewardPoints;
+    }
+
+    public void setRewardPoints(int rewardPoints) {
+        this.rewardPoints = rewardPoints;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/UserDynamic.java b/src/main/java/com/example/myproject/entity/UserDynamic.java
new file mode 100644
index 0000000..a04d3ac
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/UserDynamic.java
@@ -0,0 +1,100 @@
+package com.example.myproject.entity;
+
+import javax.persistence.*;
+import java.util.Date;
+
+@Entity
+@Table(name = "user_dynamic")
+public class UserDynamic {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "dynamic_id")
+    private Long dynamicId;
+
+    @Column(name = "user_id")
+    private Long userId;  // 发布动态的用户ID
+
+    @Column(name = "title")
+    private String title;  // 动态标题
+
+    @Column(name = "content")
+    private String content;  // 动态内容
+
+    @Column(name = "image_url")
+    private String imageUrl;  // 图片URL
+
+    @Column(name = "time")
+    private Date time;  // 发布动态的时间
+
+    @Column(name = "likes_count")
+    private int likesCount = 0;  // 点赞数
+
+    @Column(name = "comments_count")
+    private int commentsCount = 0;  // 评论数
+
+
+    public Long getDynamicId() {
+        return dynamicId;
+    }
+
+    public void setDynamicId(Long dynamicId) {
+        this.dynamicId = dynamicId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getImageUrl() {
+        return imageUrl;
+    }
+
+    public void setImageUrl(String imageUrl) {
+        this.imageUrl = imageUrl;
+    }
+
+    public Date getTime() {
+        return time;
+    }
+
+    public void setTime(Date time) {
+        this.time = time;
+    }
+
+    public int getLikesCount() {
+        return likesCount;
+    }
+
+    public void setLikesCount(int likesCount) {
+        this.likesCount = likesCount;
+    }
+
+    public int getCommentsCount() {
+        return commentsCount;
+    }
+
+    public void setCommentsCount(int commentsCount) {
+        this.commentsCount = commentsCount;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/UserFollow.java b/src/main/java/com/example/myproject/entity/UserFollow.java
new file mode 100644
index 0000000..bfc14f7
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/UserFollow.java
@@ -0,0 +1,56 @@
+package com.example.myproject.entity;
+
+import javax.persistence.*;
+import java.util.Date;
+
+@Entity
+@Table(name = "follow")
+public class UserFollow {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "record_id")
+    private Long recordId;
+
+    @Column(name = "follower_id")
+    private Long followerId;
+
+    @Column(name = "followed_id")
+    private Long followedId;
+
+    @Column(name = "follow_time")
+    private Date followTime;
+
+    // Getters and Setters
+    public Long getId() {
+        return recordId;
+    }
+
+    public void setId(Long recordId) {
+        this.recordId = recordId;
+    }
+
+    public Long getFollowerId() {
+        return followerId;
+    }
+
+    public void setFollowerId(Long followerId) {
+        this.followerId = followerId;
+    }
+
+    public Long getFollowedId() {
+        return followedId;
+    }
+
+    public void setFollowedId(Long followedId) {
+        this.followedId = followedId;
+    }
+
+    public Date getFollowTime() {
+        return followTime;
+    }
+
+    public void setFollowTime(Date followTime) {
+        this.followTime = followTime;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/UserInviteCode.java b/src/main/java/com/example/myproject/entity/UserInviteCode.java
new file mode 100644
index 0000000..8343c7e
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/UserInviteCode.java
@@ -0,0 +1,67 @@
+package com.example.myproject.entity;
+
+import javax.persistence.*;
+import java.time.LocalDateTime;
+
+@Entity
+@Table(name = "user_invite_code")
+public class UserInviteCode {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "invite_id")
+    private Long inviteId;
+
+    @Column(name = "user_id", nullable = false)
+    private Long userId;
+
+    @Column(name = "invite_code", nullable = false, unique = true)
+    private String inviteCode;
+
+    @Column(name = "is_used", nullable = false)
+    private Boolean isUsed = false;
+
+    @Column(name = "created_at", nullable = false)
+    private LocalDateTime createdAt;
+
+    // Getters and Setters
+    public Long getInviteId() {
+        return inviteId;
+    }
+
+    public void setInviteId(Long inviteId) {
+        this.inviteId = inviteId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getInviteCode() {
+        return inviteCode;
+    }
+
+    public void setInviteCode(String inviteCode) {
+        this.inviteCode = inviteCode;
+    }
+
+    public Boolean getIsUsed() {
+        return isUsed;
+    }
+
+    public void setIsUsed(Boolean isUsed) {
+        this.isUsed = isUsed;
+    }
+
+    public LocalDateTime getCreatedAt() {
+        return createdAt;
+    }
+
+    public void setCreatedAt(LocalDateTime createdAt) {
+        this.createdAt = createdAt;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/UserMessages.java b/src/main/java/com/example/myproject/entity/UserMessages.java
new file mode 100644
index 0000000..ee7e43e
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/UserMessages.java
@@ -0,0 +1,67 @@
+package com.example.myproject.entity;
+
+import javax.persistence.*;
+import java.util.Date;
+
+@Entity
+@Table(name = "user_messages")
+public class UserMessages {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "message_id")
+    private Long messageId;
+
+    @Column(name = "sender_id")
+    private Long senderId;
+
+    @Column(name = "receiver_id")
+    private Long receiverId;
+
+    @Column(name = "content")
+    private String content;
+
+    @Column(name = "time")
+    private Date time;
+
+
+    public Long getMessageId() {
+        return messageId;
+    }
+
+    public void setMessageId(Long messageId) {
+        this.messageId = messageId;
+    }
+
+    public Long getSenderId() {
+        return senderId;
+    }
+
+    public void setSenderId(Long senderId) {
+        this.senderId = senderId;
+    }
+
+    public Long getReceiverId() {
+        return receiverId;
+    }
+
+    public void setReceiverId(Long receiverId) {
+        this.receiverId = receiverId;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public Date getTime() {
+        return time;
+    }
+
+    public void setTime(Date time) {
+        this.time = time;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/UserTaskStatus.java b/src/main/java/com/example/myproject/entity/UserTaskStatus.java
new file mode 100644
index 0000000..a66839d
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/UserTaskStatus.java
@@ -0,0 +1,98 @@
+package com.example.myproject.entity;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "user_task_status")
+public class UserTaskStatus {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "status_id")
+    private Long statusId;
+
+    @Column(name = "user_id", nullable = false)
+    private Long userId;
+
+    @Column(name = "task_id", nullable = false)
+    private String taskId;
+
+    @Column(name = "current_progress", nullable = false)
+    private Float currentProgress;
+
+    @Column(name = "current_experience", nullable = false)
+    private Integer currentExperience;
+
+    @Column(name = "current_points", nullable = false)
+    private Integer currentPoints;
+
+    @Column(name = "status", nullable = false)
+    private String status;
+
+    @Column(name = "is_reward_claimed", nullable = false)
+    private Boolean isRewardClaimed = false;
+
+    public Long getStatusId() {
+        return statusId;
+    }
+
+    public void setStatusId(Long statusId) {
+        this.statusId = statusId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(String taskId) {
+        this.taskId = taskId;
+    }
+
+    public Float getCurrentProgress() {
+        return currentProgress;
+    }
+
+    public void setCurrentProgress(Float currentProgress) {
+        this.currentProgress = currentProgress;
+    }
+
+    public Integer getCurrentExperience() {
+        return currentExperience;
+    }
+
+    public void setCurrentExperience(Integer currentExperience) {
+        this.currentExperience = currentExperience;
+    }
+
+    public Integer getCurrentPoints() {
+        return currentPoints;
+    }
+
+    public void setCurrentPoints(Integer currentPoints) {
+        this.currentPoints = currentPoints;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public Boolean getIsRewardClaimed() {
+        return isRewardClaimed;
+    }
+
+    public void setIsRewardClaimed(Boolean isRewardClaimed) {
+        this.isRewardClaimed = isRewardClaimed;
+    }
+}
diff --git a/src/main/java/com/example/myproject/entity/Users.java b/src/main/java/com/example/myproject/entity/Users.java
new file mode 100644
index 0000000..ebe793f
--- /dev/null
+++ b/src/main/java/com/example/myproject/entity/Users.java
@@ -0,0 +1,246 @@
+package com.example.myproject.entity;
+
+import javax.persistence.*;
+import java.util.Date;
+
+@Entity
+@Table(name = "user")
+public class Users {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "user_id")
+    private Long userId;
+
+    @Column(name = "username", nullable = false,unique = true)
+    private String username;
+
+    @Column(name = "avatar_url", nullable = true)
+    private String avatarUrl;
+
+    @Column(name = "email", nullable = false)
+    private String email;
+
+    @Column(name = "password", nullable = false)
+    private String password;
+
+    @Column(name = "role", nullable = false)
+    private String role;
+
+    @Column(name = "invite_count")
+    private Integer inviteCount;
+
+    @Column(name = "level", nullable = false)
+    private Long level;
+
+    @Column(name = "upload_count")
+    private Float uploadCount;
+
+    @Column(name = "download_count")
+    private Float downloadCount;
+
+    @Column(name = "share_rate")
+    private Float shareRate;
+
+    @Column(name = "registration_date", nullable = false)
+    private Date registrationDate;
+
+    @Column(name = "last_login_time")
+    private Date lastLoginTime;
+
+    @Column(name = "user_points")
+    private Integer userPoints;
+
+    @Column(name = "is_promo")
+    private Boolean isPromo;
+
+    @Column(name = "current_experience", nullable = false)
+    private Integer currentExperience;  // 当前经验值
+
+    @Column(name = "current_seeding_hours", nullable = false)
+    private Float currentSeedingHours;  // 当前做种时长
+
+
+    @Column(name = "gender", nullable = true)
+    private String gender;  // 性别
+
+    @Column(name = "description", nullable = true)
+    private String description;  // 个人描述
+
+    @Column(name = "hobbies", nullable = true)
+    private String hobbies;
+
+    @Column(name = "registration_time", nullable = false, updatable = false)
+    @Temporal(TemporalType.TIMESTAMP)
+    private Date registrationTime;
+
+    // Getters and Setters
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getAvatarUrl() {
+        return avatarUrl;
+    }
+
+    public void setAvatarUrl(String avatarUrl) {
+        this.avatarUrl = avatarUrl;
+    }
+
+    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;
+    }
+
+    public String getRole() {
+        return role;
+    }
+
+    public void setRole(String role) {
+        this.role = role;
+    }
+
+    public Integer getInviteCount() {
+        return inviteCount;
+    }
+
+    public void setInviteCount(Integer inviteCount) {
+        this.inviteCount = inviteCount;
+    }
+
+    public Long getLevel() {
+        return level;
+    }
+
+    public void setLevel(Long level) {
+        this.level = level;
+    }
+
+    public Float getUploadCount() {
+        return uploadCount;
+    }
+
+    public void setUploadCount(Float uploadCount) {
+        this.uploadCount = uploadCount;
+    }
+
+    public Float getDownloadCount() {
+        return downloadCount;
+    }
+
+    public void setDownloadCount(Float downloadCount) {
+        this.downloadCount = downloadCount;
+    }
+
+    public Float getShareRate() {
+        return shareRate;
+    }
+
+    public void setShareRate(Float shareRate) {
+        this.shareRate = shareRate;
+    }
+
+    public Date getRegistrationDate() {
+        return registrationDate;
+    }
+
+    public void setRegistrationDate(Date registrationDate) {
+        this.registrationDate = registrationDate;
+    }
+
+    public Date getLastLoginTime() {
+        return lastLoginTime;
+    }
+
+    public void setLastLoginTime(Date lastLoginTime) {
+        this.lastLoginTime = lastLoginTime;
+    }
+
+    public Integer getUserPoints() {
+        return userPoints;
+    }
+
+    public void setUserPoints(Integer userPoints) {
+        this.userPoints = userPoints;
+    }
+
+    public Boolean getIsPromo() {
+        return isPromo;
+    }
+
+    public void setIsPromo(Boolean isPromo) {
+        this.isPromo = isPromo;
+    }
+
+    public Integer getCurrentExperience() {
+        return currentExperience;
+    }
+
+    public void setCurrentExperience(Integer currentExperience) {
+        this.currentExperience = currentExperience;
+    }
+
+    public Float getCurrentSeedingHours() {
+        return currentSeedingHours;
+    }
+
+    public void setCurrentSeedingHours(Float currentSeedingHours) {
+        this.currentSeedingHours = currentSeedingHours;
+    }
+
+    public String getGender() {
+        return gender;
+    }
+
+    public void setGender(String gender) {
+        this.gender = gender;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getHobbies() {
+        return hobbies;
+    }
+
+    public void setHobbies(String hobbies) {
+        this.hobbies = hobbies;
+    }
+
+    public Date getRegistrationTime() {
+        return registrationTime;
+    }
+
+    public void setRegistrationTime(Date registrationTime) {
+        this.registrationTime = registrationTime;
+    }
+
+}
diff --git a/src/main/java/com/example/myproject/repository/CollectionsRepository.java b/src/main/java/com/example/myproject/repository/CollectionsRepository.java
new file mode 100644
index 0000000..4b192bd
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/CollectionsRepository.java
@@ -0,0 +1,16 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.Collections;
+import jakarta.transaction.Transactional;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface CollectionsRepository extends JpaRepository<Collections, Long> {
+    @Modifying
+    @Transactional
+    @Query("DELETE FROM Collections l WHERE l.userId = :userId AND l.postNo = :postNo")
+    void deleteLikeByUserIdAndPostNo(Long userId, Long postNo);
+}
diff --git a/src/main/java/com/example/myproject/repository/CommentRepository.java b/src/main/java/com/example/myproject/repository/CommentRepository.java
new file mode 100644
index 0000000..4f66309
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/CommentRepository.java
@@ -0,0 +1,9 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.Comments;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+
+public interface CommentRepository extends JpaRepository<Comments, Long> {
+
+}
diff --git a/src/main/java/com/example/myproject/repository/DynamicCommentRepository.java b/src/main/java/com/example/myproject/repository/DynamicCommentRepository.java
new file mode 100644
index 0000000..f586b1d
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/DynamicCommentRepository.java
@@ -0,0 +1,11 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.DynamicComment;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+
+public interface DynamicCommentRepository extends JpaRepository<DynamicComment, Long> {
+
+    List<DynamicComment> findByDynamicId(Long dynamicId);
+}
diff --git a/src/main/java/com/example/myproject/repository/DynamicLikesRepository.java b/src/main/java/com/example/myproject/repository/DynamicLikesRepository.java
new file mode 100644
index 0000000..1cec003
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/DynamicLikesRepository.java
@@ -0,0 +1,12 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.DynamicLikes;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+
+public interface DynamicLikesRepository extends JpaRepository<DynamicLikes, Long> {
+
+    List<DynamicLikes> findByDynamicId(Long dynamicId);
+    DynamicLikes findByUserIdAndDynamicId(Long userId, Long dynamicId);
+}
diff --git a/src/main/java/com/example/myproject/repository/ExperienceHistoryRepository.java b/src/main/java/com/example/myproject/repository/ExperienceHistoryRepository.java
new file mode 100644
index 0000000..76928e5
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/ExperienceHistoryRepository.java
@@ -0,0 +1,8 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.ExperienceHistory;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface ExperienceHistoryRepository extends JpaRepository<ExperienceHistory, Long> {
+
+}
diff --git a/src/main/java/com/example/myproject/repository/FriendRelationRepository.java b/src/main/java/com/example/myproject/repository/FriendRelationRepository.java
new file mode 100644
index 0000000..8fcf94e
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/FriendRelationRepository.java
@@ -0,0 +1,11 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.FriendRelation;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+
+public interface FriendRelationRepository extends JpaRepository<FriendRelation, Long> {
+    // 查找当前用户的所有好友ID
+    List<FriendRelation> findByUserId(Long userId);
+}
diff --git a/src/main/java/com/example/myproject/repository/GroupCommentsRepository.java b/src/main/java/com/example/myproject/repository/GroupCommentsRepository.java
new file mode 100644
index 0000000..47df198
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/GroupCommentsRepository.java
@@ -0,0 +1,10 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.GroupComments;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface GroupCommentsRepository extends JpaRepository<GroupComments, Long> {
+
+}
diff --git a/src/main/java/com/example/myproject/repository/GroupMembersRepository.java b/src/main/java/com/example/myproject/repository/GroupMembersRepository.java
new file mode 100644
index 0000000..2d31462
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/GroupMembersRepository.java
@@ -0,0 +1,20 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.GroupMembers;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface GroupMembersRepository extends JpaRepository<GroupMembers, Long> {
+
+    // 检查用户是否已经是该小组的成员
+    boolean existsByGroupIdAndUserId(Long groupId, Long userId);
+
+    // 删除用户和小组的关联记录
+    void deleteByGroupIdAndUserId(Long groupId, Long userId);
+
+    // 通过 groupId 获取所有成员的 userId
+    List<GroupMembers> findByGroupId(Long groupId);
+}
diff --git a/src/main/java/com/example/myproject/repository/GroupPostRepository.java b/src/main/java/com/example/myproject/repository/GroupPostRepository.java
new file mode 100644
index 0000000..9f5a348
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/GroupPostRepository.java
@@ -0,0 +1,14 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.GroupPost;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface GroupPostRepository extends JpaRepository<GroupPost, Long> {
+
+    List<GroupPost> findByGroupId(Long groupId);
+
+}
diff --git a/src/main/java/com/example/myproject/repository/GroupRepository.java b/src/main/java/com/example/myproject/repository/GroupRepository.java
new file mode 100644
index 0000000..7280e50
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/GroupRepository.java
@@ -0,0 +1,21 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.Group;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface GroupRepository extends JpaRepository<Group, Long> {
+
+    // 模糊搜索小组名称并按类别筛选
+    @Query("SELECT g FROM Group g WHERE g.groupName LIKE %:name% AND (:category IS NULL OR g.category = :category)")
+    Page<Group> searchGroups(@Param("name") String name, @Param("category") String category, Pageable pageable);
+
+    // 根据类别筛选小组
+    @Query("SELECT g FROM Group g WHERE (:category IS NULL OR g.category = :category)")
+    Page<Group> searchWithFilters(@Param("category") String category, Pageable pageable);
+}
diff --git a/src/main/java/com/example/myproject/repository/LevelRepository.java b/src/main/java/com/example/myproject/repository/LevelRepository.java
new file mode 100644
index 0000000..12e8269
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/LevelRepository.java
@@ -0,0 +1,10 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.Level;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface LevelRepository extends JpaRepository<Level, Long> {
+
+}
diff --git a/src/main/java/com/example/myproject/repository/LikesRepository.java b/src/main/java/com/example/myproject/repository/LikesRepository.java
new file mode 100644
index 0000000..79146c5
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/LikesRepository.java
@@ -0,0 +1,16 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.Likes;
+import jakarta.transaction.Transactional;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface LikesRepository extends JpaRepository<Likes, Long> {
+    @Modifying
+    @Transactional
+    @Query("DELETE FROM Likes l WHERE l.userId = :userId AND l.postNo = :postNo")
+    void deleteLikeByUserIdAndPostNo(Long userId, Long postNo);
+}
diff --git a/src/main/java/com/example/myproject/repository/PostRepository.java b/src/main/java/com/example/myproject/repository/PostRepository.java
new file mode 100644
index 0000000..faf2cb7
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/PostRepository.java
@@ -0,0 +1,12 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.Post;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.Optional;
+
+public interface PostRepository extends JpaRepository<Post, Long> {
+    // 根据 postNo 查找帖子
+    Optional<Post> findByPostNo(Long postNo);
+
+}
diff --git a/src/main/java/com/example/myproject/repository/TaskRepository.java b/src/main/java/com/example/myproject/repository/TaskRepository.java
new file mode 100644
index 0000000..25e1b66
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/TaskRepository.java
@@ -0,0 +1,7 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.Task;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface TaskRepository extends JpaRepository<Task, String> {
+}
diff --git a/src/main/java/com/example/myproject/repository/UserDynamicRepository.java b/src/main/java/com/example/myproject/repository/UserDynamicRepository.java
new file mode 100644
index 0000000..575ae1f
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/UserDynamicRepository.java
@@ -0,0 +1,14 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.UserDynamic;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface UserDynamicRepository extends JpaRepository<UserDynamic, Long> {
+
+    List<UserDynamic> findByUserId(Long userId);
+
+}
diff --git a/src/main/java/com/example/myproject/repository/UserFollowRepository.java b/src/main/java/com/example/myproject/repository/UserFollowRepository.java
new file mode 100644
index 0000000..542d07f
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/UserFollowRepository.java
@@ -0,0 +1,16 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.UserFollow;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface UserFollowRepository extends JpaRepository<UserFollow, Long> {
+
+    // 查询是否存在某个用户的关注记录
+    UserFollow findByFollowerIdAndFollowedId(Long followerId, Long followedId);
+    List<UserFollow> findByFollowedId(Long followedId);
+    List<UserFollow> findByFollowerId(Long followerId);
+}
diff --git a/src/main/java/com/example/myproject/repository/UserInviteCodeRepository.java b/src/main/java/com/example/myproject/repository/UserInviteCodeRepository.java
new file mode 100644
index 0000000..02fa390
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/UserInviteCodeRepository.java
@@ -0,0 +1,19 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.UserInviteCode;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface UserInviteCodeRepository extends JpaRepository<UserInviteCode, Long> {
+
+    // 查找某个用户的所有邀请码
+    List<UserInviteCode> findByUserId(Long userId);
+
+    // 查找某个邀请码是否已经被使用
+    Optional<UserInviteCode> findByInviteCode(String inviteCode);
+
+    // 查找某个用户未使用的邀请码
+    List<UserInviteCode> findByUserIdAndIsUsedFalse(Long userId);
+}
diff --git a/src/main/java/com/example/myproject/repository/UserMessagesRepository.java b/src/main/java/com/example/myproject/repository/UserMessagesRepository.java
new file mode 100644
index 0000000..bad3715
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/UserMessagesRepository.java
@@ -0,0 +1,14 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.UserMessages;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface UserMessagesRepository extends JpaRepository<UserMessages, Long> {
+
+    // 查询当前用户的所有消息
+    List<UserMessages> findBySenderIdOrReceiverId(Long senderId, Long receiverId);
+}
diff --git a/src/main/java/com/example/myproject/repository/UserRepository.java b/src/main/java/com/example/myproject/repository/UserRepository.java
new file mode 100644
index 0000000..6927c5f
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/UserRepository.java
@@ -0,0 +1,10 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.Users;
+import org.springframework.data.jpa.repository.JpaRepository;
+import java.util.Optional;
+
+public interface UserRepository extends JpaRepository<Users, Long> {
+    Optional<Users> findByEmail(String email);
+    Optional<Users> findByUsername(String username);
+}
diff --git a/src/main/java/com/example/myproject/repository/UserTaskStatusRepository.java b/src/main/java/com/example/myproject/repository/UserTaskStatusRepository.java
new file mode 100644
index 0000000..0153946
--- /dev/null
+++ b/src/main/java/com/example/myproject/repository/UserTaskStatusRepository.java
@@ -0,0 +1,13 @@
+package com.example.myproject.repository;
+
+import com.example.myproject.entity.UserTaskStatus;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface UserTaskStatusRepository extends JpaRepository<UserTaskStatus, Long> {
+    Optional<UserTaskStatus> findByUserIdAndTaskId(Long userId, String taskId);
+    List<UserTaskStatus> findByUserIdAndStatus(Long userId, String status);
+    Optional<UserTaskStatus> findFirstByUserIdAndStatus(Long userId, String status);
+}
diff --git a/src/main/java/com/example/myproject/service/CommentService.java b/src/main/java/com/example/myproject/service/CommentService.java
new file mode 100644
index 0000000..c102ca2
--- /dev/null
+++ b/src/main/java/com/example/myproject/service/CommentService.java
@@ -0,0 +1,125 @@
+package com.example.myproject.service;
+
+import com.example.myproject.entity.Comments;
+import com.example.myproject.entity.Post;
+import com.example.myproject.entity.Users;
+import com.example.myproject.repository.CommentRepository;
+import com.example.myproject.repository.PostRepository;
+import com.example.myproject.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+public class CommentService {
+
+    @Autowired
+    private CommentRepository commentRepository;
+
+    @Autowired
+    private PostRepository postRepository;
+
+    @Autowired
+    private UserRepository userRepository;
+
+    // 添加评论
+    public void addComment(Long postId, Comments comment) {
+        try {
+            // 查找帖子
+            Post post = postRepository.findById(postId).orElseThrow(() -> {
+                throw new RuntimeException("Post with ID " + postId + " not found");
+            });
+
+            // 查找用户
+            Users user = userRepository.findById(comment.getUserId()).orElseThrow(() -> {
+                throw new RuntimeException("User with ID " + comment.getUserId() + " not found");
+            });
+
+            // 设置评论的相关属性
+            comment.setPost(post);
+            comment.setUserId(user.getUserId());
+            comment.setCommentTime(new java.util.Date());
+
+            if (comment.getParentComment() != null && comment.getParentComment() != 0) {
+                // 查找父评论
+                Comments parentComment = commentRepository.findById(comment.getParentComment())
+                        .orElseThrow(() -> new RuntimeException("Parent comment with ID " + comment.getParentComment() + " not found"));
+                comment.setParentComment(parentComment.getCommentId());  // 设置父评论 ID
+            } else {
+                comment.setParentComment(0L);  // 设置为 0，表示没有父评论
+            }
+
+            // 保存评论
+            commentRepository.save(comment);
+        } catch (Exception e) {
+            // 捕获任何异常并打印堆栈信息
+            e.printStackTrace();
+            throw new RuntimeException("An error occurred while adding the comment: " + e.getMessage());
+        }
+    }
+
+    // 获取指定帖子的所有评论
+    public List<Map<String, Object>> getCommentsByPostId(Long postId) {
+        List<Comments> comments = commentRepository.findAll()
+                .stream()
+                .filter(comment -> comment.getPost().getPostNo().equals(postId))  // 通过 post 的 postNo 过滤评论
+                .collect(Collectors.toList());
+
+        if (comments.isEmpty()) {
+            return new ArrayList<>();
+        }
+
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (Comments comment : comments) {
+            Map<String, Object> commentData = new LinkedHashMap<>();
+            commentData.put("commentId", comment.getCommentId());
+            commentData.put("post_id", comment.getPost().getPostNo());
+            commentData.put("userId", comment.getUserId());
+
+            Users user = userRepository.findById(comment.getUserId()).orElse(null);
+            commentData.put("nickname", user != null ? user.getUsername() : null);
+            commentData.put("avatar_url", user != null ? user.getAvatarUrl() : null);
+
+            commentData.put("content", comment.getContent());
+            commentData.put("isAnonymous", comment.getIsAnonymous());
+            commentData.put("likesCount", comment.getLikesCount());
+            commentData.put("replyCount", comment.getReplyCount());
+            commentData.put("commentTime", comment.getCommentTime());
+            commentData.put("parentComment", comment.getParentComment());
+
+            Map<String, Object> parentCommentData = getParentCommentData(comment.getParentComment());
+            commentData.put("parentCommentData", parentCommentData);
+
+            result.add(commentData);
+        }
+
+        return result;
+    }
+
+    // 递归查找父评论的内容
+    private Map<String, Object> getParentCommentData(Long parentCommentId) {
+        Map<String, Object> parentCommentData = new LinkedHashMap<>();
+        if (parentCommentId != null && parentCommentId != 0) {
+            // 查找父评论
+            Comments parentComment = commentRepository.findById(parentCommentId).orElse(null);
+            if (parentComment != null) {
+                parentCommentData.put("commentId", parentComment.getCommentId());
+                parentCommentData.put("content", parentComment.getContent());
+                parentCommentData.put("userId", parentComment.getUserId());
+
+                Users user = userRepository.findById(parentComment.getUserId()).orElse(null);
+                parentCommentData.put("nickname", user != null ? user.getUsername() : null);
+                parentCommentData.put("avatar_url", user != null ? user.getAvatarUrl() : null);
+
+                Map<String, Object> grandParentData = getParentCommentData(parentComment.getParentComment());
+                parentCommentData.put("parentCommentData", grandParentData);
+            }
+        }
+        return parentCommentData;
+    }
+}
diff --git a/src/main/java/com/example/myproject/service/DynamicService.java b/src/main/java/com/example/myproject/service/DynamicService.java
new file mode 100644
index 0000000..853604d
--- /dev/null
+++ b/src/main/java/com/example/myproject/service/DynamicService.java
@@ -0,0 +1,275 @@
+package com.example.myproject.service;
+
+import com.example.myproject.entity.*;
+import com.example.myproject.repository.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.*;
+
+@Service
+public class DynamicService {
+
+    @Autowired
+    private UserDynamicRepository userDynamicRepository;
+
+    @Autowired
+    private UserRepository userRepository;
+
+    @Autowired
+    private DynamicCommentRepository dynamicCommentRepository;
+
+    @Autowired
+    private DynamicLikesRepository dynamicLikesRepository;
+
+    @Autowired
+    private FriendRelationRepository friendRelationRepository;
+
+    private static final String IMAGE_DIR = "uploads/post/";
+
+    // 创建好友动态
+    public Map<String, Object> createDynamic(Long userId, String title, String content, MultipartFile[] imageFiles) {
+        // 查找用户信息
+        Users user = userRepository.findById(userId)
+                .orElseThrow(() -> new RuntimeException("User not found"));
+
+        // 创建新的动态
+        UserDynamic userDynamic = new UserDynamic();
+        userDynamic.setUserId(userId);
+        userDynamic.setTitle(title != null ? title : "默认标题");
+        userDynamic.setContent(content);
+        userDynamic.setTime(new Date());
+        userDynamic.setLikesCount(0);
+        userDynamic.setCommentsCount(0);
+
+        // 处理图片上传
+        StringBuilder imageUrlsBuilder = new StringBuilder();
+        if (imageFiles != null && imageFiles.length > 0) {
+            for (int i = 0; i < imageFiles.length; i++) {
+                if (i > 0) {
+                    imageUrlsBuilder.append(",");
+                }
+                try {
+                    String imageUrl = saveImage(imageFiles[i]);
+                    imageUrlsBuilder.append(imageUrl);
+                } catch (IOException e) {
+                    throw new RuntimeException("Image upload failed: " + e.getMessage());
+                }
+            }
+        }
+
+        // 将多个图片 URL 拼接
+        userDynamic.setImageUrl(imageUrlsBuilder.toString());
+
+        // 保存数据库
+        UserDynamic savedUserDynamic = userDynamicRepository.save(userDynamic);
+
+        // 返回结果
+        Map<String, Object> response = new HashMap<>();
+        response.put("dynamicId", savedUserDynamic.getDynamicId());
+        response.put("message", "动态创建成功");
+        return response;
+    }
+
+    // 保存图片并返回图片的 URL
+    public String saveImage(MultipartFile imageFile) throws IOException {
+        String fileName = imageFile.getOriginalFilename();
+        Path path = Paths.get(IMAGE_DIR + fileName);
+        Files.createDirectories(path.getParent());
+        Files.write(path, imageFile.getBytes());
+        return "/images/" + fileName;
+    }
+
+    // 删除动态
+    public void deleteDynamic(Long dynamicId) {
+        if (userDynamicRepository.existsById(dynamicId)) {
+            userDynamicRepository.deleteById(dynamicId);
+        } else {
+            throw new RuntimeException("Dynamic with id " + dynamicId + " not found");
+        }
+    }
+
+    //好友动态评论
+    public Map<String, Object> addComment(Long userId, Long dynamicId, String commentContent) {
+        Users user = userRepository.findById(userId)
+                .orElseThrow(() -> new RuntimeException("User not found"));
+
+        UserDynamic dynamic = userDynamicRepository.findById(dynamicId)
+                .orElseThrow(() -> new RuntimeException("Dynamic not found"));
+
+        DynamicComment comment = new DynamicComment();
+        comment.setDynamicId(dynamicId);
+        comment.setUserId(userId);
+        comment.setCommentContent(commentContent);
+        comment.setCommentTime(new Date());
+
+        // 保存评论
+        DynamicComment savedComment = dynamicCommentRepository.save(comment);
+
+        // 返回成功消息
+        Map<String, Object> response = new HashMap<>();
+        response.put("comment_id", savedComment.getCommentId());
+        response.put("message", "评论成功");
+        return response;
+    }
+
+    //返回某个好友的所有动态
+    public Map<String, Object> getAllUserDynamics(Long userId) {
+        // 查找用户的所有动态
+        List<UserDynamic> userDynamics = userDynamicRepository.findByUserId(userId);
+        Map<String, Object> postData = new LinkedHashMap<>();
+        List<Map<String, Object>> dynamicList = new ArrayList<>();
+
+        // 遍历动态，获取点赞和评论
+        for (UserDynamic dynamic : userDynamics) {
+            Map<String, Object> dynamicData = new LinkedHashMap<>();
+            dynamicData.put("dynamic_id", dynamic.getDynamicId());
+            dynamicData.put("user_id", dynamic.getUserId());
+
+            Users user = userRepository.findById(dynamic.getUserId()).orElse(null);
+            if (user != null) {
+                dynamicData.put("username", user.getUsername());
+                dynamicData.put("avatar_url", user.getAvatarUrl());
+            } else {
+                dynamicData.put("username", "Unknown");
+                dynamicData.put("avatar_url", "http://example.com/default-avatar.jpg");
+            }
+
+            dynamicData.put("title", dynamic.getTitle());
+            dynamicData.put("content", dynamic.getContent());
+            dynamicData.put("images", dynamic.getImageUrl());
+            dynamicData.put("time", dynamic.getTime());
+
+            // 获取点赞
+            List<DynamicLikes> likes = dynamicLikesRepository.findByDynamicId(dynamic.getDynamicId());
+            List<Map<String, Object>> likeList = new ArrayList<>();
+            for (DynamicLikes like : likes) {
+                Map<String, Object> likeData = new HashMap<>();
+                likeData.put("user_id", like.getUserId());
+
+                // 获取点赞用户的用户名
+                Users likeUser = userRepository.findById(like.getUserId()).orElse(null);
+                if (likeUser != null) {
+                    likeData.put("username", likeUser.getUsername());
+                } else {
+                    likeData.put("username", "Unknown");
+                }
+
+                likeList.add(likeData);
+            }
+            dynamicData.put("likes", likeList);
+
+            // 获取评论
+            List<DynamicComment> comments = dynamicCommentRepository.findByDynamicId(dynamic.getDynamicId());
+            List<Map<String, Object>> commentList = new ArrayList<>();
+            for (DynamicComment comment : comments) {
+                Map<String, Object> commentData = new HashMap<>();
+                commentData.put("comment_id", comment.getCommentId());
+                commentData.put("user_id", comment.getUserId());
+
+                // 获取评论用户的用户名
+                Users commentUser = userRepository.findById(comment.getUserId()).orElse(null);
+                if (commentUser != null) {
+                    commentData.put("username", commentUser.getUsername());
+                } else {
+                    commentData.put("username", "Unknown");
+                }
+
+                commentData.put("content", comment.getCommentContent());
+                commentData.put("time", comment.getCommentTime());
+                commentList.add(commentData);
+            }
+            dynamicData.put("comments", commentList);
+
+            dynamicList.add(dynamicData);
+        }
+
+        Map<String, Object> response = new HashMap<>();
+        response.put("dynamic", dynamicList);
+        return response;
+    }
+
+    //获取当前所有好友的id
+    public List<Long> getAllFriendIds(Long userId) {
+        List<FriendRelation> friendRelations = friendRelationRepository.findByUserId(userId);
+        List<Long> friendIds = new ArrayList<>();
+
+        for (FriendRelation relation : friendRelations) {
+            // 添加好友ID
+            if (!friendIds.contains(relation.getFriendId())) {
+                friendIds.add(relation.getFriendId());
+            }
+        }
+
+        return friendIds;
+    }
+
+    public Map<String, Object> getAllUserAndFriendsDynamics(List<Long> userIds) {
+        List<Map<String, Object>> allDynamics = new ArrayList<>();
+
+        // 遍历所有用户获取他们的动态
+        for (Long userId : userIds) {
+            Map<String, Object> userDynamics = getAllUserDynamics(userId);
+            if (userDynamics != null && !userDynamics.isEmpty()) {
+                allDynamics.addAll((List<Map<String, Object>>) userDynamics.get("dynamic"));
+            }
+        }
+
+        // 返回所有动态的合集
+        Map<String, Object> response = new HashMap<>();
+        response.put("dynamic", allDynamics);
+        return response;
+    }
+
+    //点赞动态
+    public boolean likeDynamic(Long userId, Long dynamicId) {
+        // 检查该用户是否已经点赞过该动态
+        DynamicLikes existingLike = dynamicLikesRepository.findByUserIdAndDynamicId(userId, dynamicId);
+        if (existingLike != null) {
+            return false;
+        }
+
+        // 新增点赞记录
+        DynamicLikes newLike = new DynamicLikes();
+        newLike.setUserId(userId);
+        newLike.setDynamicId(dynamicId);
+        newLike.setLikeTime(new java.util.Date());
+        dynamicLikesRepository.save(newLike);
+
+        // 更新动态表的点赞数
+        UserDynamic dynamic = userDynamicRepository.findById(dynamicId).orElse(null);
+        if (dynamic != null) {
+            dynamic.setLikesCount(dynamic.getLikesCount() + 1);
+            userDynamicRepository.save(dynamic);
+        }
+
+        return true;
+    }
+
+    //取消点赞
+    public boolean unlikeDynamic(Long userId, Long dynamicId) {
+        // 查找该用户的点赞记录
+        DynamicLikes existingLike = dynamicLikesRepository.findByUserIdAndDynamicId(userId, dynamicId);
+        if (existingLike == null) {
+            return false;
+        }
+
+        // 删除点赞记录
+        dynamicLikesRepository.delete(existingLike);
+
+        // 更新动态表的点赞数
+        UserDynamic dynamic = userDynamicRepository.findById(dynamicId).orElse(null);
+        if (dynamic != null) {
+            dynamic.setLikesCount(dynamic.getLikesCount() - 1);
+            userDynamicRepository.save(dynamic);
+        }
+
+        return true;
+    }
+
+}
diff --git a/src/main/java/com/example/myproject/service/GroupService.java b/src/main/java/com/example/myproject/service/GroupService.java
new file mode 100644
index 0000000..016d7e0
--- /dev/null
+++ b/src/main/java/com/example/myproject/service/GroupService.java
@@ -0,0 +1,382 @@
+package com.example.myproject.service;
+
+import com.example.myproject.entity.*;
+
+import com.example.myproject.repository.*;
+import jakarta.transaction.Transactional;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Files;
+
+import java.util.*;
+
+@Service
+public class GroupService {
+
+    @Autowired
+    private GroupRepository groupRepository;
+
+    @Autowired
+    private GroupMembersRepository groupMembersRepository;
+
+
+    @Autowired
+    private UserRepository userRepository;
+
+    @Autowired
+    private GroupPostRepository groupPostRepository;
+
+    @Autowired
+    private GroupCommentsRepository groupCommentsRepository;
+
+    private static final String IMAGE_DIR = "uploads/groupPost/";
+
+    @Transactional
+    // 创建小组的方法
+    public ResponseEntity<Map<String, Object>> createGroup(Group groupRequest) {
+        try {
+            // 创建新的小组对象
+            Group newGroup = new Group();
+            newGroup.setGroupName(groupRequest.getGroupName());
+            newGroup.setDescription(groupRequest.getDescription());
+            newGroup.setCreateTime(new Date());
+            newGroup.setUserId(groupRequest.getUserId());
+            newGroup.setMemberCount(1);
+            newGroup.setCategory(groupRequest.getCategory());
+            newGroup.setCoverImage(groupRequest.getCoverImage());
+            Group createdGroup = groupRepository.save(newGroup);
+
+            // 返回成功响应
+            Map<String, Object> response = new HashMap<>();
+            response.put("status", "success");
+            response.put("message", "兴趣小组创建成功");
+            response.put("group_id", createdGroup.getGroupId());
+
+            return ResponseEntity.ok(response);
+        } catch (Exception e) {
+            // 返回失败响应
+            Map<String, Object> errorResponse = new HashMap<>();
+            errorResponse.put("status", "error");
+            errorResponse.put("message", "小组创建失败");
+            errorResponse.put("group_id", null);
+
+            return ResponseEntity.status(400).body(errorResponse);
+        }
+    }
+
+
+    // 加入小组
+    @Transactional
+    public ResponseEntity<Map<String, Object>> joinGroup(Long groupId, Long userId) {
+        // 查找小组
+        Optional<Group> groupOptional = groupRepository.findById(groupId);
+        if (!groupOptional.isPresent()) {
+            return ResponseEntity.status(400).body(
+                    Map.of("status", "failure", "message", "小组不存在")
+            );
+        }
+
+        Group group = groupOptional.get();
+
+        // 检查用户是否已经是该小组成员
+        if (groupMembersRepository.existsByGroupIdAndUserId(groupId, userId)) {
+            return ResponseEntity.status(400).body(
+                    Map.of("status", "failure", "message", "用户已经是该小组的成员")
+            );
+        }
+
+        // 插入用户和小组的关联记录
+        GroupMembers groupMembers = new GroupMembers();
+        groupMembers.setGroupId(groupId);
+        groupMembers.setUserId(userId);
+        groupMembersRepository.save(groupMembers);
+
+        // 更新小组的成员数
+        group.setMemberCount(group.getMemberCount() + 1);
+        groupRepository.save(group);
+
+        return ResponseEntity.ok().body(
+                Map.of("status", "success", "message", "成功加入小组")
+        );
+    }
+
+    // 退出小组
+    @Transactional
+    public ResponseEntity<Map<String, Object>> leaveGroup(Long groupId, Long userId) {
+        // 查找小组
+        Optional<Group> groupOptional = groupRepository.findById(groupId);
+        if (!groupOptional.isPresent()) {
+            return ResponseEntity.status(400).body(
+                    Map.of("status", "failure", "message", "小组不存在")
+            );
+        }
+
+        Group group = groupOptional.get();
+
+        // 检查用户是否是该小组成员
+        if (!groupMembersRepository.existsByGroupIdAndUserId(groupId, userId)) {
+            return ResponseEntity.status(400).body(
+                    Map.of("status", "failure", "message", "用户不是该小组的成员")
+            );
+        }
+
+        // 删除用户和小组的关联记录
+        groupMembersRepository.deleteByGroupIdAndUserId(groupId, userId);
+
+        // 更新小组的成员数
+        group.setMemberCount(group.getMemberCount() - 1);
+        groupRepository.save(group);
+
+        return ResponseEntity.ok().body(
+                Map.of("status", "success", "message", "成功退出小组")
+        );
+    }
+
+    // 获取所有成员
+    @Transactional
+    public ResponseEntity<Map<String, Object>> getGroupMembers(Long groupId) {
+        // 查找小组
+        Optional<Group> groupOptional = groupRepository.findById(groupId);
+        if (!groupOptional.isPresent()) {
+            return ResponseEntity.status(400).body(
+                    Map.of("status", "failure", "message", "小组不存在")
+            );
+        }
+
+        Group group = groupOptional.get();
+
+        // 获取所有小组成员
+        List<GroupMembers> groupMembersList = groupMembersRepository.findByGroupId(groupId);
+
+        // 创建成员返回列表
+        List<Map<String, Object>> members = new ArrayList<>();
+        for (GroupMembers groupMember : groupMembersList) {
+            Optional<Users> userOptional = userRepository.findById(groupMember.getUserId());
+            if (userOptional.isPresent()) {
+                Users user = userOptional.get();
+                members.add(Map.of(
+                        "user_id", user.getUserId(),
+                        "username", user.getUsername(),
+                        "avatar_url", user.getAvatarUrl()
+                ));
+            }
+        }
+
+        return ResponseEntity.ok().body(
+                Map.of("status", "success", "members", members)
+        );
+    }
+
+
+    //发布帖子
+    public Map<String, Object> createPost(Long groupId, Long userId, String postContent, String title, MultipartFile[] imageFiles) {
+        // 创建一个新的帖子对象
+        GroupPost post = new GroupPost();
+        post.setGroupId(groupId);
+        post.setUserId(userId);
+        post.setContent(postContent);
+        post.setTitle(title);
+        post.setTime(new Date());
+        post.setLikeCount(0);
+        post.setCommentCount(0);
+
+        // 处理图片上传，如果没有图片，返回空字符串
+        String imageUrls = handleImages(imageFiles);
+        post.setImage(imageUrls);
+
+        // 保存帖子到数据库
+        GroupPost savedPost = groupPostRepository.save(post);
+
+        // 返回结果
+        Map<String, Object> response = new LinkedHashMap<>();
+        response.put("post_id", savedPost.getGroupPostId());
+        response.put("message", "帖子创建成功");
+        return response;
+    }
+
+    // 处理图片上传的方法，返回图片的 URL 字符串
+    private String handleImages(MultipartFile[] imageFiles) {
+        if (imageFiles == null || imageFiles.length == 0) {
+            return "";
+        }
+
+        StringBuilder imageUrlsBuilder = new StringBuilder();
+
+        for (int i = 0; i < imageFiles.length; i++) {
+            if (i > 0) {
+                imageUrlsBuilder.append(",");
+            }
+            try {
+                String imageUrl = saveImage(imageFiles[i]);
+                imageUrlsBuilder.append(imageUrl);
+            } catch (IOException e) {
+                throw new RuntimeException("图片上传失败: " + e.getMessage());
+            }
+        }
+        return imageUrlsBuilder.toString();
+    }
+
+    // 保存图片并返回图片的 URL
+    private String saveImage(MultipartFile imageFile) throws IOException {
+        if (imageFile == null) {
+            throw new IOException("图片文件为空");
+        }
+
+        String fileName = imageFile.getOriginalFilename();
+        Path path = Path.of(IMAGE_DIR + fileName);
+        Files.createDirectories(path.getParent());
+        Files.write(path, imageFile.getBytes());
+        return "/images/" + fileName;
+    }
+
+    // 获取小组内的所有帖子
+    public Map<String, Object> getAllPosts(Long groupId) {
+        List<GroupPost> posts = groupPostRepository.findByGroupId(groupId);
+
+        List<Map<String, Object>> postList = new ArrayList<>();
+
+        for (GroupPost post : posts) {
+            Map<String, Object> postData = new HashMap<>();
+            Users user = userRepository.findById(post.getUserId()).orElseThrow(() -> new RuntimeException("User not found"));
+            postData.put("group_post_id", post.getGroupPostId());
+            postData.put("user_id", post.getUserId());
+            postData.put("username", user.getUsername());
+            postData.put("title", post.getTitle());
+            postData.put("content", post.getContent());
+            postData.put("time", post.getTime());
+
+            postList.add(postData);
+        }
+
+        // 返回响应数据
+        Map<String, Object> response = new LinkedHashMap<>();
+        response.put("status", "success");
+        response.put("posts", postList);
+        return response;
+    }
+
+
+    // 获取小组列表接口
+    public Map<String, Object> searchGroups(Map<String, Object> params) {
+        String name = (String) params.get("name");
+        String category = (String) params.get("category");
+        Integer page = (Integer) params.getOrDefault("page", 1);
+        Integer size = (Integer) params.getOrDefault("size", 10);
+        String sortBy = (String) params.getOrDefault("sort_by", "memberCount");
+
+        // 构建分页对象
+        Pageable pageable;
+
+        // 根据 `sortBy` 判断排序方式
+        if ("createTime".equals(sortBy)) {
+            pageable = PageRequest.of(page - 1, size, Sort.by(Sort.Order.asc("createTime")));
+        } else if ("groupName".equals(sortBy)) {
+            pageable = PageRequest.of(page - 1, size, Sort.by(Sort.Order.asc("groupName")));
+        } else {
+            pageable = PageRequest.of(page - 1, size, Sort.by(Sort.Order.desc("memberCount")));
+        }
+
+        Page<Group> groups;
+        if (name != null && !name.isEmpty()) {
+            // 小组名称模糊查询
+            groups = groupRepository.searchGroups(name, category, pageable);
+        } else {
+            groups = groupRepository.searchWithFilters(category, pageable);
+        }
+
+        return buildResponse(groups);
+    }
+
+    // 构建返回的响应数据
+    private Map<String, Object> buildResponse(Page<Group> groups) {
+        Map<String, Object> response = new LinkedHashMap<>();
+        response.put("status", "success");
+        response.put("total", groups.getTotalElements());
+        response.put("total_pages", groups.getTotalPages());
+        response.put("current_page", groups.getNumber() + 1);
+        response.put("items", groups.getContent());
+
+        return response;
+    }
+
+    // 点赞帖子
+    public Map<String, Object> likePost(Long GroupPostId) {
+        // 查找帖子
+        Optional<GroupPost> postOpt = groupPostRepository.findById(GroupPostId);
+        if (!postOpt.isPresent()) {
+            throw new RuntimeException("Post not found");
+        }
+
+        GroupPost post = postOpt.get();
+
+        // 更新点赞数
+        post.setLikeCount(post.getLikeCount() + 1);
+        groupPostRepository.save(post);
+
+        // 返回成功信息
+        Map<String, Object> response = new HashMap<>();
+        response.put("status", "success");
+        response.put("message", "点赞成功");
+        return response;
+    }
+
+    // 取消点赞
+    public Map<String, Object> unlikePost(Long GroupPostId) {
+        // 查找帖子
+        Optional<GroupPost> postOpt = groupPostRepository.findById(GroupPostId);
+        if (!postOpt.isPresent()) {
+            throw new RuntimeException("Post not found");
+        }
+
+        GroupPost post = postOpt.get();
+
+        // 更新点赞数
+        if (post.getLikeCount() > 0) {
+            post.setLikeCount(post.getLikeCount() - 1);
+            groupPostRepository.save(post);
+
+            // 返回成功信息
+            Map<String, Object> response = new HashMap<>();
+            response.put("status", "success");
+            response.put("message", "取消点赞成功");
+            return response;
+        } else {
+            // 如果点赞数已经是0，则返回相应消息
+            Map<String, Object> response = new HashMap<>();
+            response.put("status", "failure");
+            response.put("message", "无法取消点赞，点赞数已经为0");
+            return response;
+        }
+    }
+
+    // 添加评论并更新帖子的评论数
+    public Map<String, Object> addComment(Long postId, GroupComments comment) {
+        // 查找帖子
+        Optional<GroupPost> postOpt = groupPostRepository.findById(postId);
+        if (!postOpt.isPresent()) {
+            throw new RuntimeException("Post not found");
+        }
+
+        GroupPost post = postOpt.get();
+
+        comment.setGroupPostId(postId);
+        comment.setTime(new java.util.Date());
+        groupCommentsRepository.save(comment);
+        post.setCommentCount(post.getCommentCount() + 1);
+        groupPostRepository.save(post);
+        Map<String, Object> response = new HashMap<>();
+        response.put("status", "success");
+        response.put("message", "评论成功");
+        return response;
+    }
+
+
+}
diff --git a/src/main/java/com/example/myproject/service/LevelService.java b/src/main/java/com/example/myproject/service/LevelService.java
new file mode 100644
index 0000000..92f50ed
--- /dev/null
+++ b/src/main/java/com/example/myproject/service/LevelService.java
@@ -0,0 +1,140 @@
+package com.example.myproject.service;
+
+import com.example.myproject.entity.ExperienceHistory;
+import com.example.myproject.entity.Users;
+import com.example.myproject.entity.Level;
+import com.example.myproject.repository.ExperienceHistoryRepository;
+import com.example.myproject.repository.UserRepository;
+import com.example.myproject.repository.LevelRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.HashMap;
+
+@Service
+public class LevelService {
+
+    @Autowired
+    private UserRepository userRepository;
+
+    @Autowired
+    private LevelRepository levelRepository;
+
+    @Autowired
+    private ExperienceHistoryRepository experienceHistoryRepository;
+
+
+    public Map<String, Object> getUserExperience(Long userId) {
+        // 获取用户信息
+        Users user = userRepository.findById(userId).orElseThrow(() -> new RuntimeException("User not found"));
+
+        // 获取当前等级
+        Level currentLevel = levelRepository.findById(user.getLevel()).orElseThrow(() -> new RuntimeException("Level not found"));
+
+        // 获取下一个等级的经验需求
+        Level nextLevel = levelRepository.findById(currentLevel.getLevelId() + 1).orElse(null);
+
+        // 构建响应数据
+        Map<String, Object> response = new HashMap<>();
+        response.put("current_experience", user.getCurrentExperience());
+        response.put("level", currentLevel.getLevelName());
+        response.put("next_level_experience", nextLevel != null ? nextLevel.getRequiredExperience() : 0);
+
+        return response;
+    }
+
+    public Map<String, Object> updateExperience(Long userId, Integer experience, String source) {
+        // 获取用户信息
+        Users user = userRepository.findById(userId).orElseThrow(() -> new RuntimeException("用户不存在"));
+
+        // 更新用户的经验值
+        user.setCurrentExperience(user.getCurrentExperience() + experience);
+
+        // 保存更新后的用户信息
+        userRepository.save(user);
+
+        // 创建经验更新历史记录
+        ExperienceHistory experienceHistory = new ExperienceHistory();
+        experienceHistory.setUserId(userId);
+        experienceHistory.setExperienceChange(experience);
+        experienceHistory.setSource(source);
+        experienceHistory.setUpdateTime(new Date());
+
+        // 保存更新历史
+        experienceHistoryRepository.save(experienceHistory);
+
+        // 返回更新后的经验值和消息
+        Map<String, Object> response = new LinkedHashMap<>();
+        response.put("status", "success");
+        response.put("message", "经验更新成功");
+        response.put("current_experience", user.getCurrentExperience());  // 返回更新后的经验值
+
+        return response;
+    }
+
+    public Map<String, Object> checkUpgrade(Long userId) {
+        // 获取用户信息
+        Users user = userRepository.findById(userId).orElseThrow(() -> new RuntimeException("用户不存在"));
+
+        // 获取当前等级
+        Level currentLevel = levelRepository.findById(user.getLevel())
+                .orElseThrow(() -> new RuntimeException("用户等级信息不存在"));
+
+        // 获取下一个等级的经验需求
+        Level nextLevel = levelRepository.findById(currentLevel.getLevelId() + 1).orElse(null);
+
+        // 构建响应数据
+        Map<String, Object> response = new LinkedHashMap<>();
+
+        // 判断用户是否可以升级
+        boolean canUpgrade = user.getCurrentExperience() >= (nextLevel != null ? nextLevel.getRequiredExperience() : 0);
+        response.put("can_upgrade", canUpgrade);
+        // 构建响应数据
+
+        response.put("next_level_experience", nextLevel != null ? nextLevel.getRequiredExperience() : 0);
+        response.put("current_experience", user.getCurrentExperience());
+
+
+        return response;
+    }
+
+    public Map<String, Object> upgradeUserLevel(Long userId, Boolean canUpgrade) {
+        // 获取用户信息
+        Users user = userRepository.findById(userId).orElseThrow(() -> new RuntimeException("User not found"));
+
+        // 创建响应对象
+        Map<String, Object> response = new HashMap<>();
+
+        if (canUpgrade) {
+            // 获取当前等级
+            Level currentLevel = levelRepository.findById(user.getLevel())
+                    .orElseThrow(() -> new RuntimeException("Level not found"));
+
+            // 获取下一个等级的经验需求
+            Level nextLevel = levelRepository.findById(currentLevel.getLevelId() + 1).orElse(null);
+
+            if (nextLevel != null) {
+                user.setLevel(user.getLevel() + 1);
+                userRepository.save(user);
+                Level newLevel = levelRepository.findById(user.getLevel())
+                        .orElseThrow(() -> new RuntimeException("Level not found"));
+                response.put("message", "升级成功");
+                response.put("status", "success");
+                response.put("new_level", newLevel.getLevelName());
+            } else {
+                response.put("message", "用户已达到最高等级");
+                response.put("status", "error");
+            }
+        } else {
+            response.put("message", "用户不满足升级条件");
+            response.put("status", "error");
+        }
+
+        return response;
+    }
+
+}
diff --git a/src/main/java/com/example/myproject/service/PostService.java b/src/main/java/com/example/myproject/service/PostService.java
new file mode 100644
index 0000000..feb7404
--- /dev/null
+++ b/src/main/java/com/example/myproject/service/PostService.java
@@ -0,0 +1,232 @@
+package com.example.myproject.service;
+
+import com.example.myproject.entity.Likes;
+import com.example.myproject.entity.Post;
+import com.example.myproject.entity.Users;
+import com.example.myproject.repository.CollectionsRepository;
+import com.example.myproject.repository.LikesRepository;
+import com.example.myproject.repository.PostRepository;
+import com.example.myproject.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+import com.example.myproject.entity.Collections;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.*;
+
+@Service
+public class PostService {
+
+    @Autowired
+    private PostRepository postRepository;
+
+    @Autowired
+    private UserRepository userRepository;
+    @Autowired
+    private LikesRepository likesRepository;
+
+    @Autowired
+    private CollectionsRepository collectionsRepository;
+
+    private static final String IMAGE_DIR = "uploads/post/";
+
+
+    //创建帖子
+    public Map<String, Object> createPost(Long userId, String postContent, String title, MultipartFile[] imageFiles) {
+        // 查找用户信息
+        Users user = userRepository.findById(Long.valueOf(userId)).orElseThrow(() -> new RuntimeException("User not found"));
+        Post post = new Post();
+        post.setUser_id(user.getUserId());
+        post.setPostTime(new Date());
+        post.setPostLikeNum(0);
+        post.setPostCollectNum(0);
+        post.setPostContent(postContent);
+        post.setTitle(title);
+
+        // 处理多张图片的上传
+        StringBuilder imageUrlsBuilder = new StringBuilder();
+        if (imageFiles != null && imageFiles.length > 0) {
+            for (int i = 0; i < imageFiles.length; i++) {
+                if (i > 0) {
+                    imageUrlsBuilder.append(",");
+                }
+                try {
+                    String imageUrl = saveImage(imageFiles[i]);
+                    imageUrlsBuilder.append(imageUrl);
+                } catch (IOException e) {
+                    throw new RuntimeException("Image upload failed: " + e.getMessage());
+                }
+            }
+        }
+        post.setImageUrl(imageUrlsBuilder.toString());
+        Post savedPost = postRepository.save(post);
+        Map<String, Object> response = new HashMap<>();
+        response.put("postNo", savedPost.getPostNo());
+        response.put("message", "帖子创建成功");
+        return response;
+    }
+
+    // 保存图片并返回图片的 URL
+    public String saveImage(MultipartFile imageFile) throws IOException {
+        String fileName = imageFile.getOriginalFilename();
+        Path path = Paths.get(IMAGE_DIR + fileName);
+        Files.createDirectories(path.getParent());
+        Files.write(path, imageFile.getBytes());
+        return "/images/" + fileName;
+    }
+
+
+    //编辑帖子
+    public void updatePost(Long postId, Post post) {
+        Post existingPost = postRepository.findById(postId).orElseThrow(() -> new RuntimeException("Post not found"));
+        if (post.getTitle() != null) {
+            existingPost.setTitle(post.getTitle());
+        }
+        if (post.getPostContent() != null) {
+            existingPost.setPostContent(post.getPostContent());
+        }
+        if (post.getImageUrl() != null) {
+            existingPost.setImageUrl(post.getImageUrl());
+        }
+        existingPost.setPostTime(post.getPostTime());
+        // 保存更新后的帖子
+        postRepository.save(existingPost);
+    }
+
+    //删除帖子
+    public void deletePost(Long postId) {
+        // 查找指定 ID 的帖子，如果不存在则抛出异常
+        if (!postRepository.existsById(postId)) {
+            throw new RuntimeException("Post not found");
+        }
+        // 删除该帖子
+        postRepository.deleteById(postId);
+    }
+
+    //点赞帖子（已完成）
+    public void likePost(Long postId, Long userId) {
+        // 查找指定 ID 的帖子
+        Post post = postRepository.findById(postId).orElseThrow(() -> new RuntimeException("Post not found"));
+        post.setPostLikeNum(post.getPostLikeNum() + 1);
+
+        // 保存帖子
+        postRepository.save(post);
+        Likes like = new Likes();
+        like.setUserId(userId);
+        like.setPostNo(postId);
+        // 保存点赞记录
+        likesRepository.save(like);
+    }
+
+    // 取消点赞帖子（已完成）
+    public void unlikePost(Long postId, Long userId) {
+        // 查找指定 ID 的帖子
+        Post post = postRepository.findById(postId).orElseThrow(() -> new RuntimeException("Post not found"));
+
+        // 如果点赞数大于 0，则减少点赞数
+        if (post.getPostLikeNum() > 0) {
+            post.setPostLikeNum(post.getPostLikeNum() - 1);
+        }
+
+        // 删除点赞表中对应的记录
+        likesRepository.deleteLikeByUserIdAndPostNo(userId, postId);
+
+        // 保存更新后的帖子
+        postRepository.save(post);
+    }
+
+
+    // 获取帖子列表（已完成）
+    public Map<String, Object> getAllPosts() {
+        List<Post> posts = postRepository.findAll();
+        List<Map<String, Object>> postList = new ArrayList<>();
+
+        for (Post post : posts) {
+            Map<String, Object> postMap = new LinkedHashMap<>();
+            postMap.put("postNo", post.getPostNo());
+            postMap.put("user_id", post.getUser_id());
+            postMap.put("postContent", post.getPostContent());
+            postMap.put("imgUrl", post.getImageUrl());
+            postMap.put("title", post.getTitle());
+            postMap.put("createdAt", post.getPostTime().toString());
+            postMap.put("likeCount", post.getPostLikeNum());
+            postMap.put("collectCount", post.getPostCollectNum());
+
+            postList.add(postMap);
+        }
+
+        Map<String, Object> response = new HashMap<>();
+        // 统计帖子数量
+        response.put("total", postList.size());
+        response.put("posts", postList);
+
+        return response;
+    }
+
+    public Map<String, Object> getPostById(Long postId) {
+        // 获取帖子
+        Optional<Post> postOptional = postRepository.findById(postId);
+
+        // 如果帖子存在
+        if (postOptional.isPresent()) {
+            Post post = postOptional.get();
+            Map<String, Object> postData = new LinkedHashMap<>();
+            postData.put("postNo", post.getPostNo());
+            postData.put("user_id", post.getUser_id());
+            Long userId = post.getUser_id();
+            Users user = userRepository.findById(userId).orElse(null);
+
+            if (user != null) {
+                postData.put("username", user.getUsername());
+                postData.put("avatar_url", user.getAvatarUrl());
+            } else {
+                postData.put("username", null);
+                postData.put("avatar_url", null);
+            }
+
+            postData.put("postContent", post.getPostContent());
+            postData.put("imageUrl", post.getImageUrl());
+            postData.put("postTime", post.getPostTime());
+            postData.put("postLikeNum", post.getPostLikeNum());
+            postData.put("postCollectNum", post.getPostCollectNum());
+            postData.put("title", post.getTitle());
+
+            return postData;
+        } else {
+            throw new RuntimeException("Post not found with id: " + postId);
+        }
+    }
+
+
+    //收藏
+    public void collectPost(Long postId, Long userId) {
+        Post post = postRepository.findById(postId).orElseThrow(() -> new RuntimeException("Post not found"));
+        post.setPostCollectNum(post.getPostCollectNum() + 1);
+        postRepository.save(post);
+
+        // 添加到收藏表
+        Collections collection = new Collections();
+        collection.setUserId(userId);
+        collection.setPostNo(postId);
+        collectionsRepository.save(collection);
+    }
+
+    //取消收藏
+    public void uncollectPost(Long postId, Long userId) {
+        Post post = postRepository.findById(postId).orElseThrow(() -> new RuntimeException("Post not found"));
+        // 减少帖子收藏数
+        if (post.getPostCollectNum() > 0) {
+            post.setPostCollectNum(post.getPostCollectNum() - 1);
+            postRepository.save(post);
+        }
+
+        // 从收藏表中删除对应记录
+        collectionsRepository.deleteLikeByUserIdAndPostNo(userId, postId);
+    }
+
+
+
+}
diff --git a/src/main/java/com/example/myproject/service/TaskService.java b/src/main/java/com/example/myproject/service/TaskService.java
new file mode 100644
index 0000000..bd04661
--- /dev/null
+++ b/src/main/java/com/example/myproject/service/TaskService.java
@@ -0,0 +1,295 @@
+package com.example.myproject.service;
+
+import com.example.myproject.entity.Level;
+import com.example.myproject.entity.Task;
+import com.example.myproject.entity.UserTaskStatus;
+import com.example.myproject.repository.LevelRepository;
+import com.example.myproject.repository.TaskRepository;
+import com.example.myproject.repository.UserTaskStatusRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.example.myproject.entity.Users;
+import com.example.myproject.repository.UserRepository;
+
+import java.util.*;
+
+@Service
+public class TaskService {
+
+    @Autowired
+    private TaskRepository taskRepository;
+
+    @Autowired
+    private UserTaskStatusRepository userTaskStatusRepository;
+
+    @Autowired
+    private UserRepository userRepository;
+
+    @Autowired
+    private LevelRepository levelRepository;
+
+    public Map<String, Object> getAllTasksForUser(Long userId) {
+        // 获取所有任务
+        List<Task> tasks = taskRepository.findAll();
+        List<Map<String, Object>> taskList = new ArrayList<>();
+
+        for (Task task : tasks) {
+            Optional<UserTaskStatus> userTaskStatus = userTaskStatusRepository
+                    .findByUserIdAndTaskId(userId, task.getTaskId());
+
+            Map<String, Object> taskData = new LinkedHashMap<>();
+            taskData.put("task_id", task.getTaskId());
+            taskData.put("title", task.getTitle());
+            taskData.put("description", task.getDescription());
+            taskData.put("status", userTaskStatus.isPresent() ? userTaskStatus.get().getStatus() : "pending");
+            taskData.put("progress", userTaskStatus.isPresent() ? userTaskStatus.get().getCurrentProgress() : 0);
+
+            // 奖励
+            Map<String, Integer> reward = new LinkedHashMap<>();
+            reward.put("experience", task.getRewardExperience());
+            reward.put("points", task.getRewardPoints());
+            taskData.put("reward", reward);
+
+            taskList.add(taskData);
+        }
+
+        Map<String, Object> response = new LinkedHashMap<>();
+        response.put("tasks", taskList);
+        return response;
+    }
+
+    public Map<String, Object> updateTaskStatus(Long userId, String taskId) {
+        // 获取用户任务状态
+        Optional<UserTaskStatus> userTaskStatusOpt = userTaskStatusRepository.findByUserIdAndTaskId(userId, taskId);
+        UserTaskStatus userTaskStatus = userTaskStatusOpt.get();
+
+        // 检查任务进度
+        if (userTaskStatus.getCurrentProgress() == 100f) {
+            Optional<Task> taskOpt = taskRepository.findById(taskId);
+            Task task = taskOpt.get();
+
+            // 更新任务状态为已完成
+            userTaskStatus.setStatus("completed");
+            userTaskStatus.setCurrentExperience(task.getRewardExperience());
+            userTaskStatus.setCurrentPoints(task.getRewardPoints());
+
+            userTaskStatusRepository.save(userTaskStatus);
+
+            // 构建返回数据
+            Map<String, Object> response = new HashMap<>();
+            response.put("status", "success");
+            response.put("message", "任务状态已更新");
+
+            Map<String, Integer> currentReward = new HashMap<>();
+            currentReward.put("current_experience", task.getRewardExperience());
+            currentReward.put("current_points", task.getRewardPoints());
+            response.put("current_reward", currentReward);
+
+            return response;
+        } else {
+            Map<String, Object> errorResponse = new HashMap<>();
+            errorResponse.put("status", "failure");
+            errorResponse.put("message", "任务未完成，无法更新状态");
+            return errorResponse;
+        }
+    }
+
+    public Map<String, Object> getUserExperience(Long userId) {
+        // 获取用户信息
+        Optional<Users> userOpt = userRepository.findById(userId);
+        if (!userOpt.isPresent()) {
+            Map<String, Object> errorResponse = new LinkedHashMap<>();
+            errorResponse.put("status", "failure");
+            errorResponse.put("message", "用户不存在");
+            return errorResponse;
+        }
+
+        Users user = userOpt.get();
+        Integer currentExperience = user.getCurrentExperience();
+        Optional<Level> levelOpt = levelRepository.findById(user.getLevel());
+        String levelName = levelOpt.isPresent() ? levelOpt.get().getLevelName() : "未知等级";
+
+        List<UserTaskStatus> completedTasks = userTaskStatusRepository.findByUserIdAndStatus(userId, "completed");
+
+        int totalExperience = 0;
+        int totalPoints = 0;
+        for (UserTaskStatus taskStatus : completedTasks) {
+            Optional<Task> taskOpt = taskRepository.findById(taskStatus.getTaskId());
+            if (taskOpt.isPresent()) {
+                Task task = taskOpt.get();
+                totalExperience += task.getRewardExperience();
+                totalPoints += task.getRewardPoints();
+            }
+        }
+
+        // 构建返回数据
+        Map<String, Object> response = new LinkedHashMap<>();
+        response.put("user_id", userId);
+        response.put("current_experience", currentExperience);
+        response.put("level", levelName);
+        response.put("tasks_completed", completedTasks.size());
+
+        Map<String, Integer> reward = new LinkedHashMap<>();
+        reward.put("experience", totalExperience);
+        reward.put("points", totalPoints);
+
+        response.put("reward", reward);
+
+        return response;
+    }
+
+    public Map<String, Object> getNewStep(Long userId) {
+        // 获取用户的第一个未完成任务
+        Optional<UserTaskStatus> userTaskStatusOpt = userTaskStatusRepository.findFirstByUserIdAndStatus(userId, "pending");
+
+        if (!userTaskStatusOpt.isPresent()) {
+            Map<String, Object> errorResponse = new LinkedHashMap<>();
+            errorResponse.put("status", "failure");
+            errorResponse.put("message", "用户当前没有未完成的任务");
+            return errorResponse;
+        }
+
+        UserTaskStatus userTaskStatus = userTaskStatusOpt.get();
+        String taskId = userTaskStatus.getTaskId();
+
+        // 获取该任务的描述
+        Optional<Task> taskOpt = taskRepository.findById(taskId);
+        if (!taskOpt.isPresent()) {
+            Map<String, Object> errorResponse = new LinkedHashMap<>();
+            errorResponse.put("status", "failure");
+            errorResponse.put("message", "任务不存在");
+            return errorResponse;
+        }
+
+        Task task = taskOpt.get();
+
+        // 获取总任务数
+        long totalTasks = taskRepository.count();
+
+        // 构建返回数据
+        Map<String, Object> response = new LinkedHashMap<>();
+        response.put("current_step", taskId);
+        response.put("total_steps", totalTasks);
+        response.put("step_description", task.getDescription());
+
+        return response;
+    }
+
+    public Map<String, Object> updateTaskProgress(Long userId, String taskId, Integer progress) {
+        Optional<UserTaskStatus> userTaskStatusOpt = userTaskStatusRepository.findByUserIdAndTaskId(userId, taskId);
+
+        if (!userTaskStatusOpt.isPresent()) {
+            Map<String, Object> errorResponse = new LinkedHashMap<>();
+            errorResponse.put("status", "failure");
+            errorResponse.put("message", "任务不存在或该任务不属于用户");
+            return errorResponse;
+        }
+
+        UserTaskStatus userTaskStatus = userTaskStatusOpt.get();
+        userTaskStatus.setCurrentProgress(Float.valueOf(progress));
+        userTaskStatusRepository.save(userTaskStatus);
+        Map<String, Object> response = new LinkedHashMap<>();
+        response.put("status", "success");
+        response.put("message", "进度已更新");
+
+        return response;
+    }
+
+    public Map<String, Object> claimReward(Long userId, String taskId) {
+        // 获取用户任务状态
+        Optional<UserTaskStatus> userTaskStatusOpt = userTaskStatusRepository.findByUserIdAndTaskId(userId, taskId);
+
+        if (!userTaskStatusOpt.isPresent()) {
+            Map<String, Object> errorResponse = new LinkedHashMap<>();
+            errorResponse.put("status", "failure");
+            errorResponse.put("message", "任务状态不存在");
+            return errorResponse;
+        }
+
+        UserTaskStatus userTaskStatus = userTaskStatusOpt.get();
+
+        if (userTaskStatus.getCurrentProgress() == 100f) {
+            if (userTaskStatus.getIsRewardClaimed()) {
+                Map<String, Object> errorResponse = new LinkedHashMap<>();
+                errorResponse.put("status", "failure");
+                errorResponse.put("message", "奖励已经领取过了");
+                return errorResponse;
+            }
+
+            Optional<Task> taskOpt = taskRepository.findById(taskId);
+            if (!taskOpt.isPresent()) {
+                Map<String, Object> errorResponse = new LinkedHashMap<>();
+                errorResponse.put("status", "failure");
+                errorResponse.put("message", "任务不存在");
+                return errorResponse;
+            }
+
+            Task task = taskOpt.get();
+
+            userTaskStatus.setIsRewardClaimed(true);
+            userTaskStatus.setCurrentExperience(task.getRewardExperience());
+            userTaskStatus.setCurrentPoints(task.getRewardPoints());
+
+            userTaskStatusRepository.save(userTaskStatus);
+
+            Optional<Users> userOpt = userRepository.findById(userId);
+            if (!userOpt.isPresent()) {
+                Map<String, Object> errorResponse = new LinkedHashMap<>();
+                errorResponse.put("status", "failure");
+                errorResponse.put("message", "用户不存在");
+                return errorResponse;
+            }
+
+            Users user = userOpt.get();
+
+            // 将任务奖励加到用户的积分和经验
+            user.setUserPoints(user.getUserPoints() + task.getRewardPoints());
+            user.setCurrentExperience(user.getCurrentExperience() + task.getRewardExperience());
+
+            userRepository.save(user);
+
+            Map<String, Object> response = new LinkedHashMap<>();
+            response.put("status", "success");
+            response.put("message", "奖励已领取");
+
+            Map<String, Integer> reward = new LinkedHashMap<>();
+            reward.put("experience", task.getRewardExperience());
+            reward.put("points", task.getRewardPoints());
+            response.put("reward", reward);
+
+            return response;
+        } else {
+            Map<String, Object> errorResponse = new LinkedHashMap<>();
+            errorResponse.put("status", "failure");
+            errorResponse.put("message", "任务未完成，无法领取奖励");
+            return errorResponse;
+        }
+    }
+
+    public Map<String, Object> checkRewardStatus(Long userId, String taskId) {
+        // 获取用户任务状态
+        Optional<UserTaskStatus> userTaskStatusOpt = userTaskStatusRepository.findByUserIdAndTaskId(userId, taskId);
+
+        if (!userTaskStatusOpt.isPresent()) {
+            Map<String, Object> errorResponse = new LinkedHashMap<>();
+            errorResponse.put("status", "failure");
+            errorResponse.put("message", "任务状态不存在");
+            return errorResponse;
+        }
+
+        UserTaskStatus userTaskStatus = userTaskStatusOpt.get();
+
+        // 检查奖励是否已领取
+        if (userTaskStatus.getIsRewardClaimed()) {
+            Map<String, Object> response = new LinkedHashMap<>();
+            response.put("status", "reward_issued");
+            response.put("message", "任务奖励已被领取");
+            return response;
+        }
+
+        Map<String, Object> response = new LinkedHashMap<>();
+        response.put("status", "reward_not_issued");
+        response.put("message", "任务奖励未被领取");
+        return response;
+    }
+}
diff --git a/src/main/java/com/example/myproject/service/UserFollowService.java b/src/main/java/com/example/myproject/service/UserFollowService.java
new file mode 100644
index 0000000..6222b48
--- /dev/null
+++ b/src/main/java/com/example/myproject/service/UserFollowService.java
@@ -0,0 +1,122 @@
+package com.example.myproject.service;
+
+import com.example.myproject.entity.Users;
+import com.example.myproject.entity.UserFollow;
+import com.example.myproject.repository.UserFollowRepository;
+import com.example.myproject.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+public class UserFollowService {
+
+    @Autowired
+    private UserFollowRepository userFollowRepository;
+
+    @Autowired
+    private UserRepository userRepository;
+
+    // 用户关注操作
+    public Map<String, Object> follow(Long followerId, Long followedId) {
+        if (followerId.equals(followedId)) {
+            Map<String, Object> response = new LinkedHashMap<>();
+            response.put("status", "error");
+            response.put("message", "不能关注自己");
+            return response;
+        }
+
+        // 检查是否已关注该用户
+        UserFollow existingFollow = userFollowRepository.findByFollowerIdAndFollowedId(followerId, followedId);
+        if (existingFollow == null) {
+            // 创建新的关注记录
+            UserFollow userFollow = new UserFollow();
+            userFollow.setFollowerId(followerId);
+            userFollow.setFollowedId(followedId);
+            userFollow.setFollowTime(new java.util.Date());
+
+            userFollowRepository.save(userFollow);
+
+            // 返回关注成功响应
+            Map<String, Object> response = new LinkedHashMap<>();
+            response.put("status", "success");
+            response.put("message", "关注成功");
+            return response;
+        } else {
+            Map<String, Object> response = new LinkedHashMap<>();
+            response.put("status", "error");
+            response.put("message", "已经关注该用户");
+            return response;
+        }
+    }
+
+    // 取消关注操作
+    public Map<String, Object> unfollow(Long followerId, Long followedId) {
+        UserFollow userFollow = userFollowRepository.findByFollowerIdAndFollowedId(followerId, followedId);
+
+        if (userFollow != null) {
+            userFollowRepository.delete(userFollow);
+
+            Map<String, Object> response = new LinkedHashMap<>();
+            response.put("status", "success");
+            response.put("message", "取消关注成功");
+            return response;
+        } else {
+            Map<String, Object> response = new LinkedHashMap<>();
+            response.put("status", "error");
+            response.put("message", "未找到关注关系");
+            return response;
+        }
+    }
+
+    // 获取某个用户的所有粉丝
+    public Map<String, Object> getFollowers(Long userId) {
+        List<UserFollow> followers = userFollowRepository.findByFollowedId(userId);
+
+        List<Map<String, Object>> followersList = new ArrayList<>();
+        for (UserFollow follow : followers) {
+            // 获取粉丝的用户信息
+            Users follower = userRepository.findById(follow.getFollowerId()).orElse(null);
+            if (follower != null) {
+                Map<String, Object> followerInfo = new LinkedHashMap<>();
+                followerInfo.put("user_id", follower.getUserId());
+                followerInfo.put("username", follower.getUsername());
+                followerInfo.put("avatar_url", follower.getAvatarUrl());
+                followersList.add(followerInfo);
+            }
+        }
+
+        // 返回响应数据
+        Map<String, Object> response = new LinkedHashMap<>();
+        response.put("status", "success");
+        response.put("total", followersList.size());
+        response.put("followers", followersList);
+
+        return response;
+    }
+
+    // 获取某个用户的所有关注用户
+    public Map<String, Object> getFollowing(Long userId) {
+        List<UserFollow> following = userFollowRepository.findByFollowerId(userId);
+
+        List<Map<String, Object>> followingList = new ArrayList<>();
+        for (UserFollow follow : following) {
+            // 获取被关注的用户信息
+            Users followedUser = userRepository.findById(follow.getFollowedId()).orElse(null);
+            if (followedUser != null) {
+                Map<String, Object> followingInfo = new HashMap<>();
+                followingInfo.put("user_id", followedUser.getUserId());
+                followingInfo.put("username", followedUser.getUsername());
+                followingInfo.put("avatar_url", followedUser.getAvatarUrl());
+                followingList.add(followingInfo);
+            }
+        }
+        Map<String, Object> response = new HashMap<>();
+        response.put("status", "success");
+        response.put("total", followingList.size());
+        response.put("following", followingList);
+
+        return response;
+    }
+}
diff --git a/src/main/java/com/example/myproject/service/UserMessageService.java b/src/main/java/com/example/myproject/service/UserMessageService.java
new file mode 100644
index 0000000..05f62e7
--- /dev/null
+++ b/src/main/java/com/example/myproject/service/UserMessageService.java
@@ -0,0 +1,112 @@
+package com.example.myproject.service;
+
+import com.example.myproject.entity.UserMessages;
+import com.example.myproject.repository.UserMessagesRepository;
+import com.example.myproject.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.Optional;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Date;
+import java.util.stream.Collectors;
+
+@Service
+public class UserMessageService {
+
+    @Autowired
+    private UserMessagesRepository userMessagesRepository;
+
+    @Autowired
+    private UserRepository userRepository;
+
+    // 发送私信
+    public Map<String, Object> sendMessage(Long senderId, Long receiverId, String content) {
+        UserMessages message = new UserMessages();
+        message.setSenderId(senderId);
+        message.setReceiverId(receiverId);
+        message.setContent(content);
+        message.setTime(new Date());
+        UserMessages savedMessage = userMessagesRepository.save(message);
+
+        // 返回响应
+        Map<String, Object> response = new HashMap<>();
+        response.put("status", "success");
+        response.put("message", "私信发送成功");
+        response.put("message_id", savedMessage.getMessageId());
+        return response;
+    }
+
+    // 获取当前用户的所有消息
+    public Map<String, Object> getUserMessages(Long userId) {
+        // 查询当前用户发送和接收的所有消息
+        List<UserMessages> messages = userMessagesRepository.findBySenderIdOrReceiverId(userId, userId);
+
+        // 获取发送者和接收者的用户名
+        List<Map<String, Object>> messageDetails = messages.stream()
+                .map(message -> {
+                    Map<String, Object> messageMap = new HashMap<>();
+                    messageMap.put("message_id", message.getMessageId());
+                    messageMap.put("sender_id", message.getSenderId());
+                    messageMap.put("receiver_id", message.getReceiverId());
+                    messageMap.put("content", message.getContent());
+                    messageMap.put("timestamp", message.getTime());
+                    String senderUsername = userRepository.findById(message.getSenderId())
+                            .map(user -> user.getUsername())
+                            .orElse("Unknown");
+                    messageMap.put("sender_username", senderUsername);
+                    String receiverUsername = userRepository.findById(message.getReceiverId())
+                            .map(user -> user.getUsername())
+                            .orElse("Unknown");
+                    messageMap.put("receiver_username", receiverUsername);
+
+                    return messageMap;
+                })
+                .collect(Collectors.toList());
+
+        Map<String, Object> response = new HashMap<>();
+        response.put("status", "success");
+        response.put("messages", messageDetails);
+        return response;
+    }
+
+    // 获取单条消息的详情
+    public Map<String, Object> getMessage(Long messageId) {
+        Optional<UserMessages> optionalMessage = userMessagesRepository.findById(messageId);
+
+        if (optionalMessage.isPresent()) {
+            UserMessages message = optionalMessage.get();
+
+            // 获取发送者和接收者的用户名
+            String senderUsername = userRepository.findById(message.getSenderId())
+                    .map(user -> user.getUsername())
+                    .orElse("Unknown");
+            String receiverUsername = userRepository.findById(message.getReceiverId())
+                    .map(user -> user.getUsername())
+                    .orElse("Unknown");
+
+            // 构建响应数据
+            Map<String, Object> response = new HashMap<>();
+            Map<String, Object> messageDetails = new HashMap<>();
+            messageDetails.put("message_id", message.getMessageId());
+            messageDetails.put("sender_id", message.getSenderId());
+            messageDetails.put("sender_username", senderUsername);
+            messageDetails.put("receiver_id", message.getReceiverId());
+            messageDetails.put("receiver_username", receiverUsername);
+            messageDetails.put("content", message.getContent());
+            messageDetails.put("timestamp", message.getTime());
+
+            response.put("status", "success");
+            response.put("message", messageDetails);
+            return response;
+        } else {
+            Map<String, Object> errorResponse = new HashMap<>();
+            errorResponse.put("status", "error");
+            errorResponse.put("message", "Message not found");
+            return errorResponse;
+        }
+    }
+
+
+}
diff --git a/src/main/java/com/example/myproject/service/UserService.java b/src/main/java/com/example/myproject/service/UserService.java
index 71435c7..0d37854 100644
--- a/src/main/java/com/example/myproject/service/UserService.java
+++ b/src/main/java/com/example/myproject/service/UserService.java
@@ -1,25 +1,269 @@
 package com.example.myproject.service;
 
+import com.example.myproject.entity.Users;
+import com.example.myproject.entity.UserInviteCode;
+import com.example.myproject.repository.UserRepository;
+import com.example.myproject.repository.UserInviteCodeRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+public class UserService {
+
+    @Autowired
+    private UserRepository userRepository;
+
+    @Autowired
+    private UserInviteCodeRepository userInviteCodeRepository;
+
+    // 生成邀请码
+    public Map<String, Object> generateInviteCode(Long userId) {
+        // 获取用户信息
+        Users user = userRepository.findById(userId).orElse(null);
+
+        // 如果用户不存在，返回错误
+        if (user == null) {
+            Map<String, Object> errorResponse = new HashMap<>();
+            errorResponse.put("status", "failure");
+            errorResponse.put("message", "用户不存在");
+            return errorResponse;
+        }
+
+        // 检查用户的邀请数量
+        if (user.getInviteCount() <= 0) {
+            Map<String, Object> errorResponse = new HashMap<>();
+            errorResponse.put("status", "failure");
+            errorResponse.put("message", "没有剩余的邀请码");
+            return errorResponse;
+        }
+
+        // 生成唯一的邀请码
+        String inviteCode = generateUniqueInviteCode();
+
+        // 将邀请码保存到 `user_invite_code` 表
+        UserInviteCode userInviteCode = new UserInviteCode();
+        userInviteCode.setUserId(userId);
+        userInviteCode.setInviteCode(inviteCode);
+        userInviteCode.setCreatedAt(java.time.LocalDateTime.now());
+
+        userInviteCodeRepository.save(userInviteCode);
+
+        // 更新用户的 `invite_count`，减少1
+        user.setInviteCount(user.getInviteCount() - 1);
+        userRepository.save(user);
+
+        // 返回成功信息
+        Map<String, Object> response = new HashMap<>();
+        response.put("status", "success");
+        response.put("message", "邀请码生成成功");
+        response.put("invite_code", inviteCode);
+
+        return response;
+    }
+
+    // 生成唯一的邀请码，使用26个字母（大小写）
+    private String generateUniqueInviteCode() {
+        String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+        StringBuilder inviteCode = new StringBuilder();
+
+        Random random = new Random();
+        for (int i = 0; i < 10; i++) {
+            inviteCode.append(characters.charAt(random.nextInt(characters.length())));
+        }
+
+        return inviteCode.toString();
+    }
+
+    public String registerUser(String username, String email, String password, String role, String inviteCode) {
+        // 检查邮箱是否已经注册
+        Optional<Users> existingEmailUser = userRepository.findByEmail(email);
+        if (existingEmailUser.isPresent()) {
+            return "该邮箱已被注册";
+        }
+
+        // 检查用户名是否已经存在
+        Optional<Users> existingUsernameUser = userRepository.findByUsername(username); // 需要根据用户名查询
+        if (existingUsernameUser.isPresent()) {
+            return "该用户名已被注册";
+        }
+
+        // 检查邀请码是否有效
+        if (inviteCode == null || inviteCode.isEmpty()) {
+            return "邀请码不能为空";
+        }
+
+        Optional<UserInviteCode> invite = userInviteCodeRepository.findByInviteCode(inviteCode);
+        if (invite.isEmpty() || invite.get().getIsUsed()) {
+            return "邀请码无效或已被使用";
+        }
+
+        // 设置默认等级为2（由于邀请码有效）
+        Long level = 2L;
+
+        // 设置默认头像 URL
+        String avatarUrl = "https://example.com/default-avatar.jpg";  // 默认头像
+
+        // 获取邀请码对应的用户ID
+        UserInviteCode inviteEntity = invite.get();
+        Long inviteUserId = inviteEntity.getUserId();
+
+        // 创建新用户
+        Users newUser = new Users();
+        newUser.setUsername(username);
+        newUser.setEmail(email);
+        newUser.setPassword(password);
+        newUser.setRole(role);
+        newUser.setInviteCount(0);  // 初始邀请码数量为 0
+        newUser.setLevel(level);
+        newUser.setAvatarUrl(avatarUrl);  // 设置默认头像
+        newUser.setRegistrationDate(new java.util.Date());  // 设置注册日期
+        newUser.setCurrentExperience(0);  // 默认经验为 0
+        newUser.setCurrentSeedingHours(0f);  // 默认做种时长为 0
+        newUser.setRegistrationTime(new java.util.Date());  // 设置注册时间为当前时间
+
+        // 保存用户信息
+        userRepository.save(newUser);
+
+        // 更新邀请码的使用状态
+        inviteEntity.setIsUsed(true);
+        userInviteCodeRepository.save(inviteEntity);
+
+        return "用户注册成功";
+    }
 
 
-import com.baomidou.mybatisplus.extension.service.IService;
+    public String loginUser(String username, String password) {
+        // 检查用户是否存在
+        Optional<Users> userOptional = userRepository.findByUsername(username);
+        if (userOptional.isEmpty()) {
+            return "用户名不存在";
+        }
 
-import com.example.myproject.entity.User;
+        Users user = userOptional.get();
 
-public interface UserService extends IService<User> {
-    User loginService(String username, String password);
+        // 检查密码是否正确
+        if (!user.getPassword().equals(password)) {
+            return "密码错误";
+        }
+
+        // 登录成功
+        return "登录成功";
+    }
+
+    public String changePassword(Long userId, String oldPassword, String newPassword, String confirmPassword) {
+        // 查找用户
+        Users user = userRepository.findById(userId).orElse(null);
+
+        if (user == null) {
+            return "用户不存在";
+        }
+
+        // 检查旧密码是否正确
+        if (!user.getPassword().equals(oldPassword)) {
+            return "旧密码错误";
+        }
+
+        // 检查新密码和确认密码是否一致
+        if (!newPassword.equals(confirmPassword)) {
+            return "新密码与确认密码不一致";
+        }
+
+        // 更新密码
+        user.setPassword(newPassword);
+        userRepository.save(user);
+
+        return "密码修改成功";
+    }
+
+    // 获取用户个人资料
+    public Map<String, Object> getProfile(Long userId) {
+        Optional<Users> userOptional = userRepository.findById(userId);
+
+        // 如果用户不存在，返回null或者可以抛出异常
+        if (userOptional.isEmpty()) {
+            return null; // 可以返回 null 或者根据需要返回错误信息
+        }
+
+        Users user = userOptional.get();
+
+        // 将需要的字段放入 Map 中
+        Map<String, Object> profile = new LinkedHashMap<>();
+        profile.put("avatarUrl", user.getAvatarUrl());
+        profile.put("username", user.getUsername());
+        profile.put("email", user.getEmail());
+        profile.put("gender", user.getGender());
+        profile.put("description", user.getDescription());
+        profile.put("hobbies", user.getHobbies());
+        profile.put("level", user.getLevel());
+        profile.put("Experience", user.getCurrentExperience());
+        profile.put("uploadCount", user.getUploadCount());
+        profile.put("downloadCount", user.getDownloadCount());
+        profile.put("shareRate", user.getShareRate());
+        profile.put("registrationTime", user.getRegistrationTime());
+
+        return profile;
+    }
+
+    // 修改用户个人资料
+    public boolean editProfile(Long userId, String avatarUrl, String nickname, String gender, String description, String hobbies) {
+        Optional<Users> userOptional = userRepository.findById(userId);
+
+        // 如果用户不存在，返回false
+        if (userOptional.isEmpty()) {
+            return false; // 用户不存在
+        }
+
+        Users user = userOptional.get();
+
+        // 更新用户资料，只有传入值才会更新对应字段
+        if (avatarUrl != null) {
+            user.setAvatarUrl(avatarUrl);
+        }
+        if (nickname != null) {
+            user.setUsername(nickname);
+        }
+        if (gender != null) {
+            user.setGender(gender);
+        }
+        if (description != null) {
+            user.setDescription(description);
+        }
+        if (hobbies != null) {
+            user.setHobbies(hobbies);
+        }
+
+        // 保存更新后的用户信息
+        userRepository.save(user);
+
+        return true; // 更新成功
+    }
+
+    public Map<String, Object> calculateShareRate(Long userId) {
+        // 查找用户
+        Users user = userRepository.findById(userId).orElse(null);
+        if (user == null) {
+            return Map.of("status", "error", "message", "用户不存在");
+        }
+
+        // 获取上传量和下载量
+        Float uploadCount = user.getUploadCount();
+        Float downloadCount = user.getDownloadCount();
+
+        // 计算分享率
+        Float shareRate = 0f;  // 默认分享率为0
+        if (downloadCount != 0) {
+            shareRate = uploadCount / downloadCount;  // 分享率 = 上传量 / 下载量
+        }
+
+        // 更新用户的分享率
+        user.setShareRate(shareRate);
+        userRepository.save(user);
+
+        // 返回结果
+        return Map.of("status", "success", "message", "分享率计算成功", "shareRate", shareRate);
+    }
 
 
-    boolean preRegisterUser(User user);
-
-
-    boolean verifyEmail(String email, String token);
-
-
-    boolean checkEmailExists(String email);
-
-    boolean checkPassword(Long userId, String rawPassword);
-
-
-//    Integer getUserId();
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/example/myproject/service/serviceImpl/UserServiceImpl.java b/src/main/java/com/example/myproject/service/serviceImpl/UserServiceImpl.java
deleted file mode 100644
index d0718fe..0000000
--- a/src/main/java/com/example/myproject/service/serviceImpl/UserServiceImpl.java
+++ /dev/null
@@ -1,122 +0,0 @@
-
-package com.example.myproject.service.serviceImpl;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.example.myproject.mapper.UserMapper;
-import com.example.myproject.mapper.VerificationTokenMapper;
-import com.example.myproject.entity.User;
-import com.example.myproject.entity.VerificationToken;
-import com.example.myproject.service.EmailService;
-import com.example.myproject.service.UserService;
-import org.apache.commons.lang3.RandomStringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.stereotype.Service;
-import java.time.Instant;
-import java.time.temporal.ChronoUnit;
-//登录注册
-@Service
-public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
-    private static final Logger log = LoggerFactory.getLogger(UserServiceImpl.class);
-    @Autowired
-    private UserMapper userMapper; // Using MyBatis-Plus mapper
-    @Autowired
-    private EmailServiceImpl emailService;
-    @Autowired
-    private VerificationTokenMapper verificationTokenMapper; // Using MyBatis-Plus mapper
-    @Autowired
-    private PasswordEncoder passwordEncoder; // Injecting password encoder
-    @Override
-    public User loginService(String username, String password) {
-        log.debug("Attempting login with username: {}, password: {}", username, password);
-        User user = userMapper.selectOne(new QueryWrapper<User>().eq("username", username).eq("password", password));
-        if (user != null) {
-            user.setPassword("");  // Clear the password before returning
-            log.debug("Login successful, User ID: {}", user.getId());
-        } else {
-            log.debug("Login failed, incorrect username or password.");
-        }
-        return user;
-    }
-    @Override
-    public boolean preRegisterUser(User user) {
-        log.debug("Pre-registering user, username: {}, email: {}", user.getUsername(), user.getEmail());
-        // 检查用户名或邮箱是否已存在
-        boolean userExists = userMapper.selectOne(new QueryWrapper<User>().eq("username", user.getUsername())) != null ||
-                userMapper.selectOne(new QueryWrapper<User>().eq("email", user.getEmail())) != null;
-        if (userExists) {
-            log.debug("Pre-registration failed, username or email already exists.");
-            return false;  // 用户名或邮箱已经存在
-        }
-        // 加密密码
-        String encryptedPassword = passwordEncoder.encode(user.getPassword());
-        // 生成验证码
-        String token = RandomStringUtils.randomNumeric(6);
-        // 设置过期时间为当前时间加一小时
-        Instant expiryDate = Instant.now().plus(1, ChronoUnit.HOURS);
-        // 创建验证令牌对象
-        VerificationToken verificationToken = new VerificationToken(
-                token,
-                user.getUsername(),
-                user.getEmail(),
-                encryptedPassword,
-                expiryDate
-        );
-        // 插入验证令牌
-        int rowsInserted = verificationTokenMapper.insert(verificationToken);
-        if (rowsInserted > 0) {
-            // 发送验证邮件
-            emailService.sendVerificationEmail(user.getEmail(), token);
-            log.debug("Pre-registration successful, verification code: {}, expiry date: {}", token, expiryDate);
-            return true;  // 注册前验证成功
-        } else {
-            log.error("Failed to insert verification token into database.");
-            return false;  // 如果插入验证令牌失败，返回失败
-        }
-    }
-    @Override
-    public boolean verifyEmail(String email, String token) {
-        log.debug("Verifying email, email: {}, token: {}", email, token);
-        VerificationToken verificationToken = verificationTokenMapper.selectOne(
-                new QueryWrapper<VerificationToken>().eq("token", token).eq("email", email)
-        );
-        if (verificationToken != null && !verificationToken.isExpired()) {
-            log.debug("Verification code is valid, username: {}", verificationToken.getUsername());
-            User user = userMapper.selectOne(new QueryWrapper<User>().eq("email", email));
-            if (user == null) {
-                user = new User();
-                user.setEmail(email);
-                user.setUsername(verificationToken.getUsername());
-                user.setPassword(verificationToken.getPassword());
-                user.setEmailVerified(true);
-                userMapper.insert(user);  // Save new user
-                log.debug("New user created, User ID: {}", user.getId());
-            } else {
-                user.setEmailVerified(true);
-                userMapper.updateById(user);  // Update existing user
-                log.debug("User email verified, User ID: {}", user.getId());
-            }
-            verificationTokenMapper.delete(new QueryWrapper<VerificationToken>().eq("token", token)); // Clean up the token
-            log.debug("Verification code deleted.");
-            return true;
-        }
-        log.debug("Verification code is invalid or expired.");
-        return false;
-    }
-    public boolean checkEmailExists(String email) {
-        log.debug("检查邮箱是否存在，邮箱：{}", email);
-        boolean exists = userMapper.selectCount(new QueryWrapper<User>().eq("email", email)) > 0;
-        log.debug("邮箱存在状态：{}", exists);
-        return exists;
-    }
-    public boolean checkPassword(Long userId, String password) {
-        User user = userMapper.selectById(userId);
-        if (user == null) {
-            throw new RuntimeException("用户不存在");
-        }
-        String encryptedPassword = user.getPassword();
-        return passwordEncoder.matches(password, encryptedPassword);
-    }
-}
diff --git a/src/main/java/com/example/myproject/utils/Result.java b/src/main/java/com/example/myproject/utils/Result.java
new file mode 100644
index 0000000..e46f828
--- /dev/null
+++ b/src/main/java/com/example/myproject/utils/Result.java
@@ -0,0 +1,131 @@
+package com.example.myproject.utils;
+
+
+import org.springframework.http.ResponseEntity;
+
+public class Result<T> {
+    private String code;
+    private String msg;
+    private T data;
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public T getData() {
+        return data;
+    }
+
+    public void setData(T data) {
+        this.data = data;
+    }
+
+    public Result() {
+    }
+
+    public Result(T data) {
+        this.data = data;
+    }
+
+    public static Result success(ResponseEntity<?> resultMap, String 兴趣小组创建成功) {
+        Result result = new Result<>();
+        result.setCode("200");
+        result.setMsg("成功");
+        return result;
+    }
+
+    public static <T> Result<T> success(T data) {
+        Result<T> result = new Result<>(data);
+        result.setCode("200");
+        result.setMsg("成功");
+        return result;
+    }
+    public static <T> Result<T> success(String msg) {
+        Result result = new Result();
+        result.setCode("200");
+        result.setMsg("成功");
+        return result;
+    }
+
+    public static <T> Result<T> success(T data,String msg) {
+        Result<T> result = new Result<>(data);
+        result.setCode("200");
+        result.setMsg(msg);
+        return result;
+    }
+
+    public static Result error(String code, String msg) {
+        Result result = new Result();
+        result.setCode(code);
+        result.setMsg(msg);
+        return result;
+    }
+    /**
+     * 创建一个表示文件大小超出限制的结果对象。
+     *
+     * @return 构造的文件过大错误结果对象
+     */
+    public static Result fileTooLarge() {
+        Result result = new Result();
+        result.setCode("413");
+        result.setMsg("文件大小超出限制。");
+        return result;
+    }
+
+    /**
+     * 创建一个表示文件格式不支持的结果对象。
+     *
+     * @return 构造的文件格式错误结果对象
+     */
+    public static Result unsupportedFileType() {
+        Result result = new Result();
+        result.setCode("415");
+        result.setMsg("不支持的文件格式。");
+        return result;
+    }
+
+    /**
+     * 创建一个表示文件未找到的结果对象。
+     *
+     * @return 构造的文件未找到错误结果对象
+     */
+    public static Result fileNotFound() {
+        Result result = new Result();
+        result.setCode("404");
+        result.setMsg("文件未找到。");
+        return result;
+    }
+
+    /**
+     * 创建一个表示文件存储错误的结果对象。
+     *
+     * @param errorMsg 详细错误信息
+     * @return 构造的文件存储错误结果对象
+     */
+    public static Result fileStorageError(String errorMsg) {
+        Result result = new Result();
+        result.setCode("500");
+        result.setMsg("文件存储错误: " + errorMsg);
+        return result;
+    }
+
+    public static Result permissionDenied() {
+        Result result = new Result();
+        result.setCode("401");
+        result.setMsg("权限不足，无法执行该操作。");
+        return result;
+    }
+
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 0590333..b878c88 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,12 +1,12 @@
 server.port=8080
-spring.datasource.url=jdbc:mysql://localhost:3306/pt
+spring.datasource.url=jdbc:mysql://localhost:3306/ptProject
 spring.datasource.username=root
-spring.datasource.password=root
+spring.datasource.password=123456
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
 
 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
 
-
 # Mail configuration
 spring.mail.password=tljnebonhzhqecda
 spring.mail.username=2370523716@qq.com
@@ -15,12 +15,10 @@
 spring.mail.properties.mail.smtp.auth=true
 spring.mail.properties.mail.smtp.starttls.enable=true
 
-
 spring.jpa.enabled=false
-spring.jpa.hibernate.ddl-auto=none
+spring.jpa.hibernate.ddl-auto=update
 spring.jpa.open-in-view=false
 
-# tracker??
 pt.tracker.port=6969
 
 pt.tracker.torrent-dir=${user.dir}/data/torrents
@@ -28,4 +26,4 @@
 pt.tracker.allow-foreign=false
 pt.tracker.announce-url=/custom-announce
 
-mybatis-plus.mapper-locations=classpath:/mapper/**/*.xml
+mybatis-plus.mapper-locations=classpath:/mapper/**/*.xml
\ No newline at end of file
diff --git a/src/test/java/com/example/myproject/controller/CommentControllerTest.java b/src/test/java/com/example/myproject/controller/CommentControllerTest.java
new file mode 100644
index 0000000..9dedd29
--- /dev/null
+++ b/src/test/java/com/example/myproject/controller/CommentControllerTest.java
@@ -0,0 +1,81 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.entity.Comments;
+import com.example.myproject.entity.Users;
+import com.example.myproject.service.CommentService;
+import com.example.myproject.utils.Result;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.*;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.mockito.Mockito.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+class CommentControllerTest {
+
+    @InjectMocks
+    private CommentController commentController;
+    @Mock
+    private CommentService commentService;
+
+    @Mock
+    private Users mockUser;
+
+    @BeforeEach
+    void setup() {
+        MockitoAnnotations.openMocks(this);
+    }
+
+    // 测试添加评论
+    @Test
+    void addCommentTest() {
+        Long postId = 1L;
+        Comments comment = new Comments();
+        comment.setUserId(1L);
+        comment.setContent("This is a comment");
+        comment.setParentComment(0L);
+        // 模拟服务层的行为
+        doNothing().when(commentService).addComment(eq(postId), eq(comment));
+
+        // 调用控制器的方法
+        String result = commentController.addComment(postId, comment);
+
+        // 验证返回的结果
+        assertEquals("Comment added successfully!", result);
+
+        // 验证服务方法是否被调用
+        verify(commentService, times(1)).addComment(eq(postId), eq(comment));
+    }
+
+    // 测试获取评论
+    @Test
+    void getCommentsByPostIdTest() {
+        Long postId = 1L;
+
+        // 模拟评论数据
+        Map<String, Object> commentData = new HashMap<>();
+        commentData.put("commentId", 1L);
+        commentData.put("content", "This is a comment");
+        commentData.put("userId", 1L);
+        commentData.put("nickname", "user1");
+
+        // 模拟服务层的行为
+        when(commentService.getCommentsByPostId(postId)).thenReturn(List.of(commentData));
+
+        // 调用控制器的方法
+        List<Map<String, Object>> comments = commentController.getCommentsByPostId(postId);
+
+        // 验证返回的评论数据
+        assertEquals(1, comments.size());
+        assertEquals("This is a comment", comments.get(0).get("content"));
+        assertEquals("user1", comments.get(0).get("nickname"));
+
+        // 验证服务方法是否被调用
+        verify(commentService, times(1)).getCommentsByPostId(postId);
+    }
+}
diff --git a/src/test/java/com/example/myproject/controller/DynamicControllerTest.java b/src/test/java/com/example/myproject/controller/DynamicControllerTest.java
new file mode 100644
index 0000000..7392162
--- /dev/null
+++ b/src/test/java/com/example/myproject/controller/DynamicControllerTest.java
@@ -0,0 +1,168 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.controller.DynamicController;
+import com.example.myproject.service.DynamicService;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.springframework.http.ResponseEntity;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.mockito.Mockito.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+class DynamicControllerTest {
+
+    @InjectMocks
+    private DynamicController dynamicController;
+
+    @Mock
+    private DynamicService dynamicService;
+
+    @BeforeEach
+    void setup() {
+        MockitoAnnotations.openMocks(this);
+    }
+
+    // 测试创建动态接口
+    @Test
+    void testCreateDynamic() {
+        Long userId = 1L;
+        String content = "This is a test dynamic";
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("dynamicId", 123L);
+        mockResponse.put("message", "动态创建成功");
+
+        // 模拟 dynamicService.createDynamic 返回
+        when(dynamicService.createDynamic(userId, null, content, null)).thenReturn(mockResponse);
+
+        // 调用控制器方法
+        Map<String, Object> responseMap = dynamicController.createDynamic(userId, null, content, null);
+        ResponseEntity<Map<String, Object>> responseEntity = ResponseEntity.ok(responseMap);
+
+        // 验证返回的结果
+        assertEquals(200, responseEntity.getStatusCodeValue());
+        assertEquals("动态创建成功", responseEntity.getBody().get("message"));
+        assertEquals(123L, responseEntity.getBody().get("dynamicId"));
+    }
+
+
+    // 测试删除动态接口
+    @Test
+    void testDeleteDynamic() {
+        Long dynamicId = 1L;
+        // 模拟 dynamicService.deleteDynamic 方法行为
+        doNothing().when(dynamicService).deleteDynamic(dynamicId);
+
+        // 调用控制器方法
+        ResponseEntity<String> response = dynamicController.deleteDynamic(dynamicId);
+
+        // 验证返回的结果
+        assertEquals(200, response.getStatusCodeValue());
+        assertEquals("动态删除成功", response.getBody());
+    }
+
+    // 测试添加评论接口
+    @Test
+    void testAddComment() {
+        Long userId = 1L;
+        Long dynamicId = 1L;
+        Map<String, String> commentContent = new HashMap<>();
+        commentContent.put("content", "This is a test comment");
+
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("comment_id", 101L);
+        mockResponse.put("message", "评论成功");
+
+        // 模拟 dynamicService.addComment 返回
+        when(dynamicService.addComment(userId, dynamicId, "This is a test comment")).thenReturn(mockResponse);
+
+        // 调用控制器方法
+        ResponseEntity<Map<String, Object>> response = dynamicController.addComment(userId, dynamicId, commentContent);
+
+        // 验证返回的结果
+        assertEquals(200, response.getStatusCodeValue());
+        assertEquals("评论成功", response.getBody().get("message"));
+        assertEquals(101L, response.getBody().get("comment_id"));
+    }
+
+    // 测试获取用户动态接口
+    @Test
+    void testGetAllUserDynamics() {
+        Long userId = 1L;
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "success");
+        mockResponse.put("dynamic", "mock_dynamic_data");
+
+        // 模拟 dynamicService.getAllUserDynamics 返回
+        when(dynamicService.getAllUserDynamics(userId)).thenReturn(mockResponse);
+
+        // 调用控制器方法
+        ResponseEntity<Map<String, Object>> response = dynamicController.getAllUserDynamics(userId);
+
+        // 验证返回的结果
+        assertEquals(200, response.getStatusCodeValue());
+        assertEquals("success", response.getBody().get("status"));
+        assertNotNull(response.getBody().get("dynamic"));
+    }
+
+    // 测试获取所有好友动态接口
+    @Test
+    void testGetAllUserAndFriendsDynamics() {
+        Long userId = 1L;
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "success");
+        mockResponse.put("dynamic", "mock_friend_dynamic_data");
+
+        // 模拟 dynamicService.getAllUserAndFriendsDynamics 返回
+        when(dynamicService.getAllUserAndFriendsDynamics(anyList())).thenReturn(mockResponse);
+
+        // 调用控制器方法
+        ResponseEntity<Map<String, Object>> response = dynamicController.getAllUserAndFriendsDynamics(userId);
+
+        // 验证返回的结果
+        assertEquals(200, response.getStatusCodeValue());
+        assertEquals("success", response.getBody().get("status"));
+        assertNotNull(response.getBody().get("dynamic"));
+    }
+
+    // 测试点赞动态接口
+    @Test
+    void testLikeDynamic() {
+        Map<String, Long> request = new HashMap<>();
+        request.put("userId", 1L);
+        request.put("dynamicId", 1L);
+
+        // 模拟 dynamicService.likeDynamic 返回
+        when(dynamicService.likeDynamic(1L, 1L)).thenReturn(true);
+
+        // 调用控制器方法
+        ResponseEntity<String> response = dynamicController.likeDynamic(request);
+
+        // 验证返回的结果
+        assertEquals(200, response.getStatusCodeValue());
+        assertEquals("Like successful", response.getBody());
+    }
+
+    // 测试取消点赞接口
+    @Test
+    void testUnlikeDynamic() {
+        Map<String, Long> request = new HashMap<>();
+        request.put("userId", 1L);
+        request.put("dynamicId", 1L);
+
+        // 模拟 dynamicService.unlikeDynamic 返回
+        when(dynamicService.unlikeDynamic(1L, 1L)).thenReturn(true);
+
+        // 调用控制器方法
+        ResponseEntity<String> response = dynamicController.unlikeDynamic(request);
+
+        // 验证返回的结果
+        assertEquals(200, response.getStatusCodeValue());
+        assertEquals("Unlike successful", response.getBody());
+    }
+}
diff --git a/src/test/java/com/example/myproject/controller/GroupControllerTest.java b/src/test/java/com/example/myproject/controller/GroupControllerTest.java
new file mode 100644
index 0000000..d8c8c2c
--- /dev/null
+++ b/src/test/java/com/example/myproject/controller/GroupControllerTest.java
@@ -0,0 +1,209 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.controller.GroupController;
+import com.example.myproject.entity.Group;
+import com.example.myproject.entity.GroupComments;
+import com.example.myproject.service.GroupService;
+import com.example.myproject.utils.Result;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.springframework.http.ResponseEntity;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.mockito.Mockito.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+
+class GroupControllerTest {
+
+    @InjectMocks
+    private GroupController groupController;
+
+    @Mock
+    private GroupService groupService;
+
+    @BeforeEach
+    void setup() {
+        MockitoAnnotations.openMocks(this);
+    }
+
+    // 测试创建小组
+
+    @Test
+    void createGroupTest() {
+        Group groupRequest = new Group();
+        groupRequest.setGroupName("Test Group");
+        groupRequest.setDescription("This is a test group");
+
+        // 模拟服务层的返回值
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("group_id", 1L);
+        mockResponse.put("message", "兴趣小组创建成功");
+
+        ResponseEntity<Map<String, Object>> mockResponseEntity = ResponseEntity.ok(mockResponse);
+        when(groupService.createGroup(groupRequest)).thenReturn(mockResponseEntity);
+
+        // 调用控制器的方法
+        ResponseEntity<?> responseEntity = groupController.createGroup(groupRequest);
+        Map<String, Object> resultMap = (Map<String, Object>) responseEntity.getBody();
+        Result<Map<String, Object>> result = Result.success(resultMap, "兴趣小组创建成功");
+
+        // 验证返回的结果
+        assertEquals("200", result.getCode());
+        assertEquals("兴趣小组创建成功", result.getMsg());
+        assertEquals(1L, result.getData().get("group_id"));
+    }
+
+
+    // 测试加入小组接口
+    @Test
+    void testJoinGroup() {
+        Long groupId = 1L;
+        Long userId = 1L;
+
+        // 模拟服务层的返回值
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "success");
+        mockResponse.put("message", "成功加入小组");
+        when(groupService.joinGroup(groupId, userId)).thenReturn(ResponseEntity.ok(mockResponse));
+
+        // 调用控制器方法
+        Map<String, Long> requestBody = Map.of("user_id", userId);
+        ResponseEntity<Map<String, Object>> response = groupController.joinGroup(groupId, requestBody);
+
+        // 验证返回的结果
+        assertEquals(200, response.getStatusCodeValue());
+        assertEquals("success", response.getBody().get("status"));
+        assertEquals("成功加入小组", response.getBody().get("message"));
+    }
+
+    // 测试退出小组接口
+    @Test
+    void testLeaveGroup() {
+        Long groupId = 1L;
+        Long userId = 1L;
+
+        // 模拟服务层的返回值
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "success");
+        mockResponse.put("message", "成功退出小组");
+        when(groupService.leaveGroup(groupId, userId)).thenReturn(ResponseEntity.ok(mockResponse));
+
+        // 调用控制器方法
+        Map<String, Long> requestBody = Map.of("user_id", userId);
+        ResponseEntity<Map<String, Object>> response = groupController.leaveGroup(groupId, requestBody);
+
+        // 验证返回的结果
+        assertEquals(200, response.getStatusCodeValue());
+        assertEquals("success", response.getBody().get("status"));
+        assertEquals("成功退出小组", response.getBody().get("message"));
+    }
+
+    // 测试获取小组成员接口
+    @Test
+    void testGetGroupMembers() {
+        Long groupId = 1L;
+
+        // 模拟服务层的返回值
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "success");
+        mockResponse.put("members", "mock_members");
+        when(groupService.getGroupMembers(groupId)).thenReturn(ResponseEntity.ok(mockResponse));
+
+        // 调用控制器方法
+        ResponseEntity<Map<String, Object>> response = groupController.getGroupMembers(groupId);
+
+        // 验证返回的结果
+        assertEquals(200, response.getStatusCodeValue());
+        assertEquals("success", response.getBody().get("status"));
+        assertNotNull(response.getBody().get("members"));
+    }
+
+    // 测试发布帖子
+    @Test
+    void createPostTest() {
+        Long groupId = 1L;
+        Long userId = 2L;
+        String postContent = "Test post content";
+        String title = "Test post title";
+
+        // 模拟服务层的返回值
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("post_id", 1L);
+        mockResponse.put("message", "帖子创建成功");
+
+        when(groupService.createPost(groupId, userId, postContent, title, null)).thenReturn(mockResponse);
+
+        // 调用控制器的方法
+        Map<String, Object> result = groupController.createPost(groupId, userId, postContent, title, null).getBody();
+
+        // 验证返回的结果
+        assertEquals("帖子创建成功", result.get("message"));
+        assertEquals(1L, result.get("post_id"));
+    }
+
+    // 测试点赞帖子
+    @Test
+    void likePostTest() {
+        Long postId = 1L;
+
+        // 模拟服务层的返回值
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "success");
+        mockResponse.put("message", "点赞成功");
+
+        when(groupService.likePost(postId)).thenReturn(mockResponse);
+
+        // 调用控制器的方法
+        Map<String, Object> resultMap = groupController.likePost(postId).getBody();
+
+        // 验证返回的结果
+        assertEquals("点赞成功", resultMap.get("message"));
+    }
+
+    // 测试取消点赞
+    @Test
+    void unlikePostTest() {
+        Long postId = 1L;
+
+        // 模拟服务层的返回值
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "success");
+        mockResponse.put("message", "取消点赞成功");
+
+        when(groupService.unlikePost(postId)).thenReturn(mockResponse);
+
+        // 调用控制器的方法
+        Map<String, Object> resultMap = groupController.unlikePost(postId).getBody();
+
+        // 验证返回的结果
+        assertEquals("取消点赞成功", resultMap.get("message"));
+    }
+
+    // 测试添加评论
+    @Test
+    void addCommentTest() {
+        Long postId = 1L;
+        GroupComments comment = new GroupComments();
+        comment.setUserId(2L);
+        comment.setContent("This is a comment");
+
+        // 模拟服务层的返回值
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "success");
+        mockResponse.put("message", "评论成功");
+
+        when(groupService.addComment(postId, comment)).thenReturn(mockResponse);
+
+        // 调用控制器的方法
+        Map<String, Object> resultMap = groupController.addComment(postId, comment).getBody();
+
+        // 验证返回的结果
+        assertEquals("评论成功", resultMap.get("message"));
+    }
+}
diff --git a/src/test/java/com/example/myproject/controller/LevelControllerTest.java b/src/test/java/com/example/myproject/controller/LevelControllerTest.java
new file mode 100644
index 0000000..c3d77b9
--- /dev/null
+++ b/src/test/java/com/example/myproject/controller/LevelControllerTest.java
@@ -0,0 +1,126 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.controller.LevelController;
+import com.example.myproject.service.LevelService;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.springframework.http.ResponseEntity;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.mockito.Mockito.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+class LevelControllerTest {
+
+    @InjectMocks
+    private LevelController levelController;
+
+    @Mock
+    private LevelService levelService;
+
+    @BeforeEach
+    void setup() {
+        MockitoAnnotations.openMocks(this);
+    }
+
+    // 测试获取用户经验接口
+    @Test
+    void testGetExperience() {
+        Long userId = 1L;
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("current_experience", 1500);
+        mockResponse.put("level", "Intermediate");
+        mockResponse.put("next_level_experience", 2000);
+
+        // 模拟 levelService.getUserExperience 返回
+        when(levelService.getUserExperience(userId)).thenReturn(mockResponse);
+
+        // 调用控制器方法
+        Map<String, Object> response = levelController.getExperience(userId);
+
+        // 验证返回的结果
+        assertEquals(1500, response.get("current_experience"));
+        assertEquals("Intermediate", response.get("level"));
+        assertEquals(2000, response.get("next_level_experience"));
+    }
+
+    // 测试更新用户经验接口
+    @Test
+    void testUpdateExperience() {
+        Long userId = 1L;
+        Integer experience = 500;
+        String source = "Quest";
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "success");
+        mockResponse.put("message", "经验更新成功");
+        mockResponse.put("current_experience", 2000);
+
+        Map<String, Object> params = new HashMap<>();
+        params.put("user_id", userId);
+        params.put("experience", experience);
+        params.put("source", source);
+
+        // 模拟 levelService.updateExperience 返回
+        when(levelService.updateExperience(userId, experience, source)).thenReturn(mockResponse);
+
+        // 调用控制器方法
+        Map<String, Object> response = levelController.updateExperience(params);
+
+        // 验证返回的结果
+        assertEquals("success", response.get("status"));
+        assertEquals("经验更新成功", response.get("message"));
+        assertEquals(2000, response.get("current_experience"));
+    }
+
+    // 测试检查用户升级条件接口
+    @Test
+    void testCheckUpgrade() {
+        Long userId = 1L;
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("can_upgrade", true);
+        mockResponse.put("next_level_experience", 2000);
+        mockResponse.put("current_experience", 1500);
+
+        // 模拟 levelService.checkUpgrade 返回
+        when(levelService.checkUpgrade(userId)).thenReturn(mockResponse);
+
+        // 调用控制器方法
+        Map<String, Object> response = levelController.checkUpgrade(userId);
+
+        // 验证返回的结果
+        assertTrue((Boolean) response.get("can_upgrade"));
+        assertEquals(2000, response.get("next_level_experience"));
+        assertEquals(1500, response.get("current_experience"));
+    }
+
+    // 测试升级用户等级接口
+    @Test
+    void testUpgradeUserLevel() {
+        Long userId = 1L;
+        Boolean canUpgrade = true;
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "success");
+        mockResponse.put("message", "升级成功");
+        mockResponse.put("new_level", "Advanced");
+
+        Map<String, Object> request = new HashMap<>();
+        request.put("user_id", userId);
+        request.put("can_upgrade", canUpgrade);
+
+        // 模拟 levelService.upgradeUserLevel 返回
+        when(levelService.upgradeUserLevel(userId, canUpgrade)).thenReturn(mockResponse);
+
+        // 调用控制器方法
+        Map<String, Object> response = levelController.upgradeUserLevel(request);
+
+        // 验证返回的结果
+        assertEquals("success", response.get("status"));
+        assertEquals("升级成功", response.get("message"));
+        assertEquals("Advanced", response.get("new_level"));
+    }
+}
diff --git a/src/test/java/com/example/myproject/controller/PostControllerTest.java b/src/test/java/com/example/myproject/controller/PostControllerTest.java
new file mode 100644
index 0000000..21eeddd
--- /dev/null
+++ b/src/test/java/com/example/myproject/controller/PostControllerTest.java
@@ -0,0 +1,206 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.entity.Post;
+import com.example.myproject.service.PostService;
+import com.example.myproject.utils.Result;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.mockito.Mockito.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+class PostControllerTest {
+
+    @InjectMocks
+    private PostController postController;
+
+    @Mock
+    private PostService postService;
+
+    @BeforeEach
+    void setup() {
+        MockitoAnnotations.openMocks(this);
+    }
+
+    // 测试创建帖子
+    void createPostTest() {
+        Long userId = 1L;
+        String postContent = "Test Post Content";
+        String title = "Test Post Title";
+        MultipartFile[] imageFiles = new MultipartFile[0];  // Empty array for simplicity
+
+        // 模拟服务层的返回值
+        Map<String, Object> responseMap = new HashMap<>();
+        responseMap.put("postNo", 123L);
+        responseMap.put("message", "帖子创建成功");
+
+        when(postService.createPost(userId, postContent, title, imageFiles)).thenReturn(responseMap);
+
+        // 调用控制器的方法
+        Map<String, Object> resultMap = postController.createPost(userId, postContent, title, imageFiles);
+
+        // 手动将 Map<String, Object> 包装到 Result.success()
+        Result<Map<String, Object>> result = Result.success(resultMap, "帖子创建成功");
+
+        // 验证返回的结果
+        assertEquals("200", result.getCode());
+        assertEquals("帖子创建成功", result.getMsg());
+        assertEquals(123L, result.getData().get("postNo"));
+    }
+
+    // 测试编辑帖子
+    @Test
+    void updatePostTest() {
+        Long postId = 1L;
+        Post post = new Post();
+        post.setPostNo(postId);
+        post.setTitle("Updated Title");
+        post.setPostContent("Updated Content");
+
+        // 模拟服务层的行为
+        doNothing().when(postService).updatePost(postId, post);
+
+        // 调用控制器的方法
+        String result = postController.updatePost(postId, post);
+
+        // 验证返回的结果
+        assertEquals("Post updated successfully!", result);
+    }
+
+    // 测试删除帖子
+    @Test
+    void deletePostTest() {
+        Long postId = 1L;
+
+        // 模拟服务层的行为
+        doNothing().when(postService).deletePost(postId);
+
+        // 调用控制器的方法
+        String result = postController.deletePost(postId);
+
+        // 验证返回的结果
+        assertEquals("Post deleted successfully!", result);
+    }
+
+    // 测试点赞帖子
+    @Test
+    void likePostTest() {
+        Long postId = 1L;
+        Long userId = 1L;
+
+        // 模拟服务层的行为
+        doNothing().when(postService).likePost(postId, userId);
+
+        // 创建请求体
+        Map<String, Long> requestBody = new HashMap<>();
+        requestBody.put("user_id", userId);
+
+        // 调用控制器的方法
+        String result = postController.likePost(postId, requestBody);
+
+        // 验证返回的结果
+        assertEquals("Post liked successfully!", result);
+    }
+
+    // 测试取消点赞帖子
+    @Test
+    void unlikePostTest() {
+        Long postId = 1L;
+        Long userId = 1L;
+
+        // 模拟服务层的行为
+        doNothing().when(postService).unlikePost(postId, userId);
+
+        // 创建请求体
+        Map<String, Long> requestBody = new HashMap<>();
+        requestBody.put("user_id", userId);
+
+        // 调用控制器的方法
+        String result = postController.unlikePost(postId, requestBody);
+
+        // 验证返回的结果
+        assertEquals("Post unliked successfully!", result);
+    }
+
+    // 测试收藏帖子
+    @Test
+    void collectPostTest() {
+        Long postId = 1L;
+        Long userId = 1L;
+
+        // 模拟服务层的行为
+        doNothing().when(postService).collectPost(postId, userId);
+
+        // 创建请求体
+        Map<String, Long> requestBody = new HashMap<>();
+        requestBody.put("user_id", userId);
+
+        // 调用控制器的方法
+        String result = postController.collectPost(postId, requestBody);
+
+        // 验证返回的结果
+        assertEquals("Post collected successfully!", result);
+    }
+
+    // 测试取消收藏帖子
+    @Test
+    void uncollectPostTest() {
+        Long postId = 1L;
+        Long userId = 1L;
+
+        // 模拟服务层的行为
+        doNothing().when(postService).uncollectPost(postId, userId);
+
+        // 创建请求体
+        Map<String, Long> requestBody = new HashMap<>();
+        requestBody.put("user_id", userId);
+
+        // 调用控制器的方法
+        String result = postController.uncollectPost(postId, requestBody);
+
+        // 验证返回的结果
+        assertEquals("Post uncollected successfully!", result);
+    }
+
+    // 测试获取所有帖子
+    @Test
+    void getAllPostsTest() {
+        // 模拟服务层的行为
+        Map<String, Object> responseMap = new HashMap<>();
+        responseMap.put("total", 5);
+        responseMap.put("posts", new ArrayList<>());
+
+        when(postService.getAllPosts()).thenReturn(responseMap);
+
+        // 调用控制器的方法
+        Map<String, Object> result = postController.getAllPosts();
+
+        // 验证返回的结果
+        assertEquals(5, result.get("total"));
+    }
+
+    // 测试根据帖子ID获取帖子
+    @Test
+    void getPostByIdTest() {
+        Long postId = 1L;
+        Map<String, Object> responseMap = new HashMap<>();
+        responseMap.put("postNo", 123L);
+        responseMap.put("message", "Post details");
+
+        // 模拟服务层的行为
+        when(postService.getPostById(postId)).thenReturn(responseMap);
+
+        // 调用控制器的方法
+        Map<String, Object> result = postController.getPostById(postId);
+
+        // 验证返回的结果
+        assertEquals("Post details", result.get("message"));
+        assertEquals(123L, result.get("postNo"));
+    }
+}
diff --git a/src/test/java/com/example/myproject/controller/TaskControllerTest.java b/src/test/java/com/example/myproject/controller/TaskControllerTest.java
new file mode 100644
index 0000000..5d7609d
--- /dev/null
+++ b/src/test/java/com/example/myproject/controller/TaskControllerTest.java
@@ -0,0 +1,205 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.controller.TaskController;
+import com.example.myproject.service.TaskService;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.springframework.http.ResponseEntity;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.mockito.Mockito.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+class TaskControllerTest {
+
+    @InjectMocks
+    private TaskController taskController;
+
+    @Mock
+    private TaskService taskService;
+
+    @BeforeEach
+    void setup() {
+        MockitoAnnotations.openMocks(this);
+    }
+
+    // 测试获取当前用户的新手任务列表接口
+    @Test
+    void testGetAllTasks() {
+        Long userId = 1L;
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("tasks", "mock_tasks");
+
+        // 模拟 taskService.getAllTasksForUser 返回
+        when(taskService.getAllTasksForUser(userId)).thenReturn(mockResponse);
+
+        // 创建请求体
+        Map<String, Object> request = new HashMap<>();
+        request.put("user_id", userId);
+
+        // 调用控制器方法
+        Map<String, Object> response = taskController.getAllTasks(request);
+
+        // 验证返回的结果
+        assertEquals("mock_tasks", response.get("tasks"));
+    }
+
+    // 测试更新任务状态接口
+    @Test
+    void testUpdateTaskStatus() {
+        Long userId = 1L;
+        String taskId = "task_123";
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "success");
+        mockResponse.put("message", "任务状态已更新");
+
+        // 模拟 taskService.updateTaskStatus 返回
+        when(taskService.updateTaskStatus(userId, taskId)).thenReturn(mockResponse);
+
+        // 创建请求体
+        Map<String, Object> request = new HashMap<>();
+        request.put("user_id", userId);
+        request.put("task_id", taskId);
+
+        // 调用控制器方法
+        Map<String, Object> response = taskController.updateTaskStatus(request);
+
+        // 验证返回的结果
+        assertEquals("success", response.get("status"));
+        assertEquals("任务状态已更新", response.get("message"));
+    }
+
+    // 测试获取当前经验和任务奖励接口
+    @Test
+    void testGetExperience() {
+        Long userId = 1L;
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("current_experience", 1500);
+        mockResponse.put("level", "Intermediate");
+        mockResponse.put("reward", Map.of("experience", 1000, "points", 200));
+
+        // 模拟 taskService.getUserExperience 返回
+        when(taskService.getUserExperience(userId)).thenReturn(mockResponse);
+
+        // 创建请求体
+        Map<String, Object> request = new HashMap<>();
+        request.put("user_id", userId);
+
+        // 调用控制器方法
+        Map<String, Object> response = taskController.getExperience(request);
+
+        // 验证返回的结果
+        assertEquals(1500, response.get("current_experience"));
+        assertEquals("Intermediate", response.get("level"));
+        assertTrue(response.containsKey("reward"));
+    }
+
+    // 测试获取当前的指引步骤接口
+    @Test
+    void testGetNewStep() {
+        Long userId = 1L;
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("current_step", "step_1");
+        mockResponse.put("total_steps", 5);
+        mockResponse.put("step_description", "Complete the introduction task");
+
+        // 模拟 taskService.getNewStep 返回
+        when(taskService.getNewStep(userId)).thenReturn(mockResponse);
+
+        // 创建请求体
+        Map<String, Object> request = new HashMap<>();
+        request.put("user_id", userId);
+
+        // 调用控制器方法
+        Map<String, Object> response = taskController.getNewStep(request);
+
+        // 验证返回的结果
+        assertEquals("step_1", response.get("current_step"));
+        assertEquals(5, response.get("total_steps"));
+        assertEquals("Complete the introduction task", response.get("step_description"));
+    }
+
+    // 测试更新进度接口
+    @Test
+    void testUpdateProgress() {
+        Long userId = 1L;
+        String taskId = "task_123";
+        Integer progress = 50;
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "success");
+        mockResponse.put("message", "进度已更新");
+
+        // 模拟 taskService.updateTaskProgress 返回
+        when(taskService.updateTaskProgress(userId, taskId, progress)).thenReturn(mockResponse);
+
+        // 创建请求体
+        Map<String, Object> request = new HashMap<>();
+        request.put("user_id", userId);
+        request.put("task_id", taskId);
+        request.put("progress", progress);
+
+        // 调用控制器方法
+        Map<String, Object> response = taskController.updateProgress(request);
+
+        // 验证返回的结果
+        assertEquals("success", response.get("status"));
+        assertEquals("进度已更新", response.get("message"));
+    }
+
+    // 测试领取任务奖励接口
+    @Test
+    void testRewardClaim() {
+        Long userId = 1L;
+        String taskId = "task_123";
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "success");
+        mockResponse.put("message", "奖励已领取");
+        mockResponse.put("reward", Map.of("experience", 1000, "points", 200));
+
+        // 模拟 taskService.claimReward 返回
+        when(taskService.claimReward(userId, taskId)).thenReturn(mockResponse);
+
+        // 创建请求体
+        Map<String, Object> request = new HashMap<>();
+        request.put("user_id", userId);
+        request.put("task_id", taskId);
+
+        // 调用控制器方法
+        Map<String, Object> response = taskController.rewardClaim(request);
+
+        // 验证返回的结果
+        assertEquals("success", response.get("status"));
+        assertEquals("奖励已领取", response.get("message"));
+        assertTrue(response.containsKey("reward"));
+    }
+
+    // 测试检查任务奖励状态接口
+    @Test
+    void testRewardReview() {
+        Long userId = 1L;
+        String taskId = "task_123";
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "reward_not_issued");
+        mockResponse.put("message", "任务奖励未被领取");
+
+        // 模拟 taskService.checkRewardStatus 返回
+        when(taskService.checkRewardStatus(userId, taskId)).thenReturn(mockResponse);
+
+        // 创建请求体
+        Map<String, Object> request = new HashMap<>();
+        request.put("user_id", userId);
+        request.put("task_id", taskId);
+
+        // 调用控制器方法
+        Map<String, Object> response = taskController.rewardReview(request);
+
+        // 验证返回的结果
+        assertEquals("reward_not_issued", response.get("status"));
+        assertEquals("任务奖励未被领取", response.get("message"));
+    }
+}
diff --git a/src/test/java/com/example/myproject/controller/UserControllerTest.java b/src/test/java/com/example/myproject/controller/UserControllerTest.java
index d332f31..a97e169 100644
--- a/src/test/java/com/example/myproject/controller/UserControllerTest.java
+++ b/src/test/java/com/example/myproject/controller/UserControllerTest.java
@@ -1,162 +1,234 @@
 package com.example.myproject.controller;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.example.myproject.entity.User;
-import com.example.myproject.service.EmailService;
+import com.example.myproject.entity.Users;
 import com.example.myproject.service.UserService;
-import com.example.myproject.mapper.UserMapper;
-import com.example.myproject.mapper.VerificationTokenMapper;
-import com.example.myproject.common.base.Result;
+import com.example.myproject.repository.UserRepository;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.mockito.*;
-import org.springframework.http.ResponseEntity;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.AuthenticationException;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
 
-import static org.junit.jupiter.api.Assertions.*;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
 import static org.mockito.Mockito.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 class UserControllerTest {
 
+    @Mock
+    private UserService userService;
+
+    @Mock
+    private UserRepository userRepository;
+
     @InjectMocks
     private UserController userController;
 
-    @Mock
-    private UserService userService;
-    @Mock
-    private UserMapper userMapper;
-    @Mock
-    private EmailService emailService;
-    @Mock
-    private AuthenticationManager authenticationManager;
-    @Mock
-    private VerificationTokenMapper verificationTokenMapper;
-
     @BeforeEach
-    void setup() {
+    void setUp() {
+        // 初始化模拟对象
         MockitoAnnotations.openMocks(this);
     }
 
+    // 测试生成邀请码接口
     @Test
-    void loginController_success() {
-        String username = "testuser";
-        String password = "testpass";
-        User mockUser = new User();
-        mockUser.setUsername(username);
+    void testGenerateInviteCode() {
+        // 设置输入数据
+        Map<String, Object> request = new HashMap<>();
+        request.put("user_id", 1L);
 
-        Authentication mockAuth = mock(Authentication.class);
-        when(authenticationManager.authenticate(any())).thenReturn(mockAuth);
-        when(userMapper.selectOne(any(QueryWrapper.class))).thenReturn(mockUser);
+        // 模拟服务层的返回
+        Map<String, Object> responseMap = new HashMap<>();
+        responseMap.put("status", "success");
+        responseMap.put("message", "邀请码生成成功");
+        responseMap.put("invite_code", "ABC123XYZ");
 
-        Result result = userController.loginController(username, password);
+        when(userService.generateInviteCode(1L)).thenReturn(responseMap);
 
-        assertEquals("200", result.getCode());
-        assertEquals(mockUser, result.getData());
+        // 调用控制器方法
+        Map<String, Object> resultMap = userController.generateInviteCode(request);
+
+        // 验证返回结果
+        assertEquals("success", resultMap.get("status"));
+        assertEquals("邀请码生成成功", resultMap.get("message"));
+        assertEquals("ABC123XYZ", resultMap.get("invite_code"));
+
+        // 验证服务层方法是否被调用
+        verify(userService, times(1)).generateInviteCode(1L);
     }
 
-
+    // 测试用户修改密码接口
     @Test
-    void loginController_failure() {
-        String username = "user";
-        String password = "wrongpass";
+    void testChangePassword() {
+        Long userId = 1L;
+        Map<String, Object> request = new HashMap<>();
+        request.put("user_id", userId);
+        request.put("old_password", "oldPassword");
+        request.put("new_password", "newPassword");
+        request.put("confirm_password", "newPassword");
 
-        // 模拟认证失败，抛出 Bad credentials 异常
-        when(authenticationManager.authenticate(any()))
-                .thenThrow(new AuthenticationException("Bad credentials") {});
+        // 模拟服务层的返回
+        String resultMessage = "密码修改成功";
+        when(userService.changePassword(userId, "oldPassword", "newPassword", "newPassword"))
+                .thenReturn(resultMessage);
 
+        // 调用控制器方法
+        Map<String, Object> resultMap = userController.changePassword(request);
 
-        // 调用登录接口
-        Result result = userController.loginController(username, password);
+        // 验证返回结果
+        assertEquals("密码修改成功", resultMap.get("message"));
+        assertEquals("success", resultMap.get("status"));
 
-        // 断言返回的状态码和消息
-        assertEquals("401", result.getCode());
-        assertTrue(result.getMsg().contains("登录失败"));
+        // 验证服务层方法是否被调用
+        verify(userService, times(1)).changePassword(userId, "oldPassword", "newPassword", "newPassword");
+    }
+
+    // 测试用户注册接口
+    @Test
+    void testRegister() {
+        // 设置输入数据
+        Map<String, Object> request = new HashMap<>();
+        request.put("username", "testUser");
+        request.put("email", "test@example.com");
+        request.put("password", "password");
+        request.put("role", "USER");
+        request.put("inviteCode", "12345");
+
+        // 模拟服务层的返回
+        String resultMessage = "用户注册成功";
+        when(userService.registerUser("testUser", "test@example.com", "password", "USER", "12345"))
+                .thenReturn(resultMessage);
+
+        // 调用控制器方法
+        Map<String, Object> resultMap = userController.register(request);
+
+        // 验证返回结果
+        assertEquals("用户注册成功", resultMap.get("msg"));
+
+        // 验证服务层方法是否被调用
+        verify(userService, times(1)).registerUser("testUser", "test@example.com", "password", "USER", "12345");
     }
 
     @Test
-    void registerController_emailExists() {
-        User user = new User();
+    void testLogin() {
+        String username = "testUser";
+        String password = "password";
+
+        // 模拟服务层的返回
+        String loginMessage = "登录成功";
+        when(userService.loginUser("testUser", "password")).thenReturn(loginMessage);
+
+        // 模拟用户查询
+        Users user = new Users();
+        user.setUserId(1L);
+        user.setUsername("testUser");
         user.setEmail("test@example.com");
+        when(userRepository.findByUsername("testUser")).thenReturn(Optional.of(user));
 
-        when(userService.checkEmailExists(user.getEmail())).thenReturn(true);
+        // 设置请求数据
+        Map<String, Object> request = new HashMap<>();
+        request.put("username", username);
+        request.put("password", password);
 
-        Result result = userController.registerController(user);
+        // 调用控制器方法
+        Map<String, Object> resultMap = userController.login(request);
 
-        assertEquals("邮箱冲突", result.getCode());
+        // 验证返回结果
+        assertEquals("登录成功", resultMap.get("msg"));
+
+        // 验证 user 不是 Map 类型，而是 Users 对象
+        Users loggedInUser = (Users) resultMap.get("user");
+        assertNotNull(loggedInUser);
+        assertEquals("testUser", loggedInUser.getUsername());
+        assertEquals("test@example.com", loggedInUser.getEmail());
+
+        // 验证服务层方法是否被调用
+        verify(userService, times(1)).loginUser("testUser", "password");
     }
 
+
+    // 测试获取用户个人资料接口
     @Test
-    void registerController_success() {
-        User user = new User();
+    void testGetProfile() {
+        Long userId = 1L;
+
+        // Mock 用户数据
+        Users user = new Users();
+        user.setUserId(userId);
+        user.setUsername("testUser");
         user.setEmail("test@example.com");
+        user.setAvatarUrl("https://example.com/avatar.jpg");
 
-        when(userService.checkEmailExists(user.getEmail())).thenReturn(false);
-        when(userService.preRegisterUser(user)).thenReturn(true);
+        // 模拟服务层返回
+        Map<String, Object> profileData = new HashMap<>();
+        profileData.put("avatarUrl", user.getAvatarUrl());
+        profileData.put("username", user.getUsername());
+        profileData.put("email", user.getEmail());
+        when(userService.getProfile(userId)).thenReturn(profileData);
 
-        Result result = userController.registerController(user);
+        // 调用控制器方法
+        Map<String, Object> resultMap = userController.getProfile(userId);
 
-        assertEquals("200", result.getCode());
-        assertEquals(user.getEmail(), ((User) result.getData()).getEmail());
+        // 验证返回结果
+        assertEquals("testUser", resultMap.get("username"));
+        assertEquals("test@example.com", resultMap.get("email"));
+        assertEquals("https://example.com/avatar.jpg", resultMap.get("avatarUrl"));
+
+        // 验证服务层方法是否被调用
+        verify(userService, times(1)).getProfile(userId);
+    }
+
+    // 测试修改用户个人资料接口
+    @Test
+    void testEditProfile() {
+        Long userId = 1L;
+        Map<String, Object> profileData = new HashMap<>();
+        profileData.put("avatarUrl", "https://example.com/avatar.jpg");
+        profileData.put("nickname", "newNickname");
+        profileData.put("gender", "Male");
+        profileData.put("description", "Updated description");
+        profileData.put("hobbies", "Reading, Hiking");
+
+        // 模拟服务层的返回
+        when(userService.editProfile(userId, "https://example.com/avatar.jpg", "newNickname", "Male", "Updated description", "Reading, Hiking"))
+                .thenReturn(true);
+
+        // 调用控制器方法
+        Map<String, String> resultMap = userController.editProfile(userId, profileData);
+
+        // 验证返回结果
+        assertEquals("用户资料更新成功", resultMap.get("message"));
+
+        // 验证服务层方法是否被调用
+        verify(userService, times(1)).editProfile(userId, "https://example.com/avatar.jpg", "newNickname", "Male", "Updated description", "Reading, Hiking");
     }
 
     @Test
-    void verifyEmailCode_success() {
-        when(userService.verifyEmail("test@example.com", "123456")).thenReturn(true);
+    public void testCalculateShareRate() {
+        Long userId = 1L;
 
-        UserController.VerificationRequest request = new UserController.VerificationRequest();
-        request.setEmail("test@example.com");
-        request.setCode("123456");
+        // 模拟 UserService 返回的结果
+        Map<String, Object> expectedResponse = Map.of(
+                "status", "success",
+                "message", "分享率计算成功",
+                "shareRate", 0.5f
+        );
 
-        Result result = userController.verifyEmailCode(request);
+        // 设置用户数据
+        Users user = new Users();
+        user.setUserId(userId);
+        user.setUploadCount(50f);  // 上传量为50
+        user.setDownloadCount(100f);  // 下载量为100
+        when(userService.calculateShareRate(userId)).thenReturn(expectedResponse);
 
-        assertEquals("200", result.getCode());
-    }
+        // 调用接口
+        Map<String, Object> result = userController.calculateShareRate(userId);
 
-    @Test
-    void verifyEmailCode_failure() {
-        when(userService.verifyEmail("test@example.com", "000000")).thenReturn(false);
-
-        UserController.VerificationRequest request = new UserController.VerificationRequest();
-        request.setEmail("test@example.com");
-        request.setCode("000000");
-
-        Result result = userController.verifyEmailCode(request);
-
-        assertEquals("验证失败", result.getCode());
-    }
-
-    @Test
-    void checkPassword_success() {
-        when(userService.checkPassword(1L, "abc123")).thenReturn(true);
-
-        Result<String> result = userController.checkPassword(1L, "abc123");
-
-        assertEquals("200", result.getCode());
-        assertEquals("原始密码输入正确", result.getMsg());
-    }
-
-    @Test
-    void checkPassword_failure() {
-        when(userService.checkPassword(1L, "wrong")).thenReturn(false);
-
-        Result<String> result = userController.checkPassword(1L, "wrong");
-
-        assertEquals("305", result.getCode());
-        assertEquals("原始密码输入错误", result.getMsg());
-    }
-
-    @Test
-    void sendVerificationEmail_userNotFound() {
-        UserController.EmailRequest request = new UserController.EmailRequest();
-        request.setEmail("notfound@example.com");
-
-        when(userMapper.selectOne(any())).thenReturn(null);
-
-        ResponseEntity<Result> response = userController.sendVerificationEmail(request);
-
-        assertEquals(400, response.getStatusCodeValue());
-        assertEquals("1", response.getBody().getCode());
+        // 验证结果
+        assertEquals(expectedResponse, result);
+        verify(userService, times(1)).calculateShareRate(userId);  // 验证服务方法是否被调用
     }
 }
diff --git a/src/test/java/com/example/myproject/controller/UserFollowControllerTest.java b/src/test/java/com/example/myproject/controller/UserFollowControllerTest.java
new file mode 100644
index 0000000..29bf47f
--- /dev/null
+++ b/src/test/java/com/example/myproject/controller/UserFollowControllerTest.java
@@ -0,0 +1,132 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.controller.UserFollowController;
+import com.example.myproject.service.UserFollowService;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.springframework.http.ResponseEntity;
+import java.util.List;
+
+import java.util.Map;
+
+import static org.mockito.Mockito.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+class UserFollowControllerTest {
+
+    @InjectMocks
+    private UserFollowController userFollowController;
+
+    @Mock
+    private UserFollowService userFollowService;
+
+    @BeforeEach
+    void setup() {
+        MockitoAnnotations.openMocks(this);
+    }
+
+    // 测试用户关注接口
+    @Test
+    void testFollow() {
+        Long followerId = 1L;
+        Long followedId = 2L;
+        Map<String, Object> mockResponse = Map.of(
+                "status", "success",
+                "message", "关注成功"
+        );
+
+        // 模拟 userFollowService.follow() 返回
+        when(userFollowService.follow(followerId, followedId)).thenReturn(mockResponse);
+
+        // 创建请求体
+        Map<String, Long> request = Map.of("follower_id", followerId);
+
+        // 调用控制器方法
+        ResponseEntity<Map<String, Object>> responseEntity = userFollowController.follow(followedId, request);
+
+        // 验证返回的状态码和内容
+        assertEquals(200, responseEntity.getStatusCodeValue());
+        assertEquals("success", responseEntity.getBody().get("status"));
+        assertEquals("关注成功", responseEntity.getBody().get("message"));
+    }
+
+    // 测试取消关注接口
+    @Test
+    void testUnfollow() {
+        Long followerId = 1L;
+        Long followedId = 2L;
+        Map<String, Object> mockResponse = Map.of(
+                "status", "success",
+                "message", "取消关注成功"
+        );
+
+        // 模拟 userFollowService.unfollow() 返回
+        when(userFollowService.unfollow(followerId, followedId)).thenReturn(mockResponse);
+
+        // 创建请求体
+        Map<String, Long> request = Map.of("follower_id", followerId);
+
+        // 调用控制器方法
+        ResponseEntity<Map<String, Object>> responseEntity = userFollowController.unfollow(followedId, request);
+
+        // 验证返回的状态码和内容
+        assertEquals(200, responseEntity.getStatusCodeValue());
+        assertEquals("success", responseEntity.getBody().get("status"));
+        assertEquals("取消关注成功", responseEntity.getBody().get("message"));
+    }
+
+    // 测试获取某个用户的粉丝列表接口
+    @Test
+    void testGetFollowers() {
+        Long userId = 1L;
+        Map<String, Object> mockResponse = Map.of(
+                "status", "success",
+                "total", 2,
+                "followers", List.of(
+                        Map.of("user_id", 2L, "username", "user2", "avatar_url", "url2"),
+                        Map.of("user_id", 3L, "username", "user3", "avatar_url", "url3")
+                )
+        );
+
+        // 模拟 userFollowService.getFollowers() 返回
+        when(userFollowService.getFollowers(userId)).thenReturn(mockResponse);
+
+        // 调用控制器方法
+        ResponseEntity<Map<String, Object>> responseEntity = userFollowController.getFollowers(userId);
+
+        // 验证返回的状态码和内容
+        assertEquals(200, responseEntity.getStatusCodeValue());
+        assertEquals("success", responseEntity.getBody().get("status"));
+        assertEquals(2, responseEntity.getBody().get("total"));
+        assertEquals(2, ((List<?>) responseEntity.getBody().get("followers")).size());
+    }
+
+    // 测试获取某个用户的关注列表接口
+    @Test
+    void testGetFollowing() {
+        Long userId = 1L;
+        Map<String, Object> mockResponse = Map.of(
+                "status", "success",
+                "total", 2,
+                "following", List.of(
+                        Map.of("user_id", 2L, "username", "user2", "avatar_url", "url2"),
+                        Map.of("user_id", 3L, "username", "user3", "avatar_url", "url3")
+                )
+        );
+
+        // 模拟 userFollowService.getFollowing() 返回
+        when(userFollowService.getFollowing(userId)).thenReturn(mockResponse);
+
+        // 调用控制器方法
+        ResponseEntity<Map<String, Object>> responseEntity = userFollowController.getFollowing(userId);
+
+        // 验证返回的状态码和内容
+        assertEquals(200, responseEntity.getStatusCodeValue());
+        assertEquals("success", responseEntity.getBody().get("status"));
+        assertEquals(2, responseEntity.getBody().get("total"));
+        assertEquals(2, ((List<?>) responseEntity.getBody().get("following")).size());
+    }
+}
diff --git a/src/test/java/com/example/myproject/controller/UserMessageControllerTest.java b/src/test/java/com/example/myproject/controller/UserMessageControllerTest.java
new file mode 100644
index 0000000..4fcbcc7
--- /dev/null
+++ b/src/test/java/com/example/myproject/controller/UserMessageControllerTest.java
@@ -0,0 +1,95 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.service.UserMessageService;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.springframework.http.ResponseEntity;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.when;
+
+class UserMessageControllerTest {
+
+    @InjectMocks
+    private UserMessageController userMessageController;
+
+    @Mock
+    private UserMessageService userMessageService;
+
+    @BeforeEach
+    void setup() {
+        MockitoAnnotations.openMocks(this);
+    }
+
+    @Test
+    void testSendMessage() {
+        // 准备测试数据
+        Map<String, Object> params = new HashMap<>();
+        params.put("sender_id", 1L);
+        params.put("receiver_id", 2L);
+        params.put("content", "测试消息");
+
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "success");
+        mockResponse.put("message", "私信发送成功");
+        mockResponse.put("message_id", 100L);
+
+        // 模拟Service方法调用
+        when(userMessageService.sendMessage(1L, 2L, "测试消息")).thenReturn(mockResponse);
+
+        // 执行测试
+        ResponseEntity<Map<String, Object>> response = userMessageController.sendMessage(params);
+
+        // 验证结果
+        assertEquals(200, response.getStatusCodeValue());
+        assertEquals("success", response.getBody().get("status"));
+        assertEquals("私信发送成功", response.getBody().get("message"));
+        assertEquals(100L, response.getBody().get("message_id"));
+    }
+
+    @Test
+    void testGetUserMessages() {
+        // 准备测试数据
+        Long userId = 1L;
+
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "success");
+        mockResponse.put("messages", new HashMap<>());
+
+        // 模拟Service方法调用
+        when(userMessageService.getUserMessages(userId)).thenReturn(mockResponse);
+
+        // 执行测试
+        ResponseEntity<Map<String, Object>> response = userMessageController.getUserMessages(userId);
+
+        // 验证结果
+        assertEquals(200, response.getStatusCodeValue());
+        assertEquals("success", response.getBody().get("status"));
+    }
+
+    @Test
+    void testGetMessage() {
+        // 准备测试数据
+        Long messageId = 1L;
+
+        Map<String, Object> mockResponse = new HashMap<>();
+        mockResponse.put("status", "success");
+        mockResponse.put("message", new HashMap<>());
+
+        // 模拟Service方法调用
+        when(userMessageService.getMessage(messageId)).thenReturn(mockResponse);
+
+        // 执行测试
+        ResponseEntity<Map<String, Object>> response = userMessageController.getMessage(messageId);
+
+        // 验证结果
+        assertEquals(200, response.getStatusCodeValue());
+        assertEquals("success", response.getBody().get("status"));
+    }
+}
\ No newline at end of file
diff --git a/target/classes/application.properties b/target/classes/application.properties
index 0590333..b878c88 100644
--- a/target/classes/application.properties
+++ b/target/classes/application.properties
@@ -1,12 +1,12 @@
 server.port=8080
-spring.datasource.url=jdbc:mysql://localhost:3306/pt
+spring.datasource.url=jdbc:mysql://localhost:3306/ptProject
 spring.datasource.username=root
-spring.datasource.password=root
+spring.datasource.password=123456
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
 
 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
 
-
 # Mail configuration
 spring.mail.password=tljnebonhzhqecda
 spring.mail.username=2370523716@qq.com
@@ -15,12 +15,10 @@
 spring.mail.properties.mail.smtp.auth=true
 spring.mail.properties.mail.smtp.starttls.enable=true
 
-
 spring.jpa.enabled=false
-spring.jpa.hibernate.ddl-auto=none
+spring.jpa.hibernate.ddl-auto=update
 spring.jpa.open-in-view=false
 
-# tracker??
 pt.tracker.port=6969
 
 pt.tracker.torrent-dir=${user.dir}/data/torrents
@@ -28,4 +26,4 @@
 pt.tracker.allow-foreign=false
 pt.tracker.announce-url=/custom-announce
 
-mybatis-plus.mapper-locations=classpath:/mapper/**/*.xml
+mybatis-plus.mapper-locations=classpath:/mapper/**/*.xml
\ No newline at end of file
diff --git a/target/classes/com/example/myproject/MyProjectApplication.class b/target/classes/com/example/myproject/MyProjectApplication.class
index a1281a9..1ebd349 100644
--- a/target/classes/com/example/myproject/MyProjectApplication.class
+++ b/target/classes/com/example/myproject/MyProjectApplication.class
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/CommentController.class b/target/classes/com/example/myproject/controller/CommentController.class
new file mode 100644
index 0000000..8a43a45
--- /dev/null
+++ b/target/classes/com/example/myproject/controller/CommentController.class
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/DynamicController.class b/target/classes/com/example/myproject/controller/DynamicController.class
new file mode 100644
index 0000000..c760452
--- /dev/null
+++ b/target/classes/com/example/myproject/controller/DynamicController.class
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/GroupController.class b/target/classes/com/example/myproject/controller/GroupController.class
new file mode 100644
index 0000000..931f773
--- /dev/null
+++ b/target/classes/com/example/myproject/controller/GroupController.class
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/LevelController.class b/target/classes/com/example/myproject/controller/LevelController.class
new file mode 100644
index 0000000..d4ce91e
--- /dev/null
+++ b/target/classes/com/example/myproject/controller/LevelController.class
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/PostController.class b/target/classes/com/example/myproject/controller/PostController.class
new file mode 100644
index 0000000..2b5c472
--- /dev/null
+++ b/target/classes/com/example/myproject/controller/PostController.class
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/TaskController.class b/target/classes/com/example/myproject/controller/TaskController.class
new file mode 100644
index 0000000..75d9b89
--- /dev/null
+++ b/target/classes/com/example/myproject/controller/TaskController.class
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/UserController$EmailRequest.class b/target/classes/com/example/myproject/controller/UserController$EmailRequest.class
deleted file mode 100644
index 04ffd85..0000000
--- a/target/classes/com/example/myproject/controller/UserController$EmailRequest.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/UserController$VerificationRequest.class b/target/classes/com/example/myproject/controller/UserController$VerificationRequest.class
deleted file mode 100644
index 272505e..0000000
--- a/target/classes/com/example/myproject/controller/UserController$VerificationRequest.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/UserController.class b/target/classes/com/example/myproject/controller/UserController.class
index cd1ab13..77c1a9c 100644
--- a/target/classes/com/example/myproject/controller/UserController.class
+++ b/target/classes/com/example/myproject/controller/UserController.class
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/UserFollowController.class b/target/classes/com/example/myproject/controller/UserFollowController.class
new file mode 100644
index 0000000..f630e60
--- /dev/null
+++ b/target/classes/com/example/myproject/controller/UserFollowController.class
Binary files differ
diff --git a/target/classes/com/example/myproject/controller/UserMessageController.class b/target/classes/com/example/myproject/controller/UserMessageController.class
new file mode 100644
index 0000000..797258c
--- /dev/null
+++ b/target/classes/com/example/myproject/controller/UserMessageController.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/Collections.class b/target/classes/com/example/myproject/entity/Collections.class
new file mode 100644
index 0000000..ffb2c1b
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/Collections.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/Comments.class b/target/classes/com/example/myproject/entity/Comments.class
new file mode 100644
index 0000000..7aae61e
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/Comments.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/DynamicComment.class b/target/classes/com/example/myproject/entity/DynamicComment.class
new file mode 100644
index 0000000..7bcb0bf
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/DynamicComment.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/DynamicLikes.class b/target/classes/com/example/myproject/entity/DynamicLikes.class
new file mode 100644
index 0000000..4d8b010
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/DynamicLikes.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/ExperienceHistory.class b/target/classes/com/example/myproject/entity/ExperienceHistory.class
new file mode 100644
index 0000000..cab0e4e
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/ExperienceHistory.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/FriendRelation.class b/target/classes/com/example/myproject/entity/FriendRelation.class
new file mode 100644
index 0000000..48ce2ae
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/FriendRelation.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/Group.class b/target/classes/com/example/myproject/entity/Group.class
new file mode 100644
index 0000000..e53132e
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/Group.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/GroupComments.class b/target/classes/com/example/myproject/entity/GroupComments.class
new file mode 100644
index 0000000..3a4c88f
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/GroupComments.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/GroupMembers.class b/target/classes/com/example/myproject/entity/GroupMembers.class
new file mode 100644
index 0000000..8e73b86
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/GroupMembers.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/GroupPost.class b/target/classes/com/example/myproject/entity/GroupPost.class
new file mode 100644
index 0000000..ff4b459
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/GroupPost.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/Level.class b/target/classes/com/example/myproject/entity/Level.class
new file mode 100644
index 0000000..83bc9b6
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/Level.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/Likes.class b/target/classes/com/example/myproject/entity/Likes.class
new file mode 100644
index 0000000..a947d72
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/Likes.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/Post.class b/target/classes/com/example/myproject/entity/Post.class
new file mode 100644
index 0000000..ff7b346
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/Post.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/Task.class b/target/classes/com/example/myproject/entity/Task.class
new file mode 100644
index 0000000..0d2fd8a
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/Task.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/UserDynamic.class b/target/classes/com/example/myproject/entity/UserDynamic.class
new file mode 100644
index 0000000..5278fed
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/UserDynamic.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/UserFollow.class b/target/classes/com/example/myproject/entity/UserFollow.class
new file mode 100644
index 0000000..af021ef
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/UserFollow.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/UserInviteCode.class b/target/classes/com/example/myproject/entity/UserInviteCode.class
new file mode 100644
index 0000000..4dd4d67
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/UserInviteCode.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/UserMessages.class b/target/classes/com/example/myproject/entity/UserMessages.class
new file mode 100644
index 0000000..ae014e1
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/UserMessages.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/UserTaskStatus.class b/target/classes/com/example/myproject/entity/UserTaskStatus.class
new file mode 100644
index 0000000..ebe2959
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/UserTaskStatus.class
Binary files differ
diff --git a/target/classes/com/example/myproject/entity/Users.class b/target/classes/com/example/myproject/entity/Users.class
new file mode 100644
index 0000000..a1c3125
--- /dev/null
+++ b/target/classes/com/example/myproject/entity/Users.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/CollectionsRepository.class b/target/classes/com/example/myproject/repository/CollectionsRepository.class
new file mode 100644
index 0000000..3a67c86
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/CollectionsRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/CommentRepository.class b/target/classes/com/example/myproject/repository/CommentRepository.class
new file mode 100644
index 0000000..3e39e08
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/CommentRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/DynamicCommentRepository.class b/target/classes/com/example/myproject/repository/DynamicCommentRepository.class
new file mode 100644
index 0000000..64ace32
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/DynamicCommentRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/DynamicLikesRepository.class b/target/classes/com/example/myproject/repository/DynamicLikesRepository.class
new file mode 100644
index 0000000..c00b453
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/DynamicLikesRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/ExperienceHistoryRepository.class b/target/classes/com/example/myproject/repository/ExperienceHistoryRepository.class
new file mode 100644
index 0000000..eb43307
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/ExperienceHistoryRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/FriendRelationRepository.class b/target/classes/com/example/myproject/repository/FriendRelationRepository.class
new file mode 100644
index 0000000..eefce96
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/FriendRelationRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/GroupCommentsRepository.class b/target/classes/com/example/myproject/repository/GroupCommentsRepository.class
new file mode 100644
index 0000000..4b7123b
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/GroupCommentsRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/GroupMembersRepository.class b/target/classes/com/example/myproject/repository/GroupMembersRepository.class
new file mode 100644
index 0000000..fbf8c8c
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/GroupMembersRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/GroupPostRepository.class b/target/classes/com/example/myproject/repository/GroupPostRepository.class
new file mode 100644
index 0000000..9a96f8a
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/GroupPostRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/GroupRepository.class b/target/classes/com/example/myproject/repository/GroupRepository.class
new file mode 100644
index 0000000..6fbf038
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/GroupRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/LevelRepository.class b/target/classes/com/example/myproject/repository/LevelRepository.class
new file mode 100644
index 0000000..7dd1782
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/LevelRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/LikesRepository.class b/target/classes/com/example/myproject/repository/LikesRepository.class
new file mode 100644
index 0000000..c8bb4fc
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/LikesRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/PostRepository.class b/target/classes/com/example/myproject/repository/PostRepository.class
new file mode 100644
index 0000000..a40ff35
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/PostRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/TaskRepository.class b/target/classes/com/example/myproject/repository/TaskRepository.class
new file mode 100644
index 0000000..3a654ae
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/TaskRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/UserDynamicRepository.class b/target/classes/com/example/myproject/repository/UserDynamicRepository.class
new file mode 100644
index 0000000..cc49ee5
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/UserDynamicRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/UserFollowRepository.class b/target/classes/com/example/myproject/repository/UserFollowRepository.class
new file mode 100644
index 0000000..dd01682
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/UserFollowRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/UserInviteCodeRepository.class b/target/classes/com/example/myproject/repository/UserInviteCodeRepository.class
new file mode 100644
index 0000000..8b7bb9f
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/UserInviteCodeRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/UserMessagesRepository.class b/target/classes/com/example/myproject/repository/UserMessagesRepository.class
new file mode 100644
index 0000000..604996a
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/UserMessagesRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/UserRepository.class b/target/classes/com/example/myproject/repository/UserRepository.class
new file mode 100644
index 0000000..4e1b3ad
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/UserRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/repository/UserTaskStatusRepository.class b/target/classes/com/example/myproject/repository/UserTaskStatusRepository.class
new file mode 100644
index 0000000..67585b1
--- /dev/null
+++ b/target/classes/com/example/myproject/repository/UserTaskStatusRepository.class
Binary files differ
diff --git a/target/classes/com/example/myproject/service/CommentService.class b/target/classes/com/example/myproject/service/CommentService.class
new file mode 100644
index 0000000..04df3f8
--- /dev/null
+++ b/target/classes/com/example/myproject/service/CommentService.class
Binary files differ
diff --git a/target/classes/com/example/myproject/service/DynamicService.class b/target/classes/com/example/myproject/service/DynamicService.class
new file mode 100644
index 0000000..8d2de39
--- /dev/null
+++ b/target/classes/com/example/myproject/service/DynamicService.class
Binary files differ
diff --git a/target/classes/com/example/myproject/service/GroupService.class b/target/classes/com/example/myproject/service/GroupService.class
new file mode 100644
index 0000000..b1e30ce
--- /dev/null
+++ b/target/classes/com/example/myproject/service/GroupService.class
Binary files differ
diff --git a/target/classes/com/example/myproject/service/LevelService.class b/target/classes/com/example/myproject/service/LevelService.class
new file mode 100644
index 0000000..7846dda
--- /dev/null
+++ b/target/classes/com/example/myproject/service/LevelService.class
Binary files differ
diff --git a/target/classes/com/example/myproject/service/PostService.class b/target/classes/com/example/myproject/service/PostService.class
new file mode 100644
index 0000000..367023b
--- /dev/null
+++ b/target/classes/com/example/myproject/service/PostService.class
Binary files differ
diff --git a/target/classes/com/example/myproject/service/TaskService.class b/target/classes/com/example/myproject/service/TaskService.class
new file mode 100644
index 0000000..f19e0f6
--- /dev/null
+++ b/target/classes/com/example/myproject/service/TaskService.class
Binary files differ
diff --git a/target/classes/com/example/myproject/service/UserFollowService.class b/target/classes/com/example/myproject/service/UserFollowService.class
new file mode 100644
index 0000000..55d5132
--- /dev/null
+++ b/target/classes/com/example/myproject/service/UserFollowService.class
Binary files differ
diff --git a/target/classes/com/example/myproject/service/UserMessageService.class b/target/classes/com/example/myproject/service/UserMessageService.class
new file mode 100644
index 0000000..2ebaf89
--- /dev/null
+++ b/target/classes/com/example/myproject/service/UserMessageService.class
Binary files differ
diff --git a/target/classes/com/example/myproject/service/UserService.class b/target/classes/com/example/myproject/service/UserService.class
index 242bb1c..003e042 100644
--- a/target/classes/com/example/myproject/service/UserService.class
+++ b/target/classes/com/example/myproject/service/UserService.class
Binary files differ
diff --git a/target/classes/com/example/myproject/service/serviceImpl/UserServiceImpl.class b/target/classes/com/example/myproject/service/serviceImpl/UserServiceImpl.class
deleted file mode 100644
index cd97158..0000000
--- a/target/classes/com/example/myproject/service/serviceImpl/UserServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/com/example/myproject/utils/Result.class b/target/classes/com/example/myproject/utils/Result.class
new file mode 100644
index 0000000..e5c5aa0
--- /dev/null
+++ b/target/classes/com/example/myproject/utils/Result.class
Binary files differ
diff --git a/target/echo-backend-1.0-SNAPSHOT.jar b/target/echo-backend-1.0-SNAPSHOT.jar
deleted file mode 100644
index 2ae979a..0000000
--- a/target/echo-backend-1.0-SNAPSHOT.jar
+++ /dev/null
Binary files differ
diff --git a/target/echo-backend-1.0-SNAPSHOT.jar.original b/target/echo-backend-1.0-SNAPSHOT.jar.original
deleted file mode 100644
index 4fd8014..0000000
--- a/target/echo-backend-1.0-SNAPSHOT.jar.original
+++ /dev/null
Binary files differ
diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties
deleted file mode 100644
index 07c940e..0000000
--- a/target/maven-archiver/pom.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-artifactId=echo-backend
-groupId=groupId
-version=1.0-SNAPSHOT
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
deleted file mode 100644
index 8994d0a..0000000
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ /dev/null
@@ -1,58 +0,0 @@
-com\example\myproject\common\Constants$FinishStatus.class
-com\example\myproject\config\MyMetaObjectHandler.class
-com\example\myproject\service\serviceImpl\UserServiceImpl.class
-com\example\myproject\controller\UserController.class
-com\example\myproject\dto\vo\TorrentVO.class
-com\example\myproject\dto\PromotionCreateDTO.class
-com\example\myproject\controller\TorrentController.class
-com\example\myproject\service\UserService.class
-com\example\myproject\common\Constants$Order.class
-com\example\myproject\entity\UserDetails.class
-com\example\myproject\common\base\Result.class
-com\example\myproject\entity\Promotion.class
-com\example\myproject\common\base\ResPage.class
-com\example\myproject\mapper\TorrentMapper.class
-com\example\myproject\config\SecurityConfig.class
-com\example\myproject\service\InvitationService.class
-com\example\myproject\service\serviceImpl\TorrentServiceImpl.class
-com\example\myproject\mapper\VerificationTokenMapper.class
-com\example\myproject\entity\TorrentEntity.class
-com\example\myproject\entity\EntityBase.class
-com\example\myproject\dto\param\TorrentParam.class
-com\example\myproject\service\serviceImpl\UserDetailsServiceImpl.class
-com\example\myproject\service\UserDetailsService.class
-com\example\myproject\service\TorrentService.class
-com\example\myproject\common\base\I18nMessage.class
-com\example\myproject\common\Constants.class
-com\example\myproject\entity\VerificationToken.class
-com\example\myproject\mapper\InvitationMapper.class
-com\example\myproject\common\base\OrderPageParam.class
-com\example\myproject\service\serviceImpl\InvitationServiceImpl.class
-com\example\myproject\config\GlobalCorsConfig.class
-com\example\myproject\mapper\UserMapper.class
-com\example\myproject\MyProjectApplication.class
-com\example\myproject\config\TrackerConfig.class
-com\example\myproject\mapper\FavoriteMapper.class
-com\example\myproject\common\Constants$Source.class
-com\example\myproject\common\ResultStatus.class
-com\example\myproject\dto\TorrentUpdateDTO.class
-com\example\myproject\common\base\PageUtil.class
-com\example\myproject\config\GlobalCorsConfig$1.class
-com\example\myproject\common\Constants$Announce.class
-com\example\myproject\common\CommonResultStatus.class
-com\example\myproject\controller\UserController$VerificationRequest.class
-com\example\myproject\service\serviceImpl\EmailServiceImpl.class
-com\example\myproject\controller\UserController$EmailRequest.class
-com\example\myproject\service\serviceImpl\PromotionServiceImpl.class
-com\example\myproject\common\base\Status.class
-com\example\myproject\common\base\PageParam.class
-com\example\myproject\mapper\PromotionMapper.class
-com\example\myproject\common\exception\RocketPTException.class
-com\example\myproject\entity\User.class
-com\example\myproject\utils\VerifyCode.class
-com\example\myproject\dto\param\InviteParam.class
-com\example\myproject\dto\param\TorrentUploadParam.class
-com\example\myproject\entity\InvitationEntity.class
-com\example\myproject\service\EmailService.class
-com\example\myproject\service\PromotionService.class
-com\example\myproject\entity\FavoriteEntity.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
deleted file mode 100644
index 15f2807..0000000
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ /dev/null
@@ -1,52 +0,0 @@
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\service\serviceImpl\InvitationServiceImpl.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\common\CommonResultStatus.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\config\SecurityConfig.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\dto\TorrentUpdateDTO.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\mapper\UserMapper.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\common\base\PageParam.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\entity\EntityBase.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\service\UserDetailsService.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\common\exception\RocketPTException.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\mapper\FavoriteMapper.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\dto\param\TorrentParam.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\mapper\PromotionMapper.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\entity\FavoriteEntity.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\entity\TorrentEntity.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\mapper\VerificationTokenMapper.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\controller\UserController.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\dto\param\InviteParam.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\common\base\I18nMessage.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\dto\param\TorrentUploadParam.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\common\base\OrderPageParam.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\entity\Promotion.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\entity\InvitationEntity.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\service\InvitationService.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\service\serviceImpl\TorrentServiceImpl.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\common\ResultStatus.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\service\serviceImpl\EmailServiceImpl.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\common\Constants.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\config\TrackerConfig.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\common\base\ResPage.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\service\PromotionService.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\service\serviceImpl\UserServiceImpl.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\service\serviceImpl\UserDetailsServiceImpl.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\service\EmailService.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\common\base\Status.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\utils\VerifyCode.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\MyProjectApplication.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\mapper\TorrentMapper.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\entity\UserDetails.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\service\UserService.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\entity\User.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\common\base\PageUtil.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\common\base\Result.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\dto\vo\TorrentVO.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\mapper\InvitationMapper.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\service\TorrentService.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\config\MyMetaObjectHandler.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\entity\VerificationToken.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\service\serviceImpl\PromotionServiceImpl.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\controller\InviteController.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\config\GlobalCorsConfig.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\dto\PromotionCreateDTO.java
-D:\study\学习资源\大三下\echo-backend\src\main\java\com\example\myproject\controller\TorrentController.java
diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
deleted file mode 100644
index bac235b..0000000
--- a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
+++ /dev/null
@@ -1,2 +0,0 @@
-com\example\myproject\controller\UserControllerTest$1.class
-com\example\myproject\controller\UserControllerTest.class
diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
deleted file mode 100644
index 188dce8..0000000
--- a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
+++ /dev/null
@@ -1,2 +0,0 @@
-D:\study\学习资源\大三下\echo-backend\src\test\java\com\example\myproject\controller\UserControllerTest.java
-D:\study\学习资源\大三下\echo-backend\src\test\java\com\example\myproject\controller\TorrentControllerTest.java
diff --git a/target/test-classes/classpath.index b/target/test-classes/classpath.index
deleted file mode 100644
index 600aff6..0000000
--- a/target/test-classes/classpath.index
+++ /dev/null
Binary files differ
diff --git a/target/test-classes/com/example/myproject/controller/UserControllerTest$1.class b/target/test-classes/com/example/myproject/controller/UserControllerTest$1.class
deleted file mode 100644
index ec2954b..0000000
--- a/target/test-classes/com/example/myproject/controller/UserControllerTest$1.class
+++ /dev/null
Binary files differ
diff --git a/target/test-classes/com/example/myproject/controller/UserControllerTest.class b/target/test-classes/com/example/myproject/controller/UserControllerTest.class
deleted file mode 100644
index 923ca09..0000000
--- a/target/test-classes/com/example/myproject/controller/UserControllerTest.class
+++ /dev/null
Binary files differ
diff --git "a/uploads/post/\345\276\256\344\277\241\345\233\276\347\211\207_20250408154007.jpg" "b/uploads/post/\345\276\256\344\277\241\345\233\276\347\211\207_20250408154007.jpg"
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ "b/uploads/post/\345\276\256\344\277\241\345\233\276\347\211\207_20250408154007.jpg"
