blob: 5a60a24b6c411b67953a48961a46e0afe51fa17d [file] [log] [blame]
ym923977239c2025-06-06 17:36:14 +08001package com.pt5.pthouduan.controller;
2
3import com.pt5.pthouduan.entity.Activity;
4import com.pt5.pthouduan.service.ActivityService;
5import org.springframework.beans.factory.annotation.Autowired;
6import org.springframework.stereotype.Controller;
7import org.springframework.web.bind.annotation.*;
8import org.springframework.web.multipart.MultipartFile;
9
10import java.io.File;
11import java.io.IOException;
12import java.time.LocalDateTime;
13import java.util.List;
14import java.util.UUID;
15import java.util.stream.Collectors;
16
17/**
18 * <p>
19 * 活动控制器
20 * </p>
21 *
22 * 功能:增删改查活动公告(支持上传图片)
23 *
24 * @author ym
25 * @since 2025-05-16
26 */
27@CrossOrigin(origins = {"http://localhost:5173", "http://localhost:3000"})
28@Controller
29@RequestMapping("/activity")
30public class ActivityController {
31
32 @Autowired
33 private ActivityService activityService;
34
35 // 获取所有 is_show == 0 的活动标题和图片(活动预览)
36 @GetMapping("/preview")
37 @ResponseBody
38 public List<Activity> getVisibleActivityPreviews() {
39 List<Activity> allVisible = activityService.findByIsShow(0);
40 return allVisible.stream().map(activity -> {
41 Activity preview = new Activity();
42 preview.setActivityid(activity.getActivityid());
43 preview.setContent(activity.getContent());
44 preview.setTitle(activity.getTitle());
45 preview.setAward(activity.getAward());
46 preview.setTime(activity.getTime());
47 preview.setPhoto(activity.getPhoto());
48 return preview;
49 }).collect(Collectors.toList());
50 }
51
52 // 获取所有 is_show == 0 的完整活动信息
53 @GetMapping("/full")
54 @ResponseBody
55 public List<Activity> getVisibleActivities() {
56 return activityService.findByIsShow(0);
57 }
58
59 // 创建新的公告(支持图片上传)
60 @PostMapping("/create")
61 @ResponseBody
62 public boolean createActivity(
63 @RequestParam("title") String title,
64 @RequestParam("content") String content,
65 @RequestParam(value = "photo", required = false) MultipartFile photoFile,
66 @RequestParam(value = "isShow", required = false, defaultValue = "0") Integer isShow,
67 @RequestParam(value = "award", required = false, defaultValue = "0") Integer award
68 ) {
69 Activity activity = new Activity();
70 activity.setTitle(title);
71 activity.setContent(content);
72 activity.setIs_show(isShow);
73 activity.setAward(award);
74 activity.setTime(LocalDateTime.now()); // 设置当前时间
75
76 // 处理图片上传
77 if (photoFile != null && !photoFile.isEmpty()) {
78 String uploadDir = "D:/activityuploads/";
79 File dir = new File(uploadDir);
80 if (!dir.exists()) dir.mkdirs();
81
82 String fileName = UUID.randomUUID() + "_" + photoFile.getOriginalFilename();
83 File dest = new File(uploadDir + fileName);
84 try {
85 photoFile.transferTo(dest);
86 // 设置图片访问路径(请确保 /images 映射到了 uploadDir)
87 activity.setPhoto("/activity/" + fileName);
88 } catch (IOException e) {
89 e.printStackTrace();
90 return false;
91 }
92 }
93
94 return activityService.save(activity);
95 }
96
97
98 // 删除公告(根据ID)
99 @DeleteMapping("/delete/{id}")
100 @ResponseBody
101 public boolean deleteActivity(@PathVariable Integer id) {
102 return activityService.removeById(id);
103 }
104
105 // 获取所有活动(无论展示状态)
106 @GetMapping("/all")
107 @ResponseBody
108 public List<Activity> getAllActivities() {
109 // 假设 activityService 有 list() 方法,返回所有活动
110 return activityService.list();
111 }
112
113 //根据题目搜索公告
114 @GetMapping("/search")
115 @ResponseBody
116 public List<Activity> searchActivitiesByTitle(@RequestParam("title") String title) {
117 return activityService.searchByTitle(title);
118 }
119
120 // 修改公告(根据ID)
121 @PutMapping("/update")
122 @ResponseBody
123 public boolean updateActivity(
124 @RequestParam("activityid") Integer id,
125 @RequestParam("title") String title,
126 @RequestParam("content") String content,
127 @RequestParam(value = "photo", required = false) MultipartFile photoFile,
128 @RequestParam(value = "isShow", required = false, defaultValue = "0") Integer isShow,
129 @RequestParam(value = "award", required = false, defaultValue = "0") Integer award
130 ) {
131 Activity activity = activityService.getById(id);
132 if (activity == null) {
133 return false;
134 }
135
136 activity.setTitle(title);
137 activity.setContent(content);
138 activity.setIs_show(isShow);
139 activity.setAward(award);
140
141 // 上传新图片(可选)
142 if (photoFile != null && !photoFile.isEmpty()) {
143 String uploadDir = "D:/activityuploads/";
144 File dir = new File(uploadDir);
145 if (!dir.exists()) dir.mkdirs();
146
147 String fileName = UUID.randomUUID() + "_" + photoFile.getOriginalFilename();
148 File dest = new File(uploadDir + fileName);
149 try {
150 photoFile.transferTo(dest);
151 activity.setPhoto("/activity/" + fileName);
152 } catch (IOException e) {
153 e.printStackTrace();
154 return false;
155 }
156 }
157
158 return activityService.updateById(activity);
159 }
160}