Pārlūkot izejas kodu

我的房间和邻居

tangbin 10 mēneši atpakaļ
vecāks
revīzija
0b660982c1
53 mainītis faili ar 1701 papildinājumiem un 247 dzēšanām
  1. 1 1
      yezhu-api/src/main/java/com/kioor/messageboard/entity/MessageBoardEntity.java
  2. 2 2
      yezhu-api/src/main/java/com/kioor/role/entity/UserRolesEntity.java
  3. 105 0
      yezhu-api/src/main/java/com/kioor/room/controller/ApiBuildingController.java
  4. 105 0
      yezhu-api/src/main/java/com/kioor/room/controller/ApiFloorController.java
  5. 42 16
      yezhu-api/src/main/java/com/kioor/room/controller/ApiHousingEstateController.java
  6. 135 0
      yezhu-api/src/main/java/com/kioor/room/controller/ApiRoomController.java
  7. 105 0
      yezhu-api/src/main/java/com/kioor/room/controller/ApiUnitController.java
  8. 21 21
      yezhu-api/src/main/java/com/kioor/room/controller/ApiUserHousingEstateController.java
  9. 26 0
      yezhu-api/src/main/java/com/kioor/room/dao/BuildingDao.java
  10. 26 0
      yezhu-api/src/main/java/com/kioor/room/dao/FloorDao.java
  11. 3 3
      yezhu-api/src/main/java/com/kioor/room/dao/HousingEstateDao.java
  12. 25 0
      yezhu-api/src/main/java/com/kioor/room/dao/RoomDao.java
  13. 26 0
      yezhu-api/src/main/java/com/kioor/room/dao/UnitDao.java
  14. 2 2
      yezhu-api/src/main/java/com/kioor/room/dao/UserHousingEstateDao.java
  15. 33 0
      yezhu-api/src/main/java/com/kioor/room/dto/BuildingDTO.java
  16. 36 0
      yezhu-api/src/main/java/com/kioor/room/dto/FloorDTO.java
  17. 1 3
      yezhu-api/src/main/java/com/kioor/room/dto/HousingEstateDTO.java
  18. 35 0
      yezhu-api/src/main/java/com/kioor/room/dto/HousingEstateInitDTO.java
  19. 4 6
      yezhu-api/src/main/java/com/kioor/room/dto/RoomDTO.java
  20. 73 0
      yezhu-api/src/main/java/com/kioor/room/dto/RoomDetailDTO.java
  21. 36 0
      yezhu-api/src/main/java/com/kioor/room/dto/UnitDTO.java
  22. 34 0
      yezhu-api/src/main/java/com/kioor/room/dto/UnitInfoDTO.java
  23. 14 7
      yezhu-api/src/main/java/com/kioor/room/entity/BuildingEntity.java
  24. 13 5
      yezhu-api/src/main/java/com/kioor/room/entity/FloorEntity.java
  25. 2 2
      yezhu-api/src/main/java/com/kioor/room/entity/HousingEstateEntity.java
  26. 13 4
      yezhu-api/src/main/java/com/kioor/room/entity/RoomEntity.java
  27. 16 8
      yezhu-api/src/main/java/com/kioor/room/entity/UnitEntity.java
  28. 6 6
      yezhu-api/src/main/java/com/kioor/room/entity/UserHousingEstateEntity.java
  29. 32 0
      yezhu-api/src/main/java/com/kioor/room/service/BuildingService.java
  30. 31 0
      yezhu-api/src/main/java/com/kioor/room/service/FloorService.java
  31. 45 0
      yezhu-api/src/main/java/com/kioor/room/service/HousingEstateService.java
  32. 0 31
      yezhu-api/src/main/java/com/kioor/room/service/ResidentialQuartersService.java
  33. 32 0
      yezhu-api/src/main/java/com/kioor/room/service/RoomService.java
  34. 31 0
      yezhu-api/src/main/java/com/kioor/room/service/UnitService.java
  35. 2 2
      yezhu-api/src/main/java/com/kioor/room/service/UserHousingEstateService.java
  36. 59 0
      yezhu-api/src/main/java/com/kioor/room/service/impl/BuildingServiceImpl.java
  37. 58 0
      yezhu-api/src/main/java/com/kioor/room/service/impl/FloorServiceImpl.java
  38. 204 0
      yezhu-api/src/main/java/com/kioor/room/service/impl/HousingEstateServiceImpl.java
  39. 0 98
      yezhu-api/src/main/java/com/kioor/room/service/impl/ResidentialQuartersServiceImpl.java
  40. 92 3
      yezhu-api/src/main/java/com/kioor/room/service/impl/RoomServiceImpl.java
  41. 58 0
      yezhu-api/src/main/java/com/kioor/room/service/impl/UnitServiceImpl.java
  42. 4 4
      yezhu-api/src/main/java/com/kioor/room/service/impl/UserHousingEstateServiceImpl.java
  43. 2 2
      yezhu-api/src/main/java/com/kioor/user/controller/ApiUserController.java
  44. 2 6
      yezhu-api/src/main/java/com/kioor/user/dto/UserRoomDTO.java
  45. 2 2
      yezhu-api/src/main/resources/mapper/common/SysRegionDao.xml
  46. 13 0
      yezhu-api/src/main/resources/mapper/room/BuildingDao.xml
  47. 13 0
      yezhu-api/src/main/resources/mapper/room/FloorDao.xml
  48. 3 3
      yezhu-api/src/main/resources/mapper/room/HousingEstateDao.xml
  49. 49 4
      yezhu-api/src/main/resources/mapper/room/RoomDao.xml
  50. 13 0
      yezhu-api/src/main/resources/mapper/room/UnitDao.xml
  51. 6 6
      yezhu-api/src/main/resources/mapper/room/UserQuartersDao.xml
  52. 6 0
      yezhu-common/src/main/java/com/kioor/common/service/BaseService.java
  53. 4 0
      yezhu-common/src/main/java/com/kioor/common/service/impl/BaseServiceImpl.java

+ 1 - 1
yezhu-api/src/main/java/com/kioor/messageboard/entity/MessageBoardEntity.java

@@ -30,7 +30,7 @@ public class MessageBoardEntity implements Serializable {
     /**
      * 小区
      */
-    private Long quartersId;
+    private Long housingEstateId;
     /**
      * 留言板名称
      */

+ 2 - 2
yezhu-api/src/main/java/com/kioor/role/entity/UserRolesEntity.java

@@ -20,7 +20,7 @@ import java.io.Serializable;
  * @author Mark sunlightcs@gmail.com
  */
 @Data
-@TableName("tb_user_quarters")
+@TableName("tb_user_roles")
 public class UserRolesEntity implements Serializable {
     /**
      * 用户ID
@@ -30,7 +30,7 @@ public class UserRolesEntity implements Serializable {
     /**
      * 小区
      */
-    private Long quartersId;
+    private Long housingEstateId;
     /**
      * 用户
      */

+ 105 - 0
yezhu-api/src/main/java/com/kioor/room/controller/ApiBuildingController.java

@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.controller;
+
+
+import com.kioor.annotation.Login;
+import com.kioor.common.utils.Result;
+import com.kioor.common.validator.AssertUtils;
+import com.kioor.common.validator.ValidatorUtils;
+import com.kioor.common.validator.group.AddGroup;
+import com.kioor.common.validator.group.DefaultGroup;
+import com.kioor.common.validator.group.UpdateGroup;
+import com.kioor.room.dto.BuildingDTO;
+import com.kioor.room.service.BuildingService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 楼栋
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@AllArgsConstructor
+@RestController
+@RequestMapping("/api/building")
+@Tag(name = "楼栋")
+public class ApiBuildingController {
+
+    private final BuildingService buildingService;
+
+    @Login
+    @GetMapping("list")
+    @Operation(summary = "列表")
+    @Parameters({
+            @Parameter(name = "housingEstateId", description = "小区id",required = true)
+    })
+    public Result<List<BuildingDTO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> params) {
+        if(params.get("housingEstateId") == null){
+            return new Result<List<BuildingDTO>>().error("小区不能为空");
+        }
+        List<BuildingDTO> list = buildingService.list(params);
+
+        return new Result<List<BuildingDTO>>().ok(list);
+    }
+
+    @Login
+    @Operation(summary = "信息")
+    @GetMapping("{id}")
+    public Result<BuildingDTO> info(@PathVariable("id") Long id) {
+        BuildingDTO building = buildingService.get(id);
+
+        return new Result<BuildingDTO>().ok(building);
+    }
+
+    @Login
+    @PostMapping
+    @Operation(summary = "保存")
+    public Result save(@RequestBody BuildingDTO dto, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
+        //效验数据
+        ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
+        
+        buildingService.save(dto);
+
+        return new Result();
+    }
+
+    @Login
+    @PutMapping
+    @Operation(summary = "修改")
+    public Result update(@RequestBody BuildingDTO dto, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
+        //效验数据
+        ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
+
+        buildingService.update(dto);
+
+        return new Result();
+    }
+
+    @Login
+    @DeleteMapping
+    @Operation(summary = "删除")
+    public Result delete(@RequestBody Long[] ids) {
+        //效验数据
+        AssertUtils.isArrayEmpty(ids, "id");
+
+        buildingService.deleteBatchIds(Arrays.asList(ids));
+
+        return new Result();
+    }
+
+}

+ 105 - 0
yezhu-api/src/main/java/com/kioor/room/controller/ApiFloorController.java

@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.controller;
+
+
+import com.kioor.annotation.Login;
+import com.kioor.common.utils.Result;
+import com.kioor.common.validator.AssertUtils;
+import com.kioor.common.validator.ValidatorUtils;
+import com.kioor.common.validator.group.AddGroup;
+import com.kioor.common.validator.group.DefaultGroup;
+import com.kioor.common.validator.group.UpdateGroup;
+import com.kioor.room.dto.FloorDTO;
+import com.kioor.room.service.FloorService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 楼层
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@AllArgsConstructor
+@RestController
+@RequestMapping("/api/floor")
+@Tag(name = "楼层")
+public class ApiFloorController {
+
+    private final FloorService floorService;
+
+    @Login
+    @GetMapping("list")
+    @Operation(summary = "列表")
+    @Parameters({
+            @Parameter(name = "unitId", description = "单元id",required = true)
+    })
+    public Result<List<FloorDTO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> params) {
+        if(params.get("unitId") == null){
+            return new Result<List<FloorDTO>>().error("单元不能为空");
+        }
+        List<FloorDTO> list = floorService.list(params);
+
+        return new Result<List<FloorDTO>>().ok(list);
+    }
+
+    @Login
+    @Operation(summary = "信息")
+    @GetMapping("{id}")
+    public Result<FloorDTO> info(@PathVariable("id") Long id) {
+        FloorDTO floor = floorService.get(id);
+
+        return new Result<FloorDTO>().ok(floor);
+    }
+
+    @Login
+    @PostMapping
+    @Operation(summary = "保存")
+    public Result save(@RequestBody FloorDTO dto, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
+        //效验数据
+        ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
+
+        floorService.save(dto);
+
+        return new Result();
+    }
+
+    @Login
+    @PutMapping
+    @Operation(summary = "修改")
+    public Result update(@RequestBody FloorDTO dto, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
+        //效验数据
+        ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
+
+        floorService.update(dto);
+
+        return new Result();
+    }
+
+    @Login
+    @DeleteMapping
+    @Operation(summary = "删除")
+    public Result delete(@RequestBody Long[] ids) {
+        //效验数据
+        AssertUtils.isArrayEmpty(ids, "id");
+
+        floorService.deleteBatchIds(Arrays.asList(ids));
+
+        return new Result();
+    }
+
+}

+ 42 - 16
yezhu-api/src/main/java/com/kioor/room/controller/ApiResidentialQuartersController.java → yezhu-api/src/main/java/com/kioor/room/controller/ApiHousingEstateController.java

@@ -18,8 +18,9 @@ import com.kioor.common.validator.ValidatorUtils;
 import com.kioor.common.validator.group.AddGroup;
 import com.kioor.common.validator.group.DefaultGroup;
 import com.kioor.common.validator.group.UpdateGroup;
-import com.kioor.room.dto.ResidentialQuartersDTO;
-import com.kioor.room.service.ResidentialQuartersService;
+import com.kioor.room.dto.HousingEstateDTO;
+import com.kioor.room.dto.HousingEstateInitDTO;
+import com.kioor.room.service.HousingEstateService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.Parameters;
@@ -29,6 +30,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.Arrays;
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -38,11 +40,11 @@ import java.util.Map;
  */
 @AllArgsConstructor
 @RestController
-@RequestMapping("/api/residentialquarters")
+@RequestMapping("/api/housingestate")
 @Tag(name = "小区")
-public class ApiResidentialQuartersController {
+public class ApiHousingEstateController {
 
-    private final ResidentialQuartersService residentialQuartersService;
+    private final HousingEstateService housingEstateService;
 
     @Login
     @GetMapping("page")
@@ -54,30 +56,30 @@ public class ApiResidentialQuartersController {
             @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)"),
             @Parameter(name = "name", description = "名称")
     })
-    public Result<PageData<ResidentialQuartersDTO>> page(@Parameter(hidden = true) @RequestParam Map<String, Object> params) {
-        PageData<ResidentialQuartersDTO> page = residentialQuartersService.page(params);
+    public Result<PageData<HousingEstateDTO>> page(@Parameter(hidden = true) @RequestParam Map<String, Object> params) {
+        PageData<HousingEstateDTO> page = housingEstateService.page(params);
 
-        return new Result<PageData<ResidentialQuartersDTO>>().ok(page);
+        return new Result<PageData<HousingEstateDTO>>().ok(page);
     }
 
     @Login
     @Operation(summary = "信息")
     @GetMapping("{id}")
-    public Result<ResidentialQuartersDTO> info(@PathVariable("id") Long id) {
-        ResidentialQuartersDTO residentialQuarters = residentialQuartersService.get(id);
+    public Result<HousingEstateDTO> info(@PathVariable("id") Long id) {
+        HousingEstateDTO housingEstate = housingEstateService.get(id);
 
-        return new Result<ResidentialQuartersDTO>().ok(residentialQuarters);
+        return new Result<HousingEstateDTO>().ok(housingEstate);
     }
 
     @Login
     @PostMapping
     @Operation(summary = "保存")
-    public Result save(@RequestBody ResidentialQuartersDTO dto,@Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
+    public Result save(@RequestBody HousingEstateDTO dto, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
         //效验数据
         ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
         dto.setCreateUser(userId);
         dto.setCreateDate(new Date());
-        residentialQuartersService.save(dto);
+        housingEstateService.save(dto);
 
         return new Result();
     }
@@ -85,11 +87,11 @@ public class ApiResidentialQuartersController {
     @Login
     @PutMapping
     @Operation(summary = "修改")
-    public Result update(@RequestBody ResidentialQuartersDTO dto,@Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
+    public Result update(@RequestBody HousingEstateDTO dto, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
         //效验数据
         ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
 
-        residentialQuartersService.update(dto);
+        housingEstateService.update(dto);
 
         return new Result();
     }
@@ -101,9 +103,33 @@ public class ApiResidentialQuartersController {
         //效验数据
         AssertUtils.isArrayEmpty(ids, "id");
 
-        residentialQuartersService.deleteBatchIds(Arrays.asList(ids));
+        housingEstateService.deleteBatchIds(Arrays.asList(ids));
 
         return new Result();
     }
 
+
+    @Login
+    @PostMapping("housingEstateInit")
+    @Operation(summary = "根据设置信息初始化小区房号")
+    public Result housingEstateInit(@RequestBody List<HousingEstateInitDTO> housingEstateInitDTOList, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
+        //效验数据
+        ValidatorUtils.validateEntity(housingEstateInitDTOList, AddGroup.class, DefaultGroup.class);
+
+        housingEstateService.housingEstateInit(housingEstateInitDTOList);
+
+        return new Result();
+    }
+
+    @Login
+    @DeleteMapping("cleanAll")
+    @Operation(summary = "清空小区房号")
+    public Result cleanAll(@RequestBody Long housingEstateId) {
+
+        housingEstateService.cleanAll(housingEstateId);
+
+        return new Result();
+    }
+
+
 }

+ 135 - 0
yezhu-api/src/main/java/com/kioor/room/controller/ApiRoomController.java

@@ -0,0 +1,135 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.controller;
+
+
+import com.kioor.annotation.Login;
+import com.kioor.common.utils.Result;
+import com.kioor.common.validator.AssertUtils;
+import com.kioor.common.validator.ValidatorUtils;
+import com.kioor.common.validator.group.AddGroup;
+import com.kioor.common.validator.group.DefaultGroup;
+import com.kioor.common.validator.group.UpdateGroup;
+import com.kioor.room.dto.RoomDTO;
+import com.kioor.room.dto.RoomDetailDTO;
+import com.kioor.room.service.RoomService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 房间
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@AllArgsConstructor
+@RestController
+@RequestMapping("/api/room")
+@Tag(name = "房间")
+public class ApiRoomController {
+
+    private final RoomService roomService;
+
+    @Login
+    @GetMapping("list")
+    @Operation(summary = "列表")
+    @Parameters({
+            @Parameter(name = "floorId", description = "楼层id",required = true)
+    })
+    public Result<List<RoomDTO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> params) {
+        if(params.get("floorId") == null){
+            return new Result<List<RoomDTO>>().error("楼层不能为空");
+        }
+        List<RoomDTO> list = roomService.list(params);
+
+        return new Result<List<RoomDTO>>().ok(list);
+    }
+
+    @Login
+    @GetMapping("floorList")
+    @Operation(summary = "我同楼层的房间列表")
+    public Result<List<RoomDetailDTO>> floorList(@Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
+        List<RoomDetailDTO> list = roomService.floorList(userId);
+
+        return new Result<List<RoomDetailDTO>>().ok(list);
+    }
+
+    @Login
+    @GetMapping("roomUp")
+    @Operation(summary = "我楼上的领居")
+    public Result<RoomDetailDTO> roomUp(@Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
+
+        RoomDetailDTO dto = roomService.roomUp(userId);
+
+        return new Result<RoomDetailDTO>().ok(dto);
+    }
+
+    @Login
+    @GetMapping("roomDown")
+    @Operation(summary = "我楼下的领居")
+    public Result<RoomDetailDTO> roomDown(@Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
+
+        RoomDetailDTO dto = roomService.roomDown(userId);
+
+        return new Result<RoomDetailDTO>().ok(dto);
+    }
+
+    @Login
+    @Operation(summary = "信息")
+    @GetMapping("{id}")
+    public Result<RoomDTO> info(@PathVariable("id") Long id) {
+        RoomDTO room = roomService.get(id);
+
+        return new Result<RoomDTO>().ok(room);
+    }
+
+    @Login
+    @PostMapping
+    @Operation(summary = "保存")
+    public Result save(@RequestBody RoomDTO dto, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
+        //效验数据
+        ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
+
+        roomService.save(dto);
+
+        return new Result();
+    }
+
+    @Login
+    @PutMapping
+    @Operation(summary = "修改")
+    public Result update(@RequestBody RoomDTO dto, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
+        //效验数据
+        ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
+
+        roomService.update(dto);
+
+        return new Result();
+    }
+
+    @Login
+    @DeleteMapping
+    @Operation(summary = "删除")
+    public Result delete(@RequestBody Long[] ids) {
+        //效验数据
+        AssertUtils.isArrayEmpty(ids, "id");
+
+        roomService.deleteBatchIds(Arrays.asList(ids));
+
+        return new Result();
+    }
+
+}

+ 105 - 0
yezhu-api/src/main/java/com/kioor/room/controller/ApiUnitController.java

@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.controller;
+
+
+import com.kioor.annotation.Login;
+import com.kioor.common.utils.Result;
+import com.kioor.common.validator.AssertUtils;
+import com.kioor.common.validator.ValidatorUtils;
+import com.kioor.common.validator.group.AddGroup;
+import com.kioor.common.validator.group.DefaultGroup;
+import com.kioor.common.validator.group.UpdateGroup;
+import com.kioor.room.dto.UnitDTO;
+import com.kioor.room.service.UnitService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 单元
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@AllArgsConstructor
+@RestController
+@RequestMapping("/api/unit")
+@Tag(name = "单元")
+public class ApiUnitController {
+
+    private final UnitService unitService;
+
+    @Login
+    @GetMapping("list")
+    @Operation(summary = "列表")
+    @Parameters({
+            @Parameter(name = "buildingId", description = "楼栋id",required = true)
+    })
+    public Result<List<UnitDTO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> params) {
+        if(params.get("buildingId") == null){
+            return new Result<List<UnitDTO>>().error("楼栋不能为空");
+        }
+        List<UnitDTO> list = unitService.list(params);
+
+        return new Result<List<UnitDTO>>().ok(list);
+    }
+
+    @Login
+    @Operation(summary = "信息")
+    @GetMapping("{id}")
+    public Result<UnitDTO> info(@PathVariable("id") Long id) {
+        UnitDTO unit = unitService.get(id);
+
+        return new Result<UnitDTO>().ok(unit);
+    }
+
+    @Login
+    @PostMapping
+    @Operation(summary = "保存")
+    public Result save(@RequestBody UnitDTO dto, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
+        //效验数据
+        ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
+
+        unitService.save(dto);
+
+        return new Result();
+    }
+
+    @Login
+    @PutMapping
+    @Operation(summary = "修改")
+    public Result update(@RequestBody UnitDTO dto, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
+        //效验数据
+        ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
+
+        unitService.update(dto);
+
+        return new Result();
+    }
+
+    @Login
+    @DeleteMapping
+    @Operation(summary = "删除")
+    public Result delete(@RequestBody Long[] ids) {
+        //效验数据
+        AssertUtils.isArrayEmpty(ids, "id");
+
+        unitService.deleteBatchIds(Arrays.asList(ids));
+
+        return new Result();
+    }
+
+}

+ 21 - 21
yezhu-api/src/main/java/com/kioor/room/controller/ApiUserQuartersController.java → yezhu-api/src/main/java/com/kioor/room/controller/ApiUserHousingEstateController.java

@@ -9,20 +9,19 @@
 package com.kioor.room.controller;
 
 
+import com.kioor.annotation.Login;
 import com.kioor.common.utils.Result;
 import com.kioor.common.validator.ValidatorUtils;
 import com.kioor.room.dto.RoomDTO;
-import com.kioor.room.entity.UserQuartersEntity;
+import com.kioor.room.entity.UserHousingEstateEntity;
 import com.kioor.room.service.RoomService;
-import com.kioor.room.service.UserQuartersService;
+import com.kioor.room.service.UserHousingEstateService;
 import com.kioor.user.dto.UserRoomDTO;
 import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.AllArgsConstructor;
-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;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 import java.util.Map;
@@ -34,38 +33,39 @@ import java.util.Map;
  */
 @AllArgsConstructor
 @RestController
-@RequestMapping("/api/userquarters")
+@RequestMapping("/api/useruousingestate")
 @Tag(name = "用户和房屋关系")
-public class ApiUserQuartersController {
+public class ApiUserHousingEstateController {
 
     private final RoomService roomService;
 
-    private final UserQuartersService userQuartersService;
+    private final UserHousingEstateService userHousingEstateService;
 
+    @Login
     @PostMapping()
-    @Operation(summary = "新增用户和房屋关系")
-    public Result<Map<String, Object>> addUserRoom(@RequestBody UserRoomDTO dto) {
+    @Operation(summary = "用户绑定房屋")
+    public Result<Map<String, Object>> addUserRoom(@RequestBody UserRoomDTO dto,@Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
         //表单校验
         ValidatorUtils.validateEntity(dto);
 
         //校验用户是否已经绑定有房屋
-        List<RoomDTO> roomDTOList = userQuartersService.getRoomsByUserId(dto.getUserId());
+        List<RoomDTO> roomDTOList = userHousingEstateService.getRoomsByUserId(userId);
         if(roomDTOList.size() > 0 ){
             return new Result().error("该用户已经绑定有房屋,需要绑定更多房屋请走审核流程");
         }
 
         //新增用户和房屋关系
-        UserQuartersEntity userQuartersEntity = new UserQuartersEntity();
+        UserHousingEstateEntity userHousingEstateEntity = new UserHousingEstateEntity();
         RoomDTO roomDTO = roomService.findRoomById(dto.getRoomId());
         if(roomDTO!=null){
-            userQuartersEntity.setUserId(dto.getUserId());
-            userQuartersEntity.setQuartersId(roomDTO.getQuartersId());
-            userQuartersEntity.setBuildingsId(roomDTO.getBuildingsId());
-            userQuartersEntity.setUnitsId(roomDTO.getUnitsId());
-            userQuartersEntity.setFloorId(roomDTO.getFloorId());
-            userQuartersEntity.setRoomId(roomDTO.getId());
-            userQuartersEntity.setRemark(roomDTO.getRemark());
-            userQuartersService.insert(userQuartersEntity);
+            userHousingEstateEntity.setUserId(userId);
+            userHousingEstateEntity.setHousingEstateId(roomDTO.getHousingEstateId());
+            userHousingEstateEntity.setBuildingId(roomDTO.getBuildingId());
+            userHousingEstateEntity.setUnitId(roomDTO.getUnitId());
+            userHousingEstateEntity.setFloorId(roomDTO.getFloorId());
+            userHousingEstateEntity.setRoomId(roomDTO.getId());
+            userHousingEstateEntity.setRemark(roomDTO.getRemark());
+            userHousingEstateService.insert(userHousingEstateEntity);
         }
 
         return new Result();

+ 26 - 0
yezhu-api/src/main/java/com/kioor/room/dao/BuildingDao.java

@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.dao;
+
+import com.kioor.common.dao.BaseDao;
+import com.kioor.room.entity.BuildingEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 楼栋
+ * 
+ * @author Mark sunlightcs@gmail.com
+ */
+@Mapper
+public interface BuildingDao extends BaseDao<BuildingEntity> {
+    List<BuildingEntity> getList(Map<String, Object> params);
+}

+ 26 - 0
yezhu-api/src/main/java/com/kioor/room/dao/FloorDao.java

@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.dao;
+
+import com.kioor.common.dao.BaseDao;
+import com.kioor.room.entity.FloorEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 楼层
+ * 
+ * @author Mark sunlightcs@gmail.com
+ */
+@Mapper
+public interface FloorDao extends BaseDao<FloorEntity> {
+    List<FloorEntity> getList(Map<String, Object> params);
+}

+ 3 - 3
yezhu-api/src/main/java/com/kioor/room/dao/ResidentialQuartersDao.java → yezhu-api/src/main/java/com/kioor/room/dao/HousingEstateDao.java

@@ -9,7 +9,7 @@
 package com.kioor.room.dao;
 
 import com.kioor.common.dao.BaseDao;
-import com.kioor.room.entity.ResidentialQuartersEntity;
+import com.kioor.room.entity.HousingEstateEntity;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -21,7 +21,7 @@ import java.util.Map;
  * @author Mark sunlightcs@gmail.com
  */
 @Mapper
-public interface ResidentialQuartersDao extends BaseDao<ResidentialQuartersEntity> {
+public interface HousingEstateDao extends BaseDao<HousingEstateEntity> {
 
-    List<ResidentialQuartersEntity> getList(Map<String, Object> params);
+    List<HousingEstateEntity> getList(Map<String, Object> params);
 }

+ 25 - 0
yezhu-api/src/main/java/com/kioor/room/dao/RoomDao.java

@@ -13,6 +13,9 @@ import com.kioor.room.dto.RoomDTO;
 import com.kioor.room.entity.RoomEntity;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * 房屋
  * 
@@ -20,6 +23,28 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface RoomDao extends BaseDao<RoomEntity> {
+    List<RoomEntity> getList(Map<String, Object> params);
+
+    /**
+     * 我同楼层的邻居
+     * @param userId
+     * @return
+     */
+    List<RoomEntity> floorList(Long userId);
+
+    /**
+     * 我楼上的邻居
+     * @param userId
+     * @return
+     */
+    RoomEntity roomUp(Long userId);
+
+    /**
+     * 我楼下的邻居
+     * @param userId
+     * @return
+     */
+    RoomEntity roomDown(Long userId);
     /**
      * 根据id查询房屋信息
      * @param id

+ 26 - 0
yezhu-api/src/main/java/com/kioor/room/dao/UnitDao.java

@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.dao;
+
+import com.kioor.common.dao.BaseDao;
+import com.kioor.room.entity.UnitEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 单元
+ * 
+ * @author Mark sunlightcs@gmail.com
+ */
+@Mapper
+public interface UnitDao extends BaseDao<UnitEntity> {
+    List<UnitEntity> getList(Map<String, Object> params);
+}

+ 2 - 2
yezhu-api/src/main/java/com/kioor/room/dao/UserQuartersDao.java → yezhu-api/src/main/java/com/kioor/room/dao/UserHousingEstateDao.java

@@ -10,7 +10,7 @@ package com.kioor.room.dao;
 
 import com.kioor.common.dao.BaseDao;
 import com.kioor.room.dto.RoomDTO;
-import com.kioor.room.entity.UserQuartersEntity;
+import com.kioor.room.entity.UserHousingEstateEntity;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -21,7 +21,7 @@ import java.util.List;
  * @author Mark sunlightcs@gmail.com
  */
 @Mapper
-public interface UserQuartersDao extends BaseDao<UserQuartersEntity> {
+public interface UserHousingEstateDao extends BaseDao<UserHousingEstateEntity> {
     /**
      * 查询用户已有的房屋
      * @return

+ 33 - 0
yezhu-api/src/main/java/com/kioor/room/dto/BuildingDTO.java

@@ -0,0 +1,33 @@
+/**
+ * /**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+/**
+ * 楼栋
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@Data
+@Schema(description = "楼栋")
+public class BuildingDTO {
+    @Schema(description = "id")
+    private Long id;
+
+    @Schema(description = "小区")
+    private Long housingEstateId;
+
+    @Schema(description = "楼栋号")
+    private String buildingNum;
+
+}

+ 36 - 0
yezhu-api/src/main/java/com/kioor/room/dto/FloorDTO.java

@@ -0,0 +1,36 @@
+/**
+ * /**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+/**
+ * 楼层
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@Data
+@Schema(description = "楼层")
+public class FloorDTO {
+    @Schema(description = "id")
+    private Long id;
+
+    @Schema(description = "小区")
+    private Long housingEstateId;
+
+    @Schema(description = "单元")
+    private Long unitId;
+
+    @Schema(description = "楼层号")
+    private Integer floorNum;
+
+}

+ 1 - 3
yezhu-api/src/main/java/com/kioor/room/dto/ResidentialQuartersDTO.java → yezhu-api/src/main/java/com/kioor/room/dto/HousingEstateDTO.java

@@ -10,7 +10,6 @@
 package com.kioor.room.dto;
 
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Builder;
 import lombok.Data;
 
 import java.util.Date;
@@ -22,9 +21,8 @@ import java.util.Date;
  * @author Mark sunlightcs@gmail.com
  */
 @Data
-@Builder
 @Schema(description = "小区信息")
-public class ResidentialQuartersDTO {
+public class HousingEstateDTO {
     @Schema(description = "id")
     private Long id;
 

+ 35 - 0
yezhu-api/src/main/java/com/kioor/room/dto/HousingEstateInitDTO.java

@@ -0,0 +1,35 @@
+/**
+ * /**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * 小区初始化信息
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@Data
+@Schema(description = "小区初始化信息")
+public class HousingEstateInitDTO {
+
+    @Schema(description = "小区id")
+    private Long housingEstateId;
+
+    @Schema(description = "楼栋号")
+    private String buildingNum;
+
+    @Schema(description = "单元信息")
+    private List<UnitInfoDTO> unitInfo;
+}

+ 4 - 6
yezhu-api/src/main/java/com/kioor/room/dto/RoomDTO.java

@@ -12,8 +12,6 @@ package com.kioor.room.dto;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
-import java.util.Date;
-
 
 /**
  * 房屋信息
@@ -27,13 +25,13 @@ public class RoomDTO {
     private Long id;
 
     @Schema(description = "小区")
-    private Long quartersId;
+    private Long housingEstateId;
 
     @Schema(description = "楼栋")
-    private Long buildingsId;
+    private Long buildingId;
 
     @Schema(description = "单元")
-    private Long unitsId;
+    private Long unitId;
 
     @Schema(description = "楼层")
     private Long floorId;
@@ -42,6 +40,6 @@ public class RoomDTO {
     private Integer roomNum;
 
     @Schema(description = "备注")
-    private Date remark;
+    private String remark;
 
 }

+ 73 - 0
yezhu-api/src/main/java/com/kioor/room/dto/RoomDetailDTO.java

@@ -0,0 +1,73 @@
+/**
+ * /**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+
+/**
+ * 房屋详细信息
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@Data
+@Schema(description = "房屋详细信息")
+public class RoomDetailDTO {
+    @Schema(description = "id")
+    private Long id;
+
+    @Schema(description = "小区")
+    private Long housingEstateId;
+
+    @Schema(description = "楼栋")
+    private Long buildingId;
+
+    @Schema(description = "单元")
+    private Long unitId;
+
+    @Schema(description = "楼层")
+    private Long floorId;
+
+    @Schema(description = "房号")
+    private Integer roomNum;
+
+    @Schema(description = "备注")
+    private String remark;
+
+    @Schema(description = "用户名")
+    private String username;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "等级")
+    private int level;
+
+    @Schema(description = "签名")
+    private String remarks;
+
+    @Schema(description = "是否是自己")
+    private int selfFlag;
+
+    @Schema(description = "是否对邻居展示")
+    private int openFlag;
+
+    @Schema(description = "是否禁言")
+    private int prohibitionFlag;
+
+    @Schema(description = "禁言结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") // 格式化日期时间
+    private Date prohibitionEndTime;
+
+}

+ 36 - 0
yezhu-api/src/main/java/com/kioor/room/dto/UnitDTO.java

@@ -0,0 +1,36 @@
+/**
+ * /**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+/**
+ * 单元
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@Data
+@Schema(description = "单元")
+public class UnitDTO {
+    @Schema(description = "id")
+    private Long id;
+
+    @Schema(description = "小区")
+    private Long housingEstateId;
+
+    @Schema(description = "楼栋")
+    private Long buildingId;
+
+    @Schema(description = "单元号")
+    private String unitNum;
+
+}

+ 34 - 0
yezhu-api/src/main/java/com/kioor/room/dto/UnitInfoDTO.java

@@ -0,0 +1,34 @@
+/**
+ * /**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+
+/**
+ * 单元初始化信息
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@Data
+@Schema(description = "单元初始化信息")
+public class UnitInfoDTO {
+
+    @Schema(description = "单元号")
+    private String unitNum;
+
+    @Schema(description = "层数")
+    private int floorCount;
+
+    @Schema(description = "每层户数")
+    private int apartmentPerFloor;
+
+}

+ 14 - 7
yezhu-api/src/main/java/com/kioor/room/entity/BuildingsEntity.java → yezhu-api/src/main/java/com/kioor/room/entity/BuildingEntity.java

@@ -13,7 +13,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.util.Date;
 
 /**
  * 楼栋
@@ -21,24 +20,32 @@ import java.util.Date;
  * @author Mark sunlightcs@gmail.com
  */
 @Data
-@TableName("tb_buildings")
-public class BuildingsEntity implements Serializable {
+@TableName("tb_building")
+public class BuildingEntity implements Serializable {
     /**
-     * 用户ID
+     * ID
      */
     @TableId
     private Long id;
     /**
      * 小区
      */
-    private Long quartersId;
+    private Long housingEstateId;
     /**
      * 楼栋号
      */
-    private Integer buildingsNum;
+    private String buildingNum;
     /**
      * 备注
      */
-    private Date remark;
+    private String remark;
 
+    public BuildingEntity() {
+    }
+
+    public BuildingEntity(Long id, Long housingEstateId, String buildingNum) {
+        this.id = id;
+        this.housingEstateId = housingEstateId;
+        this.buildingNum = buildingNum;
+    }
 }

+ 13 - 5
yezhu-api/src/main/java/com/kioor/room/entity/FloorEntity.java

@@ -13,7 +13,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.util.Date;
 
 /**
  * 楼层
@@ -24,18 +23,18 @@ import java.util.Date;
 @TableName("tb_floor")
 public class FloorEntity implements Serializable {
     /**
-     * 用户ID
+     * ID
      */
     @TableId
     private Long id;
     /**
      * 小区
      */
-    private Long quartersId;
+    private Long housingEstateId;
     /**
      * 单元
      */
-    private Long unitsId;
+    private Long unitId;
     /**
      * 楼层
      */
@@ -43,6 +42,15 @@ public class FloorEntity implements Serializable {
     /**
      * 备注
      */
-    private Date remark;
+    private String remark;
 
+    public FloorEntity() {
+    }
+
+    public FloorEntity(Long id, Long housingEstateId, Long unitId, Integer floorNum) {
+        this.id = id;
+        this.housingEstateId = housingEstateId;
+        this.unitId = unitId;
+        this.floorNum = floorNum;
+    }
 }

+ 2 - 2
yezhu-api/src/main/java/com/kioor/room/entity/ResidentialQuartersEntity.java → yezhu-api/src/main/java/com/kioor/room/entity/HousingEstateEntity.java

@@ -21,8 +21,8 @@ import java.util.Date;
  * @author Mark sunlightcs@gmail.com
  */
 @Data
-@TableName("tb_residential_quarters")
-public class ResidentialQuartersEntity implements Serializable {
+@TableName("tb_housing_estate")
+public class HousingEstateEntity implements Serializable {
     /**
      * 用户ID
      */

+ 13 - 4
yezhu-api/src/main/java/com/kioor/room/entity/RoomEntity.java

@@ -13,7 +13,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.util.Date;
 
 /**
  * 房间
@@ -24,14 +23,14 @@ import java.util.Date;
 @TableName("tb_room")
 public class RoomEntity implements Serializable {
     /**
-     * 用户ID
+     * ID
      */
     @TableId
     private Long id;
     /**
      * 小区
      */
-    private Long quartersId;
+    private Long housingEstateId;
     /**
      * 楼层
      */
@@ -43,6 +42,16 @@ public class RoomEntity implements Serializable {
     /**
      * 备注
      */
-    private Date remark;
+    private String remark;
 
+    public RoomEntity() {
+    }
+
+    public RoomEntity(Long id, Long housingEstateId, Long floorId, Integer roomNum, String remark) {
+        this.id = id;
+        this.housingEstateId = housingEstateId;
+        this.floorId = floorId;
+        this.roomNum = roomNum;
+        this.remark = remark;
+    }
 }

+ 16 - 8
yezhu-api/src/main/java/com/kioor/room/entity/UnitsEntity.java → yezhu-api/src/main/java/com/kioor/room/entity/UnitEntity.java

@@ -13,7 +13,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.util.Date;
 
 /**
  * 单元
@@ -21,28 +20,37 @@ import java.util.Date;
  * @author Mark sunlightcs@gmail.com
  */
 @Data
-@TableName("tb_units")
-public class UnitsEntity implements Serializable {
+@TableName("tb_unit")
+public class UnitEntity implements Serializable {
     /**
-     * 用户ID
+     * ID
      */
     @TableId
     private Long id;
     /**
      * 小区
      */
-    private Long quartersId;
+    private Long housingEstateId;
     /**
      * 楼栋
      */
-    private Long buildingsId;
+    private Long buildingId;
     /**
      * 单元号
      */
-    private Integer unitsNum;
+    private String unitNum;
     /**
      * 备注
      */
-    private Date remark;
+    private String remark;
 
+    public UnitEntity() {
+    }
+
+    public UnitEntity(Long id,Long housingEstateId, Long buildingId, String unitNum) {
+        this.id = id;
+        this.housingEstateId = housingEstateId;
+        this.buildingId = buildingId;
+        this.unitNum = unitNum;
+    }
 }

+ 6 - 6
yezhu-api/src/main/java/com/kioor/room/entity/UserQuartersEntity.java → yezhu-api/src/main/java/com/kioor/room/entity/UserHousingEstateEntity.java

@@ -21,8 +21,8 @@ import java.util.Date;
  * @author Mark sunlightcs@gmail.com
  */
 @Data
-@TableName("tb_user_quarters")
-public class UserQuartersEntity implements Serializable {
+@TableName("tb_user_housing_estate")
+public class UserHousingEstateEntity implements Serializable {
     /**
      * 用户ID
      */
@@ -35,15 +35,15 @@ public class UserQuartersEntity implements Serializable {
     /**
      * 小区
      */
-    private Long quartersId;
+    private Long housingEstateId;
     /**
      * 楼栋
      */
-    private Long buildingsId;
+    private Long buildingId;
     /**
      * 单元
      */
-    private Long unitsId;
+    private Long unitId;
     /**
      * 楼层
      */
@@ -55,6 +55,6 @@ public class UserQuartersEntity implements Serializable {
     /**
      * 备注
      */
-    private Date remark;
+    private String remark;
 
 }

+ 32 - 0
yezhu-api/src/main/java/com/kioor/room/service/BuildingService.java

@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.service;
+
+import com.kioor.common.service.BaseService;
+import com.kioor.room.dto.BuildingDTO;
+import com.kioor.room.entity.BuildingEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 楼栋
+ * 
+ * @author Mark sunlightcs@gmail.com
+ */
+public interface BuildingService extends BaseService<BuildingEntity> {
+    List<BuildingDTO> list(Map<String, Object> params);
+
+    BuildingDTO get(Long id);
+
+    void save(BuildingDTO dto);
+
+    void update(BuildingDTO dto);
+
+}

+ 31 - 0
yezhu-api/src/main/java/com/kioor/room/service/FloorService.java

@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.service;
+
+import com.kioor.common.service.BaseService;
+import com.kioor.room.dto.FloorDTO;
+import com.kioor.room.entity.FloorEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 楼层
+ * 
+ * @author Mark sunlightcs@gmail.com
+ */
+public interface FloorService extends BaseService<FloorEntity> {
+    List<FloorDTO> list(Map<String, Object> params);
+
+    FloorDTO get(Long id);
+
+    void save(FloorDTO dto);
+
+    void update(FloorDTO dto);
+}

+ 45 - 0
yezhu-api/src/main/java/com/kioor/room/service/HousingEstateService.java

@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.service;
+
+import com.kioor.common.page.PageData;
+import com.kioor.common.service.BaseService;
+import com.kioor.room.dto.HousingEstateDTO;
+import com.kioor.room.dto.HousingEstateInitDTO;
+import com.kioor.room.entity.HousingEstateEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 小区
+ * 
+ * @author Mark sunlightcs@gmail.com
+ */
+public interface HousingEstateService extends BaseService<HousingEstateEntity> {
+    PageData<HousingEstateDTO> page(Map<String, Object> params);
+
+    HousingEstateDTO get(Long id);
+
+    void save(HousingEstateDTO dto);
+
+    void update(HousingEstateDTO dto);
+
+    /**
+     * 初始化小区信息
+     * @param housingEstateInitDTOList
+     */
+    void housingEstateInit(List<HousingEstateInitDTO> housingEstateInitDTOList);
+
+    /**
+     * 清空小区房号
+     * @param housingEstateId
+     */
+    void cleanAll(Long housingEstateId);
+}

+ 0 - 31
yezhu-api/src/main/java/com/kioor/room/service/ResidentialQuartersService.java

@@ -1,31 +0,0 @@
-/**
- * Copyright (c) 2018 业主系统 All rights reserved.
- *
- * https://www.yezhu.io
- *
- * 版权所有,侵权必究!
- */
-
-package com.kioor.room.service;
-
-import com.kioor.common.page.PageData;
-import com.kioor.common.service.BaseService;
-import com.kioor.room.dto.ResidentialQuartersDTO;
-import com.kioor.room.entity.ResidentialQuartersEntity;
-
-import java.util.Map;
-
-/**
- * 小区
- * 
- * @author Mark sunlightcs@gmail.com
- */
-public interface ResidentialQuartersService extends BaseService<ResidentialQuartersEntity> {
-    PageData<ResidentialQuartersDTO> page(Map<String, Object> params);
-
-    ResidentialQuartersDTO get(Long id);
-
-    void save(ResidentialQuartersDTO dto);
-
-    void update(ResidentialQuartersDTO dto);
-}

+ 32 - 0
yezhu-api/src/main/java/com/kioor/room/service/RoomService.java

@@ -10,14 +10,46 @@ package com.kioor.room.service;
 
 import com.kioor.common.service.BaseService;
 import com.kioor.room.dto.RoomDTO;
+import com.kioor.room.dto.RoomDetailDTO;
 import com.kioor.room.entity.RoomEntity;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * 房屋
  * 
  * @author Mark sunlightcs@gmail.com
  */
 public interface RoomService extends BaseService<RoomEntity> {
+    List<RoomDTO> list(Map<String, Object> params);
+
+    /**
+     * 同楼层房间列表
+     * @param userId
+     * @return
+     */
+    List<RoomDetailDTO> floorList(Long userId);
+
+    /**
+     * 我楼上的邻居
+     * @param userId
+     * @return
+     */
+    RoomDetailDTO roomUp(Long userId);
+
+    /**
+     * 我楼下的邻居
+     * @param userId
+     * @return
+     */
+    RoomDetailDTO roomDown(Long userId);
+
+    RoomDTO get(Long id);
+
+    void save(RoomDTO dto);
+
+    void update(RoomDTO dto);
 
     /**
      * 根据id查询房屋信息

+ 31 - 0
yezhu-api/src/main/java/com/kioor/room/service/UnitService.java

@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.service;
+
+import com.kioor.common.service.BaseService;
+import com.kioor.room.dto.UnitDTO;
+import com.kioor.room.entity.UnitEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 单元
+ * 
+ * @author Mark sunlightcs@gmail.com
+ */
+public interface UnitService extends BaseService<UnitEntity> {
+    List<UnitDTO> list(Map<String, Object> params);
+
+    UnitDTO get(Long id);
+
+    void save(UnitDTO dto);
+
+    void update(UnitDTO dto);
+}

+ 2 - 2
yezhu-api/src/main/java/com/kioor/room/service/UserQuartersService.java → yezhu-api/src/main/java/com/kioor/room/service/UserHousingEstateService.java

@@ -10,7 +10,7 @@ package com.kioor.room.service;
 
 import com.kioor.common.service.BaseService;
 import com.kioor.room.dto.RoomDTO;
-import com.kioor.room.entity.UserQuartersEntity;
+import com.kioor.room.entity.UserHousingEstateEntity;
 
 import java.util.List;
 
@@ -19,7 +19,7 @@ import java.util.List;
  * 
  * @author Mark sunlightcs@gmail.com
  */
-public interface UserQuartersService extends BaseService<UserQuartersEntity> {
+public interface UserHousingEstateService extends BaseService<UserHousingEstateEntity> {
     /**
      * 查询用户已有的房屋
      * @return

+ 59 - 0
yezhu-api/src/main/java/com/kioor/room/service/impl/BuildingServiceImpl.java

@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.service.impl;
+
+import com.kioor.common.service.impl.BaseServiceImpl;
+import com.kioor.common.utils.ConvertUtils;
+import com.kioor.room.dao.BuildingDao;
+import com.kioor.room.dto.BuildingDTO;
+import com.kioor.room.entity.BuildingEntity;
+import com.kioor.room.service.BuildingService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+@Service
+@AllArgsConstructor
+public class BuildingServiceImpl extends BaseServiceImpl<BuildingDao, BuildingEntity> implements BuildingService {
+
+    @Override
+    public List<BuildingDTO> list(Map<String, Object> params) {
+
+        //查询
+        List<BuildingEntity> list = baseDao.getList(params);
+
+        //list复制到dto
+        List<BuildingDTO> listDto = ConvertUtils.sourceToTarget(list, BuildingDTO.class);
+
+        return listDto;
+    }
+
+    @Override
+    public BuildingDTO get(Long id) {
+        BuildingEntity entity = baseDao.selectById(id);
+
+        BuildingDTO dto = ConvertUtils.sourceToTarget(entity, BuildingDTO.class);
+        return dto;
+    }
+
+    @Override
+    public void save(BuildingDTO dto) {
+        BuildingEntity entity =  ConvertUtils.sourceToTarget(dto, BuildingEntity.class);
+        insert(entity);
+    }
+
+    @Override
+    public void update(BuildingDTO dto) {
+        BuildingEntity entity = ConvertUtils.sourceToTarget(dto, BuildingEntity.class);
+
+        updateById(entity);
+    }
+}

+ 58 - 0
yezhu-api/src/main/java/com/kioor/room/service/impl/FloorServiceImpl.java

@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.service.impl;
+
+import com.kioor.common.service.impl.BaseServiceImpl;
+import com.kioor.common.utils.ConvertUtils;
+import com.kioor.room.dao.FloorDao;
+import com.kioor.room.dto.FloorDTO;
+import com.kioor.room.entity.FloorEntity;
+import com.kioor.room.service.FloorService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+@Service
+@AllArgsConstructor
+public class FloorServiceImpl extends BaseServiceImpl<FloorDao, FloorEntity> implements FloorService {
+    @Override
+    public List<FloorDTO> list(Map<String, Object> params) {
+
+        //查询
+        List<FloorEntity> list = baseDao.getList(params);
+
+        //list复制到dto
+        List<FloorDTO> listDto = ConvertUtils.sourceToTarget(list, FloorDTO.class);
+
+        return listDto;
+    }
+
+    @Override
+    public FloorDTO get(Long id) {
+        FloorEntity entity = baseDao.selectById(id);
+
+        FloorDTO dto = ConvertUtils.sourceToTarget(entity, FloorDTO.class);
+        return dto;
+    }
+
+    @Override
+    public void save(FloorDTO dto) {
+        FloorEntity entity =  ConvertUtils.sourceToTarget(dto, FloorEntity.class);
+        insert(entity);
+    }
+
+    @Override
+    public void update(FloorDTO dto) {
+        FloorEntity entity = ConvertUtils.sourceToTarget(dto, FloorEntity.class);
+
+        updateById(entity);
+    }
+}

+ 204 - 0
yezhu-api/src/main/java/com/kioor/room/service/impl/HousingEstateServiceImpl.java

@@ -0,0 +1,204 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.kioor.common.constant.Constant;
+import com.kioor.common.dto.SysRegionDTO;
+import com.kioor.common.page.PageData;
+import com.kioor.common.service.SysRegionService;
+import com.kioor.common.service.impl.BaseServiceImpl;
+import com.kioor.common.utils.ConvertUtils;
+import com.kioor.room.dao.HousingEstateDao;
+import com.kioor.room.dto.HousingEstateDTO;
+import com.kioor.room.dto.HousingEstateInitDTO;
+import com.kioor.room.dto.UnitInfoDTO;
+import com.kioor.room.entity.*;
+import com.kioor.room.service.*;
+import com.kioor.user.service.UserService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+@AllArgsConstructor
+public class HousingEstateServiceImpl extends BaseServiceImpl<HousingEstateDao, HousingEstateEntity> implements HousingEstateService {
+
+    private final UserService userService;
+
+    private final SysRegionService sysRegionService;
+
+    private final BuildingService buildingService;
+
+    private final UnitService unitService;
+
+    private final FloorService floorService;
+
+    private final RoomService roomService;
+
+    private static final int BATCH_SIZE = 100; // 批量处理大小,根据实际情况调整
+
+    /**
+     * 分页
+     */
+    @Override
+    public PageData<HousingEstateDTO> page(Map<String, Object> params) {
+        paramsToLike(params, "name");
+
+        //分页
+        IPage<HousingEstateEntity> page = getPage(params, Constant.CREATE_DATE, false);
+
+        //查询
+        List<HousingEstateEntity> list = baseDao.getList(params);
+
+        List<HousingEstateDTO> dtoList = new ArrayList<>();
+        for (HousingEstateEntity entity : list) {
+            HousingEstateDTO dto = ConvertUtils.sourceToTarget(entity, HousingEstateDTO.class);
+            //省市区
+            SysRegionDTO sysRegionDTO = sysRegionService.get(dto.getRegionId());
+            if(sysRegionDTO!=null){
+                //区
+                dto.setRegionStr(sysRegionDTO.getName());
+                //市
+                if(sysRegionDTO.getPid()!=null){
+                    dto.setCityId(sysRegionDTO.getPid());
+                    dto.setCityStr(sysRegionDTO.getParentName());
+                    SysRegionDTO parentSysRegionDTO = sysRegionService.get(sysRegionDTO.getPid());
+                    if(parentSysRegionDTO!=null){
+                        //省
+                        dto.setProvinceId(parentSysRegionDTO.getPid());
+                        dto.setProvinceStr(parentSysRegionDTO.getParentName());
+                    }
+                }
+            }
+            //创建人名字
+            dto.setCreateUserName(userService.getUserByUserId(dto.getCreateUser()).getUsername());
+            dtoList.add(dto);
+        }
+
+        return getPageData(dtoList, page.getTotal(), HousingEstateDTO.class);
+    }
+    @Override
+    public HousingEstateDTO get(Long id) {
+        HousingEstateEntity entity = baseDao.selectById(id);
+
+        HousingEstateDTO dto = ConvertUtils.sourceToTarget(entity, HousingEstateDTO.class);
+        //省市区
+        SysRegionDTO sysRegionDTO = sysRegionService.get(dto.getRegionId());
+        if(sysRegionDTO!=null){
+            //区
+            dto.setRegionStr(sysRegionDTO.getName());
+            //市
+            if(sysRegionDTO.getPid()!=null){
+                dto.setCityId(sysRegionDTO.getPid());
+                dto.setCityStr(sysRegionDTO.getParentName());
+                SysRegionDTO parentSysRegionDTO = sysRegionService.get(sysRegionDTO.getPid());
+                if(parentSysRegionDTO!=null){
+                    //省
+                    dto.setProvinceId(parentSysRegionDTO.getPid());
+                    dto.setProvinceStr(parentSysRegionDTO.getParentName());
+                }
+            }
+        }
+        //创建人名字
+        dto.setCreateUserName(userService.getUserByUserId(dto.getCreateUser()).getUsername());
+        return dto;
+    }
+
+    @Override
+    public void save(HousingEstateDTO dto) {
+        HousingEstateEntity entity = ConvertUtils.sourceToTarget(dto, HousingEstateEntity.class);
+        insert(entity);
+    }
+
+    @Override
+    public void update(HousingEstateDTO dto) {
+        HousingEstateEntity entity = ConvertUtils.sourceToTarget(dto, HousingEstateEntity.class);
+
+        updateById(entity);
+    }
+
+    /**
+     * 初始化小区信息
+     * @param housingEstateInitDTOList
+     */
+    @Override
+    public void housingEstateInit(List<HousingEstateInitDTO> housingEstateInitDTOList) {
+        Map<Long, BuildingEntity> buildingsMap = new HashMap<>();
+        Map<Long, UnitEntity> unitsMap = new HashMap<>();
+        List<FloorEntity> floorsList = new ArrayList<>();
+        List<RoomEntity> roomsList = new ArrayList<>();
+
+        for (HousingEstateInitDTO estateInit : housingEstateInitDTOList) {
+            Long housingEstateId = estateInit.getHousingEstateId();
+            String buildingNum = estateInit.getBuildingNum();
+            Long buildingId = IdWorker.getId();
+            BuildingEntity buildingEntity = buildingsMap.computeIfAbsent(buildingId,
+                    k -> new BuildingEntity(buildingId,housingEstateId, buildingNum));
+
+            for (UnitInfoDTO unitInfo : estateInit.getUnitInfo()) {
+                String unitNum = unitInfo.getUnitNum();
+                int floorCount = unitInfo.getFloorCount();
+                int apartmentPerFloor = unitInfo.getApartmentPerFloor();
+                Long unitId = IdWorker.getId();
+                UnitEntity unitEntity = unitsMap.computeIfAbsent(unitId,
+                        k -> new UnitEntity(IdWorker.getId(),housingEstateId, buildingEntity.getId(), unitNum));
+
+                for (int floor = 1; floor <= floorCount; floor++) {
+                    FloorEntity floorEntity = new FloorEntity(IdWorker.getId(),housingEstateId, unitEntity.getId(), floor);
+                    floorsList.add(floorEntity);
+
+                    for (int apartment = 1; apartment <= apartmentPerFloor; apartment++) {
+                        RoomEntity roomEntity = new RoomEntity(IdWorker.getId(),housingEstateId, floorEntity.getId(), apartment, buildingNum + "-" + unitNum + "-" + floor + String.format("%02d", apartment));
+                        roomsList.add(roomEntity);
+
+                        // 检查是否需要批量保存房间
+                        if (roomsList.size() >= BATCH_SIZE) {
+                            roomService.insertBatch(roomsList);
+                            roomsList.clear();
+                        }
+                    }
+                }
+            }
+        }
+
+        // 批量保存剩余的房间
+        if (!roomsList.isEmpty()) {
+            roomService.insertBatch(roomsList);
+        }
+
+        // 批量保存楼栋、单元和楼层(如果有必要的话,应先检查是否有新增数据)
+        for (BuildingEntity building : buildingsMap.values()) {
+            buildingService.insertBatch(Collections.singletonList(building));
+        }
+        for (UnitEntity unit : unitsMap.values()) {
+            unitService.insertBatch(Collections.singletonList(unit));
+        }
+        if (!floorsList.isEmpty()) {
+            floorService.insertBatch(floorsList);
+        }
+    }
+
+    /**
+     * 清空小区房号
+     *
+     * @param housingEstateId
+     */
+    @Override
+    public void cleanAll(Long housingEstateId) {
+        roomService.delete(new LambdaQueryWrapper<RoomEntity>().eq(RoomEntity::getHousingEstateId, housingEstateId));
+        floorService.delete(new LambdaQueryWrapper<FloorEntity>().eq(FloorEntity::getHousingEstateId, housingEstateId));
+        unitService.delete(new LambdaQueryWrapper<UnitEntity>().eq(UnitEntity::getHousingEstateId, housingEstateId));
+        buildingService.delete(new LambdaQueryWrapper<BuildingEntity>().eq(BuildingEntity::getHousingEstateId, housingEstateId));
+    }
+
+}

+ 0 - 98
yezhu-api/src/main/java/com/kioor/room/service/impl/ResidentialQuartersServiceImpl.java

@@ -1,98 +0,0 @@
-/**
- * Copyright (c) 2018 业主系统 All rights reserved.
- * <p>
- * https://www.yezhu.io
- * <p>
- * 版权所有,侵权必究!
- */
-
-package com.kioor.room.service.impl;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.kioor.common.constant.Constant;
-import com.kioor.common.dto.SysRegionDTO;
-import com.kioor.common.page.PageData;
-import com.kioor.common.service.SysRegionService;
-import com.kioor.common.service.impl.BaseServiceImpl;
-import com.kioor.common.utils.ConvertUtils;
-import com.kioor.room.dao.ResidentialQuartersDao;
-import com.kioor.room.dto.ResidentialQuartersDTO;
-import com.kioor.room.entity.ResidentialQuartersEntity;
-import com.kioor.room.service.ResidentialQuartersService;
-import com.kioor.user.service.UserService;
-import lombok.AllArgsConstructor;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-@Service
-@AllArgsConstructor
-public class ResidentialQuartersServiceImpl extends BaseServiceImpl<ResidentialQuartersDao, ResidentialQuartersEntity> implements ResidentialQuartersService {
-
-    private final UserService userService;
-
-    private final SysRegionService sysRegionService;
-
-    /**
-     * 分页
-     */
-    @Override
-    public PageData<ResidentialQuartersDTO> page(Map<String, Object> params) {
-        paramsToLike(params, "name");
-
-        //分页
-        IPage<ResidentialQuartersEntity> page = getPage(params, Constant.CREATE_DATE, false);
-
-        //查询
-        List<ResidentialQuartersEntity> list = baseDao.getList(params);
-
-        List<ResidentialQuartersDTO> dtoList = new ArrayList<>();
-        for (ResidentialQuartersEntity entity : list) {
-            ResidentialQuartersDTO dto = ConvertUtils.sourceToTarget(entity, ResidentialQuartersDTO.class);
-            //省市区
-            SysRegionDTO sysRegionDTO = sysRegionService.get(dto.getRegionId());
-            if(sysRegionDTO!=null){
-                //区
-                dto.setRegionStr(sysRegionDTO.getName());
-                //市
-                if(sysRegionDTO.getPid()!=null){
-                    dto.setCityId(sysRegionDTO.getPid());
-                    dto.setCityStr(sysRegionDTO.getParentName());
-                    SysRegionDTO parentSysRegionDTO = sysRegionService.get(sysRegionDTO.getPid());
-                    if(parentSysRegionDTO!=null){
-                        //省
-                        dto.setProvinceId(parentSysRegionDTO.getPid());
-                        dto.setProvinceStr(parentSysRegionDTO.getParentName());
-                    }
-                }
-            }
-            //创建人名字
-            dto.setCreateUserName(userService.getUserByUserId(dto.getCreateUser()).getUsername());
-            dtoList.add(dto);
-        }
-
-        return getPageData(dtoList, page.getTotal(), ResidentialQuartersDTO.class);
-    }
-    @Override
-    public ResidentialQuartersDTO get(Long id) {
-        ResidentialQuartersEntity entity = baseDao.selectById(id);
-
-        return ConvertUtils.sourceToTarget(entity, ResidentialQuartersDTO.class);
-    }
-
-    @Override
-    public void save(ResidentialQuartersDTO dto) {
-        ResidentialQuartersEntity entity = ConvertUtils.sourceToTarget(dto, ResidentialQuartersEntity.class);
-        insert(entity);
-    }
-
-    @Override
-    public void update(ResidentialQuartersDTO dto) {
-        ResidentialQuartersEntity entity = ConvertUtils.sourceToTarget(dto, ResidentialQuartersEntity.class);
-
-        updateById(entity);
-    }
-
-}

+ 92 - 3
yezhu-api/src/main/java/com/kioor/room/service/impl/RoomServiceImpl.java

@@ -9,18 +9,106 @@
 package com.kioor.room.service.impl;
 
 import com.kioor.common.service.impl.BaseServiceImpl;
+import com.kioor.common.utils.ConvertUtils;
 import com.kioor.room.dao.RoomDao;
 import com.kioor.room.dto.RoomDTO;
+import com.kioor.room.dto.RoomDetailDTO;
 import com.kioor.room.entity.RoomEntity;
 import com.kioor.room.service.RoomService;
-import com.kioor.user.service.TokenService;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Map;
+
 @Service
 @AllArgsConstructor
 public class RoomServiceImpl extends BaseServiceImpl<RoomDao, RoomEntity> implements RoomService {
-    private final TokenService tokenService;
+
+    @Override
+    public List<RoomDTO> list(Map<String, Object> params) {
+
+        //查询
+        List<RoomEntity> list = baseDao.getList(params);
+
+        //list复制到dto
+        List<RoomDTO> listDto = ConvertUtils.sourceToTarget(list, RoomDTO.class);
+
+        return listDto;
+    }
+
+    /**
+     * 同楼层房间列表
+     *
+     * @param userId
+     * @return
+     */
+    @Override
+    public List<RoomDetailDTO> floorList(Long userId) {
+        //查询
+        List<RoomEntity> list = baseDao.floorList(userId);
+
+        //list复制到dto
+        List<RoomDetailDTO> listDto = ConvertUtils.sourceToTarget(list, RoomDetailDTO.class);
+
+        return listDto;
+    }
+
+    /**
+     * 我楼上的邻居
+     *
+     * @param userId
+     * @return
+     */
+    @Override
+    public RoomDetailDTO roomUp(Long userId) {
+        //查询
+        RoomEntity entity = baseDao.roomUp(userId);
+
+        //list复制到dto
+        RoomDetailDTO dto = ConvertUtils.sourceToTarget(entity, RoomDetailDTO.class);
+
+        return dto;
+    }
+
+    /**
+     * 我楼下的邻居
+     *
+     * @param userId
+     * @return
+     */
+    @Override
+    public RoomDetailDTO roomDown(Long userId) {
+        //查询
+        RoomEntity entity = baseDao.roomDown(userId);
+
+        //list复制到dto
+        RoomDetailDTO dto = ConvertUtils.sourceToTarget(entity, RoomDetailDTO.class);
+
+        return dto;
+    }
+
+
+    @Override
+    public RoomDTO get(Long id) {
+        RoomEntity entity = baseDao.selectById(id);
+
+        RoomDTO dto = ConvertUtils.sourceToTarget(entity, RoomDTO.class);
+        return dto;
+    }
+
+    @Override
+    public void save(RoomDTO dto) {
+        RoomEntity entity =  ConvertUtils.sourceToTarget(dto, RoomEntity.class);
+        insert(entity);
+    }
+
+    @Override
+    public void update(RoomDTO dto) {
+        RoomEntity entity = ConvertUtils.sourceToTarget(dto, RoomEntity.class);
+
+        updateById(entity);
+    }
 
     /**
      * 根据id查询房屋信息
@@ -29,6 +117,7 @@ public class RoomServiceImpl extends BaseServiceImpl<RoomDao, RoomEntity> implem
      */
     @Override
     public RoomDTO findRoomById(Long id) {
-        return null;
+        return baseDao.findRoomById(id);
     }
+
 }

+ 58 - 0
yezhu-api/src/main/java/com/kioor/room/service/impl/UnitServiceImpl.java

@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.room.service.impl;
+
+import com.kioor.common.service.impl.BaseServiceImpl;
+import com.kioor.common.utils.ConvertUtils;
+import com.kioor.room.dao.UnitDao;
+import com.kioor.room.dto.UnitDTO;
+import com.kioor.room.entity.UnitEntity;
+import com.kioor.room.service.UnitService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+@Service
+@AllArgsConstructor
+public class UnitServiceImpl extends BaseServiceImpl<UnitDao, UnitEntity> implements UnitService {
+    @Override
+    public List<UnitDTO> list(Map<String, Object> params) {
+
+        //查询
+        List<UnitEntity> list = baseDao.getList(params);
+
+        //list复制到dto
+        List<UnitDTO> listDto = ConvertUtils.sourceToTarget(list, UnitDTO.class);
+
+        return listDto;
+    }
+
+    @Override
+    public UnitDTO get(Long id) {
+        UnitEntity entity = baseDao.selectById(id);
+
+        UnitDTO dto = ConvertUtils.sourceToTarget(entity, UnitDTO.class);
+        return dto;
+    }
+
+    @Override
+    public void save(UnitDTO dto) {
+        UnitEntity entity =  ConvertUtils.sourceToTarget(dto, UnitEntity.class);
+        insert(entity);
+    }
+
+    @Override
+    public void update(UnitDTO dto) {
+        UnitEntity entity = ConvertUtils.sourceToTarget(dto, UnitEntity.class);
+
+        updateById(entity);
+    }
+}

+ 4 - 4
yezhu-api/src/main/java/com/kioor/room/service/impl/UserQuartersServiceImpl.java → yezhu-api/src/main/java/com/kioor/room/service/impl/UserHousingEstateServiceImpl.java

@@ -9,10 +9,10 @@
 package com.kioor.room.service.impl;
 
 import com.kioor.common.service.impl.BaseServiceImpl;
-import com.kioor.room.dao.UserQuartersDao;
+import com.kioor.room.dao.UserHousingEstateDao;
 import com.kioor.room.dto.RoomDTO;
-import com.kioor.room.entity.UserQuartersEntity;
-import com.kioor.room.service.UserQuartersService;
+import com.kioor.room.entity.UserHousingEstateEntity;
+import com.kioor.room.service.UserHousingEstateService;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
@@ -20,7 +20,7 @@ import java.util.List;
 
 @Service
 @AllArgsConstructor
-public class UserQuartersServiceImpl extends BaseServiceImpl<UserQuartersDao, UserQuartersEntity> implements UserQuartersService {
+public class UserHousingEstateServiceImpl extends BaseServiceImpl<UserHousingEstateDao, UserHousingEstateEntity> implements UserHousingEstateService {
 
     /**
      * 查询用户已有的房屋

+ 2 - 2
yezhu-api/src/main/java/com/kioor/user/controller/ApiUserController.java

@@ -13,7 +13,7 @@ import com.kioor.annotation.Login;
 import com.kioor.common.utils.Result;
 import com.kioor.common.validator.ValidatorUtils;
 import com.kioor.room.service.RoomService;
-import com.kioor.room.service.UserQuartersService;
+import com.kioor.room.service.UserHousingEstateService;
 import com.kioor.user.dto.UserDTO;
 import com.kioor.user.entity.UserEntity;
 import com.kioor.user.service.UserService;
@@ -39,7 +39,7 @@ public class ApiUserController {
 
     private final RoomService roomService;
 
-    private final UserQuartersService userQuartersService;
+    private final UserHousingEstateService userHousingEstateService;
 
     @Login
     @PutMapping

+ 2 - 6
yezhu-api/src/main/java/com/kioor/user/dto/UserRoomDTO.java

@@ -10,7 +10,7 @@
 package com.kioor.user.dto;
 
 import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 
@@ -23,12 +23,8 @@ import lombok.Data;
 @Schema(description = "用户房间关系")
 public class UserRoomDTO {
 
-    @Schema(description = "用户")
-    @NotBlank(message = "用户不能为空")
-    private Long userId;
-
     @Schema(description = "房间")
-    @NotBlank(message = "房间不能为空")
+    @NotNull(message = "房间不能为空")
     private Long roomId;
 
 }

+ 2 - 2
yezhu-api/src/main/resources/mapper/common/SysRegionDao.xml

@@ -1,7 +1,7 @@
 <?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">
 
-<mapper namespace="com.kioor.modules.sys.dao.SysRegionDao">
+<mapper namespace="com.kioor.common.dao.SysRegionDao">
 
     <select id="getList" resultType="com.kioor.common.entity.SysRegionEntity">
         select * from sys_region
@@ -25,7 +25,7 @@
     </select>
 
     <select id="getById" resultType="com.kioor.common.entity.SysRegionEntity">
-        select t1.*, (select t2.name from sys_region t2 where t2.id=t1.pid) parentName from sys_region t1 where t1.id = #{value}
+        select t1.*, (select t2.name from sys_region t2 where t2.id=t1.pid) parentName from sys_region t1 where t1.id = #{id}
     </select>
 
     <select id="getCountByPid" resultType="int">

+ 13 - 0
yezhu-api/src/main/resources/mapper/room/BuildingDao.xml

@@ -0,0 +1,13 @@
+<?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">
+
+<mapper namespace="com.kioor.room.dao.BuildingDao">
+
+    <select id="getList" resultType="com.kioor.room.entity.BuildingEntity">
+        select * from tb_building where 1=1
+        <if test="housingEstateId != null">
+            and housing_estate_id = #{housingEstateId}
+        </if>
+    </select>
+
+</mapper>

+ 13 - 0
yezhu-api/src/main/resources/mapper/room/FloorDao.xml

@@ -0,0 +1,13 @@
+<?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">
+
+<mapper namespace="com.kioor.room.dao.FloorDao">
+
+    <select id="getList" resultType="com.kioor.room.entity.FloorEntity">
+        select * from tb_floor where 1=1
+        <if test="unitId != null">
+            and unit_id = #{unitId}
+        </if>
+    </select>
+
+</mapper>

+ 3 - 3
yezhu-api/src/main/resources/mapper/room/ResidentialQuartersDao.xml → yezhu-api/src/main/resources/mapper/room/HousingEstateDao.xml

@@ -1,11 +1,11 @@
 <?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">
 
-<mapper namespace="com.kioor.room.dao.ResidentialQuartersDao">
+<mapper namespace="com.kioor.room.dao.HousingEstateDao">
 
 
-    <select id="getList" resultType="com.kioor.room.entity.ResidentialQuartersEntity">
-        select * from tb_residential_quarters where 1=1
+    <select id="getList" resultType="com.kioor.room.entity.HousingEstateEntity">
+        select * from tb_housing_estate where 1=1
         <if test="name != null and name.trim() != ''">
             and name like #{name}
         </if>

+ 49 - 4
yezhu-api/src/main/resources/mapper/room/RoomDao.xml

@@ -3,14 +3,59 @@
 
 <mapper namespace="com.kioor.room.dao.RoomDao">
 
+    <select id="getList" resultType="com.kioor.room.entity.RoomEntity">
+        select * from tb_room where 1=1
+        <if test="floorId != null">
+            and floor_id = #{floorId}
+        </if>
+    </select>
+    <select id="floorList" resultType="com.kioor.room.entity.RoomEntity">
+        select tr.*
+        from tb_room tr
+        left join tb_user_housing_estate tuhe on tr.floor_id = tuhe.floor_id
+        where tuhe.user_id = #{userId}
+        order by room_num asc
+    </select>
+    <select id="roomUp" resultType="com.kioor.room.entity.RoomEntity">
+        SELECT
+            hisRoom.*
+        FROM
+            tb_room myRoom
+                JOIN
+            tb_floor myFloor ON myRoom.floor_id = myFloor.id
+                JOIN
+            tb_user_housing_estate myHome ON myRoom.id = myHome.room_id
+                JOIN
+            tb_floor hisFloor ON myFloor.unit_id = hisFloor.unit_id AND hisFloor.floor_num = myFloor.floor_num + 1
+                JOIN
+            tb_room hisRoom ON hisRoom.floor_id = hisFloor.id AND hisRoom.room_num = myRoom.room_num
+        WHERE
+            myHome.user_id = #{userId}
+    </select>
+    <select id="roomDown" resultType="com.kioor.room.entity.RoomEntity">
+        SELECT
+            hisRoom.*
+        FROM
+            tb_room myRoom
+                JOIN
+            tb_floor myFloor ON myRoom.floor_id = myFloor.id
+                JOIN
+            tb_user_housing_estate myHome ON myRoom.id = myHome.room_id
+                JOIN
+            tb_floor hisFloor ON myFloor.unit_id = hisFloor.unit_id AND hisFloor.floor_num = myFloor.floor_num - 1
+                JOIN
+            tb_room hisRoom ON hisRoom.floor_id = hisFloor.id AND hisRoom.room_num = myRoom.room_num
+        WHERE
+            myHome.user_id = #{userId}
+    </select>
 
     <select id="findRoomById" resultType="com.kioor.room.dto.RoomDTO">
-        select r.id,q.id quartersId,b.id buildingsId,u.id unitsId,f.id floorId,r.room_num roomNum,r.remark remark
+        select r.id,q.id housingEstateId,b.id buildingId,u.id unitId,f.id floorId,r.room_num roomNum,r.remark remark
         from tb_room r
         left join tb_floor f on r.floor_id = f.id
-        left join tb_units u on f.units_id = u.id
-        left join tb_buildings b on u.buildings_id = b.id
-        left join tb_quarters q on b.quarters_id = q.id
+        left join tb_unit u on f.unit_id = u.id
+        left join tb_building b on u.building_id = b.id
+        left join tb_housing_estate q on b.housing_estate_id = q.id
         where r.id = #{id}
     </select>
 </mapper>

+ 13 - 0
yezhu-api/src/main/resources/mapper/room/UnitDao.xml

@@ -0,0 +1,13 @@
+<?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">
+
+<mapper namespace="com.kioor.room.dao.UnitDao">
+
+    <select id="getList" resultType="com.kioor.room.entity.UnitEntity">
+        select * from tb_unit where 1=1
+        <if test="buildingId != null">
+            and building_id = #{buildingId}
+        </if>
+    </select>
+
+</mapper>

+ 6 - 6
yezhu-api/src/main/resources/mapper/room/UserQuartersDao.xml

@@ -1,17 +1,17 @@
 <?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">
 
-<mapper namespace="com.kioor.room.dao.UserQuartersDao">
+<mapper namespace="com.kioor.room.dao.UserHousingEstateDao">
 
 
     <select id="getRoomsByUserId" resultType="com.kioor.room.dto.RoomDTO">
-        select r.id,q.id quartersId,b.id buildingsId,u.id unitsId,f.id floorId,r.room_num roomNum,r.remark remark
-        from tb_User_quarters uq
+        select r.id,h.id housingEstateId,b.id buildingId,u.id unitId,f.id floorId,r.room_num roomNum,r.remark remark
+        from tb_user_housing_estate uq
         left join tb_room r on uq.room_id = r.id
         left join tb_floor f on r.floor_id = f.id
-        left join tb_units u on f.units_id = u.id
-        left join tb_buildings b on u.buildings_id = b.id
-        left join tb_quarters q on b.quarters_id = q.id
+        left join tb_unit u on f.unit_id = u.id
+        left join tb_building b on u.building_id = b.id
+        left join tb_housing_estate h on b.housing_estate_id = h.id
         where r.id = #{id}
     </select>
 </mapper>

+ 6 - 0
yezhu-common/src/main/java/com/kioor/common/service/BaseService.java

@@ -113,4 +113,10 @@ public interface BaseService<T> {
      * @param idList 主键ID列表
      */
     boolean deleteBatchIds(Collection<? extends Serializable> idList);
+
+    /**
+     *
+     * @return
+     */
+    int delete(Wrapper<T> queryWrapper);
 }

+ 4 - 0
yezhu-common/src/main/java/com/kioor/common/service/impl/BaseServiceImpl.java

@@ -217,4 +217,8 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T> implements Bas
     public boolean deleteBatchIds(Collection<? extends Serializable> idList) {
         return SqlHelper.retBool(baseDao.deleteBatchIds(idList));
     }
+    @Override
+    public int delete(Wrapper<T> queryWrapper) {
+        return baseDao.delete(queryWrapper);
+    }
 }