ExhibitionBoardController.java 28.2 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 177 178 179 180 181 182
        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
183

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

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

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

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

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

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

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

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

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

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

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

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

liqin's avatar
liqin committed
501 502 503 504 505 506 507 508 509
    @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
510
        final ExhibitionBoard exhibitionBoard = this.exhibitionBoardService.getById(id);
liqin's avatar
liqin committed
511
        final Audit audit = Audit.builder()
liqin's avatar
liqin committed
512 513
                .content(exhibitionBoard.getName())
                .name(exhibitionBoard.getName())
liqin's avatar
liqin committed
514 515
                .userId(user.getId())
                .refItemId(id)
liqin's avatar
liqin committed
516
                .organId(user.getOrgId())
liqin's avatar
liqin committed
517 518 519 520 521 522
                .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);
523 524 525 526 527 528 529 530
        //修改自身状态为待初审
        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
531 532 533 534 535 536
        if (result) {
            return getSuccessResult();
        }
        return getFailResult();
    }

liqin's avatar
liqin committed
537 538
}