Merge branch 'master' of ssh://gerrit.lilingkun.com:29418/echo-backend

Change-Id: I1b49fb8032ecd127e91b5cc5fe4962e8dabfb1fd
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index d3c9b17..d38745b 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,283 +1,283 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="AutoImportSettings">
-    <option name="autoReloadType" value="SELECTIVE" />
-  </component>
-  <component name="ChangeListManager">
-    <list default="true" id="f008fe30-0711-42e2-bb33-17dcfdbad387" name="Changes" comment="pom">
-      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/controller/PromotionController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/controller/PromotionController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/mapper/PromotionMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/mapper/PromotionMapper.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/serviceImpl/PromotionServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/serviceImpl/PromotionServiceImpl.java" afterDir="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$/target/classes/com/example/myproject/mapper/PromotionMapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/mapper/PromotionMapper.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/example/myproject/service/serviceImpl/PromotionServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/service/serviceImpl/PromotionServiceImpl.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/example/myproject/service/serviceImpl/TorrentServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/service/serviceImpl/TorrentServiceImpl.class" afterDir="false" />
-    </list>
-    <option 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" />
-  </component>
-  <component name="FileTemplateManagerImpl">
-    <option name="RECENT_TEMPLATES">
-      <list>
-        <option value="Class" />
-      </list>
-    </option>
-  </component>
-  <component name="Git.Settings">
-    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
-    <option name="ROOT_SYNC" value="SYNC" />
-  </component>
-  <component name="HighlightingSettingsPerFile">
-    <setting file="file://$PROJECT_DIR$/src/main/java/com/example/myproject/config/WebConfig.java" root0="FORCE_HIGHLIGHTING" />
-    <setting file="file://$PROJECT_DIR$/src/main/java/com/example/myproject/service/PostService.java" root0="FORCE_HIGHLIGHTING" />
-  </component>
-  <component name="MarkdownSettingsMigration">
-    <option name="stateVersion" value="1" />
-  </component>
-  <component name="ProblemsViewState">
-    <option name="selectedTabId" value="CurrentFile" />
-  </component>
-  <component name="ProjectColorInfo">{
-  &quot;associatedIndex&quot;: 0
-}</component>
-  <component name="ProjectId" id="2vZNfNTEFyHApdxmHZ7Y0rlJjKB" />
-  <component name="ProjectLevelVcsManager" settingsEditedManually="true">
-    <ConfirmationsSetting value="2" id="Add" />
-  </component>
-  <component name="ProjectViewState">
-    <option name="hideEmptyMiddlePackages" value="true" />
-    <option name="showLibraryContents" value="true" />
-  </component>
-  <component name="PropertiesComponent">{
-  &quot;keyToString&quot;: {
-    &quot;ASKED_ADD_EXTERNAL_FILES&quot;: &quot;true&quot;,
-    &quot;JUnit.UserControllerTest.executor&quot;: &quot;Run&quot;,
-    &quot;JUnit.UserControllerTest.testUpdateUserAvatar.executor&quot;: &quot;Run&quot;,
-    &quot;JUnit.UserControllerTest.testUploadUserAvatar.executor&quot;: &quot;Run&quot;,
-    &quot;RequestMappingsPanelOrder0&quot;: &quot;0&quot;,
-    &quot;RequestMappingsPanelOrder1&quot;: &quot;1&quot;,
-    &quot;RequestMappingsPanelWidth0&quot;: &quot;75&quot;,
-    &quot;RequestMappingsPanelWidth1&quot;: &quot;75&quot;,
-    &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
-    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
-    &quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
-    &quot;Spring Boot.MyProjectApplication.executor&quot;: &quot;Run&quot;,
-    &quot;git-widget-placeholder&quot;: &quot;完成pt与bt交互、补充图片资源&quot;,
-    &quot;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;,
-    &quot;kotlin-language-version-configured&quot;: &quot;true&quot;,
-    &quot;last_opened_file_path&quot;: &quot;D:/Desktop/echo后端/echo-backend/images&quot;,
-    &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
-    &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
-    &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
-    &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
-    &quot;settings.editor.selected.configurable&quot;: &quot;project.propVCSSupport.DirectoryMappings&quot;,
-    &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;,
-    &quot;应用程序.MyProjectApplication.executor&quot;: &quot;Run&quot;
-  },
-  &quot;keyToStringList&quot;: {
-    &quot;DatabaseDriversLRU&quot;: [
-      &quot;mysql_aurora&quot;
-    ]
-  }
-}</component>
-  <component name="RecentsManager">
-    <key name="CopyFile.RECENT_KEYS">
-      <recent name="D:\Desktop\echo后端\echo-backend\images" />
-      <recent name="D:\Desktop\echo后端\echo-backend\uploads\dynamic" />
-      <recent name="D:\PT\echo-backend\src\main\java\com\example\myproject\config" />
-      <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">
-    <configuration name="MyProjectApplication" type="Application" factoryName="Application" temporary="true">
-      <option name="MAIN_CLASS_NAME" value="com.example.myproject.MyProjectApplication" />
-      <module name="echo-backend" />
-      <extension name="coverage">
-        <pattern>
-          <option name="PATTERN" value="com.example.myproject.*" />
-          <option name="ENABLED" value="true" />
-        </pattern>
-      </extension>
-      <method v="2">
-        <option name="Make" enabled="true" />
-      </method>
-    </configuration>
-    <configuration name="MyProjectApplication" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
-      <option name="MAIN_CLASS_NAME" value="com.example.myproject.MyProjectApplication" />
-      <module name="echo-backend" />
-      <extension name="coverage">
-        <pattern>
-          <option name="PATTERN" value="com.example.myproject.*" />
-          <option name="ENABLED" value="true" />
-        </pattern>
-      </extension>
-      <method v="2">
-        <option name="Make" enabled="true" />
-      </method>
-    </configuration>
-    <configuration name="TorrentControllerTest" 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.TorrentControllerTest" />
-      <option name="TEST_OBJECT" value="class" />
-      <method v="2">
-        <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="UserControllerTest.testUpdateUserAvatar" 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="METHOD_NAME" value="testUpdateUserAvatar" />
-      <option name="TEST_OBJECT" value="method" />
-      <method v="2">
-        <option name="Make" enabled="true" />
-      </method>
-    </configuration>
-    <configuration name="UserControllerTest.testUploadUserAvatar" 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="METHOD_NAME" value="testUploadUserAvatar" />
-      <option name="TEST_OBJECT" value="method" />
-      <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="应用程序.MyProjectApplication" />
-        <item itemvalue="JUnit.UserControllerTest.testUploadUserAvatar" />
-        <item itemvalue="JUnit.UserControllerTest.testUpdateUserAvatar" />
-        <item itemvalue="JUnit.UserControllerTest" />
-        <item itemvalue="JUnit.TorrentControllerTest" />
-      </list>
-    </recent_temporary>
-  </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">
-      <changelist id="f008fe30-0711-42e2-bb33-17dcfdbad387" name="Changes" comment="" />
-      <created>1744348740342</created>
-      <option name="number" value="Default" />
-      <option name="presentableId" value="Default" />
-      <updated>1744348740342</updated>
-      <workItem from="1749007243227" duration="1245000" />
-      <workItem from="1749033374884" duration="7535000" />
-      <workItem from="1749048857906" duration="4388000" />
-      <workItem from="1749109821491" duration="5517000" />
-      <workItem from="1749206945935" duration="4467000" />
-    </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">
+    <component name="AutoImportSettings">
+        <option name="autoReloadType" value="SELECTIVE" />
+    </component>
+    <component name="ChangeListManager">
+        <list default="true" id="f008fe30-0711-42e2-bb33-17dcfdbad387" name="Changes" comment="pom">
+            <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+            <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/controller/PromotionController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/controller/PromotionController.java" afterDir="false" />
+            <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/mapper/PromotionMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/mapper/PromotionMapper.java" afterDir="false" />
+            <change beforePath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/serviceImpl/PromotionServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/myproject/service/serviceImpl/PromotionServiceImpl.java" afterDir="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$/target/classes/com/example/myproject/mapper/PromotionMapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/mapper/PromotionMapper.class" afterDir="false" />
+            <change beforePath="$PROJECT_DIR$/target/classes/com/example/myproject/service/serviceImpl/PromotionServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/service/serviceImpl/PromotionServiceImpl.class" afterDir="false" />
+            <change beforePath="$PROJECT_DIR$/target/classes/com/example/myproject/service/serviceImpl/TorrentServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/example/myproject/service/serviceImpl/TorrentServiceImpl.class" afterDir="false" />
+        </list>
+        <option 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" />
+    </component>
+    <component name="FileTemplateManagerImpl">
+        <option name="RECENT_TEMPLATES">
+            <list>
+                <option value="Class" />
+            </list>
+        </option>
+    </component>
+    <component name="Git.Settings">
+        <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+        <option name="ROOT_SYNC" value="SYNC" />
+    </component>
+    <component name="HighlightingSettingsPerFile">
+        <setting file="file://$PROJECT_DIR$/src/main/java/com/example/myproject/config/WebConfig.java" root0="FORCE_HIGHLIGHTING" />
+        <setting file="file://$PROJECT_DIR$/src/main/java/com/example/myproject/service/PostService.java" root0="FORCE_HIGHLIGHTING" />
+    </component>
+    <component name="MarkdownSettingsMigration">
+        <option name="stateVersion" value="1" />
+    </component>
+    <component name="ProblemsViewState">
+        <option name="selectedTabId" value="CurrentFile" />
+    </component>
+    <component name="ProjectColorInfo">{
+        &quot;associatedIndex&quot;: 0
+        }</component>
+    <component name="ProjectId" id="2vZNfNTEFyHApdxmHZ7Y0rlJjKB" />
+    <component name="ProjectLevelVcsManager" settingsEditedManually="true">
+        <ConfirmationsSetting value="2" id="Add" />
+    </component>
+    <component name="ProjectViewState">
+        <option name="hideEmptyMiddlePackages" value="true" />
+        <option name="showLibraryContents" value="true" />
+    </component>
+    <component name="PropertiesComponent">{
+        &quot;keyToString&quot;: {
+        &quot;ASKED_ADD_EXTERNAL_FILES&quot;: &quot;true&quot;,
+        &quot;JUnit.UserControllerTest.executor&quot;: &quot;Run&quot;,
+        &quot;JUnit.UserControllerTest.testUpdateUserAvatar.executor&quot;: &quot;Run&quot;,
+        &quot;JUnit.UserControllerTest.testUploadUserAvatar.executor&quot;: &quot;Run&quot;,
+        &quot;RequestMappingsPanelOrder0&quot;: &quot;0&quot;,
+        &quot;RequestMappingsPanelOrder1&quot;: &quot;1&quot;,
+        &quot;RequestMappingsPanelWidth0&quot;: &quot;75&quot;,
+        &quot;RequestMappingsPanelWidth1&quot;: &quot;75&quot;,
+        &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
+        &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
+        &quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
+        &quot;Spring Boot.MyProjectApplication.executor&quot;: &quot;Run&quot;,
+        &quot;git-widget-placeholder&quot;: &quot;完成pt与bt交互、补充图片资源&quot;,
+        &quot;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;,
+        &quot;kotlin-language-version-configured&quot;: &quot;true&quot;,
+        &quot;last_opened_file_path&quot;: &quot;D:/Desktop/echo后端/echo-backend/images&quot;,
+        &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
+        &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
+        &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
+        &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
+        &quot;settings.editor.selected.configurable&quot;: &quot;project.propVCSSupport.DirectoryMappings&quot;,
+        &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;,
+        &quot;应用程序.MyProjectApplication.executor&quot;: &quot;Run&quot;
+        },
+        &quot;keyToStringList&quot;: {
+        &quot;DatabaseDriversLRU&quot;: [
+        &quot;mysql_aurora&quot;
+        ]
+        }
+        }</component>
+    <component name="RecentsManager">
+        <key name="CopyFile.RECENT_KEYS">
+            <recent name="D:\Desktop\echo后端\echo-backend\images" />
+            <recent name="D:\Desktop\echo后端\echo-backend\uploads\dynamic" />
+            <recent name="D:\PT\echo-backend\src\main\java\com\example\myproject\config" />
+            <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">
+        <configuration name="MyProjectApplication" type="Application" factoryName="Application" temporary="true">
+            <option name="MAIN_CLASS_NAME" value="com.example.myproject.MyProjectApplication" />
+            <module name="echo-backend" />
+            <extension name="coverage">
+                <pattern>
+                    <option name="PATTERN" value="com.example.myproject.*" />
+                    <option name="ENABLED" value="true" />
+                </pattern>
+            </extension>
+            <method v="2">
+                <option name="Make" enabled="true" />
+            </method>
+        </configuration>
+        <configuration name="MyProjectApplication" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
+            <option name="MAIN_CLASS_NAME" value="com.example.myproject.MyProjectApplication" />
+            <module name="echo-backend" />
+            <extension name="coverage">
+                <pattern>
+                    <option name="PATTERN" value="com.example.myproject.*" />
+                    <option name="ENABLED" value="true" />
+                </pattern>
+            </extension>
+            <method v="2">
+                <option name="Make" enabled="true" />
+            </method>
+        </configuration>
+        <configuration name="TorrentControllerTest" 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.TorrentControllerTest" />
+            <option name="TEST_OBJECT" value="class" />
+            <method v="2">
+                <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="UserControllerTest.testUpdateUserAvatar" 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="METHOD_NAME" value="testUpdateUserAvatar" />
+            <option name="TEST_OBJECT" value="method" />
+            <method v="2">
+                <option name="Make" enabled="true" />
+            </method>
+        </configuration>
+        <configuration name="UserControllerTest.testUploadUserAvatar" 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="METHOD_NAME" value="testUploadUserAvatar" />
+            <option name="TEST_OBJECT" value="method" />
+            <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="应用程序.MyProjectApplication" />
+                <item itemvalue="JUnit.UserControllerTest.testUploadUserAvatar" />
+                <item itemvalue="JUnit.UserControllerTest.testUpdateUserAvatar" />
+                <item itemvalue="JUnit.UserControllerTest" />
+                <item itemvalue="JUnit.TorrentControllerTest" />
+            </list>
+        </recent_temporary>
+    </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">
+            <changelist id="f008fe30-0711-42e2-bb33-17dcfdbad387" name="Changes" comment="" />
+            <created>1744348740342</created>
+            <option name="number" value="Default" />
+            <option name="presentableId" value="Default" />
+            <updated>1744348740342</updated>
+            <workItem from="1749007243227" duration="1245000" />
+            <workItem from="1749033374884" duration="7535000" />
+            <workItem from="1749048857906" duration="4388000" />
+            <workItem from="1749109821491" duration="5517000" />
+            <workItem from="1749206945935" duration="4467000" />
+        </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>
-                      <list>
-                        <option value="master" />
-                      </list>
+                        <State>
+                            <option name="FILTERS">
+                                <map>
+                                    <entry key="branch">
+                                        <value>
+                                            <list>
+                                                <option value="master" />
+                                            </list>
+                                        </value>
+                                    </entry>
+                                </map>
+                            </option>
+                        </State>
                     </value>
-                  </entry>
-                </map>
-              </option>
-            </State>
-          </value>
-        </entry>
-      </map>
-    </option>
-  </component>
-  <component name="VcsManagerConfiguration">
-    <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
-    <MESSAGE value="pom" />
-    <option name="LAST_COMMIT_MESSAGE" value="pom" />
-  </component>
-  <component name="XDebuggerManager">
-    <breakpoint-manager>
-      <breakpoints>
-        <line-breakpoint enabled="true" type="java-method">
-          <url>file://$PROJECT_DIR$/src/test/java/com/example/myproject/controller/UserControllerTest.java</url>
-          <line>235</line>
-          <properties class="com.example.myproject.controller.UserControllerTest" method="testUploadUserAvatar">
-            <option name="EMULATED" value="true" />
-            <option name="WATCH_EXIT" value="false" />
-          </properties>
-          <option name="timeStamp" value="1" />
-        </line-breakpoint>
-      </breakpoints>
-    </breakpoint-manager>
-  </component>
+                </entry>
+            </map>
+        </option>
+    </component>
+    <component name="VcsManagerConfiguration">
+        <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
+        <MESSAGE value="pom" />
+        <option name="LAST_COMMIT_MESSAGE" value="pom" />
+    </component>
+    <component name="XDebuggerManager">
+        <breakpoint-manager>
+            <breakpoints>
+                <line-breakpoint enabled="true" type="java-method">
+                    <url>file://$PROJECT_DIR$/src/test/java/com/example/myproject/controller/UserControllerTest.java</url>
+                    <line>235</line>
+                    <properties class="com.example.myproject.controller.UserControllerTest" method="testUploadUserAvatar">
+                        <option name="EMULATED" value="true" />
+                        <option name="WATCH_EXIT" value="false" />
+                    </properties>
+                    <option name="timeStamp" value="1" />
+                </line-breakpoint>
+            </breakpoints>
+        </breakpoint-manager>
+    </component>
 </project>
\ No newline at end of file