Ver Fonte

小程序功能新增修改

S0025136190 há 1 ano atrás
pai
commit
1c736cf2f3
65 ficheiros alterados com 2660 adições e 22 exclusões
  1. 4 0
      takai-admin/src/main/resources/application.yml
  2. 113 0
      takai-modules/takai-system/src/main/java/org/dromara/system/controller/room/CommunityController.java
  3. 13 1
      takai-modules/takai-system/src/main/java/org/dromara/system/controller/room/FacilitiesController.java
  4. 148 0
      takai-modules/takai-system/src/main/java/org/dromara/system/controller/room/PositionController.java
  5. 3 3
      takai-modules/takai-system/src/main/java/org/dromara/system/controller/room/SysImgController.java
  6. 51 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/Community.java
  7. 35 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/CommunityRoom.java
  8. 46 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/Position.java
  9. 35 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/PositionCommunity.java
  10. 19 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/PositionList.java
  11. 12 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/RegionList.java
  12. 2 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/Room.java
  13. 16 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/ButtonBo.java
  14. 56 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/CommunityBo.java
  15. 51 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/CommunityBoStr.java
  16. 37 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/CommunityRoomBo.java
  17. 18 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/FacilitiesBo.java
  18. 48 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/PositionBo.java
  19. 44 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/PositionBoStr.java
  20. 36 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/PositionCommunityBo.java
  21. 2 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/RoomBo.java
  22. 2 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/RoomBoQuery.java
  23. 2 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/RoomBoStr.java
  24. 2 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/SysImgBo.java
  25. 54 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/CommunityDetailVo.java
  26. 44 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/CommunityRoomVo.java
  27. 69 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/CommunityVo.java
  28. 44 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/PositionCommunityVo.java
  29. 47 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/PositionDetailVo.java
  30. 64 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/PositionVo.java
  31. 74 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/RoomDetailVo.java
  32. 2 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/RoomVo.java
  33. 2 0
      takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/SysImgVo.java
  34. 21 0
      takai-modules/takai-system/src/main/java/org/dromara/system/mapper/CommunityMapper.java
  35. 19 0
      takai-modules/takai-system/src/main/java/org/dromara/system/mapper/CommunityRoomMapper.java
  36. 3 0
      takai-modules/takai-system/src/main/java/org/dromara/system/mapper/FacilitiesMapper.java
  37. 2 0
      takai-modules/takai-system/src/main/java/org/dromara/system/mapper/ImgTypeMapper.java
  38. 19 0
      takai-modules/takai-system/src/main/java/org/dromara/system/mapper/PositionCommunityMapper.java
  39. 19 0
      takai-modules/takai-system/src/main/java/org/dromara/system/mapper/PositionMapper.java
  40. 4 2
      takai-modules/takai-system/src/main/java/org/dromara/system/mapper/RegionMapper.java
  41. 4 0
      takai-modules/takai-system/src/main/java/org/dromara/system/mapper/RoomMapper.java
  42. 2 0
      takai-modules/takai-system/src/main/java/org/dromara/system/mapper/SysImgMapper.java
  43. 51 0
      takai-modules/takai-system/src/main/java/org/dromara/system/service/ICommunityRoomService.java
  44. 52 0
      takai-modules/takai-system/src/main/java/org/dromara/system/service/ICommunityService.java
  45. 2 1
      takai-modules/takai-system/src/main/java/org/dromara/system/service/IFacilitiesService.java
  46. 2 0
      takai-modules/takai-system/src/main/java/org/dromara/system/service/IImgTypeService.java
  47. 51 0
      takai-modules/takai-system/src/main/java/org/dromara/system/service/IPositionCommunityService.java
  48. 61 0
      takai-modules/takai-system/src/main/java/org/dromara/system/service/IPositionService.java
  49. 2 1
      takai-modules/takai-system/src/main/java/org/dromara/system/service/ISysImgService.java
  50. 115 0
      takai-modules/takai-system/src/main/java/org/dromara/system/service/impl/CommunityRoomServiceImpl.java
  51. 285 0
      takai-modules/takai-system/src/main/java/org/dromara/system/service/impl/CommunityServiceImpl.java
  52. 88 8
      takai-modules/takai-system/src/main/java/org/dromara/system/service/impl/FacilitiesServiceImpl.java
  53. 115 0
      takai-modules/takai-system/src/main/java/org/dromara/system/service/impl/PositionCommunityServiceImpl.java
  54. 392 0
      takai-modules/takai-system/src/main/java/org/dromara/system/service/impl/PositionServiceImpl.java
  55. 1 0
      takai-modules/takai-system/src/main/java/org/dromara/system/service/impl/RoomServiceImpl.java
  56. 35 6
      takai-modules/takai-system/src/main/java/org/dromara/system/service/impl/SysImgServiceImpl.java
  57. 20 0
      takai-modules/takai-system/src/main/resources/mapper/system/CommunityMapper.xml
  58. 14 0
      takai-modules/takai-system/src/main/resources/mapper/system/CommunityRoomMapper.xml
  59. 12 0
      takai-modules/takai-system/src/main/resources/mapper/system/FacilitiesMapper.xml
  60. 7 0
      takai-modules/takai-system/src/main/resources/mapper/system/ImgTypeMapper.xml
  61. 14 0
      takai-modules/takai-system/src/main/resources/mapper/system/PositionCommunityMapper.xml
  62. 16 0
      takai-modules/takai-system/src/main/resources/mapper/system/PositionMapper.xml
  63. 12 0
      takai-modules/takai-system/src/main/resources/mapper/system/RegionMapper.xml
  64. 15 0
      takai-modules/takai-system/src/main/resources/mapper/system/RoomMapper.xml
  65. 10 0
      takai-modules/takai-system/src/main/resources/mapper/system/SysImgMapper.xml

+ 4 - 0
takai-admin/src/main/resources/application.yml

@@ -147,6 +147,10 @@ tenant:
     - img_type
     - hot
     - type_hot
+    - position
+    - community
+    - position_community
+    - community_room
 
 # MyBatisPlus配置
 # https://baomidou.com/config/

+ 113 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/controller/room/CommunityController.java

@@ -0,0 +1,113 @@
+package org.dromara.system.controller.room;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.system.domain.bo.CommunityBoStr;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.CommunityVo;
+import org.dromara.system.domain.bo.CommunityBo;
+import org.dromara.system.service.ICommunityService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 社区管理
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/system/community")
+public class CommunityController extends BaseController {
+
+    private final ICommunityService communityService;
+
+    /**
+     * 查询社区列表
+     */
+    @SaCheckPermission("system:community:list")
+    @GetMapping("/list")
+    public TableDataInfo<CommunityVo> list(CommunityBo bo, PageQuery pageQuery) {
+        return communityService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出社区列表
+     */
+    @SaCheckPermission("system:community:export")
+    @Log(title = "导出社区", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(CommunityBo bo, HttpServletResponse response) {
+        List<CommunityVo> list = communityService.queryList(bo);
+        ExcelUtil.exportExcel(list, "【请填写功能名称】", CommunityVo.class, response);
+    }
+
+    /**
+     * 获取社区详细信息
+     *
+     * @param communityId 主键
+     */
+    @SaCheckPermission("system:community:query")
+    @GetMapping("/{communityId}")
+    public R<CommunityVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable String communityId) {
+        return R.ok(communityService.queryById(communityId));
+    }
+
+    /**
+     * 新增社区
+     */
+    @SaCheckPermission("system:community:add")
+    @Log(title = "新增社区", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody CommunityBoStr bo) {
+        return toAjax(communityService.insertByBo(bo));
+    }
+
+    /**
+     * 修改社区
+     */
+    @SaCheckPermission("system:community:edit")
+    @Log(title = "修改社区", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody CommunityBoStr bo) {
+        return toAjax(communityService.updateByBo(bo));
+    }
+
+    /**
+     * 删除社区
+     *
+     * @param communityIds 主键串
+     */
+    @SaCheckPermission("system:community:remove")
+    @Log(title = "删除社区", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{communityIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable String[] communityIds) {
+        return toAjax(communityService.deleteWithValidByIds(List.of(communityIds), true));
+    }
+
+    @PostMapping("/communityList")
+    public R<List<CommunityVo>> communityList(@RequestBody CommunityBo bo) {
+        return R.ok(communityService.queryAll(bo));
+    }
+
+
+}

+ 13 - 1
takai-modules/takai-system/src/main/java/org/dromara/system/controller/room/FacilitiesController.java

@@ -42,7 +42,7 @@ public class FacilitiesController extends BaseController {
     @SaCheckPermission("system:facilities:list")
     @GetMapping("/list")
     public TableDataInfo<FacilitiesVo> list(FacilitiesBo bo, PageQuery pageQuery) {
-        return facilitiesService.queryPageList(bo, pageQuery);
+        return facilitiesService.queryPageListByWeixin(bo, pageQuery);
     }
 
     /**
@@ -102,4 +102,16 @@ public class FacilitiesController extends BaseController {
                           @PathVariable String[] facilitiesIds) {
         return toAjax(facilitiesService.deleteWithValidByIds(List.of(facilitiesIds), true));
     }
+
+    /**
+     * 设施列表查询
+     *  ButtonBo
+     *  PageQuery
+     * @return
+     */
+    @PostMapping("/facPage")
+    public TableDataInfo<FacilitiesVo> roomDetail(@RequestBody FacilitiesBo bo, PageQuery pageQuery) {
+        return facilitiesService.queryPageListByWeixin(bo, pageQuery);
+    }
+
 }

+ 148 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/controller/room/PositionController.java

@@ -0,0 +1,148 @@
+package org.dromara.system.controller.room;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.system.domain.PositionList;
+import org.dromara.system.domain.bo.PositionBoStr;
+import org.dromara.system.domain.vo.PositionDetailVo;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.system.domain.vo.PositionVo;
+import org.dromara.system.domain.bo.PositionBo;
+import org.dromara.system.service.IPositionService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 【请填写功能名称】
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/system/position")
+public class PositionController extends BaseController {
+
+    private final IPositionService positionService;
+
+    /**
+     * 查询【位置】列表
+     */
+    @SaCheckPermission("system:position:list")
+    @GetMapping("/list")
+    public TableDataInfo<PositionVo> list(PositionBo bo, PageQuery pageQuery) {
+        return positionService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 导出位置列表
+     */
+    @SaCheckPermission("system:position:export")
+    @Log(title = "导出位置列表", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(PositionBo bo, HttpServletResponse response) {
+        List<PositionVo> list = positionService.queryList(bo);
+        ExcelUtil.exportExcel(list, "【请填写功能名称】", PositionVo.class, response);
+    }
+
+    /**
+     * 获取【位置】详细信息
+     *
+     * @param positionId 主键
+     */
+    @SaCheckPermission("system:position:query")
+    @GetMapping("/{positionId}")
+    public R<PositionVo> getInfo(@NotNull(message = "主键不能为空")
+                                     @PathVariable String positionId) {
+        return R.ok(positionService.queryById(positionId));
+    }
+
+    /**
+     * 新增位置
+     */
+    @SaCheckPermission("system:position:add")
+    @Log(title = "新增位置信息", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody PositionBoStr bo) {
+        return toAjax(positionService.insertByBo(bo));
+    }
+
+    /**
+     * 修改位置
+     */
+    @SaCheckPermission("system:position:edit")
+    @Log(title = "修改位置信息", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody PositionBoStr bo) {
+        return toAjax(positionService.updateByBo(bo));
+    }
+
+    /**
+     * 删除位置
+     *
+     * @param positionIds 主键串
+     */
+    @SaCheckPermission("system:position:remove")
+    @Log(title = "删除位置信息", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{positionIds}")
+    public R<Void> remove(@NotEmpty(message = "主键不能为空")
+                          @PathVariable String[] positionIds) {
+        return toAjax(positionService.deleteWithValidByIds(List.of(positionIds), true));
+    }
+
+    /**
+     * 获取位置列表
+     * @return
+     */
+    @GetMapping("/group")
+    public R<List<PositionVo>> index() {
+        List<PositionVo> list =positionService.selectAll();
+        return R.ok(list);
+    }
+
+    /**
+     * 获取定位下社区里的房型列表
+     * @param positionId
+     * @return
+     */
+    @GetMapping("/room/{positionId}")
+    public R<PositionVo> roomList(@PathVariable String positionId) {
+        PositionVo vo =positionService.selectByPositionId(positionId);
+        return R.ok(vo);
+    }
+
+    /**
+     * 获取定位下社区里房型区域详情
+     * @param positionId
+     * @param communityId
+     * @param roomId
+     * @return
+     */
+    @GetMapping("/room/detail/{positionId}/{communityId}/{roomId}")
+    public R<PositionDetailVo> roomDetail(@PathVariable String positionId,@PathVariable String communityId,@PathVariable String roomId) {
+        PositionDetailVo vo = positionService.selectByRoomDetail(positionId, communityId, roomId);
+        return R.ok(vo);
+    }
+
+    @GetMapping("/ficationBtn")
+    public R<List<PositionList>> classBtn() {
+        List<PositionList> list = positionService.ficationBtn();
+        return R.ok(list);
+    }
+}

+ 3 - 3
takai-modules/takai-system/src/main/java/org/dromara/system/controller/room/SysImgController.java

@@ -104,8 +104,8 @@ public class SysImgController extends BaseController {
     }
 
     @SaCheckPermission("system:img:wximg")
-        @GetMapping("/wximg")
-    public TableDataInfo<SysImgVo> wximg() {
-        return sysImgService.selectImg();
+        @GetMapping("/wximg/{positionId}")
+    public R<List<SysImgVo>> wximg(@PathVariable String positionId) {
+        return R.ok(sysImgService.selectByList(positionId));
     }
 }

+ 51 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/Community.java

@@ -0,0 +1,51 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 【请填写功能名称】对象 community
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("community")
+public class Community extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @TableId(value = "community_id")
+    private String communityId;
+
+    /**
+     *
+     */
+    private String communityName;
+
+    /**
+     *
+     */
+    private String communityTitle;
+
+    /**
+     *
+     */
+    private String communityDesc;
+
+    /**
+     *
+     */
+    private String isMaster;
+
+
+}

+ 35 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/CommunityRoom.java

@@ -0,0 +1,35 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 【请填写功能名称】对象 community_room
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("community_room")
+public class CommunityRoom {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    private String communityId;
+
+    /**
+     *
+     */
+    private String roomId;
+
+
+}

+ 46 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/Position.java

@@ -0,0 +1,46 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 【请填写功能名称】对象 position
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("position")
+public class Position extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+    @TableId(value = "position_id")
+    private String positionId;
+
+    /**
+     * 
+     */
+    private String positionName;
+
+    /**
+     * 
+     */
+    private String positionTitle;
+
+    /**
+     * 
+     */
+    private String positionDesc;
+
+
+}

+ 35 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/PositionCommunity.java

@@ -0,0 +1,35 @@
+package org.dromara.system.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * 【请填写功能名称】对象 position_community
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("position_community")
+public class PositionCommunity  {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    private String positionId;
+
+    /**
+     *
+     */
+    private String communityId;
+
+
+}

+ 19 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/PositionList.java

@@ -0,0 +1,19 @@
+package org.dromara.system.domain;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PositionList {
+
+    private String positionId;
+
+    private String positionName;
+
+    private String communityId;
+
+    private String roomId;
+
+    private List<RegionList> regionList;
+}

+ 12 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/RegionList.java

@@ -0,0 +1,12 @@
+package org.dromara.system.domain;
+
+import lombok.Data;
+
+@Data
+public class RegionList {
+
+    private String positionId;
+    private String regionId;
+    private String regionName;
+
+}

+ 2 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/Room.java

@@ -62,5 +62,7 @@ public class Room extends BaseEntity {
      */
     private Integer floorNum;
 
+    private String isMaster;
+
 
 }

+ 16 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/ButtonBo.java

@@ -0,0 +1,16 @@
+package org.dromara.system.domain.bo;
+
+import lombok.Data;
+
+@Data
+public class ButtonBo {
+
+    private String positionId;
+
+    private String communityId;
+
+    private String roomId;
+
+    private String regionId;
+
+}

+ 56 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/CommunityBo.java

@@ -0,0 +1,56 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.Community;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 【请填写功能名称】业务对象 community
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = Community.class, reverseConvertGenerate = false)
+public class CommunityBo extends BaseEntity {
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { EditGroup.class })
+    private String communityId;
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String communityName;
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String communityTitle;
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String communityDesc;
+
+    /**
+     *
+     */
+    @NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String isMaster;
+
+
+
+
+}

+ 51 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/CommunityBoStr.java

@@ -0,0 +1,51 @@
+package org.dromara.system.domain.bo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+
+import java.util.List;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@AutoMapper(target = CommunityBoStr.class, reverseConvertGenerate = false)
+public class CommunityBoStr {
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { EditGroup.class })
+    private String communityId;
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String communityName;
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String communityTitle;
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String communityDesc;
+
+    /**
+     *
+     */
+    @NotNull(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String isMaster;
+
+    private List<RoomBo> room;
+
+    private List<SysImgBo> sysimg;
+}

+ 37 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/CommunityRoomBo.java

@@ -0,0 +1,37 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.CommunityRoom;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import org.dromara.system.domain.RoomRegion;
+
+/**
+ * 【请填写功能名称】业务对象 community_room
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@AutoMapper(target = CommunityRoom.class, reverseConvertGenerate = false)
+public class CommunityRoomBo  {
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String communityId;
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String roomId;
+
+
+}

+ 18 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/FacilitiesBo.java

@@ -58,5 +58,23 @@ public class FacilitiesBo extends BaseEntity {
 
     private List<String> facilitiesIds;
 
+    private String positionId;
+
+    private String communityId;
+
+    private String roomId;
+
+    private String regionId;
+
+    /**
+     * 分页大小
+     */
+    private Integer pageSize;
+
+    /**
+     * 当前页数
+     */
+    private Integer pageNum;
+
 
 }

+ 48 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/PositionBo.java

@@ -0,0 +1,48 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.Position;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 【请填写功能名称】业务对象 position
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = Position.class, reverseConvertGenerate = false)
+public class PositionBo extends BaseEntity {
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { EditGroup.class })
+    private String positionId;
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String positionName;
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String positionTitle;
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String positionDesc;
+
+
+}

+ 44 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/PositionBoStr.java

@@ -0,0 +1,44 @@
+package org.dromara.system.domain.bo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+
+import java.util.List;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@AutoMapper(target = RoomBoStr.class, reverseConvertGenerate = false)
+public class PositionBoStr {
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { EditGroup.class })
+    private String positionId;
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String positionName;
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String positionTitle;
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String positionDesc;
+
+    private List<CommunityBo> community;
+
+    private List<SysImgBo> sysimg;
+}

+ 36 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/PositionCommunityBo.java

@@ -0,0 +1,36 @@
+package org.dromara.system.domain.bo;
+
+import org.dromara.system.domain.PositionCommunity;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 【请填写功能名称】业务对象 position_community
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@AutoMapper(target = PositionCommunity.class, reverseConvertGenerate = false)
+public class PositionCommunityBo {
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String positionId;
+
+    /**
+     *
+     */
+    @NotBlank(message = "不能为空", groups = { AddGroup.class, EditGroup.class })
+    private String communityId;
+
+
+}

+ 2 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/RoomBo.java

@@ -70,5 +70,7 @@ public class RoomBo extends BaseEntity {
     @NotNull(message = "楼层不能为空", groups = { AddGroup.class, EditGroup.class })
     private Integer floorNum;
 
+    private String isMaster;
+
 
 }

+ 2 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/RoomBoQuery.java

@@ -67,4 +67,6 @@ public class RoomBoQuery {
 
     private String sysimg;
 
+    private String isMaster;
+
 }

+ 2 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/RoomBoStr.java

@@ -68,4 +68,6 @@ public class RoomBoStr {
 
     private List<SysImgBo> sysimg;
 
+    private String isMaster;
+
 }

+ 2 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/bo/SysImgBo.java

@@ -59,4 +59,6 @@ public class SysImgBo extends BaseEntity {
 
     private List<SysImgVo> sysimg;
 
+    private String positionId;
+
 }

+ 54 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/CommunityDetailVo.java

@@ -0,0 +1,54 @@
+package org.dromara.system.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.io.Serial;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class CommunityDetailVo {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String communityId;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String communityName;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String communityTitle;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String communityDesc;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String isMaster;
+
+    private RoomDetailVo room;
+
+    private List<SysImgVo> sysimg;
+
+    private String url;
+
+    private Date createTime;
+
+}

+ 44 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/CommunityRoomVo.java

@@ -0,0 +1,44 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.CommunityRoom;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 【请填写功能名称】视图对象 community_room
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = CommunityRoom.class)
+public class CommunityRoomVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private String communityId;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private String roomId;
+
+
+}

+ 69 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/CommunityVo.java

@@ -0,0 +1,69 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.Community;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 【请填写功能名称】视图对象 community
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = Community.class)
+public class CommunityVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String communityId;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String communityName;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String communityTitle;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String communityDesc;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String isMaster;
+
+    private List<RoomVo> room;
+
+    private List<SysImgVo> sysimg;
+
+    private String url;
+
+    private Date createTime;
+
+}

+ 44 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/PositionCommunityVo.java

@@ -0,0 +1,44 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.PositionCommunity;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 【请填写功能名称】视图对象 position_community
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = PositionCommunity.class)
+public class PositionCommunityVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private String positionId;
+
+    /**
+     * 
+     */
+    @ExcelProperty(value = "")
+    private String communityId;
+
+
+}

+ 47 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/PositionDetailVo.java

@@ -0,0 +1,47 @@
+package org.dromara.system.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.io.Serial;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class PositionDetailVo {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String positionId;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String positionName;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String positionTitle;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String positionDesc;
+
+    private CommunityDetailVo community;
+
+    private List<SysImgVo> sysimg;
+
+    private String url;
+
+    private Date createTime;
+}

+ 64 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/PositionVo.java

@@ -0,0 +1,64 @@
+package org.dromara.system.domain.vo;
+
+import org.dromara.system.domain.Position;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 【请填写功能名称】视图对象 position
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = Position.class)
+public class PositionVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String positionId;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String positionName;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String positionTitle;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private String positionDesc;
+
+    private List<CommunityVo> community;
+
+    private List<SysImgVo> sysimg;
+
+    private String url;
+
+    private Date createTime;
+
+
+}

+ 74 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/RoomDetailVo.java

@@ -0,0 +1,74 @@
+package org.dromara.system.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.io.Serial;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class RoomDetailVo {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 户型id
+     */
+    @ExcelProperty(value = "户型id")
+    private String roomId;
+
+    /**
+     * 户型名称
+     */
+    @ExcelProperty(value = "户型名称")
+    private String roomName;
+
+    /**
+     * 户型标题
+     */
+    @ExcelProperty(value = "户型标题")
+    private String roomTitle;
+
+    /**
+     * 户型描述
+     */
+    @ExcelProperty(value = "户型描述")
+    private String roomDesc;
+
+    /**
+     * 热门户型
+     */
+    @ExcelProperty(value = "热门户型")
+    private String isHot;
+
+    /**
+     * 面积
+     */
+    @ExcelProperty(value = "面积")
+    private String roomSize;
+
+    /**
+     * 朝向
+     */
+    @ExcelProperty(value = "朝向")
+    private String direction;
+
+    /**
+     * 楼层
+     */
+    @ExcelProperty(value = "楼层")
+    private Integer floorNum;
+
+    private List<RegionVo> region;
+
+    private List<SysImgVo> sysimg;
+
+    private String url;
+
+    private Date createTime;
+
+    private String isMaster;
+
+}

+ 2 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/RoomVo.java

@@ -84,5 +84,7 @@ public class RoomVo implements Serializable {
 
     private Date createTime;
 
+    private String isMaster;
+
 
 }

+ 2 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/domain/vo/SysImgVo.java

@@ -65,5 +65,7 @@ public class SysImgVo implements Serializable {
 
     private Date createTime;
 
+    private String positionId;
+
 
 }

+ 21 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/mapper/CommunityMapper.java

@@ -0,0 +1,21 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.Community;
+import org.dromara.system.domain.vo.CommunityVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+import java.util.List;
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+public interface CommunityMapper extends BaseMapperPlus<Community, CommunityVo> {
+
+    List<CommunityVo> selectByPositionId(String positionId);
+
+    List<CommunityVo> selectAll();
+
+}

+ 19 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/mapper/CommunityRoomMapper.java

@@ -0,0 +1,19 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.CommunityRoom;
+import org.dromara.system.domain.vo.CommunityRoomVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+import java.util.List;
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+public interface CommunityRoomMapper extends BaseMapperPlus<CommunityRoom, CommunityRoomVo> {
+
+    boolean batchDelete(List<String> list);
+
+}

+ 3 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/mapper/FacilitiesMapper.java

@@ -3,6 +3,7 @@ package org.dromara.system.mapper;
 import org.dromara.system.domain.Facilities;
 import org.dromara.system.domain.vo.FacilitiesVo;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.system.domain.vo.RegionVo;
 
 import java.util.List;
 
@@ -20,4 +21,6 @@ public interface FacilitiesMapper extends BaseMapperPlus<Facilities, FacilitiesV
 
     List<FacilitiesVo> selectByFacilitiesId(String regionType);
 
+    List<FacilitiesVo> selectListByFacilitiesBoByRegionId(List<String> list);
+
 }

+ 2 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/mapper/ImgTypeMapper.java

@@ -16,4 +16,6 @@ public interface ImgTypeMapper extends BaseMapperPlus<ImgType, ImgTypeVo> {
 
     boolean batchDelete(List<String> list);
 
+    ImgTypeVo selectByImgId(String imgId);
+
 }

+ 19 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/mapper/PositionCommunityMapper.java

@@ -0,0 +1,19 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.PositionCommunity;
+import org.dromara.system.domain.vo.PositionCommunityVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+import java.util.List;
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+public interface PositionCommunityMapper extends BaseMapperPlus<PositionCommunity, PositionCommunityVo> {
+
+    boolean batchDelete(List<String> list);
+
+}

+ 19 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/mapper/PositionMapper.java

@@ -0,0 +1,19 @@
+package org.dromara.system.mapper;
+
+import org.dromara.system.domain.Position;
+import org.dromara.system.domain.vo.PositionVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+import java.util.List;
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+public interface PositionMapper extends BaseMapperPlus<Position, PositionVo> {
+
+    List<PositionVo> selectAll();
+
+}

+ 4 - 2
takai-modules/takai-system/src/main/java/org/dromara/system/mapper/RegionMapper.java

@@ -1,8 +1,6 @@
 package org.dromara.system.mapper;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.dromara.system.domain.Region;
-import org.dromara.system.domain.vo.FacilitiesVo;
 import org.dromara.system.domain.vo.RegionVo;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 
@@ -21,4 +19,8 @@ public interface RegionMapper extends BaseMapperPlus<Region, RegionVo> {
     List<RegionVo> selectByRoomId(String roomId);
 
     List<String> selectByRegionType(String regionType);
+
+    List<RegionVo> selectListByRegionBoByRoomId(List<String> list);
+
+    List<RegionVo> selectAll();
 }

+ 4 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/mapper/RoomMapper.java

@@ -19,4 +19,8 @@ public interface RoomMapper extends BaseMapperPlus<Room, RoomVo> {
 
     IPage<RoomVo> selectListByRoomBo(Page<RoomVo> page, RoomBoQuery bo);
 
+    List<RoomVo> selectListByRoomBoByCommunityId(List<String> list);
+
+    List<RoomVo> selectAll();
+
 }

+ 2 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/mapper/SysImgMapper.java

@@ -23,4 +23,6 @@ public interface SysImgMapper extends BaseMapperPlus<SysImg, SysImgVo> {
 
     List<SysImgVo> selectByRoomId(String roomId, String regionId);
 
+    List<SysImgVo> selectByList(List<String> list);
+
 }

+ 51 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/service/ICommunityRoomService.java

@@ -0,0 +1,51 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.CommunityRoom;
+import org.dromara.system.domain.vo.CommunityRoomVo;
+import org.dromara.system.domain.bo.CommunityRoomBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+public interface ICommunityRoomService {
+
+    /**
+     * 查询【请填写功能名称】
+     */
+    CommunityRoomVo queryById(String communityId);
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    TableDataInfo<CommunityRoomVo> queryPageList(CommunityRoomBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    List<CommunityRoomVo> queryList(CommunityRoomBo bo);
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    Boolean insertByBo(CommunityRoomBo bo);
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    Boolean updateByBo(CommunityRoomBo bo);
+
+    /**
+     * 校验并批量删除【请填写功能名称】信息
+     */
+    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+
+    boolean batchDelete(List<String> list);
+}

+ 52 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/service/ICommunityService.java

@@ -0,0 +1,52 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.Community;
+import org.dromara.system.domain.bo.CommunityBoStr;
+import org.dromara.system.domain.vo.CommunityVo;
+import org.dromara.system.domain.bo.CommunityBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+public interface ICommunityService {
+
+    /**
+     * 查询【请填写功能名称】
+     */
+    CommunityVo queryById(String communityId);
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    TableDataInfo<CommunityVo> queryPageList(CommunityBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    List<CommunityVo> queryList(CommunityBo bo);
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    Boolean insertByBo(CommunityBoStr bo);
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    Boolean updateByBo(CommunityBoStr bo);
+
+    /**
+     * 校验并批量删除【请填写功能名称】信息
+     */
+    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+
+    List<CommunityVo> queryAll(CommunityBo bo);
+}

+ 2 - 1
takai-modules/takai-system/src/main/java/org/dromara/system/service/IFacilitiesService.java

@@ -1,6 +1,5 @@
 package org.dromara.system.service;
 
-import org.dromara.system.domain.Facilities;
 import org.dromara.system.domain.vo.FacilitiesVo;
 import org.dromara.system.domain.bo.FacilitiesBo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -46,4 +45,6 @@ public interface IFacilitiesService {
      * 校验并批量删除【请填写功能名称】信息
      */
     Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+
+    TableDataInfo<FacilitiesVo> queryPageListByWeixin(FacilitiesBo bo, PageQuery pageQuery);
 }

+ 2 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/service/IImgTypeService.java

@@ -48,4 +48,6 @@ public interface IImgTypeService {
     Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
 
     boolean batchDelete(List<String> typeId);
+
+
 }

+ 51 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/service/IPositionCommunityService.java

@@ -0,0 +1,51 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.PositionCommunity;
+import org.dromara.system.domain.vo.PositionCommunityVo;
+import org.dromara.system.domain.bo.PositionCommunityBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+public interface IPositionCommunityService {
+
+    /**
+     * 查询【请填写功能名称】
+     */
+    PositionCommunityVo queryById(String positionId);
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    TableDataInfo<PositionCommunityVo> queryPageList(PositionCommunityBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    List<PositionCommunityVo> queryList(PositionCommunityBo bo);
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    Boolean insertByBo(PositionCommunityBo bo);
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    Boolean updateByBo(PositionCommunityBo bo);
+
+    /**
+     * 校验并批量删除【请填写功能名称】信息
+     */
+    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+
+    void batchDelete(List<String> list);
+}

+ 61 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/service/IPositionService.java

@@ -0,0 +1,61 @@
+package org.dromara.system.service;
+
+import org.dromara.system.domain.PositionList;
+import org.dromara.system.domain.bo.PositionBoStr;
+import org.dromara.system.domain.vo.PositionDetailVo;
+import org.dromara.system.domain.vo.PositionVo;
+import org.dromara.system.domain.bo.PositionBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+public interface IPositionService {
+
+    /**
+     * 查询【请填写功能名称】
+     */
+    PositionVo queryById(String positionId);
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    TableDataInfo<PositionVo> queryPageList(PositionBo bo, PageQuery pageQuery);
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    List<PositionVo> queryList(PositionBo bo);
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    Boolean insertByBo(PositionBoStr bo);
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    Boolean updateByBo(PositionBoStr bo);
+
+    /**
+     * 校验并批量删除【请填写功能名称】信息
+     */
+    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
+
+    List<PositionVo> selectAll();
+
+    PositionVo selectByPositionId(String positionId);
+
+    PositionDetailVo selectByRoomDetail(String positionId, String roomDetailId, String roomId);
+
+    List<PositionList> ficationBtn();
+
+
+}

+ 2 - 1
takai-modules/takai-system/src/main/java/org/dromara/system/service/ISysImgService.java

@@ -1,6 +1,5 @@
 package org.dromara.system.service;
 
-import org.dromara.system.domain.SysImg;
 import org.dromara.system.domain.vo.SysImgVo;
 import org.dromara.system.domain.bo.SysImgBo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -62,4 +61,6 @@ public interface ISysImgService {
     TableDataInfo<SysImgVo> selectImg();
 
     List<SysImgVo> selectByRoomId(String roomId, String regionId);
+
+    List<SysImgVo> selectByList(String positionId);
 }

+ 115 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/service/impl/CommunityRoomServiceImpl.java

@@ -0,0 +1,115 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.CommunityRoomBo;
+import org.dromara.system.domain.vo.CommunityRoomVo;
+import org.dromara.system.domain.CommunityRoom;
+import org.dromara.system.mapper.CommunityRoomMapper;
+import org.dromara.system.service.ICommunityRoomService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@RequiredArgsConstructor
+@Service
+public class CommunityRoomServiceImpl implements ICommunityRoomService {
+
+    private final CommunityRoomMapper baseMapper;
+
+    /**
+     * 查询【请填写功能名称】
+     */
+    @Override
+    public CommunityRoomVo queryById(String communityId){
+        return baseMapper.selectVoById(communityId);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @Override
+    public TableDataInfo<CommunityRoomVo> queryPageList(CommunityRoomBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<CommunityRoom> lqw = buildQueryWrapper(bo);
+        Page<CommunityRoomVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @Override
+    public List<CommunityRoomVo> queryList(CommunityRoomBo bo) {
+        LambdaQueryWrapper<CommunityRoom> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<CommunityRoom> buildQueryWrapper(CommunityRoomBo bo) {
+//        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<CommunityRoom> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getCommunityId()), CommunityRoom::getCommunityId, bo.getCommunityId());
+        lqw.eq(StringUtils.isNotBlank(bo.getRoomId()), CommunityRoom::getRoomId, bo.getRoomId());
+        return lqw;
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    @Override
+    public Boolean insertByBo(CommunityRoomBo bo) {
+        CommunityRoom add = MapstructUtils.convert(bo, CommunityRoom.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setCommunityId(add.getCommunityId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    @Override
+    public Boolean updateByBo(CommunityRoomBo bo) {
+        CommunityRoom update = MapstructUtils.convert(bo, CommunityRoom.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(CommunityRoom entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除【请填写功能名称】
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+
+    @Override
+    public boolean batchDelete(List<String> list) {
+        return baseMapper.batchDelete(list);
+    }
+}

+ 285 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/service/impl/CommunityServiceImpl.java

@@ -0,0 +1,285 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.system.domain.CommunityRoom;
+import org.dromara.system.domain.Room;
+import org.dromara.system.domain.bo.*;
+import org.dromara.system.domain.vo.*;
+import org.dromara.system.service.*;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.Community;
+import org.dromara.system.mapper.CommunityMapper;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@RequiredArgsConstructor
+@Service
+public class CommunityServiceImpl implements ICommunityService {
+
+    private final CommunityMapper baseMapper;
+
+    private final ICommunityRoomService communityRoomService;
+
+    private final ISysImgService sysImgService;
+
+    private final IImgTypeService imgTypeService;
+
+    private final IRoomService roomService;
+
+    /**
+     * 查询社区信息
+     */
+    @Override
+    public CommunityVo queryById(String communityId){
+        CommunityVo vo =baseMapper.selectVoById(communityId);
+        CommunityRoomBo cRoomBo = new CommunityRoomBo();
+        // 社区房型
+        cRoomBo.setCommunityId(communityId);
+        List<CommunityRoomVo> list = communityRoomService.queryList(cRoomBo);
+        List<RoomVo> regList = new ArrayList();
+        for (int i=0; i<list.size(); i++) {
+            RoomBo bo = new RoomBo();
+            bo.setRoomId(list.get(i).getRoomId());
+            List<RoomVo> listBo = roomService.queryList(bo); // 房型
+            for(RoomVo v: listBo){
+                List<SysImgVo> sysimg = this.querySysImg(v.getRoomId()); //房型图片
+                v.setSysimg(sysimg);
+            }
+            regList.addAll(listBo);
+        }
+        vo.setRoom(regList);
+        // 社区图片
+        List<SysImgVo> sysimg = this.querySysImg(communityId);
+        vo.setSysimg(sysimg);
+        return vo;
+    }
+
+    /**
+     * 查询社区列表
+     */
+    @Override
+    public TableDataInfo<CommunityVo> queryPageList(CommunityBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<Community> lqw = buildQueryWrapper(bo);
+        Page<CommunityVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        List<CommunityVo> list = result.getRecords();
+        for (CommunityVo coVo: list){
+            List<SysImgVo> sysimg = this.querySysImg(coVo.getCommunityId());
+            for (SysImgVo sysImgVo: sysimg){
+                if(StringUtils.isNotBlank(sysImgVo.getEnumC()) && sysImgVo.getEnumC().equals("0")){
+                    coVo.setUrl(sysImgVo.getUrl());
+                    break;
+                }
+            }
+            coVo.setSysimg(sysimg);
+        }
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询社区列表
+     */
+    @Override
+    public List<CommunityVo> queryList(CommunityBo bo) {
+        LambdaQueryWrapper<Community> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<Community> buildQueryWrapper(CommunityBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<Community> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getCommunityId()), Community::getCommunityId, bo.getCommunityId());
+        lqw.like(StringUtils.isNotBlank(bo.getCommunityName()), Community::getCommunityName, bo.getCommunityName());
+        lqw.eq(StringUtils.isNotBlank(bo.getCommunityTitle()), Community::getCommunityTitle, bo.getCommunityTitle());
+        lqw.eq(StringUtils.isNotBlank(bo.getCommunityDesc()), Community::getCommunityDesc, bo.getCommunityDesc());
+        lqw.eq(bo.getIsMaster() != null, Community::getIsMaster, bo.getIsMaster());
+        lqw.orderByDesc(Community::getIsMaster);
+        return lqw;
+    }
+
+    /**
+     * 新增社区
+     */
+    @Override
+    public Boolean insertByBo(CommunityBoStr bo) {
+        CommunityBo addVo = new CommunityBo();
+        addVo.setCommunityName(bo.getCommunityName());
+        addVo.setCommunityTitle(bo.getCommunityTitle());
+        addVo.setCommunityDesc(bo.getCommunityDesc());
+        addVo.setIsMaster(bo.getIsMaster());
+        Community add = MapstructUtils.convert(addVo, Community.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setCommunityId(add.getCommunityId());
+
+            // 关联房型信息
+            bo.getRoom().forEach(room -> {
+                CommunityRoomBo vo = new CommunityRoomBo();
+                vo.setCommunityId(add.getCommunityId());
+                vo.setRoomId(room.getRoomId());
+                communityRoomService.insertByBo(vo);     // 新增房型信息
+            });
+
+            //图片
+            for (SysImgBo voq : bo.getSysimg()){
+                if(voq.getResponse() != null && voq.getResponse().getCode() == 200){
+                    //关联图片
+                    ResponseBo res = voq.getResponse();
+                    if(res != null && res.getCode() == 200){
+                        ImgTypeBo types = new ImgTypeBo();
+                        types.setImgId(res.getData().getOssId());
+                        types.setTypeId(add.getCommunityId());
+                        types.setTypeC("5");           // 图片类型
+                        boolean typeImg = imgTypeService.insertByBo(types);
+                        if(typeImg){
+                            SysImgBo img = new SysImgBo();
+                            img.setImgType("5"); // 图片类型
+                            if(StringUtils.isNotBlank(res.getData().getUrl())){
+                                String str = res.getData().getUrl().substring(8);
+                                img.setUrl(str);
+                            }
+                            img.setOssId(res.getData().getOssId());
+                            img.setFileName(res.getData().getFileName());
+                            img.setEnumC(voq.getEnumC()); //主图标识
+                            sysImgService.insertByBo(img);
+                        }
+                    }
+                }
+            }
+        }
+        return flag;
+    }
+
+    /**
+     * 修改社区
+     */
+    @Override
+    public Boolean updateByBo(CommunityBoStr bo) {
+        CommunityBo communityBo = new CommunityBo();
+        BeanUtils.copyProperties(bo, communityBo);
+        Community update = MapstructUtils.convert(communityBo, Community.class);
+        validEntityBeforeSave(update);
+        boolean status = baseMapper.updateById(update) > 0;
+        if(status){
+            // 房型更新
+            communityRoomService.batchDelete(List.of(bo.getCommunityId()));
+            for (int i=0; i<bo.getRoom().size(); i++){
+                CommunityRoomBo communityRoomBo = new CommunityRoomBo();
+                communityRoomBo.setCommunityId(bo.getCommunityId());
+                communityRoomBo.setRoomId(String.valueOf(bo.getRoom().get(i).getRoomId()));
+                communityRoomService.insertByBo(communityRoomBo);
+            }
+
+            imgTypeService.batchDelete(List.of(bo.getCommunityId()));
+            //图片更新
+            String[] ossId = new String[bo.getSysimg().size()];
+            for (int i=0; i<bo.getSysimg().size(); i++){
+                if(StringUtils.isNotBlank(bo.getSysimg().get(i).getOssId())){
+                    ossId[i] = bo.getSysimg().get(i).getOssId();
+                }
+                if(bo.getSysimg().get(i).getResponse() != null){
+                    ossId[i] = bo.getSysimg().get(i).getResponse().getData().getOssId();
+                }
+            }
+
+            sysImgService.batchDelete(List.of(ossId));
+            for (SysImgBo voq : bo.getSysimg()){
+                //关联图片
+                ImgTypeBo types = new ImgTypeBo();
+                ResponseBo res = voq.getResponse();
+                if(res != null){
+                    types.setImgId(res.getData().getOssId());
+                }else{
+                    types.setImgId(voq.getOssId());
+                }
+                types.setTypeId(bo.getCommunityId());
+                types.setTypeC("5");           // 图片类型
+                boolean typeImg = imgTypeService.insertByBo(types);
+                if(typeImg){
+                    SysImgBo img = new SysImgBo();
+                    if(res != null && res.getCode() == 200){
+                        img.setOssId(res.getData().getOssId());
+                        img.setUrl(res.getData().getUrl().substring(8));
+                        img.setFileName(res.getData().getFileName());
+                        img.setEnumC(voq.isDefaults() == true ? "0" : null); //主图标识
+                    }else{
+                        img.setUrl(voq.getUrl());
+                        img.setOssId(voq.getOssId());
+                        img.setFileName(voq.getFileName());
+                        img.setEnumC(String.valueOf(voq.getEnumC()) == "null" ? null : voq.getEnumC()); //主图标识
+                    }
+                    img.setImgType("5"); // 图片类型
+                    sysImgService.insertByBo(img);
+                }
+            }
+        }
+        return status;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(Community entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除【请填写功能名称】
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+
+    @Override
+    public List<CommunityVo> queryAll(CommunityBo bo) {
+        List<CommunityVo> list = new ArrayList<>();
+        PageQuery pageQuery = new PageQuery();
+        if(bo.getCommunityId() != null){
+            CommunityVo vo =baseMapper.selectVoById(bo.getCommunityId());
+            list.add(vo);
+        }else{
+            LambdaQueryWrapper<Community> lqw = buildQueryWrapper(bo);
+            Page<CommunityVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+            list = result.getRecords();
+            list = list.stream().filter(item -> item.getIsMaster() != null && "1".equals(item.getIsMaster())).toList();
+        }
+        return list;
+    }
+
+    public List<SysImgVo> querySysImg(String typeId) {
+        ImgTypeBo imgTypeBo = new ImgTypeBo();
+        imgTypeBo.setTypeId(typeId);
+        List<SysImgVo> sysimg = new ArrayList();
+
+        List<ImgTypeVo> typeList = imgTypeService.queryList(imgTypeBo);
+        for (ImgTypeVo imgTypeVo : typeList) {
+            SysImgBo sysImgBo = new SysImgBo();
+            sysImgBo.setOssId(imgTypeVo.getImgId());
+            sysImgBo.setImgType(imgTypeVo.getTypeC());
+            sysimg.addAll(sysImgService.queryList(sysImgBo));
+        }
+        return sysimg;
+    }
+
+}

+ 88 - 8
takai-modules/takai-system/src/main/java/org/dromara/system/service/impl/FacilitiesServiceImpl.java

@@ -8,20 +8,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
-import org.dromara.system.domain.Region;
 import org.dromara.system.domain.bo.*;
 import org.dromara.system.domain.vo.*;
-import org.dromara.system.mapper.RegionFacilitiesMapper;
-import org.dromara.system.mapper.RegionMapper;
+import org.dromara.system.mapper.*;
 import org.dromara.system.service.*;
 import org.springframework.stereotype.Service;
 import org.dromara.system.domain.Facilities;
-import org.dromara.system.mapper.FacilitiesMapper;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Collection;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -49,6 +43,22 @@ public class FacilitiesServiceImpl implements IFacilitiesService {
     private final IRegionFacilitiesService regionFacilitiesService;
 
     private final RegionMapper regionMapper;
+
+    private final CommunityMapper communityMapper;
+
+    private final RoomMapper roomMapper;
+
+    private final CommunityRoomServiceImpl communityRoomService;
+//    private final IRoomService roomService;
+
+//    private final IRoomRegionService roomRegionService;
+
+    private final CommunityRoomMapper communityRoomMapper;
+
+    private final PositionMapper positionMapper;
+
+    private final RoomRegionServiceImpl roomRegionService;
+
     /**
      * 查询【请填写功能名称】
      */
@@ -245,6 +255,76 @@ public class FacilitiesServiceImpl implements IFacilitiesService {
         return status;
     }
 
+    @Override
+    public TableDataInfo<FacilitiesVo> queryPageListByWeixin(FacilitiesBo bo, PageQuery pageQuery) {
+        List<FacilitiesVo> returnList = null;
+        List<RegionVo> rgList = null;
+        Page<FacilitiesVo> result = new Page<>();
+        PositionVo vo = new PositionVo();
+        if(bo.getPositionId() == null){
+            List<PositionVo> list = positionMapper.selectAll();
+            for(PositionVo item: list){
+                vo = positionMapper.selectVoById(item.getPositionId());
+                break;
+            }
+            rgList = getRegionList(vo, 1, bo);
+        }else{
+            vo = positionMapper.selectVoById(bo.getPositionId());
+            rgList = getRegionList(vo, 2, bo);
+        }
+
+        pageQuery.setPageNum(bo.getPageNum());
+        pageQuery.setPageSize(bo.getPageSize());
+        if(rgList != null && rgList.size() > 0){
+            RegionFacilitiesBo rfBo = new RegionFacilitiesBo();
+            rfBo.setRegionId(bo.getRegionId() == null ? rgList.get(0).getRegionId() : bo.getRegionId());
+            List<RegionFacilitiesVo> rfList = regionFacilitiesService.queryList(rfBo);
+            List<String> regionIds = rfList.stream().map(RegionFacilitiesVo:: getFacilitiesId).collect(Collectors.toList());
+            bo.setFacilitiesIds(regionIds);
+            LambdaQueryWrapper<Facilities> lqw = buildQueryWrapper(bo);
+            result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        }
+        return TableDataInfo.build(result);
+    }
+
+    // type 1 空 2 非空
+    private List<RegionVo> getRegionList(PositionVo vo, int type, FacilitiesBo bo){
+        List<RegionVo> rgList = null;
+        if (vo != null){
+            List<CommunityVo> comList = communityMapper.selectByPositionId(vo.getPositionId());
+            if(comList != null && comList.size() > 0){
+                List<CommunityVo> commList = comList.stream().filter(item -> item.getIsMaster() != null && "1".equals(item.getIsMaster())).toList();
+
+                for(CommunityVo cv: commList){
+                    // 房型
+                    CommunityRoomBo crBo = new CommunityRoomBo();
+                    crBo.setCommunityId(type == 1 ? cv.getCommunityId() : bo.getCommunityId());
+                    List<CommunityRoomVo> crList = communityRoomService.queryList(crBo);
+                    List<String> communityIds = crList.stream().map(CommunityRoomVo:: getRoomId).collect(Collectors.toList());
+                    if(communityIds.size() > 0){
+                        List<RoomVo> rList =roomMapper.selectListByRoomBoByCommunityId(communityIds);
+                        List<RoomVo> rList2 = rList.stream().filter(r -> r.getIsMaster() != null && "1".equals(r.getIsMaster())).toList();
+                        for(RoomVo r: rList2){
+                            // 区域
+                            RoomRegionBo rrBo = new RoomRegionBo();
+                            rrBo.setRoomId(type == 1 ? r.getRoomId() : bo.getRoomId());
+                            List<RoomRegionVo> rrList = roomRegionService.queryList(rrBo);
+                            List<String> roomIds = rrList.stream().map(RoomRegionVo:: getRegionId).collect(Collectors.toList());
+                            if(roomIds.size() > 0){
+                                rgList = regionMapper.selectListByRegionBoByRoomId(roomIds);
+                                // 设施
+                                r.setRegion(rgList);
+                            }
+                        }
+                        cv.setRoom(rList2);
+                    }
+                }
+                vo.setCommunity(commList);
+            }
+        }
+        return rgList;
+    }
+
     public List<SysImgVo> querySysImg(String typeId) {
         ImgTypeBo imgTypeBo = new ImgTypeBo();
         imgTypeBo.setTypeId(typeId);

+ 115 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/service/impl/PositionCommunityServiceImpl.java

@@ -0,0 +1,115 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.bo.PositionCommunityBo;
+import org.dromara.system.domain.vo.PositionCommunityVo;
+import org.dromara.system.domain.PositionCommunity;
+import org.dromara.system.mapper.PositionCommunityMapper;
+import org.dromara.system.service.IPositionCommunityService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@RequiredArgsConstructor
+@Service
+public class PositionCommunityServiceImpl implements IPositionCommunityService {
+
+    private final PositionCommunityMapper baseMapper;
+
+    /**
+     * 查询【请填写功能名称】
+     */
+    @Override
+    public PositionCommunityVo queryById(String positionId){
+        return baseMapper.selectVoById(positionId);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @Override
+    public TableDataInfo<PositionCommunityVo> queryPageList(PositionCommunityBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<PositionCommunity> lqw = buildQueryWrapper(bo);
+        Page<PositionCommunityVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @Override
+    public List<PositionCommunityVo> queryList(PositionCommunityBo bo) {
+        LambdaQueryWrapper<PositionCommunity> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<PositionCommunity> buildQueryWrapper(PositionCommunityBo bo) {
+//        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<PositionCommunity> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getPositionId()), PositionCommunity::getPositionId, bo.getPositionId());
+        lqw.eq(StringUtils.isNotBlank(bo.getCommunityId()), PositionCommunity::getCommunityId, bo.getCommunityId());
+        return lqw;
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    @Override
+    public Boolean insertByBo(PositionCommunityBo bo) {
+        PositionCommunity add = MapstructUtils.convert(bo, PositionCommunity.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setPositionId(add.getPositionId());
+        }
+        return flag;
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    @Override
+    public Boolean updateByBo(PositionCommunityBo bo) {
+        PositionCommunity update = MapstructUtils.convert(bo, PositionCommunity.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(PositionCommunity entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除【请填写功能名称】
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+
+    @Override
+    public void batchDelete(List<String> list) {
+        baseMapper.batchDelete(list);
+    }
+}

+ 392 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/service/impl/PositionServiceImpl.java

@@ -0,0 +1,392 @@
+package org.dromara.system.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.system.domain.PositionList;
+import org.dromara.system.domain.RegionList;
+import org.dromara.system.domain.bo.*;
+import org.dromara.system.domain.vo.*;
+import org.dromara.system.mapper.*;
+import org.dromara.system.service.*;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.dromara.system.domain.Position;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author Lion Li
+ * @date 2025-03-24
+ */
+@RequiredArgsConstructor
+@Service
+public class PositionServiceImpl implements IPositionService {
+
+    private final PositionMapper baseMapper;
+
+    private final IPositionCommunityService positionCommunityService;
+
+    private final ISysImgService sysImgService;
+
+    private final IImgTypeService imgTypeService;
+
+    private final ICommunityService communityService;
+
+    private final ICommunityRoomService communityRoomService;
+
+    private final IRoomService roomService;
+
+    private final CommunityMapper communityMapper;
+
+    private final RoomMapper roomMapper;
+
+    private final RoomRegionServiceImpl roomRegionService;
+
+    private final RegionMapper regionMapper;
+
+
+    /**
+     * 查询【请填写功能名称】
+     */
+    @Override
+    public PositionVo queryById(String positionId){
+        PositionVo vo = baseMapper.selectVoById(positionId);
+        PositionCommunityBo pcBo = new PositionCommunityBo();
+        // 社区房型
+        pcBo.setPositionId(positionId);
+        List<PositionCommunityVo> list = positionCommunityService.queryList(pcBo);
+        List<CommunityVo> comList = new ArrayList();
+        for (int i=0; i<list.size(); i++) {
+            CommunityBo bo = new CommunityBo();
+            bo.setCommunityId(list.get(i).getCommunityId());
+            List<CommunityVo> listBo = communityService.queryList(bo); // 社区
+            for(CommunityVo v: listBo){
+                List<SysImgVo> sysimg = this.querySysImg(v.getCommunityId()); //房型图片
+                v.setSysimg(sysimg);
+            }
+            comList.addAll(listBo);
+        }
+        vo.setCommunity(comList);
+        // 社区图片
+        List<SysImgVo> sysimg = this.querySysImg(positionId);
+        vo.setSysimg(sysimg);
+        return vo;
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @Override
+    public TableDataInfo<PositionVo> queryPageList(PositionBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<Position> lqw = buildQueryWrapper(bo);
+        Page<PositionVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+        List<PositionVo> list = result.getRecords();
+        for (PositionVo poVo: list){
+            // 图片
+            List<SysImgVo> sysimg = this.querySysImg(poVo.getPositionId());
+            for (SysImgVo sysImgVo: sysimg){
+                if(StringUtils.isNotBlank(sysImgVo.getEnumC()) && sysImgVo.getEnumC().equals("0")){
+                    poVo.setUrl(sysImgVo.getUrl());
+                    break;
+                }
+            }
+            poVo.setSysimg(sysimg);
+        }
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @Override
+    public List<PositionVo> queryList(PositionBo bo) {
+        LambdaQueryWrapper<Position> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<Position> buildQueryWrapper(PositionBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<Position> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getPositionId()), Position::getPositionId, bo.getPositionId());
+        lqw.like(StringUtils.isNotBlank(bo.getPositionName()), Position::getPositionName, bo.getPositionName());
+        lqw.eq(StringUtils.isNotBlank(bo.getPositionTitle()), Position::getPositionTitle, bo.getPositionTitle());
+        lqw.eq(StringUtils.isNotBlank(bo.getPositionDesc()), Position::getPositionDesc, bo.getPositionDesc());
+        return lqw;
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     */
+    @Override
+    public Boolean insertByBo(PositionBoStr bo) {
+        PositionBo addVo = new PositionBo();
+        addVo.setPositionName(bo.getPositionName());
+        addVo.setPositionTitle(bo.getPositionName());
+        addVo.setPositionDesc(bo.getPositionDesc());
+        Position add = MapstructUtils.convert(addVo, Position.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setPositionId(add.getPositionId());
+
+            // 关联社区信息
+            bo.getCommunity().forEach(community -> {
+                PositionCommunityBo vo = new PositionCommunityBo();
+                vo.setPositionId(add.getPositionId());
+                vo.setCommunityId(community.getCommunityId());
+                positionCommunityService.insertByBo(vo);     // 新增社区信息
+            });
+
+            //图片
+            for (SysImgBo voq : bo.getSysimg()){
+                if(voq.getResponse() != null && voq.getResponse().getCode() == 200){
+                    //关联图片
+                    ResponseBo res = voq.getResponse();
+                    if(res != null && res.getCode() == 200){
+                        ImgTypeBo types = new ImgTypeBo();
+                        types.setImgId(res.getData().getOssId());
+                        types.setTypeId(add.getPositionId());
+                        types.setTypeC("4");           // 图片类型
+                        boolean typeImg = imgTypeService.insertByBo(types);
+                        if(typeImg){
+                            SysImgBo img = new SysImgBo();
+                            img.setImgType("4"); // 图片类型
+                            if(StringUtils.isNotBlank(res.getData().getUrl())){
+                                String str = res.getData().getUrl().substring(8);
+                                img.setUrl(str);
+                            }
+                            img.setOssId(res.getData().getOssId());
+                            img.setFileName(res.getData().getFileName());
+                            img.setEnumC(voq.getEnumC()); //主图标识
+                            sysImgService.insertByBo(img);
+                        }
+                    }
+                }
+            }
+        }
+        return flag;
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     */
+    @Override
+    public Boolean updateByBo(PositionBoStr bo) {
+        PositionBo positionBo = new PositionBo();
+        BeanUtils.copyProperties(bo, positionBo);
+        Position update = MapstructUtils.convert(positionBo, Position.class);
+        validEntityBeforeSave(update);
+        boolean status = baseMapper.updateById(update) > 0;
+        if(status){
+            // 小区更新
+            positionCommunityService.batchDelete(List.of(bo.getPositionId()));
+            for (int i=0; i<bo.getCommunity().size(); i++){
+                PositionCommunityBo pcBo = new PositionCommunityBo();
+                pcBo.setPositionId(bo.getPositionId());
+                pcBo.setCommunityId(String.valueOf(bo.getCommunity().get(i).getCommunityId()));
+                positionCommunityService.insertByBo(pcBo);
+            }
+
+            imgTypeService.batchDelete(List.of(bo.getPositionId()));
+            //图片更新
+            String[] ossId = new String[bo.getSysimg().size()];
+            for (int i=0; i<bo.getSysimg().size(); i++){
+                if(StringUtils.isNotBlank(bo.getSysimg().get(i).getOssId())){
+                    ossId[i] = bo.getSysimg().get(i).getOssId();
+                }
+                if(bo.getSysimg().get(i).getResponse() != null){
+                    ossId[i] = bo.getSysimg().get(i).getResponse().getData().getOssId();
+                }
+            }
+
+            sysImgService.batchDelete(List.of(ossId));
+            for (SysImgBo voq : bo.getSysimg()){
+                //关联图片
+                ImgTypeBo types = new ImgTypeBo();
+                ResponseBo res = voq.getResponse();
+                if(res != null){
+                    types.setImgId(res.getData().getOssId());
+                }else{
+                    types.setImgId(voq.getOssId());
+                }
+                types.setTypeId(bo.getPositionId());
+                types.setTypeC("5");           // 图片类型
+                boolean typeImg = imgTypeService.insertByBo(types);
+                if(typeImg){
+                    SysImgBo img = new SysImgBo();
+                    if(res != null && res.getCode() == 200){
+                        img.setOssId(res.getData().getOssId());
+                        img.setUrl(res.getData().getUrl().substring(8));
+                        img.setFileName(res.getData().getFileName());
+                        img.setEnumC(voq.isDefaults() == true ? "0" : null); //主图标识
+                    }else{
+                        img.setUrl(voq.getUrl());
+                        img.setOssId(voq.getOssId());
+                        img.setFileName(voq.getFileName());
+                        img.setEnumC(String.valueOf(voq.getEnumC()) == "null" ? null : voq.getEnumC()); //主图标识
+                    }
+                    img.setImgType("5"); // 图片类型
+                    sysImgService.insertByBo(img);
+                }
+            }
+        }
+        return status;
+    }
+
+    /**
+     * 保存前的数据校验
+     */
+    private void validEntityBeforeSave(Position entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    /**
+     * 批量删除【请填写功能名称】
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return baseMapper.deleteBatchIds(ids) > 0;
+    }
+
+    @Override
+    public List<PositionVo> selectAll() {
+        return baseMapper.selectAll();
+    }
+
+    @Override
+    public PositionVo selectByPositionId(String positionId) {
+        PositionVo vo = queryById(positionId);
+        if(vo != null){
+            if(vo.getCommunity() != null && vo.getCommunity().size() > 0){
+                List<CommunityVo> commList = vo.getCommunity().stream().filter(item -> item.getIsMaster() != null && "1".equals(item.getIsMaster())).toList();
+                commList.forEach(cv ->{
+                    CommunityVo cvo = communityService.queryById(cv.getCommunityId());
+                    if(cvo != null){
+                        cv.setRoom(cvo.getRoom());
+                    }
+                });
+                vo.setCommunity(commList);
+            }
+        }
+        return vo;
+    }
+
+    @Override
+    public PositionDetailVo selectByRoomDetail(String positionId, String commodityId, String roomId) {
+        PositionVo vo = queryById(positionId);
+        PositionDetailVo detailVo = new PositionDetailVo();
+        BeanUtils.copyProperties(vo, detailVo);
+
+        if(vo != null){
+            if(vo.getCommunity() != null && vo.getCommunity().size() > 0){
+                CommunityVo cvo = communityService.queryById(commodityId);
+                CommunityDetailVo commDetailVo = new CommunityDetailVo();
+                BeanUtils.copyProperties(cvo, commDetailVo);
+                if(cvo != null){
+                    RoomVo rvo = roomService.queryById(roomId);
+                    RoomDetailVo roomDetailVo = new RoomDetailVo();
+                    BeanUtils.copyProperties(rvo, roomDetailVo);
+                    commDetailVo.setRoom(roomDetailVo);
+                }
+                detailVo.setCommunity(commDetailVo);
+            }
+        }
+        return detailVo;
+    }
+
+    public List<SysImgVo> querySysImg(String typeId) {
+        ImgTypeBo imgTypeBo = new ImgTypeBo();
+        imgTypeBo.setTypeId(typeId);
+        List<SysImgVo> sysimg = new ArrayList();
+
+        List<ImgTypeVo> typeList = imgTypeService.queryList(imgTypeBo);
+        for (ImgTypeVo imgTypeVo : typeList) {
+            SysImgBo sysImgBo = new SysImgBo();
+            sysImgBo.setOssId(imgTypeVo.getImgId());
+            sysImgBo.setImgType(imgTypeVo.getTypeC());
+            sysimg.addAll(sysImgService.queryList(sysImgBo));
+        }
+        return sysimg;
+    }
+
+
+
+    @Override
+    public List<PositionList> ficationBtn(){
+        List<PositionList> btnList = new ArrayList<>();
+        List<PositionVo> list =baseMapper.selectAll();
+        if(list != null && list.size() > 0){
+            for (PositionVo positionVo : list) {
+
+                List<RegionList> regionList = new ArrayList<>();
+                PositionList btn = new PositionList();
+                btn.setPositionId(positionVo.getPositionId());
+                btn.setPositionName(positionVo.getPositionName());
+
+                List<CommunityVo> comList = communityMapper.selectByPositionId(positionVo.getPositionId());
+                if(comList != null && comList.size() > 0){
+                    List<CommunityVo> commList = comList.stream().filter(item -> item.getIsMaster() != null && "1".equals(item.getIsMaster())).toList();
+
+                    for(CommunityVo cv: commList){
+
+                        btn.setCommunityId(cv.getCommunityId());
+                        // 房型
+                        CommunityRoomBo crBo = new CommunityRoomBo();
+                        crBo.setCommunityId(cv.getCommunityId());
+                        List<CommunityRoomVo> crList = communityRoomService.queryList(crBo);
+                        List<String> communityIds = crList.stream().map(CommunityRoomVo:: getRoomId).collect(Collectors.toList());
+                        if(communityIds.size() > 0){
+                            List<RoomVo> rList = roomMapper.selectListByRoomBoByCommunityId(communityIds);
+                            List<RoomVo> rList2 = rList.stream().filter(r -> r.getIsMaster() != null && "1".equals(r.getIsMaster())).toList();
+                            for(RoomVo r: rList2){
+
+                                btn.setRoomId(r.getRoomId());
+                                // 区域
+                                RoomRegionBo rrBo = new RoomRegionBo();
+                                rrBo.setRoomId(r.getRoomId());
+                                List<RoomRegionVo> rrList = roomRegionService.queryList(rrBo);
+                                List<String> roomIds = rrList.stream().map(RoomRegionVo:: getRegionId).collect(Collectors.toList());
+                                if(roomIds.size() > 0){
+                                    List<RegionVo> rgList = regionMapper.selectListByRegionBoByRoomId(roomIds);
+
+                                    if(rgList != null &&rgList.size() > 0){
+                                        for(RegionVo rg: rgList){
+                                            RegionList item = new RegionList();
+                                            item.setRegionId(rg.getRegionId());
+                                            item.setRegionName(rg.getRegionName());
+                                            item.setPositionId(positionVo.getPositionId());
+                                            regionList.add(item);
+                                        }
+                                        btn.setRegionList(regionList);
+                                    }
+//                                    r.setRegion(rgList);
+                                }
+                            }
+                            //cv.setRoom(rList2);
+                        }
+                    }
+                    //positionVo.setCommunity(commList);
+
+                }
+                btnList.add(btn);
+            }
+        }
+        return btnList;
+    }
+
+}

+ 1 - 0
takai-modules/takai-system/src/main/java/org/dromara/system/service/impl/RoomServiceImpl.java

@@ -115,6 +115,7 @@ public class RoomServiceImpl implements IRoomService {
     private LambdaQueryWrapper<Room> buildQueryWrapper(RoomBo bo) {
         Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<Room> lqw = Wrappers.lambdaQuery();
+        lqw.eq(StringUtils.isNotBlank(bo.getRoomId()), Room::getRoomId, bo.getRoomId());
         lqw.like(StringUtils.isNotBlank(bo.getRoomName()), Room::getRoomName, bo.getRoomName());
         lqw.eq(StringUtils.isNotBlank(bo.getRoomTitle()), Room::getRoomTitle, bo.getRoomTitle());
         lqw.eq(StringUtils.isNotBlank(bo.getRoomDesc()), Room::getRoomDesc, bo.getRoomDesc());

+ 35 - 6
takai-modules/takai-system/src/main/java/org/dromara/system/service/impl/SysImgServiceImpl.java

@@ -8,20 +8,22 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
-import org.dromara.system.domain.bo.ImgTypeBo;
-import org.dromara.system.domain.bo.InfoData;
-import org.dromara.system.domain.bo.ResponseBo;
+import org.dromara.system.domain.Community;
+import org.dromara.system.domain.bo.*;
+import org.dromara.system.domain.vo.CommunityVo;
+import org.dromara.system.domain.vo.ImgTypeVo;
+import org.dromara.system.domain.vo.RegionFacilitiesVo;
+import org.dromara.system.mapper.ImgTypeMapper;
 import org.dromara.system.service.IImgTypeService;
 import org.dromara.system.service.ISysOssService;
 import org.springframework.stereotype.Service;
-import org.dromara.system.domain.bo.SysImgBo;
 import org.dromara.system.domain.vo.SysImgVo;
 import org.dromara.system.domain.SysImg;
 import org.dromara.system.mapper.SysImgMapper;
 import org.dromara.system.service.ISysImgService;
 
 import java.util.*;
-import java.util.stream.Stream;
+import java.util.stream.Collectors;
 
 /**
  * 【请填写功能名称】Service业务层处理
@@ -39,12 +41,23 @@ public class SysImgServiceImpl implements ISysImgService {
 
     private final ISysOssService sysOssService;
 
+    private final ImgTypeMapper imgTypeMapper;
+
+    private final ImgTypeServiceImpl imgTypeServiceImpl;
+
     /**
      * 查询【请填写功能名称】
      */
     @Override
     public SysImgVo queryById(String imgId){
-        return baseMapper.selectVoById(imgId);
+        SysImgVo vo = baseMapper.selectVoById(imgId);
+        if(vo!= null && "0".equals(vo.getImgType())){
+            ImgTypeVo tVo = imgTypeMapper.selectByImgId(imgId);
+            if(tVo!= null){
+                vo.setPositionId(tVo.getTypeId());
+            }
+        }
+        return vo;
     }
 
     /**
@@ -160,6 +173,10 @@ public class SysImgServiceImpl implements ISysImgService {
                     types.setImgId(infoData.getOssId());
                     types.setTypeId(add.getOssId());
                     types.setTypeC("0");           // 图片类型
+                    if("0".equals(bo.getImgType()) && StringUtils.isNotEmpty(bo.getPositionId())){
+                        types.setTypeId(bo.getPositionId());
+                        types.setTypeC("0");           // 图片类型
+                    }
                     imgTypeService.insertByBo(types);
                 }
             }
@@ -220,6 +237,18 @@ public class SysImgServiceImpl implements ISysImgService {
         return baseMapper.selectByRoomId(roomId, regionId);
     }
 
+    @Override
+    public List<SysImgVo> selectByList(String positionId) {
+        ImgTypeBo vo = new ImgTypeBo();
+        vo.setTypeId(positionId);
+        List<ImgTypeVo> imgVo =imgTypeServiceImpl.queryList(vo);
+        if(imgVo != null && imgVo.size() > 0){
+            List<String> imgIds = imgVo.stream().map(ImgTypeVo:: getImgId).collect(Collectors.toList());
+            return baseMapper.selectByList(imgIds);
+        }
+        return null;
+    }
+
 
     public void setEnumValue(SysImgBo bo){
         if(StringUtils.isNotBlank(bo.getImgType()) && "0".equals(bo.getImgType())){

+ 20 - 0
takai-modules/takai-system/src/main/resources/mapper/system/CommunityMapper.xml

@@ -0,0 +1,20 @@
+<?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="org.dromara.system.mapper.CommunityMapper">
+
+    <resultMap type="org.dromara.system.domain.vo.CommunityVo" id="CommunityResult">
+    </resultMap>
+
+    <select id="selectByPositionId" resultMap="CommunityResult">
+        SELECT
+        cy.*
+        FROM
+        position_community pc
+        LEFT JOIN community cy ON pc.community_id = cy.community_id
+        WHERE
+        pc.position_id =#{positionId};
+    </select>
+
+</mapper>

+ 14 - 0
takai-modules/takai-system/src/main/resources/mapper/system/CommunityRoomMapper.xml

@@ -0,0 +1,14 @@
+<?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="org.dromara.system.mapper.CommunityRoomMapper">
+
+    <delete id="batchDelete" parameterType="list">
+        DELETE FROM community_room WHERE community_id IN
+        <foreach item="item" collection="list" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </delete>
+
+</mapper>

+ 12 - 0
takai-modules/takai-system/src/main/resources/mapper/system/FacilitiesMapper.xml

@@ -4,6 +4,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.dromara.system.mapper.FacilitiesMapper">
 
+    <resultMap id="facListResultMap" type="org.dromara.system.domain.vo.FacilitiesVo">
+    </resultMap>
+
     <resultMap id="facListMap" type="org.dromara.system.domain.vo.FacilitiesVo">
         <id column="facilities_id" property="facilities_id" jdbcType="VARCHAR"/>
         <result column="facilities_name" property="facilities_name" jdbcType="VARCHAR"/>
@@ -40,4 +43,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     </select>
 
+    <select id="selectListByFacilitiesBoByRegionId" parameterType="list"  resultMap="facListResultMap">
+        select rg.* FROM
+        facilities rg
+        where rg.facilities_id in
+        <foreach item="item" collection="list" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </select>
+
 </mapper>

+ 7 - 0
takai-modules/takai-system/src/main/resources/mapper/system/ImgTypeMapper.xml

@@ -4,6 +4,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.dromara.system.mapper.ImgTypeMapper">
 
+    <resultMap type="org.dromara.system.domain.vo.ImgTypeVo" id="imgTypeVoResult">
+    </resultMap>
+
     <delete id="batchDelete" parameterType="list">
         DELETE FROM img_type WHERE type_id IN
         <foreach item="item" collection="list" open="(" separator="," close=")">
@@ -11,4 +14,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </foreach>
     </delete>
 
+    <select id="selectByImgId" resultMap="imgTypeVoResult">
+        select * from img_type where img_id = #{imgId}
+    </select>
+
 </mapper>

+ 14 - 0
takai-modules/takai-system/src/main/resources/mapper/system/PositionCommunityMapper.xml

@@ -0,0 +1,14 @@
+<?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="org.dromara.system.mapper.PositionCommunityMapper">
+
+    <delete id="batchDelete" parameterType="list">
+        DELETE FROM position_community WHERE position_id IN
+        <foreach item="item" collection="list" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </delete>
+
+</mapper>

+ 16 - 0
takai-modules/takai-system/src/main/resources/mapper/system/PositionMapper.xml

@@ -0,0 +1,16 @@
+<?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="org.dromara.system.mapper.PositionMapper">
+
+    <resultMap type="org.dromara.system.domain.vo.PositionVo" id="PositionResult">
+    </resultMap>
+
+    <select id="selectAll" resultMap="PositionResult">
+        select position_id, position_name
+        from position
+        GROUP BY position_id, position_name;
+    </select>
+
+</mapper>

+ 12 - 0
takai-modules/takai-system/src/main/resources/mapper/system/RegionMapper.xml

@@ -4,6 +4,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.dromara.system.mapper.RegionMapper">
 
+    <resultMap type="org.dromara.system.domain.vo.RegionVo" id="RegionResult">
+    </resultMap>
+
     <resultMap id="RegionListMap" type="org.dromara.system.domain.vo.RegionVo">
         <id column="region_id" property="region_id" jdbcType="VARCHAR"/>
         <result column="region_name" property="region_name" jdbcType="VARCHAR"/>
@@ -53,4 +56,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     </select>
 
+    <select id="selectListByRegionBoByRoomId" parameterType="list"  resultMap="RegionResult">
+        select rg.*
+        FROM region rg
+        where rg.region_id in
+        <foreach item="item" collection="list" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </select>
+
 </mapper>

+ 15 - 0
takai-modules/takai-system/src/main/resources/mapper/system/RoomMapper.xml

@@ -4,6 +4,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.dromara.system.mapper.RoomMapper">
 
+    <resultMap type="org.dromara.system.domain.vo.RoomVo" id="RoomResult">
+    </resultMap>
+
     <select id="selectListByRoomBo" resultType="org.dromara.system.domain.vo.RoomVo">
         SELECT
             distinct r.room_id,
@@ -50,4 +53,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 <!--        </if>-->
     </select>
 
+    <select id="selectListByRoomBoByCommunityId" parameterType="list" resultMap="RoomResult">
+        SELECT
+            r.*
+        FROM
+                room r
+        WHERE
+            r.room_id in
+        <foreach item="item" collection="list" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </select>
+
 </mapper>

+ 10 - 0
takai-modules/takai-system/src/main/resources/mapper/system/SysImgMapper.xml

@@ -4,6 +4,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.dromara.system.mapper.SysImgMapper">
 
+    <resultMap type="org.dromara.system.domain.vo.SysImgVo" id="SysImgResult">
+    </resultMap>
+
     <delete id="batchDelete" parameterType="list">
         DELETE FROM sys_img WHERE oss_id IN
         <foreach item="item" collection="list" open="(" separator="," close=")">
@@ -61,4 +64,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         );
     </select>
 
+    <select id="selectByList" parameterType="list" resultMap="SysImgResult">
+        select * FROM sys_img WHERE oss_id IN
+        <foreach item="item" collection="list" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </select>
+
 </mapper>