ExhibitionBoardController.java 28.3 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
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
16
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
17 18
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
liqin's avatar
liqin committed
19 20 21 22 23 24 25 26
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
27
import org.apache.shiro.authz.annotation.RequiresAuthentication;
liqin's avatar
liqin committed
28 29 30 31
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
32
import java.time.LocalDateTime;
liqin's avatar
liqin committed
33
import java.util.Collections;
liqin's avatar
liqin committed
34 35
import java.util.List;
import java.util.Map;
liqin's avatar
liqin committed
36
import java.util.stream.Collectors;
liqin's avatar
liqin committed
37 38

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

liqin's avatar
liqin committed
52 53
    @Resource
    private ExhibitionBoardService exhibitionBoardService;
liqin's avatar
liqin committed
54 55 56 57
    @Resource
    private ExhibitionBoardCatService exhibitionBoardCatService;
    @Resource
    private CopyrightOwnerService copyrightOwnerService;
liqin's avatar
liqin committed
58
    @Resource
liqin's avatar
liqin committed
59 60
    private VideoContentService videoContentService;
    @Resource
liqin's avatar
liqin committed
61
    private AuditService auditService;
liqin's avatar
liqin committed
62 63
    @Resource
    private AssetService assetService;
liqin's avatar
liqin committed
64 65

    @PostMapping("/save")
wzp's avatar
wzp committed
66
    @RequiresAuthentication  //@RequiresPermissions("exhibition:board:save")
liqin's avatar
liqin committed
67
    @ApiOperation(value = "添加展板", notes = "添加展板")
wzp's avatar
wzp committed
68
    @MethodLog(operModule = OperModule.DISPLAYCONTENT, operType = OperType.ADD)
liqin's avatar
liqin committed
69
    public Map<String, Object> saveExhibitionBoard(@Validated(value = {Add.class}) ExhibitionBoard exhibitionBoard) {
liqin's avatar
liqin committed
70 71 72 73 74 75
        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
76
        TUser user = getcurUser();
liqin's avatar
liqin committed
77 78 79
        final List<String> audioIdList = exhibitionBoard.getAudioIdList();
        if (audioIdList == null || audioIdList.isEmpty()) {
            return getFailResult("400", "导览音频文件必须上传");
liqin's avatar
liqin committed
80
        }
liqin's avatar
liqin committed
81 82 83
        final List<String> datumIdList = exhibitionBoard.getDatumIdList();
        if (datumIdList == null || datumIdList.isEmpty()) {
            return getFailResult("400", "参考资料文件必须上传");
liqin's avatar
liqin committed
84 85 86
        }
        exhibitionBoard.setAuditStatus(AuditStatusEnum.TBC.name());
        exhibitionBoard.setPublished(false);
wzp's avatar
wzp committed
87
        exhibitionBoard.setDeleted(false);
88 89
        //填充拼音
        fillPinYin(exhibitionBoard);
liqin's avatar
liqin committed
90 91 92 93
        // 保存业务节点信息
        boolean result = exhibitionBoardService.save(exhibitionBoard);
        // 返回操作结果
        if (result) {
liqin's avatar
liqin committed
94 95 96 97 98 99 100 101 102 103 104 105 106 107
            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
108 109
            final Audit audit = Audit.builder()
                    .content(exhibitionBoard.getName())
liqin's avatar
liqin committed
110
                    .name(exhibitionBoard.getName())
liqin's avatar
liqin committed
111
                    .refItemId(exhibitionBoard.getId())
wzp's avatar
wzp committed
112
                    .userId(user.getId())
liqin's avatar
liqin committed
113
                    .organId(user.getOrgId())
liqin's avatar
liqin committed
114 115
                    .type(AuditTypeEnum.EXHIBITION_BOARD.name())
                    .operation(AuditOperationEnum.ADD.name())
liqin's avatar
liqin committed
116
                    .status(AuditStatusEnum.TBC.name())
liqin's avatar
liqin committed
117 118
                    .level(AuditStatusEnum.TBC.name())
                    .build();
liqin's avatar
liqin committed
119
            this.auditService.save(audit);
liqin's avatar
liqin committed
120 121 122 123 124 125 126
            return getSuccessResult();
        } else {
            // 保存失败
            return getFailResult();
        }
    }

127 128 129 130 131 132 133 134 135 136 137 138 139 140
    /**
     * 展板加上中文拼音,用于拼音或拼音首字母搜索
     *
     * @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
141
    @PutMapping("/update")
wzp's avatar
wzp committed
142
    @RequiresAuthentication  //@RequiresPermissions("exhibition:board:update")
liqin's avatar
liqin committed
143
    @ApiOperation(value = "修改展板信息", notes = "修改展板信息")
wzp's avatar
wzp committed
144
    @MethodLog(operModule = OperModule.DISPLAYCONTENT, operType = OperType.UPDATE)
liqin's avatar
liqin committed
145
    public Map<String, Object> updateExhibitionBoard(@Validated(value = {Update.class}) ExhibitionBoard exhibitionBoard) {
liqin's avatar
liqin committed
146 147 148 149 150 151
        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
152 153 154 155 156 157 158 159
        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", "参考资料文件必须上传");
        }
160 161 162
        //
        removeNotInIds(audioIdList,exhibitionBoard.getId());

liqin's avatar
liqin committed
163 164 165 166 167 168 169 170 171
        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);
            }
        }
172 173 174
        //
        removeNotInIds(audioIdList,exhibitionBoard.getId());

liqin's avatar
liqin committed
175 176
        for (String datumId : datumIdList) {
            final Asset asset = this.assetService.getById(datumId);
177 178 179
            if (asset==null) {
                continue;
            }
liqin's avatar
liqin committed
180 181 182 183 184 185
            if (asset.getPublished()) {
                asset.setFileCat(FileCatEnum.EXHIBITION_BOARD_DATUM.name());
                asset.setRefItemId(exhibitionBoard.getId());
                this.assetService.updateById(asset);
            }
        }
liqin's avatar
liqin committed
186

liqin's avatar
liqin committed
187 188
        final ExhibitionBoard one = this.exhibitionBoardService.getById(exhibitionBoard.getId());
        one.setAuditStatus(AuditStatusEnum.TBC.name());
189 190
        //填充拼音
        fillPinYin(one);
liqin's avatar
liqin committed
191
        this.exhibitionBoardService.updateById(one);
liqin's avatar
liqin committed
192

liqin's avatar
liqin committed
193
        final TUser user = getcurUser();
liqin's avatar
liqin committed
194 195
        final Audit audit = Audit.builder()
                .content(exhibitionBoard.getName())
liqin's avatar
liqin committed
196
                .name(exhibitionBoard.getName())
liqin's avatar
liqin committed
197
                .refItemId(exhibitionBoard.getId())
liqin's avatar
liqin committed
198 199
                .userId(user.getId())
                .organId(user.getOrgId())
liqin's avatar
liqin committed
200 201 202 203 204 205 206 207
                .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
208 209
    }

210 211 212 213 214 215 216 217 218 219 220 221
    /**
     * 修改展板时,不在这个id集合李淼的 代表是要删除的
     *
     * @param assetIds
     */
    public void removeNotInIds(List<String> assetIds,String refItemId) {
        LambdaQueryWrapper<Asset> assetWrapper = new QueryWrapper<Asset>().lambda()
                .eq(Asset::getRefItemId, refItemId)
                .notIn(Asset::getId, assetIds);
        boolean remove = assetService.remove(assetWrapper);
    }

wzp's avatar
wzp committed
222
    @PostMapping("/getList")
wzp's avatar
wzp committed
223
    @RequiresAuthentication  //@RequiresPermissions("exhibition:board:list")
liqin's avatar
liqin committed
224
    @ApiOperation(value = "获取展板全部列表(无分页)", notes = "获取展板全部列表(无分页)")
wzp's avatar
wzp committed
225
    @MethodLog(operModule = OperModule.DISPLAYCONTENT, operType = OperType.SELECT)
liqin's avatar
liqin committed
226 227 228
    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
229
        final LambdaQueryWrapper<ExhibitionBoard> lambdaQueryWrapper = Wrappers.<ExhibitionBoard>lambdaQuery().eq(ExhibitionBoard::getPublished, true);
liqin's avatar
liqin committed
230 231 232 233 234 235
        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
236
        lambdaQueryWrapper.orderByDesc(ExhibitionBoard::getCreateTime);
wzp's avatar
wzp committed
237
        List<ExhibitionBoard> exhibitionBoardList = exhibitionBoardService.list(lambdaQueryWrapper);
liqin's avatar
liqin committed
238
        for (ExhibitionBoard exhibitionBoard : exhibitionBoardList) {
liqin's avatar
liqin committed
239
            if (exhibitionBoard.getBoardCopyrightOwnerId() != null) {
liqin's avatar
liqin committed
240 241 242 243 244 245
                final CopyrightOwner copyrightOwner = this.copyrightOwnerService.getById(exhibitionBoard.getBoardCopyrightOwnerId());
                if (copyrightOwner == null) {
                    exhibitionBoard.setBoardCopyrightOwnerName("对应的展板版权方已被删除");
                } else {
                    exhibitionBoard.setBoardCopyrightOwnerName(copyrightOwner.getName());
                }
liqin's avatar
liqin committed
246
            }
liqin's avatar
liqin committed
247
            if (exhibitionBoard.getVideoContentCopyrightOwnerId() != null) {
liqin's avatar
liqin committed
248 249 250 251 252 253
                final CopyrightOwner copyrightOwner = this.copyrightOwnerService.getById(exhibitionBoard.getVideoContentCopyrightOwnerId());
                if (copyrightOwner == null) {
                    exhibitionBoard.setVideoContentCopyrightOwnerName("对应的视频内容版权方已被删除");
                } else {
                    exhibitionBoard.setVideoContentCopyrightOwnerName(copyrightOwner.getName());
                }
liqin's avatar
liqin committed
254
            }
liqin's avatar
liqin committed
255
            if (exhibitionBoard.getExhibitionBoardCatId() != null) {
liqin's avatar
liqin committed
256 257 258 259 260 261
                final ExhibitionBoardCat exhibitionBoardCat = this.exhibitionBoardCatService.getById(exhibitionBoard.getExhibitionBoardCatId());
                if (exhibitionBoardCat == null) {
                    exhibitionBoard.setExhibitionBoardCatName("对应的展板分类已被删除");
                } else {
                    exhibitionBoard.setExhibitionBoardCatName(exhibitionBoardCat.getName());
                }
liqin's avatar
liqin committed
262
            }
liqin's avatar
liqin committed
263 264 265 266 267 268 269
            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
270
                    final List<Asset> videoList = this.assetService.list(Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, videoContentId).eq(Asset::getPublished, true));
liqin's avatar
liqin committed
271 272 273
                    exhibitionBoard.setVideoList(videoList);
                }
            }
liqin's avatar
liqin committed
274
        }
liqin's avatar
liqin committed
275 276 277 278 279 280 281 282 283 284 285 286
        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
287
    @RequiresAuthentication  //@RequiresPermissions("exhibition:board:page")
liqin's avatar
liqin committed
288
    @ApiOperation(value = "获取展板分页列表", notes = "获取展板分页列表")
wzp's avatar
wzp committed
289
    @MethodLog(operModule = OperModule.DISPLAYCONTENT, operType = OperType.SELECT)
liqin's avatar
liqin committed
290 291 292 293 294 295 296
    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
297
        if (StringUtils.isNotBlank(genericPageParam.getBoardCopyrightOwnerId())) {
liqin's avatar
liqin committed
298
            queryWrapper.eq(ExhibitionBoard::getBoardCopyrightOwnerId, genericPageParam.getBoardCopyrightOwnerId());
liqin's avatar
liqin committed
299
        }
liqin's avatar
liqin committed
300 301 302 303
        // 对版权方模糊查询
        if (StringUtils.isNotBlank(genericPageParam.getExhibitionBoardCatId())) {
            queryWrapper.eq(ExhibitionBoard::getExhibitionBoardCatId, genericPageParam.getExhibitionBoardCatId());
        }
liqin's avatar
liqin committed
304 305 306 307 308 309 310 311 312 313 314
        // 根据创建时间区间检索
        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
315 316
                ExhibitionBoard::getRemarks,
                ExhibitionBoard::getQrcodeUrl,
liqin's avatar
liqin committed
317 318
                ExhibitionBoard::getAuditStatus,
                ExhibitionBoard::getPublished,
liqin's avatar
liqin committed
319
                ExhibitionBoard::getDeleted,
liqin's avatar
liqin committed
320
                ExhibitionBoard::getVideoContentCopyrightOwnerId,
liqin's avatar
liqin committed
321
                ExhibitionBoard::getExhibitionBoardCatId,
liqin's avatar
liqin committed
322 323
                ExhibitionBoard::getBoardCopyrightOwnerId,
                ExhibitionBoard::getVideoContentId,
liqin's avatar
liqin committed
324 325 326 327
                ExhibitionBoard::getCreateTime,
                ExhibitionBoard::getUpdateTime);
        Page<ExhibitionBoard> page = this.exhibitionBoardService.page(getPage(), queryWrapper);
        for (ExhibitionBoard exhibitionBoard : page.getRecords()) {
liqin's avatar
liqin committed
328
            if (exhibitionBoard.getBoardCopyrightOwnerId() != null) {
liqin's avatar
liqin committed
329 330 331 332 333 334
                final CopyrightOwner copyrightOwner = this.copyrightOwnerService.getById(exhibitionBoard.getBoardCopyrightOwnerId());
                if (copyrightOwner == null) {
                    exhibitionBoard.setBoardCopyrightOwnerName("对应的展板版权方已被删除");
                } else {
                    exhibitionBoard.setBoardCopyrightOwnerName(copyrightOwner.getName());
                }
liqin's avatar
liqin committed
335
            }
liqin's avatar
liqin committed
336
            if (exhibitionBoard.getVideoContentCopyrightOwnerId() != null) {
liqin's avatar
liqin committed
337 338 339 340 341 342
                final CopyrightOwner copyrightOwner = this.copyrightOwnerService.getById(exhibitionBoard.getVideoContentCopyrightOwnerId());
                if (copyrightOwner == null) {
                    exhibitionBoard.setVideoContentCopyrightOwnerName("对应的视频内容版权方已被删除");
                } else {
                    exhibitionBoard.setVideoContentCopyrightOwnerName(copyrightOwner.getName());
                }
liqin's avatar
liqin committed
343
            }
liqin's avatar
liqin committed
344
            if (exhibitionBoard.getExhibitionBoardCatId() != null) {
liqin's avatar
liqin committed
345 346 347 348 349 350
                final ExhibitionBoardCat exhibitionBoardCat = this.exhibitionBoardCatService.getById(exhibitionBoard.getExhibitionBoardCatId());
                if (exhibitionBoardCat == null) {
                    exhibitionBoard.setExhibitionBoardCatName("对应的展板分类已被删除");
                } else {
                    exhibitionBoard.setExhibitionBoardCatName(exhibitionBoardCat.getName());
                }
liqin's avatar
liqin committed
351
            }
liqin's avatar
liqin committed
352
            if (exhibitionBoard.getVideoContentId() != null) {
liqin's avatar
liqin committed
353 354
                String videoContentId = exhibitionBoard.getVideoContentId();
                final VideoContent videoContent = this.videoContentService.getById(videoContentId);
liqin's avatar
liqin committed
355
                if (videoContent == null) {
liqin's avatar
liqin committed
356
                    exhibitionBoard.setVideoContentName("对应的视频内容已被删除");
liqin's avatar
liqin committed
357 358
                } else {
                    exhibitionBoard.setVideoContentName(videoContent.getName());
liqin's avatar
liqin committed
359
                    final List<Asset> videoList = this.assetService.list(Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, videoContentId).eq(Asset::getPublished, true));
liqin's avatar
liqin committed
360
                    exhibitionBoard.setVideoList(videoList);
liqin's avatar
liqin committed
361
                }
liqin's avatar
liqin committed
362
            }
liqin's avatar
liqin committed
363 364 365 366 367 368 369 370 371
        }
        return getResult(page);
    }

    @ApiOperation(value = "获取展板详情", notes = "获取展板详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path")
    })
    @GetMapping("/get/{id}")
wzp's avatar
wzp committed
372
    @RequiresAuthentication  //@RequiresPermissions("exhibition:board:get:id")
wzp's avatar
wzp committed
373
    @MethodLog(operModule = OperModule.DISPLAYCONTENT, operType = OperType.SELECT)
liqin's avatar
liqin committed
374 375
    public Map<String, Object> getById(@PathVariable("id") String id) {
        ExhibitionBoard exhibitionBoard = exhibitionBoardService.getById(id);
liqin's avatar
liqin committed
376 377 378 379 380 381 382 383
        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
384 385 386 387
        if (exhibitionBoard.getVideoContentCopyrightOwnerId() != null) {
            String name = this.copyrightOwnerService.getById(exhibitionBoard.getVideoContentCopyrightOwnerId()).getName();
            exhibitionBoard.setVideoContentCopyrightOwnerName(name);
        }
liqin's avatar
liqin committed
388

liqin's avatar
liqin committed
389
        LambdaQueryWrapper<Asset> assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, id);
liqin's avatar
liqin committed
390 391 392
        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
393
        exhibitionBoard.setAudioIdList(audioList.stream().map(Asset::getId).collect(Collectors.toList()));
liqin's avatar
liqin committed
394

liqin's avatar
liqin committed
395
        assetQueryWrapper.clear();
liqin's avatar
liqin committed
396
        assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, exhibitionBoard.getId()).eq(Asset::getPublished, true);
liqin's avatar
liqin committed
397 398 399
        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
400
        exhibitionBoard.setDatumIdList(datumList.stream().map(Asset::getId).collect(Collectors.toList()));
liqin's avatar
liqin committed
401

liqin's avatar
liqin committed
402
        final LambdaQueryWrapper<Audit> auditQueryWrapper = Wrappers.<Audit>lambdaQuery().eq(Audit::getRefItemId, id);
liqin's avatar
liqin committed
403 404 405
        final List<Audit> auditList = this.auditService.list(auditQueryWrapper);
        exhibitionBoard.setAuditHistoryList(auditList);

liqin's avatar
liqin committed
406 407 408 409 410 411
        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
412
            assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, videoContentId).eq(Asset::getPublished, true);
liqin's avatar
liqin committed
413 414 415 416 417 418 419 420 421
            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
422
            @ApiImplicitParam(name = "auditId", value = "审核ID", dataType = "String", paramType = "path", required = true)
liqin's avatar
liqin committed
423
    })
liqin's avatar
liqin committed
424
    @GetMapping("/getAudit/{auditId}")
liqin's avatar
liqin committed
425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441
    @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
442 443 444 445
        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
446 447 448
            exhibitionBoard.setAudioList(audioList);
        }

liqin's avatar
liqin committed
449 450 451 452
        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
453 454 455 456
            exhibitionBoard.setDatumList(datumList);
        }

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

liqin's avatar
liqin committed
460 461 462
        final String videoContentId = exhibitionBoard.getVideoContentId();
        if (videoContentId != null) {
            final VideoContent videoContent = this.videoContentService.getById(videoContentId);
liqin's avatar
liqin committed
463 464 465 466 467 468 469
            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
470
            lambdaQueryWrapper.eq(Asset::getPublished, true);
liqin's avatar
liqin committed
471
            final List<Asset> videoList = this.assetService.list(lambdaQueryWrapper);
liqin's avatar
liqin committed
472
            exhibitionBoard.setVideoList(videoList);
liqin's avatar
liqin committed
473
        }
liqin's avatar
liqin committed
474 475 476
        return getResult(exhibitionBoard);
    }

liqin's avatar
liqin committed
477 478 479
    @ApiOperation(value = "上架/下架展板内容", notes = "上架/下架展板内容")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path"),
liqin's avatar
liqin committed
480
            @ApiImplicitParam(name = "isPublish", value = "是否上架", dataType = "boolean", paramType = "query", allowableValues = "True, False")
liqin's avatar
liqin committed
481 482
    })
    @PutMapping("/publish/{id}")
wzp's avatar
wzp committed
483
    @RequiresAuthentication  //@RequiresPermissions("exhibition:board:publish")
wzp's avatar
wzp committed
484
    @MethodLog(operModule = OperModule.DISPLAYCONTENT, operType = OperType.UPPER)
liqin's avatar
liqin committed
485
    public Map<String, Object> enableExhibitionBoard(@PathVariable("id") String id, @RequestParam("isPublish") Boolean isPublish) {
wzp's avatar
wzp committed
486
        TUser user = getcurUser();
liqin's avatar
liqin committed
487
        final ExhibitionBoard exhibitionBoard = this.exhibitionBoardService.getById(id);
liqin's avatar
liqin committed
488
        final Audit audit = Audit.builder()
wzp's avatar
wzp committed
489
                .userId(user.getId())
liqin's avatar
liqin committed
490 491
                .content(exhibitionBoard.getName())
                .name(exhibitionBoard.getName())
liqin's avatar
liqin committed
492
                .refItemId(id)
liqin's avatar
liqin committed
493
                .organId(user.getOrgId())
liqin's avatar
liqin committed
494
                .type(AuditTypeEnum.EXHIBITION_BOARD.name())
wzp's avatar
wzp committed
495
                .operation(isPublish ? AuditOperationEnum.UPPER.name() : AuditOperationEnum.LOWER.name())
liqin's avatar
liqin committed
496 497
                .status(AuditStatusEnum.TBC.name())
                .level(AuditStatusEnum.TBC.name())
liqin's avatar
liqin committed
498
                .build();
liqin's avatar
liqin committed
499
        this.auditService.save(audit);
liqin's avatar
liqin committed
500
        this.exhibitionBoardService.updateById(ExhibitionBoard.builder().id(id).auditStatus(AuditStatusEnum.TBC.name()).build());
liqin's avatar
liqin committed
501 502 503
        return getSuccessResult();
    }

liqin's avatar
liqin committed
504 505 506 507 508 509 510 511 512
    @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
513
        final ExhibitionBoard exhibitionBoard = this.exhibitionBoardService.getById(id);
liqin's avatar
liqin committed
514
        final Audit audit = Audit.builder()
liqin's avatar
liqin committed
515 516
                .content(exhibitionBoard.getName())
                .name(exhibitionBoard.getName())
liqin's avatar
liqin committed
517 518
                .userId(user.getId())
                .refItemId(id)
liqin's avatar
liqin committed
519
                .organId(user.getOrgId())
liqin's avatar
liqin committed
520 521 522 523 524 525
                .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);
526 527 528 529 530 531 532 533
        //修改自身状态为待初审
        LambdaUpdateWrapper<ExhibitionBoard> wrapper = new UpdateWrapper<ExhibitionBoard>().lambda()
                .eq(ExhibitionBoard::getId, exhibitionBoard.getId())
                .set(ExhibitionBoard::getAuditStatus, AuditStatusEnum.TBC.name())
                .set(ExhibitionBoard::getUpdateTime, LocalDateTime.now());

        boolean update = exhibitionBoardService.update(wrapper);

liqin's avatar
liqin committed
534 535 536 537 538 539
        if (result) {
            return getSuccessResult();
        }
        return getFailResult();
    }

liqin's avatar
liqin committed
540 541
}