feat:增加查询用户菜谱接口

This commit is contained in:
2025-07-01 22:41:47 +08:00
parent f690c1478a
commit b569a26f5d
5 changed files with 60 additions and 21 deletions

View File

@@ -39,10 +39,16 @@ public class FoodController {
return foodService.deleteRecipe(id); return foodService.deleteRecipe(id);
} }
@Operation(summary = "查询用户美食菜谱")
@GetMapping("/recipe/user/{id}")
public List<SummaryDto> queryRecipeByUser(@PathVariable("id") long id) {
return foodService.queryRecipeByUser(id);
}
@Operation(summary = "查询美食菜谱") @Operation(summary = "查询美食菜谱")
@GetMapping("/recipe") @GetMapping("/recipe")
public List<SummaryDto> querySummary(FoodQueryVo foodQueryVo) { public List<SummaryDto> queryRecipeSummary(FoodQueryVo foodQueryVo) {
return foodService.querySummary(foodQueryVo); return foodService.queryRecipeSummary(foodQueryVo);
} }
@Operation(summary = "分页查询美食菜谱") @Operation(summary = "分页查询美食菜谱")
@@ -53,10 +59,10 @@ public class FoodController {
return foodService.querySummaryByPage(currentPage, pageSize, foodQueryVo); return foodService.querySummaryByPage(currentPage, pageSize, foodQueryVo);
} }
@Operation(summary = "查询美食") @Operation(summary = "根据id查询美食")
@GetMapping("/recipe/{id}") @GetMapping("/recipe/{id}")
public @JsonView(ReadView.class) RecipeDto queryRecipe(@PathVariable("id") long id) { public @JsonView(ReadView.class) RecipeDto queryRecipeById(@PathVariable("id") long id) {
return foodService.queryRecipe(id); return foodService.queryRecipeById(id);
} }
@Operation(summary = "查询所有美食名称") @Operation(summary = "查询所有美食名称")

View File

@@ -12,11 +12,13 @@ import java.util.List;
public interface FoodDao { public interface FoodDao {
RecipeDto queryRecipe(@Param("id") Long id); RecipeDto queryRecipe(@Param("id") Long id);
List<SummaryDto> queryRecipeByUser(@Param("id") Long id);
IPage<SummaryDto> querySummaryByPage(IPage<SummaryDto> page, IPage<SummaryDto> querySummaryByPage(IPage<SummaryDto> page,
@Param("query") FoodQueryVo foodQueryVo); @Param("query") FoodQueryVo foodQueryVo);
List<SummaryDto> querySummary(@Param("query") FoodQueryVo foodQueryVo, List<SummaryDto> queryRecipeSummary(@Param("query") FoodQueryVo foodQueryVo,
@Param("user") String user); @Param("user") String user);
List<RecordDto> queryRecordById(@Param("id") Long id); List<RecordDto> queryRecordById(@Param("id") Long id);

View File

@@ -26,9 +26,11 @@ public interface FoodService {
Boolean deleteLike(Long recipeId); Boolean deleteLike(Long recipeId);
RecipeDto queryRecipe(Long id); RecipeDto queryRecipeById(Long id);
List<SummaryDto> querySummary(FoodQueryVo foodQueryVo); List<SummaryDto> queryRecipeByUser(Long id);
List<SummaryDto> queryRecipeSummary(FoodQueryVo foodQueryVo);
IPage<SummaryDto> querySummaryByPage(Integer currentPage, Integer pageSize, FoodQueryVo foodQueryVo); IPage<SummaryDto> querySummaryByPage(Integer currentPage, Integer pageSize, FoodQueryVo foodQueryVo);

View File

@@ -195,7 +195,7 @@ public class FoodServiceImpl implements FoodService {
} }
@Override @Override
public RecipeDto queryRecipe(Long id) { public RecipeDto queryRecipeById(Long id) {
if (recipeMapper.selectById(id) == null) { if (recipeMapper.selectById(id) == null) {
throw new CustomException("该美食不存在"); throw new CustomException("该美食不存在");
} }
@@ -204,8 +204,13 @@ public class FoodServiceImpl implements FoodService {
} }
@Override @Override
public List<SummaryDto> querySummary(FoodQueryVo foodQueryVo) { public List<SummaryDto> queryRecipeByUser(Long id) {
return foodDao.querySummary(foodQueryVo, StpUtil.getLoginIdAsString()); return foodDao.queryRecipeByUser(id);
}
@Override
public List<SummaryDto> queryRecipeSummary(FoodQueryVo foodQueryVo) {
return foodDao.queryRecipeSummary(foodQueryVo, StpUtil.getLoginIdAsString());
} }
@Override @Override

View File

@@ -143,6 +143,30 @@
WHERE a.id = #{id} WHERE a.id = #{id}
</select> </select>
<select id="queryRecipeByUser" resultMap="foodSummaryResultMap">
SELECT a.id AS id,
a.name AS name,
a.category AS category,
a.recommend_rate AS recommendRate,
b.person AS person,
b.date AS date,
b.image_url AS imageUrl,
COALESCE(c.like_count, 0) AS likeCount,
COALESCE(d.comment_count, 0) AS commentCount
FROM recipe a
LEFT JOIN record b ON a.id = b.food_id
LEFT JOIN (SELECT subject_id, COUNT(id) AS like_count
FROM like_record
WHERE type = 'recipe'
GROUP BY subject_id) c ON a.id = c.subject_id
LEFT JOIN (SELECT subject_id, COUNT(id) AS comment_count
FROM comment_record
WHERE type = 'recipe'
GROUP BY subject_id) d ON a.id = d.subject_id
WHERE a.create_by = #{id}
ORDER BY a.update_time DESC
</select>
<select id="querySummaryByPage" resultMap="foodSummaryResultMap"> <select id="querySummaryByPage" resultMap="foodSummaryResultMap">
SELECT a.id AS id, SELECT a.id AS id,
a.name AS name, a.name AS name,
@@ -156,7 +180,7 @@
</where> </where>
</select> </select>
<select id="querySummary" resultMap="foodSummaryResultMap"> <select id="queryRecipeSummary" resultMap="foodSummaryResultMap">
SELECT a.id AS id, SELECT a.id AS id,
a.name AS name, a.name AS name,
a.category AS category, a.category AS category,
@@ -169,16 +193,16 @@
FROM recipe a FROM recipe a
LEFT JOIN record b ON a.id = b.food_id LEFT JOIN record b ON a.id = b.food_id
LEFT JOIN ( LEFT JOIN (
SELECT subject_id, COUNT(id) AS like_count SELECT subject_id, COUNT(id) AS like_count
FROM like_record FROM like_record
WHERE type = 'recipe' WHERE type = 'recipe'
GROUP BY subject_id GROUP BY subject_id
) c ON a.id = c.subject_id ) c ON a.id = c.subject_id
LEFT JOIN ( LEFT JOIN (
SELECT subject_id, COUNT(id) AS comment_count SELECT subject_id, COUNT(id) AS comment_count
FROM comment_record FROM comment_record
WHERE type = 'recipe' WHERE type = 'recipe'
GROUP BY subject_id GROUP BY subject_id
) d ON a.id = d.subject_id ) d ON a.id = d.subject_id
<where> <where>
<if test="query.category != null and query.category != ''"> <if test="query.category != null and query.category != ''">