src/main/java/com/mzl/flower/constant/Constants.java
@@ -79,6 +79,8 @@ approved("审核通过"), rejected("审核驳回"), create_cancel("取消生成"), create_afresh("重新生成"), ; COMMON_PUBLISH_STATUS(String desc) { @@ -779,6 +781,21 @@ } public enum IS_VISITOR { yes("是"), no("否"); IS_VISITOR(String desc) { this.desc = desc; } private String desc; public String getDesc() { return desc; } } } src/main/java/com/mzl/flower/dto/request/film/FilmLocationDTO.java
@@ -7,15 +7,22 @@ @Data public class FilmLocationDTO { private Long id; /** * 关联的影视作品ID */ private Integer filmId; private Long filmId; /** * 拍摄地点名称 */ private String locationName; /** * 拍摄地点图片 */ private String locationUrl; /** * 详细地址 @@ -55,7 +62,7 @@ /** * 是否开放参观(0否,1是) */ private Boolean isOpenVisit; private String isOpenVisit; /** * 参观提示(JSON格式存储) @@ -103,4 +110,27 @@ */ private String visitorPhotos; /** * 省 */ private String province; /** * 市 */ private String city; /** * 区 */ private String region; /** * 景点热度 */ private Double locationWeight; private Integer operationWeight; } src/main/java/com/mzl/flower/dto/request/film/FilmLocationQueryDTO.java
@@ -5,6 +5,19 @@ @Data public class FilmLocationQueryDTO { @ApiModelProperty(value = "会员等级名称") private String name; @ApiModelProperty(value = "拍摄地点名称") private String locationName; @ApiModelProperty(value = "所在省") private String province; @ApiModelProperty(value = "所在市") private String city; @ApiModelProperty(value = "所在区") private String region; @ApiModelProperty("启用/禁用(USER_ENABLED_OR_DISABLED)") private Integer isEnabled; } src/main/java/com/mzl/flower/dto/response/film/FilmLocationVO.java
@@ -6,60 +6,141 @@ import lombok.Data; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; @Data public class FilmLocationVO extends AbstractTransDTO { private Long id; /** * 关联的影视作品ID */ private Integer filmId; @ApiModelProperty("会员等级名称") private String name; /** * 拍摄地点名称 */ private String locationName; @ApiModelProperty("成长点-区间-开始") private int startPoint; /** * 拍摄地点图片 */ private String locationUrl; @ApiModelProperty("成长点-区间-结束") private int endPoint; /** * 详细地址 */ private String address; @ApiModelProperty("会员折扣类型(百分比、固定金额)") @DictTrans(target = "discountTypeStr", codeType = "DISCOUNT_TYPE") private String discountType; /** * 纬度坐标(精确到小数点后6位) */ private BigDecimal gpsLat; private String discountTypeStr; /** * 经度坐标(精确到小数点后6位) */ private BigDecimal gpsLng; @ApiModelProperty("会员折扣百分比") private BigDecimal discountRatio; /** * 拍摄开始日期 */ private LocalDate startDate; @ApiModelProperty("会员折扣固定金额") private BigDecimal discountAmount; /** * 拍摄结束日期 */ private LocalDate endDate; @ApiModelProperty("消费金额(元)") private int consumptionAmount; /** * 场景类型 */ private String sceneType; @ApiModelProperty("已消费产生的成长值") private int growthValue; /** * 经典画面描述 */ private String classicScene; @ApiModelProperty("未消费产生的下降值") private int downgradeValue; /** * 是否开放参观(0否,1是) */ @DictTrans(target = "isOpenVisitStr", codeType = "IS_VISITOR") private String isOpenVisit; @ApiModelProperty("创建日期") private LocalDateTime createTime; private String isOpenVisitStr; @ApiModelProperty("修改日期") private LocalDateTime updateTime; /** * 参观提示(JSON格式存储) */ private String visitInfo; @ApiModelProperty("操作人") private String createName; /** * 地标性建筑描述 */ private String landmarkDesc; @ApiModelProperty("背景") private String background; /** * 交通指引说明 */ private String transportGuide; @ApiModelProperty("图片") private String pictures; /** * 停车场信息 */ private String parkingInfo; @ApiModelProperty(value = "会员成长值获取规则") private String growthValueDesc; /** * 周边设施描述 */ private String surroundingFacilities; @ApiModelProperty("更新人") private String updateBy; /** * AR实景对比功能入口URL */ private String arEntry; /** * 状态(0禁用,1启用) */ private Boolean isEnabled; /** * 打卡记录量 */ private Integer checkinCount; /** * 游客实拍图(存储JSON数组) */ private String visitorPhotos; /** * 省 */ private String province; /** * 市 */ private String city; /** * 区 */ private String region; /** * 景点热度 */ private Double locationWeight; /** * 运营权重 */ private Integer operationWeight; } src/main/java/com/mzl/flower/entity/film/FilmLocation.java
@@ -6,6 +6,7 @@ import com.mzl.flower.base.BaseAutoEntity; import com.mzl.flower.base.BaseEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -26,12 +27,17 @@ /** * 关联的影视作品ID */ private Integer filmId; private Long filmId; /** * 拍摄地点名称 */ private String locationName; /** * 拍摄地点图片 */ private String locationUrl; /** * 详细地址 @@ -71,7 +77,7 @@ /** * 是否开放参观(0否,1是) */ private Boolean isOpenVisit; private String isOpenVisit; /** * 参观提示(JSON格式存储) @@ -106,7 +112,7 @@ /** * 状态(0禁用,1启用) */ private Integer status; private Boolean isEnabled; /** * 打卡记录量 @@ -118,5 +124,29 @@ */ private String visitorPhotos; /** * 省 */ private String province; /** * 市 */ private String city; /** * 区 */ private String region; /** * 景点热度 */ private Double locationWeight; /** * 运营权重 */ private Integer operationWeight; } src/main/java/com/mzl/flower/entity/film/FilmLocationWork.java
对比新文件 @@ -0,0 +1,37 @@ package com.mzl.flower.entity.film; import com.baomidou.mybatisplus.annotation.TableName; import com.mzl.flower.base.BaseAutoEntity; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.math.BigDecimal; import java.time.LocalDate; /** * 影视拍摄场地信息表 * * @author generator@Fang * @since 2025-05-20 */ @Data @EqualsAndHashCode(callSuper = true) @Accessors(chain = true) @TableName("film_location_work") public class FilmLocationWork extends BaseAutoEntity { /** * 关联的景点ID */ private Long locationId; /** * 关联的影视作品ID */ private Long filmId; } src/main/java/com/mzl/flower/mapper/film/FilmLocationMapper.java
@@ -1,7 +1,14 @@ package com.mzl.flower.mapper.film; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; /** * <p> @@ -13,4 +20,12 @@ */ public interface FilmLocationMapper extends BaseMapper<FilmLocation> { List<FilmLocationVO> queryPage(@Param("dto") FilmLocationQueryDTO dto, Page page); @Select("select * from film_location where id = #{id} ") FilmLocationVO selectByIdInfo(Long id); @Select("select * from film_location where location_name = #{locationName} and deleted = '0' limit 1") FilmLocation selectByLocationName(@Param("locationName") String locationName ); } src/main/java/com/mzl/flower/mapper/film/FilmLocationWorkMapper.java
对比新文件 @@ -0,0 +1,18 @@ package com.mzl.flower.mapper.film; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mzl.flower.entity.film.FilmLocationWork; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.util.List; public interface FilmLocationWorkMapper extends BaseMapper<FilmLocationWork> { @Select("select * from film_location_work where location_id = #{locationId} and deleted = '0' ") List<FilmLocationWork> getByLocaltionId(@Param("locationId") String locationId); List<FilmLocationWork> selectByLocationId(Long id); } src/main/java/com/mzl/flower/service/film/FilmLocationService.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.film.FilmLocationDTO; import com.mzl.flower.dto.request.film.FilmLocationQueryDTO; import com.mzl.flower.dto.response.film.FilmLocationVO; @@ -24,4 +25,12 @@ void deleteFilmLocation(String id); Page<FilmLocationVO> queryPage(FilmLocationQueryDTO filmLocationQueryDTO, Page page); FilmLocationVO detail(Long id); void changeDownState(Long id); void isEnable(Long id); void batchMerge(BatchDTO dto); } src/main/java/com/mzl/flower/service/film/FilmLocationWorkService.java
对比新文件 @@ -0,0 +1,10 @@ package com.mzl.flower.service.film; import com.baomidou.mybatisplus.extension.service.IService; import com.mzl.flower.entity.film.FilmLocationWork; public interface FilmLocationWorkService extends IService<FilmLocationWork> { } src/main/java/com/mzl/flower/service/film/FilmWorksService.java
@@ -32,6 +32,7 @@ List<FilmWorksVO> pendingCreate(); void changeStatus(Long id); void changeCreateStatus(Long id); void changeTopState(Long id); src/main/java/com/mzl/flower/service/film/impl/FilmLocationServiceImpl.java
@@ -1,17 +1,37 @@ 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.config.security.SecurityUtils; import com.mzl.flower.dto.BatchDTO; 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.FilmLocationWork; import com.mzl.flower.entity.film.FilmWorks; import com.mzl.flower.entity.system.Role; import com.mzl.flower.mapper.film.FilmLocationMapper; import com.mzl.flower.mapper.film.FilmLocationWorkMapper; import com.mzl.flower.service.film.FilmLocationService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mzl.flower.service.film.FilmLocationWorkService; import com.mzl.flower.service.system.RoleService; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.function.Function; import java.util.stream.Collectors; /** * <p> @@ -27,9 +47,24 @@ public class FilmLocationServiceImpl extends ServiceImpl<FilmLocationMapper, FilmLocation> implements FilmLocationService { private final FilmLocationMapper filmLocationMapper; private final RoleService roleService; private final FilmLocationWorkMapper filmLocationWorkMapper; private final FilmLocationWorkService filmLocationWorkService; @Override public void saveFilmLocation(FilmLocationDTO filmLocationDTO) { // 转换 //增加保存时判断是否有景点名称 if (StringUtils.isEmpty(filmLocationDTO.getLocationName())) { throw new ValidationException("景点名称不能为空"); } FilmLocation filmLocation1 = filmLocationMapper.selectByLocationName(filmLocationDTO.getLocationName()); if (!ObjectUtils.isEmpty(filmLocation1)) { throw new ValidationException("景点名称重复"); } FilmLocation filmLocation = new FilmLocation(); BeanUtils.copyProperties(filmLocationDTO, filmLocation); filmLocation.create(); @@ -38,16 +73,150 @@ @Override public void updateFilmLocation(FilmLocationDTO filmLocationDTO) { if (StringUtils.isEmpty(filmLocationDTO.getLocationName())) { throw new ValidationException("景点名称不能为空"); } //增加修改时保存得景点名称是否有重复,排除当前这条 FilmLocation filmLocation1 = filmLocationMapper.selectByLocationName(filmLocationDTO.getLocationName()); FilmLocation filmLocation = filmLocationMapper.selectById(filmLocationDTO.getId()); if (!filmLocation1.getId().equals(filmLocation.getId())) { throw new ValidationException("景点名称重复"); } BeanUtils.copyProperties(filmLocationDTO, filmLocation); filmLocation.update(SecurityUtils.getUserId()); filmLocationMapper.updateById(filmLocation); } @Override public void deleteFilmLocation(String id) { FilmLocation filmLocation = filmLocationMapper.selectById(id); if (filmLocation == null) { throw new ValidationException("找不到id为" + id + "的景点"); } //判断景点id是否有对应得影视作品,如果有则不能删除。如果没有则可以删除 //可能需要增加判断,如果是取消生成应该也可以删除,重新生成需要重新生成新的位置信息(取消生成的话,其实也没有对应的景点信息,这点其实暂时不用考虑) List<FilmLocationWork> filmLocationWorks = filmLocationWorkMapper.getByLocaltionId(id); if(!CollectionUtils.isEmpty(filmLocationWorks)){ throw new ValidationException("景点有对应得影视作品,无法删除"); } filmLocationMapper.deleteById(id); } @Override public Page<FilmLocationVO> queryPage(FilmLocationQueryDTO dto, Page page) { List<FilmLocationVO> list = filmLocationMapper.queryPage(dto, page); page.setRecords(list); return page; } @Override public FilmLocationVO detail(Long id) { FilmLocationVO filmLocationVO = filmLocationMapper.selectByIdInfo(id); if (filmLocationVO == null) { return null; } return filmLocationVO; } @Override public void changeDownState(Long id) { //获取当前人员角色,判断是不是审核角色 List<String> roleIds = new ArrayList<>(); List<Role> roleList = roleService.getUserRoleList(SecurityUtils.getUserId()); for (Role role : roleList) { roleIds.add(role.getId()); } if (!roleIds.contains("77462b362bad4c88a7a5c64cbdd25d91")) { throw new ValidationException("非运营角色不能清除权重"); } FilmLocation filmLocation = filmLocationMapper.selectById(id); if (filmLocation == null) { throw new ValidationException("找不到id为" + id + "的景点"); } filmLocation.setLocationWeight((double) 0); filmLocationMapper.updateById(filmLocation); } @Override public Page<FilmLocationVO> queryPage(FilmLocationQueryDTO filmLocationQueryDTO, Page page) { return null; public void isEnable(Long id) { FilmLocation filmLocation = filmLocationMapper.selectById(id); if (filmLocation == null) { throw new ValidationException("找不到id为" + id + "的景点"); } if (filmLocation.getIsEnabled()) { filmLocation.setIsEnabled(false); } else { filmLocation.setIsEnabled(true); } filmLocation.update(SecurityUtils.getUserId()); filmLocationMapper.updateById(filmLocation); } @Override @Transactional public void batchMerge(BatchDTO dto) { //获取当前人员角色,判断是不是审核角色 // List<String> roleIds = new ArrayList<>(); // List<Role> roleList = roleService.getUserRoleList(SecurityUtils.getUserId()); // for (Role role : roleList) { // roleIds.add(role.getId()); // } // 权限校验:仅允许运营角色操作 List<String> roleIds = roleService.getUserRoleList(SecurityUtils.getUserId()).stream().map(Role::getId).collect(Collectors.toList()); if (!roleIds.contains("77462b362bad4c88a7a5c64cbdd25d91")) { throw new ValidationException("非运营角色不能合并"); } if (dto.getIds() == null || dto.getIds().size() < 2) { throw new ValidationException("至少选中两条数据"); } List<Long> idList = dto.getIds(); List<FilmLocation> sortedList = idList.stream().map(id -> filmLocationMapper.selectById(id)).filter(Objects::nonNull).collect(Collectors.toList()); // 检查有效记录数 if (sortedList.size() < 2) { throw new ValidationException("有效数据不足两条"); } // 获取目标记录(第一条)和待合并记录 FilmLocation target = sortedList.get(0); List<FilmLocation> toMergeList = sortedList.subList(1, sortedList.size()); List<Long> mergeIds = toMergeList.stream().map(FilmLocation::getId).collect(Collectors.toList()); // 更新关联表的外键引用 updateLocationRelations(target.getId(), mergeIds); // 删除待合并记录 filmLocationMapper.deleteBatchIds(mergeIds); } private void updateLocationRelations(Long targetId, List<Long> mergeIds) { // 查询所有待更新的工作记录 LambdaQueryWrapper<FilmLocationWork> query = new LambdaQueryWrapper<>(); query.in(FilmLocationWork::getLocationId, mergeIds); List<FilmLocationWork> records = filmLocationWorkService.list(query); // 准备更新 List<FilmLocationWork> toUpdate = records.stream().map(work -> { FilmLocationWork update = new FilmLocationWork(); update.setId(work.getId()); update.setLocationId(targetId); return update; }).collect(Collectors.toList()); // 批量更新(MP的批量更新方法) if (!toUpdate.isEmpty()) { filmLocationWorkService.updateBatchById(toUpdate); } } } src/main/java/com/mzl/flower/service/film/impl/FilmLocationWorkServiceImpl.java
对比新文件 @@ -0,0 +1,20 @@ package com.mzl.flower.service.film.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mzl.flower.entity.film.FilmLocationWork; import com.mzl.flower.mapper.film.FilmLocationMapper; import com.mzl.flower.mapper.film.FilmLocationWorkMapper; import com.mzl.flower.service.film.FilmLocationWorkService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service @Transactional @RequiredArgsConstructor public class FilmLocationWorkServiceImpl extends ServiceImpl<FilmLocationWorkMapper, FilmLocationWork> implements FilmLocationWorkService { private final FilmLocationMapper filmLocationMapper; } src/main/java/com/mzl/flower/service/film/impl/FilmWorksServiceImpl.java
@@ -27,6 +27,9 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; @@ -135,6 +138,18 @@ dto.setUserId(null); } List<FilmWorksVO> list = filmWorksMapper.queryPage(dto,page); // 测试前端展示用代码,部署发布不适用 // list.forEach(l->{ // if (l.getCoverUrl().contains("doubanio")) { // String encodedUrl = null; // try { // encodedUrl = URLEncoder.encode(l.getCoverUrl(), String.valueOf(StandardCharsets.UTF_8)); // } catch (UnsupportedEncodingException e) { // throw new RuntimeException(e); // } // l.setCoverUrl("https://images.weserv.nl/?url=" + encodedUrl); // } // }); page.setRecords(list); @@ -176,6 +191,37 @@ filmWorksMapper.updateById(filmWork); }else{ throw new ValidationException("非审核通过或者发布状态,不能操作"); } } @Override public void changeCreateStatus(Long id) { //获取当前人员角色,判断是不是审核角色 List<String> roleIds = new ArrayList<>(); List<Role> roleList = roleService.getUserRoleList(SecurityUtils.getUserId()); for (Role role : roleList) { roleIds.add(role.getId()); } if (!roleIds.contains("8f9ef89f6b2d4d8e9ea1fc8d2f25ce69")) { throw new ValidationException("非编辑角色不能操作"); } FilmWorks filmWork = filmWorksMapper.selectById(id); if (filmWork == null) { throw new ValidationException("找不到id为" + id + "的作品"); } if (Constants.COMMON_PUBLISH_STATUS.pending_create.name().equals(filmWork.getStatus()) || Constants.COMMON_PUBLISH_STATUS.create_cancel.name().equals(filmWork.getStatus()) || Constants.COMMON_PUBLISH_STATUS.create_failed.name().equals(filmWork.getStatus())) { if (Constants.COMMON_PUBLISH_STATUS.create_cancel.name().equals(filmWork.getStatus())) { filmWork.setStatus(Constants.COMMON_PUBLISH_STATUS.pending_create.name()); } else if (Constants.COMMON_PUBLISH_STATUS.create_failed.name().equals(filmWork.getStatus())) { filmWork.setStatus(Constants.COMMON_PUBLISH_STATUS.pending_create.name()); } else { filmWork.setStatus(Constants.COMMON_PUBLISH_STATUS.create_cancel.name()); filmWork.setPublishDate(LocalDate.now()); } filmWorksMapper.updateById(filmWork); }else{ throw new ValidationException("当前状态,不能操作"); } } @@ -266,8 +312,11 @@ return null; } CustomerDTO currentCustomer = customerMapper.getCurrentCustomer(filmWorksVO.getCreateBy()); filmWorksVO.setNickname(currentCustomer.getNickName()); filmWorksVO.setAvatar(currentCustomer.getCover()); if(!ObjectUtils.isEmpty(currentCustomer)){ filmWorksVO.setNickname(currentCustomer.getNickName()); filmWorksVO.setAvatar(currentCustomer.getCover()); } return filmWorksVO; } src/main/java/com/mzl/flower/service/partner/PartnerService.java
@@ -15,6 +15,7 @@ import com.mzl.flower.mapper.system.UserMapper; import com.mzl.flower.service.BaseService; import com.mzl.flower.service.UploadService; import com.mzl.flower.service.oss.TosOssService; import com.mzl.flower.service.system.UserService; import com.mzl.flower.utils.DateUtils; import lombok.extern.slf4j.Slf4j; @@ -58,6 +59,9 @@ @Autowired private UserService userService; @Autowired private TosOssService tosOssService; public PartnerService(PartnerMapper partnerMapper, UserMapper userMapper, WxMaService maService, UploadService uploadService) { this.partnerMapper = partnerMapper; @@ -219,7 +223,8 @@ File file = maService.getQrcodeService() .createWxaCodeUnlimit("partnerUserId="+partner.getId(),"pages/login/supplier-login","/opt/wx-code"); InputStream in = new FileInputStream(file); String url = uploadService.upload(in, file.getName()); // String url = uploadService.upload(in, file.getName()); String url = tosOssService.uploadFile( in,file.getName()); partner.setWechatUrl("https://" + url); partner.update(SecurityUtils.getUserId()); src/main/java/com/mzl/flower/web/film/FilmLocationController.java
@@ -5,6 +5,7 @@ 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.film.FilmLocationDTO; import com.mzl.flower.dto.request.film.FilmLocationQueryDTO; import com.mzl.flower.dto.response.film.FilmLocationVO; @@ -13,6 +14,7 @@ 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; @@ -33,30 +35,56 @@ private final FilmLocationService filmLocationService; @GetMapping("/filmLocation/list") @ApiOperation(value = "影视作品列表", httpMethod = "GET") @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") @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") @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") @ApiOperation(value = "更新影视拍摄场地", httpMethod = "POST") public ResponseEntity update(@RequestBody FilmLocationDTO filmLocationDTO) { filmLocationService.updateFilmLocation(filmLocationDTO); return returnData(R.SUCCESS.getCode(), null); } @GetMapping("/filmLocation/list/view") @ApiOperation(value = "详情", notes = "详情") public ResponseEntity<ReturnDataDTO<FilmLocationVO>> detail(@NotNull(message = "id不能为空") Long id) { return returnData(R.SUCCESS.getCode(),filmLocationService.detail(id)); } @GetMapping("/filmLocation/setDown") @ApiOperation(value = "清除权重", notes = "清除权重") public ResponseEntity<ReturnDataDTO> setDown(@NotNull(message = "id不能为空") Long id) { filmLocationService.changeDownState(id); return returnData(R.SUCCESS.getCode(), null); } @GetMapping("/filmLocation/isEnable") @ApiOperation(value = "启用/禁用", notes = "启用/禁用景点") public ResponseEntity<ReturnDataDTO<String>> isEnable(@NotNull(message = "id不能为空") Long id) { filmLocationService.isEnable(id); return returnData(R.SUCCESS.getCode(),null); } @PostMapping("/filmLocation/merge/batch") @ApiOperation(value = "批量发布", notes = "批量发布") public ResponseEntity<ReturnDataDTO> batchMerge(@Validated @RequestBody BatchDTO dto) { filmLocationService.batchMerge(dto); return returnData(R.SUCCESS.getCode(), null); } } src/main/java/com/mzl/flower/web/film/FilmWorksController.java
@@ -81,6 +81,13 @@ return returnData(R.SUCCESS.getCode(), null); } @GetMapping("/filmWorks/changeCreateStatus") @ApiOperation(value = "修改创建状态", notes = "修改创建状态") public ResponseEntity<ReturnDataDTO> changeCreateStatus(@NotNull(message = "id不能为空") Long id) { filmWorksService.changeCreateStatus(id); return returnData(R.SUCCESS.getCode(), null); } @GetMapping("/filmWorks/setTop") @ApiOperation(value = "文章置顶", notes = "文章置顶") public ResponseEntity<ReturnDataDTO> setTop(@NotNull(message = "id不能为空") Long id) { src/main/java/com/mzl/flower/web/upload/FileUploadOssResource.java
@@ -9,6 +9,7 @@ import com.mzl.flower.config.exception.ValidationException; import com.mzl.flower.dto.response.upload.UploadResultDTO; import com.mzl.flower.service.UploadService; import com.mzl.flower.service.oss.TosOssService; import com.mzl.flower.utils.FileUtil; import com.mzl.flower.utils.UUIDGenerator; import io.swagger.annotations.Api; @@ -38,6 +39,9 @@ @Autowired private UploadService uploadService; @Autowired private TosOssService tosOssService; private static List<String> fileType = Arrays.asList("zip", "jpg", "png", "gif", "jpeg", "pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "mp4", "wmv", "rmvb", "mpg", "mpeg", "3gp", "mov", "m4v", "avi", "flv"); @@ -86,8 +90,10 @@ String url = FileUtil.saveFile(path, bytes, fileName, uploadProperties.getFileGroup()); uploadResult.setUrl(uploadProperties.getFileServerPath() + url);*/ String url = uploadService.upload(file.getInputStream(), fileName); uploadResult.setUrl("https://" + url); // String url = uploadService.upload(file.getInputStream(), fileName); String url = tosOssService.uploadFile( file.getInputStream(),fileName); // uploadResult.setUrl("https://" + url); uploadResult.setUrl(url); uploadResult.setType(extName); uploadResult.setSize(file.getSize()); src/main/resources/mapper/film/FilmLocationMapper.xml
@@ -2,33 +2,29 @@ <!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.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> <select id="queryPage" resultType="com.mzl.flower.dto.response.film.FilmLocationVO"> SELECT t.* FROM film_location t WHERE t.deleted = 0 <if test="dto.locationName != null and dto.locationName != ''"> AND t.location_name LIKE concat('%', #{dto.locationName},'%') </if> <if test="dto.province != null and dto.province != ''"> AND t.province LIKE concat('%', #{dto.province},'%') </if> <if test="dto.city != null and dto.city != ''"> AND t.city LIKE concat('%', #{dto.city},'%') </if> <if test="dto.region != null and dto.region != ''"> AND t.region LIKE concat('%', #{dto.region},'%') </if> <if test="dto.isEnabled!=null"> AND t.is_enabled = #{dto.isEnabled} </if> ORDER BY t.location_weight DESC </select> </mapper>