diff --git a/.gitignore b/.gitignore
index b5b4119..64edc69 100644
--- a/.gitignore
+++ b/.gitignore
@@ -41,7 +41,7 @@
 *.log
 *.xml.versionsBackup
 *.swp
-
+.vscode/settings.json
 !*/build/*.java
 !*/build/*.html
 !*/build/*.xml
diff --git a/.vscode/settings.json b/.vscode/settings.json
index e5c786f..1546a32 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -17,5 +17,6 @@
         "other": "on",
         "comments": "off",
         "strings": "on"
-    }
+    },
+    "workbench.colorCustomizations": {}
 }
\ No newline at end of file
diff --git a/Redis-x64-5.0.14.1/dump.rdb b/Redis-x64-5.0.14.1/dump.rdb
index 2e2619f..af89adb 100644
--- a/Redis-x64-5.0.14.1/dump.rdb
+++ b/Redis-x64-5.0.14.1/dump.rdb
Binary files differ
diff --git a/download/avatar/2025/05/27/blob_20250527203945A001.png b/download/avatar/2025/05/27/blob_20250527203945A001.png
new file mode 100644
index 0000000..587fe45
--- /dev/null
+++ b/download/avatar/2025/05/27/blob_20250527203945A001.png
Binary files differ
diff --git a/download/avatar/2025/05/27/blob_20250527204239A002.png b/download/avatar/2025/05/27/blob_20250527204239A002.png
new file mode 100644
index 0000000..960f08b
--- /dev/null
+++ b/download/avatar/2025/05/27/blob_20250527204239A002.png
Binary files differ
diff --git a/download/avatar/2025/05/27/blob_20250527205919A003.png b/download/avatar/2025/05/27/blob_20250527205919A003.png
new file mode 100644
index 0000000..23aea8f
--- /dev/null
+++ b/download/avatar/2025/05/27/blob_20250527205919A003.png
Binary files differ
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/Server/planet/IPlanetService.java b/ruoyi-admin/src/main/java/com/ruoyi/web/Server/planet/IPlanetService.java
new file mode 100644
index 0000000..0bab702
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/Server/planet/IPlanetService.java
@@ -0,0 +1,23 @@
+package com.ruoyi.web.Server.planet;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.web.domain.planet.Planet;
+import com.ruoyi.web.domain.planet.UserPlanet;
+import com.ruoyi.web.mapper.planet.PlanetMapper;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+public interface IPlanetService{
+    List<Planet> getPlanetList(Long pageNum, Long pageSize);
+    List<UserPlanet> getUserPlanetList();
+    Planet getPlanetById(Long id);
+    Planet uploadPlanetFile(MultipartFile file);
+    void updatePlanet(Planet planet);
+
+    void updateUserPlanet(UserPlanet userPlanet);
+
+    void deletePlanets(List<Long> ids);
+    UserPlanet getUserPlanetByUserId(Long userId);
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/Server/planet/PlanetServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/web/Server/planet/PlanetServiceImpl.java
new file mode 100644
index 0000000..6af3739
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/Server/planet/PlanetServiceImpl.java
@@ -0,0 +1,72 @@
+package com.ruoyi.web.Server.planet;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.file.FileUploadUtils;
+import com.ruoyi.web.domain.planet.Planet;
+import com.ruoyi.web.domain.planet.UserPlanet;
+import com.ruoyi.web.mapper.planet.PlanetMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+
+@Service
+public class PlanetServiceImpl extends ServiceImpl<PlanetMapper, Planet> implements IPlanetService {
+    @Autowired
+    private PlanetMapper planetMapper;
+
+    @Override
+    public List<Planet> getPlanetList(Long pageNum, Long pageSize) {
+        System.out.println("########################");
+        return planetMapper.selectPlanetList((pageNum-1)*pageSize, pageSize);
+    }
+
+    @Override
+    public List<UserPlanet> getUserPlanetList() {
+        return planetMapper.selectUserPlanetList();
+    }
+
+    @Override
+    public Planet getPlanetById(Long id) {
+        return planetMapper.selectPlanetById(id);
+    }
+
+    @Override
+    public Planet uploadPlanetFile(MultipartFile file) {
+        String fileName = null;
+        try {
+            fileName = FileUploadUtils.upload(file);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        Planet planet = new Planet();
+        planet.setName(fileName);
+        planet.setFilename(fileName);
+        planet.setCreateTime(DateUtils.getNowDate());
+        planetMapper.insertPlanet(planet);
+        return planet;
+    }
+
+    @Override
+    public void updatePlanet(Planet planet) {
+        planetMapper.updatePlanet(planet);
+    }
+
+    @Override
+    public void updateUserPlanet(UserPlanet userPlanet) {
+        planetMapper.updateUserPlanet(userPlanet);
+    }
+
+    @Override
+    public void deletePlanets(List<Long> ids) {
+        planetMapper.deletePlanetsByIds(ids);
+    }
+
+    @Override
+    public UserPlanet getUserPlanetByUserId(Long userId) {
+        return planetMapper.selectUserPlanetByUserId(userId);
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/planet/Controller.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/planet/Controller.java
new file mode 100644
index 0000000..7b03fb0
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/planet/Controller.java
@@ -0,0 +1,112 @@
+package com.ruoyi.web.controller.planet;
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.web.controller.common.base.PageUtil;
+import com.ruoyi.web.controller.common.base.Result;
+import com.ruoyi.web.domain.planet.Planet;
+import com.ruoyi.web.domain.planet.UserPlanet;
+import com.ruoyi.web.Server.planet.IPlanetService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @program: ThunderHubServer
+ * @description: 后端API控制器，处理星球相关请求
+ * @author: Yumaoo
+ * @create: 2025-06-08 17:23
+ **/
+@RestController
+@RequestMapping("/planets")
+public class Controller {
+    @Autowired
+    private IPlanetService planetService;
+
+    /**
+     * 分页查询星球列表
+     */
+    @GetMapping("/list")
+    public Result getPlanetList(@RequestParam(defaultValue = "1") Long pageNum,
+                                    @RequestParam(defaultValue = "10") Long pageSize) {
+        List<Planet> list = planetService.getPlanetList(pageNum, pageSize);
+        System.out.println("########################");
+        System.out.println(list);
+        return Result.ok(list, PageUtil.getPage(list));
+    }
+
+    /**
+     * 获取星球详情
+     */
+    @GetMapping("/info/{id}")
+    public AjaxResult getPlanetInfo(@PathVariable String id) {
+        // 前端支持字符串ID，后端统一转为Long类型
+        return AjaxResult.success(planetService.getPlanetById(Long.valueOf(id)));
+    }
+
+    /**
+     * 上传星球文件
+     */
+    @PostMapping("/upload")
+    public AjaxResult uploadPlanetFile(@RequestParam("file") MultipartFile file) {
+        Planet planet = planetService.uploadPlanetFile(file);
+        return AjaxResult.success(planet);
+    }
+
+    /**
+     * 获取用户星球信息
+     */
+    @GetMapping("/user")
+    public AjaxResult getUserPlanet(@RequestParam Long userId) {
+        return AjaxResult.success(planetService.getUserPlanetByUserId(userId));
+    }
+
+    /**
+     * 随机获得用户和绑定的星球
+     */
+    @GetMapping("/random")
+    public Result getRandomUserPlanets() {
+        List<UserPlanet> list = planetService.getUserPlanetList();
+        System.out.println("########################");
+        System.out.println(list);
+        List<UserPlanet> result;
+        if (list.size() <= 3) {
+            result = new ArrayList<>(list);
+        } else {
+            List<UserPlanet> shuffledList = new ArrayList<>(list);
+            Collections.shuffle(shuffledList);
+            result = shuffledList.subList(0, 3);
+        }
+        return Result.ok(result, PageUtil.getPage(list));
+    }
+
+    /**
+     * 更新星球信息
+     */
+    @PostMapping("/update")
+    public AjaxResult updatePlanet(@RequestBody Planet planet) {
+        planetService.updatePlanet(planet);
+        return AjaxResult.success();
+    }
+    @PostMapping("/updateUserPlanet")
+    public AjaxResult updateUserPlanet(@RequestBody UserPlanet userPlanet) {
+        userPlanet.setUpdateTime(new java.util.Date());
+        System.out.println("##########");
+        System.out.println(userPlanet);
+        planetService.updateUserPlanet(userPlanet);
+        return AjaxResult.success();
+    }
+
+    /**
+     * 删除星球
+     */
+    @PostMapping("/delete")
+    public AjaxResult deletePlanet(@RequestBody List<Long> ids) {
+        // 强制类型转换以适配服务层接口
+        planetService.deletePlanets((java.util.List<Long>) ids);
+        return AjaxResult.success();
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/domain/planet/Planet.java b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/planet/Planet.java
new file mode 100644
index 0000000..e3a4abe
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/planet/Planet.java
@@ -0,0 +1,39 @@
+package com.ruoyi.web.domain.planet;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @program: ThunderHubServer
+ * @description: Planet entity class mapping to the database table
+ * @author: Yumaoo
+ * @create: 2025-06-08 17:19
+ **/
+@EqualsAndHashCode(callSuper = true)
+@Setter
+@Getter
+@Data
+
+public class Planet extends BaseEntity {
+    private Integer planetId;
+    private String name;
+    private String filename;
+    private String description;
+    private Date createTime;
+
+    @Override
+    public String toString() {
+        return "Planet{" +
+                "planetId=" + planetId +
+                ", name='" + name + '\'' +
+                ", filename='" + filename + '\'' +
+                ", description='" + description + '\'' +
+                ", createTime=" + createTime +
+                '}';
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/domain/planet/UserPlanet.java b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/planet/UserPlanet.java
new file mode 100644
index 0000000..dd90640
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/domain/planet/UserPlanet.java
@@ -0,0 +1,34 @@
+package com.ruoyi.web.domain.planet;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @program: ThunderHubServer
+ * @description: UserPlanet entity class mapping to the user_planet table
+ * @author: Yumaoo
+ * @create: 2025-06-08 17:21
+ **/
+@EqualsAndHashCode(callSuper = true)
+@Setter
+@Getter
+@Data
+public class UserPlanet extends BaseEntity {
+    private Integer userId;
+    private Integer planetId;
+    private Date updateTime;
+
+    @Override
+    public String toString() {
+        return "UserPlanet{" +
+                "userId=" + userId +
+                ", planetId=" + planetId +
+                ", updateTime=" + updateTime +
+                '}';
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/planet/PlanetMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/planet/PlanetMapper.java
new file mode 100644
index 0000000..ba09798
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/mapper/planet/PlanetMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.web.mapper.planet;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.page.PageDomain;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.web.domain.planet.Planet;
+import com.ruoyi.web.domain.planet.UserPlanet;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+@Mapper
+public interface PlanetMapper extends BaseMapper<Planet> {
+    List<Planet> selectPlanetList(@Param("offset") Long offset, @Param("pageSize") Long pageSize);
+    Planet selectPlanetById(Long id);
+    void insertPlanet(Planet planet);
+    void updatePlanet(Planet planet);
+    void updateUserPlanet(UserPlanet user);
+    void deletePlanetsByIds(List<Long> ids);
+    UserPlanet selectUserPlanetByUserId(Long userId);
+
+    List<UserPlanet> selectUserPlanetList();
+}
diff --git a/ruoyi-admin/src/main/resources/mapper/planet/PlanetMapper.xml.xml b/ruoyi-admin/src/main/resources/mapper/planet/PlanetMapper.xml.xml
new file mode 100644
index 0000000..30b0a2f
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/mapper/planet/PlanetMapper.xml.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.web.mapper.planet.PlanetMapper">
+    <resultMap id="PlanetResult" type="com.ruoyi.web.domain.planet.Planet">
+        <id property="planetId" column="planet_id"/>
+        <result property="name" column="name"/>
+        <result property="filename" column="filename"/>
+        <result property="description" column="description"/>
+        <result property="createTime" column="create_time"/>
+    </resultMap>
+    <resultMap id="UserPlanetResult" type="com.ruoyi.web.domain.planet.UserPlanet">
+        <id property="userId" column="user_id"/>
+        <result property="planetId" column="planet_id"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+    <select id="selectPlanetList" parameterType="com.ruoyi.web.domain.planet.Planet" resultMap="PlanetResult">
+        SELECT * FROM planets
+        <where>
+            <!-- 可选条件 -->
+        </where>
+        LIMIT #{pageSize} OFFSET #{offset}
+    </select>
+    <select id="selectPlanetById" parameterType="com.ruoyi.web.domain.planet.Planet" resultMap="PlanetResult">
+        SELECT * FROM planets WHERE planet_id = #{id}
+    </select>
+    <insert id="insertPlanet">
+        INSERT INTO planets (name, filename, description, create_time)
+        VALUES (#{name}, #{filename}, #{description}, #{createTime})
+    </insert>
+    <update id="updatePlanet">
+        UPDATE planets
+        SET name = #{name},
+            filename = #{filename},
+            description = #{description}
+        WHERE planet_id = #{planetId}
+    </update>
+    <update id="updateUserPlanet">
+        UPDATE user_planet
+        SET planet_id = #{planetId}
+        WHERE user_id = #{userId}
+    </update>
+    <delete id="deletePlanetsByIds">
+        DELETE FROM planets WHERE planet_id IN
+        <foreach item="id" collection="ids" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+    <select id="selectUserPlanetByUserId" resultMap="UserPlanetResult">
+        SELECT * FROM user_planet WHERE user_id = #{userId}
+    </select>
+    <select id="selectUserPlanetList" parameterType="com.ruoyi.web.domain.planet.UserPlanet" resultMap="UserPlanetResult">
+        SELECT * FROM user_planet
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/bounty/controller/BountyController.java b/ruoyi-system/src/main/java/bounty/controller/BountyController.java
index 7c47e1b..333887f 100644
--- a/ruoyi-system/src/main/java/bounty/controller/BountyController.java
+++ b/ruoyi-system/src/main/java/bounty/controller/BountyController.java
@@ -37,6 +37,7 @@
     @GetMapping("/{id}")
     public ResponseEntity<Bounty> getBountyById(@PathVariable Long id) {
         Bounty bounty = bountyService.getBountyById(id);
+        System.out.println(bounty);
         if (bounty == null) {
             return ResponseEntity.notFound().build();
         } else {
diff --git a/ruoyi-system/src/main/resources/mapper/bounty/BountyMapper.xml b/ruoyi-system/src/main/resources/mapper/bounty/BountyMapper.xml
index 731572a..3267ef2 100644
--- a/ruoyi-system/src/main/resources/mapper/bounty/BountyMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/bounty/BountyMapper.xml
@@ -51,6 +51,7 @@
         <result property="reward" column="reward"/>
         <result property="deadline" column="deadline"/>
         <result property="status" column="status"/>
+         <result property="creator_id" column="creator_id"/>
         <!-- 关联查询回复列表，填充到 submissions 字段 -->
         <collection 
             property="submissions" 
diff --git a/uploads/075367d2-fb8f-4633-a8e9-1868d0fb6972.pdf b/uploads/075367d2-fb8f-4633-a8e9-1868d0fb6972.pdf
new file mode 100644
index 0000000..684cf36
--- /dev/null
+++ b/uploads/075367d2-fb8f-4633-a8e9-1868d0fb6972.pdf
Binary files differ
diff --git a/uploads/2d051319-dc5b-4ae4-b353-f5cdba22b540.pdf b/uploads/2d051319-dc5b-4ae4-b353-f5cdba22b540.pdf
new file mode 100644
index 0000000..684cf36
--- /dev/null
+++ b/uploads/2d051319-dc5b-4ae4-b353-f5cdba22b540.pdf
Binary files differ
diff --git a/uploads/3191dff5-fa07-4708-bcf8-f547ccea1eab.pdf b/uploads/3191dff5-fa07-4708-bcf8-f547ccea1eab.pdf
new file mode 100644
index 0000000..684cf36
--- /dev/null
+++ b/uploads/3191dff5-fa07-4708-bcf8-f547ccea1eab.pdf
Binary files differ
diff --git a/uploads/5e06d4e6-8371-4a9d-b521-9d41f08e746b.pdf b/uploads/5e06d4e6-8371-4a9d-b521-9d41f08e746b.pdf
new file mode 100644
index 0000000..684cf36
--- /dev/null
+++ b/uploads/5e06d4e6-8371-4a9d-b521-9d41f08e746b.pdf
Binary files differ
diff --git a/uploads/b99bd55f-3e67-4ae3-b6d3-6e139dd171ef.pdf b/uploads/b99bd55f-3e67-4ae3-b6d3-6e139dd171ef.pdf
new file mode 100644
index 0000000..684cf36
--- /dev/null
+++ b/uploads/b99bd55f-3e67-4ae3-b6d3-6e139dd171ef.pdf
Binary files differ
diff --git a/uploads/c5f6c743-a8d1-470e-8dd9-0664f01ca1ff.pdf b/uploads/c5f6c743-a8d1-470e-8dd9-0664f01ca1ff.pdf
new file mode 100644
index 0000000..684cf36
--- /dev/null
+++ b/uploads/c5f6c743-a8d1-470e-8dd9-0664f01ca1ff.pdf
Binary files differ
