求助要资源帖子相关后端
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();
+ }
+
+}
diff --git a/src/main/java/com/pt5/pthouduan/entity/request_resources.java b/src/main/java/com/pt5/pthouduan/entity/request_resources.java
new file mode 100644
index 0000000..68800c6
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/entity/request_resources.java
@@ -0,0 +1,163 @@
+package com.pt5.pthouduan.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author ym
+ * @since 2025-05-10
+ */
+@TableName("request_resources")
+public class request_resources implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId("requestid")
+ private Integer requestid;
+
+ private Integer money;
+
+ private Integer year;
+
+ private String name;
+
+ private String plot;
+
+ private Long userid;
+
+ private Long loaduser;
+
+ private Long torrentid;
+
+
+ private String photo;
+
+
+ private String country;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private LocalDateTime requesttime;
+
+ public Integer getRequestid() {
+ return requestid;
+ }
+
+ public void setRequestid(Integer requestid) {
+ this.requestid = requestid;
+ }
+
+
+
+ public String getName() {//获取标签
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+ public String getPlot() {//获取标签
+ return plot;
+ }
+
+ public void setPlot(String plot) {
+ this.plot = plot;
+ }
+
+
+ public Long getUserid() {
+ return userid;
+ }
+
+ public void setUserid(Long userid) {
+ this.userid = userid;
+ }
+
+
+ public Long getTorrentid() {
+ return torrentid;
+ }
+
+ public void setTorrentid(Long torrentid) {
+ this.torrentid = torrentid;
+ }
+
+
+ public Long getLoaduser() {
+ return loaduser;
+ }
+
+ public void setLoaduser(Long loaduser) {
+ this.loaduser = loaduser;
+ }
+
+
+ public Integer getMoney() {
+ return money;
+ }
+
+ public void setMoney(Integer money) {
+ this.money = money;
+ }
+
+
+ public String getPhoto() {//获取标签
+ return photo;
+ }
+
+ public void setPhoto(String photo) {
+ this.photo = photo;
+ }
+
+ public Integer getYear() {
+ return year;
+ }
+
+ public void setYear(Integer year) {
+ this.year = year;
+ }
+
+ public String getCountry() {//获取标签
+ return country;
+ }
+
+ public void setCountry(String country) {
+ this.country = country;
+ }
+
+ public LocalDateTime getRequestTime() {
+ return requesttime;
+ }
+
+ public void setRequestTime(LocalDateTime requestTime) {
+ this.requesttime = requestTime;
+ }
+
+
+
+ @Override
+ public String toString() {
+ return "request_resources{" +
+ "requestid = " + requestid +
+ ", name = " + name +
+ ", plot = " + plot +
+ ", userid = " + userid +
+ ", loaduser = " + loaduser +
+ ", money = " + money +
+ ", photo = " + photo +
+ ", year = " + year +
+ ", requesttime = " + requesttime +
+ ", country='" + country + '\'' +
+ ", torrentid = " + torrentid +
+ "}";
+ }
+}
diff --git a/src/main/java/com/pt5/pthouduan/mapper/RequestResourcesMapper.java b/src/main/java/com/pt5/pthouduan/mapper/RequestResourcesMapper.java
new file mode 100644
index 0000000..e7937a8
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/mapper/RequestResourcesMapper.java
@@ -0,0 +1,58 @@
+package com.pt5.pthouduan.mapper;
+
+import com.pt5.pthouduan.entity.request_resources;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 求助帖 Mapper 接口
+ * </p>
+ *
+ * 功能:创建、修改金额、删除、按名称/用户/被协助用户查询、统计某名称总金额
+ * 可扩展自定义 SQL
+ *
+ * @author ym
+ * @since 2025-05-10
+ */
+@Mapper
+public interface RequestResourcesMapper extends BaseMapper<request_resources> {
+
+ // 创建求助帖(可选,BaseMapper 已有 insert 方法)
+ void save(request_resources request);
+
+ // 修改求助帖金额
+ int updateMoney(@Param("requestid") Integer requestid, @Param("money") Integer money);
+
+ // 根据名称查询求助帖
+ List<request_resources> selectByName(@Param("name") String name);
+
+ // 计算某个名称对应的总金额
+ Integer sumMoneyByName(@Param("name") String name);
+
+ // 根据发帖人 ID 查询求助帖
+ List<request_resources> selectByUserid(@Param("userid") Long userid);
+
+ // 根据被协助人 ID 查询求助帖
+ List<request_resources> selectByLoaduser(@Param("loaduser") Long loaduser);
+
+ // ✅ 批量更新被协助用户 ID(loaduser)
+ int updateLoaduserByName(@Param("name") String name, @Param("loaduser") Long loaduser);
+
+ // ✅ 获取所有求助帖
+ List<request_resources> selectAllRequests();
+
+ // ✅ 1. 根据 requestid 更新 torrentid
+ int updateTorrentid(@Param("requestid") Integer requestid, @Param("torrentid") Long torrentid);
+
+ // ✅ 2. 根据 requestid 查询单个求助帖(BaseMapper 已有 selectById,但保留自定义扩展性)
+ request_resources selectByRequestid(@Param("requestid") Integer requestid);
+
+ // ✅ 3. 根据 userid + name + plot 查询唯一 request(用于获取 requestid)
+ request_resources findByUseridNamePlot(@Param("userid") Long userid,
+ @Param("name") String name,
+ @Param("plot") String plot);
+}
diff --git a/src/main/java/com/pt5/pthouduan/service/RequestResourcesService.java b/src/main/java/com/pt5/pthouduan/service/RequestResourcesService.java
new file mode 100644
index 0000000..9a8fb20
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/service/RequestResourcesService.java
@@ -0,0 +1,44 @@
+package com.pt5.pthouduan.service;
+
+import com.pt5.pthouduan.entity.request_resources;
+
+import java.util.List;
+
+public interface RequestResourcesService {
+
+ // 创建求助帖
+ boolean createRequest(request_resources request);
+
+ // 修改求助帖金额
+ boolean updateMoney(Integer requestid, Integer money);
+
+ // 删除求助帖
+ boolean deleteRequest(Integer requestid);
+
+ // 根据名称查找求助帖
+ List<request_resources> findByName(String name);
+
+ // 计算某名称的求助帖总金额
+ Integer calculateTotalMoneyByName(String name);
+
+ // 根据发帖用户ID查找求助帖
+ List<request_resources> findByUserid(Long userid);
+
+ // 根据被协助用户ID查找求助帖
+ List<request_resources> findByLoaduser(Long loaduser);
+
+ // 根据帖子名称批量更新loaduser字段
+ boolean updateLoaduserByName(String name, Long loaduser);
+
+ // 展示所有求助帖
+ List<request_resources> getAllRequests();
+
+ // ✅ 新增:根据 requestid 更新 torrentid
+ boolean updateTorrentid(Integer requestid, Long torrentid);
+
+ // ✅ 新增:根据 requestid 查询 request 对象
+ request_resources findByRequestid(Integer requestid);
+
+ // ✅(可选)根据 userid + name + plot 查询 requestid
+ request_resources findByUseridAndNameAndPlot(Long userid, String name, String plot);
+}
diff --git a/src/main/java/com/pt5/pthouduan/service/impl/RequestResourcesServiceImpl.java b/src/main/java/com/pt5/pthouduan/service/impl/RequestResourcesServiceImpl.java
new file mode 100644
index 0000000..abc23cb
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/service/impl/RequestResourcesServiceImpl.java
@@ -0,0 +1,114 @@
+package com.pt5.pthouduan.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.pt5.pthouduan.entity.request_resources;
+import com.pt5.pthouduan.mapper.RequestResourcesMapper;
+import com.pt5.pthouduan.service.RequestResourcesService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class RequestResourcesServiceImpl implements RequestResourcesService {
+
+ @Autowired
+ private RequestResourcesMapper requestResourcesMapper;
+
+ // 创建求助帖
+ @Override
+ public boolean createRequest(request_resources request) {
+ return requestResourcesMapper.insert(request) > 0;
+ }
+
+ // 修改求助帖金额
+ @Override
+ public boolean updateMoney(Integer requestid, Integer money) {
+ request_resources request = requestResourcesMapper.selectById(requestid);
+ if (request != null) {
+ request.setMoney(money);
+ return requestResourcesMapper.updateById(request) > 0;
+ }
+ return false;
+ }
+
+ // 删除求助帖
+ @Override
+ public boolean deleteRequest(Integer requestid) {
+ return requestResourcesMapper.deleteById(requestid) > 0;
+ }
+
+ // 根据名称查找求助帖
+ @Override
+ public List<request_resources> findByName(String name) {
+ QueryWrapper<request_resources> wrapper = new QueryWrapper<>();
+ wrapper.eq("name", name);
+ return requestResourcesMapper.selectList(wrapper);
+ }
+
+ // 计算某名称的求助帖总金额
+ @Override
+ public Integer calculateTotalMoneyByName(String name) {
+ QueryWrapper<request_resources> wrapper = new QueryWrapper<>();
+ wrapper.eq("name", name).select("money");
+ List<request_resources> list = requestResourcesMapper.selectList(wrapper);
+ return list.stream()
+ .map(request_resources::getMoney)
+ .reduce(0, Integer::sum);
+ }
+
+ // 根据发帖用户ID查找求助帖
+ @Override
+ public List<request_resources> findByUserid(Long userid) {
+ QueryWrapper<request_resources> wrapper = new QueryWrapper<>();
+ wrapper.eq("userid", userid);
+ return requestResourcesMapper.selectList(wrapper);
+ }
+
+ // 根据被协助用户ID查找求助帖
+ @Override
+ public List<request_resources> findByLoaduser(Long loaduser) {
+ QueryWrapper<request_resources> wrapper = new QueryWrapper<>();
+ wrapper.eq("loaduser", loaduser);
+ return requestResourcesMapper.selectList(wrapper);
+ }
+
+ // 批量更新 loaduser
+ @Override
+ public boolean updateLoaduserByName(String name, Long loaduser) {
+ UpdateWrapper<request_resources> updateWrapper = new UpdateWrapper<>();
+ updateWrapper.eq("name", name).set("loaduser", loaduser);
+ return requestResourcesMapper.update(null, updateWrapper) > 0;
+ }
+
+ // 获取所有求助帖
+ @Override
+ public List<request_resources> getAllRequests() {
+ return requestResourcesMapper.selectList(null);
+ }
+
+ // ✅ 新增:根据 requestid 更新 torrentid
+ @Override
+ public boolean updateTorrentid(Integer requestid, Long torrentid) {
+ UpdateWrapper<request_resources> updateWrapper = new UpdateWrapper<>();
+ updateWrapper.eq("requestid", requestid).set("torrentid", torrentid);
+ return requestResourcesMapper.update(null, updateWrapper) > 0;
+ }
+
+ // ✅ 新增:根据 requestid 查询对象
+ @Override
+ public request_resources findByRequestid(Integer requestid) {
+ return requestResourcesMapper.selectById(requestid);
+ }
+
+ // ✅ 新增:根据 userid + name + plot 查找唯一 request(获取 requestid 用)
+ @Override
+ public request_resources findByUseridAndNameAndPlot(Long userid, String name, String plot) {
+ QueryWrapper<request_resources> wrapper = new QueryWrapper<>();
+ wrapper.eq("userid", userid)
+ .eq("name", name)
+ .eq("plot", plot);
+ return requestResourcesMapper.selectOne(wrapper);
+ }
+}
diff --git a/src/main/resources/mapper/xml/RequestResourcesMapper.xml b/src/main/resources/mapper/xml/RequestResourcesMapper.xml
new file mode 100644
index 0000000..fc0d53a
--- /dev/null
+++ b/src/main/resources/mapper/xml/RequestResourcesMapper.xml
@@ -0,0 +1,80 @@
+<?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.pt5.pthouduan.mapper.RequestResourcesMapper">
+
+ <!-- 创建求助帖 -->
+ <insert id="save" parameterType="com.pt5.pthouduan.entity.request_resources">
+ INSERT INTO request_resources (userid, loaduser, name, plot, money, year, country, requesttime, photo)
+ VALUES (#{userid}, #{loaduser}, #{name}, #{plot}, #{money}, #{year}, #{country}, #{requesttime}, #{photo})
+ </insert>
+
+ <!-- 修改求助帖金额 -->
+ <update id="updateMoney">
+ UPDATE request_resources
+ SET money = #{money}
+ WHERE requestid = #{requestid}
+ </update>
+
+ <!-- 根据 requestid 更新 torrentid -->
+ <update id="updateTorrentid">
+ UPDATE request_resources
+ SET torrentid = #{torrentid}
+ WHERE requestid = #{requestid}
+ </update>
+
+ <!-- 批量更新 loaduser -->
+ <update id="updateLoaduserByName">
+ UPDATE request_resources
+ SET loaduser = #{loaduser}
+ WHERE name = #{name}
+ </update>
+
+ <!-- 根据名称查询求助帖 -->
+ <select id="selectByName" resultType="com.pt5.pthouduan.entity.request_resources">
+ SELECT * FROM request_resources
+ WHERE name = #{name}
+ ORDER BY requesttime DESC
+ </select>
+
+ <!-- 根据 userid 查询求助帖 -->
+ <select id="selectByUserid" resultType="com.pt5.pthouduan.entity.request_resources">
+ SELECT * FROM request_resources
+ WHERE userid = #{userid}
+ ORDER BY requesttime DESC
+ </select>
+
+ <!-- 根据 loaduser 查询求助帖 -->
+ <select id="selectByLoaduser" resultType="com.pt5.pthouduan.entity.request_resources">
+ SELECT * FROM request_resources
+ WHERE loaduser = #{loaduser}
+ ORDER BY requesttime DESC
+ </select>
+
+ <!-- 统计某名称的总金额 -->
+ <select id="sumMoneyByName" resultType="java.lang.Integer">
+ SELECT SUM(money) FROM request_resources
+ WHERE name = #{name}
+ </select>
+
+ <!-- 查询所有求助帖 -->
+ <select id="selectAllRequests" resultType="com.pt5.pthouduan.entity.request_resources">
+ SELECT * FROM request_resources
+ ORDER BY requesttime DESC
+ </select>
+
+ <!-- 根据 requestid 查询单条记录 -->
+ <select id="selectByRequestid" resultType="com.pt5.pthouduan.entity.request_resources">
+ SELECT * FROM request_resources
+ WHERE requestid = #{requestid}
+ </select>
+
+ <!-- 根据 userid + name + plot 查询唯一记录 -->
+ <select id="findByUseridNamePlot" resultType="com.pt5.pthouduan.entity.request_resources">
+ SELECT * FROM request_resources
+ WHERE userid = #{userid} AND name = #{name} AND plot = #{plot}
+ LIMIT 1
+ </select>
+
+</mapper>
diff --git a/src/test/java/com/pt5/pthouduan/controller/RequestResourcesControllerTest.java b/src/test/java/com/pt5/pthouduan/controller/RequestResourcesControllerTest.java
new file mode 100644
index 0000000..322b4f9
--- /dev/null
+++ b/src/test/java/com/pt5/pthouduan/controller/RequestResourcesControllerTest.java
@@ -0,0 +1,157 @@
+package com.pt5.pthouduan.controller;
+
+import com.pt5.pthouduan.entity.request_resources;
+import com.pt5.pthouduan.service.RequestResourcesService;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+class RequestResourcesControllerTest {
+
+ @Mock
+ private RequestResourcesService requestResourcesService;
+
+ @InjectMocks
+ private RequestResourcesController requestResourcesController;
+
+ @BeforeEach
+ void setUp() {
+ MockitoAnnotations.openMocks(this);
+ }
+
+ @Test
+ void updateMoney_ShouldReturnTrue_WhenSuccess() {
+ when(requestResourcesService.updateMoney(1, 100)).thenReturn(true);
+
+ boolean result = requestResourcesController.updateMoney(1, 100);
+
+ assertTrue(result);
+ verify(requestResourcesService).updateMoney(1, 100);
+ }
+
+ @Test
+ void deleteRequest_ShouldReturnTrue_WhenSuccess() {
+ when(requestResourcesService.deleteRequest(1)).thenReturn(true);
+
+ boolean result = requestResourcesController.deleteRequest(1);
+
+ assertTrue(result);
+ verify(requestResourcesService).deleteRequest(1);
+ }
+
+ @Test
+ void findByName_ShouldReturnMatchingRequests() {
+ request_resources req = new request_resources();
+ req.setName("Urgent Help");
+
+ when(requestResourcesService.findByName("Urgent Help")).thenReturn(List.of(req));
+
+ List<request_resources> result = requestResourcesController.findByName("Urgent Help");
+
+ assertEquals(1, result.size());
+ assertEquals("Urgent Help", result.get(0).getName());
+ }
+
+ @Test
+ void findByUserid_ShouldReturnUserRequests() {
+ request_resources req = new request_resources();
+ req.setUserid(123L);
+
+ when(requestResourcesService.findByUserid(123L)).thenReturn(List.of(req));
+
+ List<request_resources> result = requestResourcesController.findByUserid(123L);
+
+ assertEquals(1, result.size());
+ assertEquals(123L, result.get(0).getUserid());
+ }
+
+ @Test
+ void getTotalMoneyByName_ShouldReturnCorrectSum() {
+ when(requestResourcesService.calculateTotalMoneyByName("Education")).thenReturn(500);
+
+ int total = requestResourcesController.getTotalMoneyByName("Education");
+
+ assertEquals(500, total);
+ }
+
+ @Test
+ void findByLoaduser_ShouldReturnLoaduserRequests() {
+ request_resources req = new request_resources();
+ req.setLoaduser(456L);
+
+ when(requestResourcesService.findByLoaduser(456L)).thenReturn(List.of(req));
+
+ List<request_resources> result = requestResourcesController.findByLoaduser(456L);
+
+ assertEquals(1, result.size());
+ assertEquals(456L, result.get(0).getLoaduser());
+ }
+
+ @Test
+ void updateLoaduserByName_ShouldReturnTrue_WhenSuccess() {
+ when(requestResourcesService.updateLoaduserByName("Medical", 789L)).thenReturn(true);
+
+ boolean result = requestResourcesController.updateLoaduserByName("Medical", 789L);
+
+ assertTrue(result);
+ }
+
+ @Test
+ void updateTorrentid_ShouldReturnTrue_WhenSuccess() {
+ when(requestResourcesService.updateTorrentid(1, 999L)).thenReturn(true);
+
+ boolean result = requestResourcesController.updateTorrentid(1, 999L);
+
+ assertTrue(result);
+ }
+
+ @Test
+ void getTorrentid_ShouldReturnCorrectValue() {
+ request_resources req = new request_resources();
+ req.setTorrentid(888L);
+
+ when(requestResourcesService.findByRequestid(1)).thenReturn(req);
+
+ Long result = requestResourcesController.getTorrentid(1);
+
+ assertEquals(888L, result);
+ }
+
+ @Test
+ void getInfoByRequestId_ShouldReturnInfoMap() {
+ request_resources req = new request_resources();
+ req.setMoney(200);
+ req.setLoaduser(101L);
+ req.setTorrentid(555L);
+
+ when(requestResourcesService.findByRequestid(1)).thenReturn(req);
+
+ var result = requestResourcesController.getInfoByRequestId(1);
+
+ assertEquals(200, result.get("money"));
+ assertEquals(101L, result.get("loaduser"));
+ assertEquals(555L, result.get("torrentid"));
+ }
+
+ @Test
+ void getAllRequests_ShouldReturnAllRequests() {
+ request_resources r1 = new request_resources();
+ r1.setRequestid(1);
+ request_resources r2 = new request_resources();
+ r2.setRequestid(2);
+
+ when(requestResourcesService.getAllRequests()).thenReturn(List.of(r1, r2));
+
+ List<request_resources> result = requestResourcesController.getAllRequests();
+
+ assertEquals(2, result.size());
+ }
+}