From e26d98c47301e937a2812b607e26e5801dce83fe Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期一, 26 五月 2025 09:54:09 +0800 Subject: [PATCH] add:影视作品信息管理 --- src/main/java/com/mzl/flower/dto/request/filmwork/FilmWorksQueryDTO.java | 24 +++++ src/main/java/com/mzl/flower/service/film/impl/FilmWorksServiceImpl.java | 71 +++++++++++++++++ src/main/resources/mapper/film/FilmWorksMapper.xml | 51 +++++------- src/main/java/com/mzl/flower/dto/response/filmwork/FilmWorksVO.java | 17 +++- src/main/java/com/mzl/flower/entity/film/FilmWorks.java | 8 + src/main/java/com/mzl/flower/mapper/filmwork/FilmWorksMapper.java | 5 + src/main/java/com/mzl/flower/web/film/FilmWorksController.java | 31 +++++++ src/main/java/com/mzl/flower/service/film/FilmWorksService.java | 9 ++ 8 files changed, 177 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/mzl/flower/dto/request/filmwork/FilmWorksQueryDTO.java b/src/main/java/com/mzl/flower/dto/request/filmwork/FilmWorksQueryDTO.java index a688f7a..aa5766f 100644 --- a/src/main/java/com/mzl/flower/dto/request/filmwork/FilmWorksQueryDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/filmwork/FilmWorksQueryDTO.java @@ -3,8 +3,28 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.time.LocalDateTime; + @Data public class FilmWorksQueryDTO { - @ApiModelProperty(value = "会员等级名称") - private String name; + @ApiModelProperty(value = "中文名称") + private String nameCn; + + @ApiModelProperty("片场类型(FILMSET_TYPE)") + private String type; + + @ApiModelProperty("发布状态(COMMON_PUBLISH_STATUS)") + private String status; + + @ApiModelProperty("创建日期(yyyy-mm-dd)") + private String createDateBeginStr; + + @ApiModelProperty("创建日期(yyyy-mm-dd)") + private String createDateEndStr; + + @ApiModelProperty(value = "创建日期(yyyy-mm-dd)",hidden = true) + private LocalDateTime createDateBegin; + + @ApiModelProperty(value = "创建日期(yyyy-mm-dd)", hidden = true) + private LocalDateTime createDateEnd; } diff --git a/src/main/java/com/mzl/flower/dto/response/filmwork/FilmWorksVO.java b/src/main/java/com/mzl/flower/dto/response/filmwork/FilmWorksVO.java index 4b8122f..17045ab 100644 --- a/src/main/java/com/mzl/flower/dto/response/filmwork/FilmWorksVO.java +++ b/src/main/java/com/mzl/flower/dto/response/filmwork/FilmWorksVO.java @@ -2,11 +2,8 @@ import com.mzl.flower.base.AbstractTransDTO; import com.mzl.flower.base.annotation.DictTrans; -import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.math.BigDecimal; -import java.time.LocalDateTime; @Data public class FilmWorksVO extends AbstractTransDTO { @@ -25,7 +22,10 @@ /** * 作品类型 */ + @DictTrans(target = "typeStr", codeType = "FILMSET_TYPE") private String type; + + private String typeStr; /** * 上映年份 @@ -70,7 +70,11 @@ /** * 创建者用户类型 */ + @DictTrans(target = "userTypeStr", codeType = "FILMSET_CREATE_TYPE") private String userType; + + + private String userTypeStr; /** * 置顶权重(越大越靠前) @@ -78,9 +82,12 @@ private Integer stickyWeight; /** - * 状态(0禁用,1启用) + * 状态 */ - private Integer status; + @DictTrans(target = "statusStr", codeType = "COMMON_PUBLISH_STATUS") + private String status; + + private String statusStr; /** * 创建者ID diff --git a/src/main/java/com/mzl/flower/entity/film/FilmWorks.java b/src/main/java/com/mzl/flower/entity/film/FilmWorks.java index fdfc034..5cee130 100644 --- a/src/main/java/com/mzl/flower/entity/film/FilmWorks.java +++ b/src/main/java/com/mzl/flower/entity/film/FilmWorks.java @@ -1,9 +1,12 @@ package com.mzl.flower.entity.film; import com.baomidou.mybatisplus.annotation.TableName; + +import java.time.LocalDate; import java.time.LocalDateTime; import com.mzl.flower.base.BaseAutoEntity; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -85,7 +88,7 @@ /** * 状态(0禁用,1启用) */ - private Integer status; + private String status; /** * 创建者ID @@ -117,5 +120,8 @@ */ private Integer shareCount; + @ApiModelProperty("发布日期") + private LocalDate publishDate; + } diff --git a/src/main/java/com/mzl/flower/mapper/filmwork/FilmWorksMapper.java b/src/main/java/com/mzl/flower/mapper/filmwork/FilmWorksMapper.java index afbcf55..6b03a07 100644 --- a/src/main/java/com/mzl/flower/mapper/filmwork/FilmWorksMapper.java +++ b/src/main/java/com/mzl/flower/mapper/filmwork/FilmWorksMapper.java @@ -1,8 +1,11 @@ package com.mzl.flower.mapper.filmwork; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.mzl.flower.dto.request.filmwork.FilmWorksQueryDTO; import com.mzl.flower.dto.response.filmwork.FilmWorksVO; import com.mzl.flower.entity.film.FilmWorks; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; @@ -20,4 +23,6 @@ @Select("select * from film_works where deleted = '0' and user_type = 'admin'") List<FilmWorksVO> getFilmWorksAll(); + + List<FilmWorksVO> queryPage(@Param("dto") FilmWorksQueryDTO dto, Page page); } diff --git a/src/main/java/com/mzl/flower/service/film/FilmWorksService.java b/src/main/java/com/mzl/flower/service/film/FilmWorksService.java index 5113fa8..fd3c843 100644 --- a/src/main/java/com/mzl/flower/service/film/FilmWorksService.java +++ b/src/main/java/com/mzl/flower/service/film/FilmWorksService.java @@ -1,6 +1,7 @@ package com.mzl.flower.service.film; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.mzl.flower.dto.BatchDTO; import com.mzl.flower.dto.request.filmwork.FilmWorksDTO; import com.mzl.flower.dto.request.filmwork.FilmWorksQueryDTO; import com.mzl.flower.dto.response.filmwork.FilmWorksVO; @@ -27,4 +28,12 @@ Page<FilmWorksVO> queryPage(FilmWorksQueryDTO filmWorksQueryDTO, Page page); List<FilmWorksVO> getFilmWorksAll(); + + void changeStatus(Long id); + + void batchDelete(BatchDTO dto); + + void batchPublish(BatchDTO dto); + + FilmWorksVO detail(Long id); } diff --git a/src/main/java/com/mzl/flower/service/film/impl/FilmWorksServiceImpl.java b/src/main/java/com/mzl/flower/service/film/impl/FilmWorksServiceImpl.java index 10d204b..7548242 100644 --- a/src/main/java/com/mzl/flower/service/film/impl/FilmWorksServiceImpl.java +++ b/src/main/java/com/mzl/flower/service/film/impl/FilmWorksServiceImpl.java @@ -1,18 +1,29 @@ package com.mzl.flower.service.film.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.mzl.flower.config.exception.ValidationException; +import com.mzl.flower.constant.Constants; +import com.mzl.flower.dto.BatchDTO; import com.mzl.flower.dto.request.filmwork.FilmWorksDTO; import com.mzl.flower.dto.request.filmwork.FilmWorksQueryDTO; +import com.mzl.flower.dto.response.content.BannerDTO; +import com.mzl.flower.dto.response.content.FilmsetDTO; import com.mzl.flower.dto.response.filmwork.FilmWorksVO; +import com.mzl.flower.entity.content.Banner; +import com.mzl.flower.entity.content.Filmset; import com.mzl.flower.entity.film.FilmWorks; import com.mzl.flower.mapper.filmwork.FilmWorksMapper; import com.mzl.flower.service.film.FilmWorksService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mzl.flower.utils.DateUtils; import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDate; import java.util.List; /** @@ -36,6 +47,7 @@ FilmWorks filmWorks = new FilmWorks(); BeanUtils.copyProperties(filmWorksDTO, filmWorks); filmWorks.create(); + filmWorks.setStatus(Constants.COMMON_PUBLISH_STATUS.unpublished.name()); filmWorksMapper.insert(filmWorks); } @@ -46,16 +58,69 @@ @Override public void deleteFilmWorks(String id) { - + FilmWorks filmWork = filmWorksMapper.selectById(id); + if(filmWork==null){ + throw new ValidationException("找不到id为"+id+"的影视作品"); + } + filmWorksMapper.deleteById(id); } @Override - public Page<FilmWorksVO> queryPage(FilmWorksQueryDTO filmWorksQueryDTO, Page page) { - return null; + public Page<FilmWorksVO> queryPage(FilmWorksQueryDTO dto, Page page) { + if(StringUtils.isNotBlank(dto.getCreateDateBeginStr())){ + dto.setCreateDateBegin(DateUtils.dateToLocalDateTime(dto.getCreateDateBeginStr(),true)); + } + if(StringUtils.isNotBlank(dto.getCreateDateEndStr())){ + dto.setCreateDateEnd(DateUtils.dateToLocalDateTime(dto.getCreateDateEndStr(),false)); + } + List<FilmWorksVO> list = filmWorksMapper.queryPage(dto,page); + page.setRecords(list); + return page; } @Override public List<FilmWorksVO> getFilmWorksAll() { return filmWorksMapper.getFilmWorksAll(); } + + @Override + public void changeStatus(Long id) { + FilmWorks filmWork = filmWorksMapper.selectById(id); + if (filmWork == null) { + throw new ValidationException("找不到id为" + id + "的公告"); + } + if (Constants.COMMON_PUBLISH_STATUS.published.name().equals(filmWork.getStatus())) { + filmWork.setStatus(Constants.COMMON_PUBLISH_STATUS.unpublished.name()); + } else { + filmWork.setStatus(Constants.COMMON_PUBLISH_STATUS.published.name()); + filmWork.setPublishDate(LocalDate.now()); + } + filmWorksMapper.updateById(filmWork); + } + + @Override + public void batchDelete(BatchDTO dto) { + filmWorksMapper.deleteBatchIds(dto.getIds()); + } + + @Override + public void batchPublish(BatchDTO dto) { + List<FilmWorks> list = filmWorksMapper.selectList(new LambdaQueryWrapper<FilmWorks>().in(FilmWorks::getId, dto.getIds())); + for (FilmWorks filmWork : list) { + filmWork.setStatus(Constants.COMMON_PUBLISH_STATUS.published.name()); + filmWork.setPublishDate(LocalDate.now()); + filmWorksMapper.updateById(filmWork); + } + } + + @Override + public FilmWorksVO detail(Long id) { + FilmWorks filmWork = filmWorksMapper.selectById(id); + if(filmWork==null){ + return null; + } + FilmWorksVO filmWorksVO = new FilmWorksVO(); + BeanUtils.copyProperties(filmWork,filmWorksVO); + return filmWorksVO; + } } diff --git a/src/main/java/com/mzl/flower/web/film/FilmWorksController.java b/src/main/java/com/mzl/flower/web/film/FilmWorksController.java index 7eeb3a3..dd1b7b4 100644 --- a/src/main/java/com/mzl/flower/web/film/FilmWorksController.java +++ b/src/main/java/com/mzl/flower/web/film/FilmWorksController.java @@ -4,14 +4,17 @@ import com.mzl.flower.base.BaseController; import com.mzl.flower.base.R; import com.mzl.flower.base.ReturnDataDTO; +import com.mzl.flower.dto.BatchDTO; import com.mzl.flower.dto.request.filmwork.FilmWorksDTO; import com.mzl.flower.dto.request.filmwork.FilmWorksQueryDTO; +import com.mzl.flower.dto.response.content.BannerDTO; import com.mzl.flower.dto.response.filmwork.FilmWorksVO; import com.mzl.flower.service.film.FilmWorksService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotNull; @@ -66,5 +69,33 @@ return returnData(R.SUCCESS.getCode(), null); } + @GetMapping("/filmWorks/changeStatus") + @ApiOperation(value = "修改状态", notes = "修改状态") + public ResponseEntity<ReturnDataDTO> changeStatus(@NotNull(message = "id不能为空") Long id) { + filmWorksService.changeStatus(id); + return returnData(R.SUCCESS.getCode(), null); + } + + + @PostMapping("/filmWorks/delete/batch") + @ApiOperation(value = "批量删除", notes = "批量删除") + public ResponseEntity<ReturnDataDTO> batchDelete(@Validated @RequestBody BatchDTO dto) { + filmWorksService.batchDelete(dto); + return returnData(R.SUCCESS.getCode(),null); + } + + @PostMapping("/filmWorks/publish/batch") + @ApiOperation(value = "批量发布", notes = "批量发布") + public ResponseEntity<ReturnDataDTO> batchPublish(@Validated @RequestBody BatchDTO dto) { + filmWorksService.batchPublish(dto); + return returnData(R.SUCCESS.getCode(), null); + } + + @GetMapping("/filmWorks/list/view") + @ApiOperation(value = "详情", notes = "详情") + public ResponseEntity<ReturnDataDTO<FilmWorksVO>> detail(@NotNull(message = "id不能为空") Long id) { + return returnData(R.SUCCESS.getCode(),filmWorksService.detail(id)); + } + } diff --git a/src/main/resources/mapper/film/FilmWorksMapper.xml b/src/main/resources/mapper/film/FilmWorksMapper.xml index c9a6ab9..38fe88d 100644 --- a/src/main/resources/mapper/film/FilmWorksMapper.xml +++ b/src/main/resources/mapper/film/FilmWorksMapper.xml @@ -2,32 +2,27 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.mzl.flower.mapper.filmwork.FilmWorksMapper"> - <!-- 通用查询映射结果 --> - <resultMap id="BaseResultMap" type="com.mzl.flower.entity.film.FilmWorks"> - <id column="id" property="id" /> - <result column="create_time" property="createTime" /> - <result column="update_time" property="updateTime" /> - <result column="name_cn" property="nameCn" /> - <result column="name_en" property="nameEn" /> - <result column="type" property="type" /> - <result column="release_year" property="releaseYear" /> - <result column="director" property="director" /> - <result column="producer" property="producer" /> - <result column="actors" property="actors" /> - <result column="keywords" property="keywords" /> - <result column="synopsis" property="synopsis" /> - <result column="cover_url" property="coverUrl" /> - <result column="cover_alt" property="coverAlt" /> - <result column="user_type" property="userType" /> - <result column="sticky_weight" property="stickyWeight" /> - <result column="status" property="status" /> - <result column="deleted" property="deleted" /> - <result column="create_by" property="createBy" /> - <result column="update_by" property="updateBy" /> - <result column="collect_count" property="collectCount" /> - <result column="like_count" property="likeCount" /> - <result column="comment_count" property="commentCount" /> - <result column="share_count" property="shareCount" /> - </resultMap> - + <select id="queryPage" resultType="com.mzl.flower.dto.response.filmwork.FilmWorksVO"> + select t.* from film_works t where t.deleted= 0 + <if test="dto.nameCn != null and dto.nameCn != ''"> + and t.name_cn like concat('%', #{dto.nameCn}, '%') + </if> + <if test="dto.status != null and dto.status != ''"> + and t.status = #{dto.status} + </if> + <if test="dto.type != null and dto.type != ''"> + and t.type = #{dto.type} + </if> + <if test="dto.createDateBegin!=null "> + <![CDATA[ + AND t.create_time >= #{dto.createDateBegin} + ]]> + </if> + <if test="dto.createDateEnd!=null "> + <![CDATA[ + AND t.create_time <= #{dto.createDateEnd} + ]]> + </if> + order by t.update_time desc + </select> </mapper> -- Gitblit v1.9.3