ActivityController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  1. package com.uas.console.donate.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.uas.console.donate.model.*;
  5. import com.uas.console.donate.service.ActivityRecodeService;
  6. import com.uas.console.donate.service.ActivityService;
  7. import com.uas.console.donate.service.AwardService;
  8. import com.uas.console.donate.util.StringUtils;
  9. import com.uas.dfs.service.FileClient;
  10. import com.uas.platform.core.model.PageInfo;
  11. import com.uas.platform.core.model.PageParams;
  12. import com.uas.platform.core.web.bind.RequestState;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.data.domain.Page;
  15. import org.springframework.data.domain.PageRequest;
  16. import org.springframework.data.domain.Pageable;
  17. import org.springframework.data.domain.Sort;
  18. import org.springframework.data.repository.query.Param;
  19. import org.springframework.http.HttpStatus;
  20. import org.springframework.http.ResponseEntity;
  21. import org.springframework.stereotype.Controller;
  22. import org.springframework.ui.ModelMap;
  23. import org.springframework.web.bind.annotation.*;
  24. import org.springframework.web.multipart.MultipartFile;
  25. import javax.servlet.http.HttpServletRequest;
  26. import javax.servlet.http.HttpServletResponse;
  27. import java.io.IOException;
  28. import java.text.SimpleDateFormat;
  29. import java.util.ArrayList;
  30. import java.util.Arrays;
  31. import java.util.List;
  32. @Controller
  33. @RequestMapping("/activity")
  34. public class ActivityController {
  35. private static final SimpleDateFormat codesdf=new SimpleDateFormat("yyyymmddhhmmsssss");
  36. @Autowired
  37. private ActivityService activityService;
  38. @Autowired
  39. private AwardService awardService;
  40. @Autowired
  41. private ActivityRecodeService activityRecodeService;
  42. @Autowired
  43. private FileClient fileClient;
  44. /**
  45. * 发起活动,有草稿取出草稿,没有就新建活动表单
  46. */
  47. @ResponseBody
  48. @RequestMapping(value = "/show", method = RequestMethod.GET)
  49. public Activity show(){
  50. return activityService.show();
  51. }
  52. /**
  53. * 上传文件
  54. */
  55. @ResponseBody
  56. @RequestMapping(value = "/upload",method = RequestMethod.POST)
  57. public String ueditorUpload(MultipartFile file) throws IOException {
  58. //上传图片
  59. String path=fileClient.upload(file.getBytes(),file.getSize(),"jpg",null);
  60. return path;
  61. }
  62. /**
  63. * 保存活动
  64. */
  65. @ResponseBody
  66. @RequestMapping("/save")
  67. public Activity save(@RequestParam(required = false) MultipartFile actImg,
  68. @RequestParam(required = false) MultipartFile banner,
  69. @RequestParam String jsonStr, HttpServletRequest request, HttpServletResponse response) throws IOException {
  70. Activity activity = JSONObject.parseObject(jsonStr, Activity.class);
  71. if(actImg!=null){
  72. String file1=fileClient.upload(actImg.getBytes(),actImg.getSize(),"jpg",null);
  73. activity.setActImg(file1);
  74. }
  75. if(banner!=null){
  76. String file2=fileClient.upload(banner.getBytes(),banner.getSize(),"jpg",null);
  77. activity.setBanner(file2);
  78. }
  79. return activityService.save(activity);
  80. }
  81. /**
  82. * 发布活动
  83. */
  84. @ResponseBody
  85. @RequestMapping("/submit")
  86. public Activity submit(@RequestParam(required = false) MultipartFile actImg,
  87. @RequestParam(required = false) MultipartFile banner,
  88. @RequestParam String jsonStr, HttpServletRequest request, HttpServletResponse response) throws IOException {
  89. Activity activity = JSONObject.parseObject(jsonStr, Activity.class);
  90. if(actImg!=null){
  91. String file1=fileClient.upload(actImg.getBytes(),actImg.getSize(),"jpg",null);
  92. activity.setActImg(file1);
  93. }
  94. if(banner!=null){
  95. String file2=fileClient.upload(banner.getBytes(),banner.getSize(),"jpg",null);
  96. activity.setBanner(file2);
  97. }
  98. return activityService.submit(activity);
  99. }
  100. /**
  101. * 活动置顶
  102. */
  103. @ResponseBody
  104. @RequestMapping("/up")
  105. public Activity up(Long id){
  106. return activityService.up(id);
  107. }
  108. /**
  109. *展示还没开始的活动
  110. */
  111. @ResponseBody
  112. @RequestMapping("/getNotStart")
  113. public Page<Activity> findNotStart(@RequestParam(value = "page",defaultValue = "0")Integer page,
  114. @RequestParam(value = "size",defaultValue = "10")Integer size){
  115. Pageable pageable=pageSort(page,size);
  116. return activityService.findNotStart(pageable);
  117. }
  118. /**
  119. * 展示所有正在进行的活动
  120. */
  121. @ResponseBody
  122. @RequestMapping("/getInprocess")
  123. public Page<Activity> findInProcess(@RequestParam(value = "page",defaultValue = "0")Integer page,
  124. @RequestParam(value = "size",defaultValue = "10")Integer size){
  125. Pageable pageable=pageSort(page,size);
  126. return activityService.findInprocess(pageable);
  127. }
  128. /**
  129. * 展示所有已结束的活动
  130. */
  131. @ResponseBody
  132. @RequestMapping("/getEnd")
  133. public Page<Activity> findEndActivities(@RequestParam(value = "page",defaultValue = "0")Integer page,
  134. @RequestParam(value = "size",defaultValue = "10")Integer size){
  135. Pageable pageable=pageSort(page,size);
  136. return activityService.findEndActivities(pageable);
  137. }
  138. /*优先级倒序,时间倒序排序的方式*/
  139. private Pageable pageSort(Integer page, Integer size){
  140. Sort.Order prioritySort=new Sort.Order(Sort.Direction.DESC,"priority");
  141. Sort.Order timeSort=new Sort.Order(Sort.Direction.DESC,"submitTime");
  142. List<Sort.Order> list=new ArrayList<Sort.Order>();
  143. list.add(prioritySort);
  144. list.add(timeSort);
  145. Sort sort = new Sort(list);
  146. Pageable pageable=new PageRequest(page,size,sort);
  147. return pageable;
  148. }
  149. /**
  150. * 展示某具体活动
  151. */
  152. @ResponseBody
  153. @RequestMapping("/detail")
  154. public List<Object> findById(Long id){
  155. //查询活动信息
  156. Activity activity=activityService.findOne(id);
  157. //查询活动奖品信息
  158. List<Award> awardList=awardService.findByActivityId(id);
  159. //查询活动获奖者信息
  160. List<ActivityRecode> activityRecodeList=activityRecodeService.whoGetAward(id);
  161. List<Object> list=new ArrayList<Object>();
  162. list.add(activity);
  163. list.add(awardList);
  164. list.add(activityRecodeList);
  165. return list;
  166. }
  167. /**
  168. * 获取活动列表 (全部)
  169. * @return
  170. */
  171. @RequestMapping(method = RequestMethod.GET)
  172. @ResponseBody
  173. public Page<Activity> getAllActivities(PageParams params, String searchFilter){
  174. PageInfo pageInfo = new PageInfo(params);
  175. SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
  176. return activityService.getAllActivities(pageInfo, filter);
  177. }
  178. /**
  179. * 获取活动列表 (正在进行)
  180. * @return
  181. */
  182. @RequestMapping(params = RequestState.DONE, method = RequestMethod.GET)
  183. @ResponseBody
  184. public Page<Activity> getDoneActivities(PageParams params, String searchFilter){
  185. PageInfo pageInfo = new PageInfo(params);
  186. SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
  187. return activityService.getDoneActivities(pageInfo, filter);
  188. }
  189. /**
  190. * 获取活动列表 (已结束)
  191. * @return
  192. */
  193. @RequestMapping(params = RequestState.END, method = RequestMethod.GET)
  194. @ResponseBody
  195. public Page<Activity> getEndActivities(PageParams params, String searchFilter){
  196. PageInfo pageInfo = new PageInfo(params);
  197. SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
  198. return activityService.getEndActivities(pageInfo, filter);
  199. }
  200. /**
  201. * 获取活动列表 (未开始)
  202. * @return
  203. */
  204. @RequestMapping(params = RequestState.TODO, method = RequestMethod.GET)
  205. @ResponseBody
  206. public Page<Activity> getTodoActivities(PageParams params, String searchFilter){
  207. PageInfo pageInfo = new PageInfo(params);
  208. SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
  209. return activityService.getTodoActivities(pageInfo, filter);
  210. }
  211. /**
  212. * 获取活动列表 (待发布、草稿)
  213. * @return
  214. */
  215. @RequestMapping(params = RequestState.WAITING, method = RequestMethod.GET)
  216. @ResponseBody
  217. public Page<Activity> getWaitingActivities(PageParams params, String searchFilter){
  218. PageInfo pageInfo = new PageInfo(params);
  219. SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
  220. return activityService.getWaitingActivities(pageInfo, filter);
  221. }
  222. /**
  223. * 获取各类活动数量
  224. * @return
  225. */
  226. @RequestMapping(value="/getActivitiesNum", method = RequestMethod.GET)
  227. @ResponseBody
  228. public ModelMap getActivitiesNum(){
  229. return activityService.getActivitiesNum();
  230. }
  231. /**
  232. * 获取活动详情
  233. * @param id
  234. * @return
  235. */
  236. @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET)
  237. @ResponseBody
  238. public Activity getDetailById(@PathVariable("id") Long id) {
  239. return activityService.findOne(id);
  240. }
  241. /**
  242. * 开奖
  243. * @param id 活动id
  244. * @return ModelMap 开奖反馈信息
  245. */
  246. @RequestMapping(value = "/openAward/{id}", method = RequestMethod.POST)
  247. @ResponseBody
  248. public ModelMap openAward(@PathVariable("id") Long id){
  249. return activityService.openAward(id);
  250. }
  251. /**
  252. * 活动发起页面获取关联项目(去掉已被选中的和已被活动关联的)
  253. * @param keyword
  254. * @param selectedIds
  255. * @return
  256. */
  257. @RequestMapping(value = "/getActivityRelatedProjects", method = RequestMethod.GET)
  258. @ResponseBody
  259. public List<Project> getActivityRelatedProjects(String keyword, String selectedIds) {
  260. List<String> proIds = new ArrayList<>();
  261. if (!StringUtils.isEmpty(selectedIds)) {
  262. List<String> temp = Arrays.asList(selectedIds.split(","));
  263. proIds.addAll(temp);
  264. }
  265. return activityService.getActivityRelatedProjects(keyword, proIds);
  266. }
  267. /**
  268. * 上传奖品图片
  269. */
  270. @RequestMapping(value = "/upload/prizeImg", method = RequestMethod.POST)
  271. @ResponseBody
  272. public Attach uploadPrizeImg(MultipartFile file) throws Exception {
  273. return activityService.uploadPrizeImg(file);
  274. }
  275. /**
  276. * 删除奖品时删除图片
  277. */
  278. @RequestMapping(value = "/delete/prizeImg", method = RequestMethod.DELETE)
  279. @ResponseBody
  280. public void deletePrizeImg(@RequestParam String path) {
  281. activityService.deletePrizeImg(path);
  282. }
  283. /**
  284. * 删除奖品时删除图片
  285. */
  286. @RequestMapping(value = "/delete/prizeImg/ByBatch", method = RequestMethod.DELETE)
  287. @ResponseBody
  288. public void deletePrizeImgByBatch(@RequestParam String path) {
  289. List<String> paths = new ArrayList<>();
  290. List<String> temp = Arrays.asList(path.split(","));
  291. paths.addAll(temp);
  292. activityService.deletePrizeImgByBatch(paths);
  293. }
  294. }