blob: 8e730e7518c0c05b0ed9fde12fa35640447062b0 [file] [log] [blame]
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();
}
}