ExhibitionBoardController.java 27 KB
Newer Older
liqin's avatar
liqin committed
1
package cn.chnmuseum.party.web.controller;
liqin's avatar
liqin committed
2

liqin's avatar
liqin committed
3 4 5 6
import cn.chnmuseum.party.common.enums.*;
import cn.chnmuseum.party.common.log.MethodLog;
import cn.chnmuseum.party.common.log.OperModule;
import cn.chnmuseum.party.common.log.OperType;
7
import cn.chnmuseum.party.common.util.PinYinUtil;
liqin's avatar
liqin committed
8 9 10 11 12 13
import cn.chnmuseum.party.common.validator.groups.Add;
import cn.chnmuseum.party.common.validator.groups.Update;
import cn.chnmuseum.party.common.vo.GenericPageParam;
import cn.chnmuseum.party.model.*;
import cn.chnmuseum.party.service.*;
import cn.chnmuseum.party.web.controller.base.BaseController;
liqin's avatar
liqin committed
14
import com.alibaba.fastjson.JSONObject;
liqin's avatar
liqin committed
15 16 17 18 19 20 21 22 23
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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;
wzp's avatar
wzp committed
24
import org.apache.shiro.authz.annotation.RequiresAuthentication;
liqin's avatar
liqin committed
25 26 27 28
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
liqin's avatar
liqin committed
29
import java.util.Collections;
liqin's avatar
liqin committed
30 31
import java.util.List;
import java.util.Map;
liqin's avatar
liqin committed
32
import java.util.stream.Collectors;
liqin's avatar
liqin committed
33 34

/**
liqin's avatar
liqin committed
35
 * <pre>
liqin's avatar
liqin committed
36
 * 展板 前端控制器
liqin's avatar
liqin committed
37
 * </pre>
liqin's avatar
liqin committed
38 39
 *
 * @author Danny Lee
liqin's avatar
liqin committed
40
 * @since 2021-03-19
liqin's avatar
liqin committed
41
 */
liqin's avatar
liqin committed
42
@Slf4j
liqin's avatar
liqin committed
43
@RestController
liqin's avatar
liqin committed
44 45
@RequestMapping("/exhibitionBoard")
@Api(tags = {"展板操作接口"})
liqin's avatar
liqin committed
46 47
public class ExhibitionBoardController extends BaseController {

liqin's avatar
liqin committed
48 49
    @Resource
    private ExhibitionBoardService exhibitionBoardService;
liqin's avatar
liqin committed
50 51 52 53
    @Resource
    private ExhibitionBoardCatService exhibitionBoardCatService;
    @Resource
    private CopyrightOwnerService copyrightOwnerService;
liqin's avatar
liqin committed
54
    @Resource
liqin's avatar
liqin committed
55 56
    private VideoContentService videoContentService;
    @Resource
liqin's avatar
liqin committed
57
    private AuditService auditService;
liqin's avatar
liqin committed
58 59
    @Resource
    private AssetService assetService;
liqin's avatar
liqin committed
60 61

    @PostMapping("/save")
wzp's avatar
wzp committed
62
    @RequiresAuthentication  //@RequiresPermissions("exhibition:board:save")
liqin's avatar
liqin committed
63
    @ApiOperation(value = "添加展板", notes = "添加展板")
wzp's avatar
wzp committed
64
    @MethodLog(operModule = OperModule.DISPLAYCONTENT, operType = OperType.ADD)
liqin's avatar
liqin committed
65
    public Map<String, Object> saveExhibitionBoard(@Validated(value = {Add.class}) ExhibitionBoard exhibitionBoard) {
liqin's avatar
liqin committed
66 67 68 69 70 71
        final LambdaQueryWrapper<ExhibitionBoard> lambdaQueryWrapper = Wrappers.<ExhibitionBoard>lambdaQuery().eq(ExhibitionBoard::getName, exhibitionBoard.getName().trim());
        final int count = this.exhibitionBoardService.count(lambdaQueryWrapper);
        if (count > 0) {
            return getFailResult("400", "名称已存在,请修改名称");
        }

wzp's avatar
wzp committed
72
        TUser user = getcurUser();
liqin's avatar
liqin committed
73 74 75
        final List<String> audioIdList = exhibitionBoard.getAudioIdList();
        if (audioIdList == null || audioIdList.isEmpty()) {
            return getFailResult("400", "导览音频文件必须上传");
liqin's avatar
liqin committed
76
        }
liqin's avatar
liqin committed
77 78 79
        final List<String> datumIdList = exhibitionBoard.getDatumIdList();
        if (datumIdList == null || datumIdList.isEmpty()) {
            return getFailResult("400", "参考资料文件必须上传");
liqin's avatar
liqin committed
80 81 82
        }
        exhibitionBoard.setAuditStatus(AuditStatusEnum.TBC.name());
        exhibitionBoard.setPublished(false);
wzp's avatar
wzp committed
83
        exhibitionBoard.setDeleted(false);
84 85
        //填充拼音
        fillPinYin(exhibitionBoard);
liqin's avatar
liqin committed
86 87 88 89
        // 保存业务节点信息
        boolean result = exhibitionBoardService.save(exhibitionBoard);
        // 返回操作结果
        if (result) {
liqin's avatar
liqin committed
90 91 92 93 94 95 96 97 98 99 100 101 102 103
            for (String audioId : audioIdList) {
                final Asset asset = this.assetService.getById(audioId);
                asset.setFileType(FileTypeEnum.AUDIO.name());
                asset.setFileCat(FileCatEnum.EXHIBITION_BOARD_AUDIO.name());
                asset.setRefItemId(exhibitionBoard.getId());
                this.assetService.updateById(asset);
            }
            for (String datumId : datumIdList) {
                final Asset asset = this.assetService.getById(datumId);
                asset.setFileCat(FileCatEnum.EXHIBITION_BOARD_DATUM.name());
                asset.setRefItemId(exhibitionBoard.getId());
                this.assetService.updateById(asset);
            }

liqin's avatar
liqin committed
104 105
            final Audit audit = Audit.builder()
                    .content(exhibitionBoard.getName())
liqin's avatar
liqin committed
106
                    .name(exhibitionBoard.getName())
liqin's avatar
liqin committed
107
                    .refItemId(exhibitionBoard.getId())
wzp's avatar
wzp committed
108
                    .userId(user.getId())
liqin's avatar
liqin committed
109
                    .organId(user.getOrgId())
liqin's avatar
liqin committed
110 111
                    .type(AuditTypeEnum.EXHIBITION_BOARD.name())
                    .operation(AuditOperationEnum.ADD.name())
liqin's avatar
liqin committed
112
                    .status(AuditStatusEnum.TBC.name())
liqin's avatar
liqin committed
113 114
                    .level(AuditStatusEnum.TBC.name())
                    .build();
liqin's avatar
liqin committed
115
            this.auditService.save(audit);
liqin's avatar
liqin committed
116 117 118 119 120 121 122
            return getSuccessResult();
        } else {
            // 保存失败
            return getFailResult();
        }
    }

123 124 125 126 127 128 129 130 131 132 133 134 135 136
    /**
     * 展板加上中文拼音,用于拼音或拼音首字母搜索
     *
     * @param exhibitionBoard
     */
    private void fillPinYin(ExhibitionBoard exhibitionBoard) {
        String name = exhibitionBoard.getName();
        if (StringUtils.isBlank(name)) {
            return;
        }
        exhibitionBoard.setNamePinYin(PinYinUtil.getPinYin(name, Boolean.FALSE, Boolean.FALSE));
        exhibitionBoard.setNameFirstPinYin(PinYinUtil.getPinYin(name, Boolean.TRUE, Boolean.FALSE));
    }

liqin's avatar
liqin committed
137
    @PutMapping("/update")
wzp's avatar
wzp committed
138
    @RequiresAuthentication  //@RequiresPermissions("exhibition:board:update")
liqin's avatar
liqin committed
139
    @ApiOperation(value = "修改展板信息", notes = "修改展板信息")
wzp's avatar
wzp committed
140
    @MethodLog(operModule = OperModule.DISPLAYCONTENT, operType = OperType.UPDATE)
liqin's avatar
liqin committed
141
    public Map<String, Object> updateExhibitionBoard(@Validated(value = {Update.class}) ExhibitionBoard exhibitionBoard) {
liqin's avatar
liqin committed
142 143 144 145 146 147
        final LambdaQueryWrapper<ExhibitionBoard> lambdaQueryWrapper = Wrappers.<ExhibitionBoard>lambdaQuery().eq(ExhibitionBoard::getName, exhibitionBoard.getName().trim());
        lambdaQueryWrapper.ne(ExhibitionBoard::getId, exhibitionBoard.getId());
        final int count = this.exhibitionBoardService.count(lambdaQueryWrapper);
        if (count > 0) {
            return getFailResult("400", "名称已存在,请修改名称");
        }
liqin's avatar
liqin committed
148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
        final List<String> audioIdList = exhibitionBoard.getAudioIdList();
        if (audioIdList == null || audioIdList.isEmpty()) {
            return getFailResult("400", "导览音频文件必须上传");
        }
        final List<String> datumIdList = exhibitionBoard.getDatumIdList();
        if (datumIdList == null || datumIdList.isEmpty()) {
            return getFailResult("400", "参考资料文件必须上传");
        }
        for (String audioId : audioIdList) {
            final Asset asset = this.assetService.getById(audioId);
            if (asset.getPublished()) {
                asset.setFileType(FileTypeEnum.AUDIO.name());
                asset.setFileCat(FileCatEnum.EXHIBITION_BOARD_AUDIO.name());
                asset.setRefItemId(exhibitionBoard.getId());
                this.assetService.updateById(asset);
            }
        }
        for (String datumId : datumIdList) {
            final Asset asset = this.assetService.getById(datumId);
            if (asset.getPublished()) {
                asset.setFileCat(FileCatEnum.EXHIBITION_BOARD_DATUM.name());
                asset.setRefItemId(exhibitionBoard.getId());
                this.assetService.updateById(asset);
            }
        }
liqin's avatar
liqin committed
173

liqin's avatar
liqin committed
174 175
        final ExhibitionBoard one = this.exhibitionBoardService.getById(exhibitionBoard.getId());
        one.setAuditStatus(AuditStatusEnum.TBC.name());
176 177
        //填充拼音
        fillPinYin(one);
liqin's avatar
liqin committed
178
        this.exhibitionBoardService.updateById(one);
liqin's avatar
liqin committed
179

liqin's avatar
liqin committed
180
        final TUser user = getcurUser();
liqin's avatar
liqin committed
181 182
        final Audit audit = Audit.builder()
                .content(exhibitionBoard.getName())
liqin's avatar
liqin committed
183
                .name(exhibitionBoard.getName())
liqin's avatar
liqin committed
184
                .refItemId(exhibitionBoard.getId())
liqin's avatar
liqin committed
185 186
                .userId(user.getId())
                .organId(user.getOrgId())
liqin's avatar
liqin committed
187 188 189 190 191 192 193 194
                .type(AuditTypeEnum.EXHIBITION_BOARD.name())
                .operation(AuditOperationEnum.EDIT.name())
                .status(AuditStatusEnum.TBC.name())
                .level(AuditStatusEnum.TBC.name())
                .modelData(JSONObject.toJSONString(exhibitionBoard))
                .build();
        this.auditService.save(audit);
        return getSuccessResult();
liqin's avatar
liqin committed
195 196
    }

wzp's avatar
wzp committed
197
    @PostMapping("/getList")
wzp's avatar
wzp committed
198
    @RequiresAuthentication  //@RequiresPermissions("exhibition:board:list")
liqin's avatar
liqin committed
199
    @ApiOperation(value = "获取展板全部列表(无分页)", notes = "获取展板全部列表(无分页)")
wzp's avatar
wzp committed
200
    @MethodLog(operModule = OperModule.DISPLAYCONTENT, operType = OperType.SELECT)
liqin's avatar
liqin committed
201 202 203
    public Map<String, Object> getExhibitionBoardList(
            @RequestParam(value = "exhibitionBoardCatIdList", required = false) List<String> exhibitionBoardCatIdList,
            @RequestParam(value = "boardCopyrightOwnerIdList", required = false) List<String> boardCopyrightOwnerIdList) {
wzp's avatar
wzp committed
204
        final LambdaQueryWrapper<ExhibitionBoard> lambdaQueryWrapper = Wrappers.<ExhibitionBoard>lambdaQuery().eq(ExhibitionBoard::getPublished, true);
liqin's avatar
liqin committed
205 206 207 208 209 210
        if (exhibitionBoardCatIdList != null && !exhibitionBoardCatIdList.isEmpty()) {
            lambdaQueryWrapper.in(ExhibitionBoard::getExhibitionBoardCatId, exhibitionBoardCatIdList);
        }
        if (boardCopyrightOwnerIdList != null && !boardCopyrightOwnerIdList.isEmpty()) {
            lambdaQueryWrapper.in(ExhibitionBoard::getBoardCopyrightOwnerId, boardCopyrightOwnerIdList);
        }
liqin's avatar
liqin committed
211
        lambdaQueryWrapper.orderByDesc(ExhibitionBoard::getCreateTime);
wzp's avatar
wzp committed
212
        List<ExhibitionBoard> exhibitionBoardList = exhibitionBoardService.list(lambdaQueryWrapper);
liqin's avatar
liqin committed
213
        for (ExhibitionBoard exhibitionBoard : exhibitionBoardList) {
liqin's avatar
liqin committed
214
            if (exhibitionBoard.getBoardCopyrightOwnerId() != null) {
liqin's avatar
liqin committed
215 216 217 218 219 220
                final CopyrightOwner copyrightOwner = this.copyrightOwnerService.getById(exhibitionBoard.getBoardCopyrightOwnerId());
                if (copyrightOwner == null) {
                    exhibitionBoard.setBoardCopyrightOwnerName("对应的展板版权方已被删除");
                } else {
                    exhibitionBoard.setBoardCopyrightOwnerName(copyrightOwner.getName());
                }
liqin's avatar
liqin committed
221
            }
liqin's avatar
liqin committed
222
            if (exhibitionBoard.getVideoContentCopyrightOwnerId() != null) {
liqin's avatar
liqin committed
223 224 225 226 227 228
                final CopyrightOwner copyrightOwner = this.copyrightOwnerService.getById(exhibitionBoard.getVideoContentCopyrightOwnerId());
                if (copyrightOwner == null) {
                    exhibitionBoard.setVideoContentCopyrightOwnerName("对应的视频内容版权方已被删除");
                } else {
                    exhibitionBoard.setVideoContentCopyrightOwnerName(copyrightOwner.getName());
                }
liqin's avatar
liqin committed
229
            }
liqin's avatar
liqin committed
230
            if (exhibitionBoard.getExhibitionBoardCatId() != null) {
liqin's avatar
liqin committed
231 232 233 234 235 236
                final ExhibitionBoardCat exhibitionBoardCat = this.exhibitionBoardCatService.getById(exhibitionBoard.getExhibitionBoardCatId());
                if (exhibitionBoardCat == null) {
                    exhibitionBoard.setExhibitionBoardCatName("对应的展板分类已被删除");
                } else {
                    exhibitionBoard.setExhibitionBoardCatName(exhibitionBoardCat.getName());
                }
liqin's avatar
liqin committed
237
            }
liqin's avatar
liqin committed
238 239 240 241 242 243 244
            if (exhibitionBoard.getVideoContentId() != null) {
                String videoContentId = exhibitionBoard.getVideoContentId();
                final VideoContent videoContent = this.videoContentService.getById(videoContentId);
                if (videoContent == null) {
                    exhibitionBoard.setVideoList(Collections.emptyList());
                } else {
                    exhibitionBoard.setVideoContentName(videoContent.getName());
liqin's avatar
liqin committed
245
                    final List<Asset> videoList = this.assetService.list(Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, videoContentId).eq(Asset::getPublished, true));
liqin's avatar
liqin committed
246 247 248
                    exhibitionBoard.setVideoList(videoList);
                }
            }
liqin's avatar
liqin committed
249
        }
liqin's avatar
liqin committed
250 251 252 253 254 255 256 257 258 259 260 261
        return getResult(exhibitionBoardList);
    }

    @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 = "copyrightOwner", value = "版权方", paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "startDate", value = "创建时间-开始", paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "endDate", value = "创建时间-结束", paramType = "query", dataType = "String")
    })
    @PostMapping("/getPageList")
wzp's avatar
wzp committed
262
    @RequiresAuthentication  //@RequiresPermissions("exhibition:board:page")
liqin's avatar
liqin committed
263
    @ApiOperation(value = "获取展板分页列表", notes = "获取展板分页列表")
wzp's avatar
wzp committed
264
    @MethodLog(operModule = OperModule.DISPLAYCONTENT, operType = OperType.SELECT)
liqin's avatar
liqin committed
265 266 267 268 269 270 271
    public Map<String, Object> getExhibitionBoardPageList(GenericPageParam genericPageParam) {
        LambdaQueryWrapper<ExhibitionBoard> queryWrapper = new LambdaQueryWrapper<>();
        // 对名称或编码模糊查询
        if (StringUtils.isNotBlank(genericPageParam.getNameOrCode())) {
            queryWrapper.like(ExhibitionBoard::getName, genericPageParam.getNameOrCode());
        }
        // 对版权方模糊查询
liqin's avatar
liqin committed
272
        if (StringUtils.isNotBlank(genericPageParam.getBoardCopyrightOwnerId())) {
liqin's avatar
liqin committed
273
            queryWrapper.eq(ExhibitionBoard::getBoardCopyrightOwnerId, genericPageParam.getBoardCopyrightOwnerId());
liqin's avatar
liqin committed
274
        }
liqin's avatar
liqin committed
275 276 277 278
        // 对版权方模糊查询
        if (StringUtils.isNotBlank(genericPageParam.getExhibitionBoardCatId())) {
            queryWrapper.eq(ExhibitionBoard::getExhibitionBoardCatId, genericPageParam.getExhibitionBoardCatId());
        }
liqin's avatar
liqin committed
279 280 281 282 283 284 285 286 287 288 289
        // 根据创建时间区间检索
        if (genericPageParam.getStartDate() != null && genericPageParam.getEndDate() != null) {
            queryWrapper.ge(ExhibitionBoard::getCreateTime, genericPageParam.getStartDate().atTime(0, 0, 0))
                    .le(ExhibitionBoard::getCreateTime, genericPageParam.getEndDate().atTime(23, 59, 59));
        }
        // 设置排序规则
        queryWrapper.orderByDesc(ExhibitionBoard::getCreateTime);
        // 设置查询内容
        queryWrapper.select(
                ExhibitionBoard::getId,
                ExhibitionBoard::getName,
liqin's avatar
liqin committed
290 291
                ExhibitionBoard::getRemarks,
                ExhibitionBoard::getQrcodeUrl,
liqin's avatar
liqin committed
292 293
                ExhibitionBoard::getAuditStatus,
                ExhibitionBoard::getPublished,
liqin's avatar
liqin committed
294
                ExhibitionBoard::getDeleted,
liqin's avatar
liqin committed
295
                ExhibitionBoard::getVideoContentCopyrightOwnerId,
liqin's avatar
liqin committed
296
                ExhibitionBoard::getExhibitionBoardCatId,
liqin's avatar
liqin committed
297 298
                ExhibitionBoard::getBoardCopyrightOwnerId,
                ExhibitionBoard::getVideoContentId,
liqin's avatar
liqin committed
299 300 301 302
                ExhibitionBoard::getCreateTime,
                ExhibitionBoard::getUpdateTime);
        Page<ExhibitionBoard> page = this.exhibitionBoardService.page(getPage(), queryWrapper);
        for (ExhibitionBoard exhibitionBoard : page.getRecords()) {
liqin's avatar
liqin committed
303
            if (exhibitionBoard.getBoardCopyrightOwnerId() != null) {
liqin's avatar
liqin committed
304 305 306 307 308 309
                final CopyrightOwner copyrightOwner = this.copyrightOwnerService.getById(exhibitionBoard.getBoardCopyrightOwnerId());
                if (copyrightOwner == null) {
                    exhibitionBoard.setBoardCopyrightOwnerName("对应的展板版权方已被删除");
                } else {
                    exhibitionBoard.setBoardCopyrightOwnerName(copyrightOwner.getName());
                }
liqin's avatar
liqin committed
310
            }
liqin's avatar
liqin committed
311
            if (exhibitionBoard.getVideoContentCopyrightOwnerId() != null) {
liqin's avatar
liqin committed
312 313 314 315 316 317
                final CopyrightOwner copyrightOwner = this.copyrightOwnerService.getById(exhibitionBoard.getVideoContentCopyrightOwnerId());
                if (copyrightOwner == null) {
                    exhibitionBoard.setVideoContentCopyrightOwnerName("对应的视频内容版权方已被删除");
                } else {
                    exhibitionBoard.setVideoContentCopyrightOwnerName(copyrightOwner.getName());
                }
liqin's avatar
liqin committed
318
            }
liqin's avatar
liqin committed
319
            if (exhibitionBoard.getExhibitionBoardCatId() != null) {
liqin's avatar
liqin committed
320 321 322 323 324 325
                final ExhibitionBoardCat exhibitionBoardCat = this.exhibitionBoardCatService.getById(exhibitionBoard.getExhibitionBoardCatId());
                if (exhibitionBoardCat == null) {
                    exhibitionBoard.setExhibitionBoardCatName("对应的展板分类已被删除");
                } else {
                    exhibitionBoard.setExhibitionBoardCatName(exhibitionBoardCat.getName());
                }
liqin's avatar
liqin committed
326
            }
liqin's avatar
liqin committed
327
            if (exhibitionBoard.getVideoContentId() != null) {
liqin's avatar
liqin committed
328 329
                String videoContentId = exhibitionBoard.getVideoContentId();
                final VideoContent videoContent = this.videoContentService.getById(videoContentId);
liqin's avatar
liqin committed
330
                if (videoContent == null) {
liqin's avatar
liqin committed
331
                    exhibitionBoard.setVideoContentName("对应的视频内容已被删除");
liqin's avatar
liqin committed
332 333
                } else {
                    exhibitionBoard.setVideoContentName(videoContent.getName());
liqin's avatar
liqin committed
334
                    final List<Asset> videoList = this.assetService.list(Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, videoContentId).eq(Asset::getPublished, true));
liqin's avatar
liqin committed
335
                    exhibitionBoard.setVideoList(videoList);
liqin's avatar
liqin committed
336
                }
liqin's avatar
liqin committed
337
            }
liqin's avatar
liqin committed
338 339 340 341 342 343 344 345 346
        }
        return getResult(page);
    }

    @ApiOperation(value = "获取展板详情", notes = "获取展板详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path")
    })
    @GetMapping("/get/{id}")
wzp's avatar
wzp committed
347
    @RequiresAuthentication  //@RequiresPermissions("exhibition:board:get:id")
wzp's avatar
wzp committed
348
    @MethodLog(operModule = OperModule.DISPLAYCONTENT, operType = OperType.SELECT)
liqin's avatar
liqin committed
349 350
    public Map<String, Object> getById(@PathVariable("id") String id) {
        ExhibitionBoard exhibitionBoard = exhibitionBoardService.getById(id);
liqin's avatar
liqin committed
351 352 353 354 355 356 357 358
        String exhibitionBoardCatId = exhibitionBoard.getExhibitionBoardCatId();
        if (exhibitionBoardCatId != null) {
            exhibitionBoard.setExhibitionBoardCatName(this.exhibitionBoardCatService.getById(exhibitionBoardCatId).getName());
        }
        String boardCopyrightOwnerId = exhibitionBoard.getBoardCopyrightOwnerId();
        if (boardCopyrightOwnerId != null) {
            exhibitionBoard.setBoardCopyrightOwnerName(this.copyrightOwnerService.getById(boardCopyrightOwnerId).getName());
        }
liqin's avatar
liqin committed
359 360 361 362
        if (exhibitionBoard.getVideoContentCopyrightOwnerId() != null) {
            String name = this.copyrightOwnerService.getById(exhibitionBoard.getVideoContentCopyrightOwnerId()).getName();
            exhibitionBoard.setVideoContentCopyrightOwnerName(name);
        }
liqin's avatar
liqin committed
363

liqin's avatar
liqin committed
364
        LambdaQueryWrapper<Asset> assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, id);
liqin's avatar
liqin committed
365 366 367
        assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_AUDIO.name());
        final List<Asset> audioList = this.assetService.list(assetQueryWrapper);
        exhibitionBoard.setAudioList(audioList);
liqin's avatar
liqin committed
368
        exhibitionBoard.setAudioIdList(audioList.stream().map(Asset::getId).collect(Collectors.toList()));
liqin's avatar
liqin committed
369

liqin's avatar
liqin committed
370
        assetQueryWrapper.clear();
liqin's avatar
liqin committed
371
        assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, exhibitionBoard.getId()).eq(Asset::getPublished, true);
liqin's avatar
liqin committed
372 373 374
        assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_DATUM.name());
        final List<Asset> datumList = this.assetService.list(assetQueryWrapper);
        exhibitionBoard.setDatumList(datumList);
liqin's avatar
liqin committed
375
        exhibitionBoard.setDatumIdList(datumList.stream().map(Asset::getId).collect(Collectors.toList()));
liqin's avatar
liqin committed
376

liqin's avatar
liqin committed
377
        final LambdaQueryWrapper<Audit> auditQueryWrapper = Wrappers.<Audit>lambdaQuery().eq(Audit::getRefItemId, id);
liqin's avatar
liqin committed
378 379 380
        final List<Audit> auditList = this.auditService.list(auditQueryWrapper);
        exhibitionBoard.setAuditHistoryList(auditList);

liqin's avatar
liqin committed
381 382 383 384 385 386
        final String videoContentId = exhibitionBoard.getVideoContentId();
        if (videoContentId != null) {
            final VideoContent videoContent = this.videoContentService.getById(videoContentId);
            exhibitionBoard.setVideoContentName(videoContent.getName());

            assetQueryWrapper.clear();
liqin's avatar
liqin committed
387
            assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, videoContentId).eq(Asset::getPublished, true);
liqin's avatar
liqin committed
388 389 390 391 392 393 394 395 396
            assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.VIDEO_CONTENT.name());
            final List<Asset> videoList = this.assetService.list(assetQueryWrapper);
            exhibitionBoard.setVideoList(videoList);
        }
        return getResult(exhibitionBoard);
    }

    @ApiOperation(value = "获取展板详情(审核详情使用)", notes = "获取展板详情(审核详情使用)")
    @ApiImplicitParams({
liqin's avatar
liqin committed
397
            @ApiImplicitParam(name = "auditId", value = "审核ID", dataType = "String", paramType = "path", required = true)
liqin's avatar
liqin committed
398
    })
liqin's avatar
liqin committed
399
    @GetMapping("/getAudit/{auditId}")
liqin's avatar
liqin committed
400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416
    @RequiresAuthentication  //@RequiresPermissions("video:content:get:id")
    @MethodLog(operModule = OperModule.DISPLAYCONTENT, operType = OperType.SELECT)
    public Map<String, Object> getAuditInfoById(@PathVariable("auditId") String auditId) {
        final ExhibitionBoard exhibitionBoard = JSONObject.parseObject(this.auditService.getById(auditId).getModelData(), ExhibitionBoard.class);
        String exhibitionBoardCatId = exhibitionBoard.getExhibitionBoardCatId();
        if (exhibitionBoardCatId != null) {
            exhibitionBoard.setExhibitionBoardCatName(this.exhibitionBoardCatService.getById(exhibitionBoardCatId).getName());
        }
        String boardCopyrightOwnerId = exhibitionBoard.getBoardCopyrightOwnerId();
        if (boardCopyrightOwnerId != null) {
            exhibitionBoard.setBoardCopyrightOwnerName(this.copyrightOwnerService.getById(boardCopyrightOwnerId).getName());
        }
        if (exhibitionBoard.getVideoContentCopyrightOwnerId() != null) {
            String name = this.copyrightOwnerService.getById(exhibitionBoard.getVideoContentCopyrightOwnerId()).getName();
            exhibitionBoard.setVideoContentCopyrightOwnerName(name);
        }

liqin's avatar
liqin committed
417 418 419 420
        final List<String> audioIdList = exhibitionBoard.getAudioIdList();
        if (audioIdList != null && !audioIdList.isEmpty()) {
            final List<Asset> audioList = this.assetService.listByIds(audioIdList);
            exhibitionBoard.setAudioIdList(audioIdList);
liqin's avatar
liqin committed
421 422 423
            exhibitionBoard.setAudioList(audioList);
        }

liqin's avatar
liqin committed
424 425 426 427
        final List<String> datumIdList = exhibitionBoard.getDatumIdList();
        if (datumIdList != null && !datumIdList.isEmpty()) {
            final List<Asset> datumList = this.assetService.listByIds(datumIdList);
            exhibitionBoard.setDatumIdList(datumIdList);
liqin's avatar
liqin committed
428 429 430 431
            exhibitionBoard.setDatumList(datumList);
        }

        final LambdaQueryWrapper<Audit> auditQueryWrapper = Wrappers.<Audit>lambdaQuery().eq(Audit::getRefItemId, exhibitionBoard.getId());
liqin's avatar
liqin committed
432 433 434
        final List<Audit> auditList = this.auditService.list(auditQueryWrapper);
        exhibitionBoard.setAuditHistoryList(auditList);

liqin's avatar
liqin committed
435 436 437
        final String videoContentId = exhibitionBoard.getVideoContentId();
        if (videoContentId != null) {
            final VideoContent videoContent = this.videoContentService.getById(videoContentId);
liqin's avatar
liqin committed
438 439 440 441 442 443 444
            if (videoContent != null) {
                exhibitionBoard.setVideoContentName(videoContent.getName());
            } else {
                exhibitionBoard.setVideoContentName("相关视频内容已被删除");
            }
            final LambdaQueryWrapper<Asset> lambdaQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, videoContentId);
            lambdaQueryWrapper.eq(Asset::getFileCat, FileCatEnum.VIDEO_CONTENT.name());
liqin's avatar
liqin committed
445
            lambdaQueryWrapper.eq(Asset::getPublished, true);
liqin's avatar
liqin committed
446
            final List<Asset> videoList = this.assetService.list(lambdaQueryWrapper);
liqin's avatar
liqin committed
447
            exhibitionBoard.setVideoList(videoList);
liqin's avatar
liqin committed
448
        }
liqin's avatar
liqin committed
449 450 451
        return getResult(exhibitionBoard);
    }

liqin's avatar
liqin committed
452 453 454
    @ApiOperation(value = "上架/下架展板内容", notes = "上架/下架展板内容")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path"),
liqin's avatar
liqin committed
455
            @ApiImplicitParam(name = "isPublish", value = "是否上架", dataType = "boolean", paramType = "query", allowableValues = "True, False")
liqin's avatar
liqin committed
456 457
    })
    @PutMapping("/publish/{id}")
wzp's avatar
wzp committed
458
    @RequiresAuthentication  //@RequiresPermissions("exhibition:board:publish")
wzp's avatar
wzp committed
459
    @MethodLog(operModule = OperModule.DISPLAYCONTENT, operType = OperType.UPPER)
liqin's avatar
liqin committed
460
    public Map<String, Object> enableExhibitionBoard(@PathVariable("id") String id, @RequestParam("isPublish") Boolean isPublish) {
wzp's avatar
wzp committed
461
        TUser user = getcurUser();
liqin's avatar
liqin committed
462
        final ExhibitionBoard exhibitionBoard = this.exhibitionBoardService.getById(id);
liqin's avatar
liqin committed
463
        final Audit audit = Audit.builder()
wzp's avatar
wzp committed
464
                .userId(user.getId())
liqin's avatar
liqin committed
465 466
                .content(exhibitionBoard.getName())
                .name(exhibitionBoard.getName())
liqin's avatar
liqin committed
467
                .refItemId(id)
liqin's avatar
liqin committed
468
                .organId(user.getOrgId())
liqin's avatar
liqin committed
469
                .type(AuditTypeEnum.EXHIBITION_BOARD.name())
wzp's avatar
wzp committed
470
                .operation(isPublish ? AuditOperationEnum.UPPER.name() : AuditOperationEnum.LOWER.name())
liqin's avatar
liqin committed
471 472
                .status(AuditStatusEnum.TBC.name())
                .level(AuditStatusEnum.TBC.name())
liqin's avatar
liqin committed
473
                .build();
liqin's avatar
liqin committed
474
        this.auditService.save(audit);
liqin's avatar
liqin committed
475
        this.exhibitionBoardService.updateById(ExhibitionBoard.builder().id(id).auditStatus(AuditStatusEnum.TBC.name()).build());
liqin's avatar
liqin committed
476 477 478
        return getSuccessResult();
    }

liqin's avatar
liqin committed
479 480 481 482 483 484 485 486 487
    @DeleteMapping("/delete/{id}")
    @RequiresAuthentication  //@RequiresPermissions("exhibition:board:delete")
    @ApiOperation(value = "根据ID删除展板", notes = "根据ID删除展板")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "id", value = "标识ID", paramType = "path", dataType = "String")
    })
    @MethodLog(operModule = OperModule.DISPLAYCONTENT, operType = OperType.DELETE)
    public Map<String, Object> deleteExhibitionBoard(@PathVariable("id") String id) {
        TUser user = getcurUser();
liqin's avatar
liqin committed
488
        final ExhibitionBoard exhibitionBoard = this.exhibitionBoardService.getById(id);
liqin's avatar
liqin committed
489
        final Audit audit = Audit.builder()
liqin's avatar
liqin committed
490 491
                .content(exhibitionBoard.getName())
                .name(exhibitionBoard.getName())
liqin's avatar
liqin committed
492 493
                .userId(user.getId())
                .refItemId(id)
liqin's avatar
liqin committed
494
                .organId(user.getOrgId())
liqin's avatar
liqin committed
495 496 497 498 499 500 501 502 503 504 505 506
                .type(AuditTypeEnum.EXHIBITION_BOARD.name())
                .operation(AuditOperationEnum.REMOVE.name())
                .status(AuditStatusEnum.TBC.name())
                .level(AuditStatusEnum.TBC.name())
                .build();
        final boolean result = this.auditService.save(audit);
        if (result) {
            return getSuccessResult();
        }
        return getFailResult();
    }

liqin's avatar
liqin committed
507 508
}