添加模糊查询

This commit is contained in:
温文静WWW 2025-07-16 22:35:44 +08:00
parent 27e1748457
commit e0e23dbe48
23 changed files with 220 additions and 99 deletions

View File

@ -1,18 +1,16 @@
package com.aircraft.modules.article.controller; package com.aircraft.modules.article.controller;
import cn.hutool.core.date.DateTime;
import com.aircraft.modules.article.domain.CpArticle; import com.aircraft.modules.article.domain.CpArticle;
import com.aircraft.modules.article.domain.CpLabel; import com.aircraft.modules.article.domain.CpLabel;
import com.aircraft.modules.article.domain.CpModule;
import com.aircraft.modules.article.domain.CpText; import com.aircraft.modules.article.domain.CpText;
import com.aircraft.modules.article.domain.dto.CpArticleDTO; import com.aircraft.modules.article.domain.dto.CpArticleDTO;
import com.aircraft.modules.article.domain.dto.CpArticleVo; import com.aircraft.modules.article.domain.dto.CpArticleVo;
import com.aircraft.modules.article.domain.dto.CpLabelVo;
import com.aircraft.modules.article.mapper.CpArticleMapper; import com.aircraft.modules.article.mapper.CpArticleMapper;
import com.aircraft.modules.article.mapper.CpLabelMapper; import com.aircraft.modules.article.mapper.CpLabelMapper;
import com.aircraft.modules.article.service.CpArticleService; import com.aircraft.modules.article.service.CpArticleService;
import com.aircraft.modules.article.service.CpTextService; import com.aircraft.modules.article.service.CpTextService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -32,7 +30,6 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.net.URI; import java.net.URI;
import java.sql.Timestamp;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
@ -60,20 +57,18 @@ public class CpArticleController {
@Autowired @Autowired
private CpLabelMapper cpLabelMapper; private CpLabelMapper cpLabelMapper;
@ApiOperation(value = "分页查询文章", notes = "分页查询文章") @ApiOperation(value = "分页查询文章(支持标题模糊查询)", notes = "分页查询文章,仅根据文章标题进行模糊查询")
@RequestMapping(method = RequestMethod.GET) @RequestMapping(method = RequestMethod.GET)
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"), @ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"),
@ApiImplicitParam(name = "current", value = "当前页面从1开始", paramType = "query") @ApiImplicitParam(name = "current", value = "当前页面从1开始", paramType = "query"),
@ApiImplicitParam(name = "titleKeyword", value = "搜索关键词,用于模糊查询文章标题", paramType = "query")
}) })
public ResponseEntity<IPage<CpArticle>> findByPage(final CpArticle example, final Page page) { public ResponseEntity<IPage<CpArticleVo>> findByPage(
try { final Page<CpArticleVo> page,
IPage<CpArticle> records = entityService.page(example, page); @RequestParam(required = false) String titleKeyword) {
IPage<CpArticleVo> records = entityService.findByPage(page, titleKeyword);
return new ResponseEntity<>(records, HttpStatus.OK); return new ResponseEntity<>(records, HttpStatus.OK);
} catch (Exception e) {
LOG.error("分页查询文章时出错", e);
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
} }
@ApiOperation(value = "删除文章") @ApiOperation(value = "删除文章")
@ -105,18 +100,18 @@ public class CpArticleController {
@ApiImplicitParam(name = "id", value = "文章ID", required = true, paramType = "path") @ApiImplicitParam(name = "id", value = "文章ID", required = true, paramType = "path")
public ResponseEntity<?> one(@PathVariable final Integer id) { public ResponseEntity<?> one(@PathVariable final Integer id) {
try { try {
CpArticle entity = cpArticleMapper.getArticleById(id); CpArticleVo entity = entityService.getArticleById(id);
if (entity == null || entity.getDelFlag() == 1) { if (entity == null || entity.getDelFlag() == 1) {
// 返回包含错误信息的JSON响应
Map<String, Object> errorResponse = new HashMap<>(); Map<String, Object> errorResponse = new HashMap<>();
errorResponse.put("code", HttpStatus.NOT_FOUND.value()); errorResponse.put("code", HttpStatus.NOT_FOUND.value());
errorResponse.put("message", "不存在该文章"); errorResponse.put("message", "不存在该文章");
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(errorResponse); return ResponseEntity.status(HttpStatus.NOT_FOUND).body(errorResponse);
} }
cpArticleMapper.updateViewCountById(id);
entity.setViewCount(entity.getViewCount()+1);
return ResponseEntity.ok(entity); return ResponseEntity.ok(entity);
} catch (Exception e) { } catch (Exception e) {
LOG.error("查询单个文章失败", e); LOG.error("查询单个文章失败", e);
// 同样返回包含错误信息的JSON响应
Map<String, Object> errorResponse = new HashMap<>(); Map<String, Object> errorResponse = new HashMap<>();
errorResponse.put("code", HttpStatus.INTERNAL_SERVER_ERROR.value()); errorResponse.put("code", HttpStatus.INTERNAL_SERVER_ERROR.value());
errorResponse.put("message", "查询文章失败,请稍后重试"); errorResponse.put("message", "查询文章失败,请稍后重试");

View File

@ -51,15 +51,27 @@ public class CpMaterialController {
@Autowired @Autowired
private UserMapper userMapper; private UserMapper userMapper;
@ApiOperation(value = "分页查询素材", notes = "分页查询素材") @ApiOperation(value = "分页查询素材(支持模糊查询)", notes = "分页查询素材,仅根据素材名称进行模糊查询")
@RequestMapping(method = RequestMethod.GET) @RequestMapping(method = RequestMethod.GET)
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"), @ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"),
@ApiImplicitParam(name = "current", value = "当前页面从1开始", paramType = "query") @ApiImplicitParam(name = "current", value = "当前页面从1开始", paramType = "query"),
@ApiImplicitParam(name = "keyword", value = "搜索关键词,用于模糊查询素材名称", paramType = "query")
}) })
public ResponseEntity<IPage<CpMaterial>> findByPage(final CpMaterial example, final Page page) { public ResponseEntity<IPage<CpMaterial>> findByPage(
final Page<CpMaterial> page,
@RequestParam(required = false) String keyword) {
try { try {
QueryWrapper<CpMaterial> wrapper = new QueryWrapper<>(example); QueryWrapper<CpMaterial> wrapper = new QueryWrapper<>();
// 仅对素材名称进行模糊查询
if (keyword != null && !keyword.isEmpty()) {
wrapper.like("name", keyword);
}
// 只查询未删除的素材
wrapper.eq("del_flag", 0);
IPage<CpMaterial> records = materialService.page(page, wrapper); IPage<CpMaterial> records = materialService.page(page, wrapper);
return new ResponseEntity<>(records, HttpStatus.OK); return new ResponseEntity<>(records, HttpStatus.OK);
} catch (Exception e) { } catch (Exception e) {

View File

@ -1,5 +1,4 @@
package com.aircraft.modules.article.controller; package com.aircraft.modules.article.controller;
import com.aircraft.modules.article.domain.CpArticle; import com.aircraft.modules.article.domain.CpArticle;
import com.aircraft.modules.article.domain.CpText; import com.aircraft.modules.article.domain.CpText;
import com.aircraft.modules.article.mapper.CpLabelMapper; import com.aircraft.modules.article.mapper.CpLabelMapper;
@ -58,11 +57,9 @@ public class CpTextController {
@ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"), @ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"),
@ApiImplicitParam(name = "current", value = "当前页面从1开始", paramType = "query") @ApiImplicitParam(name = "current", value = "当前页面从1开始", paramType = "query")
}) })
public ResponseEntity<IPage<CpText>> findByPage(final CpText example, final Page page) { public ResponseEntity<IPage<CpText>> findByPage(final Page<CpText> page, @RequestParam(required = false) String keyWord) {
try { try {
QueryWrapper<CpText> wrapper = new QueryWrapper<>(example); IPage<CpText> records = cpTextService.findByPage(page, keyWord);
IPage<CpText> records = cpTextService.page(page, wrapper);
// IPage<CpText> records = cpTextService.page(example, page);
return new ResponseEntity<>(records, HttpStatus.OK); return new ResponseEntity<>(records, HttpStatus.OK);
} catch (Exception e) { } catch (Exception e) {
LOG.error("分页查询文本内容时出错", e); LOG.error("分页查询文本内容时出错", e);
@ -104,7 +101,6 @@ public class CpTextController {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
} }
} }
@ApiOperation(value = "查询单个文本内容") @ApiOperation(value = "查询单个文本内容")
@RequestMapping(value = "{id}", method = {RequestMethod.GET}) @RequestMapping(value = "{id}", method = {RequestMethod.GET})
@ApiImplicitParam(name = "id", value = "文本内容ID", required = true, paramType = "path") @ApiImplicitParam(name = "id", value = "文本内容ID", required = true, paramType = "path")
@ -204,7 +200,7 @@ public class CpTextController {
@ApiOperation(value = "全部文本内容") @ApiOperation(value = "全部文本内容")
@RequestMapping(value = "all", method = RequestMethod.GET) @RequestMapping(value = "all", method = RequestMethod.GET)
public ResponseEntity<List<CpText>> all(CpText example) { public ResponseEntity<List<CpText>> all(CpText example) {
QueryWrapper<CpText> queryWrapper=new QueryWrapper<>(example); QueryWrapper<CpText> queryWrapper = new QueryWrapper<>(example);
List<CpText> entitys = cpTextService.list(queryWrapper); List<CpText> entitys = cpTextService.list(queryWrapper);
if (entitys != null) { if (entitys != null) {
return ResponseEntity.ok(entitys); return ResponseEntity.ok(entitys);

View File

@ -50,6 +50,9 @@ public class CpArticle {
@ApiModelProperty(value = "是否置顶1-置顶0-不置顶") @ApiModelProperty(value = "是否置顶1-置顶0-不置顶")
private Integer top; private Integer top;
@ApiModelProperty(value = "浏览量")
private Long viewCount;
@ApiModelProperty(value = "创建时间") @ApiModelProperty(value = "创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;

View File

@ -30,5 +30,6 @@ public class CpText {
@ApiModelProperty(value = "文章正文") @ApiModelProperty(value = "文章正文")
private String text; private String text;
@ApiModelProperty(value = "逻辑删除1删除0正常")
private Integer del_flag;
} }

View File

@ -11,5 +11,11 @@ public class CpArticleVo extends CpArticle {
@ApiModelProperty("内容") @ApiModelProperty("内容")
private String text; private String text;
@ApiModelProperty("模块id")
private Integer moduleId;
@ApiModelProperty("模块名")
private String moduleName;
@ApiModelProperty("标签名")
private String labelName;
} }

View File

@ -1,7 +1,11 @@
package com.aircraft.modules.article.mapper; package com.aircraft.modules.article.mapper;
import com.aircraft.modules.article.domain.CpArticle; import com.aircraft.modules.article.domain.CpArticle;
import com.aircraft.modules.article.domain.dto.CpArticleVo;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
@ -15,8 +19,12 @@ import org.apache.ibatis.annotations.Select;
*/ */
@Mapper @Mapper
public interface CpArticleMapper extends BaseMapper<CpArticle> { public interface CpArticleMapper extends BaseMapper<CpArticle> {
@Select("SELECT * FROM cp_article WHERE id = #{id} AND del_flag = 0")
CpArticle getArticleById(Integer id);
void updateDelFlagById(Long id, Integer delFlag); void updateDelFlagById(Long id, Integer delFlag);
IPage<CpArticleVo> selectVoPage(Page<CpArticleVo> page, String titleKeyword);
CpArticleVo selectVoById(Integer id);
void updateViewCountById(Integer id);
} }

View File

@ -2,6 +2,8 @@ package com.aircraft.modules.article.mapper;
import com.aircraft.modules.article.domain.CpText; import com.aircraft.modules.article.domain.CpText;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
@ -15,4 +17,5 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface CpTextMapper extends BaseMapper<CpText> { public interface CpTextMapper extends BaseMapper<CpText> {
IPage<CpText> findByPage(Page<CpText> page, String keyWord);
} }

View File

@ -1,6 +1,7 @@
package com.aircraft.modules.article.service; package com.aircraft.modules.article.service;
import com.aircraft.modules.article.domain.CpArticle; import com.aircraft.modules.article.domain.CpArticle;
import com.aircraft.modules.article.domain.dto.CpArticleVo;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
@ -16,8 +17,12 @@ import java.util.List;
* @since 2025-07-10 * @since 2025-07-10
*/ */
public interface CpArticleService extends IService<CpArticle> { public interface CpArticleService extends IService<CpArticle> {
IPage<CpArticle> page(CpArticle example, Page page);
List<CpArticle> list(CpArticle example); List<CpArticle> list(CpArticle example);
void updateDelFlagById(Long id, Integer delFlag); void updateDelFlagById(Long id, Integer delFlag);
IPage<CpArticleVo> findByPage(Page<CpArticleVo> page, String titleKeyword);
CpArticleVo getArticleById(Integer id);
} }

View File

@ -1,6 +1,8 @@
package com.aircraft.modules.article.service; package com.aircraft.modules.article.service;
import com.aircraft.modules.article.domain.CpText; import com.aircraft.modules.article.domain.CpText;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/** /**
@ -13,4 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/ */
public interface CpTextService extends IService<CpText> { public interface CpTextService extends IService<CpText> {
IPage<CpText> findByPage(Page<CpText> page, String keyWord);
} }

View File

@ -1,16 +1,25 @@
package com.aircraft.modules.article.service.impl; package com.aircraft.modules.article.service.impl;
import com.aircraft.modules.article.domain.CpArticle; import com.aircraft.modules.article.domain.CpArticle;
import com.aircraft.modules.article.domain.CpLabel;
import com.aircraft.modules.article.domain.dto.CpArticleVo;
import com.aircraft.modules.article.mapper.CpArticleMapper; import com.aircraft.modules.article.mapper.CpArticleMapper;
import com.aircraft.modules.article.mapper.CpLabelMapper;
import com.aircraft.modules.article.mapper.CpModuleMapper;
import com.aircraft.modules.article.mapper.CpTextMapper;
import com.aircraft.modules.article.service.CpArticleService; import com.aircraft.modules.article.service.CpArticleService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
@ -22,36 +31,20 @@ import java.util.List;
*/ */
@Service @Service
public class CpArticleServiceImpl extends ServiceImpl<CpArticleMapper, CpArticle> implements CpArticleService { public class CpArticleServiceImpl extends ServiceImpl<CpArticleMapper, CpArticle> implements CpArticleService {
@Autowired
private CpArticleMapper cpArticleMapper;
@Override @Override
public IPage<CpArticle> page(CpArticle example, Page page) { public IPage<CpArticleVo> findByPage(Page<CpArticleVo> page, String titleKeyword) {
QueryWrapper<CpArticle> queryWrapper = new QueryWrapper<>(); // 执行分页查询
IPage<CpArticleVo> cpArticleVoIPage = cpArticleMapper.selectVoPage(page, titleKeyword);
// 构建动态查询条件 return cpArticleVoIPage;
if (example != null) {
if (example.getId() != null) {
queryWrapper.eq("id", example.getId());
}
if (!StringUtils.isEmpty(example.getTitle())) {
queryWrapper.like("title", example.getTitle());
}
if (example.getArticleType() != null) {
queryWrapper.eq("article_type", example.getArticleType());
}
if (example.getCplabelId() != null) {
queryWrapper.eq("cplabel_id", example.getCplabelId());
}
if (example.getCheckState() != null) {
queryWrapper.eq("check_state", example.getCheckState());
}
if (example.getDelFlag() != null) {
queryWrapper.eq("del_flag", example.getDelFlag());
}
} }
// 添加默认排序 @Override
queryWrapper.orderByDesc("create_time"); public CpArticleVo getArticleById(Integer id) {
CpArticleVo entity = cpArticleMapper.selectVoById(id);
return baseMapper.selectPage(page, queryWrapper); return entity;
} }
@Override @Override
@ -67,4 +60,5 @@ public class CpArticleServiceImpl extends ServiceImpl<CpArticleMapper, CpArticle
public void updateDelFlagById(Long id, Integer delFlag) { public void updateDelFlagById(Long id, Integer delFlag) {
baseMapper.updateDelFlagById(id, delFlag); baseMapper.updateDelFlagById(id, delFlag);
} }
} }

View File

@ -3,7 +3,10 @@ package com.aircraft.modules.article.service.impl;
import com.aircraft.modules.article.domain.CpText; import com.aircraft.modules.article.domain.CpText;
import com.aircraft.modules.article.mapper.CpTextMapper; import com.aircraft.modules.article.mapper.CpTextMapper;
import com.aircraft.modules.article.service.CpTextService; import com.aircraft.modules.article.service.CpTextService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
@ -16,5 +19,11 @@ import org.springframework.stereotype.Service;
*/ */
@Service @Service
public class CpTextServiceImpl extends ServiceImpl<CpTextMapper, CpText> implements CpTextService { public class CpTextServiceImpl extends ServiceImpl<CpTextMapper, CpText> implements CpTextService {
@Autowired
private CpTextMapper cpTextMapper;
@Override
public IPage<CpText> findByPage(Page<CpText> page, String keyWord) {
return cpTextMapper.findByPage(page, keyWord);
}
} }

View File

@ -69,7 +69,7 @@ public class OrderAnalysisController {
public ResponseEntity<OrderAnalysisResult<List<DailyStat>>> analyzeByDayRange( public ResponseEntity<OrderAnalysisResult<List<DailyStat>>> analyzeByDayRange(
@ApiParam(value = "开始日期yyyy-MM-dd", required = true, example = "2025-01-01") @ApiParam(value = "开始日期yyyy-MM-dd", required = true, example = "2025-01-01")
@RequestParam("startDate") String startDate, @RequestParam("startDate") String startDate,
@ApiParam(value = "结束日期yyyy-MM-dd", required = true, example = "2025-01-31") @ApiParam(value = "结束日期yyyy-MM-dd", required = true, example = "2025-11-01")
@RequestParam("endDate") String endDate) { @RequestParam("endDate") String endDate) {
try { try {
// 解析日期 // 解析日期
@ -96,9 +96,9 @@ public class OrderAnalysisController {
@GetMapping("/month") @GetMapping("/month")
//传入的时间范围某年的某月到某年的某月额外返回时间范围内的每月总订单量 //传入的时间范围某年的某月到某年的某月额外返回时间范围内的每月总订单量
public ResponseEntity<OrderAnalysisResult<List<MonthlyStat>>> analyzeByMonthRange( public ResponseEntity<OrderAnalysisResult<List<MonthlyStat>>> analyzeByMonthRange(
@ApiParam(value = "开始月份yyyy-MM", required = true, example = "2025-01") @ApiParam(value = "开始月份yyyy-MM", required = true, example = "2025-03")
@RequestParam("startDate") String startDate, @RequestParam("startDate") String startDate,
@ApiParam(value = "结束月份yyyy-MM", required = true, example = "2025-03") @ApiParam(value = "结束月份yyyy-MM", required = true, example = "2025-11")
@RequestParam("endDate") String endDate) { @RequestParam("endDate") String endDate) {
try { try {
// 解析月份为当月第一天 // 解析月份为当月第一天

View File

@ -446,8 +446,12 @@ public class OrderAnalysisServiceImpl implements OrderAnalysisService {
.filter(Objects::nonNull) .filter(Objects::nonNull)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
// 批量查询所有景区名称 // 批量查询所有景区名称确保不为空
Map<Long, String> scenicNameMap = emScenicMapper.getScenicNameMap(new ArrayList<>(scenicIds)); // Map<Long, String> scenicNameMap = emScenicMapper.getScenicNameMap(new ArrayList<>(scenicIds));
Map<Long, String> scenicNameMap = Collections.emptyMap();
if (!scenicIds.isEmpty()) {
scenicNameMap = emScenicMapper.getScenicNameMap(new ArrayList<>(scenicIds));
}
// 组装结果 // 组装结果
for (Map.Entry<Long, Long> entry : routeCountMap.entrySet()) { for (Map.Entry<Long, Long> entry : routeCountMap.entrySet()) {

View File

@ -2,6 +2,7 @@ package com.aircraft.modules.route.controller;
import com.aircraft.modules.route.domain.CpRoute; import com.aircraft.modules.route.domain.CpRoute;
import com.aircraft.modules.route.domain.dto.CpRouteDTO; import com.aircraft.modules.route.domain.dto.CpRouteDTO;
import com.aircraft.modules.route.domain.dto.CpRouteVo;
import com.aircraft.modules.route.mapper.CpRouteMapper; import com.aircraft.modules.route.mapper.CpRouteMapper;
import com.aircraft.modules.system.mapper.UserMapper; import com.aircraft.modules.system.mapper.UserMapper;
import com.aircraft.modules.route.service.CpRouteService; import com.aircraft.modules.route.service.CpRouteService;
@ -53,16 +54,19 @@ public class CpRouteController {
@Autowired @Autowired
private UserMapper userMapper; private UserMapper userMapper;
@ApiOperation(value = "分页查询路线", notes = "分页查询路线") @ApiOperation(value = "分页查询路线(支持路线名模糊查询)", notes = "分页查询路线,可根据路线名称进行模糊搜索")
@RequestMapping(method = RequestMethod.GET) @RequestMapping(method = RequestMethod.GET)
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"), @ApiImplicitParam(name = "size", value = "分页大小", paramType = "query"),
@ApiImplicitParam(name = "current", value = "当前页面从1开始", paramType = "query") @ApiImplicitParam(name = "current", value = "当前页面从1开始", paramType = "query"),
@ApiImplicitParam(name = "routeName", value = "路线名称关键词,用于模糊查询", paramType = "query")
}) })
public ResponseEntity<IPage<CpRoute>> findByPage(final CpRoute example, final Page page) { public ResponseEntity<IPage<CpRouteVo>> findByPage(
final Page<CpRouteVo> page,
@RequestParam(required = false) String routeName
) {
try { try {
QueryWrapper<CpRoute> queryWrapper = new QueryWrapper<>(example); IPage<CpRouteVo> records = entityService.findByPage(page,routeName);
IPage<CpRoute> records = entityService.page(page, queryWrapper);
return new ResponseEntity<>(records, HttpStatus.OK); return new ResponseEntity<>(records, HttpStatus.OK);
} catch (Exception e) { } catch (Exception e) {
LOG.error("分页查询路线时出错", e); LOG.error("分页查询路线时出错", e);

View File

@ -1,7 +1,10 @@
package com.aircraft.modules.route.mapper; package com.aircraft.modules.route.mapper;
import com.aircraft.modules.route.domain.CpRoute; import com.aircraft.modules.route.domain.CpRoute;
import com.aircraft.modules.route.domain.dto.CpRouteVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.ArrayList; import java.util.ArrayList;
@ -24,5 +27,7 @@ public interface CpRouteMapper extends BaseMapper<CpRoute> {
String getNameById(Long routeId); String getNameById(Long routeId);
List<CpRoute> listRoutesByIds(ArrayList<Long> longs); List<CpRoute> listRoutesByIds(List<Long> routeIds);
IPage<CpRouteVo> selectVoPage(Page<CpRouteVo> page, String routeName);
} }

View File

@ -1,6 +1,9 @@
package com.aircraft.modules.route.service; package com.aircraft.modules.route.service;
import com.aircraft.modules.route.domain.CpRoute; import com.aircraft.modules.route.domain.CpRoute;
import com.aircraft.modules.route.domain.dto.CpRouteVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/** /**
@ -14,4 +17,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
public interface CpRouteService extends IService<CpRoute> { public interface CpRouteService extends IService<CpRoute> {
void updateDelFlagById(Long id, Integer delFlag); void updateDelFlagById(Long id, Integer delFlag);
IPage<CpRouteVo> findByPage(Page<CpRouteVo> page, String routeName);
} }

View File

@ -1,9 +1,13 @@
package com.aircraft.modules.route.service.impl; package com.aircraft.modules.route.service.impl;
import com.aircraft.modules.route.domain.CpRoute; import com.aircraft.modules.route.domain.CpRoute;
import com.aircraft.modules.route.domain.dto.CpRouteVo;
import com.aircraft.modules.route.mapper.CpRouteMapper; import com.aircraft.modules.route.mapper.CpRouteMapper;
import com.aircraft.modules.route.service.CpRouteService; import com.aircraft.modules.route.service.CpRouteService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
@ -16,9 +20,16 @@ import org.springframework.stereotype.Service;
*/ */
@Service @Service
public class CpRouteServiceImpl extends ServiceImpl<CpRouteMapper, CpRoute> implements CpRouteService { public class CpRouteServiceImpl extends ServiceImpl<CpRouteMapper, CpRoute> implements CpRouteService {
@Autowired
private CpRouteMapper cpRouteMapper;
@Override @Override
public void updateDelFlagById(Long id, Integer delFlag) { public void updateDelFlagById(Long id, Integer delFlag) {
baseMapper.updateDelFlagById(id,delFlag); baseMapper.updateDelFlagById(id, delFlag);
}
@Override
public IPage<CpRouteVo> findByPage(Page<CpRouteVo> page, String routeName) {
return cpRouteMapper.selectVoPage(page, routeName);
} }
} }

View File

@ -35,5 +35,5 @@ public interface EmScenicMapper extends BaseMapper<EmScenic> {
*/ */
List<AreaNumStatisVo> countByAreaId(); List<AreaNumStatisVo> countByAreaId();
Map<Long, String> getScenicNameMap(ArrayList<Long> longs); Map<Long, String> getScenicNameMap(ArrayList<Long> scenicIds);
} }

View File

@ -27,13 +27,14 @@
group by area_id group by area_id
</select> </select>
<select id="getScenicNameMap" resultType="java.util.HashMap"> <select id="getScenicNameMap" resultType="java.util.HashMap">
SELECT SELECT id AS "key", name AS "value"
id AS "key",
name AS "value"
FROM em_scenic FROM em_scenic
WHERE id IN WHERE del_flag = 0
<if test="scenicIds != null and scenicIds.size() > 0">
AND id IN
<foreach collection="scenicIds" item="id" open="(" separator="," close=")"> <foreach collection="scenicIds" item="id" open="(" separator="," close=")">
#{id} #{id}
</foreach> </foreach>
</if>
</select> </select>
</mapper> </mapper>

View File

@ -1,24 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.aircraft.modules.article.mapper.CpArticleMapper"> <mapper namespace="com.aircraft.modules.article.mapper.CpArticleMapper">
<!-- 通用查询映射结果 --> <!-- 基础查询列 -->
<resultMap id="BaseResultMap" type="com.aircraft.modules.article.domain.CpArticle"> <sql id="Base_Column_List">
<id column="id" property="id" jdbcType="BIGINT"/> id, title, photo, textid, article_type, url, cplabel_id,
<result column="title" property="title" jdbcType="VARCHAR"/> top, view_count, create_time, update_time, author_id,
<result column="photo" property="photo" jdbcType="VARCHAR"/> check_state, del_flag
<result column="textid" property="textid" jdbcType="BIGINT"/> </sql>
<result column="article_type" property="articleType" jdbcType="INTEGER"/>
<result column="url" property="url" jdbcType="VARCHAR"/>
<result column="cplabel_id" property="cplabelId" jdbcType="INTEGER"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="author_id" property="authorId" jdbcType="BIGINT"/>
<result column="check_state" property="checkState" jdbcType="CHAR"/>
<result column="del_flag" property="delFlag" jdbcType="INTEGER"/>
</resultMap>
<update id="updateDelFlagById"> <update id="updateDelFlagById">
UPDATE cp_article UPDATE cp_article
SET del_flag = #{delFlag} SET del_flag = #{delFlag}
WHERE id = #{id} WHERE id = #{id}
AND del_flag = 0 <!-- 确保只更新未删除的记录 --> AND del_flag = 0 <!-- 确保只更新未删除的记录 -->
</update> </update>
<!--分页查询文章,可进行模糊查询-->
<select id="selectVoPage" resultType="com.aircraft.modules.article.domain.dto.CpArticleVo">
SELECT
a.*,
t.text,
l.name AS labelName,
m.id AS moduleId, -- 映射模块ID
m.module_name AS moduleName -- 映射模块名称
FROM cp_article a
LEFT JOIN cp_text t ON a.textid = t.id
LEFT JOIN cp_label l ON a.cplabel_id = l.id
LEFT JOIN cp_module m ON l.module_id = m.id -- 添加模块表关联
WHERE a.del_flag = 0
<if test="titleKeyword != null and titleKeyword != ''">
AND a.title LIKE CONCAT('%', #{titleKeyword}, '%')
</if>
</select>
<!--通过文章id查询文章-->
<select id="selectVoById" resultType="com.aircraft.modules.article.domain.dto.CpArticleVo">
SELECT a.*,
t.text,
l.name AS labelName,
m.id AS moduleId,
m.module_name AS moduleName
FROM cp_article a
LEFT JOIN cp_text t ON a.textid = t.id
LEFT JOIN cp_label l ON a.cplabel_id = l.id
LEFT JOIN cp_module m ON l.module_id = m.id
WHERE a.id = #{id}
AND a.del_flag = 0
</select>
<!-- 浏览量+1-->
<update id="updateViewCountById">
UPDATE cp_article
SET view_count = view_count + 1, -- 自增1
update_time = NOW() -- 更新时间戳
WHERE id = #{id}
AND del_flag = 0 -- 确保只更新未删除的文章
</update>
</mapper> </mapper>

View File

@ -1,5 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.aircraft.modules.article.mapper.CpTextMapper"> <mapper namespace="com.aircraft.modules.article.mapper.CpTextMapper">
<select id="findByPage" resultType="com.aircraft.modules.article.domain.CpText">
SELECT *
FROM cp_text
WHERE del_flag = 0
<if test="keyWord != null and keyWord != ''">
AND text LIKE CONCAT('%', #{keyWord}, '%')
</if>
ORDER BY id DESC
</select>
</mapper> </mapper>

View File

@ -1,6 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.aircraft.modules.route.mapper.CpRouteMapper"> <mapper namespace="com.aircraft.modules.route.mapper.CpRouteMapper">
<!-- 分页查询路线,可通过路线名模糊查询 -->
<select id="selectVoPage" resultType="com.aircraft.modules.route.domain.dto.CpRouteVo">
SELECT
r.*, -- 路线基础字段
a.name AS areaName, -- 区域名称
s.name AS scenicName -- 景区名称
FROM cp_route r
LEFT JOIN em_area a ON r.area_id = a.id -- 关联区域表
LEFT JOIN em_scenic s ON r.scenic_id = s.id -- 关联景区表
WHERE r.del_flag = 0
<if test="routeName != null and routeName != ''">
AND r.name LIKE CONCAT('%', #{routeName}, '%')
</if>
ORDER BY r.create_time DESC
</select>
<!-- 根据ID查询路线 --> <!-- 根据ID查询路线 -->
<select id="getRouteById" resultType="com.aircraft.modules.route.domain.CpRoute"> <select id="getRouteById" resultType="com.aircraft.modules.route.domain.CpRoute">
SELECT * FROM cp_route SELECT * FROM cp_route
@ -20,14 +37,12 @@
WHERE id = #{routeId} WHERE id = #{routeId}
</select> </select>
<select id="listRoutesByIds" resultType="com.aircraft.modules.route.domain.CpRoute"> <select id="listRoutesByIds" resultType="com.aircraft.modules.route.domain.CpRoute">
SELECT SELECT *
id,
name,
scenic_id
FROM cp_route FROM cp_route
WHERE id IN WHERE id IN
<foreach collection="routeIds" item="id" open="(" separator="," close=")"> <foreach collection="routeIds" item="id" open="(" separator="," close=")">
#{id} #{id}
</foreach> </foreach>
AND del_flag = 0
</select> </select>
</mapper> </mapper>