feat:增加统计接口
This commit is contained in:
11
pom.xml
11
pom.xml
@@ -11,7 +11,7 @@
|
||||
</parent>
|
||||
|
||||
<artifactId>food-hub-service</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<version>0.0.1</version>
|
||||
<name>food-hub-service</name>
|
||||
<description>food-hub-service</description>
|
||||
|
||||
@@ -38,4 +38,13 @@
|
||||
<version>2.0.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
||||
23
src/main/java/com/cxx/food/config/WebMvcConfig.java
Normal file
23
src/main/java/com/cxx/food/config/WebMvcConfig.java
Normal file
@@ -0,0 +1,23 @@
|
||||
package com.cxx.food.config;
|
||||
|
||||
import com.cxx.food.constant.FileConstant;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
@Configuration
|
||||
public class WebMvcConfig implements WebMvcConfigurer {
|
||||
@Value("${file.path}")
|
||||
private String filePath;
|
||||
|
||||
@Value("${file.log-path}")
|
||||
private String logFilePath;
|
||||
|
||||
@Override
|
||||
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||
registry.addResourceHandler("/" + FileConstant.FILE_URL_PREFIX + "/**")
|
||||
.addResourceLocations("file:" + filePath);
|
||||
}
|
||||
}
|
||||
|
||||
7
src/main/java/com/cxx/food/constant/FileConstant.java
Normal file
7
src/main/java/com/cxx/food/constant/FileConstant.java
Normal file
@@ -0,0 +1,7 @@
|
||||
package com.cxx.food.constant;
|
||||
|
||||
public interface FileConstant {
|
||||
String FILE_NAME_SPLIT = "_";
|
||||
String FILE_URL_PREFIX = "files";
|
||||
String FILE_LOG_PREFIX = "logs";
|
||||
}
|
||||
@@ -39,12 +39,18 @@ public class FoodController {
|
||||
return foodService.deleteFoodRecipe(id);
|
||||
}
|
||||
|
||||
@Operation(summary = "查询美食菜谱")
|
||||
@GetMapping("/recipe")
|
||||
public List<FoodSummaryDto> queryFoodSummary(FoodQueryVo foodQueryVo) {
|
||||
return foodService.queryFoodSummary(foodQueryVo);
|
||||
}
|
||||
|
||||
@Operation(summary = "分页查询美食菜谱")
|
||||
@GetMapping("/recipe/page")
|
||||
public IPage<FoodSummaryDto> queryFoodSummary(@RequestParam("currentPage") Integer currentPage,
|
||||
@RequestParam("pageSize") Integer pageSize,
|
||||
FoodQueryVo foodQueryVo) {
|
||||
return foodService.queryFoodSummary(currentPage, pageSize, foodQueryVo);
|
||||
public IPage<FoodSummaryDto> queryFoodSummaryByPage(@RequestParam("currentPage") Integer currentPage,
|
||||
@RequestParam("pageSize") Integer pageSize,
|
||||
FoodQueryVo foodQueryVo) {
|
||||
return foodService.queryFoodSummaryByPage(currentPage, pageSize, foodQueryVo);
|
||||
}
|
||||
|
||||
@Operation(summary = "查询美食")
|
||||
@@ -96,5 +102,23 @@ public class FoodController {
|
||||
public FoodStatsDto queryFoodStats() {
|
||||
return foodService.queryFoodStats();
|
||||
}
|
||||
|
||||
@Operation(summary = "查询美食记录统计")
|
||||
@GetMapping("/stats/record")
|
||||
public List<StatsChartDto> queryFoodRecordStats() {
|
||||
return foodService.queryFoodRecordStats();
|
||||
}
|
||||
|
||||
@Operation(summary = "查询美食类别统计")
|
||||
@GetMapping("/stats/category")
|
||||
public List<StatsChartDto> queryFoodCategoryStats() {
|
||||
return foodService.queryFoodCategoryStats();
|
||||
}
|
||||
|
||||
@Operation(summary = "查询美食排行榜统计")
|
||||
@GetMapping("/stats/rank")
|
||||
public List<StatsChartDto> queryFoodRankStats() {
|
||||
return foodService.queryFoodRankStats();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,8 +12,10 @@ import java.util.List;
|
||||
public interface FoodDao {
|
||||
FoodRecipeDto queryFoodRecipe(@Param("id") Long id);
|
||||
|
||||
IPage<FoodSummaryDto> queryFoodSummary(IPage<FoodSummaryDto> page,
|
||||
@Param("query") FoodQueryVo foodQueryVo);
|
||||
IPage<FoodSummaryDto> queryFoodSummaryByPage(IPage<FoodSummaryDto> page,
|
||||
@Param("query") FoodQueryVo foodQueryVo);
|
||||
|
||||
List<FoodSummaryDto> queryFoodSummary(@Param("query") FoodQueryVo foodQueryVo);
|
||||
|
||||
List<FoodRecordDto> queryFoodRecordById(@Param("id") Long id);
|
||||
|
||||
@@ -22,6 +24,12 @@ public interface FoodDao {
|
||||
|
||||
FoodStatsDto queryFoodStats();
|
||||
|
||||
List<StatsChartDto> queryFoodRecordStats();
|
||||
|
||||
List<StatsChartDto> queryFoodCategoryStats();
|
||||
|
||||
List<StatsChartDto> queryFoodRankStats();
|
||||
|
||||
List<String> queryFoodCategory();
|
||||
|
||||
void insertFoodMaterial(@Param("foodId") Long foodId,
|
||||
|
||||
@@ -23,6 +23,10 @@ public class FoodRecordDto {
|
||||
@JsonView(ReadView.class)
|
||||
private String category;
|
||||
|
||||
@Schema(description = "完成人")
|
||||
@JsonView(ReadView.class)
|
||||
private Long person;
|
||||
|
||||
@Schema(description = "完成时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
|
||||
private Date date;
|
||||
|
||||
11
src/main/java/com/cxx/food/dto/StatsChartDto.java
Normal file
11
src/main/java/com/cxx/food/dto/StatsChartDto.java
Normal file
@@ -0,0 +1,11 @@
|
||||
package com.cxx.food.dto;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class StatsChartDto {
|
||||
private String name;
|
||||
private Double value;
|
||||
}
|
||||
@@ -15,6 +15,9 @@ public class FoodRecord extends AbstractIdEntity {
|
||||
@TableField("food_id")
|
||||
private Long foodId;
|
||||
|
||||
@TableField("person")
|
||||
private Long person;
|
||||
|
||||
@TableField("date")
|
||||
private Date date;
|
||||
|
||||
|
||||
@@ -2,10 +2,7 @@ package com.cxx.food.service;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.cxx.food.dto.FoodRecipeDto;
|
||||
import com.cxx.food.dto.FoodRecordDto;
|
||||
import com.cxx.food.dto.FoodStatsDto;
|
||||
import com.cxx.food.dto.FoodSummaryDto;
|
||||
import com.cxx.food.dto.*;
|
||||
import com.cxx.food.vo.FoodQueryVo;
|
||||
|
||||
import java.util.List;
|
||||
@@ -25,7 +22,9 @@ public interface FoodService {
|
||||
|
||||
FoodRecipeDto queryFoodRecipe(Long id);
|
||||
|
||||
IPage<FoodSummaryDto> queryFoodSummary(Integer currentPage, Integer pageSize, FoodQueryVo foodQueryVo);
|
||||
List<FoodSummaryDto> queryFoodSummary(FoodQueryVo foodQueryVo);
|
||||
|
||||
IPage<FoodSummaryDto> queryFoodSummaryByPage(Integer currentPage, Integer pageSize, FoodQueryVo foodQueryVo);
|
||||
|
||||
List<FoodRecordDto> queryFoodRecord(String startDate, String endDate);
|
||||
|
||||
@@ -34,4 +33,10 @@ public interface FoodService {
|
||||
List<String> queryFoodCategory();
|
||||
|
||||
FoodStatsDto queryFoodStats();
|
||||
|
||||
List<StatsChartDto> queryFoodRecordStats();
|
||||
|
||||
List<StatsChartDto> queryFoodCategoryStats();
|
||||
|
||||
List<StatsChartDto> queryFoodRankStats();
|
||||
}
|
||||
|
||||
@@ -163,11 +163,16 @@ public class FoodServiceImpl implements FoodService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPage<FoodSummaryDto> queryFoodSummary(Integer currentPage, Integer pageSize, FoodQueryVo foodQueryVo) {
|
||||
public List<FoodSummaryDto> queryFoodSummary(FoodQueryVo foodQueryVo) {
|
||||
return foodDao.queryFoodSummary(foodQueryVo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPage<FoodSummaryDto> queryFoodSummaryByPage(Integer currentPage, Integer pageSize, FoodQueryVo foodQueryVo) {
|
||||
// 这里只能先对主表进行分页 然后在查询子表信息
|
||||
// 不能使用Left Join关联表查询,因为这里是一对多数据,关联查询会导致数据有重复
|
||||
// 从而导致page计算错误(会把重复的数据当成多条记录,实际上只有1条记录)
|
||||
IPage<FoodSummaryDto> foodSummaryPage = foodDao.queryFoodSummary(new Page<>(currentPage, pageSize), foodQueryVo);
|
||||
IPage<FoodSummaryDto> foodSummaryPage = foodDao.queryFoodSummaryByPage(new Page<>(currentPage, pageSize), foodQueryVo);
|
||||
List<FoodSummaryDto> foodSummaryList = foodSummaryPage.getRecords();
|
||||
for (FoodSummaryDto foodSummary : foodSummaryList) {
|
||||
foodSummary.setRecordList(foodDao.queryFoodRecordById(foodSummary.getId()));
|
||||
@@ -197,4 +202,19 @@ public class FoodServiceImpl implements FoodService {
|
||||
public FoodStatsDto queryFoodStats() {
|
||||
return foodDao.queryFoodStats();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StatsChartDto> queryFoodRecordStats() {
|
||||
return foodDao.queryFoodRecordStats();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StatsChartDto> queryFoodCategoryStats() {
|
||||
return foodDao.queryFoodCategoryStats();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StatsChartDto> queryFoodRankStats() {
|
||||
return foodDao.queryFoodRankStats();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
spring:
|
||||
datasource:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://127.0.0.1:3306/sweet_hut?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=false
|
||||
url: jdbc:mysql://127.0.0.1:3306/food_hub?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=false
|
||||
username: cxx
|
||||
password: 123456
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
spring:
|
||||
datasource:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://mysql:3306/sweet_hut?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=false
|
||||
url: jdbc:mysql://mysql:3306/food_hub?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=false
|
||||
username: docker
|
||||
password: 19940822Cxx
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
spring:
|
||||
datasource:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://127.0.0.1:3306/sweet_hut?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=false
|
||||
url: jdbc:mysql://127.0.0.1:3306/food_hub?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=false
|
||||
username: cxx
|
||||
password: 19940822Cxx@1213
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
server:
|
||||
port: 8090
|
||||
port: 8100
|
||||
|
||||
spring:
|
||||
application:
|
||||
|
||||
@@ -1,142 +0,0 @@
|
||||
-- MySQL dump 10.13 Distrib 8.0.26, for Win64 (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: food_hub
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 8.0.27
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!50503 SET NAMES utf8 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `food_material`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `food_material`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `food_material` (
|
||||
`id` bigint NOT NULL,
|
||||
`food_id` bigint NOT NULL COMMENT '美食id',
|
||||
`type` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '类型',
|
||||
`name` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
|
||||
`amount` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '分量',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='美食食材';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Dumping data for table `food_material`
|
||||
--
|
||||
|
||||
LOCK TABLES `food_material` WRITE;
|
||||
/*!40000 ALTER TABLE `food_material` DISABLE KEYS */;
|
||||
INSERT INTO `food_material` VALUES (632688264339525,614660173221957,'主料','胖头鱼','一个'),(632688264339526,614660173221957,'辅料','豆腐','一块'),(632688264339527,614660173221957,'调料','生姜','少许'),(632688264339528,614660173221957,'调料','料酒','少许'),(632701463908421,614665900060741,'主料','带鱼','2条'),(632702438854725,614668663291973,'主料','砺岈','100克'),(632703259131973,632703259000901,'主料','鲫鱼','1斤'),(636430940057669,632703747838021,'主料','土豆','1个'),(672333164245061,672333164216389,'主料','鸡蛋','1个'),(672333288312901,672333288300613,'主料','大虾','1斤'),(672333596311621,672333596299333,'主料','鲳鳊鱼','1条'),(672333773520965,672333773504581,'主料','大白菜','1颗');
|
||||
/*!40000 ALTER TABLE `food_material` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Table structure for table `food_recipe`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `food_recipe`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `food_recipe` (
|
||||
`id` bigint NOT NULL,
|
||||
`name` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '美食名称',
|
||||
`category` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '美食菜系',
|
||||
`recommend_rate` int DEFAULT NULL COMMENT '推荐指数',
|
||||
`remark` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='美食记录';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Dumping data for table `food_recipe`
|
||||
--
|
||||
|
||||
LOCK TABLES `food_recipe` WRITE;
|
||||
/*!40000 ALTER TABLE `food_recipe` DISABLE KEYS */;
|
||||
INSERT INTO `food_recipe` VALUES (614660173221957,'鱼头汤','淮扬菜',5,'','2024-11-21 22:38:41',NULL,'2025-01-11 21:15:10',NULL),(614665900060741,'红烧带鱼','闽菜',5,'','2024-11-21 23:01:59',NULL,'2025-01-11 22:08:53',NULL),(614668663291973,'砺岈饼','其他',0,'','2024-11-21 23:13:14',NULL,'2025-01-11 22:12:51',NULL),(632703259000901,'红烧鲫鱼','其他',0,'','2025-01-11 22:16:11',NULL,'2025-01-11 22:16:11',NULL),(632703747838021,'青椒土豆丝','家常菜',0,'','2025-01-11 22:18:10',NULL,'2025-01-22 11:04:09',NULL),(672333164216389,'香煎荷包蛋','家常菜',4,'','2025-05-03 21:50:41','645808454946885','2025-05-03 21:50:41','645808454946885'),(672333288300613,'红烧大虾','家常菜',5,'','2025-05-03 21:51:11','645808454946885','2025-05-03 21:51:11','645808454946885'),(672333596299333,'红烧鲳鳊鱼','家常菜',4,'','2025-05-03 21:52:26','645808454946885','2025-05-03 21:52:26','645808454946885'),(672333773504581,'清炒大白菜','家常菜',4,'','2025-05-03 21:53:10','645808454946885','2025-05-03 21:53:10','645808454946885');
|
||||
/*!40000 ALTER TABLE `food_recipe` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Table structure for table `food_record`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `food_record`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `food_record` (
|
||||
`id` bigint NOT NULL,
|
||||
`food_id` bigint NOT NULL COMMENT '美食id',
|
||||
`date` date NOT NULL COMMENT '完成时间',
|
||||
`image_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '图片路径',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='美食成果';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Dumping data for table `food_record`
|
||||
--
|
||||
|
||||
LOCK TABLES `food_record` WRITE;
|
||||
/*!40000 ALTER TABLE `food_record` DISABLE KEYS */;
|
||||
INSERT INTO `food_record` VALUES (632688264441925,614660173221957,'2025-01-04','files/food/487f7b22f68312d2c1bbc93b1aea445b.jpg'),(632688264441926,614660173221957,'2024-11-13','files/food/afa87f8628b21f883c0df8e8fa191f54.jpg'),(632701463998533,614665900060741,'2025-01-05','files/food/59c704e85c1f7a92060cecbd01285ff3.jpg'),(632702438899781,614668663291973,'2025-01-04','files/food/08398ad34a09075dd1ba10ebd2776268.jpg'),(632703259230277,632703259000901,'2024-12-01','files/food/a5a8a1ccb111e2f0a91512efbfcdb04c.jpg'),(632703748022341,632703747838021,'2025-01-04','files/food/2b9fb91718567ffbce3345498f07a567.jpg'),(672332969476165,614660173221957,'2025-05-03','files/food/1bcaa7cff0162df2268147b18c1d8cdc.jpg'),(672334043287621,672333596299333,'2025-02-16','files/food/15ce1a86f4a2e6fb96c17bb307f36455.jpg'),(672334159204421,672333773504581,'2025-02-16','files/food/9e7c0cd1cbd0de61dce1c5c053e5ed62.jpg'),(672334513164357,672333288300613,'2025-04-06','files/food/a84730dc6f7f025205d984ebfdb222f2.jpg'),(672334634389573,672333164216389,'2025-04-06','files/food/afc9e6d770ae83e030362e6758373398.jpg');
|
||||
/*!40000 ALTER TABLE `food_record` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Table structure for table `food_step`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `food_step`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `food_step` (
|
||||
`id` bigint NOT NULL,
|
||||
`food_id` bigint NOT NULL COMMENT '美食id',
|
||||
`sort` int NOT NULL COMMENT '顺序',
|
||||
`content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '内容',
|
||||
`image_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '图片地址',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='美食步骤';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Dumping data for table `food_step`
|
||||
--
|
||||
|
||||
LOCK TABLES `food_step` WRITE;
|
||||
/*!40000 ALTER TABLE `food_step` DISABLE KEYS */;
|
||||
INSERT INTO `food_step` VALUES (632688264384581,614660173221957,0,'先把鱼头剁开',''),(632688264384582,614660173221957,1,'洗鱼',''),(632688264384583,614660173221957,2,'倒水放砂锅里煮',''),(632688264384584,614660173221957,3,'放豆腐',''),(632688264384585,614660173221957,4,'放盐',''),(632701463953477,614665900060741,0,'清洗带鱼',''),(632702438879301,614668663291973,0,'清洗砺岈',''),(632703259185221,632703259000901,0,'清洗鲫鱼',''),(636430940074053,632703747838021,0,'清洗土豆切成丝','');
|
||||
/*!40000 ALTER TABLE `food_step` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Dumping routines for database 'food_hub'
|
||||
--
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2025-06-24 20:01:31
|
||||
@@ -34,6 +34,7 @@
|
||||
|
||||
<resultMap id="foodRecordResultMap" type="com.cxx.food.dto.FoodRecordDto">
|
||||
<id property="id" column="id"/>
|
||||
<result property="person" column="person"/>
|
||||
<result property="date" column="date"/>
|
||||
<result property="imageUrl" column="imageUrl"/>
|
||||
</resultMap>
|
||||
@@ -45,8 +46,8 @@
|
||||
<result property="recommendRate" column="recommendRate"/>
|
||||
<collection property="recordList" ofType="com.cxx.food.dto.FoodRecordDto">
|
||||
<id property="id" column="workId"/>
|
||||
<result property="person" column="person"/>
|
||||
<result property="date" column="recordDate"/>
|
||||
<result property="person" column="recordPerson"/>
|
||||
<result property="imageUrl" column="workImageUrl"/>
|
||||
</collection>
|
||||
</resultMap>
|
||||
@@ -72,6 +73,7 @@
|
||||
|
||||
<select id="queryFoodRecordById" resultMap="foodRecordResultMap">
|
||||
SELECT id AS id,
|
||||
person AS person,
|
||||
date AS date,
|
||||
image_url AS imageUrl
|
||||
FROM food_record
|
||||
@@ -83,6 +85,7 @@
|
||||
SELECT a.id AS id,
|
||||
b.name AS name,
|
||||
b.category AS category,
|
||||
a.person AS person,
|
||||
a.date AS date,
|
||||
a.image_url AS imageUrl
|
||||
FROM food_record AS a
|
||||
@@ -102,7 +105,7 @@
|
||||
WHERE a.id = #{id}
|
||||
</select>
|
||||
|
||||
<select id="queryFoodSummary" resultMap="foodSummaryResultMap">
|
||||
<select id="queryFoodSummaryByPage" resultMap="foodSummaryResultMap">
|
||||
SELECT a.id AS id,
|
||||
a.name AS name,
|
||||
a.category AS category,
|
||||
@@ -115,6 +118,23 @@
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="queryFoodSummary" 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 recordDate,
|
||||
b.image_url AS workImageUrl
|
||||
FROM food_recipe a
|
||||
LEFT JOIN food_record b ON a.id = b.food_id
|
||||
<where>
|
||||
<if test="query.category != null and query.category != ''">
|
||||
a.category = #{query.category}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="queryFoodStats" resultType="com.cxx.food.dto.FoodStatsDto">
|
||||
SELECT COUNT(DISTINCT a.name) AS recipeCount,
|
||||
COUNT(DISTINCT a.category) AS categoryCount,
|
||||
@@ -123,8 +143,34 @@
|
||||
LEFT JOIN food_record b ON a.id = b.food_id
|
||||
</select>
|
||||
|
||||
<select id="queryFoodRecordStats" resultType="com.cxx.food.dto.StatsChartDto">
|
||||
SELECT DATE_FORMAT(date, '%Y-%m') AS name,
|
||||
COUNT(id) AS value
|
||||
FROM food_record
|
||||
GROUP BY DATE_FORMAT(date, '%Y-%m')
|
||||
ORDER BY name DESC;
|
||||
</select>
|
||||
|
||||
<select id="queryFoodCategoryStats" resultType="com.cxx.food.dto.StatsChartDto">
|
||||
SELECT category AS name,
|
||||
COUNT(id) AS value
|
||||
FROM food_recipe
|
||||
GROUP BY category
|
||||
ORDER BY value DESC;
|
||||
</select>
|
||||
|
||||
<select id="queryFoodRankStats" resultType="com.cxx.food.dto.StatsChartDto">
|
||||
SELECT a.name AS name,
|
||||
COUNT(b.id) AS value
|
||||
FROM food_recipe a
|
||||
LEFT JOIN
|
||||
food_record b ON a.id = b.food_id
|
||||
GROUP BY a.id, a.name
|
||||
ORDER BY value DESC;
|
||||
</select>
|
||||
|
||||
<select id="queryFoodCategory" resultType="string">
|
||||
SELECT DISTINCT a.category AS category
|
||||
SELECT DISTINCT a.category AS category
|
||||
FROM food_recipe a
|
||||
</select>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user