wuzhen招生功能开发完成
This commit is contained in:
commit
7593904a79
113 files changed
+11596
-497
No files matched your search
@@ -0,0 +1,3 @@
|
||||
# Add directories or file patterns to ignore during indexing (e.g. foo/ or *.csv)
|
||||
temp/
|
||||
test/
|
||||
@@ -1,2 +0,0 @@
|
||||
# 学工管理模块 - 控制器层
|
||||
# 此目录用于存放REST API控制器类
|
||||
+114
@@ -0,0 +1,114 @@
|
||||
package org.dromara.xg.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
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.xg.domain.vo.XgDormAreaVo;
|
||||
import org.dromara.xg.domain.bo.XgDormAreaBo;
|
||||
import org.dromara.xg.domain.vo.TreeSelectVo;
|
||||
import org.dromara.xg.service.IXgDormAreaService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 宿舍区信息
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/ssqxx/dormArea")
|
||||
public class XgDormAreaController extends BaseController {
|
||||
|
||||
private final IXgDormAreaService xgDormAreaService;
|
||||
|
||||
/**
|
||||
* 查询宿舍区信息列表
|
||||
*/
|
||||
@SaCheckPermission("ssqxx:dormArea:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XgDormAreaVo> list(XgDormAreaBo bo, PageQuery pageQuery) {
|
||||
return xgDormAreaService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出宿舍区信息列表
|
||||
*/
|
||||
@SaCheckPermission("ssqxx:dormArea:export")
|
||||
@Log(title = "宿舍区信息", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XgDormAreaBo bo, HttpServletResponse response) {
|
||||
List<XgDormAreaVo> list = xgDormAreaService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "宿舍区信息", XgDormAreaVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取宿舍区信息详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("ssqxx:dormArea:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XgDormAreaVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(xgDormAreaService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增宿舍区信息
|
||||
*/
|
||||
@SaCheckPermission("ssqxx:dormArea:add")
|
||||
@Log(title = "宿舍区信息", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XgDormAreaBo bo) {
|
||||
return toAjax(xgDormAreaService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改宿舍区信息
|
||||
*/
|
||||
@SaCheckPermission("ssqxx:dormArea:edit")
|
||||
@Log(title = "宿舍区信息", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XgDormAreaBo bo) {
|
||||
return toAjax(xgDormAreaService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除宿舍区信息
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("ssqxx:dormArea:remove")
|
||||
@Log(title = "宿舍区信息", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
||||
return toAjax(xgDormAreaService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取宿舍区树形结构数据
|
||||
* 以校区为根节点,宿舍区为子节点
|
||||
*/
|
||||
@SaCheckPermission("ssqxx:dormArea:query")
|
||||
@GetMapping("/tree")
|
||||
public R<List<TreeSelectVo>> getAreaTree() {
|
||||
return R.ok(xgDormAreaService.getAreaTree());
|
||||
}
|
||||
}
|
||||
+115
@@ -0,0 +1,115 @@
|
||||
package org.dromara.xg.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
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.xg.domain.vo.XgDormBuildingVo;
|
||||
import org.dromara.xg.domain.bo.XgDormBuildingBo;
|
||||
import org.dromara.xg.domain.vo.BuildingTreeSelectVo;
|
||||
import org.dromara.xg.service.IXgDormBuildingService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 宿舍楼信息
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/sslxx/dormBuilding")
|
||||
public class XgDormBuildingController extends BaseController {
|
||||
|
||||
private final IXgDormBuildingService xgDormBuildingService;
|
||||
|
||||
/**
|
||||
* 查询宿舍楼信息列表
|
||||
*/
|
||||
@SaCheckPermission("sslxx:dormBuilding:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XgDormBuildingVo> list(XgDormBuildingBo bo, PageQuery pageQuery) {
|
||||
return xgDormBuildingService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出宿舍楼信息列表
|
||||
*/
|
||||
@SaCheckPermission("sslxx:dormBuilding:export")
|
||||
@Log(title = "宿舍楼信息", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XgDormBuildingBo bo, HttpServletResponse response) {
|
||||
List<XgDormBuildingVo> list = xgDormBuildingService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "宿舍楼信息", XgDormBuildingVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取宿舍楼信息详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("sslxx:dormBuilding:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XgDormBuildingVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(xgDormBuildingService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增宿舍楼信息
|
||||
*/
|
||||
@SaCheckPermission("sslxx:dormBuilding:add")
|
||||
@Log(title = "宿舍楼信息", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XgDormBuildingBo bo) {
|
||||
return toAjax(xgDormBuildingService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改宿舍楼信息
|
||||
*/
|
||||
@SaCheckPermission("sslxx:dormBuilding:edit")
|
||||
@Log(title = "宿舍楼信息", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XgDormBuildingBo bo) {
|
||||
return toAjax(xgDormBuildingService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除宿舍楼信息
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("sslxx:dormBuilding:remove")
|
||||
@Log(title = "宿舍楼信息", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
||||
return toAjax(xgDormBuildingService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取宿舍楼树形结构数据
|
||||
* 校区-宿舍区-宿舍楼三级结构,校区和宿舍区不可选,只有宿舍楼可以选择
|
||||
*/
|
||||
@SaCheckPermission("sslxx:dormBuilding:list")
|
||||
@GetMapping("/buildingTree")
|
||||
public R<List<BuildingTreeSelectVo>> getBuildingTree() {
|
||||
List<BuildingTreeSelectVo> treeData = xgDormBuildingService.getBuildingTreeData();
|
||||
return R.ok(treeData);
|
||||
}
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
package org.dromara.xg.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.xg.domain.vo.DormBuildingTreeVo;
|
||||
import org.dromara.xg.domain.bo.DormBuildingTreeBo;
|
||||
import org.dromara.xg.service.IXgDormBuildingTreeService;
|
||||
|
||||
/**
|
||||
* 宿舍楼树形结构控制器
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-07-03
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/xgss/dormBuildingTree")
|
||||
public class XgDormBuildingTreeController extends BaseController {
|
||||
|
||||
private final IXgDormBuildingTreeService xgDormBuildingTreeService;
|
||||
|
||||
/**
|
||||
* 获取宿舍楼树形结构数据
|
||||
* 校区-宿舍区-宿舍楼三级结构,校区和宿舍区不可选,只有宿舍楼可以选择
|
||||
*/
|
||||
// @SaCheckPermission("xgss:dormBuildingTree:list")
|
||||
@GetMapping("/list")
|
||||
public R<List<DormBuildingTreeVo>> getDormBuildingTree(DormBuildingTreeBo bo) {
|
||||
List<DormBuildingTreeVo> treeData = xgDormBuildingTreeService.getDormBuildingTree(bo);
|
||||
return R.ok(treeData);
|
||||
}
|
||||
}
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
package org.dromara.xg.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
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.xg.domain.vo.XgDormCampusVo;
|
||||
import org.dromara.xg.domain.bo.XgDormCampusBo;
|
||||
import org.dromara.xg.service.IXgDormCampusService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 校区信息
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/xqxx/dormCampus")
|
||||
public class XgDormCampusController extends BaseController {
|
||||
|
||||
private final IXgDormCampusService xgDormCampusService;
|
||||
|
||||
/**
|
||||
* 查询校区信息列表
|
||||
*/
|
||||
@SaCheckPermission("xqxx:dormCampus:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XgDormCampusVo> list(XgDormCampusBo bo, PageQuery pageQuery) {
|
||||
return xgDormCampusService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出校区信息列表
|
||||
*/
|
||||
@SaCheckPermission("xqxx:dormCampus:export")
|
||||
@Log(title = "校区信息", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XgDormCampusBo bo, HttpServletResponse response) {
|
||||
List<XgDormCampusVo> list = xgDormCampusService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "校区信息", XgDormCampusVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取校区信息详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("xqxx:dormCampus:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XgDormCampusVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xgDormCampusService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增校区信息
|
||||
*/
|
||||
@SaCheckPermission("xqxx:dormCampus:add")
|
||||
@Log(title = "校区信息", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XgDormCampusBo bo) {
|
||||
return toAjax(xgDormCampusService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改校区信息
|
||||
*/
|
||||
@SaCheckPermission("xqxx:dormCampus:edit")
|
||||
@Log(title = "校区信息", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XgDormCampusBo bo) {
|
||||
return toAjax(xgDormCampusService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除校区信息
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("xqxx:dormCampus:remove")
|
||||
@Log(title = "校区信息", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(xgDormCampusService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
package org.dromara.xg.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
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.xg.domain.vo.XgDormManagerBuildingVo;
|
||||
import org.dromara.xg.domain.bo.XgDormManagerBuildingBo;
|
||||
import org.dromara.xg.service.IXgDormManagerBuildingService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 管理员宿舍楼权限关系
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/glysslqxgx/dormManagerBuilding")
|
||||
public class XgDormManagerBuildingController extends BaseController {
|
||||
|
||||
private final IXgDormManagerBuildingService xgDormManagerBuildingService;
|
||||
|
||||
/**
|
||||
* 查询管理员宿舍楼权限关系列表
|
||||
*/
|
||||
@SaCheckPermission("glysslqxgx:dormManagerBuilding:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XgDormManagerBuildingVo> list(XgDormManagerBuildingBo bo, PageQuery pageQuery) {
|
||||
return xgDormManagerBuildingService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出管理员宿舍楼权限关系列表
|
||||
*/
|
||||
@SaCheckPermission("glysslqxgx:dormManagerBuilding:export")
|
||||
@Log(title = "管理员宿舍楼权限关系", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XgDormManagerBuildingBo bo, HttpServletResponse response) {
|
||||
List<XgDormManagerBuildingVo> list = xgDormManagerBuildingService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "管理员宿舍楼权限关系", XgDormManagerBuildingVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取管理员宿舍楼权限关系详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("glysslqxgx:dormManagerBuilding:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XgDormManagerBuildingVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xgDormManagerBuildingService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增管理员宿舍楼权限关系
|
||||
*/
|
||||
@SaCheckPermission("glysslqxgx:dormManagerBuilding:add")
|
||||
@Log(title = "管理员宿舍楼权限关系", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XgDormManagerBuildingBo bo) {
|
||||
return toAjax(xgDormManagerBuildingService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改管理员宿舍楼权限关系
|
||||
*/
|
||||
@SaCheckPermission("glysslqxgx:dormManagerBuilding:edit")
|
||||
@Log(title = "管理员宿舍楼权限关系", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XgDormManagerBuildingBo bo) {
|
||||
return toAjax(xgDormManagerBuildingService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除管理员宿舍楼权限关系
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("glysslqxgx:dormManagerBuilding:remove")
|
||||
@Log(title = "管理员宿舍楼权限关系", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(xgDormManagerBuildingService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
+117
@@ -0,0 +1,117 @@
|
||||
package org.dromara.xg.controller;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
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.xg.domain.vo.XgDormManagerVo;
|
||||
import org.dromara.xg.domain.bo.XgDormManagerBo;
|
||||
import org.dromara.xg.service.IXgDormManagerService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 宿舍管理员信息
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/ssglyxx/dormManager")
|
||||
public class XgDormManagerController extends BaseController {
|
||||
|
||||
private final IXgDormManagerService xgDormManagerService;
|
||||
|
||||
/**
|
||||
* 查询宿舍管理员信息列表
|
||||
*/
|
||||
@SaCheckPermission("ssglyxx:dormManager:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XgDormManagerVo> list(XgDormManagerBo bo, PageQuery pageQuery) {
|
||||
return xgDormManagerService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出宿舍管理员信息列表
|
||||
*/
|
||||
@SaCheckPermission("ssglyxx:dormManager:export")
|
||||
@Log(title = "宿舍管理员信息", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XgDormManagerBo bo, HttpServletResponse response) {
|
||||
List<XgDormManagerVo> list = xgDormManagerService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "宿舍管理员信息", XgDormManagerVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取宿舍管理员信息详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("ssglyxx:dormManager:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XgDormManagerVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(xgDormManagerService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取教师列表(用于下拉选择)
|
||||
*
|
||||
* @param name 教师姓名(可选,用于模糊查询)
|
||||
* @param managerType 管理员类型(可选,用于查询不同类型的管理员)
|
||||
*/
|
||||
@SaCheckPermission("ssglyxx:dormManager:list")
|
||||
@GetMapping("/teachers")
|
||||
public R<List<Map<String, Object>>> listTeachers(@RequestParam(required = false) String name,
|
||||
@RequestParam(required = false) String managerType) {
|
||||
return R.ok(xgDormManagerService.queryTeacherList(name, managerType));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增宿舍管理员信息
|
||||
*/
|
||||
@SaCheckPermission("ssglyxx:dormManager:add")
|
||||
@Log(title = "宿舍管理员信息", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XgDormManagerBo bo) {
|
||||
return toAjax(xgDormManagerService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改宿舍管理员信息
|
||||
*/
|
||||
@SaCheckPermission("ssglyxx:dormManager:edit")
|
||||
@Log(title = "宿舍管理员信息", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XgDormManagerBo bo) {
|
||||
return toAjax(xgDormManagerService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除宿舍管理员信息
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("ssglyxx:dormManager:remove")
|
||||
@Log(title = "宿舍管理员信息", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
||||
return toAjax(xgDormManagerService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
+134
@@ -0,0 +1,134 @@
|
||||
package org.dromara.xg.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
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.xg.domain.vo.XgDormManagerSourceVo;
|
||||
import org.dromara.xg.domain.bo.XgDormManagerSourceBo;
|
||||
import org.dromara.xg.service.IXgDormManagerSourceService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 管理员授权关系
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/glysqgx/dormManagerSource")
|
||||
public class XgDormManagerSourceController extends BaseController {
|
||||
|
||||
private final IXgDormManagerSourceService xgDormManagerSourceService;
|
||||
|
||||
/**
|
||||
* 查询管理员授权关系列表
|
||||
*/
|
||||
@SaCheckPermission("glysqgx:dormManagerSource:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XgDormManagerSourceVo> list(XgDormManagerSourceBo bo, PageQuery pageQuery) {
|
||||
return xgDormManagerSourceService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出管理员授权关系列表
|
||||
*/
|
||||
@SaCheckPermission("glysqgx:dormManagerSource:export")
|
||||
@Log(title = "管理员授权关系", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XgDormManagerSourceBo bo, HttpServletResponse response) {
|
||||
List<XgDormManagerSourceVo> list = xgDormManagerSourceService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "管理员授权关系", XgDormManagerSourceVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取管理员授权关系详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("glysqgx:dormManagerSource:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XgDormManagerSourceVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long id) {
|
||||
return R.ok(xgDormManagerSourceService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增管理员授权关系
|
||||
*/
|
||||
@SaCheckPermission("glysqgx:dormManagerSource:add")
|
||||
@Log(title = "管理员授权关系", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XgDormManagerSourceBo bo) {
|
||||
return toAjax(xgDormManagerSourceService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改管理员授权关系
|
||||
*/
|
||||
@SaCheckPermission("glysqgx:dormManagerSource:edit")
|
||||
@Log(title = "管理员授权关系", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XgDormManagerSourceBo bo) {
|
||||
return toAjax(xgDormManagerSourceService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除管理员授权关系
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("glysqgx:dormManagerSource:remove")
|
||||
@Log(title = "管理员授权关系", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) {
|
||||
return toAjax(xgDormManagerSourceService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量分配管理员数据范围
|
||||
*
|
||||
* @param managerId 管理员ID
|
||||
* @param authType 授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)
|
||||
* @param authSourceIds 授权来源ID列表
|
||||
*/
|
||||
@SaCheckPermission("glysqgx:dormManagerSource:edit")
|
||||
@Log(title = "分配管理员数据范围", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/assignScope")
|
||||
public R<Void> assignScope(@RequestParam @NotNull(message = "管理员ID不能为空") Long managerId,
|
||||
@RequestParam @NotNull(message = "授权类型不能为空") Character authType,
|
||||
@RequestBody List<Long> authSourceIds) {
|
||||
return toAjax(xgDormManagerSourceService.assignScope(managerId, authType, authSourceIds));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取管理员授权范围名称
|
||||
*
|
||||
* @param managerId 管理员ID
|
||||
* @param managerType 管理员类型(1全校级 2校区级 3宿舍区级 4楼栋级)
|
||||
* @return 授权范围名称(逗号分隔字符串)
|
||||
*/
|
||||
@SaCheckPermission("glysqgx:dormManagerSource:query")
|
||||
@GetMapping("/getScopeNames")
|
||||
public R<String> getScopeNames(@RequestParam @NotNull(message = "管理员ID不能为空") Long managerId,
|
||||
@RequestParam @NotNull(message = "管理员类型不能为空") Integer managerType) {
|
||||
return R.ok(xgDormManagerSourceService.getScopeNames(managerId, managerType));
|
||||
}
|
||||
}
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
package org.dromara.xg.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
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.xg.domain.vo.XgDormRoomVo;
|
||||
import org.dromara.xg.domain.bo.XgDormRoomBo;
|
||||
import org.dromara.xg.service.IXgDormRoomService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 宿舍房间信息
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-22
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/xgss/dormRoom")
|
||||
public class XgDormRoomController extends BaseController {
|
||||
|
||||
private final IXgDormRoomService xgDormRoomService;
|
||||
|
||||
/**
|
||||
* 查询宿舍房间信息列表
|
||||
*/
|
||||
@SaCheckPermission("xgss:dormRoom:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XgDormRoomVo> list(XgDormRoomBo bo, PageQuery pageQuery) {
|
||||
return xgDormRoomService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出宿舍房间信息列表
|
||||
*/
|
||||
@SaCheckPermission("xgss:dormRoom:export")
|
||||
@Log(title = "宿舍房间信息", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XgDormRoomBo bo, HttpServletResponse response) {
|
||||
List<XgDormRoomVo> list = xgDormRoomService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "宿舍房间信息", XgDormRoomVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取宿舍房间信息详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("xgss:dormRoom:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XgDormRoomVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xgDormRoomService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增宿舍房间信息
|
||||
*/
|
||||
@SaCheckPermission("xgss:dormRoom:add")
|
||||
@Log(title = "宿舍房间信息", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XgDormRoomBo bo) {
|
||||
return toAjax(xgDormRoomService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改宿舍房间信息
|
||||
*/
|
||||
@SaCheckPermission("xgss:dormRoom:edit")
|
||||
@Log(title = "宿舍房间信息", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XgDormRoomBo bo) {
|
||||
return toAjax(xgDormRoomService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除宿舍房间信息
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("xgss:dormRoom:remove")
|
||||
@Log(title = "宿舍房间信息", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(xgDormRoomService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
# 学工管理模块 - 实体类
|
||||
# 此目录用于存放数据库实体类,对应数据库表结构
|
||||
@@ -0,0 +1,66 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 宿舍区信息对象 xg_dorm_area
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_dorm_area")
|
||||
public class XgDormArea extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 宿舍区编码
|
||||
*/
|
||||
private String areaCode;
|
||||
|
||||
/**
|
||||
* 宿舍区名称
|
||||
*/
|
||||
private String areaName;
|
||||
|
||||
/**
|
||||
* 所属校区ID
|
||||
*/
|
||||
private Long campusId;
|
||||
|
||||
/**
|
||||
* 宿舍区描述
|
||||
*/
|
||||
private String areaDescription;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
private Long sortOrder;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private String deleted;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 宿舍楼信息对象 xg_dorm_building
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_dorm_building")
|
||||
public class XgDormBuilding extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 宿舍楼编码
|
||||
*/
|
||||
private String buildingCode;
|
||||
|
||||
/**
|
||||
* 宿舍楼名称
|
||||
*/
|
||||
private String buildingName;
|
||||
|
||||
/**
|
||||
* 所属宿舍区ID
|
||||
*/
|
||||
private Long areaId;
|
||||
|
||||
/**
|
||||
* 所属校区ID
|
||||
*/
|
||||
private Long campusId;
|
||||
|
||||
/**
|
||||
* 宿舍楼类型(1男生楼 2女生楼 3混合楼)
|
||||
*/
|
||||
private String buildingType;
|
||||
|
||||
/**
|
||||
* 宿舍楼描述
|
||||
*/
|
||||
private String buildingDescription;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
private Long sortOrder;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private String deleted;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 总楼层数
|
||||
*/
|
||||
private Integer floors;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 校区信息对象 xg_dorm_campus
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_dorm_campus")
|
||||
public class XgDormCampus extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 校区编码
|
||||
*/
|
||||
private String campusCode;
|
||||
|
||||
/**
|
||||
* 校区名称
|
||||
*/
|
||||
private String campusName;
|
||||
|
||||
/**
|
||||
* 校区描述
|
||||
*/
|
||||
private String campusDescription;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
private Long sortOrder;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private String deleted;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 宿舍管理员信息对象 xg_dorm_manager
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_dorm_manager")
|
||||
public class XgDormManager extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 管理员姓名
|
||||
*/
|
||||
private String managerName;
|
||||
|
||||
/**
|
||||
* 管理员类型(1全校管理员 2校区管理员 3宿舍区管理员 4宿舍楼管理员)
|
||||
*/
|
||||
private String managerType;
|
||||
|
||||
/**
|
||||
* 管理级别(1-5,1为最高)
|
||||
*/
|
||||
private Long managerLevel;
|
||||
|
||||
/**
|
||||
* 关联用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 性别(0男 1女 2未知)
|
||||
*/
|
||||
private String gender;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private String deleted;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 管理员宿舍楼权限关系对象 xg_dorm_manager_building
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_dorm_manager_building")
|
||||
public class XgDormManagerBuilding extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 管理员ID
|
||||
*/
|
||||
private Long managerId;
|
||||
|
||||
/**
|
||||
* 宿舍楼ID
|
||||
*/
|
||||
private Long buildingId;
|
||||
|
||||
/**
|
||||
* 状态(0有效 1已撤销)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private String deleted;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 管理员授权关系对象 xg_dorm_manager_source
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_dorm_manager_source")
|
||||
public class XgDormManagerSource extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 管理员ID
|
||||
*/
|
||||
private Long managerId;
|
||||
|
||||
/**
|
||||
* 权限类型(1查看 2编辑 3完全管理)
|
||||
*/
|
||||
private String permissionType;
|
||||
|
||||
/**
|
||||
* 授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)
|
||||
*/
|
||||
private String authType;
|
||||
|
||||
/**
|
||||
* 授权来源ID(对应校区ID或宿舍区ID或楼栋ID)
|
||||
*/
|
||||
private Long authSource;
|
||||
|
||||
/**
|
||||
* 状态(0有效 1已撤销)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private String deleted;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package org.dromara.xg.domain;
|
||||
|
||||
import org.dromara.common.tenant.core.TenantEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 宿舍房间信息对象 xg_dorm_room
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-22
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xg_dorm_room")
|
||||
public class XgDormRoom extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 房间编号
|
||||
*/
|
||||
private String roomCode;
|
||||
|
||||
/**
|
||||
* 房间名称
|
||||
*/
|
||||
private String roomName;
|
||||
|
||||
/**
|
||||
* 所属宿舍楼ID
|
||||
*/
|
||||
private Long buildingId;
|
||||
|
||||
/**
|
||||
* 楼层
|
||||
*/
|
||||
private Long floorNum;
|
||||
|
||||
/**
|
||||
* 房间类型(1标准间 2 单人间 3 套间)
|
||||
*/
|
||||
private String roomType;
|
||||
|
||||
/**
|
||||
* 实际床位数
|
||||
*/
|
||||
private Long actualBeds;
|
||||
|
||||
/**
|
||||
* 房间面积(平方米)
|
||||
*/
|
||||
private Double roomArea;
|
||||
|
||||
/**
|
||||
* 房间状态(0可用 1维修中 2停用)
|
||||
*/
|
||||
private String roomStatus;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@TableLogic(value = "0", delval = "1")
|
||||
private String deleted;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
# 学工管理模块 - 业务对象(Business Object)
|
||||
# 此目录用于存放业务对象类,用于接收前端参数和业务逻辑处理
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
package org.dromara.xg.domain.bo;
|
||||
|
||||
import java.io.Serializable;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 宿舍楼树查询业务对象
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-07-03
|
||||
*/
|
||||
@Data
|
||||
public class DormBuildingTreeBo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 校区ID
|
||||
*/
|
||||
private Long campusId;
|
||||
|
||||
/**
|
||||
* 宿舍区ID
|
||||
*/
|
||||
private Long areaId;
|
||||
|
||||
/**
|
||||
* 宿舍楼名称(模糊查询)
|
||||
*/
|
||||
private String buildingName;
|
||||
|
||||
/**
|
||||
* 宿舍楼状态
|
||||
*/
|
||||
private String status;
|
||||
}
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
package org.dromara.xg.domain.bo;
|
||||
|
||||
import org.dromara.xg.domain.XgDormArea;
|
||||
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.*;
|
||||
|
||||
/**
|
||||
* 宿舍区信息业务对象 xg_dorm_area
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XgDormArea.class, reverseConvertGenerate = false)
|
||||
public class XgDormAreaBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 宿舍区编码
|
||||
*/
|
||||
@NotBlank(message = "宿舍区编码不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String areaCode;
|
||||
|
||||
/**
|
||||
* 宿舍区名称
|
||||
*/
|
||||
@NotBlank(message = "宿舍区名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String areaName;
|
||||
|
||||
/**
|
||||
* 所属校区ID
|
||||
*/
|
||||
@NotNull(message = "所属校区ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long campusId;
|
||||
|
||||
/**
|
||||
* 宿舍区描述
|
||||
*/
|
||||
private String areaDescription;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
private Long sortOrder;
|
||||
|
||||
|
||||
}
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
package org.dromara.xg.domain.bo;
|
||||
|
||||
import org.dromara.xg.domain.XgDormBuilding;
|
||||
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.*;
|
||||
|
||||
/**
|
||||
* 宿舍楼信息业务对象 xg_dorm_building
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XgDormBuilding.class, reverseConvertGenerate = false)
|
||||
public class XgDormBuildingBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 宿舍楼编码
|
||||
*/
|
||||
@NotBlank(message = "宿舍楼编码不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String buildingCode;
|
||||
|
||||
/**
|
||||
* 宿舍楼名称
|
||||
*/
|
||||
@NotBlank(message = "宿舍楼名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String buildingName;
|
||||
|
||||
/**
|
||||
* 所属宿舍区ID
|
||||
*/
|
||||
@NotNull(message = "所属宿舍区ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long areaId;
|
||||
|
||||
/**
|
||||
* 所属校区ID
|
||||
*/
|
||||
@NotNull(message = "所属校区ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long campusId;
|
||||
|
||||
/**
|
||||
* 宿舍楼类型(1男生楼 2女生楼 3混合楼)
|
||||
*/
|
||||
private String buildingType;
|
||||
|
||||
/**
|
||||
* 宿舍楼描述
|
||||
*/
|
||||
private String buildingDescription;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
private Long sortOrder;
|
||||
|
||||
/**
|
||||
* 总楼层数
|
||||
*/
|
||||
private Integer floors;
|
||||
|
||||
}
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
package org.dromara.xg.domain.bo;
|
||||
|
||||
import org.dromara.xg.domain.XgDormCampus;
|
||||
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.*;
|
||||
|
||||
/**
|
||||
* 校区信息业务对象 xg_dorm_campus
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XgDormCampus.class, reverseConvertGenerate = false)
|
||||
public class XgDormCampusBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 校区编码
|
||||
*/
|
||||
@NotBlank(message = "校区编码不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String campusCode;
|
||||
|
||||
/**
|
||||
* 校区名称
|
||||
*/
|
||||
@NotBlank(message = "校区名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String campusName;
|
||||
|
||||
/**
|
||||
* 校区描述
|
||||
*/
|
||||
private String campusDescription;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
private Long sortOrder;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
package org.dromara.xg.domain.bo;
|
||||
|
||||
import org.dromara.xg.domain.XgDormManager;
|
||||
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.*;
|
||||
|
||||
/**
|
||||
* 宿舍管理员信息业务对象 xg_dorm_manager
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XgDormManager.class, reverseConvertGenerate = false)
|
||||
public class XgDormManagerBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 管理员姓名
|
||||
*/
|
||||
@NotBlank(message = "管理员姓名不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String managerName;
|
||||
|
||||
/**
|
||||
* 管理员类型(1全校管理员 2校区管理员 3宿舍区管理员 4宿舍楼管理员)
|
||||
*/
|
||||
@NotBlank(message = "管理员类型(1全校管理员 2校区管理员 3宿舍区管理员 4宿舍楼管理员)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String managerType;
|
||||
|
||||
/**
|
||||
* 管理级别(1-5,1为最高)
|
||||
*/
|
||||
private Long managerLevel;
|
||||
|
||||
/**
|
||||
* 关联用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 性别(0男 1女 2未知)
|
||||
*/
|
||||
private String gender;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
private String deleted;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
package org.dromara.xg.domain.bo;
|
||||
|
||||
import org.dromara.xg.domain.XgDormManagerBuilding;
|
||||
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.*;
|
||||
|
||||
/**
|
||||
* 管理员宿舍楼权限关系业务对象 xg_dorm_manager_building
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XgDormManagerBuilding.class, reverseConvertGenerate = false)
|
||||
public class XgDormManagerBuildingBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 管理员ID
|
||||
*/
|
||||
@NotNull(message = "管理员ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long managerId;
|
||||
|
||||
/**
|
||||
* 宿舍楼ID
|
||||
*/
|
||||
@NotNull(message = "宿舍楼ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long buildingId;
|
||||
|
||||
/**
|
||||
* 状态(0有效 1已撤销)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
private String deleted;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
package org.dromara.xg.domain.bo;
|
||||
|
||||
import org.dromara.xg.domain.XgDormManagerSource;
|
||||
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.*;
|
||||
|
||||
/**
|
||||
* 管理员授权关系业务对象 xg_dorm_manager_source
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XgDormManagerSource.class, reverseConvertGenerate = false)
|
||||
public class XgDormManagerSourceBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 管理员ID
|
||||
*/
|
||||
@NotNull(message = "管理员ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long managerId;
|
||||
|
||||
/**
|
||||
* 权限类型(1查看 2编辑 3完全管理)
|
||||
*/
|
||||
private String permissionType;
|
||||
|
||||
/**
|
||||
* 授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)
|
||||
*/
|
||||
@NotBlank(message = "授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String authType;
|
||||
|
||||
/**
|
||||
* 授权来源ID(对应校区ID或宿舍区ID或楼栋ID)
|
||||
*/
|
||||
private Long authSource;
|
||||
|
||||
/**
|
||||
* 状态(0有效 1已撤销)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
private String deleted;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
package org.dromara.xg.domain.bo;
|
||||
|
||||
import org.dromara.xg.domain.XgDormRoom;
|
||||
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.*;
|
||||
|
||||
/**
|
||||
* 宿舍房间信息业务对象 xg_dorm_room
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-22
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XgDormRoom.class, reverseConvertGenerate = false)
|
||||
public class XgDormRoomBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 房间编号
|
||||
*/
|
||||
@NotBlank(message = "房间编号不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String roomCode;
|
||||
|
||||
/**
|
||||
* 房间名称
|
||||
*/
|
||||
@NotBlank(message = "房间名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String roomName;
|
||||
|
||||
/**
|
||||
* 所属宿舍楼ID
|
||||
*/
|
||||
@NotNull(message = "所属宿舍楼ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long buildingId;
|
||||
|
||||
/**
|
||||
* 楼层
|
||||
*/
|
||||
@NotNull(message = "楼层不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long floorNum;
|
||||
|
||||
/**
|
||||
* 房间类型(1标准间 2 单人间 3 套间)
|
||||
*/
|
||||
private String roomType;
|
||||
|
||||
/**
|
||||
* 实际床位数
|
||||
*/
|
||||
private Long actualBeds;
|
||||
|
||||
/**
|
||||
* 房间面积(平方米)
|
||||
*/
|
||||
private Double roomArea;
|
||||
|
||||
/**
|
||||
* 房间状态(0可用 1维修中 2停用)
|
||||
*/
|
||||
private String roomStatus;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
private String deleted;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
# 学工管理模块 - 视图对象(View Object)
|
||||
# 此目录用于存放视图对象类,用于返回给前端的数据结构
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 宿舍楼树形结构视图对象
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class BuildingTreeSelectVo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 节点ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 节点名称
|
||||
*/
|
||||
private String label;
|
||||
|
||||
/**
|
||||
* 节点类型(campus:校区 area:宿舍区 building:宿舍楼)
|
||||
*/
|
||||
private String nodeType;
|
||||
|
||||
/**
|
||||
* 是否禁用
|
||||
*/
|
||||
private Boolean disabled;
|
||||
|
||||
/**
|
||||
* 子节点
|
||||
*/
|
||||
private List<BuildingTreeSelectVo> children;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private java.util.Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private java.util.Date updateTime;
|
||||
}
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 宿舍楼信息VO
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-07-03
|
||||
*/
|
||||
@Data
|
||||
public class DormBuildingInfoVo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 宿舍楼ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 宿舍楼名称
|
||||
*/
|
||||
private String buildingName;
|
||||
|
||||
/**
|
||||
* 宿舍楼编号
|
||||
*/
|
||||
private String buildingCode;
|
||||
|
||||
/**
|
||||
* 所属校区ID
|
||||
*/
|
||||
private Long campusId;
|
||||
|
||||
/**
|
||||
* 校区名称
|
||||
*/
|
||||
private String campusName;
|
||||
|
||||
/**
|
||||
* 所属宿舍区ID
|
||||
*/
|
||||
private Long areaId;
|
||||
|
||||
/**
|
||||
* 宿舍区名称
|
||||
*/
|
||||
private String areaName;
|
||||
|
||||
/**
|
||||
* 楼层数
|
||||
*/
|
||||
private Integer floors;
|
||||
|
||||
/**
|
||||
* 房间数
|
||||
*/
|
||||
private Integer roomCount;
|
||||
|
||||
/**
|
||||
* 床位数
|
||||
*/
|
||||
private Integer bedCount;
|
||||
|
||||
/**
|
||||
* 已使用床位数
|
||||
*/
|
||||
private Integer usedBedCount;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1维修中 2停用)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date updateTime;
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 宿舍楼树形结构VO
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-07-03
|
||||
*/
|
||||
@Data
|
||||
public class DormBuildingTreeVo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 节点ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 节点名称
|
||||
*/
|
||||
private String label;
|
||||
|
||||
/**
|
||||
* 节点类型 (campus:校区, area:宿舍区, building:宿舍楼)
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 是否禁用节点(校区和宿舍区节点禁用点击)
|
||||
*/
|
||||
private Boolean disabled;
|
||||
|
||||
/**
|
||||
* 宿舍楼层数(仅宿舍楼节点有此字段)
|
||||
*/
|
||||
private Integer buildingFloors;
|
||||
|
||||
/**
|
||||
* 子节点
|
||||
*/
|
||||
@JsonInclude(JsonInclude.Include.NON_EMPTY)
|
||||
private List<DormBuildingTreeVo> children;
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 教师信息视图对象
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class TeacherVO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 用户名称
|
||||
*/
|
||||
private String userName;
|
||||
|
||||
/**
|
||||
* 手机号码
|
||||
*/
|
||||
private String phonenumber;
|
||||
|
||||
/**
|
||||
* 用户性别(0男 1女 2未知)
|
||||
*/
|
||||
private String sex;
|
||||
|
||||
/**
|
||||
* 头像地址
|
||||
*/
|
||||
private String avatar;
|
||||
|
||||
/**
|
||||
* 部门名称
|
||||
*/
|
||||
private String deptName;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 树形选择视图对象
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class TreeSelectVo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 节点ID */
|
||||
private Long id;
|
||||
|
||||
/** 节点名称 */
|
||||
private String label;
|
||||
|
||||
/** 节点类型(campus:校区, area:宿舍区) */
|
||||
private String type;
|
||||
|
||||
/** 是否可选择 */
|
||||
private Boolean disabled;
|
||||
|
||||
/** 子节点 */
|
||||
private List<TreeSelectVo> children = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* 构造树节点
|
||||
*
|
||||
* @param id 节点ID
|
||||
* @param label 节点标签
|
||||
* @param type 节点类型
|
||||
* @param disabled 是否禁用
|
||||
*/
|
||||
public TreeSelectVo(Long id, String label, String type, Boolean disabled) {
|
||||
this.id = id;
|
||||
this.label = label;
|
||||
this.type = type;
|
||||
this.disabled = disabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加子节点
|
||||
*
|
||||
* @param child 子节点
|
||||
*/
|
||||
public void addChild(TreeSelectVo child) {
|
||||
if (children == null) {
|
||||
children = new ArrayList<>();
|
||||
}
|
||||
children.add(child);
|
||||
}
|
||||
}
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import org.dromara.xg.domain.XgDormArea;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.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;
|
||||
|
||||
/**
|
||||
* 宿舍区信息视图对象 xg_dorm_area
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XgDormArea.class)
|
||||
public class XgDormAreaVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 宿舍区编码
|
||||
*/
|
||||
@ExcelProperty(value = "宿舍区编码")
|
||||
private String areaCode;
|
||||
|
||||
/**
|
||||
* 宿舍区名称
|
||||
*/
|
||||
@ExcelProperty(value = "宿舍区名称")
|
||||
private String areaName;
|
||||
|
||||
/**
|
||||
* 所属校区ID
|
||||
*/
|
||||
@ExcelProperty(value = "所属校区ID")
|
||||
private Long campusId;
|
||||
|
||||
/**
|
||||
* 校区名称
|
||||
*/
|
||||
@ExcelProperty(value = "校区名称")
|
||||
private String campusName;
|
||||
|
||||
/**
|
||||
* 宿舍区描述
|
||||
*/
|
||||
@ExcelProperty(value = "宿舍区描述")
|
||||
private String areaDescription;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@ExcelProperty(value = "排序号")
|
||||
private Long sortOrder;
|
||||
|
||||
}
|
||||
+101
@@ -0,0 +1,101 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import org.dromara.xg.domain.XgDormBuilding;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.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;
|
||||
|
||||
/**
|
||||
* 宿舍楼信息视图对象 xg_dorm_building
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XgDormBuilding.class)
|
||||
public class XgDormBuildingVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 宿舍楼编码
|
||||
*/
|
||||
@ExcelProperty(value = "宿舍楼编码")
|
||||
private String buildingCode;
|
||||
|
||||
/**
|
||||
* 宿舍楼名称
|
||||
*/
|
||||
@ExcelProperty(value = "宿舍楼名称")
|
||||
private String buildingName;
|
||||
|
||||
/**
|
||||
* 所属宿舍区ID
|
||||
*/
|
||||
@ExcelProperty(value = "所属宿舍区ID")
|
||||
private Long areaId;
|
||||
|
||||
/**
|
||||
* 宿舍区名称
|
||||
*/
|
||||
@ExcelProperty(value = "宿舍区名称")
|
||||
private String areaName;
|
||||
|
||||
/**
|
||||
* 所属校区ID
|
||||
*/
|
||||
@ExcelProperty(value = "所属校区ID")
|
||||
private Long campusId;
|
||||
|
||||
/**
|
||||
* 校区名称
|
||||
*/
|
||||
@ExcelProperty(value = "校区名称")
|
||||
private String campusName;
|
||||
|
||||
/**
|
||||
* 宿舍楼类型(1男生楼 2女生楼 3混合楼)
|
||||
*/
|
||||
@ExcelProperty(value = "宿舍楼类型(1男生楼 2女生楼 3混合楼)", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "dorm_type")
|
||||
private String buildingType;
|
||||
|
||||
/**
|
||||
* 宿舍楼描述
|
||||
*/
|
||||
@ExcelProperty(value = "宿舍楼描述")
|
||||
private String buildingDescription;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@ExcelProperty(value = "排序号")
|
||||
private Long sortOrder;
|
||||
|
||||
/**
|
||||
* 总楼层数
|
||||
*/
|
||||
@ExcelProperty(value = "总楼层数")
|
||||
private Integer floors;
|
||||
|
||||
// 基础字段
|
||||
private Long createBy; // 创建者
|
||||
private Date createTime; // 创建时间
|
||||
private Long updateBy; // 更新者
|
||||
private Date updateTime; // 更新时间
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import org.dromara.xg.domain.XgDormCampus;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.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;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 校区信息视图对象 xg_dorm_campus
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XgDormCampus.class)
|
||||
public class XgDormCampusVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 校区编码
|
||||
*/
|
||||
@ExcelProperty(value = "校区编码")
|
||||
private String campusCode;
|
||||
|
||||
/**
|
||||
* 校区名称
|
||||
*/
|
||||
@ExcelProperty(value = "校区名称")
|
||||
private String campusName;
|
||||
|
||||
/**
|
||||
* 校区描述
|
||||
*/
|
||||
@ExcelProperty(value = "校区描述")
|
||||
private String campusDescription;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
@ExcelProperty(value = "排序号")
|
||||
private Long sortOrder;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import org.dromara.xg.domain.XgDormManagerBuilding;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.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;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 管理员宿舍楼权限关系视图对象 xg_dorm_manager_building
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XgDormManagerBuilding.class)
|
||||
public class XgDormManagerBuildingVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 管理员ID
|
||||
*/
|
||||
@ExcelProperty(value = "管理员ID")
|
||||
private Long managerId;
|
||||
|
||||
/**
|
||||
* 宿舍楼ID
|
||||
*/
|
||||
@ExcelProperty(value = "宿舍楼ID")
|
||||
private Long buildingId;
|
||||
|
||||
/**
|
||||
* 状态(0有效 1已撤销)
|
||||
*/
|
||||
@ExcelProperty(value = "状态(0有效 1已撤销)")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@ExcelProperty(value = "删除标志(0代表存在 1代表删除)")
|
||||
private String deleted;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import org.dromara.xg.domain.XgDormManagerSource;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.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;
|
||||
|
||||
/**
|
||||
* 管理员授权关系视图对象 xg_dorm_manager_source
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XgDormManagerSource.class)
|
||||
public class XgDormManagerSourceVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 管理员ID
|
||||
*/
|
||||
@ExcelProperty(value = "管理员ID")
|
||||
private Long managerId;
|
||||
|
||||
/**
|
||||
* 权限类型(1查看 2编辑 3完全管理)
|
||||
*/
|
||||
@ExcelProperty(value = "权限类型(1查看 2编辑 3完全管理)")
|
||||
private String permissionType;
|
||||
|
||||
/**
|
||||
* 授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)
|
||||
*/
|
||||
@ExcelProperty(value = "授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)")
|
||||
private String authType;
|
||||
|
||||
/**
|
||||
* 授权来源ID(对应校区ID或宿舍区ID或楼栋ID)
|
||||
*/
|
||||
@ExcelProperty(value = "授权来源ID(对应校区ID或宿舍区ID或楼栋ID)")
|
||||
private Long authSource;
|
||||
|
||||
/**
|
||||
* 状态(0有效 1已撤销)
|
||||
*/
|
||||
@ExcelProperty(value = "状态(0有效 1已撤销)")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@ExcelProperty(value = "删除标志(0代表存在 1代表删除)")
|
||||
private String deleted;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import org.dromara.xg.domain.XgDormManager;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.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;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 宿舍管理员信息视图对象 xg_dorm_manager
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XgDormManager.class)
|
||||
public class XgDormManagerVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 管理员姓名
|
||||
*/
|
||||
@ExcelProperty(value = "管理员姓名")
|
||||
private String managerName;
|
||||
|
||||
/**
|
||||
* 管理员类型(1全校管理员 2校区管理员 3宿舍区管理员 4宿舍楼管理员)
|
||||
*/
|
||||
@ExcelProperty(value = "管理员类型(1全校管理员 2校区管理员 3宿舍区管理员 4宿舍楼管理员)")
|
||||
private String managerType;
|
||||
|
||||
/**
|
||||
* 管理级别(1-5,1为最高)
|
||||
*/
|
||||
@ExcelProperty(value = "管理级别(1-5,1为最高)")
|
||||
private Long managerLevel;
|
||||
|
||||
/**
|
||||
* 关联用户ID
|
||||
*/
|
||||
@ExcelProperty(value = "关联用户ID")
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
@ExcelProperty(value = "联系电话")
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 性别(0男 1女 2未知)
|
||||
*/
|
||||
@ExcelProperty(value = "性别(0男 1女 2未知)")
|
||||
private String gender;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
*/
|
||||
@ExcelProperty(value = "状态(0正常 1停用)")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@ExcelProperty(value = "删除标志(0代表存在 1代表删除)")
|
||||
private String deleted;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
package org.dromara.xg.domain.vo;
|
||||
|
||||
import org.dromara.xg.domain.XgDormRoom;
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.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;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 宿舍房间信息视图对象 xg_dorm_room
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-22
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XgDormRoom.class)
|
||||
public class XgDormRoomVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 房间编号
|
||||
*/
|
||||
@ExcelProperty(value = "房间编号")
|
||||
private String roomCode;
|
||||
|
||||
/**
|
||||
* 房间名称
|
||||
*/
|
||||
@ExcelProperty(value = "房间名称")
|
||||
private String roomName;
|
||||
|
||||
/**
|
||||
* 所属宿舍楼ID
|
||||
*/
|
||||
@ExcelProperty(value = "所属宿舍楼ID")
|
||||
private Long buildingId;
|
||||
|
||||
/**
|
||||
* 楼层
|
||||
*/
|
||||
@ExcelProperty(value = "楼层")
|
||||
private Long floorNum;
|
||||
|
||||
/**
|
||||
* 房间类型(1标准间 2 单人间 3 套间)
|
||||
*/
|
||||
@ExcelProperty(value = "房间类型(1标准间 2 单人间 3 套间)")
|
||||
private String roomType;
|
||||
|
||||
/**
|
||||
* 实际床位数
|
||||
*/
|
||||
@ExcelProperty(value = "实际床位数")
|
||||
private Long actualBeds;
|
||||
|
||||
/**
|
||||
* 房间面积(平方米)
|
||||
*/
|
||||
@ExcelProperty(value = "房间面积(平方米)")
|
||||
private Double roomArea;
|
||||
|
||||
/**
|
||||
* 房间状态(0可用 1维修中 2停用)
|
||||
*/
|
||||
@ExcelProperty(value = "房间状态(0可用 1维修中 2停用)")
|
||||
private String roomStatus;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
@ExcelProperty(value = "删除标志(0代表存在 1代表删除)")
|
||||
private String deleted;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
# 学工管理模块 - 数据访问层
|
||||
# 此目录用于存放MyBatis Mapper接口
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgDormArea;
|
||||
import org.dromara.xg.domain.vo.XgDormAreaVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.xg.domain.bo.XgDormAreaBo;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
|
||||
/**
|
||||
* 宿舍区信息Mapper接口
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
public interface XgDormAreaMapper extends BaseMapperPlus<XgDormArea, XgDormAreaVo> {
|
||||
|
||||
/**
|
||||
* 分页查询并返回校区名称
|
||||
*/
|
||||
Page<XgDormAreaVo> selectPageWithCampusName(Page<?> page,
|
||||
@org.apache.ibatis.annotations.Param("bo") XgDormAreaBo bo);
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgDormBuilding;
|
||||
import org.dromara.xg.domain.vo.XgDormBuildingVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.xg.domain.bo.XgDormBuildingBo;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
|
||||
/**
|
||||
* 宿舍楼信息Mapper接口
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
public interface XgDormBuildingMapper extends BaseMapperPlus<XgDormBuilding, XgDormBuildingVo> {
|
||||
|
||||
/**
|
||||
* 分页查询并返回校区名称和宿舍区名称
|
||||
*/
|
||||
Page<XgDormBuildingVo> selectPageWithAreaAndCampusName(Page<?> page,
|
||||
@org.apache.ibatis.annotations.Param("bo") XgDormBuildingBo bo);
|
||||
}
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.dromara.xg.domain.vo.DormBuildingInfoVo;
|
||||
import org.dromara.xg.domain.bo.DormBuildingTreeBo;
|
||||
|
||||
/**
|
||||
* 宿舍楼树形结构Mapper接口
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-07-03
|
||||
*/
|
||||
public interface XgDormBuildingTreeMapper {
|
||||
|
||||
/**
|
||||
* 获取所有校区信息
|
||||
*
|
||||
* @return 校区列表
|
||||
*/
|
||||
List<DormBuildingInfoVo> selectCampusList();
|
||||
|
||||
/**
|
||||
* 获取所有宿舍区信息
|
||||
*
|
||||
* @return 宿舍区列表
|
||||
*/
|
||||
List<DormBuildingInfoVo> selectAreaList();
|
||||
|
||||
/**
|
||||
* 获取所有宿舍楼信息
|
||||
*
|
||||
* @return 宿舍楼列表
|
||||
*/
|
||||
List<DormBuildingInfoVo> selectBuildingList(DormBuildingTreeBo bo);
|
||||
|
||||
/**
|
||||
* 获取全校管理员权限的宿舍楼信息
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @param bo 查询参数
|
||||
* @return 宿舍楼列表
|
||||
*/
|
||||
List<DormBuildingInfoVo> selectBuildingsBySchoolAdmin(@Param("userId") Long userId,
|
||||
@Param("bo") DormBuildingTreeBo bo);
|
||||
|
||||
/**
|
||||
* 获取校区管理员权限的宿舍楼信息
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @param bo 查询参数
|
||||
* @return 宿舍楼列表
|
||||
*/
|
||||
List<DormBuildingInfoVo> selectBuildingsByCampusAdmin(@Param("userId") Long userId,
|
||||
@Param("bo") DormBuildingTreeBo bo);
|
||||
|
||||
/**
|
||||
* 获取宿舍区管理员权限的宿舍楼信息
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @param bo 查询参数
|
||||
* @return 宿舍楼列表
|
||||
*/
|
||||
List<DormBuildingInfoVo> selectBuildingsByAreaAdmin(@Param("userId") Long userId,
|
||||
@Param("bo") DormBuildingTreeBo bo);
|
||||
|
||||
/**
|
||||
* 获取宿舍楼管理员权限的宿舍楼信息
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @param bo 查询参数
|
||||
* @return 宿舍楼列表
|
||||
*/
|
||||
List<DormBuildingInfoVo> selectBuildingsByBuildingAdmin(@Param("userId") Long userId,
|
||||
@Param("bo") DormBuildingTreeBo bo);
|
||||
|
||||
/**
|
||||
* 检查用户是否有宿舍管理权限
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @return 管理员类型列表 (1全校管理员 2校区管理员 3宿舍区管理员 4宿舍楼管理员)
|
||||
*/
|
||||
List<String> checkUserDormManagerType(@Param("userId") Long userId);
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgDormCampus;
|
||||
import org.dromara.xg.domain.vo.XgDormCampusVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 校区信息Mapper接口
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
public interface XgDormCampusMapper extends BaseMapperPlus<XgDormCampus, XgDormCampusVo> {
|
||||
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgDormManagerBuilding;
|
||||
import org.dromara.xg.domain.vo.XgDormManagerBuildingVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 管理员宿舍楼权限关系Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
public interface XgDormManagerBuildingMapper extends BaseMapperPlus<XgDormManagerBuilding, XgDormManagerBuildingVo> {
|
||||
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgDormManager;
|
||||
import org.dromara.xg.domain.vo.XgDormManagerVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 宿舍管理员信息Mapper接口
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
public interface XgDormManagerMapper extends BaseMapperPlus<XgDormManager, XgDormManagerVo> {
|
||||
|
||||
}
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.dromara.xg.domain.XgDormManagerSource;
|
||||
import org.dromara.xg.domain.vo.XgDormManagerSourceVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 管理员授权关系Mapper接口
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
public interface XgDormManagerSourceMapper extends BaseMapperPlus<XgDormManagerSource, XgDormManagerSourceVo> {
|
||||
|
||||
/**
|
||||
* 根据ID列表获取校区名称(逗号分隔)
|
||||
*
|
||||
* @param sourceIds 校区ID列表
|
||||
* @return 校区名称,多个以逗号分隔
|
||||
*/
|
||||
String getCampusNamesByIds(@Param("sourceIds") List<Long> sourceIds);
|
||||
|
||||
/**
|
||||
* 根据ID列表获取宿舍区名称(逗号分隔)
|
||||
*
|
||||
* @param sourceIds 宿舍区ID列表
|
||||
* @return 宿舍区名称,多个以逗号分隔
|
||||
*/
|
||||
String getAreaNamesByIds(@Param("sourceIds") List<Long> sourceIds);
|
||||
|
||||
/**
|
||||
* 根据ID列表获取宿舍楼名称(逗号分隔)
|
||||
*
|
||||
* @param sourceIds 宿舍楼ID列表
|
||||
* @return 宿舍楼名称,多个以逗号分隔
|
||||
*/
|
||||
String getBuildingNamesByIds(@Param("sourceIds") List<Long> sourceIds);
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package org.dromara.xg.mapper;
|
||||
|
||||
import org.dromara.xg.domain.XgDormRoom;
|
||||
import org.dromara.xg.domain.vo.XgDormRoomVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 宿舍房间信息Mapper接口
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-22
|
||||
*/
|
||||
public interface XgDormRoomMapper extends BaseMapperPlus<XgDormRoom, XgDormRoomVo> {
|
||||
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
# 学工管理模块 - 业务服务接口层
|
||||
# 此目录用于存放Service接口定义
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.xg.domain.vo.XgDormAreaVo;
|
||||
import org.dromara.xg.domain.bo.XgDormAreaBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.xg.domain.vo.TreeSelectVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 宿舍区信息Service接口
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
public interface IXgDormAreaService {
|
||||
|
||||
/**
|
||||
* 查询宿舍区信息
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 宿舍区信息
|
||||
*/
|
||||
XgDormAreaVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询宿舍区信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 宿舍区信息分页列表
|
||||
*/
|
||||
TableDataInfo<XgDormAreaVo> queryPageList(XgDormAreaBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的宿舍区信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 宿舍区信息列表
|
||||
*/
|
||||
List<XgDormAreaVo> queryList(XgDormAreaBo bo);
|
||||
|
||||
/**
|
||||
* 新增宿舍区信息
|
||||
*
|
||||
* @param bo 宿舍区信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XgDormAreaBo bo);
|
||||
|
||||
/**
|
||||
* 修改宿舍区信息
|
||||
*
|
||||
* @param bo 宿舍区信息
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XgDormAreaBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除宿舍区信息信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 获取宿舍区树形结构数据
|
||||
* 以校区为根节点,宿舍区为子节点
|
||||
*
|
||||
* @return 宿舍区树形结构列表
|
||||
*/
|
||||
List<TreeSelectVo> getAreaTree();
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.xg.domain.vo.XgDormBuildingVo;
|
||||
import org.dromara.xg.domain.bo.XgDormBuildingBo;
|
||||
import org.dromara.xg.domain.vo.BuildingTreeSelectVo;
|
||||
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 zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
public interface IXgDormBuildingService {
|
||||
|
||||
/**
|
||||
* 查询宿舍楼信息
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 宿舍楼信息
|
||||
*/
|
||||
XgDormBuildingVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询宿舍楼信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 宿舍楼信息分页列表
|
||||
*/
|
||||
TableDataInfo<XgDormBuildingVo> queryPageList(XgDormBuildingBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的宿舍楼信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 宿舍楼信息列表
|
||||
*/
|
||||
List<XgDormBuildingVo> queryList(XgDormBuildingBo bo);
|
||||
|
||||
/**
|
||||
* 新增宿舍楼信息
|
||||
*
|
||||
* @param bo 宿舍楼信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XgDormBuildingBo bo);
|
||||
|
||||
/**
|
||||
* 修改宿舍楼信息
|
||||
*
|
||||
* @param bo 宿舍楼信息
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XgDormBuildingBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除宿舍楼信息信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 获取宿舍楼树形结构数据
|
||||
* 校区-宿舍区-宿舍楼三级结构,校区和宿舍区不可选,只有宿舍楼可以选择
|
||||
*
|
||||
* @return 树形结构数据
|
||||
*/
|
||||
List<BuildingTreeSelectVo> getBuildingTreeData();
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import java.util.List;
|
||||
import org.dromara.xg.domain.vo.DormBuildingTreeVo;
|
||||
import org.dromara.xg.domain.bo.DormBuildingTreeBo;
|
||||
|
||||
/**
|
||||
* 宿舍楼树形结构服务接口
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-07-03
|
||||
*/
|
||||
public interface IXgDormBuildingTreeService {
|
||||
|
||||
/**
|
||||
* 获取宿舍楼树形结构数据
|
||||
*
|
||||
* @param bo 查询参数
|
||||
* @return 树形结构数据
|
||||
*/
|
||||
List<DormBuildingTreeVo> getDormBuildingTree(DormBuildingTreeBo bo);
|
||||
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.xg.domain.vo.XgDormCampusVo;
|
||||
import org.dromara.xg.domain.bo.XgDormCampusBo;
|
||||
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 zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
public interface IXgDormCampusService {
|
||||
|
||||
/**
|
||||
* 查询校区信息
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 校区信息
|
||||
*/
|
||||
XgDormCampusVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询校区信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 校区信息分页列表
|
||||
*/
|
||||
TableDataInfo<XgDormCampusVo> queryPageList(XgDormCampusBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的校区信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 校区信息列表
|
||||
*/
|
||||
List<XgDormCampusVo> queryList(XgDormCampusBo bo);
|
||||
|
||||
/**
|
||||
* 新增校区信息
|
||||
*
|
||||
* @param bo 校区信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XgDormCampusBo bo);
|
||||
|
||||
/**
|
||||
* 修改校区信息
|
||||
*
|
||||
* @param bo 校区信息
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XgDormCampusBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除校区信息信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.xg.domain.vo.XgDormManagerBuildingVo;
|
||||
import org.dromara.xg.domain.bo.XgDormManagerBuildingBo;
|
||||
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-07-20
|
||||
*/
|
||||
public interface IXgDormManagerBuildingService {
|
||||
|
||||
/**
|
||||
* 查询管理员宿舍楼权限关系
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 管理员宿舍楼权限关系
|
||||
*/
|
||||
XgDormManagerBuildingVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询管理员宿舍楼权限关系列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 管理员宿舍楼权限关系分页列表
|
||||
*/
|
||||
TableDataInfo<XgDormManagerBuildingVo> queryPageList(XgDormManagerBuildingBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的管理员宿舍楼权限关系列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 管理员宿舍楼权限关系列表
|
||||
*/
|
||||
List<XgDormManagerBuildingVo> queryList(XgDormManagerBuildingBo bo);
|
||||
|
||||
/**
|
||||
* 新增管理员宿舍楼权限关系
|
||||
*
|
||||
* @param bo 管理员宿舍楼权限关系
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XgDormManagerBuildingBo bo);
|
||||
|
||||
/**
|
||||
* 修改管理员宿舍楼权限关系
|
||||
*
|
||||
* @param bo 管理员宿舍楼权限关系
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XgDormManagerBuildingBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除管理员宿舍楼权限关系信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.xg.domain.vo.XgDormManagerVo;
|
||||
import org.dromara.xg.domain.bo.XgDormManagerBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 宿舍管理员信息Service接口
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
public interface IXgDormManagerService {
|
||||
|
||||
/**
|
||||
* 查询宿舍管理员信息
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 宿舍管理员信息
|
||||
*/
|
||||
XgDormManagerVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询宿舍管理员信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 宿舍管理员信息分页列表
|
||||
*/
|
||||
TableDataInfo<XgDormManagerVo> queryPageList(XgDormManagerBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的宿舍管理员信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 宿舍管理员信息列表
|
||||
*/
|
||||
List<XgDormManagerVo> queryList(XgDormManagerBo bo);
|
||||
|
||||
/**
|
||||
* 查询教师列表(用于下拉选择)
|
||||
*
|
||||
* @param name 教师姓名(可选,用于模糊查询)
|
||||
* @return 教师列表
|
||||
*/
|
||||
List<Map<String, Object>> queryTeacherList(String name, String managerType);
|
||||
|
||||
/**
|
||||
* 新增宿舍管理员信息
|
||||
*
|
||||
* @param bo 宿舍管理员信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XgDormManagerBo bo);
|
||||
|
||||
/**
|
||||
* 修改宿舍管理员信息
|
||||
*
|
||||
* @param bo 宿舍管理员信息
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XgDormManagerBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除宿舍管理员信息信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.xg.domain.vo.XgDormManagerSourceVo;
|
||||
import org.dromara.xg.domain.bo.XgDormManagerSourceBo;
|
||||
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 zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
public interface IXgDormManagerSourceService {
|
||||
|
||||
/**
|
||||
* 查询管理员授权关系
|
||||
*/
|
||||
XgDormManagerSourceVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询管理员授权关系列表
|
||||
*/
|
||||
TableDataInfo<XgDormManagerSourceVo> queryPageList(XgDormManagerSourceBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询管理员授权关系列表
|
||||
*/
|
||||
List<XgDormManagerSourceVo> queryList(XgDormManagerSourceBo bo);
|
||||
|
||||
/**
|
||||
* 新增管理员授权关系
|
||||
*/
|
||||
Boolean insertByBo(XgDormManagerSourceBo bo);
|
||||
|
||||
/**
|
||||
* 修改管理员授权关系
|
||||
*/
|
||||
Boolean updateByBo(XgDormManagerSourceBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除管理员授权关系信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 批量分配管理员数据范围
|
||||
*
|
||||
* @param managerId 管理员ID
|
||||
* @param authType 授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)
|
||||
* @param authSourceIds 授权来源ID列表
|
||||
* @return 结果
|
||||
*/
|
||||
Boolean assignScope(Long managerId, Character authType, List<Long> authSourceIds);
|
||||
|
||||
/**
|
||||
* 获取管理员授权范围名称
|
||||
*
|
||||
* @param managerId 管理员ID
|
||||
* @param managerType 管理员类型(1全校级 2校区级 3宿舍区级 4楼栋级)
|
||||
* @return 授权范围名称(逗号分隔字符串)
|
||||
*/
|
||||
String getScopeNames(Long managerId, Integer managerType);
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
package org.dromara.xg.service;
|
||||
|
||||
import org.dromara.xg.domain.vo.XgDormRoomVo;
|
||||
import org.dromara.xg.domain.bo.XgDormRoomBo;
|
||||
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 zlwu
|
||||
* @date 2025-07-22
|
||||
*/
|
||||
public interface IXgDormRoomService {
|
||||
|
||||
/**
|
||||
* 查询宿舍房间信息
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 宿舍房间信息
|
||||
*/
|
||||
XgDormRoomVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询宿舍房间信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 宿舍房间信息分页列表
|
||||
*/
|
||||
TableDataInfo<XgDormRoomVo> queryPageList(XgDormRoomBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的宿舍房间信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 宿舍房间信息列表
|
||||
*/
|
||||
List<XgDormRoomVo> queryList(XgDormRoomBo bo);
|
||||
|
||||
/**
|
||||
* 新增宿舍房间信息
|
||||
*
|
||||
* @param bo 宿舍房间信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XgDormRoomBo bo);
|
||||
|
||||
/**
|
||||
* 修改宿舍房间信息
|
||||
*
|
||||
* @param bo 宿舍房间信息
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XgDormRoomBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除宿舍房间信息信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
# 学工管理模块 - 业务服务实现层
|
||||
# 此目录用于存放Service接口的实现类
|
||||
+193
@@ -0,0 +1,193 @@
|
||||
package org.dromara.xg.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 lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.xg.domain.bo.XgDormAreaBo;
|
||||
import org.dromara.xg.domain.bo.XgDormCampusBo;
|
||||
import org.dromara.xg.domain.vo.XgDormAreaVo;
|
||||
import org.dromara.xg.domain.vo.XgDormCampusVo;
|
||||
import org.dromara.xg.domain.XgDormArea;
|
||||
import org.dromara.xg.domain.vo.TreeSelectVo;
|
||||
import org.dromara.xg.mapper.XgDormAreaMapper;
|
||||
import org.dromara.xg.service.IXgDormAreaService;
|
||||
import org.dromara.xg.service.IXgDormCampusService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 宿舍区信息Service业务层处理
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XgDormAreaServiceImpl implements IXgDormAreaService {
|
||||
|
||||
private final XgDormAreaMapper baseMapper;
|
||||
private final IXgDormCampusService dormCampusService;
|
||||
|
||||
/**
|
||||
* 查询宿舍区信息
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 宿舍区信息
|
||||
*/
|
||||
@Override
|
||||
public XgDormAreaVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询宿舍区信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 宿舍区信息分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XgDormAreaVo> queryPageList(XgDormAreaBo bo, PageQuery pageQuery) {
|
||||
Page<XgDormAreaVo> result = baseMapper.selectPageWithCampusName(pageQuery.build(), bo);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的宿舍区信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 宿舍区信息列表
|
||||
*/
|
||||
@Override
|
||||
public List<XgDormAreaVo> queryList(XgDormAreaBo bo) {
|
||||
LambdaQueryWrapper<XgDormArea> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XgDormArea> buildQueryWrapper(XgDormAreaBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XgDormArea> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(XgDormArea::getId);
|
||||
lqw.like(StringUtils.isNotBlank(bo.getAreaCode()), XgDormArea::getAreaCode, bo.getAreaCode());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getAreaName()), XgDormArea::getAreaName, bo.getAreaName());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getAreaDescription()), XgDormArea::getAreaDescription,
|
||||
bo.getAreaDescription());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增宿舍区信息
|
||||
*
|
||||
* @param bo 宿舍区信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XgDormAreaBo bo) {
|
||||
XgDormArea add = MapstructUtils.convert(bo, XgDormArea.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改宿舍区信息
|
||||
*
|
||||
* @param bo 宿舍区信息
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XgDormAreaBo bo) {
|
||||
XgDormArea update = MapstructUtils.convert(bo, XgDormArea.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XgDormArea entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除宿舍区信息信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
// TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取宿舍区树形结构数据
|
||||
* 以校区为根节点,宿舍区为子节点
|
||||
*
|
||||
* @return 宿舍区树形结构列表
|
||||
*/
|
||||
@Override
|
||||
public List<TreeSelectVo> getAreaTree() {
|
||||
// 1. 获取所有校区数据
|
||||
List<XgDormCampusVo> campusList = dormCampusService.queryList(new XgDormCampusBo());
|
||||
|
||||
// 2. 获取所有宿舍区数据
|
||||
List<XgDormAreaVo> areaList = queryList(new XgDormAreaBo());
|
||||
|
||||
// 3. 构建树形结构
|
||||
List<TreeSelectVo> treeList = new ArrayList<>();
|
||||
|
||||
// 4. 创建校区节点(校区节点不可选择)
|
||||
for (XgDormCampusVo campus : campusList) {
|
||||
// 校区节点不可选择
|
||||
TreeSelectVo campusNode = new TreeSelectVo(
|
||||
campus.getId(),
|
||||
campus.getCampusName(),
|
||||
"campus",
|
||||
true // 禁用校区节点,不可选择
|
||||
);
|
||||
|
||||
// 5. 添加对应校区的宿舍区节点
|
||||
List<XgDormAreaVo> campusAreas = areaList.stream()
|
||||
.filter(area -> campus.getId().equals(area.getCampusId()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
for (XgDormAreaVo area : campusAreas) {
|
||||
// 宿舍区节点可选择
|
||||
TreeSelectVo areaNode = new TreeSelectVo(
|
||||
area.getId(),
|
||||
area.getAreaName(),
|
||||
"area",
|
||||
false // 不禁用宿舍区节点,可以选择
|
||||
);
|
||||
campusNode.addChild(areaNode);
|
||||
}
|
||||
|
||||
// 只有包含子节点的校区才添加到树中
|
||||
if (!campusNode.getChildren().isEmpty()) {
|
||||
treeList.add(campusNode);
|
||||
}
|
||||
}
|
||||
|
||||
return treeList;
|
||||
}
|
||||
}
|
||||
+236
@@ -0,0 +1,236 @@
|
||||
package org.dromara.xg.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 lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.xg.domain.bo.XgDormBuildingBo;
|
||||
import org.dromara.xg.domain.vo.XgDormBuildingVo;
|
||||
import org.dromara.xg.domain.XgDormBuilding;
|
||||
import org.dromara.xg.domain.XgDormArea;
|
||||
import org.dromara.xg.domain.XgDormCampus;
|
||||
import org.dromara.xg.domain.vo.BuildingTreeSelectVo;
|
||||
import org.dromara.xg.mapper.XgDormBuildingMapper;
|
||||
import org.dromara.xg.mapper.XgDormAreaMapper;
|
||||
import org.dromara.xg.mapper.XgDormCampusMapper;
|
||||
import org.dromara.xg.service.IXgDormBuildingService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
import java.util.ArrayList;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 宿舍楼信息Service业务层处理
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XgDormBuildingServiceImpl implements IXgDormBuildingService {
|
||||
|
||||
private final XgDormBuildingMapper baseMapper;
|
||||
private final XgDormAreaMapper areaMapper;
|
||||
private final XgDormCampusMapper campusMapper;
|
||||
|
||||
/**
|
||||
* 查询宿舍楼信息
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 宿舍楼信息
|
||||
*/
|
||||
@Override
|
||||
public XgDormBuildingVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询宿舍楼信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 宿舍楼信息分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XgDormBuildingVo> queryPageList(XgDormBuildingBo bo, PageQuery pageQuery) {
|
||||
Page<XgDormBuildingVo> result = baseMapper.selectPageWithAreaAndCampusName(pageQuery.build(), bo);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的宿舍楼信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 宿舍楼信息列表
|
||||
*/
|
||||
@Override
|
||||
public List<XgDormBuildingVo> queryList(XgDormBuildingBo bo) {
|
||||
LambdaQueryWrapper<XgDormBuilding> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XgDormBuilding> buildQueryWrapper(XgDormBuildingBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XgDormBuilding> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(XgDormBuilding::getId);
|
||||
lqw.like(StringUtils.isNotBlank(bo.getBuildingCode()), XgDormBuilding::getBuildingCode, bo.getBuildingCode());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getBuildingName()), XgDormBuilding::getBuildingName, bo.getBuildingName());
|
||||
lqw.eq(bo.getAreaId() != null, XgDormBuilding::getAreaId, bo.getAreaId());
|
||||
lqw.eq(bo.getCampusId() != null, XgDormBuilding::getCampusId, bo.getCampusId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getBuildingType()), XgDormBuilding::getBuildingType, bo.getBuildingType());
|
||||
lqw.eq(bo.getSortOrder() != null, XgDormBuilding::getSortOrder, bo.getSortOrder());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增宿舍楼信息
|
||||
*
|
||||
* @param bo 宿舍楼信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XgDormBuildingBo bo) {
|
||||
XgDormBuilding add = MapstructUtils.convert(bo, XgDormBuilding.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改宿舍楼信息
|
||||
*
|
||||
* @param bo 宿舍楼信息
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XgDormBuildingBo bo) {
|
||||
XgDormBuilding update = MapstructUtils.convert(bo, XgDormBuilding.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XgDormBuilding entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除宿舍楼信息信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
// TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取宿舍楼树形结构数据
|
||||
* 校区-宿舍区-宿舍楼三级结构,校区和宿舍区不可选,只有宿舍楼可以选择
|
||||
*
|
||||
* @return 宿舍楼树形结构数据
|
||||
*/
|
||||
@Override
|
||||
public List<BuildingTreeSelectVo> getBuildingTreeData() {
|
||||
// 1. 获取所有校区数据
|
||||
List<XgDormCampus> campusList = campusMapper.selectList(
|
||||
Wrappers.<XgDormCampus>lambdaQuery()
|
||||
.orderByAsc(XgDormCampus::getSortOrder, XgDormCampus::getId));
|
||||
|
||||
// 2. 获取所有宿舍区数据
|
||||
List<XgDormArea> areaList = areaMapper.selectList(
|
||||
Wrappers.<XgDormArea>lambdaQuery()
|
||||
.orderByAsc(XgDormArea::getSortOrder, XgDormArea::getId));
|
||||
|
||||
// 3. 获取所有宿舍楼数据
|
||||
List<XgDormBuilding> buildingList = baseMapper.selectList(
|
||||
Wrappers.<XgDormBuilding>lambdaQuery()
|
||||
.orderByAsc(XgDormBuilding::getSortOrder, XgDormBuilding::getId));
|
||||
|
||||
// 4. 构建树形结构
|
||||
List<BuildingTreeSelectVo> treeList = new ArrayList<>();
|
||||
|
||||
// 5. 先构建校区节点
|
||||
for (XgDormCampus campus : campusList) {
|
||||
BuildingTreeSelectVo campusNode = new BuildingTreeSelectVo();
|
||||
campusNode.setId(campus.getId());
|
||||
campusNode.setLabel(campus.getCampusName());
|
||||
campusNode.setNodeType("campus");
|
||||
campusNode.setDisabled(true); // 校区不可选
|
||||
campusNode.setChildren(new ArrayList<>());
|
||||
|
||||
// 设置创建者和更新者字段
|
||||
campusNode.setCreateBy(campus.getCreateBy());
|
||||
campusNode.setCreateTime(campus.getCreateTime());
|
||||
campusNode.setUpdateBy(campus.getUpdateBy());
|
||||
campusNode.setUpdateTime(campus.getUpdateTime());
|
||||
|
||||
// 添加该校区下的宿舍区
|
||||
List<XgDormArea> campusAreas = areaList.stream()
|
||||
.filter(area -> area.getCampusId().equals(campus.getId()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
for (XgDormArea area : campusAreas) {
|
||||
BuildingTreeSelectVo areaNode = new BuildingTreeSelectVo();
|
||||
areaNode.setId(area.getId());
|
||||
areaNode.setLabel(area.getAreaName());
|
||||
areaNode.setNodeType("area");
|
||||
areaNode.setDisabled(true); // 宿舍区不可选
|
||||
areaNode.setChildren(new ArrayList<>());
|
||||
|
||||
// 设置创建者和更新者字段
|
||||
areaNode.setCreateBy(area.getCreateBy());
|
||||
areaNode.setCreateTime(area.getCreateTime());
|
||||
areaNode.setUpdateBy(area.getUpdateBy());
|
||||
areaNode.setUpdateTime(area.getUpdateTime());
|
||||
|
||||
// 添加该宿舍区下的宿舍楼
|
||||
List<XgDormBuilding> areaBuildings = buildingList.stream()
|
||||
.filter(building -> building.getAreaId().equals(area.getId()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
for (XgDormBuilding building : areaBuildings) {
|
||||
BuildingTreeSelectVo buildingNode = new BuildingTreeSelectVo();
|
||||
buildingNode.setId(building.getId());
|
||||
buildingNode.setLabel(building.getBuildingName());
|
||||
buildingNode.setNodeType("building");
|
||||
buildingNode.setDisabled(false); // 宿舍楼可选
|
||||
buildingNode.setChildren(null); // 宿舍楼没有子节点
|
||||
|
||||
// 设置创建者和更新者字段
|
||||
buildingNode.setCreateBy(building.getCreateBy());
|
||||
buildingNode.setCreateTime(building.getCreateTime());
|
||||
buildingNode.setUpdateBy(building.getUpdateBy());
|
||||
buildingNode.setUpdateTime(building.getUpdateTime());
|
||||
|
||||
areaNode.getChildren().add(buildingNode);
|
||||
}
|
||||
|
||||
campusNode.getChildren().add(areaNode);
|
||||
}
|
||||
|
||||
treeList.add(campusNode);
|
||||
}
|
||||
|
||||
return treeList;
|
||||
}
|
||||
}
|
||||
+155
@@ -0,0 +1,155 @@
|
||||
package org.dromara.xg.service.impl;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.xg.service.IXgDormBuildingTreeService;
|
||||
import org.dromara.xg.mapper.XgDormBuildingTreeMapper;
|
||||
import org.dromara.xg.domain.vo.DormBuildingTreeVo;
|
||||
import org.dromara.xg.domain.vo.DormBuildingInfoVo;
|
||||
import org.dromara.xg.domain.bo.DormBuildingTreeBo;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
|
||||
/**
|
||||
* 宿舍楼树形结构服务实现
|
||||
*
|
||||
* @author wuzilong
|
||||
* @date 2025-07-03
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XgDormBuildingTreeServiceImpl implements IXgDormBuildingTreeService {
|
||||
|
||||
private final XgDormBuildingTreeMapper dormBuildingTreeMapper;
|
||||
|
||||
/**
|
||||
* 获取宿舍楼树形结构数据
|
||||
*
|
||||
* @param bo 查询参数
|
||||
* @return 树形结构数据
|
||||
*/
|
||||
@Override
|
||||
public List<DormBuildingTreeVo> getDormBuildingTree(DormBuildingTreeBo bo) {
|
||||
// 获取当前登录用户ID
|
||||
Long userId = LoginHelper.getUserId();
|
||||
|
||||
// 查询用户管理权限类型
|
||||
List<String> managerTypes = dormBuildingTreeMapper.checkUserDormManagerType(userId);
|
||||
|
||||
if (managerTypes == null || managerTypes.isEmpty()) {
|
||||
// 没有宿舍管理权限,返回空列表
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
// 获取所有宿舍楼数据(根据权限过滤)
|
||||
List<DormBuildingInfoVo> buildingList = new ArrayList<>();
|
||||
|
||||
// 按照权限分别查询并合并结果(支持用户拥有多种角色的情况)
|
||||
if (managerTypes.contains("1")) {
|
||||
// 全校管理员,获取所有宿舍楼
|
||||
buildingList = dormBuildingTreeMapper.selectBuildingsBySchoolAdmin(userId, bo);
|
||||
// 全校管理员可以查看所有宿舍楼,无需继续查询其他权限
|
||||
} else {
|
||||
// 对于非全校管理员,合并多种权限的结果
|
||||
Set<Long> addedBuildingIds = new HashSet<>(); // 用于去重
|
||||
|
||||
if (managerTypes.contains("2")) {
|
||||
// 校区管理员,获取管理的校区下的宿舍楼
|
||||
List<DormBuildingInfoVo> campusBuildings = dormBuildingTreeMapper.selectBuildingsByCampusAdmin(userId,
|
||||
bo);
|
||||
for (DormBuildingInfoVo building : campusBuildings) {
|
||||
if (addedBuildingIds.add(building.getId())) {
|
||||
buildingList.add(building);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (managerTypes.contains("3")) {
|
||||
// 宿舍区管理员,获取管理的宿舍区下的宿舍楼
|
||||
List<DormBuildingInfoVo> areaBuildings = dormBuildingTreeMapper.selectBuildingsByAreaAdmin(userId, bo);
|
||||
for (DormBuildingInfoVo building : areaBuildings) {
|
||||
if (addedBuildingIds.add(building.getId())) {
|
||||
buildingList.add(building);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (managerTypes.contains("4")) {
|
||||
// 宿舍楼管理员,获取管理的宿舍楼
|
||||
List<DormBuildingInfoVo> directBuildings = dormBuildingTreeMapper.selectBuildingsByBuildingAdmin(userId,
|
||||
bo);
|
||||
for (DormBuildingInfoVo building : directBuildings) {
|
||||
if (addedBuildingIds.add(building.getId())) {
|
||||
buildingList.add(building);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 如果没有获取到宿舍楼数据,返回空列表
|
||||
if (buildingList.isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
// 获取相关校区和宿舍区数据
|
||||
List<DormBuildingInfoVo> campusList = dormBuildingTreeMapper.selectCampusList();
|
||||
List<DormBuildingInfoVo> areaList = dormBuildingTreeMapper.selectAreaList();
|
||||
|
||||
// 构建校区节点集合(第一层)
|
||||
Map<Long, DormBuildingTreeVo> campusMap = new LinkedHashMap<>();
|
||||
for (DormBuildingInfoVo campus : campusList) {
|
||||
// 校区只保留有权限的宿舍楼所在的校区
|
||||
if (buildingList.stream().anyMatch(b -> Objects.equals(b.getCampusId(), campus.getId()))) {
|
||||
DormBuildingTreeVo campusNode = new DormBuildingTreeVo();
|
||||
campusNode.setId(campus.getId());
|
||||
campusNode.setLabel(campus.getBuildingName());
|
||||
campusNode.setType("campus");
|
||||
campusNode.setDisabled(true); // 校区节点禁止点击
|
||||
campusNode.setChildren(new ArrayList<>());
|
||||
campusMap.put(campus.getId(), campusNode);
|
||||
}
|
||||
}
|
||||
|
||||
// 构建宿舍区节点(第二层)
|
||||
Map<Long, DormBuildingTreeVo> areaMap = new HashMap<>();
|
||||
for (DormBuildingInfoVo area : areaList) {
|
||||
// 宿舍区只保留有权限的宿舍楼所在的宿舍区
|
||||
if (buildingList.stream().anyMatch(b -> Objects.equals(b.getAreaId(), area.getId()))) {
|
||||
DormBuildingTreeVo areaNode = new DormBuildingTreeVo();
|
||||
areaNode.setId(area.getId());
|
||||
areaNode.setLabel(area.getBuildingName());
|
||||
areaNode.setType("area");
|
||||
areaNode.setDisabled(true); // 宿舍区节点禁止点击
|
||||
areaNode.setChildren(new ArrayList<>());
|
||||
areaMap.put(area.getId(), areaNode);
|
||||
|
||||
// 将宿舍区节点添加到对应的校区节点下
|
||||
DormBuildingTreeVo campusNode = campusMap.get(area.getCampusId());
|
||||
if (campusNode != null) {
|
||||
campusNode.getChildren().add(areaNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 构建宿舍楼节点(第三层)
|
||||
for (DormBuildingInfoVo building : buildingList) {
|
||||
DormBuildingTreeVo buildingNode = new DormBuildingTreeVo();
|
||||
buildingNode.setId(building.getId());
|
||||
buildingNode.setLabel(building.getBuildingName());
|
||||
buildingNode.setType("building");
|
||||
buildingNode.setDisabled(false); // 宿舍楼节点可点击
|
||||
buildingNode.setBuildingFloors(building.getFloors());
|
||||
|
||||
// 将宿舍楼节点添加到对应的宿舍区节点下
|
||||
DormBuildingTreeVo areaNode = areaMap.get(building.getAreaId());
|
||||
if (areaNode != null) {
|
||||
areaNode.getChildren().add(buildingNode);
|
||||
}
|
||||
}
|
||||
|
||||
// 返回树形结构的根节点列表(校区节点列表)
|
||||
return new ArrayList<>(campusMap.values());
|
||||
}
|
||||
}
|
||||
+133
@@ -0,0 +1,133 @@
|
||||
package org.dromara.xg.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 lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.xg.domain.bo.XgDormCampusBo;
|
||||
import org.dromara.xg.domain.vo.XgDormCampusVo;
|
||||
import org.dromara.xg.domain.XgDormCampus;
|
||||
import org.dromara.xg.mapper.XgDormCampusMapper;
|
||||
import org.dromara.xg.service.IXgDormCampusService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 校区信息Service业务层处理
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XgDormCampusServiceImpl implements IXgDormCampusService {
|
||||
|
||||
private final XgDormCampusMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询校区信息
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 校区信息
|
||||
*/
|
||||
@Override
|
||||
public XgDormCampusVo queryById(Long id){
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询校区信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 校区信息分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XgDormCampusVo> queryPageList(XgDormCampusBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XgDormCampus> lqw = buildQueryWrapper(bo);
|
||||
Page<XgDormCampusVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的校区信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 校区信息列表
|
||||
*/
|
||||
@Override
|
||||
public List<XgDormCampusVo> queryList(XgDormCampusBo bo) {
|
||||
LambdaQueryWrapper<XgDormCampus> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XgDormCampus> buildQueryWrapper(XgDormCampusBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XgDormCampus> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(XgDormCampus::getId);
|
||||
lqw.like(StringUtils.isNotBlank(bo.getCampusCode()), XgDormCampus::getCampusCode, bo.getCampusCode());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getCampusName()), XgDormCampus::getCampusName, bo.getCampusName());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增校区信息
|
||||
*
|
||||
* @param bo 校区信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XgDormCampusBo bo) {
|
||||
XgDormCampus add = MapstructUtils.convert(bo, XgDormCampus.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改校区信息
|
||||
*
|
||||
* @param bo 校区信息
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XgDormCampusBo bo) {
|
||||
XgDormCampus update = MapstructUtils.convert(bo, XgDormCampus.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XgDormCampus entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除校区信息信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
+135
@@ -0,0 +1,135 @@
|
||||
package org.dromara.xg.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 lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.xg.domain.bo.XgDormManagerBuildingBo;
|
||||
import org.dromara.xg.domain.vo.XgDormManagerBuildingVo;
|
||||
import org.dromara.xg.domain.XgDormManagerBuilding;
|
||||
import org.dromara.xg.mapper.XgDormManagerBuildingMapper;
|
||||
import org.dromara.xg.service.IXgDormManagerBuildingService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 管理员宿舍楼权限关系Service业务层处理
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XgDormManagerBuildingServiceImpl implements IXgDormManagerBuildingService {
|
||||
|
||||
private final XgDormManagerBuildingMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询管理员宿舍楼权限关系
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 管理员宿舍楼权限关系
|
||||
*/
|
||||
@Override
|
||||
public XgDormManagerBuildingVo queryById(Long id){
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询管理员宿舍楼权限关系列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 管理员宿舍楼权限关系分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XgDormManagerBuildingVo> queryPageList(XgDormManagerBuildingBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XgDormManagerBuilding> lqw = buildQueryWrapper(bo);
|
||||
Page<XgDormManagerBuildingVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的管理员宿舍楼权限关系列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 管理员宿舍楼权限关系列表
|
||||
*/
|
||||
@Override
|
||||
public List<XgDormManagerBuildingVo> queryList(XgDormManagerBuildingBo bo) {
|
||||
LambdaQueryWrapper<XgDormManagerBuilding> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XgDormManagerBuilding> buildQueryWrapper(XgDormManagerBuildingBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XgDormManagerBuilding> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(XgDormManagerBuilding::getId);
|
||||
lqw.eq(bo.getManagerId() != null, XgDormManagerBuilding::getManagerId, bo.getManagerId());
|
||||
lqw.eq(bo.getBuildingId() != null, XgDormManagerBuilding::getBuildingId, bo.getBuildingId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), XgDormManagerBuilding::getStatus, bo.getStatus());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDeleted()), XgDormManagerBuilding::getDeleted, bo.getDeleted());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增管理员宿舍楼权限关系
|
||||
*
|
||||
* @param bo 管理员宿舍楼权限关系
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XgDormManagerBuildingBo bo) {
|
||||
XgDormManagerBuilding add = MapstructUtils.convert(bo, XgDormManagerBuilding.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改管理员宿舍楼权限关系
|
||||
*
|
||||
* @param bo 管理员宿舍楼权限关系
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XgDormManagerBuildingBo bo) {
|
||||
XgDormManagerBuilding update = MapstructUtils.convert(bo, XgDormManagerBuilding.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XgDormManagerBuilding entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除管理员宿舍楼权限关系信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
+182
@@ -0,0 +1,182 @@
|
||||
package org.dromara.xg.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 lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.xg.domain.bo.XgDormManagerBo;
|
||||
import org.dromara.xg.domain.vo.XgDormManagerVo;
|
||||
import org.dromara.xg.domain.XgDormManager;
|
||||
import org.dromara.xg.mapper.XgDormManagerMapper;
|
||||
import org.dromara.xg.service.IXgDormManagerService;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* 宿舍管理员信息Service业务层处理
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XgDormManagerServiceImpl implements IXgDormManagerService {
|
||||
|
||||
private final XgDormManagerMapper baseMapper;
|
||||
private final JdbcTemplate jdbcTemplate;
|
||||
|
||||
/**
|
||||
* 查询宿舍管理员信息
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 宿舍管理员信息
|
||||
*/
|
||||
@Override
|
||||
public XgDormManagerVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询宿舍管理员信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 宿舍管理员信息分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XgDormManagerVo> queryPageList(XgDormManagerBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XgDormManager> lqw = buildQueryWrapper(bo);
|
||||
Page<XgDormManagerVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的宿舍管理员信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 宿舍管理员信息列表
|
||||
*/
|
||||
@Override
|
||||
public List<XgDormManagerVo> queryList(XgDormManagerBo bo) {
|
||||
LambdaQueryWrapper<XgDormManager> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询教师列表(用于下拉选择)
|
||||
*
|
||||
* @param name 教师姓名(可选,用于模糊查询)
|
||||
* @return 教师列表
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> queryTeacherList(String name, String managerType) {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append(
|
||||
"SELECT u.user_id as value, u.nick_name as label, u.user_name as username,u.phonenumber as phonenumber, u.sex as sex ");
|
||||
sql.append("FROM sys_user u ");
|
||||
sql.append("INNER JOIN sys_user_role ur ON u.user_id = ur.user_id ");
|
||||
sql.append("INNER JOIN sys_role r ON ur.role_id = r.role_id ");
|
||||
sql.append(
|
||||
"WHERE r.role_key = 'teacher' AND u.status = '0' and not exists (select 1 from xg_dorm_manager where user_id = u.user_id and deleted = '0' and manager_type = '"
|
||||
+ managerType + "') ");
|
||||
|
||||
List<Object> params = new ArrayList<>();
|
||||
|
||||
if (StringUtils.isNotBlank(name)) {
|
||||
sql.append("AND u.nick_name LIKE ? ");
|
||||
params.add("%" + name + "%");
|
||||
}
|
||||
|
||||
sql.append("ORDER BY u.nick_name");
|
||||
|
||||
try {
|
||||
if (params.isEmpty()) {
|
||||
return jdbcTemplate.queryForList(sql.toString());
|
||||
} else {
|
||||
return jdbcTemplate.queryForList(sql.toString(), params.toArray());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("查询教师列表异常", e);
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XgDormManager> buildQueryWrapper(XgDormManagerBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XgDormManager> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(XgDormManager::getId);
|
||||
lqw.like(StringUtils.isNotBlank(bo.getManagerName()), XgDormManager::getManagerName, bo.getManagerName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getManagerType()), XgDormManager::getManagerType, bo.getManagerType());
|
||||
lqw.eq(bo.getManagerLevel() != null, XgDormManager::getManagerLevel, bo.getManagerLevel());
|
||||
lqw.eq(bo.getUserId() != null, XgDormManager::getUserId, bo.getUserId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getPhone()), XgDormManager::getPhone, bo.getPhone());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getGender()), XgDormManager::getGender, bo.getGender());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), XgDormManager::getStatus, bo.getStatus());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDeleted()), XgDormManager::getDeleted, bo.getDeleted());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增宿舍管理员信息
|
||||
*
|
||||
* @param bo 宿舍管理员信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XgDormManagerBo bo) {
|
||||
XgDormManager add = MapstructUtils.convert(bo, XgDormManager.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改宿舍管理员信息
|
||||
*
|
||||
* @param bo 宿舍管理员信息
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XgDormManagerBo bo) {
|
||||
XgDormManager update = MapstructUtils.convert(bo, XgDormManager.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XgDormManager entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除宿舍管理员信息信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
// TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
+253
@@ -0,0 +1,253 @@
|
||||
package org.dromara.xg.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.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.dromara.xg.domain.bo.XgDormManagerSourceBo;
|
||||
import org.dromara.xg.domain.vo.XgDormManagerSourceVo;
|
||||
import org.dromara.xg.domain.XgDormManagerSource;
|
||||
import org.dromara.xg.mapper.XgDormManagerSourceMapper;
|
||||
import org.dromara.xg.service.IXgDormManagerSourceService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 管理员授权关系Service业务层处理
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-20
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XgDormManagerSourceServiceImpl implements IXgDormManagerSourceService {
|
||||
|
||||
private final XgDormManagerSourceMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询管理员授权关系
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 管理员授权关系
|
||||
*/
|
||||
@Override
|
||||
public XgDormManagerSourceVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询管理员授权关系列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 管理员授权关系分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XgDormManagerSourceVo> queryPageList(XgDormManagerSourceBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XgDormManagerSource> lqw = buildQueryWrapper(bo);
|
||||
Page<XgDormManagerSourceVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的管理员授权关系列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 管理员授权关系列表
|
||||
*/
|
||||
@Override
|
||||
public List<XgDormManagerSourceVo> queryList(XgDormManagerSourceBo bo) {
|
||||
LambdaQueryWrapper<XgDormManagerSource> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XgDormManagerSource> buildQueryWrapper(XgDormManagerSourceBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XgDormManagerSource> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(XgDormManagerSource::getId);
|
||||
lqw.eq(bo.getManagerId() != null, XgDormManagerSource::getManagerId, bo.getManagerId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getPermissionType()), XgDormManagerSource::getPermissionType,
|
||||
bo.getPermissionType());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getAuthType()), XgDormManagerSource::getAuthType, bo.getAuthType());
|
||||
lqw.eq(bo.getAuthSource() != null, XgDormManagerSource::getAuthSource, bo.getAuthSource());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), XgDormManagerSource::getStatus, bo.getStatus());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDeleted()), XgDormManagerSource::getDeleted, bo.getDeleted());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增管理员授权关系
|
||||
*
|
||||
* @param bo 管理员授权关系
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XgDormManagerSourceBo bo) {
|
||||
XgDormManagerSource add = MapstructUtils.convert(bo, XgDormManagerSource.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改管理员授权关系
|
||||
*
|
||||
* @param bo 管理员授权关系
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XgDormManagerSourceBo bo) {
|
||||
XgDormManagerSource update = MapstructUtils.convert(bo, XgDormManagerSource.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XgDormManagerSource entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除管理员授权关系信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
// TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量分配管理员数据范围
|
||||
*
|
||||
* @param managerId 管理员ID
|
||||
* @param authType 授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)
|
||||
* @param authSourceIds 授权来源ID列表
|
||||
* @return 是否分配成功
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean assignScope(Long managerId, Character authType, List<Long> authSourceIds) {
|
||||
if (managerId == null || authType == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
// 1. 逻辑删除该管理员指定授权类型的现有数据
|
||||
LambdaUpdateWrapper<XgDormManagerSource> updateWrapper = Wrappers.lambdaUpdate(XgDormManagerSource.class)
|
||||
.set(XgDormManagerSource::getDeleted, "1") // 标记为已删除
|
||||
.eq(XgDormManagerSource::getManagerId, managerId)
|
||||
.eq(XgDormManagerSource::getAuthType, authType.toString())
|
||||
.eq(XgDormManagerSource::getDeleted, "0"); // 只更新未删除的记录
|
||||
|
||||
baseMapper.update(null, updateWrapper);
|
||||
|
||||
// 2. 批量插入新的授权关系
|
||||
if (authSourceIds != null && !authSourceIds.isEmpty()) {
|
||||
for (Long authSourceId : authSourceIds) {
|
||||
XgDormManagerSource entity = new XgDormManagerSource();
|
||||
entity.setManagerId(managerId);
|
||||
entity.setAuthType(authType.toString());
|
||||
entity.setAuthSource(authSourceId);
|
||||
entity.setPermissionType("3"); // 默认完全管理权限
|
||||
entity.setStatus("0"); // 有效状态
|
||||
baseMapper.insert(entity); // MyBatis-Plus会自动填充BaseEntity中定义的字段
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
log.error("批量分配管理员数据范围失败", e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取管理员授权范围名称
|
||||
*
|
||||
* @param managerId 管理员ID
|
||||
* @param managerType 管理员类型(1全校级 2校区级 3宿舍区级 4楼栋级)
|
||||
* @return 授权范围名称(逗号分隔字符串)
|
||||
*/
|
||||
@Override
|
||||
public String getScopeNames(Long managerId, Integer managerType) {
|
||||
if (managerId == null || managerType == null) {
|
||||
return "";
|
||||
}
|
||||
|
||||
try {
|
||||
// 全校级管理员无需关联其他表,直接返回"全校"
|
||||
if (managerType == 1) {
|
||||
return "全校";
|
||||
}
|
||||
|
||||
// 转换managerType为Character类型,与数据库authType匹配
|
||||
String authType = String.valueOf(managerType);
|
||||
|
||||
// 查询该管理员的授权范围ID列表
|
||||
LambdaQueryWrapper<XgDormManagerSource> queryWrapper = Wrappers.lambdaQuery(XgDormManagerSource.class)
|
||||
.eq(XgDormManagerSource::getManagerId, managerId)
|
||||
.eq(XgDormManagerSource::getAuthType, authType)
|
||||
.eq(XgDormManagerSource::getDeleted, "0") // 未删除的记录
|
||||
.eq(XgDormManagerSource::getStatus, "0"); // 状态为有效
|
||||
|
||||
List<XgDormManagerSource> sources = baseMapper.selectList(queryWrapper);
|
||||
if (sources.isEmpty()) {
|
||||
return "";
|
||||
}
|
||||
|
||||
// 提取授权来源ID列表
|
||||
List<Long> sourceIds = sources.stream()
|
||||
.map(XgDormManagerSource::getAuthSource)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 根据不同管理员类型,关联不同表获取名称
|
||||
String scopeNames = "";
|
||||
switch (managerType) {
|
||||
case 2:
|
||||
// 校区级管理员,关联xg_dorm_campus表
|
||||
scopeNames = baseMapper.getCampusNamesByIds(sourceIds);
|
||||
break;
|
||||
case 3:
|
||||
// 宿舍区管理员,关联xg_dorm_area表
|
||||
scopeNames = baseMapper.getAreaNamesByIds(sourceIds);
|
||||
break;
|
||||
case 4:
|
||||
// 宿舍楼管理员,关联xg_dorm_building表
|
||||
scopeNames = baseMapper.getBuildingNamesByIds(sourceIds);
|
||||
break;
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
|
||||
return scopeNames;
|
||||
} catch (Exception e) {
|
||||
log.error("获取管理员授权范围名称失败", e);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
+140
@@ -0,0 +1,140 @@
|
||||
package org.dromara.xg.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 lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.xg.domain.bo.XgDormRoomBo;
|
||||
import org.dromara.xg.domain.vo.XgDormRoomVo;
|
||||
import org.dromara.xg.domain.XgDormRoom;
|
||||
import org.dromara.xg.mapper.XgDormRoomMapper;
|
||||
import org.dromara.xg.service.IXgDormRoomService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 宿舍房间信息Service业务层处理
|
||||
*
|
||||
* @author zlwu
|
||||
* @date 2025-07-22
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XgDormRoomServiceImpl implements IXgDormRoomService {
|
||||
|
||||
private final XgDormRoomMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询宿舍房间信息
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 宿舍房间信息
|
||||
*/
|
||||
@Override
|
||||
public XgDormRoomVo queryById(Long id){
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询宿舍房间信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 宿舍房间信息分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XgDormRoomVo> queryPageList(XgDormRoomBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XgDormRoom> lqw = buildQueryWrapper(bo);
|
||||
Page<XgDormRoomVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的宿舍房间信息列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 宿舍房间信息列表
|
||||
*/
|
||||
@Override
|
||||
public List<XgDormRoomVo> queryList(XgDormRoomBo bo) {
|
||||
LambdaQueryWrapper<XgDormRoom> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XgDormRoom> buildQueryWrapper(XgDormRoomBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XgDormRoom> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(XgDormRoom::getId);
|
||||
lqw.like(StringUtils.isNotBlank(bo.getRoomCode()), XgDormRoom::getRoomCode, bo.getRoomCode());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getRoomName()), XgDormRoom::getRoomName, bo.getRoomName());
|
||||
lqw.eq(bo.getBuildingId() != null, XgDormRoom::getBuildingId, bo.getBuildingId());
|
||||
lqw.eq(bo.getFloorNum() != null, XgDormRoom::getFloorNum, bo.getFloorNum());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getRoomType()), XgDormRoom::getRoomType, bo.getRoomType());
|
||||
lqw.eq(bo.getActualBeds() != null, XgDormRoom::getActualBeds, bo.getActualBeds());
|
||||
lqw.eq(bo.getRoomArea() != null, XgDormRoom::getRoomArea, bo.getRoomArea());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getRoomStatus()), XgDormRoom::getRoomStatus, bo.getRoomStatus());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDeleted()), XgDormRoom::getDeleted, bo.getDeleted());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增宿舍房间信息
|
||||
*
|
||||
* @param bo 宿舍房间信息
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XgDormRoomBo bo) {
|
||||
XgDormRoom add = MapstructUtils.convert(bo, XgDormRoom.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改宿舍房间信息
|
||||
*
|
||||
* @param bo 宿舍房间信息
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XgDormRoomBo bo) {
|
||||
XgDormRoom update = MapstructUtils.convert(bo, XgDormRoom.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XgDormRoom entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除宿舍房间信息信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
<?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.xg.mapper.XgDormManagerSourceMapper">
|
||||
|
||||
<!-- 根据ID列表获取校区名称(逗号分隔) -->
|
||||
<select id="getCampusNamesByIds" resultType="String">
|
||||
SELECT
|
||||
GROUP_CONCAT(campus_name SEPARATOR ',')
|
||||
FROM
|
||||
xg_dorm_campus
|
||||
WHERE
|
||||
id IN
|
||||
<foreach collection="sourceIds" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
AND deleted = '0'
|
||||
</select>
|
||||
|
||||
<!-- 根据ID列表获取宿舍区名称(逗号分隔) -->
|
||||
<select id="getAreaNamesByIds" resultType="String">
|
||||
SELECT
|
||||
GROUP_CONCAT(area_name SEPARATOR ',')
|
||||
FROM
|
||||
xg_dorm_area
|
||||
WHERE
|
||||
id IN
|
||||
<foreach collection="sourceIds" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
AND deleted = '0'
|
||||
</select>
|
||||
|
||||
<!-- 根据ID列表获取宿舍楼名称(逗号分隔) -->
|
||||
<select id="getBuildingNamesByIds" resultType="String">
|
||||
SELECT
|
||||
GROUP_CONCAT(building_name SEPARATOR ',')
|
||||
FROM
|
||||
xg_dorm_building
|
||||
WHERE
|
||||
id IN
|
||||
<foreach collection="sourceIds" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
AND deleted = '0'
|
||||
</select>
|
||||
</mapper>
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.xg.mapper.XgDormManagerBuildingMapper">
|
||||
|
||||
</mapper>
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.xg.mapper.XgDormManagerMapper">
|
||||
|
||||
</mapper>
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
<?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.xg.mapper.XgDormBuildingMapper">
|
||||
|
||||
<select id="selectPageWithAreaAndCampusName" resultType="org.dromara.xg.domain.vo.XgDormBuildingVo">
|
||||
SELECT
|
||||
b.id,
|
||||
b.building_code,
|
||||
b.building_name,
|
||||
b.area_id,
|
||||
a.area_name,
|
||||
b.campus_id,
|
||||
c.campus_name,
|
||||
b.building_type,
|
||||
b.building_description,
|
||||
b.floors,
|
||||
b.sort_order,
|
||||
b.deleted,
|
||||
b.remark,
|
||||
b.create_by,
|
||||
b.create_time,
|
||||
b.update_by,
|
||||
b.update_time
|
||||
FROM xg_dorm_building b
|
||||
LEFT JOIN xg_dorm_area a ON b.area_id = a.id
|
||||
LEFT JOIN xg_dorm_campus c ON b.campus_id = c.id
|
||||
<where>
|
||||
<if test="bo.buildingCode != null and bo.buildingCode != ''">
|
||||
AND b.building_code LIKE CONCAT('%', #{bo.buildingCode}, '%')
|
||||
</if>
|
||||
<if test="bo.buildingName != null and bo.buildingName != ''">
|
||||
AND b.building_name LIKE CONCAT('%', #{bo.buildingName}, '%')
|
||||
</if>
|
||||
<if test="bo.areaId != null">
|
||||
AND b.area_id = #{bo.areaId}
|
||||
</if>
|
||||
<if test="bo.campusId != null">
|
||||
AND b.campus_id = #{bo.campusId}
|
||||
</if>
|
||||
<if test="bo.buildingType != null and bo.buildingType != ''">
|
||||
AND b.building_type = #{bo.buildingType}
|
||||
</if>
|
||||
<if test="bo.buildingDescription != null and bo.buildingDescription != ''">
|
||||
AND b.building_description LIKE CONCAT('%', #{bo.buildingDescription}, '%')
|
||||
</if>
|
||||
AND b.deleted = '0'
|
||||
</where>
|
||||
ORDER BY b.id ASC
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -0,0 +1,37 @@
|
||||
<?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.xg.mapper.XgDormAreaMapper">
|
||||
|
||||
<select id="selectPageWithCampusName" resultType="org.dromara.xg.domain.vo.XgDormAreaVo">
|
||||
SELECT
|
||||
a.id,
|
||||
a.area_code,
|
||||
a.area_name,
|
||||
a.campus_id,
|
||||
a.area_description,
|
||||
a.sort_order,
|
||||
a.deleted,
|
||||
a.remark,
|
||||
c.campus_name
|
||||
FROM xg_dorm_area a
|
||||
LEFT JOIN xg_dorm_campus c ON a.campus_id = c.id
|
||||
<where>
|
||||
<if test="bo.areaCode != null and bo.areaCode != ''">
|
||||
AND a.area_code LIKE CONCAT('%', #{bo.areaCode}, '%')
|
||||
</if>
|
||||
<if test="bo.areaName != null and bo.areaName != ''">
|
||||
AND a.area_name LIKE CONCAT('%', #{bo.areaName}, '%')
|
||||
</if>
|
||||
<if test="bo.areaDescription != null and bo.areaDescription != ''">
|
||||
AND a.area_description LIKE CONCAT('%', #{bo.areaDescription}, '%')
|
||||
</if>
|
||||
<if test="bo.campusId != null">
|
||||
AND a.campus_id = #{bo.campusId}
|
||||
</if>
|
||||
AND a.deleted = '0'
|
||||
</where>
|
||||
ORDER BY a.id ASC
|
||||
</select>
|
||||
</mapper>
|
||||
+297
@@ -0,0 +1,297 @@
|
||||
<?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.xg.mapper.XgDormBuildingTreeMapper">
|
||||
|
||||
<resultMap id="BuildingInfoMap" type="org.dromara.xg.domain.vo.DormBuildingInfoVo">
|
||||
<id property="id" column="id"/>
|
||||
<result property="buildingName" column="building_name"/>
|
||||
<result property="buildingCode" column="building_code"/>
|
||||
<result property="campusId" column="campus_id"/>
|
||||
<result property="campusName" column="campus_name"/>
|
||||
<result property="areaId" column="area_id"/>
|
||||
<result property="areaName" column="area_name"/>
|
||||
<result property="floors" column="floors"/>
|
||||
<result property="remark" column="remark"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 获取所有校区信息 -->
|
||||
<select id="selectCampusList" resultMap="BuildingInfoMap">
|
||||
SELECT
|
||||
id,
|
||||
campus_name as building_name,
|
||||
'0' as status
|
||||
FROM
|
||||
xg_dorm_campus
|
||||
WHERE
|
||||
deleted = '0'
|
||||
</select>
|
||||
|
||||
<!-- 获取所有宿舍区信息 -->
|
||||
<select id="selectAreaList" resultMap="BuildingInfoMap">
|
||||
SELECT
|
||||
a.id,
|
||||
a.area_name as building_name,
|
||||
a.campus_id,
|
||||
c.campus_name,
|
||||
'0' as status
|
||||
FROM
|
||||
xg_dorm_area a
|
||||
LEFT JOIN
|
||||
xg_dorm_campus c ON a.campus_id = c.id
|
||||
WHERE
|
||||
a.deleted = '0'
|
||||
</select>
|
||||
|
||||
<!-- 获取所有宿舍楼信息 -->
|
||||
<select id="selectBuildingList" parameterType="org.dromara.xg.domain.bo.DormBuildingTreeBo" resultMap="BuildingInfoMap">
|
||||
SELECT
|
||||
b.id,
|
||||
b.building_name,
|
||||
b.building_code,
|
||||
b.campus_id,
|
||||
c.campus_name,
|
||||
b.area_id,
|
||||
a.area_name,
|
||||
b.floors,
|
||||
b.remark,
|
||||
b.create_by,
|
||||
b.create_time,
|
||||
b.update_by,
|
||||
b.update_time
|
||||
FROM
|
||||
xg_dorm_building b
|
||||
LEFT JOIN
|
||||
xg_dorm_campus c ON b.campus_id = c.id
|
||||
LEFT JOIN
|
||||
xg_dorm_area a ON b.area_id = a.id
|
||||
WHERE
|
||||
b.deleted = '0'
|
||||
<if test="campusId != null">
|
||||
AND b.campus_id = #{campusId}
|
||||
</if>
|
||||
<if test="areaId != null">
|
||||
AND b.area_id = #{areaId}
|
||||
</if>
|
||||
<if test="buildingName != null and buildingName != ''">
|
||||
AND b.building_name like concat('%', #{buildingName}, '%')
|
||||
</if>
|
||||
<if test="status != null and status != ''">
|
||||
AND b.status = #{status}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 检查用户是否有宿舍管理权限 -->
|
||||
<select id="checkUserDormManagerType" resultType="String">
|
||||
SELECT
|
||||
DISTINCT manager_type
|
||||
FROM
|
||||
xg_dorm_manager
|
||||
WHERE
|
||||
user_id = #{userId}
|
||||
AND deleted = '0'
|
||||
</select>
|
||||
|
||||
<!-- 获取全校管理员权限的宿舍楼信息 -->
|
||||
<select id="selectBuildingsBySchoolAdmin" resultMap="BuildingInfoMap">
|
||||
SELECT
|
||||
b.id,
|
||||
b.building_name,
|
||||
b.building_code,
|
||||
b.campus_id,
|
||||
c.campus_name,
|
||||
b.area_id,
|
||||
a.area_name,
|
||||
b.floors,
|
||||
b.remark,
|
||||
b.create_by,
|
||||
b.create_time,
|
||||
b.update_by,
|
||||
b.update_time
|
||||
FROM
|
||||
xg_dorm_building b
|
||||
LEFT JOIN
|
||||
xg_dorm_campus c ON b.campus_id = c.id
|
||||
LEFT JOIN
|
||||
xg_dorm_area a ON b.area_id = a.id
|
||||
WHERE
|
||||
b.deleted = '0'
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM xg_dorm_manager m
|
||||
WHERE m.user_id = #{userId}
|
||||
AND m.manager_type = '1'
|
||||
AND m.deleted = '0'
|
||||
)
|
||||
<if test="bo.campusId != null">
|
||||
AND b.campus_id = #{bo.campusId}
|
||||
</if>
|
||||
<if test="bo.areaId != null">
|
||||
AND b.area_id = #{bo.areaId}
|
||||
</if>
|
||||
<if test="bo.buildingName != null and bo.buildingName != ''">
|
||||
AND b.building_name like concat('%', #{bo.buildingName}, '%')
|
||||
</if>
|
||||
<if test="bo.status != null and bo.status != ''">
|
||||
AND b.status = #{bo.status}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 获取校区管理员权限的宿舍楼信息 -->
|
||||
<select id="selectBuildingsByCampusAdmin" resultMap="BuildingInfoMap">
|
||||
SELECT
|
||||
b.id,
|
||||
b.building_name,
|
||||
b.building_code,
|
||||
b.campus_id,
|
||||
c.campus_name,
|
||||
b.area_id,
|
||||
a.area_name,
|
||||
b.floors,
|
||||
b.remark,
|
||||
b.create_by,
|
||||
b.create_time,
|
||||
b.update_by,
|
||||
b.update_time
|
||||
FROM
|
||||
xg_dorm_building b
|
||||
LEFT JOIN
|
||||
xg_dorm_campus c ON b.campus_id = c.id
|
||||
LEFT JOIN
|
||||
xg_dorm_area a ON b.area_id = a.id
|
||||
WHERE
|
||||
b.deleted = '0'
|
||||
AND b.campus_id IN (
|
||||
SELECT
|
||||
auth_source
|
||||
FROM
|
||||
xg_dorm_manager m
|
||||
JOIN
|
||||
xg_dorm_manager_source s ON m.id = s.manager_id
|
||||
WHERE
|
||||
m.user_id = #{userId}
|
||||
AND m.manager_type = '2'
|
||||
AND m.deleted = '0'
|
||||
AND s.deleted = '0'
|
||||
)
|
||||
<if test="bo.campusId != null">
|
||||
AND b.campus_id = #{bo.campusId}
|
||||
</if>
|
||||
<if test="bo.areaId != null">
|
||||
AND b.area_id = #{bo.areaId}
|
||||
</if>
|
||||
<if test="bo.buildingName != null and bo.buildingName != ''">
|
||||
AND b.building_name like concat('%', #{bo.buildingName}, '%')
|
||||
</if>
|
||||
<if test="bo.status != null and bo.status != ''">
|
||||
AND b.status = #{bo.status}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 获取宿舍区管理员权限的宿舍楼信息 -->
|
||||
<select id="selectBuildingsByAreaAdmin" resultMap="BuildingInfoMap">
|
||||
SELECT
|
||||
b.id,
|
||||
b.building_name,
|
||||
b.building_code,
|
||||
b.campus_id,
|
||||
c.campus_name,
|
||||
b.area_id,
|
||||
a.area_name,
|
||||
b.floors,
|
||||
b.remark,
|
||||
b.create_by,
|
||||
b.create_time,
|
||||
b.update_by,
|
||||
b.update_time
|
||||
FROM
|
||||
xg_dorm_building b
|
||||
LEFT JOIN
|
||||
xg_dorm_campus c ON b.campus_id = c.id
|
||||
LEFT JOIN
|
||||
xg_dorm_area a ON b.area_id = a.id
|
||||
WHERE
|
||||
b.deleted = '0'
|
||||
AND b.area_id IN (
|
||||
SELECT
|
||||
auth_source
|
||||
FROM
|
||||
xg_dorm_manager m
|
||||
JOIN
|
||||
xg_dorm_manager_source s ON m.id = s.manager_id
|
||||
WHERE
|
||||
m.user_id = #{userId}
|
||||
AND m.manager_type = '3'
|
||||
AND m.deleted = '0'
|
||||
AND s.deleted = '0'
|
||||
)
|
||||
<if test="bo.campusId != null">
|
||||
AND b.campus_id = #{bo.campusId}
|
||||
</if>
|
||||
<if test="bo.areaId != null">
|
||||
AND b.area_id = #{bo.areaId}
|
||||
</if>
|
||||
<if test="bo.buildingName != null and bo.buildingName != ''">
|
||||
AND b.building_name like concat('%', #{bo.buildingName}, '%')
|
||||
</if>
|
||||
<if test="bo.status != null and bo.status != ''">
|
||||
AND b.status = #{bo.status}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 获取宿舍楼管理员权限的宿舍楼信息 -->
|
||||
<select id="selectBuildingsByBuildingAdmin" resultMap="BuildingInfoMap">
|
||||
SELECT
|
||||
b.id,
|
||||
b.building_name,
|
||||
b.building_code,
|
||||
b.campus_id,
|
||||
c.campus_name,
|
||||
b.area_id,
|
||||
a.area_name,
|
||||
b.floors,
|
||||
b.remark,
|
||||
b.create_by,
|
||||
b.create_time,
|
||||
b.update_by,
|
||||
b.update_time
|
||||
FROM
|
||||
xg_dorm_building b
|
||||
LEFT JOIN
|
||||
xg_dorm_campus c ON b.campus_id = c.id
|
||||
LEFT JOIN
|
||||
xg_dorm_area a ON b.area_id = a.id
|
||||
WHERE
|
||||
b.deleted = '0'
|
||||
AND b.id IN (
|
||||
SELECT
|
||||
auth_source
|
||||
FROM
|
||||
xg_dorm_manager m
|
||||
JOIN
|
||||
xg_dorm_manager_source s ON m.id = s.manager_id
|
||||
WHERE
|
||||
m.user_id = #{userId}
|
||||
AND m.manager_type = '4'
|
||||
AND m.deleted = '0'
|
||||
AND s.deleted = '0'
|
||||
)
|
||||
<if test="bo.campusId != null">
|
||||
AND b.campus_id = #{bo.campusId}
|
||||
</if>
|
||||
<if test="bo.areaId != null">
|
||||
AND b.area_id = #{bo.areaId}
|
||||
</if>
|
||||
<if test="bo.buildingName != null and bo.buildingName != ''">
|
||||
AND b.building_name like concat('%', #{bo.buildingName}, '%')
|
||||
</if>
|
||||
<if test="bo.status != null and bo.status != ''">
|
||||
AND b.status = #{bo.status}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.xg.mapper.XgDormRoomMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.xg.mapper.XgDormCampusMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,29 @@
|
||||
-- ----------------------------
|
||||
-- 宿舍管理员表
|
||||
-- ----------------------------
|
||||
drop table if exists xg_dorm_manager;
|
||||
create table xg_dorm_manager (
|
||||
id bigint(20) not null comment '主键',
|
||||
name varchar(100) not null comment '管理员姓名',
|
||||
phone varchar(11) not null comment '手机号码',
|
||||
sex int(1) default 0 comment '性别(0男 1女 2未知)',
|
||||
manager_type int(1) default 0 comment '管理类型(0全校 1校区 2宿舍区 3宿舍楼)',
|
||||
scope varchar(100) comment '管理范围(校区/宿舍区/宿舍楼)',
|
||||
user_id bigint(20) comment '关联用户ID',
|
||||
remark varchar(500) comment '备注',
|
||||
create_by bigint(20) comment '创建者',
|
||||
create_time datetime comment '创建时间',
|
||||
update_by bigint(20) comment '更新者',
|
||||
update_time datetime comment '更新时间',
|
||||
deleted char(1) default '0' comment '删除标志(0代表存在 2代表删除)',
|
||||
tenant_id varchar(20) default '000000' comment '租户编号',
|
||||
primary key (id)
|
||||
) engine=innodb comment = '宿舍管理员信息表';
|
||||
|
||||
-- ----------------------------
|
||||
-- 初始数据
|
||||
-- ----------------------------
|
||||
INSERT INTO xg_dorm_manager(id, name, phone, sex, manager_type, scope, user_id, remark, create_by, create_time, update_by, update_time, deleted, tenant_id)
|
||||
VALUES (1, '张三', '13800000001', 0, 0, null, 2, '全校主管', 1, sysdate(), 1, sysdate(), '0', '000000');
|
||||
INSERT INTO xg_dorm_manager(id, name, phone, sex, manager_type, scope, user_id, remark, create_by, create_time, update_by, update_time, deleted, tenant_id)
|
||||
VALUES (2, '李四', '13800000002', 1, 0, null, 3, '全校副主管', 1, sysdate(), 1, sysdate(), '0', '000000');
|
||||
@@ -35,53 +35,29 @@
|
||||
**表说明**:定义宿舍管理的各个维度,支持维度的灵活扩展
|
||||
|
||||
```sql
|
||||
CREATE TABLE `dorm_management_dimension` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`dimension_code` varchar(50) NOT NULL COMMENT '维度编码',
|
||||
`dimension_name` varchar(100) NOT NULL COMMENT '维度名称',
|
||||
`dimension_level` int(11) NOT NULL COMMENT '维度层级(1-5)',
|
||||
`parent_dimension_id` bigint(20) DEFAULT NULL COMMENT '父维度ID',
|
||||
`description` varchar(500) DEFAULT NULL COMMENT '维度描述',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_dimension_code` (`dimension_code`),
|
||||
KEY `idx_parent_dimension` (`parent_dimension_id`),
|
||||
KEY `idx_dimension_level` (`dimension_level`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='宿舍管理维度定义表';
|
||||
|
||||
```
|
||||
|
||||
#### 1.2 校区信息表 (dorm_campus)
|
||||
**表说明**:存储校区基本信息
|
||||
|
||||
```sql
|
||||
CREATE TABLE `dorm_campus` (
|
||||
DROP TABLE IF EXISTS `xg_dorm_campus`;
|
||||
CREATE TABLE `xg_dorm_campus` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`campus_code` varchar(50) NOT NULL COMMENT '校区编码',
|
||||
`campus_name` varchar(100) NOT NULL COMMENT '校区名称',
|
||||
`campus_address` varchar(200) DEFAULT NULL COMMENT '校区地址',
|
||||
`campus_phone` varchar(20) DEFAULT NULL COMMENT '校区联系电话',
|
||||
`campus_manager` varchar(50) DEFAULT NULL COMMENT '校区负责人',
|
||||
`campus_description` varchar(500) DEFAULT NULL COMMENT '校区描述',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`sort_order` int(11) DEFAULT '0' COMMENT '排序号',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
|
||||
`tenant_id` bigint(20) DEFAULT '0' COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_campus_code` (`campus_code`),
|
||||
KEY `idx_campus_status` (`status`)
|
||||
UNIQUE KEY `uk_campus_code` (`campus_code`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='校区信息表';
|
||||
```
|
||||
|
||||
@@ -89,56 +65,18 @@ CREATE TABLE `dorm_campus` (
|
||||
**表说明**:存储宿舍区基本信息,关联校区
|
||||
|
||||
```sql
|
||||
CREATE TABLE `dorm_area` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`area_code` varchar(50) NOT NULL COMMENT '宿舍区编码',
|
||||
`area_name` varchar(100) NOT NULL COMMENT '宿舍区名称',
|
||||
`campus_id` bigint(20) NOT NULL COMMENT '所属校区ID',
|
||||
`area_address` varchar(200) DEFAULT NULL COMMENT '宿舍区地址',
|
||||
`area_phone` varchar(20) DEFAULT NULL COMMENT '宿舍区联系电话',
|
||||
`area_manager` varchar(50) DEFAULT NULL COMMENT '宿舍区负责人',
|
||||
`building_count` int(11) DEFAULT 0 COMMENT '宿舍楼数量',
|
||||
`student_count` int(11) DEFAULT 0 COMMENT '学生数量',
|
||||
`area_description` varchar(500) DEFAULT NULL COMMENT '宿舍区描述',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_area_code` (`area_code`),
|
||||
KEY `idx_campus_id` (`campus_id`),
|
||||
KEY `idx_area_status` (`status`),
|
||||
CONSTRAINT `fk_area_campus` FOREIGN KEY (`campus_id`) REFERENCES `dorm_campus` (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='宿舍区信息表';
|
||||
```
|
||||
|
||||
#### 1.4 宿舍楼信息表 (dorm_building)
|
||||
**表说明**:存储宿舍楼基本信息,关联宿舍区
|
||||
|
||||
```sql
|
||||
CREATE TABLE `dorm_building` (
|
||||
DROP TABLE IF EXISTS `xg_dorm_building`;
|
||||
CREATE TABLE `xg_dorm_building` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`building_code` varchar(50) NOT NULL COMMENT '宿舍楼编码',
|
||||
`building_name` varchar(100) NOT NULL COMMENT '宿舍楼名称',
|
||||
`area_id` bigint(20) NOT NULL COMMENT '所属宿舍区ID',
|
||||
`campus_id` bigint(20) NOT NULL COMMENT '所属校区ID',
|
||||
`building_address` varchar(200) DEFAULT NULL COMMENT '宿舍楼地址',
|
||||
`building_phone` varchar(20) DEFAULT NULL COMMENT '宿舍楼联系电话',
|
||||
`building_manager` varchar(50) DEFAULT NULL COMMENT '宿舍楼负责人',
|
||||
`floor_count` int(11) DEFAULT 0 COMMENT '楼层数',
|
||||
`room_count` int(11) DEFAULT 0 COMMENT '房间数',
|
||||
`student_count` int(11) DEFAULT 0 COMMENT '学生数量',
|
||||
`building_type` char(1) DEFAULT '1' COMMENT '宿舍楼类型(1男生楼 2女生楼 3混合楼)',
|
||||
`building_description` varchar(500) DEFAULT NULL COMMENT '宿舍楼描述',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`sort_order` int(11) DEFAULT '0' COMMENT '排序号',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
|
||||
`tenant_id` bigint(20) DEFAULT '0' COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
@@ -148,136 +86,158 @@ CREATE TABLE `dorm_building` (
|
||||
UNIQUE KEY `uk_building_code` (`building_code`),
|
||||
KEY `idx_area_id` (`area_id`),
|
||||
KEY `idx_campus_id` (`campus_id`),
|
||||
KEY `idx_building_status` (`status`),
|
||||
CONSTRAINT `fk_building_area` FOREIGN KEY (`area_id`) REFERENCES `dorm_area` (`id`),
|
||||
CONSTRAINT `fk_building_campus` FOREIGN KEY (`campus_id`) REFERENCES `dorm_campus` (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='宿舍楼信息表';
|
||||
```
|
||||
|
||||
#### 1.5 二级学院信息表 (dorm_college)
|
||||
**表说明**:存储二级学院基本信息
|
||||
#### 1.4 宿舍楼信息表 (dorm_building)
|
||||
**表说明**:存储宿舍楼基本信息,关联宿舍区
|
||||
|
||||
```sql
|
||||
CREATE TABLE `dorm_college` (
|
||||
DROP TABLE IF EXISTS `xg_dorm_area`;
|
||||
CREATE TABLE `xg_dorm_area` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`college_code` varchar(50) NOT NULL COMMENT '学院编码',
|
||||
`college_name` varchar(100) NOT NULL COMMENT '学院名称',
|
||||
`campus_id` bigint(20) DEFAULT NULL COMMENT '所属校区ID',
|
||||
`college_address` varchar(200) DEFAULT NULL COMMENT '学院地址',
|
||||
`college_phone` varchar(20) DEFAULT NULL COMMENT '学院联系电话',
|
||||
`college_manager` varchar(50) DEFAULT NULL COMMENT '学院负责人',
|
||||
`student_count` int(11) DEFAULT 0 COMMENT '学生数量',
|
||||
`college_description` varchar(500) DEFAULT NULL COMMENT '学院描述',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`area_code` varchar(50) NOT NULL COMMENT '宿舍区编码',
|
||||
`area_name` varchar(100) NOT NULL COMMENT '宿舍区名称',
|
||||
`campus_id` bigint(20) NOT NULL COMMENT '所属校区ID',
|
||||
`area_description` varchar(500) DEFAULT NULL COMMENT '宿舍区描述',
|
||||
`sort_order` int(11) DEFAULT '0' COMMENT '排序号',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
|
||||
`tenant_id` bigint(20) DEFAULT '0' COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_college_code` (`college_code`),
|
||||
UNIQUE KEY `uk_area_code` (`area_code`),
|
||||
KEY `idx_campus_id` (`campus_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='宿舍区信息表';
|
||||
```
|
||||
|
||||
#### 1.5 宿舍房间表 (dorm_room)
|
||||
**表说明**:存储宿舍房间基本信息,关联宿舍楼,包含楼层属性
|
||||
|
||||
```sql
|
||||
DROP TABLE IF EXISTS `xg_dorm_room`;
|
||||
CREATE TABLE `xg_dorm_room` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`room_code` varchar(50) NOT NULL COMMENT '房间编号',
|
||||
`room_name` varchar(100) NOT NULL COMMENT '房间名称',
|
||||
`building_id` bigint(20) NOT NULL COMMENT '所属宿舍楼ID',
|
||||
`floor_num` int(11) NOT NULL COMMENT '楼层',
|
||||
`room_type` char(1) DEFAULT '1' COMMENT '房间类型(1学生宿舍 3教师宿舍)',
|
||||
`actual_beds` int(11) DEFAULT 4 COMMENT '实际床位数',
|
||||
`room_area` decimal(10,2) DEFAULT NULL COMMENT '房间面积(平方米)',
|
||||
`room_status` char(1) DEFAULT '0' COMMENT '房间状态(0可用 1维修中 2已报废)',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT '0' COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_room_code` (`room_code`),
|
||||
KEY `idx_building_id` (`building_id`),
|
||||
KEY `idx_floor_num` (`floor_num`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='宿舍房间信息表';
|
||||
```
|
||||
|
||||
#### 1.6 宿舍床位表 (dorm_bed)
|
||||
**表说明**:存储宿舍床位基本信息,关联宿舍房间
|
||||
|
||||
```sql
|
||||
DROP TABLE IF EXISTS `xg_dorm_bed`;
|
||||
CREATE TABLE `xg_dorm_bed` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`bed_code` varchar(50) NOT NULL COMMENT '床位编号',
|
||||
`bed_name` varchar(100) NOT NULL COMMENT '床位名称',
|
||||
`room_id` bigint(20) NOT NULL COMMENT '所属房间ID',
|
||||
`bed_type` char(1) DEFAULT '1' COMMENT '床位类型(1下铺 2上铺 3中铺 4独立床)',
|
||||
`bed_status` char(1) DEFAULT '0' COMMENT '床位状态(0空闲 1已分配 2维修中)',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT '0' COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_bed_code` (`bed_code`),
|
||||
KEY `idx_room_id` (`room_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='宿舍床位信息表';
|
||||
|
||||
DROP TABLE IF EXISTS `xg_dorm_bed_student`;
|
||||
CREATE TABLE `xg_dorm_bed_student` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`college_id` bigint(20) NOT NULL COMMENT '分配学院ID',
|
||||
`student_id` bigint(20) NOT NULL COMMENT '分配学生ID',
|
||||
`bed_id` bigint(20) NOT NULL COMMENT '床位ID',
|
||||
`room_id` bigint(20) NOT NULL COMMENT '房间ID',
|
||||
`building_id` bigint(20) NOT NULL COMMENT '宿舍楼ID',
|
||||
`area_id` bigint(20) NOT NULL COMMENT '宿舍区ID',
|
||||
`campus_id` bigint(20) NOT NULL COMMENT '校区ID',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1已退宿)',
|
||||
`assign_time` datetime NOT NULL COMMENT '分配时间',
|
||||
`checkout_time` datetime DEFAULT NULL COMMENT '退宿时间',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT '0' COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_student_bed` (`student_id`, `bed_id`),
|
||||
KEY `idx_college_id` (`college_id`),
|
||||
KEY `idx_student_id` (`student_id`),
|
||||
KEY `idx_bed_id` (`bed_id`),
|
||||
KEY `idx_room_id` (`room_id`),
|
||||
KEY `idx_building_id` (`building_id`),
|
||||
KEY `idx_area_id` (`area_id`),
|
||||
KEY `idx_campus_id` (`campus_id`),
|
||||
KEY `idx_college_status` (`status`),
|
||||
CONSTRAINT `fk_college_campus` FOREIGN KEY (`campus_id`) REFERENCES `dorm_campus` (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='二级学院信息表';
|
||||
KEY `idx_assign_time` (`assign_time`),
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='床位学生分配关系表';
|
||||
```
|
||||
|
||||
### 2. 管理人员表
|
||||
### 2. 宿舍管理人员相关表
|
||||
|
||||
#### 2.1 宿舍管理人员基本信息表 (dorm_manager)
|
||||
**表说明**:存储宿舍管理人员的基本信息
|
||||
#### 2.1 宿舍管理员表 (dorm_manager)
|
||||
**表说明**:存储全校、校区、宿舍区、宿舍楼管理员的基本信息
|
||||
|
||||
```sql
|
||||
CREATE TABLE `dorm_manager` (
|
||||
DROP TABLE IF EXISTS `xg_dorm_manager`;
|
||||
CREATE TABLE `xg_dorm_manager` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`manager_code` varchar(50) NOT NULL COMMENT '管理人员编码',
|
||||
`manager_name` varchar(50) NOT NULL COMMENT '管理人员姓名',
|
||||
`gender` char(1) DEFAULT NULL COMMENT '性别(0男 1女 2未知)',
|
||||
`birth_date` date DEFAULT NULL COMMENT '出生日期',
|
||||
`id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
|
||||
`phone` varchar(11) DEFAULT NULL COMMENT '手机号码',
|
||||
`email` varchar(100) DEFAULT NULL COMMENT '邮箱地址',
|
||||
`office_phone` varchar(20) DEFAULT NULL COMMENT '办公电话',
|
||||
`department` varchar(100) DEFAULT NULL COMMENT '所属部门',
|
||||
`position` varchar(100) DEFAULT NULL COMMENT '职位',
|
||||
`hire_date` date DEFAULT NULL COMMENT '入职时间',
|
||||
`work_status` char(1) DEFAULT '0' COMMENT '工作状态(0在职 1离职 2休假)',
|
||||
`education` varchar(50) DEFAULT NULL COMMENT '学历',
|
||||
`major` varchar(100) DEFAULT NULL COMMENT '专业',
|
||||
`certificates` varchar(500) DEFAULT NULL COMMENT '相关证书',
|
||||
`manager_description` varchar(500) DEFAULT NULL COMMENT '个人描述',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
|
||||
`manager_name` varchar(100) NOT NULL COMMENT '管理员姓名',
|
||||
`manager_type` char(1) NOT NULL COMMENT '管理员类型(1全校管理员 2校区管理员 3宿舍区管理员 4宿舍楼管理员)',
|
||||
`manager_level` int(11) DEFAULT 1 COMMENT '管理级别(1-5,1为最高)',
|
||||
`user_id` bigint(20) DEFAULT NULL COMMENT '关联用户ID',
|
||||
`phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
|
||||
`gender` char(1) DEFAULT '0' COMMENT '性别(0男 1女 2未知)',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
|
||||
`tenant_id` bigint(20) DEFAULT '0' COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_manager_code` (`manager_code`),
|
||||
UNIQUE KEY `uk_id_card` (`id_card`),
|
||||
KEY `idx_manager_name` (`manager_name`),
|
||||
KEY `idx_phone` (`phone`),
|
||||
KEY `idx_manager_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='宿舍管理人员基本信息表';
|
||||
```
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_manager_type` (`manager_type`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='宿舍管理员信息表';
|
||||
|
||||
#### 2.2 管理人员职位表 (dorm_manager_position)
|
||||
**表说明**:存储管理人员的职位信息
|
||||
|
||||
```sql
|
||||
CREATE TABLE `dorm_manager_position` (
|
||||
DROP TABLE IF EXISTS `xg_dorm_manager_source`;
|
||||
CREATE TABLE `xg_dorm_manager_source` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`position_code` varchar(50) NOT NULL COMMENT '职位编码',
|
||||
`position_name` varchar(100) NOT NULL COMMENT '职位名称',
|
||||
`position_level` int(11) NOT NULL COMMENT '职位层级(1-5)',
|
||||
`parent_position_id` bigint(20) DEFAULT NULL COMMENT '上级职位ID',
|
||||
`position_description` varchar(500) DEFAULT NULL COMMENT '职位描述',
|
||||
`permission_level` int(11) DEFAULT NULL COMMENT '权限层级',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`manager_id` bigint(20) NOT NULL COMMENT '管理员ID',
|
||||
`permission_type` char(1) DEFAULT '1' COMMENT '权限类型(1查看 2编辑 3完全管理)',
|
||||
`auth_type` char(1) NOT NULL COMMENT '授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)',
|
||||
`auth_source` bigint(20) DEFAULT NULL COMMENT '授权来源ID(对应校区ID或宿舍区ID或楼栋ID)',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0有效 1已撤销)',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_position_code` (`position_code`),
|
||||
KEY `idx_position_level` (`position_level`),
|
||||
KEY `idx_parent_position` (`parent_position_id`),
|
||||
KEY `idx_position_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理人员职位表';
|
||||
```
|
||||
|
||||
#### 2.3 管理人员分配表 (dorm_manager_assignment)
|
||||
**表说明**:存储管理人员的分配信息,支持多维度分配
|
||||
|
||||
```sql
|
||||
CREATE TABLE `dorm_manager_assignment` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`manager_id` bigint(20) NOT NULL COMMENT '管理人员ID',
|
||||
`position_id` bigint(20) NOT NULL COMMENT '职位ID',
|
||||
`dimension_type` varchar(50) NOT NULL COMMENT '维度类型(campus/area/building/college)',
|
||||
`dimension_id` bigint(20) NOT NULL COMMENT '维度ID',
|
||||
`assignment_type` char(1) DEFAULT '1' COMMENT '分配类型(1主要 2辅助 3临时)',
|
||||
`start_date` date NOT NULL COMMENT '分配开始日期',
|
||||
`end_date` date DEFAULT NULL COMMENT '分配结束日期',
|
||||
`assignment_reason` varchar(500) DEFAULT NULL COMMENT '分配原因',
|
||||
`approval_status` char(1) DEFAULT '0' COMMENT '审批状态(0待审批 1已通过 2已拒绝)',
|
||||
`approval_by` bigint(20) DEFAULT NULL COMMENT '审批人',
|
||||
`approval_time` datetime DEFAULT NULL COMMENT '审批时间',
|
||||
`approval_remark` varchar(500) DEFAULT NULL COMMENT '审批备注',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
|
||||
`tenant_id` bigint(20) DEFAULT '0' COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
@@ -285,203 +245,94 @@ CREATE TABLE `dorm_manager_assignment` (
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_manager_id` (`manager_id`),
|
||||
KEY `idx_position_id` (`position_id`),
|
||||
KEY `idx_dimension_type` (`dimension_type`),
|
||||
KEY `idx_dimension_id` (`dimension_id`),
|
||||
KEY `idx_assignment_status` (`status`),
|
||||
KEY `idx_approval_status` (`approval_status`),
|
||||
CONSTRAINT `fk_assignment_manager` FOREIGN KEY (`manager_id`) REFERENCES `dorm_manager` (`id`),
|
||||
CONSTRAINT `fk_assignment_position` FOREIGN KEY (`position_id`) REFERENCES `dorm_manager_position` (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理人员分配表';
|
||||
KEY `idx_auth_source` (`auth_source`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员授权关系表';
|
||||
|
||||
```
|
||||
|
||||
### 3. 权限管理表
|
||||
|
||||
#### 3.1 权限层级表 (dorm_permission_level)
|
||||
**表说明**:定义权限层级信息
|
||||
#### 2.2 管理员宿舍楼权限关系表 (dorm_manager_building)
|
||||
**表说明**:存储管理员与宿舍楼的权限绑定关系
|
||||
|
||||
```sql
|
||||
CREATE TABLE `dorm_permission_level` (
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS `xg_dorm_manager_building`;
|
||||
CREATE TABLE `xg_dorm_manager_building` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`level_code` varchar(50) NOT NULL COMMENT '权限层级编码',
|
||||
`level_name` varchar(100) NOT NULL COMMENT '权限层级名称',
|
||||
`level_value` int(11) NOT NULL COMMENT '权限层级值(1-5)',
|
||||
`parent_level_id` bigint(20) DEFAULT NULL COMMENT '上级权限层级ID',
|
||||
`level_description` varchar(500) DEFAULT NULL COMMENT '权限层级描述',
|
||||
`data_scope` varchar(200) DEFAULT NULL COMMENT '数据权限范围',
|
||||
`function_permissions` varchar(500) DEFAULT NULL COMMENT '功能权限列表',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
|
||||
`manager_id` bigint(20) NOT NULL COMMENT '管理员ID',
|
||||
`building_id` bigint(20) NOT NULL COMMENT '宿舍楼ID',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0有效 1已撤销)',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT '0' COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_manager_building` (`manager_id`, `building_id`),
|
||||
KEY `idx_manager_id` (`manager_id`),
|
||||
KEY `idx_building_id` (`building_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员宿舍楼权限关系表';
|
||||
```
|
||||
|
||||
#### 2.3 二级学院宿舍管理员表 (dorm_college_manager)
|
||||
**表说明**:存储二级学院宿舍管理员的基本信息
|
||||
|
||||
```sql
|
||||
DROP TABLE IF EXISTS `xg_dorm_college_manager`;
|
||||
CREATE TABLE `xg_dorm_college_manager` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`manager_name` varchar(100) NOT NULL COMMENT '管理员姓名',
|
||||
`college_id` bigint(20) NOT NULL COMMENT '所属学院ID',
|
||||
`user_id` bigint(20) DEFAULT NULL COMMENT '关联用户ID',
|
||||
`phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
|
||||
`gender` char(1) DEFAULT '0' COMMENT '性别(0男 1女 2未知)',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
|
||||
`tenant_id` bigint(20) DEFAULT '0' COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_level_code` (`level_code`),
|
||||
UNIQUE KEY `uk_level_value` (`level_value`),
|
||||
KEY `idx_parent_level` (`parent_level_id`),
|
||||
KEY `idx_level_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限层级表';
|
||||
KEY `idx_college_id` (`college_id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='二级学院宿舍管理员信息表';
|
||||
```
|
||||
|
||||
#### 3.2 管理人员权限表 (dorm_manager_permission)
|
||||
**表说明**:存储管理人员的具体权限配置
|
||||
#### 2.4 二级学院床位绑定关系表 (dorm_college_bed)
|
||||
**表说明**:存储二级学院与床位的绑定关系
|
||||
|
||||
```sql
|
||||
CREATE TABLE `dorm_manager_permission` (
|
||||
DROP TABLE IF EXISTS `xg_dorm_college_bed`;
|
||||
CREATE TABLE `xg_dorm_college_bed` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`manager_id` bigint(20) NOT NULL COMMENT '管理人员ID',
|
||||
`permission_level_id` bigint(20) NOT NULL COMMENT '权限层级ID',
|
||||
`dimension_type` varchar(50) NOT NULL COMMENT '维度类型',
|
||||
`dimension_id` bigint(20) NOT NULL COMMENT '维度ID',
|
||||
`data_permissions` varchar(500) DEFAULT NULL COMMENT '数据权限配置',
|
||||
`function_permissions` varchar(500) DEFAULT NULL COMMENT '功能权限配置',
|
||||
`permission_type` char(1) DEFAULT '1' COMMENT '权限类型(1继承 2授权 3临时)',
|
||||
`grant_by` bigint(20) DEFAULT NULL COMMENT '授权人',
|
||||
`grant_time` datetime DEFAULT NULL COMMENT '授权时间',
|
||||
`expire_time` datetime DEFAULT NULL COMMENT '权限过期时间',
|
||||
`permission_status` char(1) DEFAULT '0' COMMENT '权限状态(0有效 1过期 2停用)',
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序号',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`college_id` bigint(20) NOT NULL COMMENT '学院ID',
|
||||
`bed_id` bigint(20) NOT NULL COMMENT '床位ID',
|
||||
`building_id` bigint(20) NOT NULL COMMENT '宿舍楼ID',
|
||||
`room_id` bigint(20) NOT NULL COMMENT '房间ID',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1已解除)',
|
||||
`assign_time` datetime DEFAULT NULL COMMENT '分配时间',
|
||||
`release_time` datetime DEFAULT NULL COMMENT '到期解除时间',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
|
||||
`tenant_id` bigint(20) DEFAULT '0' COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_manager_id` (`manager_id`),
|
||||
KEY `idx_permission_level` (`permission_level_id`),
|
||||
KEY `idx_dimension_type` (`dimension_type`),
|
||||
KEY `idx_dimension_id` (`dimension_id`),
|
||||
KEY `idx_permission_status` (`permission_status`),
|
||||
KEY `idx_grant_by` (`grant_by`),
|
||||
CONSTRAINT `fk_permission_manager` FOREIGN KEY (`manager_id`) REFERENCES `dorm_manager` (`id`),
|
||||
CONSTRAINT `fk_permission_level` FOREIGN KEY (`permission_level_id`) REFERENCES `dorm_permission_level` (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理人员权限表';
|
||||
UNIQUE KEY `uk_college_bed` (`college_id`, `bed_id`),
|
||||
KEY `idx_college_id` (`college_id`),
|
||||
KEY `idx_bed_id` (`bed_id`),
|
||||
KEY `idx_building_id` (`building_id`),
|
||||
KEY `idx_room_id` (`room_id`),
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='二级学院床位绑定关系表';
|
||||
```
|
||||
|
||||
#### 3.3 权限变更日志表 (dorm_permission_log)
|
||||
**表说明**:记录权限变更的详细日志
|
||||
|
||||
```sql
|
||||
CREATE TABLE `dorm_permission_log` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`manager_id` bigint(20) NOT NULL COMMENT '管理人员ID',
|
||||
`operation_type` varchar(50) NOT NULL COMMENT '操作类型(grant/revoke/modify)',
|
||||
`permission_level_id` bigint(20) DEFAULT NULL COMMENT '权限层级ID',
|
||||
`dimension_type` varchar(50) DEFAULT NULL COMMENT '维度类型',
|
||||
`dimension_id` bigint(20) DEFAULT NULL COMMENT '维度ID',
|
||||
`old_permissions` text DEFAULT NULL COMMENT '变更前权限配置',
|
||||
`new_permissions` text DEFAULT NULL COMMENT '变更后权限配置',
|
||||
`operation_reason` varchar(500) DEFAULT NULL COMMENT '操作原因',
|
||||
`operator_id` bigint(20) NOT NULL COMMENT '操作人ID',
|
||||
`operator_name` varchar(50) NOT NULL COMMENT '操作人姓名',
|
||||
`operation_time` datetime NOT NULL COMMENT '操作时间',
|
||||
`ip_address` varchar(50) DEFAULT NULL COMMENT '操作IP地址',
|
||||
`user_agent` varchar(500) DEFAULT NULL COMMENT '用户代理',
|
||||
`operation_result` char(1) DEFAULT '1' COMMENT '操作结果(0失败 1成功)',
|
||||
`error_message` varchar(500) DEFAULT NULL COMMENT '错误信息',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_manager_id` (`manager_id`),
|
||||
KEY `idx_operation_type` (`operation_type`),
|
||||
KEY `idx_operator_id` (`operator_id`),
|
||||
KEY `idx_operation_time` (`operation_time`),
|
||||
KEY `idx_operation_result` (`operation_result`),
|
||||
CONSTRAINT `fk_log_manager` FOREIGN KEY (`manager_id`) REFERENCES `dorm_manager` (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限变更日志表';
|
||||
```
|
||||
|
||||
### 4. 管理效果评估表
|
||||
|
||||
#### 4.1 管理数据统计表 (dorm_management_stats)
|
||||
**表说明**:存储管理效果的统计数据
|
||||
|
||||
```sql
|
||||
CREATE TABLE `dorm_management_stats` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`manager_id` bigint(20) NOT NULL COMMENT '管理人员ID',
|
||||
`dimension_type` varchar(50) NOT NULL COMMENT '维度类型',
|
||||
`dimension_id` bigint(20) NOT NULL COMMENT '维度ID',
|
||||
`stats_date` date NOT NULL COMMENT '统计日期',
|
||||
`stats_type` varchar(50) NOT NULL COMMENT '统计类型(daily/weekly/monthly)',
|
||||
`building_count` int(11) DEFAULT 0 COMMENT '管理宿舍楼数量',
|
||||
`student_count` int(11) DEFAULT 0 COMMENT '管理学生数量',
|
||||
`task_completed` int(11) DEFAULT 0 COMMENT '完成任务数量',
|
||||
`task_total` int(11) DEFAULT 0 COMMENT '总任务数量',
|
||||
`problem_resolved` int(11) DEFAULT 0 COMMENT '解决问题数量',
|
||||
`problem_total` int(11) DEFAULT 0 COMMENT '总问题数量',
|
||||
`satisfaction_score` decimal(3,2) DEFAULT 0.00 COMMENT '满意度评分',
|
||||
`efficiency_score` decimal(3,2) DEFAULT 0.00 COMMENT '效率评分',
|
||||
`quality_score` decimal(3,2) DEFAULT 0.00 COMMENT '质量评分',
|
||||
`overall_score` decimal(3,2) DEFAULT 0.00 COMMENT '综合评分',
|
||||
`stats_data` json DEFAULT NULL COMMENT '详细统计数据',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_stats_unique` (`manager_id`, `dimension_type`, `dimension_id`, `stats_date`, `stats_type`),
|
||||
KEY `idx_manager_id` (`manager_id`),
|
||||
KEY `idx_dimension_type` (`dimension_type`),
|
||||
KEY `idx_dimension_id` (`dimension_id`),
|
||||
KEY `idx_stats_date` (`stats_date`),
|
||||
KEY `idx_stats_type` (`stats_type`),
|
||||
CONSTRAINT `fk_stats_manager` FOREIGN KEY (`manager_id`) REFERENCES `dorm_manager` (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理数据统计表';
|
||||
```
|
||||
|
||||
#### 4.2 权限使用记录表 (dorm_permission_usage)
|
||||
**表说明**:记录权限使用的详细情况
|
||||
|
||||
```sql
|
||||
CREATE TABLE `dorm_permission_usage` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`manager_id` bigint(20) NOT NULL COMMENT '管理人员ID',
|
||||
`permission_level_id` bigint(20) NOT NULL COMMENT '权限层级ID',
|
||||
`dimension_type` varchar(50) NOT NULL COMMENT '维度类型',
|
||||
`dimension_id` bigint(20) NOT NULL COMMENT '维度ID',
|
||||
`function_name` varchar(100) NOT NULL COMMENT '功能名称',
|
||||
`operation_type` varchar(50) NOT NULL COMMENT '操作类型(view/edit/delete/approve)',
|
||||
`operation_time` datetime NOT NULL COMMENT '操作时间',
|
||||
`operation_result` char(1) DEFAULT '1' COMMENT '操作结果(0失败 1成功)',
|
||||
`response_time` int(11) DEFAULT NULL COMMENT '响应时间(毫秒)',
|
||||
`ip_address` varchar(50) DEFAULT NULL COMMENT '操作IP地址',
|
||||
`user_agent` varchar(500) DEFAULT NULL COMMENT '用户代理',
|
||||
`session_id` varchar(100) DEFAULT NULL COMMENT '会话ID',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT 0 COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_manager_id` (`manager_id`),
|
||||
KEY `idx_permission_level` (`permission_level_id`),
|
||||
KEY `idx_dimension_type` (`dimension_type`),
|
||||
KEY `idx_dimension_id` (`dimension_id`),
|
||||
KEY `idx_function_name` (`function_name`),
|
||||
KEY `idx_operation_time` (`operation_time`),
|
||||
KEY `idx_operation_result` (`operation_result`),
|
||||
CONSTRAINT `fk_usage_manager` FOREIGN KEY (`manager_id`) REFERENCES `dorm_manager` (`id`),
|
||||
CONSTRAINT `fk_usage_permission_level` FOREIGN KEY (`permission_level_id`) REFERENCES `dorm_permission_level` (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限使用记录表';
|
||||
```
|
||||
|
||||
## 🔗 表关系设计
|
||||
|
||||
@@ -503,15 +354,6 @@ dorm_permission_level (权限层级)
|
||||
└── Level 5: 二级学院宿舍管理负责人
|
||||
```
|
||||
|
||||
### 3. 管理人员关系图
|
||||
```
|
||||
dorm_manager (管理人员)
|
||||
├── dorm_manager_position (职位信息)
|
||||
├── dorm_manager_assignment (分配信息)
|
||||
├── dorm_manager_permission (权限信息)
|
||||
├── dorm_management_stats (统计信息)
|
||||
└── dorm_permission_usage (使用记录)
|
||||
```
|
||||
|
||||
## 📊 索引设计
|
||||
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
# 宿舍楼树形结构API开发变更记录
|
||||
|
||||
**日期**: 2025-07-03
|
||||
**作者**: cursor
|
||||
**模块**: 学生宿舍管理
|
||||
|
||||
## 变更内容
|
||||
|
||||
### 1. 新增实体类
|
||||
|
||||
- 创建 `DormBuildingTreeVo.java`: 实现宿舍楼树形结构VO类,包含id、label、type、disabled、buildingFloors、children等字段
|
||||
- 创建 `DormBuildingInfoVo.java`: 实现宿舍楼信息VO类,用于数据库查询结果映射
|
||||
- 创建 `DormBuildingTreeBo.java`: 实现查询参数业务对象类,包含campusId、areaId、buildingName、status等字段
|
||||
|
||||
### 2. 新增Mapper接口和XML
|
||||
|
||||
- 创建 `XgDormBuildingTreeMapper.java`: 包含获取校区、宿舍区、宿舍楼和检查用户权限等方法
|
||||
- 创建 `XgDormBuildingTreeMapper.xml`: 实现各种SQL查询,包括权限过滤逻辑
|
||||
|
||||
### 3. 新增服务接口和实现
|
||||
|
||||
- 创建 `IXgDormBuildingTreeService.java`: 定义获取宿舍楼树形结构的服务接口
|
||||
- 创建 `XgDormBuildingTreeServiceImpl.java`: 实现服务接口,包含按权限过滤和构建三级树形结构的逻辑
|
||||
|
||||
### 4. 新增控制器
|
||||
|
||||
- 创建 `XgDormBuildingTreeController.java`: 提供获取宿舍楼树形结构的REST接口
|
||||
|
||||
### 5. 新增API文档
|
||||
|
||||
- 创建 `宿舍房间管理API.md`: 记录API接口的使用方法和参数说明
|
||||
|
||||
### 6. 代码优化与修复 (2025-07-03 16:25:30)
|
||||
|
||||
- 修改 `XgDormBuildingTreeServiceImpl.java`: 优化宿舍楼查询逻辑,支持用户拥有多种角色权限的情况
|
||||
- 解决问题: 之前代码只会按优先级执行一种角色的查询,现在改为合并多种权限查询的结果
|
||||
- 实现思路:
|
||||
- 保留全校管理员最高权限判断(可查看所有宿舍楼)
|
||||
- 对于其他权限类型,分别查询并合并结果
|
||||
- 使用HashSet确保宿舍楼不重复
|
||||
- 修正了字段访问方法,使用getId()而不是getBuildingId()
|
||||
|
||||
### 7. API返回字段修复 (2025-07-23 10:30:15)
|
||||
|
||||
- 修改 `XgDormBuildingMapper.xml`: 修复宿舍楼信息列表接口floors字段返回为null的问题
|
||||
- 解决问题: 宿舍楼信息查询接口未返回floors字段,导致前端显示为null
|
||||
- 修复详情:
|
||||
- 在selectPageWithAreaAndCampusName方法的SELECT查询语句中添加了b.floors字段
|
||||
- 确保与数据库表设计和实体类定义保持一致
|
||||
- 完整路径: `/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/sslxx/XgDormBuildingMapper.xml`
|
||||
|
||||
## 实现功能
|
||||
|
||||
1. **三级树形结构**:
|
||||
- 第一级:校区(不可点击)
|
||||
- 第二级:宿舍区(不可点击)
|
||||
- 第三级:宿舍楼(可点击)
|
||||
|
||||
2. **多级数据权限**:
|
||||
- 全校管理员(manager_type=1):可查看所有宿舍楼
|
||||
- 校区管理员(manager_type=2):只能查看管理校区的宿舍楼
|
||||
- 宿舍区管理员(manager_type=3):只能查看管理宿舍区的宿舍楼
|
||||
- 宿舍楼管理员(manager_type=4):只能查看管理宿舍楼
|
||||
- **新增:支持一个用户同时拥有多种管理员角色,数据权限取并集**
|
||||
|
||||
3. **权限数据关联**:
|
||||
- 通过 xg_dorm_manager 表获取用户权限类型
|
||||
- 通过 xg_dorm_manager_source 表获取具体权限范围
|
||||
|
||||
## API接口说明
|
||||
|
||||
- **接口URL**: `/xgss/dormBuildingTree/list`
|
||||
- **请求方式**: GET
|
||||
- **权限要求**: `xgss:dormBuildingTree:list`
|
||||
- **可选参数**: campusId, areaId, buildingName, status
|
||||
- **返回格式**: 嵌套的树形结构JSON
|
||||
|
||||
## 下一步计划
|
||||
|
||||
1. 前端页面改造:将模拟数据替换为真实API调用
|
||||
2. 单元测试:编写测试用例验证API的功能和权限控制
|
||||
3. 集成测试:验证API在真实环境中的表现
|
||||
4. 完善文档:补充其他宿舍管理相关API的文档
|
||||
@@ -0,0 +1,68 @@
|
||||
# 宿舍楼管理API树形结构开发记录
|
||||
|
||||
**时间**: 2025-07-20 15:30:00
|
||||
**开发人员**: zlwu
|
||||
**变更模块**: 宿舍管理 - 宿舍楼树形结构API
|
||||
|
||||
## 变更内容
|
||||
|
||||
### 1. 新增类文件
|
||||
|
||||
1. 新增 `BuildingTreeSelectVo.java` 类用于宿舍楼树形结构展示
|
||||
- 支持校区-宿舍区-宿舍楼三级结构
|
||||
- 标识节点类型和可选状态
|
||||
|
||||
### 2. API接口开发
|
||||
|
||||
1. 在 `XgDormBuildingController` 中新增 `/buildingTree` 接口:
|
||||
- 获取完整的宿舍楼树形结构
|
||||
- 校区和宿舍区节点设置为不可选(disabled=true)
|
||||
- 宿舍楼节点设置为可选(disabled=false)
|
||||
|
||||
2. 在 `IXgDormBuildingService` 接口中添加 `getBuildingTreeData()` 方法
|
||||
|
||||
3. 在 `XgDormBuildingServiceImpl` 中实现树形数据构建逻辑:
|
||||
- 查询所有校区、宿舍区和宿舍楼数据
|
||||
- 构建三级层次结构
|
||||
- 确保树中校区和宿舍区节点被标记为不可选
|
||||
- 只有宿舍楼节点可以被选择
|
||||
|
||||
### 3. 数据表关联关系
|
||||
|
||||
- `xg_dorm_building` 通过 `campus_id` 关联 `xg_dorm_campus`
|
||||
- `xg_dorm_building` 通过 `area_id` 关联 `xg_dorm_area`
|
||||
- `xg_dorm_area` 通过 `campus_id` 关联 `xg_dorm_campus`
|
||||
|
||||
### 4. 前端实现
|
||||
|
||||
1. 在`web/src/api/sslxx/dormBuilding/types.ts`中添加`BuildingTreeSelectVo`接口定义:
|
||||
- 定义了树形节点的属性类型
|
||||
- 包含id、label、nodeType、disabled等核心字段
|
||||
- 支持children属性用于嵌套结构
|
||||
|
||||
2. 在`web/src/api/sslxx/dormBuilding/index.ts`中添加`getBuildingTree`方法:
|
||||
- 调用后端API获取树形结构数据
|
||||
- 方法返回类型为`AxiosPromise<BuildingTreeSelectVo[]>`
|
||||
|
||||
3. 修改`ScopeDialog.vue`组件:
|
||||
- 为宿舍楼类型(type="building")添加独立的树形选择器
|
||||
- 移除原有的模拟数据,改用API获取真实数据
|
||||
- 添加宿舍楼数据回显和解析逻辑
|
||||
- 保留对校区和宿舍区的原有支持
|
||||
|
||||
## 技术实现
|
||||
|
||||
树形结构数据构建采用三步查询 + 组装的方式:
|
||||
1. 首先查询所有校区数据
|
||||
2. 查询所有宿舍区数据
|
||||
3. 查询所有宿舍楼数据
|
||||
4. 通过Stream API过滤和关联数据,构建多层嵌套结构
|
||||
|
||||
## 使用说明
|
||||
|
||||
1. 校区管理员授权时,使用普通多选下拉框
|
||||
2. 宿舍区管理员授权时,使用以校区为父节点的两级树形结构
|
||||
3. 宿舍楼管理员授权时,使用新开发的三级树形结构(校区-宿舍区-宿舍楼)
|
||||
- 校区和宿舍区节点自动禁用,不可选择
|
||||
- 只有宿舍楼节点可以选择
|
||||
- 支持多选和折叠标签
|
||||
@@ -1,5 +1,6 @@
|
||||
# API文档总览
|
||||
|
||||
<<<<<<< HEAD
|
||||
本文档作为所有API文档的总入口,提供快速导航功能。
|
||||
|
||||
## 基础规范
|
||||
@@ -28,3 +29,60 @@
|
||||
## 开发工具
|
||||
|
||||
- [API文档模板](./API文档模板.md)
|
||||
=======
|
||||
本文件作为API文档的统一导航入口,提供项目中所有API文档的快速访问链接。
|
||||
|
||||
## 认证登录
|
||||
|
||||
- [用户认证登录API](./用户认证登录API.md) - 用户登录、获取用户信息等接口
|
||||
|
||||
## 学工管理模块
|
||||
- [班干部管理API](班干部管理API.md)
|
||||
- [宿舍管理员授权API](宿舍管理员授权API.md)
|
||||
- [宿舍楼树形结构API](宿舍楼树形结构API.md) - 校区-宿舍区-宿舍楼三级树形结构数据 (旧版API,路径: `/sslxx/dormBuilding/buildingTree`)
|
||||
|
||||
## 宿舍管理相关API
|
||||
|
||||
| API文档名称 | 说明 | 路径 |
|
||||
| ---------- | ---- | ---- |
|
||||
| [宿舍房间管理API](./宿舍房间管理API.md) | 提供宿舍楼树形结构API | `/xgss/dormBuildingTree/list` |
|
||||
| [宿舍房间管理API](./宿舍房间管理API.md) | 提供宿舍楼列表查询API | `/sslxx/dormBuilding/list` |
|
||||
|
||||
## 后勤管理
|
||||
|
||||
### 场地管理
|
||||
|
||||
- [场地预约管理API](./场地预约管理API.md) - 场地信息管理、预约申请管理接口
|
||||
- [报告厅预约审核API](./报告厅预约审核API.md) - 报告厅信息管理、预约审核接口
|
||||
|
||||
### 物业管理
|
||||
|
||||
- [物业报修管理API](./物业报修管理API.md) - 报修工单管理、维修处理接口
|
||||
|
||||
### 满意度调查
|
||||
|
||||
- [后勤满意度调查API](./后勤满意度调查API.md) - 问卷设计、答题管理接口
|
||||
|
||||
## 工作流管理
|
||||
|
||||
- [请假流程API](./请假流程API.md) - 请假申请、审批管理接口
|
||||
|
||||
## 系统管理
|
||||
|
||||
- [菜单权限API](./菜单权限API.md) - 菜单配置、权限管理接口
|
||||
- [用户管理API](./用户管理API.md) - 系统用户、角色、部门管理接口
|
||||
|
||||
## API基础规范
|
||||
|
||||
- [API文档基础规范](./API文档基础规范.md) - API接口设计规范、响应格式规范
|
||||
|
||||
## 更新记录
|
||||
|
||||
- 2025-07-23:修复宿舍楼列表接口floors字段为null的问题,更新宿舍房间管理API文档
|
||||
- 2025-07-03:更新宿舍房间管理API,增强多角色权限支持
|
||||
- 2025-07-20:新增宿舍楼树形结构API文档
|
||||
- 2025-07-20:新增宿舍管理员授权API文档
|
||||
- 2025-07-15:新增场地预约管理API文档
|
||||
- 2025-07-10:新增物业报修管理API文档
|
||||
- 2025-07-01:重组API文档结构,创建统一导航入口
|
||||
>>>>>>> 8e84da4ed45dd1d711c4a797a4f26f637012f6a9
|
||||
@@ -0,0 +1,263 @@
|
||||
# 宿舍房间管理API文档
|
||||
|
||||
## 目录
|
||||
|
||||
- [1. 宿舍楼树形结构](#1-宿舍楼树形结构)
|
||||
- [1.1 获取宿舍楼树形结构](#11-获取宿舍楼树形结构)
|
||||
- [2. 宿舍楼信息管理](#2-宿舍楼信息管理)
|
||||
- [2.1 获取宿舍楼列表](#21-获取宿舍楼列表)
|
||||
|
||||
## 1. 宿舍楼树形结构
|
||||
|
||||
### 1.1 获取宿舍楼树形结构
|
||||
|
||||
#### 接口说明
|
||||
|
||||
该接口用于获取宿舍楼的树形结构数据,按照校区-宿舍区-宿舍楼三级结构组织。校区和宿舍区节点不可点击,只有宿舍楼节点可以点击。
|
||||
|
||||
#### 请求方式
|
||||
|
||||
```
|
||||
GET /xgss/dormBuildingTree/list
|
||||
```
|
||||
|
||||
#### 权限要求
|
||||
|
||||
```
|
||||
xgss:dormBuildingTree:list
|
||||
```
|
||||
|
||||
#### 请求参数
|
||||
|
||||
| 参数名 | 类型 | 必须 | 描述 |
|
||||
| ------------- | ------- | ---- | -------------------- |
|
||||
| campusId | Long | 否 | 校区ID,用于筛选 |
|
||||
| areaId | Long | 否 | 宿舍区ID,用于筛选 |
|
||||
| buildingName | String | 否 | 宿舍楼名称,模糊查询 |
|
||||
| status | String | 否 | 宿舍楼状态 |
|
||||
|
||||
#### 返回结果
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"label": "主校区",
|
||||
"type": "campus",
|
||||
"disabled": true,
|
||||
"children": [
|
||||
{
|
||||
"id": 101,
|
||||
"label": "东区宿舍",
|
||||
"type": "area",
|
||||
"disabled": true,
|
||||
"children": [
|
||||
{
|
||||
"id": 1001,
|
||||
"label": "1号楼",
|
||||
"type": "building",
|
||||
"disabled": false,
|
||||
"buildingFloors": 6
|
||||
},
|
||||
{
|
||||
"id": 1002,
|
||||
"label": "2号楼",
|
||||
"type": "building",
|
||||
"disabled": false,
|
||||
"buildingFloors": 5
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 102,
|
||||
"label": "西区宿舍",
|
||||
"type": "area",
|
||||
"disabled": true,
|
||||
"children": [
|
||||
{
|
||||
"id": 1003,
|
||||
"label": "3号楼",
|
||||
"type": "building",
|
||||
"disabled": false,
|
||||
"buildingFloors": 7
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### 返回参数说明
|
||||
|
||||
| 参数名 | 类型 | 描述 |
|
||||
| -------------- | ------- | ------------------------------------------------ |
|
||||
| id | Long | 节点ID |
|
||||
| label | String | 节点名称 |
|
||||
| type | String | 节点类型(campus:校区,area:宿舍区,building:宿舍楼) |
|
||||
| disabled | Boolean | 是否禁用点击(校区和宿舍区为true,宿舍楼为false) |
|
||||
| buildingFloors | Integer | 宿舍楼层数(只有宿舍楼节点有此字段) |
|
||||
| children | Array | 子节点列表 |
|
||||
|
||||
#### 数据权限说明
|
||||
|
||||
接口会根据当前登录用户的权限进行数据过滤:
|
||||
|
||||
1. 全校管理员(manager_type=1):可以查看所有校区、宿舍区和宿舍楼数据
|
||||
2. 校区管理员(manager_type=2):只能查看其管理的校区下的宿舍区和宿舍楼数据
|
||||
3. 宿舍区管理员(manager_type=3):只能查看其管理的宿舍区下的宿舍楼数据
|
||||
4. 宿舍楼管理员(manager_type=4):只能查看其管理的宿舍楼数据
|
||||
5. **多角色支持**:如果用户同时拥有多种管理员角色(如既是校区管理员又是宿舍楼管理员),将会合并所有权限范围内的数据。例如,一个用户同时是A校区管理员和B宿舍楼管理员,则可以看到A校区下的所有宿舍楼以及B宿舍楼。
|
||||
|
||||
权限判断逻辑:
|
||||
- 通过 xg_dorm_manager 表的 user_id 与当前登录用户匹配,获取用户管理员类型
|
||||
- 根据 manager_type 确定权限级别
|
||||
- 通过 xg_dorm_manager_source 表的 auth_source 确定具体权限范围
|
||||
- **多角色权限合并**:合并不同角色对应的宿舍楼数据,确保不重复
|
||||
|
||||
#### 错误码
|
||||
|
||||
| 错误码 | 描述 |
|
||||
| ------ | -------------------- |
|
||||
| 401 | 未授权,需要登录 |
|
||||
| 403 | 无权限访问该接口 |
|
||||
| 500 | 服务器内部错误 |
|
||||
|
||||
#### 使用示例
|
||||
|
||||
```javascript
|
||||
// 前端代码示例(使用axios)
|
||||
import axios from 'axios';
|
||||
|
||||
// 获取宿舍楼树形结构
|
||||
async function getDormBuildingTree() {
|
||||
try {
|
||||
const response = await axios.get('/xgss/dormBuildingTree/list');
|
||||
if (response.data.code === 200) {
|
||||
return response.data.data;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取宿舍楼树失败:', error);
|
||||
}
|
||||
return [];
|
||||
}
|
||||
```
|
||||
|
||||
## 2. 宿舍楼信息管理
|
||||
|
||||
### 2.1 获取宿舍楼列表
|
||||
|
||||
#### 接口说明
|
||||
|
||||
该接口用于获取宿舍楼信息的分页列表,包含宿舍楼基本信息以及关联的校区和宿舍区信息。
|
||||
|
||||
#### 请求方式
|
||||
|
||||
```
|
||||
GET /sslxx/dormBuilding/list
|
||||
```
|
||||
|
||||
#### 权限要求
|
||||
|
||||
```
|
||||
sslxx:dormBuilding:list
|
||||
```
|
||||
|
||||
#### 请求参数
|
||||
|
||||
| 参数名 | 类型 | 必须 | 描述 |
|
||||
| --------------- | ------- | ---- | ---------------------- |
|
||||
| pageNum | Integer | 是 | 当前页码,从1开始 |
|
||||
| pageSize | Integer | 是 | 每页记录数 |
|
||||
| buildingCode | String | 否 | 宿舍楼编码,模糊查询 |
|
||||
| buildingName | String | 否 | 宿舍楼名称,模糊查询 |
|
||||
| areaId | Long | 否 | 宿舍区ID,精确查询 |
|
||||
| campusId | Long | 否 | 校区ID,精确查询 |
|
||||
| buildingType | String | 否 | 宿舍楼类型(1男生楼 2女生楼 3混合楼) |
|
||||
|
||||
#### 返回结果
|
||||
|
||||
```json
|
||||
{
|
||||
"total": 1,
|
||||
"rows": [
|
||||
{
|
||||
"id": "1947459199879495681",
|
||||
"buildingCode": "xixi-ssq01-ssl01",
|
||||
"buildingName": "西溪校区-宿舍区01-宿舍楼01",
|
||||
"areaId": "1946829650430935041",
|
||||
"areaName": "西溪校区-宿舍区01",
|
||||
"campusId": "1946815553291304962",
|
||||
"campusName": "西溪校区",
|
||||
"buildingType": "1",
|
||||
"buildingDescription": "12312",
|
||||
"sortOrder": 1,
|
||||
"floors": 6,
|
||||
"createBy": 1,
|
||||
"createTime": "2025-07-22 08:50:30",
|
||||
"updateBy": 1,
|
||||
"updateTime": "2025-07-22 08:51:06"
|
||||
}
|
||||
],
|
||||
"code": 200,
|
||||
"msg": "查询成功"
|
||||
}
|
||||
```
|
||||
|
||||
#### 返回参数说明
|
||||
|
||||
| 参数名 | 类型 | 描述 |
|
||||
| ------------------ | ------- | ---------------------------------------- |
|
||||
| id | Long | 宿舍楼主键ID |
|
||||
| buildingCode | String | 宿舍楼编码 |
|
||||
| buildingName | String | 宿舍楼名称 |
|
||||
| areaId | Long | 所属宿舍区ID |
|
||||
| areaName | String | 所属宿舍区名称 |
|
||||
| campusId | Long | 所属校区ID |
|
||||
| campusName | String | 所属校区名称 |
|
||||
| buildingType | String | 宿舍楼类型(1男生楼 2女生楼 3混合楼) |
|
||||
| buildingDescription | String | 宿舍楼描述 |
|
||||
| sortOrder | Integer | 排序号 |
|
||||
| floors | Integer | 总楼层数 |
|
||||
| createBy | Long | 创建者ID |
|
||||
| createTime | Date | 创建时间 |
|
||||
| updateBy | Long | 更新者ID |
|
||||
| updateTime | Date | 更新时间 |
|
||||
|
||||
#### 错误码
|
||||
|
||||
| 错误码 | 描述 |
|
||||
| ------ | -------------------- |
|
||||
| 401 | 未授权,需要登录 |
|
||||
| 403 | 无权限访问该接口 |
|
||||
| 500 | 服务器内部错误 |
|
||||
|
||||
#### 使用示例
|
||||
|
||||
```javascript
|
||||
// 前端代码示例(使用axios)
|
||||
import axios from 'axios';
|
||||
|
||||
// 获取宿舍楼列表
|
||||
async function getDormBuildingList(params) {
|
||||
try {
|
||||
const response = await axios.get('/sslxx/dormBuilding/list', {
|
||||
params: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
...params
|
||||
}
|
||||
});
|
||||
if (response.data.code === 200) {
|
||||
return response.data;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取宿舍楼列表失败:', error);
|
||||
}
|
||||
return { total: 0, rows: [] };
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,174 @@
|
||||
# 宿舍楼树形结构API文档
|
||||
|
||||
## 接口说明
|
||||
|
||||
本文档描述了获取宿舍楼树形结构数据的API接口,该接口返回校区-宿舍区-宿舍楼的三级树形结构,其中校区和宿舍区节点不可选,只有宿舍楼节点可以选择。
|
||||
|
||||
## 接口定义
|
||||
|
||||
### 获取宿舍楼树形结构
|
||||
|
||||
**请求URL**:`/sslxx/dormBuilding/buildingTree`
|
||||
|
||||
**请求方式**:`GET`
|
||||
|
||||
**权限标识**:`sslxx:dormBuilding:list`
|
||||
|
||||
**请求参数**:无
|
||||
|
||||
**响应示例**:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"label": "东校区",
|
||||
"nodeType": "campus",
|
||||
"disabled": true,
|
||||
"children": [
|
||||
{
|
||||
"id": 101,
|
||||
"label": "东区宿舍区",
|
||||
"nodeType": "area",
|
||||
"disabled": true,
|
||||
"children": [
|
||||
{
|
||||
"id": 1001,
|
||||
"label": "1号楼",
|
||||
"nodeType": "building",
|
||||
"disabled": false
|
||||
},
|
||||
{
|
||||
"id": 1002,
|
||||
"label": "2号楼",
|
||||
"nodeType": "building",
|
||||
"disabled": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"label": "西校区",
|
||||
"nodeType": "campus",
|
||||
"disabled": true,
|
||||
"children": [
|
||||
{
|
||||
"id": 201,
|
||||
"label": "西区宿舍区",
|
||||
"nodeType": "area",
|
||||
"disabled": true,
|
||||
"children": [
|
||||
{
|
||||
"id": 2001,
|
||||
"label": "3号楼",
|
||||
"nodeType": "building",
|
||||
"disabled": false
|
||||
},
|
||||
{
|
||||
"id": 2002,
|
||||
"label": "4号楼",
|
||||
"nodeType": "building",
|
||||
"disabled": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 数据结构
|
||||
|
||||
### BuildingTreeSelectVo
|
||||
|
||||
树形结构节点对象:
|
||||
|
||||
| 字段名 | 类型 | 描述 |
|
||||
|------------|-------------------|----------------------------------------|
|
||||
| id | Long | 节点ID |
|
||||
| label | String | 节点名称 |
|
||||
| nodeType | String | 节点类型:campus(校区)、area(宿舍区)、building(宿舍楼) |
|
||||
| disabled | Boolean | 是否禁用选择 |
|
||||
| children | List<BuildingTreeSelectVo> | 子节点列表 |
|
||||
| createBy | Long | 创建者 |
|
||||
| createTime | Date | 创建时间 |
|
||||
| updateBy | Long | 更新者 |
|
||||
| updateTime | Date | 更新时间 |
|
||||
|
||||
## 使用方法
|
||||
|
||||
### 前端使用示例
|
||||
|
||||
在Vue组件中使用该接口获取树形数据:
|
||||
|
||||
```typescript
|
||||
import { getBuildingTree } from '@/api/sslxx/dormBuilding';
|
||||
import type { BuildingTreeSelectVo } from '@/api/sslxx/dormBuilding/types';
|
||||
|
||||
// 在组件的setup函数中
|
||||
const treeData = ref<BuildingTreeSelectVo[]>([]);
|
||||
|
||||
// 加载宿舍楼树形数据
|
||||
const loadBuildingTree = async () => {
|
||||
try {
|
||||
const res = await getBuildingTree();
|
||||
if (res && res.data) {
|
||||
treeData.value = res.data;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('加载宿舍楼树形数据失败:', error);
|
||||
}
|
||||
};
|
||||
|
||||
// 调用加载方法
|
||||
loadBuildingTree();
|
||||
```
|
||||
|
||||
### 使用el-tree-select组件展示
|
||||
|
||||
```html
|
||||
<el-tree-select
|
||||
v-model="selectedBuildings"
|
||||
placeholder="请选择宿舍楼"
|
||||
style="width: 100%"
|
||||
clearable
|
||||
filterable
|
||||
multiple
|
||||
collapse-tags
|
||||
collapse-tags-tooltip
|
||||
:data="treeData"
|
||||
:props="{
|
||||
children: 'children',
|
||||
label: 'label',
|
||||
disabled: 'disabled',
|
||||
value: 'id'
|
||||
}"
|
||||
check-strictly
|
||||
/>
|
||||
```
|
||||
|
||||
## 特殊说明
|
||||
|
||||
1. 接口返回的树形结构中,校区和宿舍区节点已设置 `disabled=true`,前端无需额外处理即可实现只能选择宿舍楼节点的效果
|
||||
2. 使用 `check-strictly=true` 可以确保树形选择器的选中状态不会级联影响父子节点
|
||||
3. 该接口已支持管理员分配宿舍楼管理范围的业务需求
|
||||
|
||||
## 相关API接口
|
||||
|
||||
- [宿舍管理员授权API](./宿舍管理员授权API.md)
|
||||
|
||||
## 数据库关系
|
||||
|
||||
- `xg_dorm_building` 表通过 `campus_id` 字段关联 `xg_dorm_campus` 表
|
||||
- `xg_dorm_building` 表通过 `area_id` 字段关联 `xg_dorm_area` 表
|
||||
- `xg_dorm_area` 表通过 `campus_id` 字段关联 `xg_dorm_campus` 表
|
||||
|
||||
## 最后更新时间
|
||||
|
||||
2025-07-20
|
||||
@@ -0,0 +1,112 @@
|
||||
# 宿舍管理员授权API文档
|
||||
|
||||
## 1. 接口总览
|
||||
|
||||
| 接口名称 | 请求方式 | 接口地址 | 接口描述 |
|
||||
| ------- | ------- | ------- | ------- |
|
||||
| 获取宿舍区树形结构 | GET | /ssqxx/dormArea/tree | 获取以校区为根节点、宿舍区为子节点的树形结构数据 |
|
||||
|
||||
## 2. 权限要求
|
||||
|
||||
- 查询宿舍区树形结构:`ssqxx:dormArea:query`
|
||||
|
||||
## 3. 接口详情
|
||||
|
||||
### 3.1 获取宿舍区树形结构
|
||||
|
||||
#### 接口说明
|
||||
|
||||
该接口用于获取宿舍区的树形结构数据,以校区为根节点,宿舍区为子节点。前端可以使用该接口实现树形下拉选择,实现宿舍管理员授权范围选择功能。
|
||||
|
||||
#### 请求URL
|
||||
|
||||
```
|
||||
GET /ssqxx/dormArea/tree
|
||||
```
|
||||
|
||||
#### 请求参数
|
||||
|
||||
无
|
||||
|
||||
#### 响应参数
|
||||
|
||||
| 参数名 | 类型 | 说明 |
|
||||
| ------ | ---- | ---- |
|
||||
| code | Integer | 状态码,200表示成功 |
|
||||
| msg | String | 提示信息 |
|
||||
| data | Array | 数据内容 |
|
||||
| data[i].id | Long | 节点ID |
|
||||
| data[i].label | String | 节点名称 |
|
||||
| data[i].type | String | 节点类型(campus:校区,area:宿舍区) |
|
||||
| data[i].disabled | Boolean | 是否禁用选择(校区节点为true,宿舍区节点为false) |
|
||||
| data[i].children | Array | 子节点,结构同父节点 |
|
||||
|
||||
#### 响应示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"label": "东校区",
|
||||
"type": "campus",
|
||||
"disabled": true,
|
||||
"children": [
|
||||
{
|
||||
"id": 101,
|
||||
"label": "1号宿舍区",
|
||||
"type": "area",
|
||||
"disabled": false,
|
||||
"children": []
|
||||
},
|
||||
{
|
||||
"id": 102,
|
||||
"label": "2号宿舍区",
|
||||
"type": "area",
|
||||
"disabled": false,
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"label": "西校区",
|
||||
"type": "campus",
|
||||
"disabled": true,
|
||||
"children": [
|
||||
{
|
||||
"id": 201,
|
||||
"label": "3号宿舍区",
|
||||
"type": "area",
|
||||
"disabled": false,
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 4. 使用说明
|
||||
|
||||
### 前端使用方式
|
||||
|
||||
1. 调用树形结构接口获取宿舍区树形数据
|
||||
2. 使用树形选择组件展示数据,设置不可选择校区节点(根据disabled属性)
|
||||
3. 用户只能选择宿舍区节点,不能选择校区节点
|
||||
4. 支持多选宿舍区节点
|
||||
|
||||
### 数据说明
|
||||
|
||||
- 树形结构中,校区为第一级节点,宿舍区为第二级节点
|
||||
- 校区节点的disabled属性为true,表示不可选择
|
||||
- 宿舍区节点的disabled属性为false,表示可以选择
|
||||
- 通过type字段可以区分节点类型:campus为校区,area为宿舍区
|
||||
|
||||
## 5. 实现细节
|
||||
|
||||
- 宿舍区数据存放在xg_dorm_area表中,校区数据存放在xg_dorm_campus表中
|
||||
- xg_dorm_area表中campus_id字段关联xg_dorm_campus表的id字段
|
||||
- 树形数据的构建逻辑是:先查询所有校区,再查询所有宿舍区,然后根据关联关系构建树形结构
|
||||
+97
-132
@@ -2,29 +2,30 @@
|
||||
|
||||
## 📁 文件结构概览
|
||||
|
||||
基于业务域的数据库文件拆分,将原始的 `hzdyjs_xg.sql` 按业务模块进行分类,便于管理和维护。
|
||||
基于业务域的数据库文件拆分,采用目录+文件的组织方式,将原始的 `hzdyjs_xg.sql` 按业务模块进行分类,便于管理和维护。
|
||||
|
||||
```
|
||||
docs/设计文档/database/
|
||||
├── hzdyjs_xg.sql # 完整数据库文件(保留)
|
||||
├── 01-workflow-module.sql # 工作流模块
|
||||
├── 02-code-generator-module.sql # 代码生成模块
|
||||
├── 03-logistics-module.sql # 后勤管理模块
|
||||
├── 04-job-scheduler-module.sql # 任务调度模块
|
||||
├── 05-system-management-module.sql # 系统管理模块
|
||||
├── 06-test-module.sql # 测试模块
|
||||
├── 08-student-management-actual-rollback.sql # 学工管理模块实际删除脚本
|
||||
├── README.md # 数据库设计说明
|
||||
├── mysql-database-standard.md # MySQL数据库建设规范
|
||||
├── database_msg.md # 数据库环境配置
|
||||
└── SQL文件说明.md # 本文件
|
||||
├── README.md # 数据库设计说明
|
||||
├── mysql-database-standard.md # MySQL数据库建设规范
|
||||
├── database_msg.md # 数据库环境配置
|
||||
├── SQL文件说明.md # 本文件
|
||||
├── 工作流/ # 工作流模块相关SQL
|
||||
│ └── ... (工作流相关SQL文件)
|
||||
├── 后勤管理/ # 后勤管理模块相关SQL
|
||||
│ └── ... (后勤管理相关SQL文件)
|
||||
├── 学工管理-学生信息管理/ # 学工管理-学生信息模块相关SQL
|
||||
│ └── ... (学生信息相关SQL文件)
|
||||
└── 学工管理-宿舍管理/ # 学工管理-宿舍管理模块相关SQL
|
||||
└── ... (宿舍管理相关SQL文件)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 业务域拆分详情
|
||||
|
||||
### 01. 工作流模块 (01-workflow-module.sql)
|
||||
### 工作流模块 (工作流/)
|
||||
|
||||
**业务域**: 工作流引擎相关功能
|
||||
**包含表**: 8 张表
|
||||
@@ -40,20 +41,10 @@ docs/设计文档/database/
|
||||
|
||||
**主要功能**: 支持业务流程的定义、执行、跟踪和管理
|
||||
|
||||
### 02. 代码生成模块 (02-code-generator-module.sql)
|
||||
|
||||
**业务域**: 代码生成器相关功能
|
||||
**包含表**: 2 张表
|
||||
|
||||
- `gen_table` - 代码生成业务表
|
||||
- `gen_table_column` - 代码生成业务字段表
|
||||
|
||||
**主要功能**: 支持基于数据库表结构自动生成代码
|
||||
|
||||
### 03. 后勤管理模块 (03-logistics-module.sql)
|
||||
### 后勤管理模块 (后勤管理/)
|
||||
|
||||
**业务域**: 后勤服务管理相关功能
|
||||
**包含表**: 10 张表
|
||||
**包含表**: 10+ 张表
|
||||
|
||||
#### 报告厅预约管理子模块
|
||||
|
||||
@@ -73,93 +64,53 @@ docs/设计文档/database/
|
||||
|
||||
**主要功能**: 校园后勤服务管理,包括场地预约和满意度调查
|
||||
|
||||
### 04. 任务调度模块 (04-job-scheduler-module.sql)
|
||||
### 学工管理-学生信息管理模块 (学工管理-学生信息管理/)
|
||||
|
||||
**业务域**: 学工管理-学生信息管理相关功能
|
||||
**包含表**: 相关学生信息表
|
||||
|
||||
**主要功能**: 学生信息管理,包括学生基本信息、班级信息等
|
||||
|
||||
### 学工管理-宿舍管理模块 (学工管理-宿舍管理/)
|
||||
|
||||
**业务域**: 学工管理-宿舍管理相关功能
|
||||
**包含表**: 宿舍相关表
|
||||
|
||||
**主要功能**: 宿舍管理,包括宿舍分配、宿舍管理等功能
|
||||
|
||||
### 其他模块 (仍保留在根目录)
|
||||
|
||||
#### 代码生成模块 (02-code-generator-module.sql)
|
||||
|
||||
**业务域**: 代码生成器相关功能
|
||||
**包含表**: 2 张表
|
||||
|
||||
- `gen_table` - 代码生成业务表
|
||||
- `gen_table_column` - 代码生成业务字段表
|
||||
|
||||
**主要功能**: 支持基于数据库表结构自动生成代码
|
||||
|
||||
#### 任务调度模块 (04-job-scheduler-module.sql)
|
||||
|
||||
**业务域**: SnailJob 任务调度相关功能
|
||||
**包含表**: 12 张表
|
||||
|
||||
- `sj_distributed_lock` - 分布式锁表
|
||||
- `sj_group_config` - 组配置表
|
||||
- `sj_namespace_config` - 命名空间配置表
|
||||
- `sj_notify_config` - 通知配置表
|
||||
- `sj_retry_dead_letter` - 死信队列表
|
||||
- `sj_retry_summary` - 任务重试汇总统计表
|
||||
- `sj_retry_task` - 任务信息表
|
||||
- `sj_retry_task_log` - 重试日志表
|
||||
- `sj_server_node` - 服务器节点表
|
||||
- `sj_system_user_permission` - 系统用户权限表
|
||||
- `sj_workflow_node` - 工作流节点表
|
||||
- `sj_workflow_task_batch` - 工作流任务批次表
|
||||
|
||||
**主要功能**: 分布式任务调度、重试机制、工作流编排
|
||||
|
||||
### 05. 系统管理模块 (05-system-management-module.sql)
|
||||
#### 系统管理模块 (05-system-management-module.sql)
|
||||
|
||||
**业务域**: 系统核心管理功能
|
||||
**包含表**: 21 张表
|
||||
|
||||
#### 用户与权限管理
|
||||
|
||||
- `sys_user` - 用户信息表
|
||||
- `sys_role` - 角色信息表
|
||||
- `sys_menu` - 菜单权限表
|
||||
- `sys_dept` - 部门表
|
||||
- `sys_post` - 岗位信息表
|
||||
- `sys_user_role` - 用户角色关联表
|
||||
- `sys_user_post` - 用户岗位关联表
|
||||
- `sys_role_menu` - 角色菜单关联表
|
||||
- `sys_role_dept` - 角色部门关联表
|
||||
|
||||
#### 系统配置与日志
|
||||
|
||||
- `sys_config` - 参数配置表
|
||||
- `sys_dict_type` - 字典类型表
|
||||
- `sys_dict_data` - 字典数据表
|
||||
- `sys_notice` - 通知公告表
|
||||
- `sys_oper_log` - 操作日志表
|
||||
- `sys_logininfor` - 系统访问记录表
|
||||
|
||||
#### 文件与租户管理
|
||||
|
||||
- `sys_oss` - OSS 对象存储表
|
||||
- `sys_oss_config` - 对象存储配置表
|
||||
- `sys_client` - 系统授权表
|
||||
- `sys_tenant` - 租户表
|
||||
- `sys_tenant_package` - 租户套餐表
|
||||
- `sys_social` - 社会化关系表
|
||||
|
||||
**主要功能**: 系统用户管理、权限控制、配置管理、日志记录等核心功能
|
||||
|
||||
### 06. 测试模块 (06-test-module.sql)
|
||||
#### 测试模块 (06-test-module.sql)
|
||||
|
||||
**业务域**: 测试和演示相关功能
|
||||
**包含表**: 1 张表
|
||||
|
||||
- `test_tree` - 测试树表
|
||||
|
||||
**主要功能**: 系统功能测试和演示,包含树形结构数据
|
||||
|
||||
### 08. 学生信息管理模块 (已删除)
|
||||
|
||||
**业务域**: 学工管理-学生信息管理相关功能
|
||||
**状态**: 已于2025-01-09完全删除
|
||||
|
||||
#### 删除脚本
|
||||
|
||||
- `08-student-management-actual-rollback.sql` - 学工管理模块实际删除脚本(已执行)
|
||||
|
||||
**删除内容**:
|
||||
- 6张数据库表(学生信息、银行卡、班级信息、审核记录等)
|
||||
- 16个菜单权限项
|
||||
- 7个字典类型
|
||||
- 27个字典数据项
|
||||
|
||||
**删除状态**: ✅ 已完成并验证通过
|
||||
|
||||
**删除原因**: 用户要求删除已创建的学工学生信息相关功能
|
||||
|
||||
**恢复说明**: 相关文档和脚本已在git历史记录中保存,如需恢复可从历史记录中获取
|
||||
|
||||
---
|
||||
|
||||
## 🔧 使用指南
|
||||
@@ -173,51 +124,48 @@ SOURCE docs/设计文档/database/hzdyjs_xg.sql;
|
||||
|
||||
### 按模块部署
|
||||
|
||||
现在可以按照目录组织更灵活地部署数据库:
|
||||
|
||||
```sql
|
||||
-- 按需执行指定模块
|
||||
SOURCE docs/设计文档/database/01-workflow-module.sql;
|
||||
SOURCE docs/设计文档/database/02-code-generator-module.sql;
|
||||
SOURCE docs/设计文档/database/03-logistics-module.sql;
|
||||
SOURCE docs/设计文档/database/04-job-scheduler-module.sql;
|
||||
-- 核心系统模块
|
||||
SOURCE docs/设计文档/database/05-system-management-module.sql;
|
||||
SOURCE docs/设计文档/database/06-test-module.sql;
|
||||
-- 学工管理模块已删除
|
||||
-- 删除脚本已执行完成:
|
||||
-- SOURCE docs/设计文档/database/08-student-management-actual-rollback.sql;
|
||||
|
||||
-- 按业务目录部署
|
||||
-- 工作流模块
|
||||
SOURCE docs/设计文档/database/工作流/01-workflow-module.sql;
|
||||
|
||||
-- 后勤管理模块
|
||||
SOURCE docs/设计文档/database/后勤管理/03-logistics-module.sql;
|
||||
SOURCE docs/设计文档/database/后勤管理/hq_hall_info.sql;
|
||||
SOURCE docs/设计文档/database/后勤管理/hq_satisfaction_survey.sql;
|
||||
-- 更多后勤管理相关表...
|
||||
|
||||
-- 学工管理-学生信息模块
|
||||
SOURCE docs/设计文档/database/学工管理-学生信息管理/xg_student_info.sql;
|
||||
SOURCE docs/设计文档/database/学工管理-学生信息管理/xg_class_info.sql;
|
||||
-- 更多学生信息相关表...
|
||||
|
||||
-- 学工管理-宿舍管理模块
|
||||
SOURCE docs/设计文档/database/学工管理-宿舍管理/xg_dormitory_info.sql;
|
||||
-- 更多宿舍管理相关表...
|
||||
```
|
||||
|
||||
### 开发环境部署建议
|
||||
|
||||
1. **必须模块**: 01-工作流模块, 05-系统管理模块
|
||||
2. **核心业务模块**: 03-后勤管理模块
|
||||
3. **按需模块**: 其他模块根据具体业务需求选择性部署
|
||||
1. **必须模块**: 系统管理模块, 工作流模块
|
||||
2. **核心业务模块**: 后勤管理模块
|
||||
3. **按需模块**: 学工管理相关模块和其他模块根据具体业务需求选择性部署
|
||||
4. **测试模块**: 仅在开发和测试环境中部署
|
||||
|
||||
---
|
||||
|
||||
## 📈 统计信息
|
||||
|
||||
| 模块 | 表数量 | 主要功能 | 依赖关系 |
|
||||
| ------------ | ------ | ------------ | ---------------- |
|
||||
| 工作流模块 | 8 | 流程管理 | 依赖系统管理模块 |
|
||||
| 代码生成模块 | 2 | 代码生成 | 无特殊依赖 |
|
||||
| 后勤管理模块 | 10 | 后勤服务 | 依赖系统管理模块 |
|
||||
| 任务调度模块 | 12 | 任务调度 | 独立模块 |
|
||||
| 系统管理模块 | 21 | 核心系统 | 核心基础模块 |
|
||||
| 测试模块 | 1 | 测试演示 | 依赖系统管理模块 |
|
||||
| ~~学工管理模块~~ | ~~6~~ | ~~学工管理~~ | ~~已删除~~ |
|
||||
| **总计** | **54** | **完整系统** | **完整依赖链** |
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
### 1. 模块依赖关系
|
||||
### 1. 目录组织原则
|
||||
|
||||
- **系统管理模块**是其他模块的基础依赖,必须优先部署
|
||||
- **工作流模块**和**后勤管理模块**依赖系统管理模块的用户和部门数据
|
||||
- **任务调度模块**相对独立,可单独部署
|
||||
- **学工管理模块**已删除,不再部署
|
||||
- **按业务域组织**: 文件按业务功能模块存放到对应目录
|
||||
- **一表一文件**: 每个表结构单独存放为独立SQL文件,便于维护
|
||||
- **统一命名**: 文件名应与表名保持一致,便于快速定位
|
||||
|
||||
### 2. 数据一致性
|
||||
|
||||
@@ -244,20 +192,21 @@ SOURCE docs/设计文档/database/06-test-module.sql;
|
||||
|
||||
### 更新流程
|
||||
|
||||
1. 修改 `hzdyjs_xg.sql` 主文件
|
||||
2. 同步更新对应的模块 SQL 文件
|
||||
1. 修改对应业务目录下的SQL文件
|
||||
2. 如有必要,同步更新 `hzdyjs_xg.sql` 主文件
|
||||
3. 更新本说明文档的变更记录
|
||||
4. 在 `docs/变更管理/code-adjust-record.md` 中记录变更
|
||||
4. 在 `docs/变更管理/code-adjust-record-YYYY-MM-DD-{username}.md` 中记录变更
|
||||
|
||||
### 文件命名规则
|
||||
|
||||
- 使用两位数字前缀进行排序
|
||||
- 使用表名作为文件名,如 `xg_student_info.sql`
|
||||
- 可选使用两位数字前缀进行排序
|
||||
- 使用英文短横线分隔词语
|
||||
- 以 `-module.sql` 结尾表示模块文件
|
||||
- 以 `.sql` 结尾
|
||||
|
||||
### 拆分原则
|
||||
|
||||
- 按业务域进行逻辑分组
|
||||
- 按业务域进行目录分组
|
||||
- 保持模块的相对独立性
|
||||
- 考虑实际部署和维护需求
|
||||
- 遵循数据库设计规范
|
||||
@@ -266,6 +215,22 @@ SOURCE docs/设计文档/database/06-test-module.sql;
|
||||
|
||||
## 📋 更新记录
|
||||
|
||||
### 2025-07-15 - 目录结构调整
|
||||
|
||||
**变更内容**:
|
||||
- 将SQL文件按业务域进行目录拆分
|
||||
- 新增学工管理-学生信息管理目录
|
||||
- 新增工作流目录
|
||||
- 新增后勤管理目录
|
||||
- 新增学工管理-宿舍管理目录
|
||||
- 更新SQL文件说明文档,反映新的目录结构
|
||||
|
||||
**变更原因**: 优化数据库文件管理,按业务模块分类存储,提高可维护性
|
||||
|
||||
**影响范围**: 仅影响文件组织方式,不影响SQL内容和功能
|
||||
|
||||
**执行状态**: ✅ 已完成并验证通过
|
||||
|
||||
### 2025-01-09 - 学工管理模块完全删除
|
||||
|
||||
**变更内容**:
|
||||
|
||||
@@ -0,0 +1,271 @@
|
||||
-- 宿舍管理数据库建表脚本
|
||||
-- 来源:docs/业务模块/学工管理-宿舍管理/数据库设计/宿舍管理数据库设计.md
|
||||
-- 用途:统一存储宿舍管理模块所有相关表的建表SQL,便于维护和执行
|
||||
-- 维护人:数据库设计团队
|
||||
-- 日期:2025-01-14
|
||||
|
||||
-- 1. 校区信息表
|
||||
drop table if exists `xg_dorm_campus`;
|
||||
create table `xg_dorm_campus` (
|
||||
`id` bigint(20) not null comment '主键ID',
|
||||
`campus_code` varchar(50) not null comment '校区编码',
|
||||
`campus_name` varchar(100) not null comment '校区名称',
|
||||
`campus_description` varchar(500) default null comment '校区描述',
|
||||
`sort_order` int(11) default '0' comment '排序号',
|
||||
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) default '0' comment '租户编号',
|
||||
`create_by` bigint(20) default null comment '创建者',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_time` datetime default null comment '创建时间',
|
||||
`update_by` bigint(20) default null comment '更新者',
|
||||
`update_time` datetime default null comment '更新时间',
|
||||
`remark` varchar(500) default null comment '备注',
|
||||
primary key (`id`),
|
||||
unique key `uk_campus_code` (`campus_code`)
|
||||
) engine=innodb default charset=utf8mb4 comment='校区信息表';
|
||||
|
||||
-- 2. 宿舍区信息表
|
||||
drop table if exists `xg_dorm_area`;
|
||||
create table `xg_dorm_area` (
|
||||
`id` bigint(20) not null comment '主键ID',
|
||||
`area_code` varchar(50) not null comment '宿舍区编码',
|
||||
`area_name` varchar(100) not null comment '宿舍区名称',
|
||||
`campus_id` bigint(20) not null comment '所属校区ID',
|
||||
`area_description` varchar(500) default null comment '宿舍区描述',
|
||||
`sort_order` int(11) default '0' comment '排序号',
|
||||
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) default '0' comment '租户编号',
|
||||
`create_by` bigint(20) default null comment '创建者',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_time` datetime default null comment '创建时间',
|
||||
`update_by` bigint(20) default null comment '更新者',
|
||||
`update_time` datetime default null comment '更新时间',
|
||||
`remark` varchar(500) default null comment '备注',
|
||||
primary key (`id`),
|
||||
unique key `uk_area_code` (`area_code`),
|
||||
key `idx_campus_id` (`campus_id`)
|
||||
) engine=innodb default charset=utf8mb4 comment='宿舍区信息表';
|
||||
|
||||
-- 3. 宿舍楼信息表
|
||||
drop table if exists `xg_dorm_building`;
|
||||
create table `xg_dorm_building` (
|
||||
`id` bigint(20) not null comment '主键ID',
|
||||
`building_code` varchar(50) not null comment '宿舍楼编码',
|
||||
`building_name` varchar(100) not null comment '宿舍楼名称',
|
||||
`area_id` bigint(20) not null comment '所属宿舍区ID',
|
||||
`campus_id` bigint(20) not null comment '所属校区ID',
|
||||
`floors` int(11) not null default '6' comment '总楼层数',
|
||||
`building_type` char(1) default '1' comment '宿舍楼类型(1男生楼 2女生楼 3混合楼)',
|
||||
`building_description` varchar(500) default null comment '宿舍楼描述',
|
||||
`sort_order` int(11) default '0' comment '排序号',
|
||||
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) default '0' comment '租户编号',
|
||||
`create_by` bigint(20) default null comment '创建者',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_time` datetime default null comment '创建时间',
|
||||
`update_by` bigint(20) default null comment '更新者',
|
||||
`update_time` datetime default null comment '更新时间',
|
||||
`remark` varchar(500) default null comment '备注',
|
||||
primary key (`id`),
|
||||
unique key `uk_building_code` (`building_code`),
|
||||
key `idx_area_id` (`area_id`),
|
||||
key `idx_campus_id` (`campus_id`)
|
||||
) engine=innodb default charset=utf8mb4 comment='宿舍楼信息表';
|
||||
|
||||
-- 4. 宿舍房间信息表
|
||||
drop table if exists `xg_dorm_room`;
|
||||
create table `xg_dorm_room` (
|
||||
`id` bigint(20) not null comment '主键ID',
|
||||
`room_code` varchar(50) not null comment '房间编号',
|
||||
`room_name` varchar(100) not null comment '房间名称',
|
||||
`building_id` bigint(20) not null comment '所属宿舍楼ID',
|
||||
`floor_num` int(11) not null comment '楼层',
|
||||
`room_type` char(1) default '1' comment '房间类型(1标准间 2 单人间 3 套间)',
|
||||
`actual_beds` int(11) default 4 comment '实际床位数',
|
||||
`room_area` decimal(10,2) default null comment '房间面积(平方米)',
|
||||
`room_status` char(1) default '0' comment '房间状态(0可用 1维修中 2停用)',
|
||||
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) default '0' comment '租户编号',
|
||||
`create_by` bigint(20) default null comment '创建者',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_time` datetime default null comment '创建时间',
|
||||
`update_by` bigint(20) default null comment '更新者',
|
||||
`update_time` datetime default null comment '更新时间',
|
||||
`remark` varchar(500) default null comment '备注',
|
||||
primary key (`id`),
|
||||
unique key `uk_room_code` (`room_code`),
|
||||
key `idx_building_id` (`building_id`),
|
||||
key `idx_floor_num` (`floor_num`)
|
||||
) engine=innodb default charset=utf8mb4 comment='宿舍房间信息表';
|
||||
|
||||
-- 5. 宿舍床位信息表
|
||||
drop table if exists `xg_dorm_bed`;
|
||||
create table `xg_dorm_bed` (
|
||||
`id` bigint(20) not null comment '主键ID',
|
||||
`bed_code` varchar(50) not null comment '床位编号',
|
||||
`bed_name` varchar(100) not null comment '床位名称',
|
||||
`room_id` bigint(20) not null comment '所属房间ID',
|
||||
`bed_type` char(1) default '1' comment '床位类型(1下铺 2上铺 3中铺 4独立床)',
|
||||
`bed_status` char(1) default '0' comment '床位状态(0空闲 1已分配 2维修中)',
|
||||
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) default '0' comment '租户编号',
|
||||
`create_by` bigint(20) default null comment '创建者',
|
||||
`create_time` datetime default null comment '创建时间',
|
||||
`update_by` bigint(20) default null comment '更新者',
|
||||
`update_time` datetime default null comment '更新时间',
|
||||
`remark` varchar(500) default null comment '备注',
|
||||
primary key (`id`),
|
||||
unique key `uk_bed_code` (`bed_code`),
|
||||
key `idx_room_id` (`room_id`)
|
||||
) engine=innodb default charset=utf8mb4 comment='宿舍床位信息表';
|
||||
|
||||
-- 6. 床位学生分配关系表
|
||||
drop table if exists `xg_dorm_bed_student`;
|
||||
create table `xg_dorm_bed_student` (
|
||||
`id` bigint(20) not null comment '主键ID',
|
||||
`college_id` bigint(20) not null comment '分配学院ID',
|
||||
`student_id` bigint(20) not null comment '分配学生ID',
|
||||
`bed_id` bigint(20) not null comment '床位ID',
|
||||
`room_id` bigint(20) not null comment '房间ID',
|
||||
`building_id` bigint(20) not null comment '宿舍楼ID',
|
||||
`area_id` bigint(20) not null comment '宿舍区ID',
|
||||
`campus_id` bigint(20) not null comment '校区ID',
|
||||
`status` char(1) default '0' comment '状态(0正常 1已退宿)',
|
||||
`assign_time` datetime not null comment '分配时间',
|
||||
`checkout_time` datetime default null comment '退宿时间',
|
||||
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) default '0' comment '租户编号',
|
||||
`create_by` bigint(20) default null comment '创建者',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_time` datetime default null comment '创建时间',
|
||||
`update_by` bigint(20) default null comment '更新者',
|
||||
`update_time` datetime default null comment '更新时间',
|
||||
`remark` varchar(500) default null comment '备注',
|
||||
primary key (`id`),
|
||||
unique key `uk_student_bed` (`student_id`, `bed_id`),
|
||||
key `idx_college_id` (`college_id`),
|
||||
key `idx_student_id` (`student_id`),
|
||||
key `idx_bed_id` (`bed_id`),
|
||||
key `idx_room_id` (`room_id`),
|
||||
key `idx_building_id` (`building_id`),
|
||||
key `idx_area_id` (`area_id`),
|
||||
key `idx_campus_id` (`campus_id`),
|
||||
key `idx_assign_time` (`assign_time`)
|
||||
) engine=innodb default charset=utf8mb4 comment='床位学生分配关系表';
|
||||
|
||||
-- 7. 宿舍管理员信息表
|
||||
drop table if exists `xg_dorm_manager`;
|
||||
create table `xg_dorm_manager` (
|
||||
`id` bigint(20) not null comment '主键ID',
|
||||
`manager_name` varchar(100) not null comment '管理员姓名',
|
||||
`manager_type` char(1) not null comment '管理员类型(1全校管理员 2校区管理员 3宿舍区管理员 4宿舍楼管理员)',
|
||||
`manager_level` int(11) default 1 comment '管理级别(1-5,1为最高)',
|
||||
`user_id` bigint(20) default null comment '关联用户ID',
|
||||
`phone` varchar(20) default null comment '联系电话',
|
||||
`gender` char(1) default '0' comment '性别(0男 1女 2未知)',
|
||||
`status` char(1) default '0' comment '状态(0正常 1停用)',
|
||||
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) default '0' comment '租户编号',
|
||||
`create_by` bigint(20) default null comment '创建者',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_time` datetime default null comment '创建时间',
|
||||
`update_by` bigint(20) default null comment '更新者',
|
||||
`update_time` datetime default null comment '更新时间',
|
||||
`remark` varchar(500) default null comment '备注',
|
||||
primary key (`id`),
|
||||
key `idx_user_id` (`user_id`),
|
||||
key `idx_manager_type` (`manager_type`)
|
||||
) engine=innodb default charset=utf8mb4 comment='宿舍管理员信息表';
|
||||
|
||||
-- 8. 管理员授权关系表
|
||||
drop table if exists `xg_dorm_manager_source`;
|
||||
create table `xg_dorm_manager_source` (
|
||||
`id` bigint(20) not null comment '主键ID',
|
||||
`manager_id` bigint(20) not null comment '管理员ID',
|
||||
`permission_type` char(1) default '1' comment '权限类型(1查看 2编辑 3完全管理)',
|
||||
`auth_type` char(1) not null comment '授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)',
|
||||
`auth_source` bigint(20) default null comment '授权来源ID(对应校区ID或宿舍区ID或楼栋ID)',
|
||||
`status` char(1) default '0' comment '状态(0有效 1已撤销)',
|
||||
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) default '0' comment '租户编号',
|
||||
`create_by` bigint(20) default null comment '创建者',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_time` datetime default null comment '创建时间',
|
||||
`update_by` bigint(20) default null comment '更新者',
|
||||
`update_time` datetime default null comment '更新时间',
|
||||
`remark` varchar(500) default null comment '备注',
|
||||
primary key (`id`),
|
||||
key `idx_manager_id` (`manager_id`),
|
||||
key `idx_auth_source` (`auth_source`)
|
||||
) engine=innodb default charset=utf8mb4 comment='管理员授权关系表';
|
||||
|
||||
-- 9. 管理员宿舍楼权限关系表
|
||||
drop table if exists `xg_dorm_manager_building`;
|
||||
create table `xg_dorm_manager_building` (
|
||||
`id` bigint(20) not null comment '主键ID',
|
||||
`manager_id` bigint(20) not null comment '管理员ID',
|
||||
`building_id` bigint(20) not null comment '宿舍楼ID',
|
||||
`status` char(1) default '0' comment '状态(0有效 1已撤销)',
|
||||
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) default '0' comment '租户编号',
|
||||
`create_by` bigint(20) default null comment '创建者',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_time` datetime default null comment '创建时间',
|
||||
`update_by` bigint(20) default null comment '更新者',
|
||||
`update_time` datetime default null comment '更新时间',
|
||||
`remark` varchar(500) default null comment '备注',
|
||||
primary key (`id`),
|
||||
unique key `uk_manager_building` (`manager_id`, `building_id`),
|
||||
key `idx_manager_id` (`manager_id`),
|
||||
key `idx_building_id` (`building_id`)
|
||||
) engine=innodb default charset=utf8mb4 comment='管理员宿舍楼权限关系表';
|
||||
|
||||
-- 10. 二级学院宿舍管理员信息表
|
||||
drop table if exists `xg_dorm_college_manager`;
|
||||
create table `xg_dorm_college_manager` (
|
||||
`id` bigint(20) not null comment '主键ID',
|
||||
`manager_name` varchar(100) not null comment '管理员姓名',
|
||||
`college_id` bigint(20) not null comment '所属学院ID',
|
||||
`user_id` bigint(20) default null comment '关联用户ID',
|
||||
`phone` varchar(20) default null comment '联系电话',
|
||||
`gender` char(1) default '0' comment '性别(0男 1女 2未知)',
|
||||
`status` char(1) default '0' comment '状态(0正常 1停用)',
|
||||
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) default '0' comment '租户编号',
|
||||
`create_by` bigint(20) default null comment '创建者',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_time` datetime default null comment '创建时间',
|
||||
`update_by` bigint(20) default null comment '更新者',
|
||||
`update_time` datetime default null comment '更新时间',
|
||||
`remark` varchar(500) default null comment '备注',
|
||||
primary key (`id`),
|
||||
key `idx_college_id` (`college_id`),
|
||||
key `idx_user_id` (`user_id`)
|
||||
) engine=innodb default charset=utf8mb4 comment='二级学院宿舍管理员信息表';
|
||||
|
||||
-- 11. 二级学院床位绑定关系表
|
||||
drop table if exists `xg_dorm_college_bed`;
|
||||
create table `xg_dorm_college_bed` (
|
||||
`id` bigint(20) not null comment '主键ID',
|
||||
`college_id` bigint(20) not null comment '学院ID',
|
||||
`bed_id` bigint(20) not null comment '床位ID',
|
||||
`building_id` bigint(20) not null comment '宿舍楼ID',
|
||||
`room_id` bigint(20) not null comment '房间ID',
|
||||
`status` char(1) default '0' comment '状态(0正常 1已解除)',
|
||||
`assign_time` datetime default null comment '分配时间',
|
||||
`release_time` datetime default null comment '到期解除时间',
|
||||
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) default '0' comment '租户编号',
|
||||
`create_by` bigint(20) default null comment '创建者',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_time` datetime default null comment '创建时间',
|
||||
`update_by` bigint(20) default null comment '更新者',
|
||||
`update_time` datetime default null comment '更新时间',
|
||||
`remark` varchar(500) default null comment '备注',
|
||||
primary key (`id`),
|
||||
unique key `uk_college_bed` (`college_id`, `bed_id`),
|
||||
key `idx_college_id` (`college_id`),
|
||||
key `idx_bed_id` (`bed_id`),
|
||||
key `idx_building_id` (`building_id`),
|
||||
key `idx_room_id` (`room_id`)
|
||||
) engine=innodb default charset=utf8mb4 comment='二级学院床位绑定关系表';
|
||||
@@ -0,0 +1,60 @@
|
||||
-- 菜单 SQL
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809733426065409, '宿舍区信息', '1946805729728077826', '1', 'dormArea', 'ssqxx/dormArea/index', 1, 0, 'C', '0', '0', 'ssqxx:dormArea:list', '#', 103, 1, sysdate(), null, null, '宿舍区信息菜单');
|
||||
|
||||
-- 按钮 SQL
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809733426065410, '宿舍区信息查询', 1946809733426065409, '1', '#', '', 1, 0, 'F', '0', '0', 'ssqxx:dormArea:query', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809733426065411, '宿舍区信息新增', 1946809733426065409, '2', '#', '', 1, 0, 'F', '0', '0', 'ssqxx:dormArea:add', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809733426065412, '宿舍区信息修改', 1946809733426065409, '3', '#', '', 1, 0, 'F', '0', '0', 'ssqxx:dormArea:edit', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809733426065413, '宿舍区信息删除', 1946809733426065409, '4', '#', '', 1, 0, 'F', '0', '0', 'ssqxx:dormArea:remove', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809733426065414, '宿舍区信息导出', 1946809733426065409, '5', '#', '', 1, 0, 'F', '0', '0', 'ssqxx:dormArea:export', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
-- 菜单 SQL
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809734004879362, '宿舍楼信息', '1946805729728077826', '1', 'dormBuilding', 'sslxx/dormBuilding/index', 1, 0, 'C', '0', '0', 'sslxx:dormBuilding:list', '#', 103, 1, sysdate(), null, null, '宿舍楼信息菜单');
|
||||
|
||||
-- 按钮 SQL
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809734004879363, '宿舍楼信息查询', 1946809734004879362, '1', '#', '', 1, 0, 'F', '0', '0', 'sslxx:dormBuilding:query', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809734004879364, '宿舍楼信息新增', 1946809734004879362, '2', '#', '', 1, 0, 'F', '0', '0', 'sslxx:dormBuilding:add', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809734004879365, '宿舍楼信息修改', 1946809734004879362, '3', '#', '', 1, 0, 'F', '0', '0', 'sslxx:dormBuilding:edit', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809734004879366, '宿舍楼信息删除', 1946809734004879362, '4', '#', '', 1, 0, 'F', '0', '0', 'sslxx:dormBuilding:remove', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809734004879367, '宿舍楼信息导出', 1946809734004879362, '5', '#', '', 1, 0, 'F', '0', '0', 'sslxx:dormBuilding:export', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
-- 菜单 SQL
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809733761609729, '校区信息', '1946805729728077826', '1', 'dormCampus', 'xqxx/dormCampus/index', 1, 0, 'C', '0', '0', 'xqxx:dormCampus:list', '#', 103, 1, sysdate(), null, null, '校区信息菜单');
|
||||
|
||||
-- 按钮 SQL
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809733761609730, '校区信息查询', 1946809733761609729, '1', '#', '', 1, 0, 'F', '0', '0', 'xqxx:dormCampus:query', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809733761609731, '校区信息新增', 1946809733761609729, '2', '#', '', 1, 0, 'F', '0', '0', 'xqxx:dormCampus:add', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809733761609732, '校区信息修改', 1946809733761609729, '3', '#', '', 1, 0, 'F', '0', '0', 'xqxx:dormCampus:edit', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809733761609733, '校区信息删除', 1946809733761609729, '4', '#', '', 1, 0, 'F', '0', '0', 'xqxx:dormCampus:remove', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values(1946809733761609734, '校区信息导出', 1946809733761609729, '5', '#', '', 1, 0, 'F', '0', '0', 'xqxx:dormCampus:export', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { DormManagerSourceVO, DormManagerSourceForm, DormManagerSourceQuery } from '@/api/glysqgx/dormManagerSource/types';
|
||||
|
||||
/**
|
||||
* 查询管理员授权关系列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listDormManagerSource = (query?: DormManagerSourceQuery): AxiosPromise<DormManagerSourceVO[]> => {
|
||||
return request({
|
||||
url: '/glysqgx/dormManagerSource/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询管理员授权关系详细
|
||||
* @param id
|
||||
*/
|
||||
export const getDormManagerSource = (id: string | number): AxiosPromise<DormManagerSourceVO> => {
|
||||
return request({
|
||||
url: '/glysqgx/dormManagerSource/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增管理员授权关系
|
||||
* @param data
|
||||
*/
|
||||
export const addDormManagerSource = (data: DormManagerSourceForm) => {
|
||||
return request({
|
||||
url: '/glysqgx/dormManagerSource',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改管理员授权关系
|
||||
* @param data
|
||||
*/
|
||||
export const updateDormManagerSource = (data: DormManagerSourceForm) => {
|
||||
return request({
|
||||
url: '/glysqgx/dormManagerSource',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除管理员授权关系
|
||||
* @param id
|
||||
*/
|
||||
export const delDormManagerSource = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/glysqgx/dormManagerSource/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
@@ -0,0 +1,126 @@
|
||||
export interface DormManagerSourceVO {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 管理员ID
|
||||
*/
|
||||
managerId: string | number;
|
||||
|
||||
/**
|
||||
* 权限类型(1查看 2编辑 3完全管理)
|
||||
*/
|
||||
permissionType: string;
|
||||
|
||||
/**
|
||||
* 授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)
|
||||
*/
|
||||
authType: string;
|
||||
|
||||
/**
|
||||
* 授权来源ID(对应校区ID或宿舍区ID或楼栋ID)
|
||||
*/
|
||||
authSource: number;
|
||||
|
||||
/**
|
||||
* 状态(0有效 1已撤销)
|
||||
*/
|
||||
status: string;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
deleted: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark: string;
|
||||
|
||||
}
|
||||
|
||||
export interface DormManagerSourceForm extends BaseEntity {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 管理员ID
|
||||
*/
|
||||
managerId?: string | number;
|
||||
|
||||
/**
|
||||
* 权限类型(1查看 2编辑 3完全管理)
|
||||
*/
|
||||
permissionType?: string;
|
||||
|
||||
/**
|
||||
* 授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)
|
||||
*/
|
||||
authType?: string;
|
||||
|
||||
/**
|
||||
* 授权来源ID(对应校区ID或宿舍区ID或楼栋ID)
|
||||
*/
|
||||
authSource?: number;
|
||||
|
||||
/**
|
||||
* 状态(0有效 1已撤销)
|
||||
*/
|
||||
status?: string;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
deleted?: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
|
||||
}
|
||||
|
||||
export interface DormManagerSourceQuery extends PageQuery {
|
||||
|
||||
/**
|
||||
* 管理员ID
|
||||
*/
|
||||
managerId?: string | number;
|
||||
|
||||
/**
|
||||
* 权限类型(1查看 2编辑 3完全管理)
|
||||
*/
|
||||
permissionType?: string;
|
||||
|
||||
/**
|
||||
* 授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)
|
||||
*/
|
||||
authType?: string;
|
||||
|
||||
/**
|
||||
* 授权来源ID(对应校区ID或宿舍区ID或楼栋ID)
|
||||
*/
|
||||
authSource?: number;
|
||||
|
||||
/**
|
||||
* 状态(0有效 1已撤销)
|
||||
*/
|
||||
status?: string;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
deleted?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { DormManagerBuildingVO, DormManagerBuildingForm, DormManagerBuildingQuery } from '@/api/glysslqxgx/dormManagerBuilding/types';
|
||||
|
||||
/**
|
||||
* 查询管理员宿舍楼权限关系列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listDormManagerBuilding = (query?: DormManagerBuildingQuery): AxiosPromise<DormManagerBuildingVO[]> => {
|
||||
return request({
|
||||
url: '/glysslqxgx/dormManagerBuilding/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询管理员宿舍楼权限关系详细
|
||||
* @param id
|
||||
*/
|
||||
export const getDormManagerBuilding = (id: string | number): AxiosPromise<DormManagerBuildingVO> => {
|
||||
return request({
|
||||
url: '/glysslqxgx/dormManagerBuilding/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增管理员宿舍楼权限关系
|
||||
* @param data
|
||||
*/
|
||||
export const addDormManagerBuilding = (data: DormManagerBuildingForm) => {
|
||||
return request({
|
||||
url: '/glysslqxgx/dormManagerBuilding',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改管理员宿舍楼权限关系
|
||||
* @param data
|
||||
*/
|
||||
export const updateDormManagerBuilding = (data: DormManagerBuildingForm) => {
|
||||
return request({
|
||||
url: '/glysslqxgx/dormManagerBuilding',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除管理员宿舍楼权限关系
|
||||
* @param id
|
||||
*/
|
||||
export const delDormManagerBuilding = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/glysslqxgx/dormManagerBuilding/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
@@ -0,0 +1,96 @@
|
||||
export interface DormManagerBuildingVO {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 管理员ID
|
||||
*/
|
||||
managerId: string | number;
|
||||
|
||||
/**
|
||||
* 宿舍楼ID
|
||||
*/
|
||||
buildingId: string | number;
|
||||
|
||||
/**
|
||||
* 状态(0有效 1已撤销)
|
||||
*/
|
||||
status: string;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
deleted: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark: string;
|
||||
|
||||
}
|
||||
|
||||
export interface DormManagerBuildingForm extends BaseEntity {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 管理员ID
|
||||
*/
|
||||
managerId?: string | number;
|
||||
|
||||
/**
|
||||
* 宿舍楼ID
|
||||
*/
|
||||
buildingId?: string | number;
|
||||
|
||||
/**
|
||||
* 状态(0有效 1已撤销)
|
||||
*/
|
||||
status?: string;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
deleted?: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
|
||||
}
|
||||
|
||||
export interface DormManagerBuildingQuery extends PageQuery {
|
||||
|
||||
/**
|
||||
* 管理员ID
|
||||
*/
|
||||
managerId?: string | number;
|
||||
|
||||
/**
|
||||
* 宿舍楼ID
|
||||
*/
|
||||
buildingId?: string | number;
|
||||
|
||||
/**
|
||||
* 状态(0有效 1已撤销)
|
||||
*/
|
||||
status?: string;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
deleted?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { DormManagerVO, DormManagerForm, DormManagerQuery } from '@/api/ssglyxx/dormManager/types';
|
||||
|
||||
/**
|
||||
* 查询宿舍管理员信息列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listDormManager = (query?: DormManagerQuery): AxiosPromise<DormManagerVO[]> => {
|
||||
return request({
|
||||
url: '/ssglyxx/dormManager/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询宿舍管理员信息详细
|
||||
* @param id
|
||||
*/
|
||||
export const getDormManager = (id: string | number): AxiosPromise<DormManagerVO> => {
|
||||
return request({
|
||||
url: '/ssglyxx/dormManager/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增宿舍管理员信息
|
||||
* @param data
|
||||
*/
|
||||
export const addDormManager = (data: DormManagerForm) => {
|
||||
return request({
|
||||
url: '/ssglyxx/dormManager',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改宿舍管理员信息
|
||||
* @param data
|
||||
*/
|
||||
export const updateDormManager = (data: DormManagerForm) => {
|
||||
return request({
|
||||
url: '/ssglyxx/dormManager',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除宿舍管理员信息
|
||||
* @param id
|
||||
*/
|
||||
export const delDormManager = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/ssglyxx/dormManager/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 分配管理员数据范围
|
||||
* @param managerId 管理员ID
|
||||
* @param authType 授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)
|
||||
* @param authSourceIds 授权来源ID列表
|
||||
*/
|
||||
export const assignScope = (managerId: string | number, authType: number, authSourceIds: (string | number)[]) => {
|
||||
return request({
|
||||
url: '/glysqgx/dormManagerSource/assignScope',
|
||||
method: 'post',
|
||||
params: {
|
||||
managerId,
|
||||
authType
|
||||
},
|
||||
data: authSourceIds
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取管理员授权范围名称
|
||||
* @param managerId 管理员ID
|
||||
* @param managerType 管理员类型
|
||||
*/
|
||||
export const getManagerScopeNames = (managerId: string | number, managerType: number) => {
|
||||
return request({
|
||||
url: '/glysqgx/dormManagerSource/getScopeNames',
|
||||
method: 'get',
|
||||
params: {
|
||||
managerId,
|
||||
managerType
|
||||
}
|
||||
});
|
||||
};
|
||||
@@ -0,0 +1,161 @@
|
||||
export interface DormManagerVO {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 管理员姓名
|
||||
*/
|
||||
managerName: string;
|
||||
|
||||
/**
|
||||
* 管理员类型(1全校管理员 2校区管理员 3宿舍区管理员 4宿舍楼管理员)
|
||||
*/
|
||||
managerType: string;
|
||||
|
||||
/**
|
||||
* 管理级别(1-5,1为最高)
|
||||
*/
|
||||
managerLevel: number;
|
||||
|
||||
/**
|
||||
* 关联用户ID
|
||||
*/
|
||||
userId: string | number;
|
||||
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
phone: string;
|
||||
|
||||
/**
|
||||
* 性别(0男 1女 2未知)
|
||||
*/
|
||||
gender: string;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
*/
|
||||
status: string;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
deleted: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark: string;
|
||||
|
||||
/**
|
||||
* 授权范围名称(逗号分隔的字符串)
|
||||
*/
|
||||
scopeNames?: string;
|
||||
|
||||
}
|
||||
|
||||
export interface DormManagerForm extends BaseEntity {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 管理员姓名
|
||||
*/
|
||||
managerName?: string;
|
||||
|
||||
/**
|
||||
* 管理员类型(1全校管理员 2校区管理员 3宿舍区管理员 4宿舍楼管理员)
|
||||
*/
|
||||
managerType?: string;
|
||||
|
||||
/**
|
||||
* 管理级别(1-5,1为最高)
|
||||
*/
|
||||
managerLevel?: number;
|
||||
|
||||
/**
|
||||
* 关联用户ID
|
||||
*/
|
||||
userId?: string | number;
|
||||
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
phone?: string;
|
||||
|
||||
/**
|
||||
* 性别(0男 1女 2未知)
|
||||
*/
|
||||
gender?: string;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
*/
|
||||
status?: string;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
deleted?: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
|
||||
}
|
||||
|
||||
export interface DormManagerQuery extends PageQuery {
|
||||
|
||||
/**
|
||||
* 管理员姓名
|
||||
*/
|
||||
managerName?: string;
|
||||
|
||||
/**
|
||||
* 管理员类型(1全校管理员 2校区管理员 3宿舍区管理员 4宿舍楼管理员)
|
||||
*/
|
||||
managerType?: string;
|
||||
|
||||
/**
|
||||
* 管理级别(1-5,1为最高)
|
||||
*/
|
||||
managerLevel?: number;
|
||||
|
||||
/**
|
||||
* 关联用户ID
|
||||
*/
|
||||
userId?: string | number;
|
||||
|
||||
/**
|
||||
* 联系电话
|
||||
*/
|
||||
phone?: string;
|
||||
|
||||
/**
|
||||
* 性别(0男 1女 2未知)
|
||||
*/
|
||||
gender?: string;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
*/
|
||||
status?: string;
|
||||
|
||||
/**
|
||||
* 删除标志(0代表存在 1代表删除)
|
||||
*/
|
||||
deleted?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { DormBuildingVO, DormBuildingForm, DormBuildingQuery, BuildingTreeSelectVo } from '@/api/sslxx/dormBuilding/types';
|
||||
|
||||
/**
|
||||
* 查询宿舍楼信息列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listDormBuilding = (query?: DormBuildingQuery): AxiosPromise<DormBuildingVO[]> => {
|
||||
return request({
|
||||
url: '/sslxx/dormBuilding/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询宿舍楼信息详细
|
||||
* @param id
|
||||
*/
|
||||
export const getDormBuilding = (id: string | number): AxiosPromise<DormBuildingVO> => {
|
||||
return request({
|
||||
url: '/sslxx/dormBuilding/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增宿舍楼信息
|
||||
* @param data
|
||||
*/
|
||||
export const addDormBuilding = (data: DormBuildingForm) => {
|
||||
return request({
|
||||
url: '/sslxx/dormBuilding',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改宿舍楼信息
|
||||
* @param data
|
||||
*/
|
||||
export const updateDormBuilding = (data: DormBuildingForm) => {
|
||||
return request({
|
||||
url: '/sslxx/dormBuilding',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除宿舍楼信息
|
||||
* @param id
|
||||
*/
|
||||
export const delDormBuilding = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/sslxx/dormBuilding/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取校区选项列表
|
||||
*/
|
||||
export const listCampusOptions = (): AxiosPromise<any> => {
|
||||
return request({
|
||||
url: '/xqxx/dormCampus/list',
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取宿舍区树形数据
|
||||
* @param campusId 校区ID,如果指定则只返回该校区的宿舍区
|
||||
*/
|
||||
export const listAreaTreeData = (campusId?: string | number): AxiosPromise<any> => {
|
||||
return request({
|
||||
url: '/ssqxx/dormArea/list',
|
||||
method: 'get',
|
||||
params: { campusId }
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取宿舍楼树形结构数据(校区-宿舍区-宿舍楼三级结构)
|
||||
* 校区和宿舍区节点不可选,只有宿舍楼节点可以选择
|
||||
*/
|
||||
export const getBuildingTree = (): AxiosPromise<BuildingTreeSelectVo[]> => {
|
||||
return request({
|
||||
url: '/sslxx/dormBuilding/buildingTree',
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
@@ -0,0 +1,50 @@
|
||||
export interface DormBuildingVO {
|
||||
id: string | number;
|
||||
buildingCode: string;
|
||||
buildingName: string;
|
||||
areaId: string | number;
|
||||
campusId: string | number;
|
||||
buildingType: string;
|
||||
buildingDescription: string;
|
||||
sortOrder: number;
|
||||
createTime: string;
|
||||
createBy: string;
|
||||
updateTime: string;
|
||||
updateBy: string;
|
||||
remark: string;
|
||||
areaName?: string;
|
||||
campusName?: string;
|
||||
floors: number;
|
||||
}
|
||||
|
||||
export interface DormBuildingForm extends Omit<DormBuildingVO, 'createTime' | 'createBy' | 'updateTime' | 'updateBy' | 'areaName' | 'campusName'> {
|
||||
}
|
||||
|
||||
export interface DormBuildingQuery {
|
||||
buildingCode?: string;
|
||||
buildingName?: string;
|
||||
areaId?: string | number;
|
||||
campusId?: string | number;
|
||||
buildingType?: string;
|
||||
floors?: number;
|
||||
params?: Record<string, any>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 宿舍楼树形结构节点
|
||||
*/
|
||||
export interface BuildingTreeSelectVo {
|
||||
id: number;
|
||||
label: string;
|
||||
nodeType: 'campus' | 'area' | 'building';
|
||||
disabled: boolean;
|
||||
children?: BuildingTreeSelectVo[];
|
||||
createBy?: number;
|
||||
createTime?: string;
|
||||
updateBy?: number;
|
||||
floors?: number;
|
||||
updateTime?: string;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { DormAreaVO, DormAreaForm, DormAreaQuery, TreeSelectVo } from '@/api/ssqxx/dormArea/types';
|
||||
|
||||
/**
|
||||
* 查询宿舍区信息列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listDormArea = (query?: DormAreaQuery): AxiosPromise<DormAreaVO[]> => {
|
||||
return request({
|
||||
url: '/ssqxx/dormArea/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询宿舍区信息详细
|
||||
* @param id
|
||||
*/
|
||||
export const getDormArea = (id: string | number): AxiosPromise<DormAreaVO> => {
|
||||
return request({
|
||||
url: '/ssqxx/dormArea/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增宿舍区信息
|
||||
* @param data
|
||||
*/
|
||||
export const addDormArea = (data: DormAreaForm) => {
|
||||
return request({
|
||||
url: '/ssqxx/dormArea',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改宿舍区信息
|
||||
* @param data
|
||||
*/
|
||||
export const updateDormArea = (data: DormAreaForm) => {
|
||||
return request({
|
||||
url: '/ssqxx/dormArea',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除宿舍区信息
|
||||
* @param id
|
||||
*/
|
||||
export const delDormArea = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/ssqxx/dormArea/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取宿舍区树形结构数据
|
||||
* 以校区为根节点,宿舍区为子节点的树形结构
|
||||
*/
|
||||
export const getAreaTree = (): AxiosPromise<TreeSelectVo[]> => {
|
||||
return request({
|
||||
url: '/ssqxx/dormArea/tree',
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
@@ -0,0 +1,107 @@
|
||||
export interface DormAreaVO {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 宿舍区编码
|
||||
*/
|
||||
areaCode: string;
|
||||
|
||||
/**
|
||||
* 宿舍区名称
|
||||
*/
|
||||
areaName: string;
|
||||
|
||||
/**
|
||||
* 所属校区ID
|
||||
*/
|
||||
campusId: string | number;
|
||||
|
||||
/**
|
||||
* 宿舍区描述
|
||||
*/
|
||||
areaDescription: string;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
sortOrder: number;
|
||||
|
||||
}
|
||||
|
||||
export interface DormAreaForm extends BaseEntity {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 宿舍区编码
|
||||
*/
|
||||
areaCode?: string;
|
||||
|
||||
/**
|
||||
* 宿舍区名称
|
||||
*/
|
||||
areaName?: string;
|
||||
|
||||
/**
|
||||
* 所属校区ID
|
||||
*/
|
||||
campusId?: string | number;
|
||||
|
||||
/**
|
||||
* 宿舍区描述
|
||||
*/
|
||||
areaDescription?: string;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
sortOrder?: number;
|
||||
|
||||
}
|
||||
|
||||
export interface DormAreaQuery extends PageQuery {
|
||||
|
||||
/**
|
||||
* 宿舍区编码
|
||||
*/
|
||||
areaCode?: string;
|
||||
|
||||
/**
|
||||
* 宿舍区名称
|
||||
*/
|
||||
areaName?: string;
|
||||
|
||||
/**
|
||||
* 宿舍区描述
|
||||
*/
|
||||
areaDescription?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* 树形选择数据类型
|
||||
*/
|
||||
export interface TreeSelectVo {
|
||||
/** 节点ID */
|
||||
id: number;
|
||||
/** 节点名称 */
|
||||
label: string;
|
||||
/** 节点类型(campus:校区, area:宿舍区) */
|
||||
type: string;
|
||||
/** 是否禁用选择 */
|
||||
disabled: boolean;
|
||||
/** 子节点 */
|
||||
children?: TreeSelectVo[];
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { DormCampusVO, DormCampusForm, DormCampusQuery } from '@/api/xqxx/dormCampus/types';
|
||||
|
||||
/**
|
||||
* 查询校区信息列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listDormCampus = (query?: DormCampusQuery): AxiosPromise<DormCampusVO[]> => {
|
||||
return request({
|
||||
url: '/xqxx/dormCampus/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询校区信息详细
|
||||
* @param id
|
||||
*/
|
||||
export const getDormCampus = (id: string | number): AxiosPromise<DormCampusVO> => {
|
||||
return request({
|
||||
url: '/xqxx/dormCampus/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增校区信息
|
||||
* @param data
|
||||
*/
|
||||
export const addDormCampus = (data: DormCampusForm) => {
|
||||
return request({
|
||||
url: '/xqxx/dormCampus',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改校区信息
|
||||
* @param data
|
||||
*/
|
||||
export const updateDormCampus = (data: DormCampusForm) => {
|
||||
return request({
|
||||
url: '/xqxx/dormCampus',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除校区信息
|
||||
* @param id
|
||||
*/
|
||||
export const delDormCampus = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/xqxx/dormCampus/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
@@ -0,0 +1,86 @@
|
||||
export interface DormCampusVO {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 校区编码
|
||||
*/
|
||||
campusCode: string;
|
||||
|
||||
/**
|
||||
* 校区名称
|
||||
*/
|
||||
campusName: string;
|
||||
|
||||
/**
|
||||
* 校区描述
|
||||
*/
|
||||
campusDescription: string;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
sortOrder: number;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark: string;
|
||||
|
||||
}
|
||||
|
||||
export interface DormCampusForm extends BaseEntity {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 校区编码
|
||||
*/
|
||||
campusCode?: string;
|
||||
|
||||
/**
|
||||
* 校区名称
|
||||
*/
|
||||
campusName?: string;
|
||||
|
||||
/**
|
||||
* 校区描述
|
||||
*/
|
||||
campusDescription?: string;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
sortOrder?: number;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
|
||||
}
|
||||
|
||||
export interface DormCampusQuery extends PageQuery {
|
||||
|
||||
/**
|
||||
* 校区编码
|
||||
*/
|
||||
campusCode?: string;
|
||||
|
||||
/**
|
||||
* 校区名称
|
||||
*/
|
||||
campusName?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,260 @@
|
||||
import request from '@/utils/request';
|
||||
import { DormQuery, RoomForm, BedForm, DormTreeNode, RoomInfo, BedInfo } from './types';
|
||||
|
||||
// API前缀
|
||||
const baseUrl = '/xsssfjgl';
|
||||
|
||||
/**
|
||||
* 获取宿舍楼树形结构
|
||||
*/
|
||||
export function getDormTree() {
|
||||
return request({
|
||||
url: '/xgss/dormBuildingTree/list',
|
||||
method: 'get'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取房间列表
|
||||
* @param query 查询条件
|
||||
* @returns 房间列表
|
||||
*/
|
||||
export function listRooms(query: DormQuery) {
|
||||
return request({
|
||||
url: baseUrl + '/room/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取房间详情
|
||||
* @param roomId 房间ID
|
||||
* @returns 房间详情
|
||||
*/
|
||||
export function getRoom(roomId: string | number) {
|
||||
return request({
|
||||
url: baseUrl + '/room/' + roomId,
|
||||
method: 'get'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增房间
|
||||
* @param data 房间信息
|
||||
* @returns 结果
|
||||
*/
|
||||
export function addRoom(data: RoomForm) {
|
||||
return request({
|
||||
url: baseUrl + '/room',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改房间
|
||||
* @param data 房间信息
|
||||
* @returns 结果
|
||||
*/
|
||||
export function updateRoom(data: RoomForm) {
|
||||
return request({
|
||||
url: baseUrl + '/room',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除房间
|
||||
* @param roomIds 房间ID字符串
|
||||
* @returns 结果
|
||||
*/
|
||||
export function delRoom(roomIds: string | number) {
|
||||
return request({
|
||||
url: baseUrl + '/room/' + roomIds,
|
||||
method: 'delete'
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取床位列表
|
||||
* @param roomId 房间ID
|
||||
* @returns 床位列表
|
||||
*/
|
||||
export function listBeds(roomId: string | number) {
|
||||
return request({
|
||||
url: baseUrl + '/bed/list',
|
||||
method: 'get',
|
||||
params: { roomId }
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增床位
|
||||
* @param data 床位信息
|
||||
* @returns 结果
|
||||
*/
|
||||
export function addBed(data: BedForm) {
|
||||
return request({
|
||||
url: baseUrl + '/bed',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改床位
|
||||
* @param data 床位信息
|
||||
* @returns 结果
|
||||
*/
|
||||
export function updateBed(data: BedForm) {
|
||||
return request({
|
||||
url: baseUrl + '/bed',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除床位
|
||||
* @param bedIds 床位ID字符串
|
||||
* @returns 结果
|
||||
*/
|
||||
export function delBed(bedIds: string | number) {
|
||||
return request({
|
||||
url: baseUrl + '/bed/' + bedIds,
|
||||
method: 'delete'
|
||||
});
|
||||
}
|
||||
|
||||
// 模拟数据 - 在API接口完成前使用
|
||||
// 生成宿舍树形结构的模拟数据
|
||||
export function getMockDormTree(): { data: DormTreeNode[] } {
|
||||
const mockData: DormTreeNode[] = [
|
||||
{
|
||||
id: 1,
|
||||
label: '东校区',
|
||||
type: 'campus',
|
||||
disabled: true,
|
||||
children: [
|
||||
{
|
||||
id: 11,
|
||||
label: '东区宿舍',
|
||||
type: 'area',
|
||||
disabled: true,
|
||||
children: [
|
||||
{
|
||||
id: 111,
|
||||
label: '东区1号楼',
|
||||
type: 'building',
|
||||
buildingFloors: 6
|
||||
},
|
||||
{
|
||||
id: 112,
|
||||
label: '东区2号楼',
|
||||
type: 'building',
|
||||
buildingFloors: 8
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
label: '西校区',
|
||||
type: 'campus',
|
||||
disabled: true,
|
||||
children: [
|
||||
{
|
||||
id: 21,
|
||||
label: '西区宿舍',
|
||||
type: 'area',
|
||||
disabled: true,
|
||||
children: [
|
||||
{
|
||||
id: 211,
|
||||
label: '西区1号楼',
|
||||
type: 'building',
|
||||
buildingFloors: 7
|
||||
},
|
||||
{
|
||||
id: 212,
|
||||
label: '西区2号楼',
|
||||
type: 'building',
|
||||
buildingFloors: 5
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
return { data: mockData };
|
||||
}
|
||||
|
||||
// 生成房间数据的模拟数据
|
||||
export function getMockRooms(buildingId: string | number, floorNumber?: number): { rows: RoomInfo[], total: number } {
|
||||
const rooms: RoomInfo[] = [];
|
||||
|
||||
// 根据buildingId判断楼层数
|
||||
let floors = 6;
|
||||
if (buildingId === 112) floors = 8;
|
||||
else if (buildingId === 211) floors = 7;
|
||||
else if (buildingId === 212) floors = 5;
|
||||
|
||||
// 如果指定了楼层,只生成该楼层的数据
|
||||
const startFloor = floorNumber || 1;
|
||||
const endFloor = floorNumber || floors;
|
||||
|
||||
for (let floor = startFloor; floor <= endFloor; floor++) {
|
||||
for (let i = 1; i <= 10; i++) {
|
||||
const roomNumber = `${floor}${i.toString().padStart(2, '0')}`;
|
||||
rooms.push({
|
||||
roomId: `${buildingId}${roomNumber}`,
|
||||
roomName: roomNumber,
|
||||
floorNumber: floor,
|
||||
buildingId: buildingId,
|
||||
capacity: 4,
|
||||
used: Math.floor(Math.random() * 5),
|
||||
roomType: '标准间',
|
||||
status: Math.random() > 0.9 ? '1' : '0',
|
||||
remark: '',
|
||||
createBy: 'admin',
|
||||
createTime: '2023-01-01 00:00:00',
|
||||
updateBy: 'admin',
|
||||
updateTime: '2023-01-01 00:00:00'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
rows: rooms.filter(room => !floorNumber || room.floorNumber === floorNumber),
|
||||
total: rooms.length
|
||||
};
|
||||
}
|
||||
|
||||
// 生成床位数据的模拟数据
|
||||
export function getMockBeds(roomId: string | number): { data: BedInfo[] } {
|
||||
const beds: BedInfo[] = [];
|
||||
const capacity = 4;
|
||||
|
||||
for (let i = 1; i <= capacity; i++) {
|
||||
const status = Math.random() > 0.6 ? '1' : '0';
|
||||
beds.push({
|
||||
bedId: `${roomId}-${i}`,
|
||||
bedName: `${i}号床`,
|
||||
roomId: roomId,
|
||||
status: status,
|
||||
studentId: status === '1' ? 10000 + Math.floor(Math.random() * 5000) : undefined,
|
||||
studentName: status === '1' ? `学生${Math.floor(Math.random() * 1000)}` : undefined,
|
||||
remark: '',
|
||||
createBy: 'admin',
|
||||
createTime: '2023-01-01 00:00:00',
|
||||
updateBy: 'admin',
|
||||
updateTime: '2023-01-01 00:00:00'
|
||||
});
|
||||
}
|
||||
|
||||
return { data: beds };
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
// 基础字段类型
|
||||
export interface BaseEntity {
|
||||
createBy: number | string;
|
||||
createTime: string;
|
||||
updateBy: number | string;
|
||||
updateTime: string;
|
||||
}
|
||||
|
||||
// 分页查询参数
|
||||
export interface PageQuery {
|
||||
pageNum: number;
|
||||
pageSize: number;
|
||||
}
|
||||
|
||||
// 树形数据节点类型
|
||||
export interface DormTreeNode {
|
||||
id: string | number;
|
||||
label: string;
|
||||
children?: DormTreeNode[];
|
||||
type: 'campus' | 'area' | 'building'; // 节点类型:校区、宿舍区、宿舍楼
|
||||
disabled?: boolean; // 是否禁用选择
|
||||
buildingFloors?: number; // 宿舍楼层数
|
||||
}
|
||||
|
||||
// 房间信息
|
||||
export interface RoomInfo extends BaseEntity {
|
||||
roomId: string | number;
|
||||
roomCode: string;
|
||||
roomName: string;
|
||||
floorNum: number;
|
||||
buildingId: string | number;
|
||||
capacity: number;
|
||||
used: number;
|
||||
roomArea: number;
|
||||
roomType: string;
|
||||
status: string; // 0-正常 1-维修中 2-停用
|
||||
remark: string;
|
||||
}
|
||||
|
||||
// 床位信息
|
||||
export interface BedInfo extends BaseEntity {
|
||||
bedId: string | number;
|
||||
bedName: string;
|
||||
roomId: string | number;
|
||||
status: string; // 0-空闲 1-已分配 2-维修中
|
||||
studentId?: string | number;
|
||||
studentName?: string;
|
||||
remark: string;
|
||||
}
|
||||
|
||||
// 查询参数
|
||||
export interface DormQuery extends PageQuery {
|
||||
buildingId?: string | number;
|
||||
roomName?: string;
|
||||
floorNum?: number;
|
||||
status?: string;
|
||||
}
|
||||
|
||||
// 房间表单
|
||||
export interface RoomForm {
|
||||
roomId?: string | number;
|
||||
roomCode: string;
|
||||
roomName: string;
|
||||
floorNum: number;
|
||||
buildingId: string | number;
|
||||
capacity: number;
|
||||
roomArea: number;
|
||||
roomType: string;
|
||||
status: string;
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
// 床位表单
|
||||
export interface BedForm {
|
||||
bedId?: string | number;
|
||||
bedName: string;
|
||||
roomId: string | number;
|
||||
status: string;
|
||||
remark?: string;
|
||||
}
|
||||
Loaded 100 of 113 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user