From 2b6dd353e8a8b1769cf33c7a7d6bcdbe4ea0ea31 Mon Sep 17 00:00:00 2001 From: zvv <508748680@qq.com> Date: Fri, 27 Mar 2026 18:31:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=8F=9C=E5=93=81=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E4=BB=A3=E7=A0=81=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/sky/SkyApplication.java | 1 + .../java/com/sky/config/OssConfiguration.java | 27 +++++++++ .../controller/admin/CommonController.java | 59 +++++++++++++++++++ .../sky/controller/admin/DishController.java | 45 ++++++++++++++ .../java/com/sky/mapper/DishFlavorMapper.java | 17 ++++++ .../main/java/com/sky/mapper/DishMapper.java | 10 ++++ .../java/com/sky/service/DishService.java | 13 ++++ .../com/sky/service/impl/DishServiceImpl.java | 56 ++++++++++++++++++ .../src/main/resources/application-dev.yml | 6 ++ sky-server/src/main/resources/application.yml | 9 +++ .../resources/mapper/DishFlavorMapper.xml | 12 ++++ .../src/main/resources/mapper/DishMapper.xml | 12 ++++ 12 files changed, 267 insertions(+) create mode 100644 sky-server/src/main/java/com/sky/config/OssConfiguration.java create mode 100644 sky-server/src/main/java/com/sky/controller/admin/CommonController.java create mode 100644 sky-server/src/main/java/com/sky/controller/admin/DishController.java create mode 100644 sky-server/src/main/java/com/sky/mapper/DishFlavorMapper.java create mode 100644 sky-server/src/main/java/com/sky/service/DishService.java create mode 100644 sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java create mode 100644 sky-server/src/main/resources/mapper/DishFlavorMapper.xml create mode 100644 sky-server/src/main/resources/mapper/DishMapper.xml diff --git a/sky-server/src/main/java/com/sky/SkyApplication.java b/sky-server/src/main/java/com/sky/SkyApplication.java index b13f77c..47b42b1 100644 --- a/sky-server/src/main/java/com/sky/SkyApplication.java +++ b/sky-server/src/main/java/com/sky/SkyApplication.java @@ -1,6 +1,7 @@ package com.sky; import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement; diff --git a/sky-server/src/main/java/com/sky/config/OssConfiguration.java b/sky-server/src/main/java/com/sky/config/OssConfiguration.java new file mode 100644 index 0000000..5605dbf --- /dev/null +++ b/sky-server/src/main/java/com/sky/config/OssConfiguration.java @@ -0,0 +1,27 @@ +package com.sky.config; + + +import com.sky.properties.AliOssProperties; +import com.sky.utils.AliOssUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * 配置类 用于创建AliOssUtil对象 + */ +@Configuration +@Slf4j +public class OssConfiguration { + + @Bean + @ConditionalOnMissingBean + public AliOssUtil aliOssUtil(AliOssProperties aliOssProperties) { + log.info("开始创建阿里云文件上传工具类对象:{}", aliOssProperties); + return new AliOssUtil(aliOssProperties.getEndpoint(), + aliOssProperties.getAccessKeyId(), + aliOssProperties.getAccessKeySecret(), + aliOssProperties.getBucketName()); + } +} diff --git a/sky-server/src/main/java/com/sky/controller/admin/CommonController.java b/sky-server/src/main/java/com/sky/controller/admin/CommonController.java new file mode 100644 index 0000000..173ef11 --- /dev/null +++ b/sky-server/src/main/java/com/sky/controller/admin/CommonController.java @@ -0,0 +1,59 @@ +package com.sky.controller.admin; + + +import com.sky.constant.MessageConstant; +import com.sky.result.Result; +import com.sky.utils.AliOssUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.UUID; + +/** + * 通用接口 + */ +@RestController +@RequestMapping("/admin/common") +@Api(tags = "通用接口") +@Slf4j +public class CommonController { + + + @Autowired + private AliOssUtil aliOssUtil; + + /** + * 文件上传 + * @param file + * @return + */ + @PostMapping("/upload") + @ApiOperation("文件上传") + public Result upload(MultipartFile file) { + log.info("文件上传:{}", file); + + try { + //原始文件名 + String originalFilename = file.getOriginalFilename(); + //截取后缀 + String extension = originalFilename.substring(originalFilename.lastIndexOf(".")); + String objectName = UUID.randomUUID().toString() + extension; + + + //文件的请求路径 + String filePath = aliOssUtil.upload(file.getBytes(), objectName); + return Result.success(filePath); + } catch (IOException e) { + log.error("文件上传失败:{}", e); + } + + return Result.error(MessageConstant.UPLOAD_FAILED); + } +} diff --git a/sky-server/src/main/java/com/sky/controller/admin/DishController.java b/sky-server/src/main/java/com/sky/controller/admin/DishController.java new file mode 100644 index 0000000..efe8daa --- /dev/null +++ b/sky-server/src/main/java/com/sky/controller/admin/DishController.java @@ -0,0 +1,45 @@ +package com.sky.controller.admin; + + +import com.sky.constant.MessageConstant; +import com.sky.dto.DishDTO; +import com.sky.result.Result; +import com.sky.service.DishService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + * 菜品管理 + */ +@RestController +@RequestMapping("/admin/dish") +@Api(tags = "菜品相关接口") +@Slf4j +public class DishController { + + + + @Autowired + private DishService dishService; + + + /** + * 新增菜品 + * @param dishDTO + * @return + */ + @PostMapping + @ApiOperation("新增菜品") + public Result save(@RequestBody DishDTO dishDTO) { + log.info("新增菜品:{}", dishDTO); + dishService.saveWithFlavor(dishDTO); + return Result.success(); + } +} diff --git a/sky-server/src/main/java/com/sky/mapper/DishFlavorMapper.java b/sky-server/src/main/java/com/sky/mapper/DishFlavorMapper.java new file mode 100644 index 0000000..e1e99c6 --- /dev/null +++ b/sky-server/src/main/java/com/sky/mapper/DishFlavorMapper.java @@ -0,0 +1,17 @@ +package com.sky.mapper; + + +import com.sky.entity.DishFlavor; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface DishFlavorMapper { + + /** + * 批量插入口味数据 + * @param flavors + */ + void insertBatch(List flavors); +} diff --git a/sky-server/src/main/java/com/sky/mapper/DishMapper.java b/sky-server/src/main/java/com/sky/mapper/DishMapper.java index eece6f8..5af7b6f 100644 --- a/sky-server/src/main/java/com/sky/mapper/DishMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/DishMapper.java @@ -1,5 +1,8 @@ package com.sky.mapper; +import com.sky.annotation.AutoFill; +import com.sky.entity.Dish; +import com.sky.enumeration.OperationType; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; @@ -14,4 +17,11 @@ public interface DishMapper { @Select("select count(id) from dish where category_id = #{categoryId}") Integer countByCategoryId(Long categoryId); + + /** + * 插入菜品数据 + * @param dish + */ + @AutoFill(value = OperationType.INSERT) //公共字段自动填充 不需要手动赋值 + void insert(Dish dish); } diff --git a/sky-server/src/main/java/com/sky/service/DishService.java b/sky-server/src/main/java/com/sky/service/DishService.java new file mode 100644 index 0000000..213f028 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/DishService.java @@ -0,0 +1,13 @@ +package com.sky.service; + +import com.sky.dto.DishDTO; + +public interface DishService { + + + /** + * 新增菜品和对应的口味数据 + * @param dishDTO + */ + public void saveWithFlavor(DishDTO dishDTO); +} diff --git a/sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java b/sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java new file mode 100644 index 0000000..a015b75 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/impl/DishServiceImpl.java @@ -0,0 +1,56 @@ +package com.sky.service.impl; + +import com.sky.dto.DishDTO; +import com.sky.entity.Dish; +import com.sky.entity.DishFlavor; +import com.sky.mapper.DishFlavorMapper; +import com.sky.mapper.DishMapper; +import com.sky.service.DishService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + + +@Service +public class DishServiceImpl implements DishService { + + + @Autowired + private DishMapper dishMapper; + + + @Autowired + private DishFlavorMapper dishFlavorMapper; + + /** + * 新增菜品和对应的口味数据 + * @param dishDTO + */ + @Transactional + public void saveWithFlavor(DishDTO dishDTO) { + + Dish dish = new Dish(); + BeanUtils.copyProperties(dishDTO, dish); + + + //向菜品表插入一条数据 + dishMapper.insert(dish); + //获取insert语句生成的主键值 + Long dishId=dish.getId(); + + //向口味表插入多条数据 + List flavors = dishDTO.getFlavors(); + if (flavors != null && flavors.size() > 0) { + + flavors.forEach(dishFlavor -> { + dishFlavor.setDishId(dishId); + }); + //批量插入 而不是遍历 + dishFlavorMapper.insertBatch(flavors); + } + + } +} diff --git a/sky-server/src/main/resources/application-dev.yml b/sky-server/src/main/resources/application-dev.yml index fa4146b..84ca8d8 100644 --- a/sky-server/src/main/resources/application-dev.yml +++ b/sky-server/src/main/resources/application-dev.yml @@ -6,3 +6,9 @@ sky: database: sky_take_out username: root password: 1234 + + alioss: + endpoint: oss-cn-beijing.aliyuncs.com + access-key-id: LTAI5tPB4TemZaPXduvaV89G + access-key-secret: 0oqBHnXTw4C2bIeuVdEJCpMNvXtaB5 + bucket-name: web-tlias-901 diff --git a/sky-server/src/main/resources/application.yml b/sky-server/src/main/resources/application.yml index 24df577..f441f97 100644 --- a/sky-server/src/main/resources/application.yml +++ b/sky-server/src/main/resources/application.yml @@ -37,3 +37,12 @@ sky: admin-ttl: 7200000 # 设置前端传递过来的令牌名称 admin-token-name: token + + + +#阿里云配置 +alioss: + endpoint: ${sky.alioss.endpoint} + access-key-id: ${sky.alioss.access-key-id} + access-key-secret: ${sky.alioss.access-key-secret} + bucket-name: ${sky.alioss.bucket-name} diff --git a/sky-server/src/main/resources/mapper/DishFlavorMapper.xml b/sky-server/src/main/resources/mapper/DishFlavorMapper.xml new file mode 100644 index 0000000..2fa5ba0 --- /dev/null +++ b/sky-server/src/main/resources/mapper/DishFlavorMapper.xml @@ -0,0 +1,12 @@ + + + + + + insert into dish_flavor (dish_id, name, value) VALUES + + (#{df.dishId}, #{df.name}, #{df.value} ) + + + diff --git a/sky-server/src/main/resources/mapper/DishMapper.xml b/sky-server/src/main/resources/mapper/DishMapper.xml new file mode 100644 index 0000000..fec001a --- /dev/null +++ b/sky-server/src/main/resources/mapper/DishMapper.xml @@ -0,0 +1,12 @@ + + + + + + + insert into dish (name, category_id, price, image, description, create_time, update_time, create_user, update_user, status) + values + (#{name}, #{categoryId}, #{price}, #{image}, #{description}, #{createTime}, #{updateTime}, #{createUser}, #{updateUser}, #{status}) + +