package cn.wisenergy.chnmuseum.party.web.controller; import cn.wisenergy.chnmuseum.party.common.log.MethodLog; import cn.wisenergy.chnmuseum.party.common.log.OperModule; import cn.wisenergy.chnmuseum.party.common.log.OperType; import cn.wisenergy.chnmuseum.party.common.validator.groups.Add; import cn.wisenergy.chnmuseum.party.common.vo.GenericPageParam; import cn.wisenergy.chnmuseum.party.model.CopyrightOwner; import cn.wisenergy.chnmuseum.party.model.CopyrightOwnerVideoContentCat; import cn.wisenergy.chnmuseum.party.model.VideoContent; import cn.wisenergy.chnmuseum.party.model.VideoContentCat; import cn.wisenergy.chnmuseum.party.service.*; import cn.wisenergy.chnmuseum.party.web.controller.base.BaseController; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; /** * <pre> * 视频内容分类 前端控制器 * </pre> * * @author Danny Lee * @since 2021-03-17 */ @Slf4j @RestController @RequestMapping("/videoContentCat") @Api(tags = {"视频内容分类接口"}) public class VideoContentCatController extends BaseController { @Resource private CopyrightOwnerVideoContentCatService copyrightOwnerVideoContentCatService; @Resource private VideoContentCatService videoContentCatService; @Resource private VideoContentService videoContentService; @Resource private CopyrightOwnerService copyrightOwnerService; @Resource private ExhibitionBoardService exhibitionBoardService; @Resource private CopyrightOwnerBoardCatService copyrightOwnerBoardCatService; @PostMapping(value = "/save") @RequiresAuthentication //@RequiresPermissions("video:content:cat:save") @ApiOperation(value = "添加视频内容分类", notes = "添加视频内容分类") @MethodLog(operModule = OperModule.VIDEOCLASSIFY, operType = OperType.ADD) public Map<String, Object> saveVideoContentCat(@Validated(value = {Add.class}) VideoContentCat videoContentCat) { // 保存业务节点信息 boolean result = videoContentCatService.save(videoContentCat); // 返回操作结果 if (result) { return getSuccessResult(); } else { // 保存失败 return getFailResult(); } } @PutMapping(value = "/update") @ApiOperation(value = "修改视频内容分类信息", notes = "修改视频内容分类信息") @MethodLog(operModule = OperModule.VIDEOCLASSIFY, operType = OperType.UPDATE) public Map<String, Object> updateVideoContentCat(@Validated VideoContentCat videoContentCat) { boolean flag = videoContentCatService.updateById(videoContentCat); if (flag) { return getSuccessResult(); } return getFailResult(); } @ApiImplicitParams(value = { @ApiImplicitParam(name = "copyrightOwnerId", value = "视频内容版权方ID", paramType = "query", dataType = "String") }) @GetMapping("/getList") @RequiresAuthentication //@RequiresPermissions("video:content:cat:list") @ApiOperation(value = "获取视频内容分类全部列表(无分页)", notes = "获取视频内容分类全部列表(无分页)") @MethodLog(operModule = OperModule.VIDEOCLASSIFY, operType = OperType.SELECT) public Map<String, Object> getVideoContentCatList(@RequestParam(value = "copyrightOwnerId", required = false) List<String> copyrightOwnerIdList) { final LambdaQueryWrapper<VideoContentCat> videoContentCatLambdaQueryWrapper = Wrappers.<VideoContentCat>lambdaQuery().orderByDesc(VideoContentCat::getCreateTime); if (copyrightOwnerIdList != null && !copyrightOwnerIdList.isEmpty()) { final LambdaQueryWrapper<CopyrightOwnerVideoContentCat> queryWrapper = Wrappers.<CopyrightOwnerVideoContentCat>lambdaQuery().in(CopyrightOwnerVideoContentCat::getCopyrightOwnerId, copyrightOwnerIdList); final List<CopyrightOwnerVideoContentCat> copyrightOwnerVideoContentCatList = this.copyrightOwnerVideoContentCatService.list(queryWrapper); if (!copyrightOwnerVideoContentCatList.isEmpty()) { final List<String> collect = copyrightOwnerVideoContentCatList.stream().map(CopyrightOwnerVideoContentCat::getVideoContentCatId).distinct().collect(Collectors.toList()); videoContentCatLambdaQueryWrapper.in(VideoContentCat::getId, collect); } else { return getResult(Collections.emptyList()); } } List<VideoContentCat> videoContentCatList = videoContentCatService.list(videoContentCatLambdaQueryWrapper); return getResult(videoContentCatList); } @ApiImplicitParams(value = { @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"), @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"), @ApiImplicitParam(name = "nameOrCode", value = "名称或编码", paramType = "query", dataType = "String"), @ApiImplicitParam(name = "startDate", value = "创建时间-开始", paramType = "query", dataType = "String"), @ApiImplicitParam(name = "endDate", value = "创建时间-结束", paramType = "query", dataType = "String") }) @PostMapping("/getPageList") @RequiresAuthentication //@RequiresPermissions("video:content:cat:page") @ApiOperation(value = "获取视频内容分类分页列表", notes = "获取视频内容分类分页列表") @MethodLog(operModule = OperModule.VIDEOCLASSIFY, operType = OperType.SELECT) public Map<String, Object> getVideoContentCatPageList(GenericPageParam genericPageParam) { LambdaQueryWrapper<VideoContentCat> queryWrapper = new LambdaQueryWrapper<>(); // 对名称或编码模糊查询 if (StringUtils.isNotBlank(genericPageParam.getNameOrCode())) { queryWrapper.like(VideoContentCat::getName, genericPageParam.getNameOrCode()); } // 根据创建时间区间检索 if (genericPageParam.getStartDate() != null && genericPageParam.getEndDate() != null) { queryWrapper.ge(VideoContentCat::getCreateTime, genericPageParam.getStartDate().atTime(0, 0, 0)) .le(VideoContentCat::getCreateTime, genericPageParam.getEndDate().atTime(23, 59, 59)); } // 设置排序规则 queryWrapper.orderByDesc(VideoContentCat::getCreateTime); // 设置查询内容 queryWrapper.select( VideoContentCat::getId, VideoContentCat::getName, VideoContentCat::getCreateTime, VideoContentCat::getUpdateTime); Page<VideoContentCat> page = this.videoContentCatService.page(getPage(), queryWrapper); for (VideoContentCat videoContentCat : page.getRecords()) { LambdaQueryWrapper<VideoContent> lambdaQueryWrapper = Wrappers.<VideoContent>lambdaQuery().eq(VideoContent::getVideoContentCatId, videoContentCat.getId()); lambdaQueryWrapper = lambdaQueryWrapper.select(VideoContent::getId).select(VideoContent::getVideoContentCopyrightOwnerId); List<VideoContent> videoContentList = this.videoContentService.list(lambdaQueryWrapper); if (!videoContentList.isEmpty()) { final Set<String> videoContentCopyrightOwnerIdList = videoContentList.stream().map(VideoContent::getVideoContentCopyrightOwnerId).collect(Collectors.toSet()); List<CopyrightOwner> copyrightOwnerList = this.copyrightOwnerService.listByIds(videoContentCopyrightOwnerIdList); String copyrightOwnerName = copyrightOwnerList.stream().map(CopyrightOwner::getName).collect(Collectors.joining("、")); videoContentCat.setCopyrightOwnerName(copyrightOwnerName); } } return getResult(page); } @ApiOperation(value = "获取视频内容分类详情", notes = "获取视频内容分类详情") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path") }) @GetMapping("/get/{id}") @RequiresAuthentication //@RequiresPermissions("video:content:cat:get:id") @MethodLog(operModule = OperModule.VIDEOCLASSIFY, operType = OperType.SELECT) public Map<String, Object> getById(@PathVariable("id") String id) { VideoContentCat videoContentCat = videoContentCatService.getById(id); return getResult(videoContentCat); } @DeleteMapping("/delete/{id}") @RequiresAuthentication //@RequiresPermissions("exhibition:board:cat:delete") @ApiOperation(value = "根据ID删除视频内容分类", notes = "根据ID删除视频内容分类") @ApiImplicitParams(value = { @ApiImplicitParam(name = "id", value = "标识ID", paramType = "path", dataType = "String") }) @MethodLog(operModule = OperModule.VIDEOCLASSIFY, operType = OperType.DELETE) public Map<String, Object> deleteVideoContentCat(@PathVariable("id") String id) { this.videoContentCatService.removeById(id); final LambdaUpdateWrapper<VideoContent> updateWrapper = Wrappers.<VideoContent>lambdaUpdate().eq(VideoContent::getVideoContentCatId, id); updateWrapper.set(VideoContent::getDeleted, true); this.videoContentService.update(updateWrapper); final LambdaUpdateWrapper<CopyrightOwnerVideoContentCat> updateWrapper1 = Wrappers.<CopyrightOwnerVideoContentCat>lambdaUpdate().eq(CopyrightOwnerVideoContentCat::getVideoContentCatId, id); this.copyrightOwnerVideoContentCatService.remove(updateWrapper1); // final LambdaQueryWrapper<CopyrightOwnerVideoContentCat> eq = Wrappers.<CopyrightOwnerVideoContentCat>lambdaQuery().eq(CopyrightOwnerVideoContentCat::getVideoContentCatId, id); // final List<CopyrightOwnerVideoContentCat> list = this.copyrightOwnerVideoContentCatService.list(eq); // final List<String> collect = list.stream().map(CopyrightOwnerVideoContentCat::getCopyrightOwnerId).distinct().collect(Collectors.toList()); // // final LambdaUpdateWrapper<VideoContent> updateWrapper2 = Wrappers.<VideoContent>lambdaUpdate().in(VideoContent::getVideoContentCopyrightOwnerId, collect); // updateWrapper2.set(VideoContent::getDeleted, true); // this.videoContentService.update(updateWrapper2); // // final LambdaUpdateWrapper<ExhibitionBoard> updateWrapper3 = Wrappers.<ExhibitionBoard>lambdaUpdate().in(ExhibitionBoard::getBoardCopyrightOwnerId, collect); // updateWrapper3.set(ExhibitionBoard::getDeleted, true); // this.exhibitionBoardService.update(updateWrapper3); // // LambdaUpdateWrapper<CopyrightOwnerBoardCat> deleteWrapper = Wrappers.<CopyrightOwnerBoardCat>lambdaUpdate().in(CopyrightOwnerBoardCat::getCopyrightOwnerId, collect); // this.copyrightOwnerBoardCatService.remove(deleteWrapper); return getSuccessResult(); } }