blob: 8e730e7518c0c05b0ed9fde12fa35640447062b0 [file] [log] [blame]
ym923f955bd92025-06-09 09:58:00 +08001package com.pt5.pthouduan.controller;
2
3import com.pt5.pthouduan.entity.request_resources;
4import com.pt5.pthouduan.service.RequestResourcesService;
5import org.springframework.beans.factory.annotation.Autowired;
6import org.springframework.beans.factory.annotation.Value;
7import org.springframework.web.bind.annotation.*;
8import org.springframework.stereotype.Controller;
9import org.springframework.web.multipart.MultipartFile;
10
11import java.io.File;
12import java.io.IOException;
13import java.nio.file.Files;
14import java.nio.file.Path;
15import java.nio.file.Paths;
16import java.nio.file.StandardCopyOption;
17import java.time.LocalDateTime;
18import java.util.HashMap;
19import java.util.List;
20import java.util.Map;
21import java.util.UUID;
22
23/**
24 * <p>
25 * 求助帖信息前端控制器
26 * </p>
27 *
28 * 功能:创建求助帖、修改金额、删除、按名称/用户查找、计算某名称总金额
29 * 支持上传图片
30 *
31 * @author ym
32 * @since 2025-05-10
33 */
34@CrossOrigin(origins = "http://localhost:5174")
35@Controller
36@RequestMapping("/request")
37public class RequestResourcesController {
38
39 @Autowired
40 private RequestResourcesService requestResourcesService;
41
42 @Value("${torrent.helppost-image-dir}")
43 private String uploadDir;
44
45 // 创建新的求助帖(移除 loaduser 参数)
46 @PostMapping("/create")
47 @ResponseBody
48 public boolean createRequest(
49 @RequestParam("userid") Long userid,
50 @RequestParam("name") String name,
51 @RequestParam("plot") String plot,
52 @RequestParam("money") Integer money,
53 @RequestParam(value = "photo", required = false) MultipartFile photoFile,
54 @RequestParam(value = "year", required = false) Integer year,
55 @RequestParam(value = "country", required = false) String country
56 ) {
57 request_resources request = new request_resources();
58 request.setUserid(userid);
59 request.setLoaduser(null); // 初始为空
60 request.setName(name);
61 request.setPlot(plot);
62 request.setMoney(money);
63 request.setYear(year);
64 request.setCountry(country);
65 request.setRequestTime(LocalDateTime.now());
66
67 if (photoFile != null && !photoFile.isEmpty()) {
68 try {
69 File dir = new File(uploadDir);
70 if (!dir.exists()) {
71 boolean created = dir.mkdirs(); // 递归创建目录
72 if (!created) {
73 throw new IOException("无法创建目录:" + uploadDir);
74 }
75 }
76 //String coverImageDir = "D:/torrenttest/covers/"; // 封面图片存储目录
77 String filename = System.currentTimeMillis()+"_"+photoFile.getOriginalFilename();
78 Path helprequestImagePath = Paths.get(uploadDir, filename);
79
80 try {
81 Files.createDirectories(helprequestImagePath.getParent()); // 创建目录
82 Files.copy(photoFile.getInputStream(), helprequestImagePath, StandardCopyOption.REPLACE_EXISTING);
83 } catch (IOException e) {
84 throw new RuntimeException("无法存储需求贴图片", e);
85 }
86
87 // 设置访问URL
88 request.setPhoto('/' + uploadDir + filename);
89 } catch (IOException e) {
90 e.printStackTrace();
91 return false;
92 }
93 }
94
95 return requestResourcesService.createRequest(request);
96 }
97
98 // 修改求助帖的金额
99 @PutMapping("/updateMoney/{requestid}")
100 @ResponseBody
101 public boolean updateMoney(@PathVariable Integer requestid, @RequestParam Integer money) {
102 return requestResourcesService.updateMoney(requestid, money);
103 }
104
105 // 删除求助帖
106 @DeleteMapping("/delete/{requestid}")
107 @ResponseBody
108 public boolean deleteRequest(@PathVariable Integer requestid) {
109 return requestResourcesService.deleteRequest(requestid);
110 }
111
112 // 根据名称查找求助帖
113 @GetMapping("/findByName")
114 @ResponseBody
115 public List<request_resources> findByName(@RequestParam String name) {
116 return requestResourcesService.findByName(name);
117 }
118
119 // 根据用户查找求助帖
120 @GetMapping("/findByUserid")
121 @ResponseBody
122 public List<request_resources> findByUserid(@RequestParam Long userid) {
123 return requestResourcesService.findByUserid(userid);
124 }
125
126 // 计算某个名称对应的总金额
127 @GetMapping("/totalMoneyByName")
128 @ResponseBody
129 public Integer getTotalMoneyByName(@RequestParam String name) {
130 return requestResourcesService.calculateTotalMoneyByName(name);
131 }
132
133 // 根据被协助用户(loaduser)查找求助帖
134 @GetMapping("/findByLoaduser")
135 @ResponseBody
136 public List<request_resources> findByLoaduser(@RequestParam Long loaduser) {
137 return requestResourcesService.findByLoaduser(loaduser);
138 }
139
140 // ✅ 新增:根据名称批量更新 loaduser 字段
141 @PostMapping("/updateLoaduserByName")
142 @ResponseBody
143 public boolean updateLoaduserByName(@RequestParam String name, @RequestParam Long loaduser) {
144 return requestResourcesService.updateLoaduserByName(name, loaduser);
145 }
146
147 // ✅ 1. 更新指定 requestid 的 torrentid
148 @PutMapping("/updateTorrentid/{requestid}")
149 @ResponseBody
150 public boolean updateTorrentid(@PathVariable Integer requestid, @RequestParam Long torrentid) {
151 return requestResourcesService.updateTorrentid(requestid, torrentid);
152 }
153
154 // ✅ 2. 查询指定 requestid 的 torrentid
155 @GetMapping("/getTorrentid/{requestid}")
156 @ResponseBody
157 public Long getTorrentid(@PathVariable Integer requestid) {
158 request_resources request = requestResourcesService.findByRequestid(requestid);
159 return request != null ? request.getTorrentid() : null;
160 }
161
162 @GetMapping("/info/{requestid}")
163 @ResponseBody
164 public Map<String, Object> getInfoByRequestId(@PathVariable Integer requestid) {
165 request_resources request = requestResourcesService.findByRequestid(requestid);
166 if (request == null) {
167 return null; // 或返回一个空 Map,或自定义错误处理
168 }
169
170 Map<String, Object> result = new HashMap<>();
171 result.put("torrentid", request.getTorrentid());
172 result.put("money", request.getMoney());
173 result.put("loaduser", request.getLoaduser());
174 return result;
175 }
176
177
178 @GetMapping("/all")
179 @ResponseBody
180 public List<request_resources> getAllRequests() {
181 return requestResourcesService.getAllRequests();
182 }
183
184}