package com.uas.console.donate.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.uas.console.donate.model.*; import com.uas.console.donate.service.ActivityRecodeService; import com.uas.console.donate.service.ActivityService; import com.uas.console.donate.service.AwardService; import com.uas.console.donate.util.StringUtils; import com.uas.dfs.service.FileClient; import com.uas.platform.core.model.PageInfo; import com.uas.platform.core.model.PageParams; import com.uas.platform.core.web.bind.RequestState; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.repository.query.Param; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @Controller @RequestMapping("/activity") public class ActivityController { private static final SimpleDateFormat codesdf=new SimpleDateFormat("yyyymmddhhmmsssss"); @Autowired private ActivityService activityService; @Autowired private AwardService awardService; @Autowired private ActivityRecodeService activityRecodeService; @Autowired private FileClient fileClient; /** * 发起活动,有草稿取出草稿,没有就新建活动表单 */ @ResponseBody @RequestMapping(value = "/show", method = RequestMethod.GET) public Activity show(){ return activityService.show(); } /** * 上传文件 */ @ResponseBody @RequestMapping(value = "/upload",method = RequestMethod.POST) public String ueditorUpload(MultipartFile file) throws IOException { //上传图片 String path=fileClient.upload(file.getBytes(),file.getSize(),"jpg",null); return path; } /** * 保存活动 */ @ResponseBody @RequestMapping("/save") public Activity save(@RequestParam(required = false) MultipartFile actImg, @RequestParam(required = false) MultipartFile banner, @RequestParam String jsonStr, HttpServletRequest request, HttpServletResponse response) throws IOException { Activity activity = JSONObject.parseObject(jsonStr, Activity.class); if(actImg!=null){ String file1=fileClient.upload(actImg.getBytes(),actImg.getSize(),"jpg",null); activity.setActImg(file1); } if(banner!=null){ String file2=fileClient.upload(banner.getBytes(),banner.getSize(),"jpg",null); activity.setBanner(file2); } return activityService.save(activity); } /** * 发布活动 */ @ResponseBody @RequestMapping("/submit") public Activity submit(@RequestParam(required = false) MultipartFile actImg, @RequestParam(required = false) MultipartFile banner, @RequestParam String jsonStr, HttpServletRequest request, HttpServletResponse response) throws IOException { Activity activity = JSONObject.parseObject(jsonStr, Activity.class); if(actImg!=null){ String file1=fileClient.upload(actImg.getBytes(),actImg.getSize(),"jpg",null); activity.setActImg(file1); } if(banner!=null){ String file2=fileClient.upload(banner.getBytes(),banner.getSize(),"jpg",null); activity.setBanner(file2); } return activityService.submit(activity); } /** * 活动置顶 */ @ResponseBody @RequestMapping("/up") public Activity up(Long id){ return activityService.up(id); } /** *展示还没开始的活动 */ @ResponseBody @RequestMapping("/getNotStart") public Page findNotStart(@RequestParam(value = "page",defaultValue = "0")Integer page, @RequestParam(value = "size",defaultValue = "10")Integer size){ Pageable pageable=pageSort(page,size); return activityService.findNotStart(pageable); } /** * 展示所有正在进行的活动 */ @ResponseBody @RequestMapping("/getInprocess") public Page findInProcess(@RequestParam(value = "page",defaultValue = "0")Integer page, @RequestParam(value = "size",defaultValue = "10")Integer size){ Pageable pageable=pageSort(page,size); return activityService.findInprocess(pageable); } /** * 展示所有已结束的活动 */ @ResponseBody @RequestMapping("/getEnd") public Page findEndActivities(@RequestParam(value = "page",defaultValue = "0")Integer page, @RequestParam(value = "size",defaultValue = "10")Integer size){ Pageable pageable=pageSort(page,size); return activityService.findEndActivities(pageable); } /*优先级倒序,时间倒序排序的方式*/ private Pageable pageSort(Integer page, Integer size){ Sort.Order prioritySort=new Sort.Order(Sort.Direction.DESC,"priority"); Sort.Order timeSort=new Sort.Order(Sort.Direction.DESC,"submitTime"); List list=new ArrayList(); list.add(prioritySort); list.add(timeSort); Sort sort = new Sort(list); Pageable pageable=new PageRequest(page,size,sort); return pageable; } /** * 展示某具体活动 */ @ResponseBody @RequestMapping("/detail") public List findById(Long id){ //查询活动信息 Activity activity=activityService.findOne(id); //查询活动奖品信息 List awardList=awardService.findByActivityId(id); //查询活动获奖者信息 List activityRecodeList=activityRecodeService.whoGetAward(id); List list=new ArrayList(); list.add(activity); list.add(awardList); list.add(activityRecodeList); return list; } /** * 获取活动列表 (全部) * @return */ @RequestMapping(method = RequestMethod.GET) @ResponseBody public Page getAllActivities(PageParams params, String searchFilter){ PageInfo pageInfo = new PageInfo(params); SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class); return activityService.getAllActivities(pageInfo, filter); } /** * 获取活动列表 (正在进行) * @return */ @RequestMapping(params = RequestState.DONE, method = RequestMethod.GET) @ResponseBody public Page getDoneActivities(PageParams params, String searchFilter){ PageInfo pageInfo = new PageInfo(params); SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class); return activityService.getDoneActivities(pageInfo, filter); } /** * 获取活动列表 (已结束) * @return */ @RequestMapping(params = RequestState.END, method = RequestMethod.GET) @ResponseBody public Page getEndActivities(PageParams params, String searchFilter){ PageInfo pageInfo = new PageInfo(params); SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class); return activityService.getEndActivities(pageInfo, filter); } /** * 获取活动列表 (未开始) * @return */ @RequestMapping(params = RequestState.TODO, method = RequestMethod.GET) @ResponseBody public Page getTodoActivities(PageParams params, String searchFilter){ PageInfo pageInfo = new PageInfo(params); SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class); return activityService.getTodoActivities(pageInfo, filter); } /** * 获取活动列表 (待发布、草稿) * @return */ @RequestMapping(params = RequestState.WAITING, method = RequestMethod.GET) @ResponseBody public Page getWaitingActivities(PageParams params, String searchFilter){ PageInfo pageInfo = new PageInfo(params); SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class); return activityService.getWaitingActivities(pageInfo, filter); } /** * 获取各类活动数量 * @return */ @RequestMapping(value="/getActivitiesNum", method = RequestMethod.GET) @ResponseBody public ModelMap getActivitiesNum(){ return activityService.getActivitiesNum(); } /** * 获取活动详情 * @param id * @return */ @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET) @ResponseBody public Activity getDetailById(@PathVariable("id") Long id) { return activityService.findOne(id); } /** * 开奖 * @param id 活动id * @return ModelMap 开奖反馈信息 */ @RequestMapping(value = "/openAward/{id}", method = RequestMethod.POST) @ResponseBody public ModelMap openAward(@PathVariable("id") Long id){ return activityService.openAward(id); } /** * 活动发起页面获取关联项目(去掉已被选中的和已被活动关联的) * @param keyword * @param selectedIds * @return */ @RequestMapping(value = "/getActivityRelatedProjects", method = RequestMethod.GET) @ResponseBody public List getActivityRelatedProjects(String keyword, String selectedIds) { List proIds = new ArrayList<>(); if (!StringUtils.isEmpty(selectedIds)) { List temp = Arrays.asList(selectedIds.split(",")); proIds.addAll(temp); } return activityService.getActivityRelatedProjects(keyword, proIds); } /** * 上传奖品图片 */ @RequestMapping(value = "/upload/prizeImg", method = RequestMethod.POST) @ResponseBody public Attach uploadPrizeImg(MultipartFile file) throws Exception { return activityService.uploadPrizeImg(file); } /** * 删除奖品时删除图片 */ @RequestMapping(value = "/delete/prizeImg", method = RequestMethod.DELETE) @ResponseBody public void deletePrizeImg(@RequestParam String path) { activityService.deletePrizeImg(path); } /** * 删除奖品时删除图片 */ @RequestMapping(value = "/delete/prizeImg/ByBatch", method = RequestMethod.DELETE) @ResponseBody public void deletePrizeImgByBatch(@RequestParam String path) { List paths = new ArrayList<>(); List temp = Arrays.asList(path.split(",")); paths.addAll(temp); activityService.deletePrizeImgByBatch(paths); } }