fangyuan
2023-01-16 ecad870fe1896c8c3e48506d50bb5818974253bf
ycl-platform/src/main/java/com/ycl/controller/NewsColumnInformationController.java
@@ -3,25 +3,39 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.api.ApiController;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ycl.entity.NewsColumnInformation;
import com.ycl.entity.NewsInformation;
import com.ycl.service.NewsColumnInformationService;
import com.ycl.service.NewsInformationService;
import com.ycl.vo.depart.UmsDepartVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
 * 栏目咨询中间表(NewsColumnInformation)表控制层
 *
 * @author makejava
 * @since 2022-11-17 11:12:41
 * @since 2022-11-17 11:38:27
 */
@RestController
@RequestMapping("newsColumnInformation")
@Api(tags = "栏目咨询中间表控制层")
public class NewsColumnInformationController extends ApiController {
    /**
     * 服务对象
@@ -29,6 +43,8 @@
    @Resource
    private NewsColumnInformationService newsColumnInformationService;
    @Autowired
    private NewsInformationService newsInformationService;
    /**
     * 分页查询所有数据
     *
@@ -37,6 +53,7 @@
     * @return 所有数据
     */
    @GetMapping
    @ApiOperation(value = "查询所有数据")
    public R selectAll(Page<NewsColumnInformation> page, NewsColumnInformation newsColumnInformation) {
        return success(this.newsColumnInformationService.page(page, new QueryWrapper<>(newsColumnInformation)));
    }
@@ -48,6 +65,7 @@
     * @return 单条数据
     */
    @GetMapping("{id}")
    @ApiOperation(value = "按id查询数据")
    public R selectOne(@PathVariable Serializable id) {
        return success(this.newsColumnInformationService.getById(id));
    }
@@ -59,6 +77,7 @@
     * @return 新增结果
     */
    @PostMapping
    @ApiOperation(value = "新增数据")
    public R insert(@RequestBody NewsColumnInformation newsColumnInformation) {
        return success(this.newsColumnInformationService.save(newsColumnInformation));
    }
@@ -70,6 +89,7 @@
     * @return 修改结果
     */
    @PutMapping
    @ApiOperation(value = "修改数据")
    public R update(@RequestBody NewsColumnInformation newsColumnInformation) {
        return success(this.newsColumnInformationService.updateById(newsColumnInformation));
    }
@@ -81,8 +101,51 @@
     * @return 删除结果
     */
    @DeleteMapping
    @ApiOperation(value = "删除数据")
    public R delete(@RequestParam("idList") List<Long> idList) {
        return success(this.newsColumnInformationService.removeByIds(idList));
    }
    /**
     * 通过栏目id查对应资讯
     *
     * @param id 栏目id
     * @return 资讯查询结果
     */
    @GetMapping("column/{id}")
    @ApiOperation(value = "按栏目id查询讯息")
    public R selectInformationByColumnId(@PathVariable Serializable id ,@RequestParam(value = "pageNum", required = false,defaultValue = "1")Integer pageNum,@RequestParam(value = "pageSize", required = false,defaultValue = "10")Integer pageSize) {
        List<NewsColumnInformation> newsColumnInformationList = newsColumnInformationService.list(new QueryWrapper<NewsColumnInformation>().eq("column_id", id));
        List<NewsInformation> resultList=new ArrayList<>();
        IPage<NewsInformation> page = new Page<>(pageNum, pageSize);
        for (NewsColumnInformation newsColumnInformation:newsColumnInformationList){
            resultList.add(newsInformationService.selectInformationById(newsColumnInformation.getInformationId()));
        }
        page.setTotal(resultList.size());
        if (pageSize>resultList.size()){
            page.setRecords(resultList);
        }
        else {
            List<List<NewsInformation>> lists = split8(resultList, pageSize);
            page.setRecords(lists.get(pageNum-1));
        }
        return success(page);
    }
    public static <T> List<List<T>> split8(List<T> list,int splitSize){
        // 每份个数 splitSize
        if( null == list || list.isEmpty() ){ return Collections.emptyList(); }
        // 列表元素数,总份数
        int size = list.size(), cnt = (size + splitSize - 1 ) / splitSize;
        return Stream
                .iterate(0,i -> i+1 )
                .limit(cnt)
                .parallel()
                .map(i -> list.parallelStream().skip( i * splitSize ).limit(splitSize).collect(Collectors.toList()))
                .filter(a -> !a.isEmpty())
                .collect(Collectors.toList());
    }
}