src/main/java/com/mzl/flower/config/ResourceServerConfig.java
@@ -55,6 +55,8 @@ .antMatchers("/api/customer/flower/list/view").permitAll() .antMatchers("/api/customer/flower/up/stock").permitAll() .antMatchers("/api/filmset/**").permitAll() .antMatchers("/api/filmWorks/**").permitAll() .antMatchers("/api/filmLocation/**").permitAll() .antMatchers("api/pub/customer/home/**").permitAll() .antMatchers("/api/customer/point/goods/**").permitAll() .antMatchers("/api/upload/oss/file").permitAll() src/main/java/com/mzl/flower/dto/request/filmwork/FilmLocationDTO.java
对比新文件 @@ -0,0 +1,106 @@ package com.mzl.flower.dto.request.filmwork; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDate; @Data public class FilmLocationDTO { /** * 关联的影视作品ID */ private Integer filmId; /** * 拍摄地点名称 */ private String locationName; /** * 详细地址 */ private String address; /** * 纬度坐标(精确到小数点后6位) */ private BigDecimal gpsLat; /** * 经度坐标(精确到小数点后6位) */ private BigDecimal gpsLng; /** * 拍摄开始日期 */ private LocalDate startDate; /** * 拍摄结束日期 */ private LocalDate endDate; /** * 场景类型 */ private String sceneType; /** * 经典画面描述 */ private String classicScene; /** * 是否开放参观(0否,1是) */ private Boolean isOpenVisit; /** * 参观提示(JSON格式存储) */ private String visitInfo; /** * 地标性建筑描述 */ private String landmarkDesc; /** * 交通指引说明 */ private String transportGuide; /** * 停车场信息 */ private String parkingInfo; /** * 周边设施描述 */ private String surroundingFacilities; /** * AR实景对比功能入口URL */ private String arEntry; /** * 状态(0禁用,1启用) */ private Integer status; /** * 打卡记录量 */ private Integer checkinCount; /** * 游客实拍图(存储JSON数组) */ private String visitorPhotos; } src/main/java/com/mzl/flower/dto/request/filmwork/FilmLocationQueryDTO.java
对比新文件 @@ -0,0 +1,10 @@ package com.mzl.flower.dto.request.filmwork; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class FilmLocationQueryDTO { @ApiModelProperty(value = "会员等级名称") private String name; } src/main/java/com/mzl/flower/dto/request/filmwork/FilmWorksDTO.java
对比新文件 @@ -0,0 +1,116 @@ package com.mzl.flower.dto.request.filmwork; import lombok.Data; import java.time.LocalDateTime; @Data public class FilmWorksDTO { /** * 中文名称 */ private String nameCn; /** * 英文名称 */ private String nameEn; /** * 作品类型 */ private String type; /** * 上映年份 */ private String releaseYear; /** * 导演(多个用逗号分隔) */ private String director; /** * 制片方 */ private String producer; /** * 主要演员(多个用逗号分隔) */ private String actors; /** * 剧情关键词(用逗号分隔) */ private String keywords; /** * 剧情简介 */ private String synopsis; /** * 封面图片URL */ private String coverUrl; /** * 封面图片描述文本 */ private String coverAlt; /** * 创建者用户类型 */ private String userType; /** * 置顶权重(越大越靠前) */ private Integer stickyWeight; /** * 状态(0禁用,1启用) */ private Integer status; /** * 逻辑删除(0正常,1删除) */ private Boolean isDeleted; /** * 创建者ID */ private String createBy; /** * 最后修改者ID */ private String updateBy; /** * 收藏量 */ private Integer collectCount; /** * 点赞量 */ private Integer likeCount; /** * 评论量 */ private Integer commentCount; /** * 分享量 */ private Integer shareCount; } src/main/java/com/mzl/flower/dto/request/filmwork/FilmWorksQueryDTO.java
对比新文件 @@ -0,0 +1,30 @@ package com.mzl.flower.dto.request.filmwork; 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("创建日期(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/response/filmwork/FilmLocationVO.java
对比新文件 @@ -0,0 +1,65 @@ package com.mzl.flower.dto.response.filmwork; 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 FilmLocationVO extends AbstractTransDTO { private Long id; @ApiModelProperty("会员等级名称") private String name; @ApiModelProperty("成长点-区间-开始") private int startPoint; @ApiModelProperty("成长点-区间-结束") private int endPoint; @ApiModelProperty("会员折扣类型(百分比、固定金额)") @DictTrans(target = "discountTypeStr", codeType = "DISCOUNT_TYPE") private String discountType; private String discountTypeStr; @ApiModelProperty("会员折扣百分比") private BigDecimal discountRatio; @ApiModelProperty("会员折扣固定金额") private BigDecimal discountAmount; @ApiModelProperty("消费金额(元)") private int consumptionAmount; @ApiModelProperty("已消费产生的成长值") private int growthValue; @ApiModelProperty("未消费产生的下降值") private int downgradeValue; @ApiModelProperty("创建日期") private LocalDateTime createTime; @ApiModelProperty("修改日期") private LocalDateTime updateTime; @ApiModelProperty("操作人") private String createName; @ApiModelProperty("背景") private String background; @ApiModelProperty("图片") private String pictures; @ApiModelProperty(value = "会员成长值获取规则") private String growthValueDesc; @ApiModelProperty("更新人") private String updateBy; } src/main/java/com/mzl/flower/dto/response/filmwork/FilmWorksVO.java
对比新文件 @@ -0,0 +1,121 @@ package com.mzl.flower.dto.response.filmwork; import com.mzl.flower.base.AbstractTransDTO; import com.mzl.flower.base.annotation.DictTrans; import lombok.Data; @Data public class FilmWorksVO extends AbstractTransDTO { private Long id; /** * 中文名称 */ private String nameCn; /** * 英文名称 */ private String nameEn; /** * 作品类型 */ @DictTrans(target = "typeStr", codeType = "FILMSET_TYPE") private String type; private String typeStr; /** * 上映年份 */ private String releaseYear; /** * 导演(多个用逗号分隔) */ private String director; /** * 制片方 */ private String producer; /** * 主要演员(多个用逗号分隔) */ private String actors; /** * 剧情关键词(用逗号分隔) */ private String keywords; /** * 剧情简介 */ private String synopsis; /** * 封面图片URL */ private String coverUrl; /** * 封面图片描述文本 */ private String coverAlt; /** * 创建者用户类型 */ @DictTrans(target = "userTypeStr", codeType = "FILMSET_CREATE_TYPE") private String userType; private String userTypeStr; /** * 置顶权重(越大越靠前) */ private Integer stickyWeight; /** * 状态 */ @DictTrans(target = "statusStr", codeType = "COMMON_PUBLISH_STATUS") private String status; private String statusStr; /** * 创建者ID */ private String createBy; /** * 最后修改者ID */ private String updateBy; /** * 收藏量 */ private Integer collectCount; /** * 点赞量 */ private Integer likeCount; /** * 评论量 */ private Integer commentCount; /** * 分享量 */ private Integer shareCount; } src/main/java/com/mzl/flower/entity/film/FilmLocation.java
对比新文件 @@ -0,0 +1,122 @@ package com.mzl.flower.entity.film; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableName; import java.time.LocalDate; import com.mzl.flower.base.BaseAutoEntity; import com.mzl.flower.base.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** * 影视拍摄场地信息表 * * @author generator@Fang * @since 2025-05-20 */ @Data @EqualsAndHashCode(callSuper = true) @Accessors(chain = true) @TableName("film_location") public class FilmLocation extends BaseAutoEntity { /** * 关联的影视作品ID */ private Integer filmId; /** * 拍摄地点名称 */ private String locationName; /** * 详细地址 */ private String address; /** * 纬度坐标(精确到小数点后6位) */ private BigDecimal gpsLat; /** * 经度坐标(精确到小数点后6位) */ private BigDecimal gpsLng; /** * 拍摄开始日期 */ private LocalDate startDate; /** * 拍摄结束日期 */ private LocalDate endDate; /** * 场景类型 */ private String sceneType; /** * 经典画面描述 */ private String classicScene; /** * 是否开放参观(0否,1是) */ private Boolean isOpenVisit; /** * 参观提示(JSON格式存储) */ private String visitInfo; /** * 地标性建筑描述 */ private String landmarkDesc; /** * 交通指引说明 */ private String transportGuide; /** * 停车场信息 */ private String parkingInfo; /** * 周边设施描述 */ private String surroundingFacilities; /** * AR实景对比功能入口URL */ private String arEntry; /** * 状态(0禁用,1启用) */ private Integer status; /** * 打卡记录量 */ private Integer checkinCount; /** * 游客实拍图(存储JSON数组) */ private String visitorPhotos; } src/main/java/com/mzl/flower/entity/film/FilmWorks.java
对比新文件 @@ -0,0 +1,127 @@ 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; /** * 影视作品信息表 * * @author generator@Fang * @since 2025-05-19 */ @Data @TableName("film_works") public class FilmWorks extends BaseAutoEntity { /** * 中文名称 */ private String nameCn; /** * 英文名称 */ private String nameEn; /** * 作品类型 */ private String type; /** * 上映年份 */ private String releaseYear; /** * 导演(多个用逗号分隔) */ private String director; /** * 制片方 */ private String producer; /** * 主要演员(多个用逗号分隔) */ private String actors; /** * 剧情关键词(用逗号分隔) */ private String keywords; /** * 剧情简介 */ private String synopsis; /** * 封面图片URL */ private String coverUrl; /** * 封面图片描述文本 */ private String coverAlt; /** * 创建者用户类型 */ private String userType; /** * 置顶权重(越大越靠前) */ private Integer stickyWeight; /** * 状态(0禁用,1启用) */ private String status; /** * 创建者ID */ private String createBy; /** * 最后修改者ID */ private String updateBy; /** * 收藏量 */ private Integer collectCount; /** * 点赞量 */ private Integer likeCount; /** * 评论量 */ private Integer commentCount; /** * 分享量 */ private Integer shareCount; @ApiModelProperty("发布日期") private LocalDate publishDate; } src/main/java/com/mzl/flower/mapper/filmwork/FilmLocationMapper.java
对比新文件 @@ -0,0 +1,16 @@ package com.mzl.flower.mapper.filmwork; import com.mzl.flower.entity.film.FilmLocation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * <p> * 影视拍摄场地信息表 Mapper 接口 * </p> * * @author generator@Fang * @since 2025-05-20 */ public interface FilmLocationMapper extends BaseMapper<FilmLocation> { } src/main/java/com/mzl/flower/mapper/filmwork/FilmWorksMapper.java
对比新文件 @@ -0,0 +1,28 @@ 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; /** * <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/service/film/FilmLocationService.java
对比新文件 @@ -0,0 +1,27 @@ 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.entity.film.FilmLocation; import com.baomidou.mybatisplus.extension.service.IService; /** * <p> * 影视拍摄场地信息表 服务类 * </p> * * @author generator@Fang * @since 2025-05-20 */ public interface FilmLocationService extends IService<FilmLocation> { void saveFilmLocation(FilmLocationDTO filmLocationDTO); void updateFilmLocation(FilmLocationDTO filmLocationDTO); void deleteFilmLocation(String id); Page<FilmLocationVO> queryPage(FilmLocationQueryDTO filmLocationQueryDTO, Page page); } src/main/java/com/mzl/flower/service/film/FilmWorksService.java
对比新文件 @@ -0,0 +1,39 @@ 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; import com.mzl.flower.entity.film.FilmWorks; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; /** * <p> * 影视作品信息表 服务类 * </p> * * @author generator@Fang * @since 2025-05-19 */ public interface FilmWorksService extends IService<FilmWorks> { void saveFilmWorks(FilmWorksDTO filmWorksDTO); void updateFilmWorks(FilmWorksDTO filmWorksDTO); void deleteFilmWorks(String id); 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
对比新文件 @@ -0,0 +1,55 @@ 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.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.service.film.FilmLocationService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** * <p> * 影视拍摄场地信息表 服务实现类 * </p> * * @author generator@Fang * @since 2025-05-20 */ @Service @Transactional @RequiredArgsConstructor public class FilmLocationServiceImpl extends ServiceImpl<FilmLocationMapper, FilmLocation> implements FilmLocationService { private final FilmLocationMapper filmLocationMapper; @Override public void saveFilmLocation(FilmLocationDTO filmLocationDTO) { // 转换 FilmLocation filmLocation = new FilmLocation(); BeanUtils.copyProperties(filmLocationDTO, filmLocation); filmLocation.create(); filmLocationMapper.insert(filmLocation); } @Override public void updateFilmLocation(FilmLocationDTO filmLocationDTO) { } @Override public void deleteFilmLocation(String id) { } @Override public Page<FilmLocationVO> queryPage(FilmLocationQueryDTO filmLocationQueryDTO, Page page) { return null; } } src/main/java/com/mzl/flower/service/film/impl/FilmWorksServiceImpl.java
对比新文件 @@ -0,0 +1,126 @@ 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; /** * <p> * 影视作品信息表 服务实现类 * </p> * * @author generator@Fang * @since 2025-05-19 */ @Service @Transactional @RequiredArgsConstructor public class FilmWorksServiceImpl extends ServiceImpl<FilmWorksMapper, FilmWorks> implements FilmWorksService { private final FilmWorksMapper filmWorksMapper; @Override public void saveFilmWorks(FilmWorksDTO filmWorksDTO) { // 转换 FilmWorks filmWorks = new FilmWorks(); BeanUtils.copyProperties(filmWorksDTO, filmWorks); filmWorks.create(); filmWorks.setStatus(Constants.COMMON_PUBLISH_STATUS.unpublished.name()); filmWorksMapper.insert(filmWorks); } @Override public void updateFilmWorks(FilmWorksDTO filmWorksDTO) { } @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 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/FilmLocationController.java
对比新文件 @@ -0,0 +1,62 @@ package com.mzl.flower.web.film; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.service.film.FilmLocationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotNull; /** * 影视拍摄场地信息表前端控制器 * * @author generator@Fang * @since 2025-05-20 */ @Api(value = "影视拍摄场地信息管理", tags = "影视拍摄场地信息管理") @RestController @RequestMapping("/api") @RequiredArgsConstructor public class FilmLocationController extends BaseController { private final FilmLocationService filmLocationService; @GetMapping("/filmLocation/list") @ApiOperation(value = "影视作品列表", httpMethod = "GET") public ResponseEntity<ReturnDataDTO<Page<FilmLocationVO>>> getFilmLocationList(Page page, FilmLocationQueryDTO dto) { return returnData(R.SUCCESS.getCode(), filmLocationService.queryPage(dto, page)); } @GetMapping(value = "/filmLocation/delete") @ApiOperation(value = "删除影视作品 ", httpMethod = "GET", notes = "ID") public ResponseEntity delete(@NotNull(message = "id不能为空") Long id) { filmLocationService.deleteFilmLocation(String.valueOf(id)); return returnData(R.SUCCESS.getCode(), null); } @PostMapping(value = "/filmLocation/new") @ApiOperation(value = "保存影视作品", httpMethod = "POST") public ResponseEntity insert(@RequestBody FilmLocationDTO filmLocationDTO) { filmLocationService.saveFilmLocation(filmLocationDTO); return returnData(R.SUCCESS.getCode(), null); } @PostMapping(value = "/filmLocation/edit") @ApiOperation(value = "更新影视作品", httpMethod = "POST") public ResponseEntity update(@RequestBody FilmLocationDTO filmLocationDTO) { filmLocationService.updateFilmLocation(filmLocationDTO); return returnData(R.SUCCESS.getCode(), null); } } src/main/java/com/mzl/flower/web/film/FilmWorksController.java
对比新文件 @@ -0,0 +1,101 @@ package com.mzl.flower.web.film; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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; import java.util.List; /** * @author fanghaowei * @version version2.0 * @className FilmWorksController * @date 2024/8/26 * @description 影视作品信息 */ @Api(value = "影视作品信息管理", tags = "影视作品信息管理") @RestController @RequestMapping("/api") @RequiredArgsConstructor public class FilmWorksController extends BaseController { private final FilmWorksService filmWorksService; @GetMapping("/filmWorks/all") @ApiOperation(value = "影视作品列表", httpMethod = "GET") public ResponseEntity<ReturnDataDTO<List<FilmWorksVO>>> getFilmWorksAll() { return returnData(R.SUCCESS.getCode(), filmWorksService.getFilmWorksAll()); } @GetMapping("/filmWorks/list") @ApiOperation(value = "影视作品列表", httpMethod = "GET") public ResponseEntity<ReturnDataDTO<Page<FilmWorksVO>>> getFilmWorksList(Page page, FilmWorksQueryDTO dto) { return returnData(R.SUCCESS.getCode(), filmWorksService.queryPage(dto, page)); } @GetMapping(value = "/filmWorks/delete") @ApiOperation(value = "删除影视作品 ", httpMethod = "GET", notes = "ID") public ResponseEntity delete(@NotNull(message = "id不能为空") Long id) { filmWorksService.deleteFilmWorks(String.valueOf(id)); return returnData(R.SUCCESS.getCode(), null); } @PostMapping(value = "/filmWorks/new") @ApiOperation(value = "保存影视作品", httpMethod = "POST") public ResponseEntity insert(@RequestBody FilmWorksDTO filmWorksDTO) { filmWorksService.saveFilmWorks(filmWorksDTO); return returnData(R.SUCCESS.getCode(), null); } @PostMapping(value = "/filmWorks/edit") @ApiOperation(value = "更新影视作品", httpMethod = "POST") public ResponseEntity update(@RequestBody FilmWorksDTO filmWorksDTO) { filmWorksService.updateFilmWorks(filmWorksDTO); 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/FilmLocationMapper.xml
对比新文件 @@ -0,0 +1,34 @@ <?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"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.mzl.flower.entity.film.FilmLocation"> <id column="id" property="id" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> <result column="film_id" property="filmId" /> <result column="location_name" property="locationName" /> <result column="address" property="address" /> <result column="gps_lat" property="gpsLat" /> <result column="gps_lng" property="gpsLng" /> <result column="start_date" property="startDate" /> <result column="end_date" property="endDate" /> <result column="scene_type" property="sceneType" /> <result column="classic_scene" property="classicScene" /> <result column="is_open_visit" property="isOpenVisit" /> <result column="visit_info" property="visitInfo" /> <result column="landmark_desc" property="landmarkDesc" /> <result column="transport_guide" property="transportGuide" /> <result column="parking_info" property="parkingInfo" /> <result column="surrounding_facilities" property="surroundingFacilities" /> <result column="ar_entry" property="arEntry" /> <result column="status" property="status" /> <result column="deleted" property="deleted" /> <result column="create_by" property="createBy" /> <result column="update_by" property="updateBy" /> <result column="checkin_count" property="checkinCount" /> <result column="visitor_photos" property="visitorPhotos" /> </resultMap> </mapper> src/main/resources/mapper/film/FilmWorksMapper.xml
对比新文件 @@ -0,0 +1,28 @@ <?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"> <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>