src/main/java/com/mzl/flower/dto/request/film/FilmCategoryCreateDTO.java
对比新文件 @@ -0,0 +1,31 @@ package com.mzl.flower.dto.request.film; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class FilmCategoryCreateDTO { @ApiModelProperty(value = "分类名称") private String name; @ApiModelProperty(value = "父分类ID") private Long parentId; @ApiModelProperty(value = "分类类型") private String type; @ApiModelProperty(value = "分类编码") private String code; @ApiModelProperty(value = "排序") private Integer sortBy; @ApiModelProperty(value = "分类图标") private String imageUrl; @ApiModelProperty(value = "是否显示") private Boolean shown; @ApiModelProperty(value = "级别限制") private String levelLimit; } src/main/java/com/mzl/flower/dto/request/film/FilmCategoryQueryDTO.java
对比新文件 @@ -0,0 +1,19 @@ package com.mzl.flower.dto.request.film; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class FilmCategoryQueryDTO { @ApiModelProperty(value = "分类名称") private String name; @ApiModelProperty(value = "分类类型") private String type; @ApiModelProperty(value = "父分类ID") private Long parentId; @ApiModelProperty(value = "是否显示") private Boolean shown; } src/main/java/com/mzl/flower/dto/request/film/FilmCategoryUpdateDTO.java
对比新文件 @@ -0,0 +1,10 @@ package com.mzl.flower.dto.request.film; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class FilmCategoryUpdateDTO extends FilmCategoryCreateDTO { @ApiModelProperty(value = "分类ID") private Long id; } src/main/java/com/mzl/flower/dto/request/film/FilmLocationDTO.java
文件名从 src/main/java/com/mzl/flower/dto/request/filmwork/FilmLocationDTO.java 修改 @@ -1,4 +1,4 @@ package com.mzl.flower.dto.request.filmwork; package com.mzl.flower.dto.request.film; import lombok.Data; src/main/java/com/mzl/flower/dto/request/film/FilmLocationQueryDTO.java
文件名从 src/main/java/com/mzl/flower/dto/request/filmwork/FilmLocationQueryDTO.java 修改 @@ -1,4 +1,4 @@ package com.mzl.flower.dto.request.filmwork; package com.mzl.flower.dto.request.film; import io.swagger.annotations.ApiModelProperty; import lombok.Data; src/main/java/com/mzl/flower/dto/request/film/FilmWorksDTO.java
文件名从 src/main/java/com/mzl/flower/dto/request/filmwork/FilmWorksDTO.java 修改 @@ -1,8 +1,6 @@ package com.mzl.flower.dto.request.filmwork; package com.mzl.flower.dto.request.film; import lombok.Data; import java.time.LocalDateTime; @Data public class FilmWorksDTO { src/main/java/com/mzl/flower/dto/request/film/FilmWorksQueryDTO.java
对比新文件 @@ -0,0 +1,32 @@ package com.mzl.flower.dto.request.film; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data public class FilmWorksQueryDTO { @ApiModelProperty(value = "中文名称") private String nameCn; @ApiModelProperty("片场类型(FILMSET_TYPE)") private String type; @ApiModelProperty("发布状态(COMMON_PUBLISH_STATUS)") private String status; @ApiModelProperty("分类1-为你精选,2-光影社区") private int classify; @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; } src/main/java/com/mzl/flower/dto/request/filmwork/FilmWorksQueryDTO.java
文件已删除 src/main/java/com/mzl/flower/dto/response/film/FilmCategoryDTO.java
对比新文件 @@ -0,0 +1,40 @@ package com.mzl.flower.dto.response.film; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class FilmCategoryDTO { @ApiModelProperty(value = "分类ID") private Long id; @ApiModelProperty(value = "分类名称") private String name; @ApiModelProperty(value = "父分类ID") private Long parentId; @ApiModelProperty(value = "父分类名称") private String parentName; @ApiModelProperty(value = "分类类型") private String type; @ApiModelProperty(value = "分类编码") private String code; @ApiModelProperty(value = "排序") private Integer sortBy; @ApiModelProperty(value = "分类图标") private String imageUrl; @ApiModelProperty(value = "是否显示") private Boolean shown; @ApiModelProperty(value = "级别限制") private String levelLimit; @ApiModelProperty(value = "子分类数量") private Integer childrenCount; } src/main/java/com/mzl/flower/dto/response/film/FilmCategoryTreeDTO.java
对比新文件 @@ -0,0 +1,33 @@ package com.mzl.flower.dto.response.film; import com.mzl.flower.base.Node; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class FilmCategoryTreeDTO extends Node { @ApiModelProperty(value = "名称") private String name; @ApiModelProperty(value = "父分类名称") private String parentName; @ApiModelProperty(value = "图标") private String imageUrl; @ApiModelProperty(value = "颜色") private String color; @ApiModelProperty(value = "排序") private Integer sortBy; @ApiModelProperty(value = "是否展示") private Boolean shown; @ApiModelProperty(value = "级别限制") private String levelLimit; @ApiModelProperty(value = "子分类数量") private Integer childrenCount; } src/main/java/com/mzl/flower/dto/response/film/FilmLocationVO.java
文件名从 src/main/java/com/mzl/flower/dto/response/filmwork/FilmLocationVO.java 修改 @@ -1,4 +1,4 @@ package com.mzl.flower.dto.response.filmwork; package com.mzl.flower.dto.response.film; import com.mzl.flower.base.AbstractTransDTO; import com.mzl.flower.base.annotation.DictTrans; src/main/java/com/mzl/flower/dto/response/film/FilmWorksVO.java
文件名从 src/main/java/com/mzl/flower/dto/response/filmwork/FilmWorksVO.java 修改 @@ -1,12 +1,11 @@ package com.mzl.flower.dto.response.filmwork; package com.mzl.flower.dto.response.film; 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 +24,10 @@ /** * 作品类型 */ @DictTrans(target = "typeStr", codeType = "FILMSET_TYPE") private String type; private String typeStr; /** * 上映年份 @@ -67,10 +69,20 @@ */ private String coverAlt; /** * 封面图片描述主题 */ private String coverTitle; /** * 创建者用户类型 */ @DictTrans(target = "userTypeStr", codeType = "FILMSET_CREATE_TYPE") private String userType; private String userTypeStr; /** * 置顶权重(越大越靠前) @@ -78,9 +90,12 @@ private Integer stickyWeight; /** * 状态(0禁用,1启用) * 状态 */ private Integer status; @DictTrans(target = "statusStr", codeType = "COMMON_PUBLISH_STATUS") private String status; private String statusStr; /** * 创建者ID @@ -111,4 +126,17 @@ * 分享量 */ private Integer shareCount; private Integer classify; private String tag; private String nickname; private String avatar; private LocalDateTime createTime; } src/main/java/com/mzl/flower/entity/film/FilmCategory.java
对比新文件 @@ -0,0 +1,38 @@ package com.mzl.flower.entity.film; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.mzl.flower.base.BaseAutoPhyEntity; import lombok.Data; @Data @TableName("t_film_category") public class FilmCategory extends BaseAutoPhyEntity { @TableField("name") private String name; @TableField("parent_id") private Long parentId; @TableField("parent_name") private String parentName; @TableField("type") private String type; @TableField("code") private String code; @TableField("sort_by") private Integer sortBy; @TableField("image_url") private String imageUrl; @TableField("shown") private Boolean shown; @TableField("level_limit") private String levelLimit; } 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,13 @@ */ private Integer shareCount; @ApiModelProperty("发布日期") private LocalDate publishDate; private String coverTitle; private String tag; } src/main/java/com/mzl/flower/mapper/film/FilmCategoryMapper.java
对比新文件 @@ -0,0 +1,24 @@ package com.mzl.flower.mapper.film; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mzl.flower.dto.request.film.FilmCategoryQueryDTO; import com.mzl.flower.dto.response.film.FilmCategoryTreeDTO; import com.mzl.flower.entity.film.FilmCategory; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper public interface FilmCategoryMapper extends BaseMapper<FilmCategory> { /** * 查询分类列表 */ List<FilmCategoryTreeDTO> selectCategoryList(FilmCategoryQueryDTO dto); /** * 查询分类树列表 */ List<FilmCategoryTreeDTO> selectTreeList(FilmCategoryQueryDTO dto); } src/main/java/com/mzl/flower/mapper/film/FilmLocationMapper.java
文件名从 src/main/java/com/mzl/flower/mapper/filmwork/FilmLocationMapper.java 修改 @@ -1,4 +1,4 @@ package com.mzl.flower.mapper.filmwork; package com.mzl.flower.mapper.film; import com.mzl.flower.entity.film.FilmLocation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; src/main/java/com/mzl/flower/mapper/film/FilmWorksMapper.java
对比新文件 @@ -0,0 +1,28 @@ package com.mzl.flower.mapper.film; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.dto.request.film.FilmWorksQueryDTO; import com.mzl.flower.dto.response.film.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; /** * <p> * 影视作品信息表 Mapper 接口 * </p> * * @author generator@Fang * @since 2025-05-19 */ public interface FilmWorksMapper extends BaseMapper<FilmWorks> { @Select("select * from film_works where deleted = '0' and user_type = 'admin'") List<FilmWorksVO> getFilmWorksAll(); List<FilmWorksVO> queryPage(@Param("dto") FilmWorksQueryDTO dto, Page page); } src/main/java/com/mzl/flower/mapper/filmwork/FilmWorksMapper.java
文件已删除 src/main/java/com/mzl/flower/service/film/FilmCategoryService.java
对比新文件 @@ -0,0 +1,129 @@ package com.mzl.flower.service.film; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.mzl.flower.base.Node; import com.mzl.flower.config.exception.ValidationException; import com.mzl.flower.config.security.SecurityUtils; import com.mzl.flower.dto.request.film.FilmCategoryCreateDTO; import com.mzl.flower.dto.request.film.FilmCategoryQueryDTO; import com.mzl.flower.dto.request.film.FilmCategoryUpdateDTO; import com.mzl.flower.dto.response.film.FilmCategoryDTO; import com.mzl.flower.dto.response.film.FilmCategoryTreeDTO; import com.mzl.flower.entity.film.FilmCategory; import com.mzl.flower.mapper.film.FilmCategoryMapper; import com.mzl.flower.service.BaseService; import com.mzl.flower.utils.TreeBuilderUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Slf4j @Service @Transactional public class FilmCategoryService extends BaseService { @Autowired private FilmCategoryMapper categoryMapper; public Long addCategory(FilmCategoryCreateDTO dto) { FilmCategory category = new FilmCategory(); BeanUtils.copyProperties(dto, category); category.setSortBy(dto.getSortBy() == null ? 0 : dto.getSortBy()); category.create(SecurityUtils.getUserId()); if (category.getParentId() != null) { FilmCategory parent = categoryMapper.selectById(category.getParentId()); if (parent == null) { throw new ValidationException("父分类不存在"); } category.setParentName(parent.getName()); } categoryMapper.insert(category); return category.getId(); } public Long updateCategory(FilmCategoryUpdateDTO dto) { Long id = dto.getId(); FilmCategory category = categoryMapper.selectById(id); if (category == null) { throw new ValidationException("分类不存在"); } Boolean shown = category.getShown(); BeanUtils.copyProperties(dto, category); category.setShown(shown); category.setSortBy(dto.getSortBy() == null ? 0 : dto.getSortBy()); category.update(SecurityUtils.getUserId()); category.setParentName(""); if (category.getParentId() != null) { FilmCategory parent = categoryMapper.selectById(category.getParentId()); if (parent == null) { throw new ValidationException("父分类不存在"); } category.setParentName(parent.getName()); } categoryMapper.updateById(category); return id; } public FilmCategoryDTO getCategory(String id) { FilmCategoryDTO dto = new FilmCategoryDTO(); FilmCategory category = categoryMapper.selectById(id); if (category == null) { return null; } BeanUtils.copyProperties(category, dto); return dto; } public List<FilmCategoryTreeDTO> getCategoryList(FilmCategoryQueryDTO dto) { return categoryMapper.selectCategoryList(dto); } public List<FilmCategoryTreeDTO> getCategoryTree(FilmCategoryQueryDTO dto) { List<FilmCategoryTreeDTO> treeList = categoryMapper.selectTreeList(dto); treeList = (List<FilmCategoryTreeDTO>) TreeBuilderUtil.buildListToTree(treeList); if (treeList != null && treeList.size() > 0) { for (FilmCategoryTreeDTO t : treeList) { List<Node> children = t.getChildren(); String levelLimit = t.getLevelLimit(); if (children != null && children.size() > 0) { for (Node c : children) { FilmCategoryTreeDTO child = (FilmCategoryTreeDTO) c; child.setLevelLimit(levelLimit); } } } } return treeList; } public void deleteCategory(Long id) { // 检查是否有子分类 int count = categoryMapper.selectCount(new QueryWrapper<FilmCategory>() .eq("parent_id", id) .eq("deleted", 0)); if (count > 0) { throw new ValidationException("该分类包含子分类,请先删除子分类!"); } categoryMapper.deleteById(id); } public void setCategoryShown(Long id, Boolean shown) { FilmCategory category = categoryMapper.selectById(id); if (category == null) { throw new ValidationException("分类不存在"); } category.setShown(shown); categoryMapper.updateById(category); } } src/main/java/com/mzl/flower/service/film/FilmLocationService.java
@@ -1,9 +1,9 @@ package com.mzl.flower.service.film; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.dto.request.filmwork.FilmLocationDTO; import com.mzl.flower.dto.request.filmwork.FilmLocationQueryDTO; import com.mzl.flower.dto.response.filmwork.FilmLocationVO; import com.mzl.flower.dto.request.film.FilmLocationDTO; import com.mzl.flower.dto.request.film.FilmLocationQueryDTO; import com.mzl.flower.dto.response.film.FilmLocationVO; import com.mzl.flower.entity.film.FilmLocation; import com.baomidou.mybatisplus.extension.service.IService; src/main/java/com/mzl/flower/service/film/FilmWorksService.java
@@ -1,9 +1,10 @@ package com.mzl.flower.service.film; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.dto.request.filmwork.FilmWorksDTO; import com.mzl.flower.dto.request.filmwork.FilmWorksQueryDTO; import com.mzl.flower.dto.response.filmwork.FilmWorksVO; import com.mzl.flower.dto.BatchDTO; import com.mzl.flower.dto.request.film.FilmWorksDTO; import com.mzl.flower.dto.request.film.FilmWorksQueryDTO; import com.mzl.flower.dto.response.film.FilmWorksVO; import com.mzl.flower.entity.film.FilmWorks; import com.baomidou.mybatisplus.extension.service.IService; @@ -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); } src/main/java/com/mzl/flower/service/film/impl/FilmLocationServiceImpl.java
@@ -1,13 +1,11 @@ package com.mzl.flower.service.film.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.dto.request.filmwork.FilmLocationDTO; import com.mzl.flower.dto.request.filmwork.FilmLocationQueryDTO; import com.mzl.flower.dto.response.filmwork.FilmLocationVO; import com.mzl.flower.dto.request.film.FilmLocationDTO; import com.mzl.flower.dto.request.film.FilmLocationQueryDTO; import com.mzl.flower.dto.response.film.FilmLocationVO; import com.mzl.flower.entity.film.FilmLocation; import com.mzl.flower.entity.film.FilmWorks; import com.mzl.flower.mapper.filmwork.FilmLocationMapper; import com.mzl.flower.mapper.filmwork.FilmWorksMapper; import com.mzl.flower.mapper.film.FilmLocationMapper; import com.mzl.flower.service.film.FilmLocationService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; src/main/java/com/mzl/flower/service/film/impl/FilmWorksServiceImpl.java
@@ -1,18 +1,25 @@ 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.dto.request.filmwork.FilmWorksDTO; import com.mzl.flower.dto.request.filmwork.FilmWorksQueryDTO; import com.mzl.flower.dto.response.filmwork.FilmWorksVO; 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.film.FilmWorksDTO; import com.mzl.flower.dto.request.film.FilmWorksQueryDTO; import com.mzl.flower.dto.response.film.FilmWorksVO; import com.mzl.flower.entity.film.FilmWorks; import com.mzl.flower.mapper.filmwork.FilmWorksMapper; import com.mzl.flower.mapper.film.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 +43,7 @@ FilmWorks filmWorks = new FilmWorks(); BeanUtils.copyProperties(filmWorksDTO, filmWorks); filmWorks.create(); filmWorks.setStatus(Constants.COMMON_PUBLISH_STATUS.unpublished.name()); filmWorksMapper.insert(filmWorks); } @@ -46,16 +54,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; } } src/main/java/com/mzl/flower/web/film/FilmCategoryController.java
对比新文件 @@ -0,0 +1,98 @@ package com.mzl.flower.web.film; import com.mzl.flower.base.BaseController; import com.mzl.flower.base.R; import com.mzl.flower.base.ReturnDataDTO; import com.mzl.flower.dto.request.film.FilmCategoryCreateDTO; import com.mzl.flower.dto.request.film.FilmCategoryUpdateDTO; import com.mzl.flower.dto.request.film.FilmCategoryQueryDTO; import com.mzl.flower.dto.response.film.FilmCategoryDTO; import com.mzl.flower.dto.response.film.FilmCategoryTreeDTO; import com.mzl.flower.service.film.FilmCategoryService; 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.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotBlank; import java.util.List; @RestController @RequestMapping("/api/film/category") @Api(value = "片场分类管理", tags = "片场分类管理") @Validated @Slf4j public class FilmCategoryController extends BaseController { @Autowired private FilmCategoryService categoryService; @PostMapping("/tree/new") @ApiOperation(value = "新增片场分类") public ResponseEntity<ReturnDataDTO> addCategory(@RequestBody FilmCategoryCreateDTO dto) { return returnData(R.SUCCESS.getCode(), categoryService.addCategory(dto)); } @PostMapping("/tree/edit") @ApiOperation(value = "编辑片场分类") public ResponseEntity<ReturnDataDTO> updateCategory(@RequestBody FilmCategoryUpdateDTO dto) { Long category = categoryService.updateCategory(dto); return returnData(R.SUCCESS.getCode(), category); } @GetMapping("/tree/view") @ApiOperation(value = "查询片场分类详情") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "片场分类id", required = true, dataType = "String", paramType = "query") }) public ResponseEntity<ReturnDataDTO<FilmCategoryDTO>> getCategory(@NotBlank(message = "id不能为空") String id) { return returnData(R.SUCCESS.getCode(), categoryService.getCategory(id)); } @GetMapping("/tree") @ApiOperation(value = "获取片场分类树") public ResponseEntity<ReturnDataDTO<List<FilmCategoryTreeDTO>>> getCategoryTree(FilmCategoryQueryDTO dto) { return returnData(R.SUCCESS.getCode(), categoryService.getCategoryTree(dto)); } @GetMapping("/list") @ApiOperation(value = "获取片场分类列表") public ResponseEntity<ReturnDataDTO<List<FilmCategoryTreeDTO>>> getCategoryList(FilmCategoryQueryDTO dto) { return returnData(R.SUCCESS.getCode(), categoryService.getCategoryList(dto)); } @GetMapping("/tree/delete") @ApiOperation(value = "删除片场分类") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "片场分类id", required = true, dataType = "Long", paramType = "query") }) public ResponseEntity<ReturnDataDTO<?>> deleteCategory(Long id) { categoryService.deleteCategory(id); return returnData(R.SUCCESS.getCode(), null); } @GetMapping("/tree/shown") @ApiOperation(value = "显示片场分类") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "片场分类id", required = true, dataType = "Long", paramType = "query") }) public ResponseEntity<ReturnDataDTO<?>> showCategory(Long id) { categoryService.setCategoryShown(id, true); return returnData(R.SUCCESS.getCode(), null); } @GetMapping("/tree/hidden") @ApiOperation(value = "隐藏片场分类") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "片场分类id", required = true, dataType = "Long", paramType = "query") }) public ResponseEntity<ReturnDataDTO<?>> hideCategory(Long id) { categoryService.setCategoryShown(id, false); return returnData(R.SUCCESS.getCode(), null); } } src/main/java/com/mzl/flower/web/film/FilmLocationController.java
@@ -5,9 +5,9 @@ import com.mzl.flower.base.BaseController; import com.mzl.flower.base.R; import com.mzl.flower.base.ReturnDataDTO; import com.mzl.flower.dto.request.filmwork.FilmLocationDTO; import com.mzl.flower.dto.request.filmwork.FilmLocationQueryDTO; import com.mzl.flower.dto.response.filmwork.FilmLocationVO; import com.mzl.flower.dto.request.film.FilmLocationDTO; import com.mzl.flower.dto.request.film.FilmLocationQueryDTO; import com.mzl.flower.dto.response.film.FilmLocationVO; import com.mzl.flower.service.film.FilmLocationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; src/main/java/com/mzl/flower/web/film/FilmWorksController.java
@@ -4,14 +4,16 @@ import com.mzl.flower.base.BaseController; import com.mzl.flower.base.R; import com.mzl.flower.base.ReturnDataDTO; import com.mzl.flower.dto.request.filmwork.FilmWorksDTO; import com.mzl.flower.dto.request.filmwork.FilmWorksQueryDTO; import com.mzl.flower.dto.response.filmwork.FilmWorksVO; import com.mzl.flower.dto.BatchDTO; import com.mzl.flower.dto.request.film.FilmWorksDTO; import com.mzl.flower.dto.request.film.FilmWorksQueryDTO; import com.mzl.flower.dto.response.film.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 +68,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)); } } src/main/resources/mapper/film/FilmCategoryMapper.xml
对比新文件 @@ -0,0 +1,70 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.mzl.flower.mapper.film.FilmCategoryMapper"> <resultMap id="BaseResultMap" type="com.mzl.flower.entity.film.FilmCategory"> <id column="id" property="id"/> <result column="name" property="name"/> <result column="parent_id" property="parentId"/> <result column="parent_name" property="parentName"/> <result column="image_url" property="imageUrl"/> <result column="sort_by" property="sortBy"/> <result column="shown" property="shown"/> <result column="level_limit" property="levelLimit"/> <result column="create_by" property="createdBy"/> <result column="create_time" property="createdTime"/> <result column="update_by" property="updatedBy"/> <result column="update_time" property="updatedTime"/> <result column="deleted" property="deleted"/> </resultMap> <sql id="Base_Column_List"> c.id, c.name, c.parent_id, c.parent_name, c.image_url, c.sort_by, c.shown, c.level_limit, c.create_by, c.create_time, c.update_by, c.update_time, c.deleted </sql> <select id="selectCategoryList" resultType="com.mzl.flower.dto.response.film.FilmCategoryTreeDTO"> SELECT <include refid="Base_Column_List"/>, (SELECT COUNT(1) FROM t_film_category f WHERE f.parent_id = c.id AND f.deleted = 0) childrenCount FROM t_film_category c WHERE c.deleted = 0 <if test="name != null and name != ''"> AND ( c.name LIKE CONCAT('%', #{name}, '%') OR EXISTS ( SELECT 1 FROM t_film_category sc WHERE sc.parent_id = c.id AND sc.name LIKE CONCAT('%', #{name}, '%') AND sc.deleted = 0 ) ) </if> <if test="parentId != null"> AND c.parent_id = #{parentId} </if> <if test="shown != null"> AND c.shown = #{shown} </if> ORDER BY c.sort_by ASC, c.create_time DESC </select> <select id="selectTreeList" resultType="com.mzl.flower.dto.response.film.FilmCategoryTreeDTO"> SELECT <include refid="Base_Column_List"/>, (SELECT COUNT(1) FROM t_film_category f WHERE f.parent_id = c.id AND f.deleted = 0) childrenCount FROM t_film_category c WHERE c.deleted = 0 <if test="name != null and name != ''"> AND c.name LIKE CONCAT('%', #{name}, '%') </if> <if test="parentId != null"> AND c.parent_id = #{parentId} </if> <if test="shown != null"> AND c.shown = #{shown} </if> ORDER BY c.sort_by ASC, c.create_time DESC </select> </mapper> src/main/resources/mapper/film/FilmLocationMapper.xml
@@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!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.FilmLocationMapper"> <mapper namespace="com.mzl.flower.mapper.film.FilmLocationMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.mzl.flower.entity.film.FilmLocation"> src/main/resources/mapper/film/FilmWorksMapper.xml
@@ -1,33 +1,44 @@ <?xml version="1.0" encoding="UTF-8"?> <!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"> <mapper namespace="com.mzl.flower.mapper.film.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.film.FilmWorksVO"> SELECT t.*, c.name AS nickname, c.cover AS avatar FROM film_works t LEFT JOIN t_customer_info c ON t.create_by = c.user_id 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.classify != null and dto.classify != ''"> AND t.classify = #{dto.classify} </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>