package com.quinn.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.quinn.common.QuinnConstant; import com.quinn.pojo.*; import com.quinn.pojo.param.QuerySource; import com.quinn.service.SourceCategoryService; import com.quinn.service.SourceCommentService; import com.quinn.service.SourceService; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; /** *

* 前端控制器 *

* * @author limqsh * @since 2022-05-03 */ @Controller public class SourceController { @Resource SourceService sourceService; @Resource SourceCategoryService sourceCategoryService; @Resource SourceCommentService sourceCommentService; // 列表展示 @GetMapping("/source") public String sourceList(Model model){ Page pageParam = new Page<>(1, 10); QueryWrapper sourceQuery = new QueryWrapper<>(); sourceQuery.orderByDesc("gmt_create"); sourceService.page(pageParam,sourceQuery); // 结果 List sourceList = pageParam.getRecords(); if (!CollectionUtils.isEmpty(sourceList)){ sourceList.forEach(x ->{ x.setSourceLink(QuinnConstant.GUN); }); } model.addAttribute("sourceList",sourceList); model.addAttribute("pageParam",pageParam); // 分类信息 List categoryList = sourceCategoryService.list(null); model.addAttribute("categoryList",categoryList); return "source/list"; } @PostMapping("/source/page") public String blogListPage(QuerySource querySource, Model model){ int page = querySource.getPageNum(); int limit = querySource.getLimit(); if (querySource.getPageNum() < 1){ page = 1; } Page pageParam = new Page<>(page, limit); QueryWrapper sourceQuery = new QueryWrapper<>(); addParam(sourceQuery,querySource.getName(),querySource.getCategory()); sourceQuery.orderByDesc("gmt_create"); sourceService.page(pageParam,sourceQuery); // 结果 List blogList = pageParam.getRecords(); model.addAttribute("sourceList",blogList); model.addAttribute("pageParam",pageParam); return "source/list::s_table_refresh"; } // 列表展示 @GetMapping("/hotspot") public String sourceHotPot(Model model){ Page pageParam = new Page<>(1, 9); QueryWrapper sourceQuery = new QueryWrapper<>(); sourceQuery.orderByDesc("down_record"); sourceService.page(pageParam,sourceQuery); // 结果 List sourceList = pageParam.getRecords(); if (!CollectionUtils.isEmpty(sourceList)){ sourceList.forEach(x ->{ x.setSourceLink(QuinnConstant.GUN); x.setSourceContent(""); }); } model.addAttribute("sourceList",sourceList); return "source/hotspot"; } /** * 查看下载资源的详情 * @param sid * @param model * @return */ @GetMapping("/source/view/{sid}") public String read(@PathVariable("sid") String sid, Model model){ Source source = sourceService.getOne(new QueryWrapper().eq("id", sid)); if(source != null){ source.setSourceLink(QuinnConstant.GUN); } model.addAttribute("source",source); List commentList = sourceCommentService.list(new QueryWrapper().eq("topic_id", sid).orderByDesc("gmt_create")); model.addAttribute("commentList",commentList); return "source/view"; } /** * 下载具体的文件 * @param response * @param sid * @throws IOException */ @GetMapping("/source/download/{sid}") public void read(HttpServletResponse response, @PathVariable("sid") String sid) throws IOException { Source source = sourceService.getOne(new QueryWrapper().eq("id", sid)); //通知浏览器以附件形式下载 response.setHeader("Content-Disposition", "attachment;filename=" + source.getEnName() + QuinnConstant.LINK_SUFFIX + source.getFileType()); this.sourceService.downloadSource(response.getOutputStream(),source); } private void addParam(QueryWrapper sourceQuery, String name, int category) { if (!StringUtils.isEmpty(name)){ sourceQuery.like("source_name",name); } if (category > 0){ sourceQuery.eq("category_id",category); } } }