公告相关上传
Change-Id: I81fa2661ee5aefbb898697da43e57a83cc6cec35
diff --git a/src/main/java/com/pt5/pthouduan/controller/ActivityController.java b/src/main/java/com/pt5/pthouduan/controller/ActivityController.java
new file mode 100644
index 0000000..5a60a24
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/controller/ActivityController.java
@@ -0,0 +1,160 @@
+package com.pt5.pthouduan.controller;
+
+import com.pt5.pthouduan.entity.Activity;
+import com.pt5.pthouduan.service.ActivityService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.UUID;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 活动控制器
+ * </p>
+ *
+ * 功能:增删改查活动公告(支持上传图片)
+ *
+ * @author ym
+ * @since 2025-05-16
+ */
+@CrossOrigin(origins = {"http://localhost:5173", "http://localhost:3000"})
+@Controller
+@RequestMapping("/activity")
+public class ActivityController {
+
+ @Autowired
+ private ActivityService activityService;
+
+ // 获取所有 is_show == 0 的活动标题和图片(活动预览)
+ @GetMapping("/preview")
+ @ResponseBody
+ public List<Activity> getVisibleActivityPreviews() {
+ List<Activity> allVisible = activityService.findByIsShow(0);
+ return allVisible.stream().map(activity -> {
+ Activity preview = new Activity();
+ preview.setActivityid(activity.getActivityid());
+ preview.setContent(activity.getContent());
+ preview.setTitle(activity.getTitle());
+ preview.setAward(activity.getAward());
+ preview.setTime(activity.getTime());
+ preview.setPhoto(activity.getPhoto());
+ return preview;
+ }).collect(Collectors.toList());
+ }
+
+ // 获取所有 is_show == 0 的完整活动信息
+ @GetMapping("/full")
+ @ResponseBody
+ public List<Activity> getVisibleActivities() {
+ return activityService.findByIsShow(0);
+ }
+
+ // 创建新的公告(支持图片上传)
+ @PostMapping("/create")
+ @ResponseBody
+ public boolean createActivity(
+ @RequestParam("title") String title,
+ @RequestParam("content") String content,
+ @RequestParam(value = "photo", required = false) MultipartFile photoFile,
+ @RequestParam(value = "isShow", required = false, defaultValue = "0") Integer isShow,
+ @RequestParam(value = "award", required = false, defaultValue = "0") Integer award
+ ) {
+ Activity activity = new Activity();
+ activity.setTitle(title);
+ activity.setContent(content);
+ activity.setIs_show(isShow);
+ activity.setAward(award);
+ activity.setTime(LocalDateTime.now()); // 设置当前时间
+
+ // 处理图片上传
+ if (photoFile != null && !photoFile.isEmpty()) {
+ String uploadDir = "D:/activityuploads/";
+ File dir = new File(uploadDir);
+ if (!dir.exists()) dir.mkdirs();
+
+ String fileName = UUID.randomUUID() + "_" + photoFile.getOriginalFilename();
+ File dest = new File(uploadDir + fileName);
+ try {
+ photoFile.transferTo(dest);
+ // 设置图片访问路径(请确保 /images 映射到了 uploadDir)
+ activity.setPhoto("/activity/" + fileName);
+ } catch (IOException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ return activityService.save(activity);
+ }
+
+
+ // 删除公告(根据ID)
+ @DeleteMapping("/delete/{id}")
+ @ResponseBody
+ public boolean deleteActivity(@PathVariable Integer id) {
+ return activityService.removeById(id);
+ }
+
+ // 获取所有活动(无论展示状态)
+ @GetMapping("/all")
+ @ResponseBody
+ public List<Activity> getAllActivities() {
+ // 假设 activityService 有 list() 方法,返回所有活动
+ return activityService.list();
+ }
+
+ //根据题目搜索公告
+ @GetMapping("/search")
+ @ResponseBody
+ public List<Activity> searchActivitiesByTitle(@RequestParam("title") String title) {
+ return activityService.searchByTitle(title);
+ }
+
+ // 修改公告(根据ID)
+ @PutMapping("/update")
+ @ResponseBody
+ public boolean updateActivity(
+ @RequestParam("activityid") Integer id,
+ @RequestParam("title") String title,
+ @RequestParam("content") String content,
+ @RequestParam(value = "photo", required = false) MultipartFile photoFile,
+ @RequestParam(value = "isShow", required = false, defaultValue = "0") Integer isShow,
+ @RequestParam(value = "award", required = false, defaultValue = "0") Integer award
+ ) {
+ Activity activity = activityService.getById(id);
+ if (activity == null) {
+ return false;
+ }
+
+ activity.setTitle(title);
+ activity.setContent(content);
+ activity.setIs_show(isShow);
+ activity.setAward(award);
+
+ // 上传新图片(可选)
+ if (photoFile != null && !photoFile.isEmpty()) {
+ String uploadDir = "D:/activityuploads/";
+ File dir = new File(uploadDir);
+ if (!dir.exists()) dir.mkdirs();
+
+ String fileName = UUID.randomUUID() + "_" + photoFile.getOriginalFilename();
+ File dest = new File(uploadDir + fileName);
+ try {
+ photoFile.transferTo(dest);
+ activity.setPhoto("/activity/" + fileName);
+ } catch (IOException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ return activityService.updateById(activity);
+ }
+}