求助要资源帖子相关后端

Change-Id: I10e910360ed932d4d31abbfba7ee98ba6885a5dc
diff --git a/src/main/java/com/pt5/pthouduan/controller/RequestResourcesController.java b/src/main/java/com/pt5/pthouduan/controller/RequestResourcesController.java
new file mode 100644
index 0000000..8e730e7
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/controller/RequestResourcesController.java
@@ -0,0 +1,184 @@
+package com.pt5.pthouduan.controller;
+
+import com.pt5.pthouduan.entity.request_resources;
+import com.pt5.pthouduan.service.RequestResourcesService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * <p>
+ *  求助帖信息前端控制器
+ * </p>
+ *
+ * 功能:创建求助帖、修改金额、删除、按名称/用户查找、计算某名称总金额
+ * 支持上传图片
+ *
+ * @author ym
+ * @since 2025-05-10
+ */
+@CrossOrigin(origins = "http://localhost:5174")
+@Controller
+@RequestMapping("/request")
+public class RequestResourcesController {
+
+    @Autowired
+    private RequestResourcesService requestResourcesService;
+
+    @Value("${torrent.helppost-image-dir}")
+    private String uploadDir;
+
+    // 创建新的求助帖(移除 loaduser 参数)
+    @PostMapping("/create")
+    @ResponseBody
+    public boolean createRequest(
+            @RequestParam("userid") Long userid,
+            @RequestParam("name") String name,
+            @RequestParam("plot") String plot,
+            @RequestParam("money") Integer money,
+            @RequestParam(value = "photo", required = false) MultipartFile photoFile,
+            @RequestParam(value = "year", required = false) Integer year,
+            @RequestParam(value = "country", required = false) String country
+    ) {
+        request_resources request = new request_resources();
+        request.setUserid(userid);
+        request.setLoaduser(null); // 初始为空
+        request.setName(name);
+        request.setPlot(plot);
+        request.setMoney(money);
+        request.setYear(year);
+        request.setCountry(country);
+        request.setRequestTime(LocalDateTime.now());
+
+        if (photoFile != null && !photoFile.isEmpty()) {
+            try {
+                File dir = new File(uploadDir);
+                if (!dir.exists()) {
+                    boolean created = dir.mkdirs();  // 递归创建目录
+                    if (!created) {
+                        throw new IOException("无法创建目录:" + uploadDir);
+                    }
+                }
+                //String coverImageDir = "D:/torrenttest/covers/"; // 封面图片存储目录
+                String filename = System.currentTimeMillis()+"_"+photoFile.getOriginalFilename();
+                Path helprequestImagePath = Paths.get(uploadDir, filename);
+
+                try {
+                    Files.createDirectories(helprequestImagePath.getParent()); // 创建目录
+                    Files.copy(photoFile.getInputStream(), helprequestImagePath, StandardCopyOption.REPLACE_EXISTING);
+                } catch (IOException e) {
+                    throw new RuntimeException("无法存储需求贴图片", e);
+                }
+
+                // 设置访问URL
+                request.setPhoto('/' + uploadDir + filename);
+            } catch (IOException e) {
+                e.printStackTrace();
+                return false;
+            }
+        }
+
+        return requestResourcesService.createRequest(request);
+    }
+
+    // 修改求助帖的金额
+    @PutMapping("/updateMoney/{requestid}")
+    @ResponseBody
+    public boolean updateMoney(@PathVariable Integer requestid, @RequestParam Integer money) {
+        return requestResourcesService.updateMoney(requestid, money);
+    }
+
+    // 删除求助帖
+    @DeleteMapping("/delete/{requestid}")
+    @ResponseBody
+    public boolean deleteRequest(@PathVariable Integer requestid) {
+        return requestResourcesService.deleteRequest(requestid);
+    }
+
+    // 根据名称查找求助帖
+    @GetMapping("/findByName")
+    @ResponseBody
+    public List<request_resources> findByName(@RequestParam String name) {
+        return requestResourcesService.findByName(name);
+    }
+
+    // 根据用户查找求助帖
+    @GetMapping("/findByUserid")
+    @ResponseBody
+    public List<request_resources> findByUserid(@RequestParam Long userid) {
+        return requestResourcesService.findByUserid(userid);
+    }
+
+    // 计算某个名称对应的总金额
+    @GetMapping("/totalMoneyByName")
+    @ResponseBody
+    public Integer getTotalMoneyByName(@RequestParam String name) {
+        return requestResourcesService.calculateTotalMoneyByName(name);
+    }
+
+    // 根据被协助用户(loaduser)查找求助帖
+    @GetMapping("/findByLoaduser")
+    @ResponseBody
+    public List<request_resources> findByLoaduser(@RequestParam Long loaduser) {
+        return requestResourcesService.findByLoaduser(loaduser);
+    }
+
+    // ✅ 新增:根据名称批量更新 loaduser 字段
+    @PostMapping("/updateLoaduserByName")
+    @ResponseBody
+    public boolean updateLoaduserByName(@RequestParam String name, @RequestParam Long loaduser) {
+        return requestResourcesService.updateLoaduserByName(name, loaduser);
+    }
+
+    // ✅ 1. 更新指定 requestid 的 torrentid
+    @PutMapping("/updateTorrentid/{requestid}")
+    @ResponseBody
+    public boolean updateTorrentid(@PathVariable Integer requestid, @RequestParam Long torrentid) {
+        return requestResourcesService.updateTorrentid(requestid, torrentid);
+    }
+
+    // ✅ 2. 查询指定 requestid 的 torrentid
+    @GetMapping("/getTorrentid/{requestid}")
+    @ResponseBody
+    public Long getTorrentid(@PathVariable Integer requestid) {
+        request_resources request = requestResourcesService.findByRequestid(requestid);
+        return request != null ? request.getTorrentid() : null;
+    }
+
+    @GetMapping("/info/{requestid}")
+    @ResponseBody
+    public Map<String, Object> getInfoByRequestId(@PathVariable Integer requestid) {
+        request_resources request = requestResourcesService.findByRequestid(requestid);
+        if (request == null) {
+            return null; // 或返回一个空 Map,或自定义错误处理
+        }
+
+        Map<String, Object> result = new HashMap<>();
+        result.put("torrentid", request.getTorrentid());
+        result.put("money", request.getMoney());
+        result.put("loaduser", request.getLoaduser());
+        return result;
+    }
+
+
+    @GetMapping("/all")
+    @ResponseBody
+    public List<request_resources> getAllRequests() {
+        return requestResourcesService.getAllRequests();
+    }
+
+}