shenzhongzheng лет назад: 2
Родитель
Сommit
f2a7283249
12 измененных файлов с 644 добавлено и 1 удалено
  1. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/DTO/BatchBuildFloorRoomDto.java
  2. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/DTO/BatchRoomsDto.java
  3. 10 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/DTO/CesRoomDelDto.java
  4. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/DTO/CesRoomSearchDto.java
  5. 9 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/DTO/CesRoomsDto.java
  6. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/Vo/CesRoomsVo.java
  7. 181 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/controller/CesRoomsController.java
  8. 131 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/entity/CesRooms.java
  9. 16 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/mapper/CesRoomsMapper.java
  10. 27 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/service/CesRoomBuildingFloorServiceImpl.java
  11. 1 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/service/CesRoomLayoutPriceServiceImpl.java
  12. 213 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/service/CesRoomsServiceImpl.java

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/DTO/BatchBuildFloorRoomDto.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.rooms.DTO;
+
+import lombok.Data;
+import org.jeecg.modules.rooms.entity.CesRooms;
+
+import java.util.List;
+
+@Data
+public class BatchBuildFloorRoomDto {
+
+       private String floorName;
+
+       private List<CesRooms> children;
+}

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/DTO/BatchRoomsDto.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.rooms.DTO;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class BatchRoomsDto {
+    private  String hotelId;
+
+    private String buildId;
+
+    List<BatchBuildFloorRoomDto> children;
+}

+ 10 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/DTO/CesRoomDelDto.java

@@ -0,0 +1,10 @@
+package org.jeecg.modules.rooms.DTO;
+
+import lombok.Data;
+
+@Data
+public class CesRoomDelDto {
+    private String idStr;
+
+    private String hotelId;
+}

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/DTO/CesRoomSearchDto.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.rooms.DTO;
+
+import lombok.Data;
+import org.jeecg.common.api.dto.BasePage;
+
+@Data
+public class CesRoomSearchDto  extends BasePage {
+     private String hotelIds;
+
+    private String buildId;
+
+    private String floorId;
+
+}

+ 9 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/DTO/CesRoomsDto.java

@@ -0,0 +1,9 @@
+package org.jeecg.modules.rooms.DTO;
+
+import lombok.Data;
+import org.jeecg.modules.rooms.entity.CesRooms;
+
+@Data
+public class CesRoomsDto extends CesRooms {
+
+}

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/Vo/CesRoomsVo.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.rooms.Vo;
+
+import lombok.Data;
+import org.jeecg.modules.rooms.entity.CesRooms;
+
+@Data
+public class CesRoomsVo extends CesRooms {
+    private String hotelName;
+
+    private String buildName;
+
+    private String floorName;
+
+}

+ 181 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/controller/CesRoomsController.java

@@ -0,0 +1,181 @@
+package org.jeecg.modules.rooms.controller;
+
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.EnumUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.jeecg.common.Enum.ResultCode;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.modules.rooms.DTO.*;
+import org.jeecg.modules.rooms.Enum.CouponEnums;
+import org.jeecg.modules.rooms.entity.CesRooms;
+import org.jeecg.modules.rooms.service.CesRoomsServiceImpl;
+import org.springframework.web.bind.annotation.*;
+
+import org.springframework.stereotype.Controller;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author fendo
+ * @since 2023-03-07
+ */
+@Api(tags="楼栋")
+@Slf4j
+@RestController
+@RequestMapping("/rooms/cesRooms")
+public class CesRoomsController {
+    @Resource
+    private CesRoomsServiceImpl roomsService;
+
+
+    @ApiOperation(value="房间分页列表查询", notes="房间分页列表查询")
+    @GetMapping(value = "/list")
+    public Result list(CesRoomSearchDto dto){
+        if(dto.getPageNo().intValue() <= 0){
+            return Result.error("页数不能小于等于0");
+        }
+        if(dto.getPageSize().intValue() < 10){
+            return Result.error("分页条数不能小于10");
+        }
+        try{
+            return  roomsService.list(dto);
+        }catch (Exception e){
+            return Result.error(e.getMessage());
+        }
+    }
+
+    /**
+     * 保存房间
+     * @param dto
+     * @return
+     */
+    @AutoLog(value = "保存房间")
+    @ApiOperation(value="save房间", notes="save")
+    @PostMapping(value = "/save")
+    public Result save(@RequestBody CesRoomsDto dto){
+        if(StringUtils.isBlank(dto.getHotelId())){
+            return Result.error(ResultCode.PARAM_MISS);
+        }
+        if(StringUtils.isBlank(dto.getBuildId())){
+            return Result.error(ResultCode.PARAM_MISS);
+        }
+        if(StringUtils.isBlank(dto.getFloorId())){
+            return Result.error(ResultCode.PARAM_MISS);
+        }
+        if(StringUtils.isBlank(dto.getName())){
+            return Result.error(ResultCode.PARAM_MISS);
+        }
+        try{
+            return  roomsService.create(dto);
+        }catch (Exception e){
+            return Result.error(e.getMessage());
+        }
+    }
+
+    @AutoLog(value = "修改房间")
+    @ApiOperation(value="修改房间", notes="修改房间")
+    @PutMapping(value = "/modify")
+    public Result modify(@RequestBody CesRoomsDto dto){
+        if(StringUtils.isBlank(dto.getId())){
+            return Result.error(ResultCode.PARAM_MISS,"数据ID必传!");
+        }
+        try{
+            return  roomsService.modify(dto);
+        }catch (Exception e){
+            return Result.error(e.getMessage());
+        }
+    }
+
+    @AutoLog(value = "删除单个房间")
+    @ApiOperation(value="删除单个房间", notes="删除单个房间")
+    @DeleteMapping(value = "/deleteOne")
+    public Result delete(@RequestParam String  id){
+        if(StringUtils.isBlank(id)){
+            return Result.error(ResultCode.PARAM_MISS,"数据ID必传!");
+        }
+        try{
+            return  roomsService.deleteOne(id);
+        }catch (Exception e){
+            return Result.error(e.getMessage());
+        }
+    }
+
+    @AutoLog(value = "批量删除房间")
+    @ApiOperation(value="批量删除房间", notes="批量删除房间")
+    @DeleteMapping(value = "/delete")
+    public Result delete(@RequestBody CesRoomDelDto dto){
+        if(StringUtils.isBlank(dto.getIdStr())){
+            return Result.error(ResultCode.PARAM_MISS,"数据IDS必传!");
+        }
+        try{
+            List<String> ids = Arrays.stream(dto.getIdStr().split(",")).collect(Collectors.toList());
+            return  roomsService.delete(ids);
+        }catch (Exception e){
+            return Result.error(e.getMessage());
+        }
+    }
+
+    @AutoLog(value = "删除所有房间")
+    @ApiOperation(value="删除所有房间", notes="删除所有房间")
+    @DeleteMapping(value = "/removeAll")
+    public Result removeAll(@RequestBody CesRoomDelDto dto){
+        if(StringUtils.isBlank(dto.getHotelId())){
+            return Result.error(ResultCode.PARAM_MISS,"酒店ID必传!");
+        }
+        try{
+            return  roomsService.removeAll(dto.getHotelId());
+        }catch (Exception e){
+            return Result.error(e.getMessage());
+        }
+    }
+
+    @AutoLog(value = "批量添加房间")
+    @ApiOperation(value="批量添加房间", notes="批量添加房间")
+    @DeleteMapping(value = "/saveBatchRoom")
+    public Result saveBatchRoom(@RequestBody BatchRoomsDto dto){
+        if(StringUtils.isBlank(dto.getHotelId())){
+            return Result.error(ResultCode.PARAM_MISS,"酒店ID必传!");
+        }
+        if(StringUtils.isBlank(dto.getBuildId())){
+            return Result.error(ResultCode.PARAM_MISS,"楼栋ID必传!");
+        }
+
+        List<BatchBuildFloorRoomDto> children = dto.getChildren();
+        if(CollectionUtil.isEmpty(children)){
+            return Result.error(ResultCode.PARAM_MISS,"楼层房间数据必传!");
+        }else{
+            //判断数据是否正确
+            for (int i = 0; i < children.size() ; i++) {
+                BatchBuildFloorRoomDto v = children.get(i);
+                if(StringUtils.isBlank(v.getFloorName())) return  Result.error("楼层名称必传!");
+                List<CesRooms> rooms = v.getChildren();
+                if(CollectionUtil.isEmpty(rooms)) return Result.error("房间数据必传!");
+                for (int j = 0; j < rooms.size(); j++) {
+                    CesRooms room = rooms.get(j);
+                    if(StringUtils.isBlank(room.getLayoutId())) return  Result.error("绑定房型必传!");
+                    if(StringUtils.isBlank(room.getName())) return Result.error("房间名称必传!");
+                 }
+            }
+        }
+        try{
+            return  roomsService.saveBatchRoom(dto);
+        }catch (Exception e){
+            return Result.error(e.getMessage());
+        }
+    }
+
+}
+

+ 131 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/entity/CesRooms.java

@@ -0,0 +1,131 @@
+package org.jeecg.modules.rooms.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author fendo
+ * @since 2023-03-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("ces_rooms")
+public class CesRooms extends Model<CesRooms> {
+
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+
+    /**
+     * 酒店ID
+     */
+    private String hotelId;
+
+    /**
+     * 楼栋ID
+     */
+    private String buildId;
+
+    /**
+     * 楼层ID
+     */
+    private String floorId;
+
+    /**
+     * 房型ID
+     */
+    private String layoutId;
+
+    /**
+     * 房间序号
+     */
+    private String name;
+
+    /**
+     * 描述
+     */
+    private String remark;
+
+    /**
+     * 排序
+     */
+    private Integer sort;
+
+    /**
+     * 封面图
+     */
+    private String cover;
+
+    /**
+     * 图片
+     */
+    private String images;
+
+    /**
+     * 状态
+     */
+    private Integer state;
+
+    /**
+     * 创建时间
+     */
+    @TableField("createAt")
+    private LocalDateTime createAt;
+
+    /**
+     * 修改时间
+     */
+    @TableField("updateAt")
+    private LocalDateTime updateAt;
+
+    /**
+     * 逻辑删除字段
+     */
+    private Boolean invalid;
+
+
+    public static final String ID = "id";
+
+    public static final String HOTEL_ID = "hotel_id";
+
+    public static final String BUILD_ID = "build_id";
+
+    public static final String FLOOR_ID = "floor_id";
+
+    public static final String LAYOUT_ID = "layout_id";
+
+    public static final String NAME = "name";
+
+    public static final String REMARK = "remark";
+
+    public static final String SORT = "sort";
+
+    public static final String COVER = "cover";
+
+    public static final String IMAGES = "images";
+
+    public static final String STATE = "state";
+
+    public static final String CREATEAT = "createAt";
+
+    public static final String UPDATEAT = "updateAt";
+
+    public static final String INVALID = "invalid";
+
+    @Override
+    public Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 16 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/mapper/CesRoomsMapper.java

@@ -0,0 +1,16 @@
+package org.jeecg.modules.rooms.mapper;
+
+import org.jeecg.modules.rooms.entity.CesRooms;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author fendo
+ * @since 2023-03-07
+ */
+public interface CesRoomsMapper extends BaseMapper<CesRooms> {
+
+}

+ 27 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/service/CesRoomBuildingFloorServiceImpl.java

@@ -7,6 +7,7 @@ import cn.hutool.core.lang.tree.TreeNode;
 import cn.hutool.core.lang.tree.TreeUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.common.api.vo.Result;
@@ -133,5 +134,31 @@ public class CesRoomBuildingFloorServiceImpl extends ServiceImpl<CesRoomBuilding
     }
 
 
+    /**
+     * 根据IDs 查询 楼栋楼层
+     * @param ids
+     * @return
+     */
+    public List<CesRoomBuildingFloor> getBuildFloorsByIds(List<String> ids){
+        if(CollectionUtil.isEmpty(ids)) return new ArrayList<>();
+
+        List<CesRoomBuildingFloor> buildingFloors = buildingFloorMapper.selectList(Wrappers.<CesRoomBuildingFloor>lambdaQuery()
+                .in(CesRoomBuildingFloor::getId, ids)
+                .eq(CesRoomBuildingFloor::getInvalid,false)
+        );
+        return buildingFloors;
+    }
+
+
+    /**
+     * 查询单个数据
+     * @param id
+     * @return
+     */
+    public CesRoomBuildingFloor getBuildFloorById(String id){
+        if(StringUtils.isBlank(id)) return null;
+        CesRoomBuildingFloor buildingFloor = buildingFloorMapper.selectById(id);
+        return buildingFloor;
+    }
 
 }

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/service/CesRoomLayoutPriceServiceImpl.java

@@ -127,7 +127,7 @@ public class CesRoomLayoutPriceServiceImpl extends ServiceImpl<CesRoomLayoutPric
         roomLayoutPrice.setUpdateAt(LocalDateTime.now());
         roomLayoutPriceMapper.updateById(roomLayoutPrice);
         if(roomLayoutPriceDto.getIsVip().intValue() == CouponEnums.TRUEORFALSE.TRUE.code()){
-            //插入 会员折扣数据
+            //修改 会员折扣数据
             List<CesRoomLayoutMemberInfoPriceDto> memberPriceEntities = roomLayoutPriceDto.getMemberPriceEntities();
             List<CesRoomLayoutMemberPrice> memberPriceList = new ArrayList<>();
             memberPriceEntities.forEach(v -> {

+ 213 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/service/CesRoomsServiceImpl.java

@@ -0,0 +1,213 @@
+package org.jeecg.modules.rooms.service;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.collections.map.HashedMap;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.business.entity.BusHotel;
+import org.jeecg.modules.business.service.impl.BusHotelServiceImpl;
+import org.jeecg.modules.rooms.DTO.BatchBuildFloorRoomDto;
+import org.jeecg.modules.rooms.DTO.BatchRoomsDto;
+import org.jeecg.modules.rooms.DTO.CesRoomSearchDto;
+import org.jeecg.modules.rooms.DTO.CesRoomsDto;
+import org.jeecg.modules.rooms.Enum.CouponEnums;
+import org.jeecg.modules.rooms.Vo.CesRoomsVo;
+import org.jeecg.modules.rooms.entity.CesRoomBuildingFloor;
+import org.jeecg.modules.rooms.entity.CesRooms;
+import org.jeecg.modules.rooms.mapper.CesRoomsMapper;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.transaction.Transactional;
+import java.time.LocalDateTime;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author fendo
+ * @since 2023-03-07
+ */
+@Service
+public class CesRoomsServiceImpl extends ServiceImpl<CesRoomsMapper, CesRooms> implements IService<CesRooms> {
+
+    @Resource
+    private  CesRoomsMapper roomsMapper;
+
+    @Resource
+    private BusHotelServiceImpl busHotelService;
+
+    @Resource
+    private  CesRoomBuildingFloorServiceImpl buildingFloorService;
+
+    /**
+     * 查询房间
+     * @param dto
+     * @return
+     */
+    public Result list(CesRoomSearchDto dto){
+
+        QueryWrapper<CesRooms> queryWrapper = new QueryWrapper<>();
+        if(!StringUtils.isBlank(dto.getBuildId())){
+            queryWrapper.eq(CesRooms.BUILD_ID,dto.getBuildId());
+        }
+        if(!StringUtils.isBlank(dto.getFloorId())){
+            queryWrapper.eq(CesRooms.FLOOR_ID,dto.getFloorId());
+        }
+        if(!StringUtils.isBlank(dto.getHotelIds())){
+           List<String> hotelIds = Arrays.stream(dto.getHotelIds().split(",")).collect(Collectors.toList());
+           queryWrapper.in(CesRooms.HOTEL_ID, hotelIds);
+        }
+        queryWrapper.eq(CesRooms.INVALID,false);
+        queryWrapper.orderByDesc(CesRooms.SORT, CesRooms.CREATEAT);
+        IPage<CesRooms> dataPage = roomsMapper.selectPage(new Page<>(dto.getPageNo().intValue(),dto.getPageSize().intValue()),queryWrapper);
+        List<CesRooms> records = dataPage.getRecords();
+        Map<String,Object> map = new HashedMap();
+
+        if(!CollectionUtil.isEmpty(records)){
+
+          List<String>  hotelIds = records.stream().map(v -> v.getHotelId()).collect(Collectors.toList());
+          List<String>  buildIds = records.stream().map(v -> v.getBuildId()).collect(Collectors.toList());
+          List<String>  floorIds = records.stream().map(v -> v.getFloorId()).collect(Collectors.toList());
+
+          List<BusHotel> busHotels = busHotelService.findHotelsByIds(hotelIds);
+          buildIds.addAll(floorIds);
+          List<CesRoomBuildingFloor> buildingFloors = buildingFloorService.getBuildFloorsByIds(buildIds);
+
+          List<CesRoomsVo> result = new ArrayList<>();
+
+          records.forEach(v -> {
+              CesRoomsVo vo = new CesRoomsVo();
+              BeanUtil.copyProperties(v,vo);
+
+              Optional<BusHotel> hotelOptional = busHotels.stream().filter(h -> h.getId().equals(v.getHotelId())).findFirst();
+              if (hotelOptional.isPresent()) vo.setHotelName(hotelOptional.get().getName());
+
+              Optional<CesRoomBuildingFloor> buildingOptional = buildingFloors.stream().filter(b -> b.getId().equals(v.getBuildId())).findFirst();
+              if (buildingOptional.isPresent()) vo.setBuildName(buildingOptional.get().getName());
+
+              Optional<CesRoomBuildingFloor> floorOptional = buildingFloors.stream().filter(b -> b.getId().equals(v.getFloorId())).findFirst();
+              if (floorOptional.isPresent()) vo.setFloorName(floorOptional.get().getName());
+
+              result.add(vo);
+          });
+           map.put("records",result);
+       }else{
+           map.put("records",records);
+       }
+        map.put("total",dataPage.getTotal());
+        return Result.OK(map);
+    }
+
+    /**
+     * 创建房间
+     * @param roomsDto
+     * @return
+     */
+    public Result create(CesRoomsDto roomsDto){
+        roomsDto.setCreateAt(LocalDateTime.now());
+        roomsDto.setSort(99);
+        roomsDto.setInvalid(false);
+        roomsDto.setUpdateAt(LocalDateTime.now());
+        roomsMapper.insert(roomsDto);
+        return Result.ok("创建成功!");
+    }
+
+
+    public Result modify(CesRoomsDto roomsDto){
+        CesRooms room = baseMapper.selectOne(Wrappers.<CesRooms>lambdaQuery().eq(CesRooms::getId, roomsDto.getId()).eq(CesRooms::getInvalid,false));
+        if(ObjectUtils.isEmpty(room)) return Result.ok("数据未找到!");
+        BeanUtil.copyProperties(roomsDto,room, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
+        room.setUpdateAt(LocalDateTime.now());
+        roomsMapper.updateById(room);
+        return Result.ok("修改成功!");
+    }
+
+    /**
+     * 前端删除一个
+     * @param id
+     * @return
+     */
+    public Result deleteOne(String id){
+       CesRooms rooms = roomsMapper.selectOne(Wrappers.<CesRooms>lambdaQuery().eq(CesRooms::getId,id).eq(CesRooms::getInvalid,false));
+       if(ObjectUtils.isEmpty(rooms)) return Result.ok("删除成功!");
+       rooms.setInvalid(true);
+       rooms.setUpdateAt(LocalDateTime.now());
+       roomsMapper.updateById(rooms);
+       return  Result.ok("删除成功!");
+    }
+
+    public Result delete(List<String> ids){
+        List<CesRooms> rooms = roomsMapper.selectBatchIds(ids);
+        if(CollectionUtil.isEmpty(rooms)) return Result.ok("删除成功!");
+        rooms.forEach(v -> {
+            v.setUpdateAt(LocalDateTime.now());
+            v.setInvalid(true);
+        });
+        saveOrUpdateBatch(rooms);
+        return Result.ok("删除成功!");
+    }
+
+
+    public Result removeAll(String hotelId){
+        List<CesRooms> rooms = roomsMapper.selectList(Wrappers.<CesRooms>lambdaQuery().eq(CesRooms::getHotelId, hotelId).eq(CesRooms::getInvalid,false));
+        if(CollectionUtil.isEmpty(rooms)) return Result.ok("删除成功!");
+        rooms.forEach(v -> {
+            v.setUpdateAt(LocalDateTime.now());
+            v.setInvalid(true);
+        });
+        saveOrUpdateBatch(rooms);
+        return Result.ok("全部删除成功!");
+    }
+
+
+    /**
+     * 批量新增楼层房间
+     * @param batchRoomsDto
+     * @return
+     */
+    @Transactional(rollbackOn = Exception.class)
+    public Result saveBatchRoom(BatchRoomsDto batchRoomsDto){
+        CesRoomBuildingFloor buildingFloor = buildingFloorService.getBuildFloorById(batchRoomsDto.getBuildId());
+        if(ObjectUtils.isEmpty(buildingFloor)) return Result.error("楼栋不正确,请重新选择!");
+        List<BatchBuildFloorRoomDto> floorRoomsList = batchRoomsDto.getChildren();
+        List<CesRooms> rooms = new ArrayList<>();
+        floorRoomsList.forEach(v -> {
+            //生成楼层数据
+            CesRoomBuildingFloor floor = new CesRoomBuildingFloor();
+            floor.setHotelId(batchRoomsDto.getHotelId());
+            floor.setParentId(buildingFloor.getId());
+            floor.setName(v.getFloorName());
+            floor.setType(CouponEnums.RoomBuildingFloorTypeEnum.FLOOR.code());
+            floor.setCreateAt(LocalDateTime.now());
+            floor.setUpdateAt(LocalDateTime.now());
+
+            buildingFloorService.save(floor);
+            List<CesRooms> roomsList = v.getChildren();
+            roomsList.forEach(room -> {
+                room.setHotelId(batchRoomsDto.getHotelId());
+                room.setBuildId(buildingFloor.getId());
+                room.setFloorId(floor.getId());
+                room.setCreateAt(LocalDateTime.now());
+                room.setUpdateAt(LocalDateTime.now());
+                rooms.add(room);
+            });
+        });
+        saveBatch(rooms);
+        return Result.ok("保存成功!");
+    }
+
+
+}