ソースを参照

1.代码生成模块
2.添加组织管理模块
3.添加权限管理模块
4.添加地理信息模块

1 16 時間 前
コミット
5ec8101ab1
72 ファイル変更4245 行追加80 行削除
  1. 79 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/controller/upms/OrganizationServiceController.java
  2. 29 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/controller/upms/OrganizationViewController.java
  3. 79 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/controller/upms/PermissionServiceController.java
  4. 29 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/controller/upms/PermissionViewController.java
  5. 79 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/controller/upms/RegionServiceController.java
  6. 133 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/convert/upms/OrganizationConvert.java
  7. 133 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/convert/upms/PermissionConvert.java
  8. 133 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/convert/upms/RegionConvert.java
  9. 14 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/dao/upms/OrganizationDao.java
  10. 14 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/dao/upms/PermissionDao.java
  11. 14 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/dao/upms/RegionDao.java
  12. 120 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/entity/upms/Organization.java
  13. 120 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/entity/upms/Permission.java
  14. 68 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/entity/upms/Region.java
  15. 116 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/bo/OrganizationBO.java
  16. 19 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/bo/OrganizationResultBO.java
  17. 116 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/bo/PermissionBO.java
  18. 19 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/bo/PermissionResultBO.java
  19. 64 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/bo/RegionBO.java
  20. 19 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/bo/RegionResultBO.java
  21. 116 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/dto/OrganizationDTO.java
  22. 18 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/dto/OrganizationListDTO.java
  23. 116 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/dto/PermissionDTO.java
  24. 18 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/dto/PermissionListDTO.java
  25. 64 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/dto/RegionDTO.java
  26. 18 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/dto/RegionListDTO.java
  27. 18 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/po/OrganizationListParamVO.java
  28. 116 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/po/OrganizationParamVO.java
  29. 18 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/po/PermissionListParamVO.java
  30. 116 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/po/PermissionParamVO.java
  31. 18 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/po/RegionListParamVO.java
  32. 64 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/po/RegionParamVO.java
  33. 19 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/vo/OrganizationResultVO.java
  34. 117 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/vo/OrganizationVO.java
  35. 19 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/vo/PermissionResultVO.java
  36. 117 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/vo/PermissionVO.java
  37. 19 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/vo/RegionResultVO.java
  38. 65 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/vo/RegionVO.java
  39. 15 15
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/service/GeneratorService.java
  40. 52 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/service/upms/IOrganizationService.java
  41. 53 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/service/upms/IPermissionService.java
  42. 52 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/service/upms/IRegionService.java
  43. 106 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/service/upms/impl/OrganizationServiceImpl.java
  44. 106 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/service/upms/impl/PermissionServiceImpl.java
  45. 106 0
      imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/service/upms/impl/RegionServiceImpl.java
  46. 4 4
      imwork-windows/imwork-silos/src/main/resources/db.properties
  47. 82 0
      imwork-windows/imwork-silos/src/main/resources/mapper/upms/OrganizationDao.xml
  48. 82 0
      imwork-windows/imwork-silos/src/main/resources/mapper/upms/PermissionDao.xml
  49. 56 0
      imwork-windows/imwork-silos/src/main/resources/mapper/upms/RegionDao.xml
  50. 1 1
      imwork-windows/imwork-silos/src/main/resources/moudle/BO.ftl
  51. 10 10
      imwork-windows/imwork-silos/src/main/resources/moudle/Convert.ftl
  52. 1 1
      imwork-windows/imwork-silos/src/main/resources/moudle/DTO.ftl
  53. 2 2
      imwork-windows/imwork-silos/src/main/resources/moudle/Dao.ftl
  54. 3 3
      imwork-windows/imwork-silos/src/main/resources/moudle/Dao.xml.ftl
  55. 1 1
      imwork-windows/imwork-silos/src/main/resources/moudle/Entity.ftl
  56. 2 2
      imwork-windows/imwork-silos/src/main/resources/moudle/ListDTO.ftl
  57. 2 2
      imwork-windows/imwork-silos/src/main/resources/moudle/ListParamVO.ftl
  58. 1 1
      imwork-windows/imwork-silos/src/main/resources/moudle/ParamVO.ftl
  59. 3 3
      imwork-windows/imwork-silos/src/main/resources/moudle/ResultBO.ftl
  60. 3 3
      imwork-windows/imwork-silos/src/main/resources/moudle/ResultVO.ftl
  61. 5 5
      imwork-windows/imwork-silos/src/main/resources/moudle/Service.ftl
  62. 11 16
      imwork-windows/imwork-silos/src/main/resources/moudle/ServiceController.ftl
  63. 10 10
      imwork-windows/imwork-silos/src/main/resources/moudle/ServiceImpl.ftl
  64. 1 1
      imwork-windows/imwork-silos/src/main/resources/moudle/VO.ftl
  65. 242 0
      imwork-windows/imwork-silos/src/main/resources/static/business/upms/organization/list.js
  66. 44 0
      imwork-windows/imwork-silos/src/main/resources/static/business/upms/organization/save.js
  67. 193 0
      imwork-windows/imwork-silos/src/main/resources/static/business/upms/permission/list.js
  68. 49 0
      imwork-windows/imwork-silos/src/main/resources/static/business/upms/permission/save.js
  69. 161 0
      imwork-windows/imwork-silos/src/main/resources/templates/upms/organization/edit.html
  70. 56 0
      imwork-windows/imwork-silos/src/main/resources/templates/upms/organization/list.html
  71. 64 0
      imwork-windows/imwork-silos/src/main/resources/templates/upms/permission/list.html
  72. 213 0
      imwork-windows/imwork-silos/src/main/resources/templates/upms/permission/update.html

+ 79 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/controller/upms/OrganizationServiceController.java

@@ -0,0 +1,79 @@
+package top.imwork.window.silos.controller.upms;
+
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import org.springframework.web.bind.annotation.*;
+
+import top.imwork.commons.core.pojo.ResponseMsg;
+import top.imwork.commons.core.pojo.DeleteParams;
+import top.imwork.commons.core.base.BaseController;
+import top.imwork.window.silos.convert.upms.OrganizationConvert;
+import top.imwork.window.silos.pojo.upms.bo.OrganizationBO;
+import top.imwork.window.silos.pojo.upms.bo.OrganizationResultBO;
+import top.imwork.window.silos.pojo.upms.po.OrganizationListParamVO;
+import top.imwork.window.silos.pojo.upms.po.OrganizationParamVO;
+import top.imwork.window.silos.service.upms.IOrganizationService;
+
+/**
+ * 组织信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:57:50
+ */
+@RestController
+@RequestMapping("/organization")
+public class OrganizationServiceController extends BaseController{
+
+    @Resource
+    public IOrganizationService organizationService;
+
+    /**
+     * 根据id查询数据
+     * @param id long类型的id
+     * @return 返回查询结果
+     */
+    @GetMapping("/info/{id}")
+    public ResponseMsg info(@PathVariable("id") Long id){
+        return ResponseMsg.buildResponse(organizationService.info(id));
+    }
+
+    /**
+     * 新增/修改info
+     * @param organizationParamVO 实体信息
+     * @return responseMsg 操作结果
+     */
+    @PostMapping("/save")
+    public ResponseMsg save(@RequestBody @Valid OrganizationParamVO organizationParamVO){
+        OrganizationBO organizationBO = organizationService.save(OrganizationConvert.organizationParamVoToDto(organizationParamVO));
+        return ResponseMsg.buildResponse(OrganizationConvert.organizationBoToVo(organizationBO));
+    }
+
+    /**
+     * 根据id删除组织信息
+     * @param id id
+     * @return true/false 成功/失败
+     */
+    @DeleteMapping("/delete/{id}")
+    public ResponseMsg delete(@PathVariable("id") Long id){
+        return organizationService.delete(id)? ResponseMsg.ok() : ResponseMsg.fail();
+    }
+
+    /**
+     * 批量逻辑删除信息
+     *
+     * @param dto 删除条件
+     * @return true/false 是否删除成功
+     */
+    @DeleteMapping("/deleteByIds")
+    public ResponseMsg deleteByIds(@RequestBody DeleteParams dto){
+        String[] idArr = dto.getIds().split(",");
+        return organizationService.deleteByIds(idArr)? ResponseMsg.ok() : ResponseMsg.fail();
+    }
+
+    @PostMapping("/queryPage")
+    public ResponseMsg queryPage(@RequestBody @Valid OrganizationListParamVO organizationListParamVO) {
+        OrganizationResultBO organizationResultBO = organizationService.queryPage(OrganizationConvert.organizationListParamVoToDTO(organizationListParamVO));
+        return ResponseMsg.buildResponse(OrganizationConvert.organizationResultBoToVo(organizationResultBO));
+    }
+}

+ 29 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/controller/upms/OrganizationViewController.java

@@ -0,0 +1,29 @@
+package top.imwork.window.silos.controller.upms;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+/**
+ * Copyright (C), 2015-2025
+ * FileName: OrganizationViewController
+ * Author<作者姓名>:   stars
+ * CreateTime<创建时间>:   2025/12/11 13:05
+ * UpdateTime<修改时间>:   2025/12/11 13:05
+ * Description〈功能简述〉:
+ * History<历史描述>:
+ * Since<版本号>: 1.0.0
+ */
+@RequestMapping("/upms/organization/")
+@Controller
+public class OrganizationViewController {
+    @GetMapping("/list.html")
+    public String list() {
+        return "/upms/organization/list";
+    }
+
+    @GetMapping("/edit.html")
+    public String edit() {
+        return "/upms/organization/edit";
+    }
+}

+ 79 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/controller/upms/PermissionServiceController.java

@@ -0,0 +1,79 @@
+package top.imwork.window.silos.controller.upms;
+
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import org.springframework.web.bind.annotation.*;
+import top.imwork.commons.core.base.BaseController;
+import top.imwork.commons.core.pojo.DeleteParams;
+import top.imwork.commons.core.pojo.ResponseMsg;
+import top.imwork.window.silos.convert.upms.PermissionConvert;
+import top.imwork.window.silos.pojo.upms.bo.PermissionBO;
+import top.imwork.window.silos.pojo.upms.bo.PermissionResultBO;
+import top.imwork.window.silos.pojo.upms.po.PermissionListParamVO;
+import top.imwork.window.silos.pojo.upms.po.PermissionParamVO;
+import top.imwork.window.silos.service.upms.IPermissionService;
+
+
+/**
+ * 权限信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:21:32
+ */
+@RestController
+@RequestMapping("/permission")
+public class PermissionServiceController extends BaseController {
+
+    @Resource
+    public IPermissionService permissionService;
+
+    /**
+     * 根据id查询数据
+     * @param id long类型的id
+     * @return 返回查询结果
+     */
+    @GetMapping("/info/{id}")
+    public ResponseMsg info(@PathVariable("id") Long id){
+        return ResponseMsg.buildResponse(permissionService.info(id));
+    }
+
+    /**
+     * 新增/修改info
+     * @param permissionParamVO 实体信息
+     * @return responseMsg 操作结果
+     */
+    @PostMapping("/save")
+    public ResponseMsg save(@RequestBody @Valid PermissionParamVO permissionParamVO){
+        PermissionBO permissionBO = permissionService.save(PermissionConvert.permissionParamVoToDto(permissionParamVO));
+        return ResponseMsg.buildResponse(PermissionConvert.permissionBoToVo(permissionBO));
+    }
+
+    /**
+     * 根据id删除权限信息
+     * @param id id
+     * @return true/false 成功/失败
+     */
+    @DeleteMapping("/delete/{id}")
+    public ResponseMsg delete(@PathVariable("id") Long id){
+        return permissionService.delete(id)? ResponseMsg.ok() : ResponseMsg.fail();
+    }
+
+    /**
+     * 批量逻辑删除信息
+     *
+     * @param dto 删除条件
+     * @return true/false 是否删除成功
+     */
+    @DeleteMapping("/deleteByIds")
+    public ResponseMsg deleteByIds(@RequestBody DeleteParams dto){
+        String[] idArr = dto.getIds().split(",");
+        return permissionService.deleteByIds(idArr)? ResponseMsg.ok() : ResponseMsg.fail();
+    }
+
+    @PostMapping("/queryPage")
+    public ResponseMsg queryPage(@RequestBody @Valid PermissionListParamVO permissionListParamVO) {
+        PermissionResultBO permissionResultBO = permissionService.queryPage(PermissionConvert.permissionListParamVoToDTO(permissionListParamVO));
+        return ResponseMsg.buildResponse(PermissionConvert.permissionResultBoToVo(permissionResultBO));
+    }
+}

+ 29 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/controller/upms/PermissionViewController.java

@@ -0,0 +1,29 @@
+package top.imwork.window.silos.controller.upms;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+/**
+ * Copyright (C), 2015-2025
+ * FileName: PermissionViewController
+ * Author<作者姓名>:   stars
+ * CreateTime<创建时间>:   2025/12/11 12:54
+ * UpdateTime<修改时间>:   2025/12/11 12:54
+ * Description〈功能简述〉:
+ * History<历史描述>:
+ * Since<版本号>: 1.0.0
+ */
+@RequestMapping("/upms/permission/")
+@Controller
+public class PermissionViewController {
+    @GetMapping("/list.html")
+    public String list() {
+        return "/upms/permission/list";
+    }
+
+    @GetMapping("/edit.html")
+    public String edit() {
+        return "/upms/permission/edit";
+    }
+}

+ 79 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/controller/upms/RegionServiceController.java

@@ -0,0 +1,79 @@
+package top.imwork.window.silos.controller.upms;
+
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import org.springframework.web.bind.annotation.*;
+
+import top.imwork.commons.core.pojo.ResponseMsg;
+import top.imwork.commons.core.pojo.DeleteParams;
+import top.imwork.commons.core.base.BaseController;
+import top.imwork.window.silos.convert.upms.RegionConvert;
+import top.imwork.window.silos.pojo.upms.bo.RegionBO;
+import top.imwork.window.silos.pojo.upms.bo.RegionResultBO;
+import top.imwork.window.silos.pojo.upms.po.RegionListParamVO;
+import top.imwork.window.silos.pojo.upms.po.RegionParamVO;
+import top.imwork.window.silos.service.upms.IRegionService;
+
+/**
+ * 地理信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 13:37:18
+ */
+@RestController
+@RequestMapping("/region")
+public class RegionServiceController extends BaseController{
+
+    @Resource
+    public IRegionService regionService;
+
+    /**
+     * 根据id查询数据
+     * @param id long类型的id
+     * @return 返回查询结果
+     */
+    @GetMapping("/info/{id}")
+    public ResponseMsg info(@PathVariable("id") Long id){
+        return ResponseMsg.buildResponse(regionService.info(id));
+    }
+
+    /**
+     * 新增/修改info
+     * @param regionParamVO 实体信息
+     * @return responseMsg 操作结果
+     */
+    @PostMapping("/save")
+    public ResponseMsg save(@RequestBody @Valid RegionParamVO regionParamVO){
+        RegionBO regionBO = regionService.save(RegionConvert.regionParamVoToDto(regionParamVO));
+        return ResponseMsg.buildResponse(RegionConvert.regionBoToVo(regionBO));
+    }
+
+    /**
+     * 根据id删除地理信息
+     * @param id id
+     * @return true/false 成功/失败
+     */
+    @DeleteMapping("/delete/{id}")
+    public ResponseMsg delete(@PathVariable("id") Long id){
+        return regionService.delete(id)? ResponseMsg.ok() : ResponseMsg.fail();
+    }
+
+    /**
+     * 批量逻辑删除信息
+     *
+     * @param dto 删除条件
+     * @return true/false 是否删除成功
+     */
+    @DeleteMapping("/deleteByIds")
+    public ResponseMsg deleteByIds(@RequestBody DeleteParams dto){
+        String[] idArr = dto.getIds().split(",");
+        return regionService.deleteByIds(idArr)? ResponseMsg.ok() : ResponseMsg.fail();
+    }
+
+    @PostMapping("/queryPage")
+    public ResponseMsg queryPage(@RequestBody @Valid RegionListParamVO regionListParamVO) {
+        RegionResultBO regionResultBO = regionService.queryPage(RegionConvert.regionListParamVoToDTO(regionListParamVO));
+        return ResponseMsg.buildResponse(RegionConvert.regionResultBoToVo(regionResultBO));
+    }
+}

+ 133 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/convert/upms/OrganizationConvert.java

@@ -0,0 +1,133 @@
+package top.imwork.window.silos.convert.upms;
+
+import org.springframework.util.ObjectUtils;
+import top.imwork.window.silos.entity.upms.Organization;
+import top.imwork.window.silos.pojo.upms.bo.OrganizationBO;
+import top.imwork.window.silos.pojo.upms.bo.OrganizationResultBO;
+import top.imwork.window.silos.pojo.upms.dto.OrganizationListDTO;
+import top.imwork.window.silos.pojo.upms.po.OrganizationListParamVO;
+import top.imwork.window.silos.pojo.upms.po.OrganizationParamVO;
+import top.imwork.window.silos.pojo.upms.vo.OrganizationResultVO;
+import top.imwork.window.silos.pojo.upms.vo.OrganizationVO;
+import top.imwork.window.silos.pojo.upms.dto.OrganizationDTO;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 组织信息
+ * 实体转换
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:57:50
+ */
+public class OrganizationConvert {
+    private OrganizationConvert() {}
+
+    public static Organization organizationDtoToDo(OrganizationDTO organizationDTO) {
+        if (organizationDTO == null) {
+            return new Organization();
+        }
+        Organization organization = new Organization();
+        return organization;
+    }
+
+    public static OrganizationBO organizationDoToBo(Organization organization) {
+       if (organization == null) {
+           return new OrganizationBO();
+       }
+       OrganizationBO organizationBO = new OrganizationBO();
+       return organizationBO;
+    }
+
+    public static OrganizationDTO organizationParamVoToDto(OrganizationParamVO organizationParamVO) {
+        if (organizationParamVO == null) {
+            return new OrganizationDTO();
+        }
+        OrganizationDTO organizationDTO = new OrganizationDTO();
+        return organizationDTO;
+    }
+
+    public static List<OrganizationBO> organizationListToOrganizationBOList(List<Organization> records) {
+         if (ObjectUtils.isEmpty(records)) {
+             return new ArrayList<>();
+         }
+         List<OrganizationBO> organizationBOList = new ArrayList<>();
+         for (Organization organization : records) {
+             organizationBOList.add(organizationDoToBo(organization));
+         }
+         return organizationBOList;
+    }
+
+    public static OrganizationVO organizationBoToVo(OrganizationBO organizationBO) {
+         if (organizationBO == null) {
+         return new OrganizationVO();
+         }
+         OrganizationVO organizationVO = new OrganizationVO();
+         return organizationVO;
+    }
+
+    public static OrganizationListDTO organizationListParamVoToDTO(OrganizationListParamVO organizationListParamVO) {
+        if (organizationListParamVO == null) {
+            return new OrganizationListDTO();
+        }
+        OrganizationListDTO organizationListDTO = new OrganizationListDTO();
+        organizationListDTO.setOrganizationName(organizationListParamVO.getOrganizationName());
+        organizationListDTO.setPageNo(organizationListParamVO.getPageNo());
+        organizationListDTO.setPageRows(organizationListParamVO.getPageRows());
+        organizationListDTO.setDelFlag(organizationListParamVO.getDelFlag());
+        organizationListDTO.setCreator(organizationListParamVO.getCreator());
+        organizationListDTO.setCreateBeginTime(organizationListParamVO.getCreateBeginTime());
+        organizationListDTO.setCreateEndTime(organizationListParamVO.getCreateEndTime());
+        organizationListDTO.setModifier(organizationListParamVO.getModifier());
+        organizationListDTO.setUpdateBeginTime(organizationListParamVO.getUpdateBeginTime());
+        organizationListDTO.setUpdateEndTime(organizationListParamVO.getUpdateEndTime());
+        organizationListDTO.setRemark(organizationListParamVO.getRemark());
+        return organizationListDTO;
+    }
+        
+    public static OrganizationListParamVO organizationListParamDtoToVo(OrganizationListDTO organizationListDTO) {
+        if (organizationListDTO == null) {
+            return new OrganizationListParamVO();
+        }
+        OrganizationListParamVO organizationListParamVO = new OrganizationListParamVO();
+        organizationListParamVO.setOrganizationName(organizationListDTO.getOrganizationName());
+        organizationListParamVO.setPageNo(organizationListDTO.getPageNo());
+        organizationListParamVO.setPageRows(organizationListDTO.getPageRows());
+        organizationListParamVO.setDelFlag(organizationListDTO.getDelFlag());
+        organizationListParamVO.setCreator(organizationListDTO.getCreator());
+        organizationListParamVO.setCreateBeginTime(organizationListDTO.getCreateBeginTime());
+        organizationListParamVO.setCreateEndTime(organizationListDTO.getCreateEndTime());
+        organizationListParamVO.setModifier(organizationListDTO.getModifier());
+        organizationListParamVO.setUpdateBeginTime(organizationListDTO.getUpdateBeginTime());
+        organizationListParamVO.setUpdateEndTime(organizationListDTO.getUpdateEndTime());
+        organizationListParamVO.setRemark(organizationListDTO.getRemark());
+        return organizationListParamVO;
+    }
+
+    private static List<OrganizationVO> organizationBoListToOrganizationVoList(List<OrganizationBO> dataList) {
+        if (ObjectUtils.isEmpty(dataList)) {
+            return new ArrayList<>();
+        }
+        List<OrganizationVO> organizationVOList = new ArrayList<>();
+        for (OrganizationBO organizationBO : dataList) {
+             organizationVOList.add(organizationBoToVo(organizationBO));
+        }
+        return organizationVOList;
+    }
+
+    public static OrganizationResultVO organizationResultBoToVo(OrganizationResultBO organizationResultBO) {
+        if (organizationResultBO == null) {
+            return new OrganizationResultVO();
+        }
+        OrganizationResultVO organizationResultVO = new OrganizationResultVO();
+        organizationResultVO.setPageNo(organizationResultBO.getPageNo());
+        organizationResultVO.setPageRows(organizationResultBO.getPageRows());
+        organizationResultVO.setPageCount(organizationResultBO.getPageCount());
+        organizationResultVO.setTotalRows(organizationResultBO.getTotalRows());
+        organizationResultVO.setDataList(organizationBoListToOrganizationVoList(organizationResultBO.getDataList()));
+        organizationResultVO.setParams(organizationListParamDtoToVo(organizationResultBO.getParams()));
+        return organizationResultVO;
+    }
+}

+ 133 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/convert/upms/PermissionConvert.java

@@ -0,0 +1,133 @@
+package top.imwork.window.silos.convert.upms;
+
+import org.springframework.util.ObjectUtils;
+import top.imwork.window.silos.entity.upms.Permission;
+import top.imwork.window.silos.pojo.upms.bo.PermissionBO;
+import top.imwork.window.silos.pojo.upms.bo.PermissionResultBO;
+import top.imwork.window.silos.pojo.upms.dto.PermissionDTO;
+import top.imwork.window.silos.pojo.upms.dto.PermissionListDTO;
+import top.imwork.window.silos.pojo.upms.po.PermissionListParamVO;
+import top.imwork.window.silos.pojo.upms.po.PermissionParamVO;
+import top.imwork.window.silos.pojo.upms.vo.PermissionResultVO;
+import top.imwork.window.silos.pojo.upms.vo.PermissionVO;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 权限信息
+ * 实体转换
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:21:32
+ */
+public class PermissionConvert {
+    private PermissionConvert() {}
+
+    public static Permission permissionDtoToDo(PermissionDTO permissionDTO) {
+        if (permissionDTO == null) {
+            return new Permission();
+        }
+        Permission permission = new Permission();
+        return permission;
+    }
+
+    public static PermissionBO permissionDoToBo(Permission permission) {
+       if (permission == null) {
+           return new PermissionBO();
+       }
+       PermissionBO permissionBO = new PermissionBO();
+       return permissionBO;
+    }
+
+    public static PermissionDTO permissionParamVoToDto(PermissionParamVO permissionParamVO) {
+        if (permissionParamVO == null) {
+            return new PermissionDTO();
+        }
+        PermissionDTO permissionDTO = new PermissionDTO();
+        return permissionDTO;
+    }
+
+    public static List<PermissionBO> permissionListToPermissionBOList(List<Permission> records) {
+         if (ObjectUtils.isEmpty(records)) {
+             return new ArrayList<>();
+         }
+         List<PermissionBO> permissionBOList = new ArrayList<>();
+         for (Permission permission : records) {
+             permissionBOList.add(permissionDoToBo(permission));
+         }
+         return permissionBOList;
+    }
+
+    public static PermissionVO permissionBoToVo(PermissionBO permissionBO) {
+         if (permissionBO == null) {
+         return new PermissionVO();
+         }
+         PermissionVO permissionVO = new PermissionVO();
+         return permissionVO;
+    }
+
+    public static PermissionListDTO permissionListParamVoToDTO(PermissionListParamVO permissionListParamVO) {
+        if (permissionListParamVO == null) {
+            return new PermissionListDTO();
+        }
+        PermissionListDTO permissionListDTO = new PermissionListDTO();
+        permissionListDTO.setPermissionName(permissionListParamVO.getPermissionName());
+        permissionListDTO.setPageNo(permissionListParamVO.getPageNo());
+        permissionListDTO.setPageRows(permissionListParamVO.getPageRows());
+        permissionListDTO.setDelFlag(permissionListParamVO.getDelFlag());
+        permissionListDTO.setCreator(permissionListParamVO.getCreator());
+        permissionListDTO.setCreateBeginTime(permissionListParamVO.getCreateBeginTime());
+        permissionListDTO.setCreateEndTime(permissionListParamVO.getCreateEndTime());
+        permissionListDTO.setModifier(permissionListParamVO.getModifier());
+        permissionListDTO.setUpdateBeginTime(permissionListParamVO.getUpdateBeginTime());
+        permissionListDTO.setUpdateEndTime(permissionListParamVO.getUpdateEndTime());
+        permissionListDTO.setRemark(permissionListParamVO.getRemark());
+        return permissionListDTO;
+    }
+        
+    public static PermissionListParamVO permissionListParamDtoToVo(PermissionListDTO permissionListDTO) {
+        if (permissionListDTO == null) {
+            return new PermissionListParamVO();
+        }
+        PermissionListParamVO permissionListParamVO = new PermissionListParamVO();
+        permissionListParamVO.setPermissionName(permissionListDTO.getPermissionName());
+        permissionListParamVO.setPageNo(permissionListDTO.getPageNo());
+        permissionListParamVO.setPageRows(permissionListDTO.getPageRows());
+        permissionListParamVO.setDelFlag(permissionListDTO.getDelFlag());
+        permissionListParamVO.setCreator(permissionListDTO.getCreator());
+        permissionListParamVO.setCreateBeginTime(permissionListDTO.getCreateBeginTime());
+        permissionListParamVO.setCreateEndTime(permissionListDTO.getCreateEndTime());
+        permissionListParamVO.setModifier(permissionListDTO.getModifier());
+        permissionListParamVO.setUpdateBeginTime(permissionListDTO.getUpdateBeginTime());
+        permissionListParamVO.setUpdateEndTime(permissionListDTO.getUpdateEndTime());
+        permissionListParamVO.setRemark(permissionListDTO.getRemark());
+        return permissionListParamVO;
+    }
+
+    private static List<PermissionVO> permissionBoListToPermissionVoList(List<PermissionBO> dataList) {
+        if (ObjectUtils.isEmpty(dataList)) {
+            return new ArrayList<>();
+        }
+        List<PermissionVO> permissionVOList = new ArrayList<>();
+        for (PermissionBO permissionBO : dataList) {
+             permissionVOList.add(permissionBoToVo(permissionBO));
+        }
+        return permissionVOList;
+    }
+
+    public static PermissionResultVO permissionResultBoToVo(PermissionResultBO permissionResultBO) {
+        if (permissionResultBO == null) {
+            return new PermissionResultVO();
+        }
+        PermissionResultVO permissionResultVO = new PermissionResultVO();
+        permissionResultVO.setPageNo(permissionResultBO.getPageNo());
+        permissionResultVO.setPageRows(permissionResultBO.getPageRows());
+        permissionResultVO.setPageCount(permissionResultBO.getPageCount());
+        permissionResultVO.setTotalRows(permissionResultBO.getTotalRows());
+        permissionResultVO.setDataList(permissionBoListToPermissionVoList(permissionResultBO.getDataList()));
+        permissionResultVO.setParams(permissionListParamDtoToVo(permissionResultBO.getParams()));
+        return permissionResultVO;
+    }
+}

+ 133 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/convert/upms/RegionConvert.java

@@ -0,0 +1,133 @@
+package top.imwork.window.silos.convert.upms;
+
+import org.springframework.util.ObjectUtils;
+import top.imwork.window.silos.entity.upms.Region;
+import top.imwork.window.silos.pojo.upms.bo.RegionBO;
+import top.imwork.window.silos.pojo.upms.bo.RegionResultBO;
+import top.imwork.window.silos.pojo.upms.dto.RegionListDTO;
+import top.imwork.window.silos.pojo.upms.po.RegionListParamVO;
+import top.imwork.window.silos.pojo.upms.po.RegionParamVO;
+import top.imwork.window.silos.pojo.upms.vo.RegionResultVO;
+import top.imwork.window.silos.pojo.upms.vo.RegionVO;
+import top.imwork.window.silos.pojo.upms.dto.RegionDTO;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 地理信息
+ * 实体转换
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 13:37:18
+ */
+public class RegionConvert {
+    private RegionConvert() {}
+
+    public static Region regionDtoToDo(RegionDTO regionDTO) {
+        if (regionDTO == null) {
+            return new Region();
+        }
+        Region region = new Region();
+        return region;
+    }
+
+    public static RegionBO regionDoToBo(Region region) {
+       if (region == null) {
+           return new RegionBO();
+       }
+       RegionBO regionBO = new RegionBO();
+       return regionBO;
+    }
+
+    public static RegionDTO regionParamVoToDto(RegionParamVO regionParamVO) {
+        if (regionParamVO == null) {
+            return new RegionDTO();
+        }
+        RegionDTO regionDTO = new RegionDTO();
+        return regionDTO;
+    }
+
+    public static List<RegionBO> regionListToRegionBOList(List<Region> records) {
+         if (ObjectUtils.isEmpty(records)) {
+             return new ArrayList<>();
+         }
+         List<RegionBO> regionBOList = new ArrayList<>();
+         for (Region region : records) {
+             regionBOList.add(regionDoToBo(region));
+         }
+         return regionBOList;
+    }
+
+    public static RegionVO regionBoToVo(RegionBO regionBO) {
+         if (regionBO == null) {
+         return new RegionVO();
+         }
+         RegionVO regionVO = new RegionVO();
+         return regionVO;
+    }
+
+    public static RegionListDTO regionListParamVoToDTO(RegionListParamVO regionListParamVO) {
+        if (regionListParamVO == null) {
+            return new RegionListDTO();
+        }
+        RegionListDTO regionListDTO = new RegionListDTO();
+        regionListDTO.setRegionName(regionListParamVO.getRegionName());
+        regionListDTO.setPageNo(regionListParamVO.getPageNo());
+        regionListDTO.setPageRows(regionListParamVO.getPageRows());
+        regionListDTO.setDelFlag(regionListParamVO.getDelFlag());
+        regionListDTO.setCreator(regionListParamVO.getCreator());
+        regionListDTO.setCreateBeginTime(regionListParamVO.getCreateBeginTime());
+        regionListDTO.setCreateEndTime(regionListParamVO.getCreateEndTime());
+        regionListDTO.setModifier(regionListParamVO.getModifier());
+        regionListDTO.setUpdateBeginTime(regionListParamVO.getUpdateBeginTime());
+        regionListDTO.setUpdateEndTime(regionListParamVO.getUpdateEndTime());
+        regionListDTO.setRemark(regionListParamVO.getRemark());
+        return regionListDTO;
+    }
+        
+    public static RegionListParamVO regionListParamDtoToVo(RegionListDTO regionListDTO) {
+        if (regionListDTO == null) {
+            return new RegionListParamVO();
+        }
+        RegionListParamVO regionListParamVO = new RegionListParamVO();
+        regionListParamVO.setRegionName(regionListDTO.getRegionName());
+        regionListParamVO.setPageNo(regionListDTO.getPageNo());
+        regionListParamVO.setPageRows(regionListDTO.getPageRows());
+        regionListParamVO.setDelFlag(regionListDTO.getDelFlag());
+        regionListParamVO.setCreator(regionListDTO.getCreator());
+        regionListParamVO.setCreateBeginTime(regionListDTO.getCreateBeginTime());
+        regionListParamVO.setCreateEndTime(regionListDTO.getCreateEndTime());
+        regionListParamVO.setModifier(regionListDTO.getModifier());
+        regionListParamVO.setUpdateBeginTime(regionListDTO.getUpdateBeginTime());
+        regionListParamVO.setUpdateEndTime(regionListDTO.getUpdateEndTime());
+        regionListParamVO.setRemark(regionListDTO.getRemark());
+        return regionListParamVO;
+    }
+
+    private static List<RegionVO> regionBoListToRegionVoList(List<RegionBO> dataList) {
+        if (ObjectUtils.isEmpty(dataList)) {
+            return new ArrayList<>();
+        }
+        List<RegionVO> regionVOList = new ArrayList<>();
+        for (RegionBO regionBO : dataList) {
+             regionVOList.add(regionBoToVo(regionBO));
+        }
+        return regionVOList;
+    }
+
+    public static RegionResultVO regionResultBoToVo(RegionResultBO regionResultBO) {
+        if (regionResultBO == null) {
+            return new RegionResultVO();
+        }
+        RegionResultVO regionResultVO = new RegionResultVO();
+        regionResultVO.setPageNo(regionResultBO.getPageNo());
+        regionResultVO.setPageRows(regionResultBO.getPageRows());
+        regionResultVO.setPageCount(regionResultBO.getPageCount());
+        regionResultVO.setTotalRows(regionResultBO.getTotalRows());
+        regionResultVO.setDataList(regionBoListToRegionVoList(regionResultBO.getDataList()));
+        regionResultVO.setParams(regionListParamDtoToVo(regionResultBO.getParams()));
+        return regionResultVO;
+    }
+}

+ 14 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/dao/upms/OrganizationDao.java

@@ -0,0 +1,14 @@
+package top.imwork.window.silos.dao.upms;
+
+import top.imwork.commons.dao.base.BaseDao;
+import top.imwork.window.silos.entity.upms.Organization;
+
+/**
+ * 组织信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:57:50
+ */
+public interface OrganizationDao extends BaseDao<Organization> {
+}

+ 14 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/dao/upms/PermissionDao.java

@@ -0,0 +1,14 @@
+package top.imwork.window.silos.dao.upms;
+
+import top.imwork.commons.dao.base.BaseDao;
+import top.imwork.window.silos.entity.upms.Permission;
+
+/**
+ * 权限信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:21:32
+ */
+public interface PermissionDao extends BaseDao<Permission> {
+}

+ 14 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/dao/upms/RegionDao.java

@@ -0,0 +1,14 @@
+package top.imwork.window.silos.dao.upms;
+
+import top.imwork.commons.dao.base.BaseDao;
+import top.imwork.window.silos.entity.upms.Region;
+
+/**
+ * 地理信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 13:37:18
+ */
+public interface RegionDao extends BaseDao<Region> {
+}

+ 120 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/entity/upms/Organization.java

@@ -0,0 +1,120 @@
+package top.imwork.window.silos.entity.upms;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 组织信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:57:50
+ */
+@Data
+@TableName("sys_organization")
+public class Organization implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+    /**
+     * 
+     */
+    @TableId
+    private Long id;
+    /**
+     * 父级组织编号
+     */
+    private Long parentId;
+    /**
+     * 所有父级编号
+     */
+    private String parentIds;
+    /**
+     * 组织节点名称
+     */
+    private String orgName;
+    /**
+     * 组织简称
+     */
+    private String orgShortName;
+    /**
+     * 组织编码
+     */
+    private String orgCode;
+    /**
+     * 机构类型0行业1公益2非盈利3国际9国家
+     */
+    private String orgType;
+    /**
+     * 机构等级
+     */
+    private Integer orgGrade;
+    /**
+     * 组织路径
+     */
+    private String orgPath;
+    /**
+     * 组织初始归属区域
+     */
+    private Long orgAreaId;
+    /**
+     * 组织初始区域编码
+     */
+    private String orgAreaCode;
+    /**
+     * 组织图标-标志id
+     */
+    private Long orgIconsId;
+    /**
+     * 成立时间
+     */
+    private Date establishedDate;
+    /**
+     * 根叶节点标记(0根节点closed 1叶节点open)
+     */
+    private Integer orgState;
+    /**
+     * 组织状态(默认0正常 1删除 2受限操作)
+     */
+    private String orgStatus;
+    /**
+     * 系统层级状态的数学表述(默认0正常 1删除 2受限操作)
+     */
+    private Integer state;
+    /**
+     * 系统层级状态(默认0正常 1删除 2受限操作)
+     */
+    private String status;
+    /**
+     * 排序
+     */
+    private Long sort;
+    /**
+     * 是否删除默认0正常1删除
+     */
+    private String delFlag;
+    /**
+     * 创建人
+     */
+    private String creator;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人
+     */
+    private String modifier;
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 120 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/entity/upms/Permission.java

@@ -0,0 +1,120 @@
+package top.imwork.window.silos.entity.upms;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 权限信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:21:32
+ */
+@Data
+@TableName("sys_permission")
+public class Permission implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 授权码
+     */
+    private String authCode;
+    /**
+     * 授权名称
+     */
+    private String authName;
+    /**
+     * 授权类型
+     */
+    private String authType;
+    /**
+     * 授权级别
+     */
+    private Integer authLevel;
+    /**
+     * 父级权限id
+     */
+    private Long parentId;
+    /**
+     * 所有上级权限id
+     */
+    private String parentIds;
+    /**
+     * 父级权限名称
+     */
+    private String parentAuthName;
+    /**
+     * 权限标识符
+     */
+    private String privilegeCode;
+    /**
+     * 权限名称
+     */
+    private String privilegeName;
+    /**
+     * 权限类型
+     */
+    private String privilegeType;
+    /**
+     * 权限级别
+     */
+    private Integer privilegeLevel;
+    /**
+     * 权限图标 存储的是图标信息id
+     */
+    private Long privilegeIconsId;
+    /**
+     * 状态:默认0根节点closed 1叶节点open)
+     */
+    private Integer privilegeState;
+    /**
+     * (默认0正常 1删除 2受限操作)
+     */
+    private String privilegeStatus;
+    /**
+     * 排序
+     */
+    private Long sort;
+    /**
+     * 系统层级状态的数学表述(默认0正常 1删除 2受限操作)
+     */
+    private Integer state;
+    /**
+     * 系统层级状态(默认0正常 1删除 2受限操作)
+     */
+    private String status;
+    /**
+     * 是否删除默认0.未删除,1已删除
+     */
+    private String delFlag;
+    /**
+     * 创建人
+     */
+    private String creator;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人
+     */
+    private String modifier;
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 68 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/entity/upms/Region.java

@@ -0,0 +1,68 @@
+package top.imwork.window.silos.entity.upms;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 地理信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 13:37:18
+ */
+@Data
+@TableName("sys_region")
+public class Region implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+    /**
+     * 区域主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * 区域上级标识
+     */
+    private Long parentId;
+    /**
+     * 区域名称
+     */
+    private String regionName;
+    /**
+     * 区域名称拼音
+     */
+    private String regionNamePinyin;
+    /**
+     * 地名简称
+     */
+    private String regionShortName;
+    /**
+     * 区域完整名称
+     */
+    private String regionFullName;
+    /**
+     * 区域等级
+     */
+    private Integer regionLevel;
+    /**
+     * 区域编码
+     */
+    private String regionCode;
+    /**
+     * 邮政编码
+     */
+    private String postalCode;
+    /**
+     * 经度
+     */
+    private Double longitude;
+    /**
+     * 纬度
+     */
+    private Double latitude;
+}

+ 116 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/bo/OrganizationBO.java

@@ -0,0 +1,116 @@
+package top.imwork.window.silos.pojo.upms.bo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 组织信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:57:50
+ */
+@Data
+public class OrganizationBO implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+    /**
+     * 
+     */
+    private Long id;
+    /**
+     * 父级组织编号
+     */
+    private Long parentId;
+    /**
+     * 所有父级编号
+     */
+    private String parentIds;
+    /**
+     * 组织节点名称
+     */
+    private String orgName;
+    /**
+     * 组织简称
+     */
+    private String orgShortName;
+    /**
+     * 组织编码
+     */
+    private String orgCode;
+    /**
+     * 机构类型0行业1公益2非盈利3国际9国家
+     */
+    private String orgType;
+    /**
+     * 机构等级
+     */
+    private Integer orgGrade;
+    /**
+     * 组织路径
+     */
+    private String orgPath;
+    /**
+     * 组织初始归属区域
+     */
+    private Long orgAreaId;
+    /**
+     * 组织初始区域编码
+     */
+    private String orgAreaCode;
+    /**
+     * 组织图标-标志id
+     */
+    private Long orgIconsId;
+    /**
+     * 成立时间
+     */
+    private Date establishedDate;
+    /**
+     * 根叶节点标记(0根节点closed 1叶节点open)
+     */
+    private Integer orgState;
+    /**
+     * 组织状态(默认0正常 1删除 2受限操作)
+     */
+    private String orgStatus;
+    /**
+     * 系统层级状态的数学表述(默认0正常 1删除 2受限操作)
+     */
+    private Integer state;
+    /**
+     * 系统层级状态(默认0正常 1删除 2受限操作)
+     */
+    private String status;
+    /**
+     * 排序
+     */
+    private Long sort;
+    /**
+     * 是否删除默认0正常1删除
+     */
+    private String delFlag;
+    /**
+     * 创建人
+     */
+    private String creator;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人
+     */
+    private String modifier;
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 19 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/bo/OrganizationResultBO.java

@@ -0,0 +1,19 @@
+package top.imwork.window.silos.pojo.upms.bo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import top.imwork.commons.core.pojo.BaseResult;
+import top.imwork.window.silos.pojo.upms.dto.OrganizationListDTO;
+
+/**
+ * 组织信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:57:50
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class OrganizationResultBO extends BaseResult<OrganizationBO, OrganizationListDTO>{
+
+}

+ 116 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/bo/PermissionBO.java

@@ -0,0 +1,116 @@
+package top.imwork.window.silos.pojo.upms.bo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 权限信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 13:25:35
+ */
+@Data
+public class PermissionBO implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+    /**
+     * id
+     */
+    private Long id;
+    /**
+     * 授权码
+     */
+    private String authCode;
+    /**
+     * 授权名称
+     */
+    private String authName;
+    /**
+     * 授权类型
+     */
+    private String authType;
+    /**
+     * 授权级别
+     */
+    private Integer authLevel;
+    /**
+     * 父级权限id
+     */
+    private Long parentId;
+    /**
+     * 所有上级权限id
+     */
+    private String parentIds;
+    /**
+     * 父级权限名称
+     */
+    private String parentAuthName;
+    /**
+     * 权限标识符
+     */
+    private String privilegeCode;
+    /**
+     * 权限名称
+     */
+    private String privilegeName;
+    /**
+     * 权限类型
+     */
+    private String privilegeType;
+    /**
+     * 权限级别
+     */
+    private Integer privilegeLevel;
+    /**
+     * 权限图标 存储的是图标信息id
+     */
+    private Long privilegeIconsId;
+    /**
+     * 状态:默认0根节点closed 1叶节点open)
+     */
+    private Integer privilegeState;
+    /**
+     * (默认0正常 1删除 2受限操作)
+     */
+    private String privilegeStatus;
+    /**
+     * 排序
+     */
+    private Long sort;
+    /**
+     * 系统层级状态的数学表述(默认0正常 1删除 2受限操作)
+     */
+    private Integer state;
+    /**
+     * 系统层级状态(默认0正常 1删除 2受限操作)
+     */
+    private String status;
+    /**
+     * 是否删除默认0.未删除,1已删除
+     */
+    private String delFlag;
+    /**
+     * 创建人
+     */
+    private String creator;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人
+     */
+    private String modifier;
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 19 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/bo/PermissionResultBO.java

@@ -0,0 +1,19 @@
+package top.imwork.window.silos.pojo.upms.bo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import top.imwork.commons.core.pojo.BaseResult;
+import top.imwork.window.silos.pojo.upms.dto.PermissionListDTO;
+
+/**
+ * 权限信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:21:32
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class PermissionResultBO extends BaseResult<PermissionBO, PermissionListDTO> {
+
+}

+ 64 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/bo/RegionBO.java

@@ -0,0 +1,64 @@
+package top.imwork.window.silos.pojo.upms.bo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 地理信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 13:37:18
+ */
+@Data
+public class RegionBO implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+    /**
+     * 区域主键
+     */
+    private Long id;
+    /**
+     * 区域上级标识
+     */
+    private Long parentId;
+    /**
+     * 区域名称
+     */
+    private String regionName;
+    /**
+     * 区域名称拼音
+     */
+    private String regionNamePinyin;
+    /**
+     * 地名简称
+     */
+    private String regionShortName;
+    /**
+     * 区域完整名称
+     */
+    private String regionFullName;
+    /**
+     * 区域等级
+     */
+    private Integer regionLevel;
+    /**
+     * 区域编码
+     */
+    private String regionCode;
+    /**
+     * 邮政编码
+     */
+    private String postalCode;
+    /**
+     * 经度
+     */
+    private Double longitude;
+    /**
+     * 纬度
+     */
+    private Double latitude;
+}

+ 19 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/bo/RegionResultBO.java

@@ -0,0 +1,19 @@
+package top.imwork.window.silos.pojo.upms.bo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import top.imwork.commons.core.pojo.BaseResult;
+import top.imwork.window.silos.pojo.upms.dto.RegionListDTO;
+
+/**
+ * 地理信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 13:37:18
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class RegionResultBO extends BaseResult<RegionBO, RegionListDTO>{
+
+}

+ 116 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/dto/OrganizationDTO.java

@@ -0,0 +1,116 @@
+package top.imwork.window.silos.pojo.upms.dto;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 组织信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:57:50
+ */
+@Data
+public class OrganizationDTO implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+    /**
+     * 
+     */
+    private Long id;
+    /**
+     * 父级组织编号
+     */
+    private Long parentId;
+    /**
+     * 所有父级编号
+     */
+    private String parentIds;
+    /**
+     * 组织节点名称
+     */
+    private String orgName;
+    /**
+     * 组织简称
+     */
+    private String orgShortName;
+    /**
+     * 组织编码
+     */
+    private String orgCode;
+    /**
+     * 机构类型0行业1公益2非盈利3国际9国家
+     */
+    private String orgType;
+    /**
+     * 机构等级
+     */
+    private Integer orgGrade;
+    /**
+     * 组织路径
+     */
+    private String orgPath;
+    /**
+     * 组织初始归属区域
+     */
+    private Long orgAreaId;
+    /**
+     * 组织初始区域编码
+     */
+    private String orgAreaCode;
+    /**
+     * 组织图标-标志id
+     */
+    private Long orgIconsId;
+    /**
+     * 成立时间
+     */
+    private Date establishedDate;
+    /**
+     * 根叶节点标记(0根节点closed 1叶节点open)
+     */
+    private Integer orgState;
+    /**
+     * 组织状态(默认0正常 1删除 2受限操作)
+     */
+    private String orgStatus;
+    /**
+     * 系统层级状态的数学表述(默认0正常 1删除 2受限操作)
+     */
+    private Integer state;
+    /**
+     * 系统层级状态(默认0正常 1删除 2受限操作)
+     */
+    private String status;
+    /**
+     * 排序
+     */
+    private Long sort;
+    /**
+     * 是否删除默认0正常1删除
+     */
+    private String delFlag;
+    /**
+     * 创建人
+     */
+    private String creator;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人
+     */
+    private String modifier;
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 18 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/dto/OrganizationListDTO.java

@@ -0,0 +1,18 @@
+package top.imwork.window.silos.pojo.upms.dto;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import top.imwork.commons.core.pojo.BaseParams;
+
+/**
+ * 组织信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:57:50
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class OrganizationListDTO extends BaseParams {
+    private String organizationName;
+}

+ 116 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/dto/PermissionDTO.java

@@ -0,0 +1,116 @@
+package top.imwork.window.silos.pojo.upms.dto;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 权限信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:21:32
+ */
+@Data
+public class PermissionDTO implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+    /**
+     * id
+     */
+    private Long id;
+    /**
+     * 授权码
+     */
+    private String authCode;
+    /**
+     * 授权名称
+     */
+    private String authName;
+    /**
+     * 授权类型
+     */
+    private String authType;
+    /**
+     * 授权级别
+     */
+    private Integer authLevel;
+    /**
+     * 父级权限id
+     */
+    private Long parentId;
+    /**
+     * 所有上级权限id
+     */
+    private String parentIds;
+    /**
+     * 父级权限名称
+     */
+    private String parentAuthName;
+    /**
+     * 权限标识符
+     */
+    private String privilegeCode;
+    /**
+     * 权限名称
+     */
+    private String privilegeName;
+    /**
+     * 权限类型
+     */
+    private String privilegeType;
+    /**
+     * 权限级别
+     */
+    private Integer privilegeLevel;
+    /**
+     * 权限图标 存储的是图标信息id
+     */
+    private Long privilegeIconsId;
+    /**
+     * 状态:默认0根节点closed 1叶节点open)
+     */
+    private Integer privilegeState;
+    /**
+     * (默认0正常 1删除 2受限操作)
+     */
+    private String privilegeStatus;
+    /**
+     * 排序
+     */
+    private Long sort;
+    /**
+     * 系统层级状态的数学表述(默认0正常 1删除 2受限操作)
+     */
+    private Integer state;
+    /**
+     * 系统层级状态(默认0正常 1删除 2受限操作)
+     */
+    private String status;
+    /**
+     * 是否删除默认0.未删除,1已删除
+     */
+    private String delFlag;
+    /**
+     * 创建人
+     */
+    private String creator;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人
+     */
+    private String modifier;
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 18 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/dto/PermissionListDTO.java

@@ -0,0 +1,18 @@
+package top.imwork.window.silos.pojo.upms.dto;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import top.imwork.commons.core.pojo.BaseParams;
+
+/**
+ * 权限信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:21:32
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class PermissionListDTO extends BaseParams {
+    private String permissionName;
+}

+ 64 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/dto/RegionDTO.java

@@ -0,0 +1,64 @@
+package top.imwork.window.silos.pojo.upms.dto;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 地理信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 13:37:18
+ */
+@Data
+public class RegionDTO implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+    /**
+     * 区域主键
+     */
+    private Long id;
+    /**
+     * 区域上级标识
+     */
+    private Long parentId;
+    /**
+     * 区域名称
+     */
+    private String regionName;
+    /**
+     * 区域名称拼音
+     */
+    private String regionNamePinyin;
+    /**
+     * 地名简称
+     */
+    private String regionShortName;
+    /**
+     * 区域完整名称
+     */
+    private String regionFullName;
+    /**
+     * 区域等级
+     */
+    private Integer regionLevel;
+    /**
+     * 区域编码
+     */
+    private String regionCode;
+    /**
+     * 邮政编码
+     */
+    private String postalCode;
+    /**
+     * 经度
+     */
+    private Double longitude;
+    /**
+     * 纬度
+     */
+    private Double latitude;
+}

+ 18 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/dto/RegionListDTO.java

@@ -0,0 +1,18 @@
+package top.imwork.window.silos.pojo.upms.dto;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import top.imwork.commons.core.pojo.BaseParams;
+
+/**
+ * 地理信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 13:37:18
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class RegionListDTO extends BaseParams {
+    private String regionName;
+}

+ 18 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/po/OrganizationListParamVO.java

@@ -0,0 +1,18 @@
+package top.imwork.window.silos.pojo.upms.po;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import top.imwork.commons.core.pojo.BaseParams;
+
+/**
+ * 组织信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:57:50
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class OrganizationListParamVO extends BaseParams {
+    private String OrganizationName;
+}

+ 116 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/po/OrganizationParamVO.java

@@ -0,0 +1,116 @@
+package top.imwork.window.silos.pojo.upms.po;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 组织信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:57:50
+ */
+@Data
+public class OrganizationParamVO implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+    /**
+     * 
+     */
+    private Long id;
+    /**
+     * 父级组织编号
+     */
+    private Long parentId;
+    /**
+     * 所有父级编号
+     */
+    private String parentIds;
+    /**
+     * 组织节点名称
+     */
+    private String orgName;
+    /**
+     * 组织简称
+     */
+    private String orgShortName;
+    /**
+     * 组织编码
+     */
+    private String orgCode;
+    /**
+     * 机构类型0行业1公益2非盈利3国际9国家
+     */
+    private String orgType;
+    /**
+     * 机构等级
+     */
+    private Integer orgGrade;
+    /**
+     * 组织路径
+     */
+    private String orgPath;
+    /**
+     * 组织初始归属区域
+     */
+    private Long orgAreaId;
+    /**
+     * 组织初始区域编码
+     */
+    private String orgAreaCode;
+    /**
+     * 组织图标-标志id
+     */
+    private Long orgIconsId;
+    /**
+     * 成立时间
+     */
+    private Date establishedDate;
+    /**
+     * 根叶节点标记(0根节点closed 1叶节点open)
+     */
+    private Integer orgState;
+    /**
+     * 组织状态(默认0正常 1删除 2受限操作)
+     */
+    private String orgStatus;
+    /**
+     * 系统层级状态的数学表述(默认0正常 1删除 2受限操作)
+     */
+    private Integer state;
+    /**
+     * 系统层级状态(默认0正常 1删除 2受限操作)
+     */
+    private String status;
+    /**
+     * 排序
+     */
+    private Long sort;
+    /**
+     * 是否删除默认0正常1删除
+     */
+    private String delFlag;
+    /**
+     * 创建人
+     */
+    private String creator;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人
+     */
+    private String modifier;
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 18 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/po/PermissionListParamVO.java

@@ -0,0 +1,18 @@
+package top.imwork.window.silos.pojo.upms.po;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import top.imwork.commons.core.pojo.BaseParams;
+
+/**
+ * 权限信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:21:32
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class PermissionListParamVO extends BaseParams {
+    private String PermissionName;
+}

+ 116 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/po/PermissionParamVO.java

@@ -0,0 +1,116 @@
+package top.imwork.window.silos.pojo.upms.po;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 权限信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:21:32
+ */
+@Data
+public class PermissionParamVO implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+    /**
+     * id
+     */
+    private Long id;
+    /**
+     * 授权码
+     */
+    private String authCode;
+    /**
+     * 授权名称
+     */
+    private String authName;
+    /**
+     * 授权类型
+     */
+    private String authType;
+    /**
+     * 授权级别
+     */
+    private Integer authLevel;
+    /**
+     * 父级权限id
+     */
+    private Long parentId;
+    /**
+     * 所有上级权限id
+     */
+    private String parentIds;
+    /**
+     * 父级权限名称
+     */
+    private String parentAuthName;
+    /**
+     * 权限标识符
+     */
+    private String privilegeCode;
+    /**
+     * 权限名称
+     */
+    private String privilegeName;
+    /**
+     * 权限类型
+     */
+    private String privilegeType;
+    /**
+     * 权限级别
+     */
+    private Integer privilegeLevel;
+    /**
+     * 权限图标 存储的是图标信息id
+     */
+    private Long privilegeIconsId;
+    /**
+     * 状态:默认0根节点closed 1叶节点open)
+     */
+    private Integer privilegeState;
+    /**
+     * (默认0正常 1删除 2受限操作)
+     */
+    private String privilegeStatus;
+    /**
+     * 排序
+     */
+    private Long sort;
+    /**
+     * 系统层级状态的数学表述(默认0正常 1删除 2受限操作)
+     */
+    private Integer state;
+    /**
+     * 系统层级状态(默认0正常 1删除 2受限操作)
+     */
+    private String status;
+    /**
+     * 是否删除默认0.未删除,1已删除
+     */
+    private String delFlag;
+    /**
+     * 创建人
+     */
+    private String creator;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人
+     */
+    private String modifier;
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 18 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/po/RegionListParamVO.java

@@ -0,0 +1,18 @@
+package top.imwork.window.silos.pojo.upms.po;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import top.imwork.commons.core.pojo.BaseParams;
+
+/**
+ * 地理信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 13:37:18
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class RegionListParamVO extends BaseParams {
+    private String RegionName;
+}

+ 64 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/po/RegionParamVO.java

@@ -0,0 +1,64 @@
+package top.imwork.window.silos.pojo.upms.po;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 地理信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 13:37:18
+ */
+@Data
+public class RegionParamVO implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 1L;
+    /**
+     * 区域主键
+     */
+    private Long id;
+    /**
+     * 区域上级标识
+     */
+    private Long parentId;
+    /**
+     * 区域名称
+     */
+    private String regionName;
+    /**
+     * 区域名称拼音
+     */
+    private String regionNamePinyin;
+    /**
+     * 地名简称
+     */
+    private String regionShortName;
+    /**
+     * 区域完整名称
+     */
+    private String regionFullName;
+    /**
+     * 区域等级
+     */
+    private Integer regionLevel;
+    /**
+     * 区域编码
+     */
+    private String regionCode;
+    /**
+     * 邮政编码
+     */
+    private String postalCode;
+    /**
+     * 经度
+     */
+    private Double longitude;
+    /**
+     * 纬度
+     */
+    private Double latitude;
+}

+ 19 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/vo/OrganizationResultVO.java

@@ -0,0 +1,19 @@
+package top.imwork.window.silos.pojo.upms.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import top.imwork.commons.core.pojo.BaseResult;
+import top.imwork.window.silos.pojo.upms.po.OrganizationListParamVO;
+
+/**
+ * 组织信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:57:50
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class OrganizationResultVO extends BaseResult<OrganizationVO, OrganizationListParamVO>{
+
+}

+ 117 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/vo/OrganizationVO.java

@@ -0,0 +1,117 @@
+package top.imwork.window.silos.pojo.upms.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *〈功能简述〉
+ * 组织信息响应消息体
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:57:50
+ */
+@Data
+public class OrganizationVO implements Serializable{
+    @Serial
+    private static final long serialVersionUID = 1L;
+    /**
+     * 
+     */
+    private Long id;
+    /**
+     * 父级组织编号
+     */
+    private Long parentId;
+    /**
+     * 所有父级编号
+     */
+    private String parentIds;
+    /**
+     * 组织节点名称
+     */
+    private String orgName;
+    /**
+     * 组织简称
+     */
+    private String orgShortName;
+    /**
+     * 组织编码
+     */
+    private String orgCode;
+    /**
+     * 机构类型0行业1公益2非盈利3国际9国家
+     */
+    private String orgType;
+    /**
+     * 机构等级
+     */
+    private Integer orgGrade;
+    /**
+     * 组织路径
+     */
+    private String orgPath;
+    /**
+     * 组织初始归属区域
+     */
+    private Long orgAreaId;
+    /**
+     * 组织初始区域编码
+     */
+    private String orgAreaCode;
+    /**
+     * 组织图标-标志id
+     */
+    private Long orgIconsId;
+    /**
+     * 成立时间
+     */
+    private Date establishedDate;
+    /**
+     * 根叶节点标记(0根节点closed 1叶节点open)
+     */
+    private Integer orgState;
+    /**
+     * 组织状态(默认0正常 1删除 2受限操作)
+     */
+    private String orgStatus;
+    /**
+     * 系统层级状态的数学表述(默认0正常 1删除 2受限操作)
+     */
+    private Integer state;
+    /**
+     * 系统层级状态(默认0正常 1删除 2受限操作)
+     */
+    private String status;
+    /**
+     * 排序
+     */
+    private Long sort;
+    /**
+     * 是否删除默认0正常1删除
+     */
+    private String delFlag;
+    /**
+     * 创建人
+     */
+    private String creator;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人
+     */
+    private String modifier;
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 19 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/vo/PermissionResultVO.java

@@ -0,0 +1,19 @@
+package top.imwork.window.silos.pojo.upms.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import top.imwork.commons.core.pojo.BaseResult;
+import top.imwork.window.silos.pojo.upms.po.PermissionListParamVO;
+
+/**
+ * 权限信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:21:32
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class PermissionResultVO extends BaseResult<PermissionVO, PermissionListParamVO> {
+
+}

+ 117 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/vo/PermissionVO.java

@@ -0,0 +1,117 @@
+package top.imwork.window.silos.pojo.upms.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *〈功能简述〉
+ * 权限信息响应消息体
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:21:32
+ */
+@Data
+public class PermissionVO implements Serializable{
+    @Serial
+    private static final long serialVersionUID = 1L;
+    /**
+     * id
+     */
+    private Long id;
+    /**
+     * 授权码
+     */
+    private String authCode;
+    /**
+     * 授权名称
+     */
+    private String authName;
+    /**
+     * 授权类型
+     */
+    private String authType;
+    /**
+     * 授权级别
+     */
+    private Integer authLevel;
+    /**
+     * 父级权限id
+     */
+    private Long parentId;
+    /**
+     * 所有上级权限id
+     */
+    private String parentIds;
+    /**
+     * 父级权限名称
+     */
+    private String parentAuthName;
+    /**
+     * 权限标识符
+     */
+    private String privilegeCode;
+    /**
+     * 权限名称
+     */
+    private String privilegeName;
+    /**
+     * 权限类型
+     */
+    private String privilegeType;
+    /**
+     * 权限级别
+     */
+    private Integer privilegeLevel;
+    /**
+     * 权限图标 存储的是图标信息id
+     */
+    private Long privilegeIconsId;
+    /**
+     * 状态:默认0根节点closed 1叶节点open)
+     */
+    private Integer privilegeState;
+    /**
+     * (默认0正常 1删除 2受限操作)
+     */
+    private String privilegeStatus;
+    /**
+     * 排序
+     */
+    private Long sort;
+    /**
+     * 系统层级状态的数学表述(默认0正常 1删除 2受限操作)
+     */
+    private Integer state;
+    /**
+     * 系统层级状态(默认0正常 1删除 2受限操作)
+     */
+    private String status;
+    /**
+     * 是否删除默认0.未删除,1已删除
+     */
+    private String delFlag;
+    /**
+     * 创建人
+     */
+    private String creator;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人
+     */
+    private String modifier;
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 19 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/vo/RegionResultVO.java

@@ -0,0 +1,19 @@
+package top.imwork.window.silos.pojo.upms.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import top.imwork.commons.core.pojo.BaseResult;
+import top.imwork.window.silos.pojo.upms.po.RegionListParamVO;
+
+/**
+ * 地理信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 13:37:18
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class RegionResultVO extends BaseResult<RegionVO, RegionListParamVO>{
+
+}

+ 65 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/pojo/upms/vo/RegionVO.java

@@ -0,0 +1,65 @@
+package top.imwork.window.silos.pojo.upms.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *〈功能简述〉
+ * 地理信息响应消息体
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 13:37:18
+ */
+@Data
+public class RegionVO implements Serializable{
+    @Serial
+    private static final long serialVersionUID = 1L;
+    /**
+     * 区域主键
+     */
+    private Long id;
+    /**
+     * 区域上级标识
+     */
+    private Long parentId;
+    /**
+     * 区域名称
+     */
+    private String regionName;
+    /**
+     * 区域名称拼音
+     */
+    private String regionNamePinyin;
+    /**
+     * 地名简称
+     */
+    private String regionShortName;
+    /**
+     * 区域完整名称
+     */
+    private String regionFullName;
+    /**
+     * 区域等级
+     */
+    private Integer regionLevel;
+    /**
+     * 区域编码
+     */
+    private String regionCode;
+    /**
+     * 邮政编码
+     */
+    private String postalCode;
+    /**
+     * 经度
+     */
+    private Double longitude;
+    /**
+     * 纬度
+     */
+    private Double latitude;
+}

+ 15 - 15
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/service/GeneratorService.java

@@ -232,12 +232,12 @@ public class GeneratorService {
         String packagePath = "main" + File.separator + "java" + File.separator;
         String apiPath = "main" + File.separator + "java" + File.separator;
         if (StringUtils.isNotBlank(packageName)) {
-            packagePath += packageName.replace(".", File.separator) + File.separator + moduleName + File.separator;
+            packagePath += packageName.replace(".", File.separator) + File.separator;
             apiPath += packageName.replace(".", File.separator) + File.separator;
         }
 
         if (template.equals("Entity.ftl")) {
-            return packagePath + "entity" + File.separator + className + ".java";
+            return packagePath + "entity" + File.separator + moduleName + File.separator + className + ".java";
         }
 
         if (template.equals("Dao.xml.ftl")) {
@@ -245,15 +245,15 @@ public class GeneratorService {
         }
 
         if (template.equals("Dao.ftl")) {
-            return packagePath + "dao" + File.separator + className + "Dao.java";
+            return packagePath + "dao" + File.separator + moduleName + File.separator + className + "Dao.java";
         }
 
         if (template.equals("Service.ftl")) {
-            return packagePath + "service" + File.separator + "I" + className + "Service.java";
+            return packagePath + "service" + File.separator + moduleName + File.separator + "I" + className + "Service.java";
         }
 
         if (template.equals("ServiceImpl.ftl")) {
-            return packagePath + "service" + File.separator + "impl" + File.separator + className + "ServiceImpl.java";
+            return packagePath + "service" + File.separator + moduleName + File.separator + "impl" + File.separator + className + "ServiceImpl.java";
         }
 
         /*if (template.contains("Controller.ftl")) {
@@ -261,7 +261,7 @@ public class GeneratorService {
         }*/
 
         if (template.equals("ServiceController.ftl")) {
-            return packagePath + "controller" + File.separator + className + "ServiceController.java";
+            return packagePath + "controller" + File.separator + moduleName + File.separator + className + "ServiceController.java";
         }
 
         if (template.equals("API.ftl")) {
@@ -277,39 +277,39 @@ public class GeneratorService {
         }
 
         if (template.equals("VO.ftl")) {
-            return packagePath + File.separator + "pojo" + File.separator + "vo" + File.separator + className + "VO.java";
+            return packagePath + File.separator + "pojo" + File.separator + moduleName + File.separator + "vo" + File.separator + className + "VO.java";
         }
 
         if (template.equals("ResultBO.ftl")) {
-            return packagePath + File.separator + "pojo" + File.separator + "bo" + File.separator + className + "ResultBO.java";
+            return packagePath + File.separator + "pojo" + File.separator + moduleName + File.separator + "bo" + File.separator + className + "ResultBO.java";
         }
 
         if (template.equals("BO.ftl")) {
-            return packagePath + File.separator + "pojo" + File.separator + "bo" + File.separator + className + "BO.java";
+            return packagePath + File.separator + "pojo" + File.separator + moduleName + File.separator + "bo" + File.separator + className + "BO.java";
         }
 
         if (template.equals("DTO.ftl")) {
-            return packagePath + File.separator + "pojo" + File.separator + "dto" + File.separator + className + "DTO.java";
+            return packagePath + File.separator + "pojo" + File.separator + moduleName + File.separator + "dto" + File.separator + className + "DTO.java";
         }
 
         if (template.equals("ListDTO.ftl")) {
-            return packagePath + File.separator + "pojo" + File.separator + "dto" + File.separator + className + "ListDTO.java";
+            return packagePath + File.separator + "pojo" + File.separator + moduleName + File.separator + "dto" + File.separator + className + "ListDTO.java";
         }
 
         if (template.equals("ListParamVO.ftl")) {
-            return packagePath + File.separator + "pojo" + File.separator + "po" + File.separator + className + "ListParamVO.java";
+            return packagePath + File.separator + "pojo" + File.separator + moduleName + File.separator + "po" + File.separator + className + "ListParamVO.java";
         }
 
         if (template.equals("ParamVO.ftl")) {
-            return packagePath + File.separator + "pojo" + File.separator + "po" + File.separator + className + "ParamVO.java";
+            return packagePath + File.separator + "pojo" + File.separator + moduleName + File.separator + "po" + File.separator + className + "ParamVO.java";
         }
 
         if (template.equals("ResultVO.ftl")) {
-            return packagePath + File.separator + "pojo" + File.separator + "vo" + File.separator + className + "ResultVO.java";
+            return packagePath + File.separator + "pojo" + File.separator + moduleName + File.separator + "vo" + File.separator + className + "ResultVO.java";
         }
 
         if (template.equals("Convert.ftl")) {
-            return packagePath + File.separator + "convert" + File.separator + className + "Convert.java";
+            return packagePath + File.separator + "convert" + File.separator + moduleName + File.separator + className + "Convert.java";
         }
 
         /*if (template.contains("menu.sql.ftl" )) {

+ 52 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/service/upms/IOrganizationService.java

@@ -0,0 +1,52 @@
+package top.imwork.window.silos.service.upms;
+
+import top.imwork.window.silos.pojo.upms.bo.OrganizationBO;
+import top.imwork.window.silos.pojo.upms.bo.OrganizationResultBO;
+import top.imwork.window.silos.pojo.upms.dto.OrganizationListDTO;
+import top.imwork.window.silos.pojo.upms.dto.OrganizationDTO;
+
+/**
+ * 组织信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:57:50
+ */
+public interface IOrganizationService{
+
+    /**
+     * 根据组织信息id获取组织信息详情
+     * @param id 组织信息id
+     * @return OrganizationBO 组织信息详情
+     */
+    OrganizationBO info(Long id);
+
+    /**
+     * 新增/修改 信息
+     * @param organizationDTO 要保存的信息
+     * @return OrganizationBO 保存后的信息
+     */
+    OrganizationBO save(OrganizationDTO organizationDTO);
+
+    /**
+     * 根据id删除信息
+     * @param id id
+     * @return true/false 是否删除成功
+     */
+    Boolean delete(Long id);
+
+    /**
+     * 根据ids删除信息
+     * @param ids ids
+     * @return true/false 是否删除成功
+     */
+    Boolean deleteByIds(String[] ids);
+
+    /**
+     * 分页查询信息
+     * @param organizationListDTO 分页信息
+     * @return OrganizationResultBO 查询结果
+     */
+    OrganizationResultBO queryPage(OrganizationListDTO organizationListDTO);
+}
+

+ 53 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/service/upms/IPermissionService.java

@@ -0,0 +1,53 @@
+package top.imwork.window.silos.service.upms;
+
+
+import top.imwork.window.silos.pojo.upms.bo.PermissionBO;
+import top.imwork.window.silos.pojo.upms.bo.PermissionResultBO;
+import top.imwork.window.silos.pojo.upms.dto.PermissionDTO;
+import top.imwork.window.silos.pojo.upms.dto.PermissionListDTO;
+
+/**
+ * 权限信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 12:21:32
+ */
+public interface IPermissionService{
+
+    /**
+     * 根据权限信息id获取权限信息详情
+     * @param id 权限信息id
+     * @return PermissionBO 权限信息详情
+     */
+    PermissionBO info(Long id);
+
+    /**
+     * 新增/修改 信息
+     * @param permissionDTO 要保存的信息
+     * @return PermissionBO 保存后的信息
+     */
+    PermissionBO save(PermissionDTO permissionDTO);
+
+    /**
+     * 根据id删除信息
+     * @param id id
+     * @return true/false 是否删除成功
+     */
+    Boolean delete(Long id);
+
+    /**
+     * 根据ids删除信息
+     * @param ids ids
+     * @return true/false 是否删除成功
+     */
+    Boolean deleteByIds(String[] ids);
+
+    /**
+     * 分页查询信息
+     * @param permissionListDTO 分页信息
+     * @return PermissionResultBO 查询结果
+     */
+    PermissionResultBO queryPage(PermissionListDTO permissionListDTO);
+}
+

+ 52 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/service/upms/IRegionService.java

@@ -0,0 +1,52 @@
+package top.imwork.window.silos.service.upms;
+
+import top.imwork.window.silos.pojo.upms.bo.RegionBO;
+import top.imwork.window.silos.pojo.upms.bo.RegionResultBO;
+import top.imwork.window.silos.pojo.upms.dto.RegionListDTO;
+import top.imwork.window.silos.pojo.upms.dto.RegionDTO;
+
+/**
+ * 地理信息
+ *
+ * @author jiangxiaowei
+ * email: e-jiangxiaowei@outlook.com
+ * date: 2025-12-11 13:37:18
+ */
+public interface IRegionService{
+
+    /**
+     * 根据地理信息id获取地理信息详情
+     * @param id 地理信息id
+     * @return RegionBO 地理信息详情
+     */
+    RegionBO info(Long id);
+
+    /**
+     * 新增/修改 信息
+     * @param regionDTO 要保存的信息
+     * @return RegionBO 保存后的信息
+     */
+    RegionBO save(RegionDTO regionDTO);
+
+    /**
+     * 根据id删除信息
+     * @param id id
+     * @return true/false 是否删除成功
+     */
+    Boolean delete(Long id);
+
+    /**
+     * 根据ids删除信息
+     * @param ids ids
+     * @return true/false 是否删除成功
+     */
+    Boolean deleteByIds(String[] ids);
+
+    /**
+     * 分页查询信息
+     * @param regionListDTO 分页信息
+     * @return RegionResultBO 查询结果
+     */
+    RegionResultBO queryPage(RegionListDTO regionListDTO);
+}
+

+ 106 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/service/upms/impl/OrganizationServiceImpl.java

@@ -0,0 +1,106 @@
+package top.imwork.window.silos.service.upms.impl;
+
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+import jakarta.annotation.Resource;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import top.imwork.commons.core.utils.StringUtils;
+import top.imwork.window.silos.dao.upms.OrganizationDao;
+import top.imwork.window.silos.entity.upms.Organization;
+import top.imwork.window.silos.pojo.upms.bo.OrganizationBO;
+import top.imwork.window.silos.pojo.upms.bo.OrganizationResultBO;
+import top.imwork.window.silos.pojo.upms.dto.OrganizationDTO;
+import top.imwork.window.silos.pojo.upms.dto.OrganizationListDTO;
+import top.imwork.window.silos.service.upms.IOrganizationService;
+import top.imwork.window.silos.convert.upms.OrganizationConvert;
+
+@Service("organizationService")
+public class OrganizationServiceImpl extends ServiceImpl<OrganizationDao,Organization> implements IOrganizationService {
+    @Resource
+    private OrganizationDao organizationDao;
+
+    /**
+     * 根据id获取信息
+     * @param id 用户id
+     * @return OrganizationBO 响应信息
+     */
+    @Override
+    public OrganizationBO info(Long id) {
+        Organization organization = organizationDao.info(id);
+        return OrganizationConvert.organizationDoToBo(organization);
+    }
+
+    /**
+     * 新增/更新信息
+     * @param organizationDTO 信息
+     * @return organizationBO 更新后信息
+     */
+    @Override
+    public OrganizationBO save(OrganizationDTO organizationDTO) {
+        Organization organization = OrganizationConvert.organizationDtoToDo(organizationDTO);
+        if (ObjectUtils.isEmpty(organization.getId())) {
+            organizationDao.insert(organization);
+        } else {
+            organizationDao.updateById(organization);
+        }
+        return OrganizationConvert.organizationDoToBo(organization);
+    }
+
+    /**
+     * 根据id删除信息
+     * @param id id
+     * @return true/false 是否删除成功
+     */
+    @Override
+    public Boolean delete(Long id) {
+        return organizationDao.deleteById(id) == 1 ? Boolean.TRUE : Boolean.FALSE;
+    }
+
+    @Override
+    public Boolean deleteByIds(String[] ids) {
+        return organizationDao.deleteByIds(ids) > 0 ? Boolean.TRUE : Boolean.FALSE;
+    }
+
+    @Override
+    public OrganizationResultBO queryPage(OrganizationListDTO organizationListDTO) {
+        QueryWrapper<Organization> queryWrapper = new QueryWrapper<>();
+
+        if (!StringUtils.isEmpty(organizationListDTO.getOrganizationName())) {
+            queryWrapper.like("organization_name", organizationListDTO.getOrganizationName());
+        }
+
+        if (!StringUtils.isEmpty(organizationListDTO.getCreateBeginTime())) {
+            queryWrapper.apply("create_time >= '" + organizationListDTO.getCreateBeginTime() + "'");
+        }
+
+        if (!StringUtils.isEmpty(organizationListDTO.getCreateEndTime())) {
+            queryWrapper.apply("create_time <= '" + organizationListDTO.getCreateEndTime() + "'");
+        }
+
+        if (!StringUtils.isEmpty(organizationListDTO.getUpdateBeginTime())) {
+            queryWrapper.apply("update_time >= '" + organizationListDTO.getUpdateBeginTime() + "'");
+        }
+
+        if (!StringUtils.isEmpty(organizationListDTO.getUpdateEndTime())) {
+            queryWrapper.apply("update_time <= '" + organizationListDTO.getUpdateEndTime() + "'");
+        }
+
+        Page<Organization> page = new Page<>(organizationListDTO.getPageNo(), organizationListDTO.getPageRows());
+        IPage<Organization> iPage = organizationDao.queryPage(page, queryWrapper);
+
+        OrganizationResultBO resultBO = new OrganizationResultBO();
+        resultBO.setPageNo(organizationListDTO.getPageNo());
+        resultBO.setPageRows(organizationListDTO.getPageRows());
+        resultBO.setPageCount((int) iPage.getPages());
+        resultBO.setTotalRows((int) iPage.getTotal());
+        resultBO.setDataList(OrganizationConvert.organizationListToOrganizationBOList(iPage.getRecords()));
+        resultBO.setParams(organizationListDTO);
+
+        return resultBO;
+    }
+}

+ 106 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/service/upms/impl/PermissionServiceImpl.java

@@ -0,0 +1,106 @@
+package top.imwork.window.silos.service.upms.impl;
+
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+import jakarta.annotation.Resource;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import top.imwork.commons.core.utils.StringUtils;
+import top.imwork.window.silos.convert.upms.PermissionConvert;
+import top.imwork.window.silos.dao.upms.PermissionDao;
+import top.imwork.window.silos.entity.upms.Permission;
+import top.imwork.window.silos.pojo.upms.bo.PermissionBO;
+import top.imwork.window.silos.pojo.upms.bo.PermissionResultBO;
+import top.imwork.window.silos.pojo.upms.dto.PermissionDTO;
+import top.imwork.window.silos.pojo.upms.dto.PermissionListDTO;
+import top.imwork.window.silos.service.upms.IPermissionService;
+
+
+@Service("permissionService")
+public class PermissionServiceImpl extends ServiceImpl<PermissionDao, Permission> implements IPermissionService {
+    @Resource
+    private PermissionDao permissionDao;
+
+    /**
+     * 根据id获取信息
+     * @param id 用户id
+     * @return PermissionBO 响应信息
+     */
+    @Override
+    public PermissionBO info(Long id) {
+        Permission permission = permissionDao.info(id);
+        return PermissionConvert.permissionDoToBo(permission);
+    }
+
+    /**
+     * 新增/更新信息
+     * @param permissionDTO 信息
+     * @return permissionBO 更新后信息
+     */
+    @Override
+    public PermissionBO save(PermissionDTO permissionDTO) {
+        Permission permission = PermissionConvert.permissionDtoToDo(permissionDTO);
+        if (ObjectUtils.isEmpty(permission.getId())) {
+            permissionDao.insert(permission);
+        } else {
+            permissionDao.updateById(permission);
+        }
+        return PermissionConvert.permissionDoToBo(permission);
+    }
+
+    /**
+     * 根据id删除信息
+     * @param id id
+     * @return true/false 是否删除成功
+     */
+    @Override
+    public Boolean delete(Long id) {
+        return permissionDao.deleteById(id) == 1 ? Boolean.TRUE : Boolean.FALSE;
+    }
+
+    @Override
+    public Boolean deleteByIds(String[] ids) {
+        return permissionDao.deleteByIds(ids) > 0 ? Boolean.TRUE : Boolean.FALSE;
+    }
+
+    @Override
+    public PermissionResultBO queryPage(PermissionListDTO permissionListDTO) {
+        QueryWrapper<Permission> queryWrapper = new QueryWrapper<>();
+
+        if (!StringUtils.isEmpty(permissionListDTO.getPermissionName())) {
+            queryWrapper.like("permission_name", permissionListDTO.getPermissionName());
+        }
+
+        if (!StringUtils.isEmpty(permissionListDTO.getCreateBeginTime())) {
+            queryWrapper.apply("create_time >= '" + permissionListDTO.getCreateBeginTime() + "'");
+        }
+
+        if (!StringUtils.isEmpty(permissionListDTO.getCreateEndTime())) {
+            queryWrapper.apply("create_time <= '" + permissionListDTO.getCreateEndTime() + "'");
+        }
+
+        if (!StringUtils.isEmpty(permissionListDTO.getUpdateBeginTime())) {
+            queryWrapper.apply("update_time >= '" + permissionListDTO.getUpdateBeginTime() + "'");
+        }
+
+        if (!StringUtils.isEmpty(permissionListDTO.getUpdateEndTime())) {
+            queryWrapper.apply("update_time <= '" + permissionListDTO.getUpdateEndTime() + "'");
+        }
+
+        Page<Permission> page = new Page<>(permissionListDTO.getPageNo(), permissionListDTO.getPageRows());
+        IPage<Permission> iPage = permissionDao.queryPage(page, queryWrapper);
+
+        PermissionResultBO resultBO = new PermissionResultBO();
+        resultBO.setPageNo(permissionListDTO.getPageNo());
+        resultBO.setPageRows(permissionListDTO.getPageRows());
+        resultBO.setPageCount((int) iPage.getPages());
+        resultBO.setTotalRows((int) iPage.getTotal());
+        resultBO.setDataList(PermissionConvert.permissionListToPermissionBOList(iPage.getRecords()));
+        resultBO.setParams(permissionListDTO);
+
+        return resultBO;
+    }
+}

+ 106 - 0
imwork-windows/imwork-silos/src/main/java/top/imwork/window/silos/service/upms/impl/RegionServiceImpl.java

@@ -0,0 +1,106 @@
+package top.imwork.window.silos.service.upms.impl;
+
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+import jakarta.annotation.Resource;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import top.imwork.commons.core.utils.StringUtils;
+import top.imwork.window.silos.dao.upms.RegionDao;
+import top.imwork.window.silos.entity.upms.Region;
+import top.imwork.window.silos.pojo.upms.bo.RegionBO;
+import top.imwork.window.silos.pojo.upms.bo.RegionResultBO;
+import top.imwork.window.silos.pojo.upms.dto.RegionDTO;
+import top.imwork.window.silos.pojo.upms.dto.RegionListDTO;
+import top.imwork.window.silos.service.upms.IRegionService;
+import top.imwork.window.silos.convert.upms.RegionConvert;
+
+@Service("regionService")
+public class RegionServiceImpl extends ServiceImpl<RegionDao,Region> implements IRegionService {
+    @Resource
+    private RegionDao regionDao;
+
+    /**
+     * 根据id获取信息
+     * @param id 用户id
+     * @return RegionBO 响应信息
+     */
+    @Override
+    public RegionBO info(Long id) {
+        Region region = regionDao.info(id);
+        return RegionConvert.regionDoToBo(region);
+    }
+
+    /**
+     * 新增/更新信息
+     * @param regionDTO 信息
+     * @return regionBO 更新后信息
+     */
+    @Override
+    public RegionBO save(RegionDTO regionDTO) {
+        Region region = RegionConvert.regionDtoToDo(regionDTO);
+        if (ObjectUtils.isEmpty(region.getId())) {
+            regionDao.insert(region);
+        } else {
+            regionDao.updateById(region);
+        }
+        return RegionConvert.regionDoToBo(region);
+    }
+
+    /**
+     * 根据id删除信息
+     * @param id id
+     * @return true/false 是否删除成功
+     */
+    @Override
+    public Boolean delete(Long id) {
+        return regionDao.deleteById(id) == 1 ? Boolean.TRUE : Boolean.FALSE;
+    }
+
+    @Override
+    public Boolean deleteByIds(String[] ids) {
+        return regionDao.deleteByIds(ids) > 0 ? Boolean.TRUE : Boolean.FALSE;
+    }
+
+    @Override
+    public RegionResultBO queryPage(RegionListDTO regionListDTO) {
+        QueryWrapper<Region> queryWrapper = new QueryWrapper<>();
+
+        if (!StringUtils.isEmpty(regionListDTO.getRegionName())) {
+            queryWrapper.like("region_name", regionListDTO.getRegionName());
+        }
+
+        if (!StringUtils.isEmpty(regionListDTO.getCreateBeginTime())) {
+            queryWrapper.apply("create_time >= '" + regionListDTO.getCreateBeginTime() + "'");
+        }
+
+        if (!StringUtils.isEmpty(regionListDTO.getCreateEndTime())) {
+            queryWrapper.apply("create_time <= '" + regionListDTO.getCreateEndTime() + "'");
+        }
+
+        if (!StringUtils.isEmpty(regionListDTO.getUpdateBeginTime())) {
+            queryWrapper.apply("update_time >= '" + regionListDTO.getUpdateBeginTime() + "'");
+        }
+
+        if (!StringUtils.isEmpty(regionListDTO.getUpdateEndTime())) {
+            queryWrapper.apply("update_time <= '" + regionListDTO.getUpdateEndTime() + "'");
+        }
+
+        Page<Region> page = new Page<>(regionListDTO.getPageNo(), regionListDTO.getPageRows());
+        IPage<Region> iPage = regionDao.queryPage(page, queryWrapper);
+
+        RegionResultBO resultBO = new RegionResultBO();
+        resultBO.setPageNo(regionListDTO.getPageNo());
+        resultBO.setPageRows(regionListDTO.getPageRows());
+        resultBO.setPageCount((int) iPage.getPages());
+        resultBO.setTotalRows((int) iPage.getTotal());
+        resultBO.setDataList(RegionConvert.regionListToRegionBOList(iPage.getRecords()));
+        resultBO.setParams(regionListDTO);
+
+        return resultBO;
+    }
+}

+ 4 - 4
imwork-windows/imwork-silos/src/main/resources/db.properties

@@ -1,13 +1,13 @@
 imwork.database= mysql
 
 commonsPath=top.imwork
-mainPath=top.imwork.window
-packages=top.imwork.window
-moduleName=silos
+mainPath=top.imwork.window.silos
+packages=top.imwork.window.silos
+moduleName=upms
 author=jiangxiaowei
 #Email
 email=e-jiangxiaowei@outlook.com
-tablePrefix=book_
+tablePrefix=sys_
 
 tinyint=Integer
 smallint=Integer

+ 82 - 0
imwork-windows/imwork-silos/src/main/resources/mapper/upms/OrganizationDao.xml

@@ -0,0 +1,82 @@
+<?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="top.imwork.window.silos.dao.upms.OrganizationDao">
+    <resultMap type="top.imwork.window.silos.entity.upms.Organization" id="BaseResultMap">
+            <result property="id" column="id"/>
+            <result property="parentId" column="parent_id"/>
+            <result property="parentIds" column="parent_ids"/>
+            <result property="orgName" column="org_name"/>
+            <result property="orgShortName" column="org_short_name"/>
+            <result property="orgCode" column="org_code"/>
+            <result property="orgType" column="org_type"/>
+            <result property="orgGrade" column="org_grade"/>
+            <result property="orgPath" column="org_path"/>
+            <result property="orgAreaId" column="org_area_id"/>
+            <result property="orgAreaCode" column="org_area_code"/>
+            <result property="orgIconsId" column="org_icons_id"/>
+            <result property="establishedDate" column="established_date"/>
+            <result property="orgState" column="org_state"/>
+            <result property="orgStatus" column="org_status"/>
+            <result property="state" column="state"/>
+            <result property="status" column="status"/>
+            <result property="sort" column="sort"/>
+            <result property="delFlag" column="del_flag"/>
+            <result property="creator" column="creator"/>
+            <result property="createTime" column="create_time"/>
+            <result property="modifier" column="modifier"/>
+            <result property="updateTime" column="update_time"/>
+            <result property="remark" column="remark"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,
+        parent_id,
+        parent_ids,
+        org_name,
+        org_short_name,
+        org_code,
+        org_type,
+        org_grade,
+        org_path,
+        org_area_id,
+        org_area_code,
+        org_icons_id,
+        established_date,
+        org_state,
+        org_status,
+        state,
+        status,
+        sort,
+        del_flag,
+        creator,
+        create_time,
+        modifier,
+        update_time,
+        remark
+    </sql>
+
+    <!--根据ids批量删除-->
+    <update id="deleteByIds" parameterType="ArrayList">
+        update sys_organization
+        set del_flag = 'Y'
+        where id in
+        <foreach item="ids" collection="array" open="(" separator=","  close=")">
+            #{ids}
+        </foreach>
+    </update>
+
+    <!--根据id查询信息-->
+    <select id="info" resultMap="BaseResultMap" parameterType="long">
+        select *
+        from sys_organization
+        where 1 = 1
+        and id = #{id}
+    </select>
+
+    <!--分页查询-->
+    <select id="queryPage" resultType="top.imwork.window.silos.entity.upms.Organization">
+        select *
+        from sys_organization ${ew.customSqlSegment}
+    </select>
+</mapper>

+ 82 - 0
imwork-windows/imwork-silos/src/main/resources/mapper/upms/PermissionDao.xml

@@ -0,0 +1,82 @@
+<?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="top.imwork.window.silos.dao.upms.PermissionDao">
+    <resultMap type="top.imwork.window.silos.entity.upms.Permission" id="BaseResultMap">
+            <result property="id" column="id"/>
+            <result property="authCode" column="auth_code"/>
+            <result property="authName" column="auth_name"/>
+            <result property="authType" column="auth_type"/>
+            <result property="authLevel" column="auth_level"/>
+            <result property="parentId" column="parent_id"/>
+            <result property="parentIds" column="parent_ids"/>
+            <result property="parentAuthName" column="parent_auth_name"/>
+            <result property="privilegeCode" column="privilege_code"/>
+            <result property="privilegeName" column="privilege_name"/>
+            <result property="privilegeType" column="privilege_type"/>
+            <result property="privilegeLevel" column="privilege_level"/>
+            <result property="privilegeIconsId" column="privilege_icons_id"/>
+            <result property="privilegeState" column="privilege_state"/>
+            <result property="privilegeStatus" column="privilege_status"/>
+            <result property="sort" column="sort"/>
+            <result property="state" column="state"/>
+            <result property="status" column="status"/>
+            <result property="delFlag" column="del_flag"/>
+            <result property="creator" column="creator"/>
+            <result property="createTime" column="create_time"/>
+            <result property="modifier" column="modifier"/>
+            <result property="updateTime" column="update_time"/>
+            <result property="remark" column="remark"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,
+        auth_code,
+        auth_name,
+        auth_type,
+        auth_level,
+        parent_id,
+        parent_ids,
+        parent_auth_name,
+        privilege_code,
+        privilege_name,
+        privilege_type,
+        privilege_level,
+        privilege_icons_id,
+        privilege_state,
+        privilege_status,
+        sort,
+        state,
+        status,
+        del_flag,
+        creator,
+        create_time,
+        modifier,
+        update_time,
+        remark
+    </sql>
+
+    <!--根据ids批量删除-->
+    <update id="deleteByIds" parameterType="ArrayList">
+        update sys_permission
+        set del_flag = 'Y'
+        where id in
+        <foreach item="ids" collection="array" open="(" separator=","  close=")">
+            #{ids}
+        </foreach>
+    </update>
+
+    <!--根据id查询信息-->
+    <select id="info" resultMap="BaseResultMap" parameterType="long">
+        select *
+        from sys_permission
+        where 1 = 1
+        and id = #{id}
+    </select>
+
+    <!--分页查询-->
+    <select id="queryPage" resultType="top.imwork.window.silos.entity.upms.Permission">
+        select *
+        from sys_permission ${ew.customSqlSegment}
+    </select>
+</mapper>

+ 56 - 0
imwork-windows/imwork-silos/src/main/resources/mapper/upms/RegionDao.xml

@@ -0,0 +1,56 @@
+<?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="top.imwork.window.silos.dao.upms.RegionDao">
+    <resultMap type="top.imwork.window.silos.entity.upms.Region" id="BaseResultMap">
+            <result property="id" column="id"/>
+            <result property="parentId" column="parent_id"/>
+            <result property="regionName" column="region_name"/>
+            <result property="regionNamePinyin" column="region_name_pinyin"/>
+            <result property="regionShortName" column="region_short_name"/>
+            <result property="regionFullName" column="region_full_name"/>
+            <result property="regionLevel" column="region_level"/>
+            <result property="regionCode" column="region_code"/>
+            <result property="postalCode" column="postal_code"/>
+            <result property="longitude" column="longitude"/>
+            <result property="latitude" column="latitude"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,
+        parent_id,
+        region_name,
+        region_name_pinyin,
+        region_short_name,
+        region_full_name,
+        region_level,
+        region_code,
+        postal_code,
+        longitude,
+        latitude
+    </sql>
+
+    <!--根据ids批量删除-->
+    <update id="deleteByIds" parameterType="ArrayList">
+        update sys_region
+        set del_flag = 'Y'
+        where id in
+        <foreach item="ids" collection="array" open="(" separator=","  close=")">
+            #{ids}
+        </foreach>
+    </update>
+
+    <!--根据id查询信息-->
+    <select id="info" resultMap="BaseResultMap" parameterType="long">
+        select *
+        from sys_region
+        where 1 = 1
+        and id = #{id}
+    </select>
+
+    <!--分页查询-->
+    <select id="queryPage" resultType="top.imwork.window.silos.entity.upms.Region">
+        select *
+        from sys_region ${ew.customSqlSegment}
+    </select>
+</mapper>

+ 1 - 1
imwork-windows/imwork-silos/src/main/resources/moudle/BO.ftl

@@ -1,4 +1,4 @@
-package ${package}.${moduleName}.pojo.bo;
+package ${package}.pojo.${moduleName}.bo;
 
 import lombok.Data;
 

+ 10 - 10
imwork-windows/imwork-silos/src/main/resources/moudle/Convert.ftl

@@ -1,15 +1,15 @@
-package ${package}.${moduleName}.convert;
+package ${package}.convert.${moduleName};
 
 import org.springframework.util.ObjectUtils;
-import ${package}.${moduleName}.entity.${className};
-import ${package}.${moduleName}.pojo.bo.${className}BO;
-import ${package}.${moduleName}.pojo.bo.${className}ResultBO;
-import ${package}.${moduleName}.pojo.dto.${className}ListDTO;
-import ${package}.${moduleName}.pojo.po.${className}ListParamVO;
-import ${package}.${moduleName}.pojo.po.${className}ParamVO;
-import ${package}.${moduleName}.pojo.vo.${className}ResultVO;
-import ${package}.${moduleName}.pojo.vo.${className}VO;
-import ${package}.${moduleName}.pojo.dto.${className}DTO;
+import ${package}.entity.${moduleName}.${className};
+import ${package}.pojo.${moduleName}.bo.${className}BO;
+import ${package}.pojo.${moduleName}.bo.${className}ResultBO;
+import ${package}.pojo.${moduleName}.dto.${className}ListDTO;
+import ${package}.pojo.${moduleName}.po.${className}ListParamVO;
+import ${package}.pojo.${moduleName}.po.${className}ParamVO;
+import ${package}.pojo.${moduleName}.vo.${className}ResultVO;
+import ${package}.pojo.${moduleName}.vo.${className}VO;
+import ${package}.pojo.${moduleName}.dto.${className}DTO;
 
 import java.util.ArrayList;
 import java.util.List;

+ 1 - 1
imwork-windows/imwork-silos/src/main/resources/moudle/DTO.ftl

@@ -1,4 +1,4 @@
-package ${package}.${moduleName}.pojo.dto;
+package ${package}.pojo.${moduleName}.dto;
 
 import lombok.Data;
 

+ 2 - 2
imwork-windows/imwork-silos/src/main/resources/moudle/Dao.ftl

@@ -1,7 +1,7 @@
-package ${package}.${moduleName}.dao;
+package ${package}.dao.${moduleName};
 
 import ${commonsPath}.commons.dao.base.BaseDao;
-import ${package}.${moduleName}.entity.${className};
+import ${package}.entity.${moduleName}.${className};
 
 /**
  * ${comments}

+ 3 - 3
imwork-windows/imwork-silos/src/main/resources/moudle/Dao.xml.ftl

@@ -1,8 +1,8 @@
 <?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="${package}.${moduleName}.dao.${className}Dao">
-    <resultMap type="${package}.${moduleName}.entity.${className}" id="BaseResultMap">
+<mapper namespace="${package}.dao.${moduleName}.${className}Dao">
+    <resultMap type="${package}.entity.${moduleName}.${className}" id="BaseResultMap">
         <#list columns as column>
             <result property="${column.attrname}" column="${column.columnName}"/>
         </#list>
@@ -37,7 +37,7 @@
     </select>
 
     <!--分页查询-->
-    <select id="queryPage" resultType="${package}.${moduleName}.entity.${className}">
+    <select id="queryPage" resultType="${package}.entity.${moduleName}.${className}">
         select *
         from ${tableName} <#noparse>${ew.customSqlSegment}</#noparse>
     </select>

+ 1 - 1
imwork-windows/imwork-silos/src/main/resources/moudle/Entity.ftl

@@ -1,4 +1,4 @@
-package ${package}.${moduleName}.entity;
+package ${package}.entity.${moduleName};
 
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;

+ 2 - 2
imwork-windows/imwork-silos/src/main/resources/moudle/ListDTO.ftl

@@ -1,8 +1,8 @@
-package ${package}.${moduleName}.pojo.dto;
+package ${package}.pojo.${moduleName}.dto;
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import ${package}.commons.base.pojo.BaseParams;
+import ${commonsPath}.commons.core.pojo.BaseParams;
 
 /**
  * ${comments}

+ 2 - 2
imwork-windows/imwork-silos/src/main/resources/moudle/ListParamVO.ftl

@@ -1,8 +1,8 @@
-package ${package}.${moduleName}.pojo.po;
+package ${package}.pojo.${moduleName}.po;
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import ${package}.commons.base.pojo.BaseParams;
+import ${commonsPath}.commons.core.pojo.BaseParams;
 
 /**
  * ${comments}

+ 1 - 1
imwork-windows/imwork-silos/src/main/resources/moudle/ParamVO.ftl

@@ -1,4 +1,4 @@
-package ${package}.${moduleName}.pojo.po;
+package ${package}.pojo.${moduleName}.po;
 
 import lombok.Data;
 

+ 3 - 3
imwork-windows/imwork-silos/src/main/resources/moudle/ResultBO.ftl

@@ -1,9 +1,9 @@
-package ${package}.${moduleName}.pojo.bo;
+package ${package}.pojo.${moduleName}.bo;
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import ${package}.commons.base.pojo.BaseResult;
-import ${package}.${moduleName}.pojo.dto.${className}ListDTO;
+import ${commonsPath}.commons.core.pojo.BaseResult;
+import ${package}.pojo.${moduleName}.dto.${className}ListDTO;
 
 /**
  * ${comments}

+ 3 - 3
imwork-windows/imwork-silos/src/main/resources/moudle/ResultVO.ftl

@@ -1,9 +1,9 @@
-package ${package}.${moduleName}.pojo.vo;
+package ${package}.pojo.${moduleName}.vo;
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import ${package}.commons.base.pojo.BaseResult;
-import ${package}.${moduleName}.pojo.po.${className}ListParamVO;
+import ${commonsPath}.commons.core.pojo.BaseResult;
+import ${package}.pojo.${moduleName}.po.${className}ListParamVO;
 
 /**
  * ${comments}

+ 5 - 5
imwork-windows/imwork-silos/src/main/resources/moudle/Service.ftl

@@ -1,9 +1,9 @@
-package ${package}.${moduleName}.service;
+package ${package}.service.${moduleName};
 
-import ${package}.${moduleName}.pojo.bo.${className}BO;
-import ${package}.${moduleName}.pojo.bo.${className}ResultBO;
-import ${package}.${moduleName}.pojo.dto.${className}ListDTO;
-import ${package}.${moduleName}.pojo.dto.${className}DTO;
+import ${package}.pojo.${moduleName}.bo.${className}BO;
+import ${package}.pojo.${moduleName}.bo.${className}ResultBO;
+import ${package}.pojo.${moduleName}.dto.${className}ListDTO;
+import ${package}.pojo.${moduleName}.dto.${className}DTO;
 
 /**
  * ${comments}

+ 11 - 16
imwork-windows/imwork-silos/src/main/resources/moudle/ServiceController.ftl

@@ -1,18 +1,18 @@
-package ${package}.${moduleName}.controller;
+package ${package}.controller.${moduleName};
 
 import jakarta.annotation.Resource;
 import jakarta.validation.Valid;
 import org.springframework.web.bind.annotation.*;
 
-import ${package}.api.${moduleName}.I${className}ServiceApi;
-import ${package}.commons.base.pojo.ResponseMsg;
-import ${package}.commons.base.pojo.DeleteParams;
-import ${package}.${moduleName}.convert.${className}Convert;
-import ${package}.${moduleName}.pojo.bo.${className}BO;
-import ${package}.${moduleName}.pojo.bo.${className}ResultBO;
-import ${package}.${moduleName}.pojo.po.${className}ListParamVO;
-import ${package}.${moduleName}.pojo.po.${className}ParamVO;
-import ${package}.${moduleName}.service.I${className}Service;
+import ${commonsPath}.commons.core.pojo.ResponseMsg;
+import ${commonsPath}.commons.core.pojo.DeleteParams;
+import ${commonsPath}.commons.core.base.BaseController;
+import ${package}.convert.${moduleName}.${className}Convert;
+import ${package}.pojo.${moduleName}.bo.${className}BO;
+import ${package}.pojo.${moduleName}.bo.${className}ResultBO;
+import ${package}.pojo.${moduleName}.po.${className}ListParamVO;
+import ${package}.pojo.${moduleName}.po.${className}ParamVO;
+import ${package}.service.${moduleName}.I${className}Service;
 
 /**
  * ${comments}
@@ -23,7 +23,7 @@ import ${package}.${moduleName}.service.I${className}Service;
  */
 @RestController
 @RequestMapping("/${pathName}")
-public class ${className}ServiceController extends BaseServiceController implements I${className}ServiceApi{
+public class ${className}ServiceController extends BaseController{
 
     @Resource
     public I${className}Service ${classname}Service;
@@ -34,7 +34,6 @@ public class ${className}ServiceController extends BaseServiceController impleme
      * @return 返回查询结果
      */
     @GetMapping("/info/{${pk.attrname}}")
-    @Override
     public ResponseMsg info(@PathVariable("${pk.attrname}") ${pk.attrType} ${pk.attrname}){
         return ResponseMsg.buildResponse(${classname}Service.info(${pk.attrname}));
     }
@@ -45,7 +44,6 @@ public class ${className}ServiceController extends BaseServiceController impleme
      * @return responseMsg 操作结果
      */
     @PostMapping("/save")
-    @Override
     public ResponseMsg save(@RequestBody @Valid ${className}ParamVO ${classname}ParamVO){
         ${className}BO ${classname}BO = ${classname}Service.save(${className}Convert.${classname}ParamVoToDto(${classname}ParamVO));
         return ResponseMsg.buildResponse(${className}Convert.${classname}BoToVo(${classname}BO));
@@ -57,7 +55,6 @@ public class ${className}ServiceController extends BaseServiceController impleme
      * @return true/false 成功/失败
      */
     @DeleteMapping("/delete/{id}")
-    @Override
     public ResponseMsg delete(@PathVariable("id") Long id){
         return ${classname}Service.delete(id)? ResponseMsg.ok() : ResponseMsg.fail();
     }
@@ -69,14 +66,12 @@ public class ${className}ServiceController extends BaseServiceController impleme
      * @return true/false 是否删除成功
      */
     @DeleteMapping("/deleteByIds")
-    @Override
     public ResponseMsg deleteByIds(@RequestBody DeleteParams dto){
         String[] idArr = dto.getIds().split(",");
         return ${classname}Service.deleteByIds(idArr)? ResponseMsg.ok() : ResponseMsg.fail();
     }
 
     @PostMapping("/queryPage")
-    @Override
     public ResponseMsg queryPage(@RequestBody @Valid ${className}ListParamVO ${classname}ListParamVO) {
         ${className}ResultBO ${classname}ResultBO = ${classname}Service.queryPage(${className}Convert.${classname}ListParamVoToDTO(${classname}ListParamVO));
         return ResponseMsg.buildResponse(${className}Convert.${classname}ResultBoToVo(${classname}ResultBO));

+ 10 - 10
imwork-windows/imwork-silos/src/main/resources/moudle/ServiceImpl.ftl

@@ -1,4 +1,4 @@
-package ${package}.${moduleName}.service.impl;
+package ${package}.service.${moduleName}.impl;
 
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
@@ -9,15 +9,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
-import ${package}.commons.base.util.StringUtils;
-import ${package}.${moduleName}.dao.${className}Dao;
-import ${package}.${moduleName}.entity.${className};
-import ${package}.${moduleName}.pojo.bo.${className}BO;
-import ${package}.${moduleName}.pojo.bo.${className}ResultBO;
-import ${package}.${moduleName}.pojo.dto.${className}DTO;
-import ${package}.${moduleName}.pojo.dto.${className}ListDTO;
-import ${package}.${moduleName}.service.I${className}Service;
-import ${package}.${moduleName}.convert.${className}Convert;
+import ${commonsPath}.commons.core.utils.StringUtils;
+import ${package}.dao.${moduleName}.${className}Dao;
+import ${package}.entity.${moduleName}.${className};
+import ${package}.pojo.${moduleName}.bo.${className}BO;
+import ${package}.pojo.${moduleName}.bo.${className}ResultBO;
+import ${package}.pojo.${moduleName}.dto.${className}DTO;
+import ${package}.pojo.${moduleName}.dto.${className}ListDTO;
+import ${package}.service.${moduleName}.I${className}Service;
+import ${package}.convert.${moduleName}.${className}Convert;
 
 @Service("${classname}Service")
 public class ${className}ServiceImpl extends ServiceImpl<${className}Dao,${className}> implements I${className}Service {

+ 1 - 1
imwork-windows/imwork-silos/src/main/resources/moudle/VO.ftl

@@ -1,4 +1,4 @@
-package ${package}.${moduleName}.pojo.vo;
+package ${package}.pojo.${moduleName}.vo;
 
 import lombok.Data;
 

+ 242 - 0
imwork-windows/imwork-silos/src/main/resources/static/business/upms/organization/list.js

@@ -0,0 +1,242 @@
+layui.use(['form', 'layer', 'table', 'laytpl'], function () {
+    var form = layui.form,
+        layer = parent.layer === undefined ? layui.layer : top.layer,
+        $ = layui.jquery,
+        laytpl = layui.laytpl,
+        table = layui.table;
+
+    //列表
+    var tableIns = table.render({
+        elem: '#list',
+        url: '/organization/getList',
+        cellMinWidth: 95,
+        page: true,
+        height: "full-125",
+        limits: [10, 15, 20, 25],
+        limit: 10,
+        id: "listTable",
+        cols: [[
+            {type: "checkbox", fixed: "left", width: 50},
+            {field: 'orgName', title: '组织名称', minWidth: 100, align: "center"},
+            {field: 'orgType', title: '组织类型', minWidth: 100, align: "center",templet:function(d){
+                    if(d.orgType == "0"){
+                        return "行业性";
+                    }else if(d.orgType == "1"){
+                        return "公益性";
+                    }else if(d.orgType == "2"){
+                        return "非盈利";
+                    }else if(d.orgType == "3"){
+                        return "国际性";
+                    }else if(d.orgType == "9"){
+                        return "国家组织";
+                    }else{
+                        return "保密";
+                    }
+                }},
+            {field: 'orgGrade', title: '组织级别', minWidth: 100, align: "center",templet:function(d){
+                    if(d.orgGrade == "0"){
+                        return "系统级";
+                    }else if(d.orgGrade == "1"){
+                        return "一级组织";
+                    }else if(d.orgGrade == "2"){
+                        return "二级组织";
+                    }else if(d.orgGrade == "3"){
+                        return "三级组织";
+                    }else if(d.orgGrade == "4"){
+                        return "四级组织";
+                    }else{
+                        return "普通组织";
+                    }
+                }},
+            {field: 'creator', title: '创建人', minWidth: 100, align: "center"},
+            {field: 'createTime', title: '创建时间', minWidth: 100, align: "center",templet:function (d) {
+                    return showTime(d.createTime);
+                }},
+            {field: 'updateTime', title: '更新时间', align: 'center', minWidth: 150,templet:function (d) {
+                    return showTime(d.updateTime);
+            }},
+            {title: '操作', minWidth: 200, templet: '#listBar', fixed: "right", align: "center"}
+        ]]
+    });
+
+    //搜索【此功能需要后台配合,所以暂时没有动态效果演示】
+    $(".search_btn").on("click", function () {
+        if ($(".searchVal").val() != '') {
+            table.reload("listTable", {
+                page: {
+                    curr: 1 //重新从第 1 页开始
+                },
+                where: {
+                    key: $(".searchVal").val()  //搜索的关键字
+                }
+            })
+        } else {
+            layer.msg("请输入搜索的内容");
+        }
+    });
+    $(".add_btn").click(function () {
+        add();
+    })
+    //添加
+    function add() {
+        var index = layui.layer.open({
+            title: "添加组织",
+            type: 2,
+            content: "/organization/update",
+            success: function (layero, index) {
+                var body = layui.layer.getChildFrame('body', index);
+                setTimeout(function () {
+                    layui.layer.tips('点击此处返回列表', '.layui-layer-setwin .layui-layer-close', {
+                        tips: 3
+                    });
+                }, 500)
+            }
+        })
+        layui.layer.full(index);
+        window.sessionStorage.setItem("index", index);
+        //改变窗口大小时,重置弹窗的宽高,防止超出可视区域(如F12调出debug的操作)
+        $(window).on("resize", function () {
+            layui.layer.full(window.sessionStorage.getItem("index"));
+        })
+    }
+
+    //批量删除
+    $(".delAll_btn").click(function () {
+        var checkStatus = table.checkStatus('listTable'),
+            data = checkStatus.data,
+            ids = [];
+        if (data.length > 0) {
+            for (var i in data) {
+                ids.push(data[i].id);
+            }
+            layer.confirm('确定删除选中的条目?', {icon: 3, title: '提示信息'}, function (index) {
+                $.ajax({
+                    url: "/organization/deleteByIds/" + ids,
+                    type: "POST",
+                    dataType: "json",
+                    async: false,
+                    contentType: 'application/json;charset=UTF-8',
+                    success: function (res) {
+                        tableIns.reload();
+                        layer.close(index);
+                    },
+                    error: function (e) {
+                        tableIns.reload();
+                        layer.close(index);
+                    }
+                })
+            })
+        } else {
+            layer.msg("请选择需要删除的条目");
+        }
+    })
+
+    //列表操作
+    table.on('tool(userList)', function (obj) {
+        var layEvent = obj.event,
+            data = obj.data;
+
+        if (layEvent === 'edit') { //编辑
+            addUser(data);
+        } else if (layEvent === 'usable') { //启用禁用
+            var _this = $(this),
+                usableText = "是否确定禁用此用户?",
+                btnText = "已禁用";
+            if (_this.text() == "已禁用") {
+                usableText = "是否确定启用此用户?",
+                    btnText = "已启用";
+            }
+            layer.confirm(usableText, {
+                icon: 3,
+                title: '系统提示',
+                cancel: function (index) {
+                    layer.close(index);
+                }
+            }, function (index) {
+                _this.text(btnText);
+                layer.close(index);
+            }, function (index) {
+                layer.close(index);
+            });
+        } else if (layEvent === 'del') { //删除
+            layer.confirm('确定删除?', {icon: 3, title: '提示信息'}, function (index) {
+                // $.get("删除文章接口",{
+                //     newsId : data.newsId  //将需要删除的newsId作为参数传入
+                // },function(data){
+                tableIns.reload();
+                layer.close(index);
+                // })
+            });
+        }
+    });
+
+    $(".edit_btn").click(function () {
+        edit();
+    })
+    //edit
+    function edit() {
+        var checkStatus = table.checkStatus('listTable'),
+            data = checkStatus.data,
+            ids = [];
+        if (data.length > 0) {
+            if(data.length==1){
+                for (var i in data) {
+                    ids.push(data[i].id);
+                }
+                var index = layui.layer.open({
+                    title: "编辑权限",
+                    type: 2,
+                    content: "/permission/edit/" + ids,
+                    success: function (layero, index) {
+                        var body = layui.layer.getChildFrame('body', index);
+                        setTimeout(function () {
+                            layui.layer.tips('点击此处返回信息列表', '.layui-layer-setwin .layui-layer-close', {
+                                tips: 3
+                            });
+                        }, 500)
+                    }
+                })
+                layui.layer.full(index);
+                window.sessionStorage.setItem("index", index);
+                //改变窗口大小时,重置弹窗的宽高,防止超出可视区域(如F12调出debug的操作)
+                $(window).on("resize", function () {
+                    layui.layer.full(window.sessionStorage.getItem("index"));
+                })
+            }else{
+                layer.msg("只能同时修改一条信息!");
+            }
+        } else {
+            layer.msg("请选择需要修改的条目!");
+        }
+
+    }
+
+
+//时间转换函数
+    function showTime(tempDate)
+    {
+        var d = new Date(tempDate);
+        var year = d.getFullYear();
+        var month = d.getMonth();
+        month++;
+        var day = d.getDate();
+        var hours = d.getHours();
+
+        var minutes = d.getMinutes();
+        var seconds = d.getSeconds();
+        month = month<10 ? "0"+month:month;
+        day = day<10 ? "0"+day:day;
+        hours = hours<10 ? "0"+hours:hours;
+        minutes = minutes<10 ? "0"+minutes:minutes;
+        seconds = seconds<10 ? "0"+seconds:seconds;
+
+
+        var time = year+"-"+month+"-"+day+" "+hours+":"+minutes+":"+seconds;
+        return time;
+    }
+
+
+    $(".refresh").click(function () {
+        location.reload();
+    })
+})

+ 44 - 0
imwork-windows/imwork-silos/src/main/resources/static/business/upms/organization/save.js

@@ -0,0 +1,44 @@
+layui.use(['form', 'layer'], function () {
+    var form = layui.form
+    layer = parent.layer === undefined ? layui.layer : top.layer,
+        $ = layui.jquery;
+
+    form.on("submit(save)", function (data) {
+        //弹出loading
+        var index = layer.msg('数据提交中,请稍候...', {
+            icon: 16,
+            shade: 0.8,
+            time:false //取消自动关闭
+        });
+
+        //实际使用时的提交信息
+        $.ajax( {
+            url : "/organization/save",
+            type : "POST",
+            dataType:"json",
+            contentType:'application/json;charset=UTF-8',
+            data:JSON.stringify({parentId:$("#parentId").val(),
+                orgName:$("#orgName").val(),
+                orgType: $("#orgType").val(),
+                orgGrade: $("#orgGrade").val(),
+                remark: $("#remark").val(),
+                id: $("#id").val()
+            }),
+            success : function(res) {
+                //console.log('测试')
+                layer.close(index);//手动关闭
+                layer.msg(res.message);
+                layer.closeAll("iframe");
+                //刷新父页面
+                parent.location.reload();
+            },
+            error:function(e){
+                layer.close(index);//手动关闭
+                layer.msg("操作失败,请重试!");
+                layer.closeAll("iframe");
+                //刷新父页面
+                parent.location.reload();
+            }
+        })
+    })
+})

+ 193 - 0
imwork-windows/imwork-silos/src/main/resources/static/business/upms/permission/list.js

@@ -0,0 +1,193 @@
+layui.config({
+    base: '../../assets/js/' //你存放新模块的目录,注意,不是layui的模块目录
+}).use('treeTable', function () {
+    var treeTable = layui.treeTable;
+
+    var insTb = treeTable.render({
+        elem: '#treeTableId',
+        toolbar: '#leftBar',
+        defaultToolbar: ['filter', 'print', 'exports'],
+        tree: {
+            iconIndex: 2,           // 折叠图标显示在第几列
+            isPidData: true,        // 是否是id、pid形式数据
+            idName: 'id',  // id字段名称
+            pidName: 'parentId'     // pid字段名称
+        },
+        cols: [[
+            {type: 'numbers'},
+            {type: 'checkbox'},
+            {field: 'authName', title: '模块名称',width : "20%"},
+            {field: 'authCode', title: '模块编码'},
+            {
+                field: 'authType', title: '模块类型', minWidth: 100, align: "center", templet: function (d) {
+                    if (d.authType == "0") {
+                        return "父节点";
+                    } else if (d.userGender == "1") {
+                        return "子节点";
+                    } else {
+                        return "异常节点";
+                    }
+                }
+            },
+            {field: 'permissionName', title: '权限名称', minWidth: 100, align: "center"},
+            {field: 'permission', title: '权限标识', minWidth: 100, align: "center"},
+            {field: 'linkUrl', title: '访问地址', minWidth: 100, align: "center"},
+            {field: 'creator', title: '创建人', minWidth: 100, align: "center"},
+            {
+                field: 'createTime', title: '创建时间', minWidth: 100, align: "center", templet: function (d) {
+                    return showTime(d.createTime);
+                }
+            },
+            {
+                field: 'updateTime', title: '更新时间', align: 'center', minWidth: 150, templet: function (d) {
+                    return showTime(d.updateTime);
+                }
+            },
+            {align: 'center', toolbar: '#tbBar', title: '操作'}
+
+        ]],
+        reqData: function (data, callback) {
+            // 在这里写ajax请求,通过callback方法回调数据
+            $.get('/upms/permission/getTreeTable', function (res) {
+                if (res.code == 0) callback(res.data);
+                else callback(res.msg);
+            });
+        }
+    });
+
+    $(".add_btn").click(function () {
+        update();
+    })
+
+    //数据维护
+    function update(obj) {
+        let id = 0;
+        if(obj != null){
+            id = obj.data.id;
+        }
+        var index = layui.layer.open({
+            title: "添加",
+            type: 2,
+            content: "/upms/permission/update/"+id,
+            success: function (layero, index) {
+                setTimeout(function () {
+                    layui.layer.tips('点击此处返回列表', '.layui-layer-setwin .layui-layer-close', {
+                        tips: 3
+                    });
+                }, 500)
+            }
+        })
+        layui.layer.full(index);
+        window.sessionStorage.setItem("index", index);
+        //改变窗口大小时,重置弹窗的宽高,防止超出可视区域(如F12调出debug的操作)
+        $(window).on("resize", function () {
+            layui.layer.full(window.sessionStorage.getItem("index"));
+        })
+    }
+
+    // 工具列点击事件
+    treeTable.on('tool(treeTableId)', function (obj) {
+        var event = obj.event;
+        if (event === 'del') {
+            deleteInfo(obj.data.id);
+        } else if (event === 'edit') {
+            update(obj);
+        }
+    });
+
+    //批量删除
+    $(".delAll_btn").click(function () {
+        deleteInfo();
+    })
+    function deleteInfo(id){
+        var  ids = [];
+        checkStatus = insTb.checkStatus(false);
+        if(id != null && id != ""){
+            ids.push(id);
+            layer.confirm('确定删除选中的条目?', {icon: 3, title: '提示信息'}, function (index) {
+                $.ajax({
+                    url: "/upms/permission/delete/" + ids,
+                    type: "POST",
+                    dataType: "json",
+                    async: false,
+                    contentType: 'application/json;charset=UTF-8',
+                    success: function (res) {
+                        insTb.refresh();
+                        layer.close(index);
+                    },
+                    error: function (e) {
+                        insTb.refresh();
+                        layer.close(index);
+                    }
+                })
+            })
+        }else{
+            if (checkStatus.length > 0) {
+                for (var i in checkStatus) {
+                    ids.push(checkStatus[i].id);
+                }
+                layer.confirm('确定删除选中的条目?', {icon: 3, title: '提示信息'}, function (index) {
+                    $.ajax({
+                        url: "/upms/permission/delete/" + ids,
+                        type: "POST",
+                        dataType: "json",
+                        async: false,
+                        contentType: 'application/json;charset=UTF-8',
+                        success: function (res) {
+                            insTb.refresh();
+                            layer.close(index);
+                        },
+                        error: function (e) {
+                            insTb.refresh();
+                            layer.close(index);
+                        }
+                    })
+                })
+            } else {
+                layer.msg("请选择需要删除的条目");
+            }
+        }
+    }
+
+    //搜索
+    $(".search_btn").click(function () {
+        var keyword = $('#keyword').val();
+        // 搜索
+        insTb.filterData(keyword);   // 根据关键字模糊搜索
+    })
+
+    $(".expandAll_btn").click(function () {
+        insTb.expandAll();  // 展开全部
+    })
+
+    $(".foldAll_btn").click(function () {
+        insTb.foldAll();  // 折叠全部
+    })
+
+    $(".refresh").click(function () {
+        //insTb.clearFilter();
+        insTb.refresh();  // 刷新(异步模式)
+    })
+
+    //时间转换函数
+    function showTime(tempDate) {
+        var d = new Date(tempDate);
+        var year = d.getFullYear();
+        var month = d.getMonth();
+        month++;
+        var day = d.getDate();
+        var hours = d.getHours();
+
+        var minutes = d.getMinutes();
+        var seconds = d.getSeconds();
+        month = month < 10 ? "0" + month : month;
+        day = day < 10 ? "0" + day : day;
+        hours = hours < 10 ? "0" + hours : hours;
+        minutes = minutes < 10 ? "0" + minutes : minutes;
+        seconds = seconds < 10 ? "0" + seconds : seconds;
+
+        var time = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
+        return time;
+    }
+
+});

+ 49 - 0
imwork-windows/imwork-silos/src/main/resources/static/business/upms/permission/save.js

@@ -0,0 +1,49 @@
+layui.use(['form', 'layer'], function () {
+    var form = layui.form
+    layer = parent.layer === undefined ? layui.layer : top.layer,
+        $ = layui.jquery;
+
+    form.on("submit(save)", function (data) {
+        //弹出loading
+        //var index = top.layer.msg('数据提交中,请稍候', {icon: 16, time: false, shade: 0.8});
+
+        //弹出loading
+        var index = layer.msg('数据提交中,请稍候...', {
+            icon: 16,
+            shade: 0.8,
+            time:true //取消自动关闭
+        });
+
+        //实际使用时的提交信息
+        $.ajax( {
+            url : "/upms/permission/save",
+            type : "POST",
+            dataType:"json",
+            contentType:'application/json;charset=UTF-8',
+            data:JSON.stringify({authCode:$("#authCode").val(),
+                authName:$("#authName").val(),
+                authType: $('input[name="authType"]:checked').val(),
+                parentId: $("#parentId").val(),
+                permissionName: $("#permissionName").val(),
+                permission: $("#permission").val(),
+                linkUrl: $("#linkUrl").val(),
+                remark: $("#remark").val(),
+                id: $("#id").val()
+            }),
+            success : function(res) {
+                layer.close(index);//手动关闭
+                layer.msg(res.message);
+                layer.closeAll("iframe");
+                //刷新父页面
+                parent.location.reload();
+            },
+            error:function(e){
+                layer.close(index);//手动关闭
+                layer.msg("操作失败,请重试!");
+                layer.closeAll("iframe");
+                //刷新父页面
+                parent.location.reload();
+            }
+        })
+    })
+})

+ 161 - 0
imwork-windows/imwork-silos/src/main/resources/templates/upms/organization/edit.html

@@ -0,0 +1,161 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="utf-8">
+    <title>用户维护</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="format-detection" content="telephone=no">
+
+    <link rel="stylesheet" href="../../assets/lib/layui/css/layui.css" th:href="@{/assets/lib/layui/css/layui.css}" media="all"/>
+    <link rel="stylesheet" href="../../assets/lib/font/css/font-awesome.min.css" th:href="@{/assets/lib/font/css/font-awesome.css}" media="all"/>
+
+    <link rel="stylesheet" href="../../assets/lib/jsplus/zTree_v3/css/zTreeStyle/zTreeStyle.css" th:href="@{/assets/lib/jsplus/zTree_v3/css/zTreeStyle/zTreeStyle.css}" media="all">
+    <link rel="stylesheet" href="../../assets/css/admin.css" th:href="@{/assets/css/admin.css}">
+
+</head>
+<body class="childrenBody">
+<form class="layui-form" style="width:80%;">
+    <!--<input type="hidden" id="id" name="id" th:value="${session.role.id}"/>
+    <div class="layui-form-item">
+        <div class="layui-inline">
+            <label class="layui-form-label">用户名称</label>
+            <div class="layui-input-block">
+                <input type="text" id="userName" name="userName" class="layui-input" placeholder="请输入用户名称">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <label class="layui-form-label">角色类型</label>
+            <div class="layui-input-inline">
+                <input type="text" id="roleType" name="roleType" class="layui-input roleType" lay-verify="required" th:value="${session.role.roleType}"
+                       placeholder="请输入角色类型">
+            </div>
+        </div>
+    </div>-->
+    <div class="layui-row childrenRow">
+        <div class="magb15 layui-col-md6 layui-col-xs12">
+            <label class="layui-form-label">用户名</label>
+            <div class="layui-input-block">
+                <input type="text" id="userName" name="userName" class="layui-input userName" lay-verify="required"
+                       placeholder="请输入用户名">
+            </div>
+        </div>
+        <div class="magb15 layui-col-md6 layui-col-xs12">
+            <label class="layui-form-label">登录名</label>
+            <div class="layui-input-block">
+                <input type="text" id="loginName" name="loginName" class="layui-input loginName" lay-verify="required"
+                       placeholder="请输入登录名">
+            </div>
+        </div>
+    </div>
+
+    <div class="layui-row childrenRow">
+        <div class="magb15 layui-col-md6 layui-col-xs12">
+            <label class="layui-form-label">用户地址</label>
+            <div class="layui-input-block">
+                <input type="text" id="userAddress" name="userAddress" class="layui-input userAddress"
+                       placeholder="请输入用户地址">
+            </div>
+        </div>
+        <div class="magb15 layui-col-md6 layui-col-xs12">
+            <label class="layui-form-label">手机号码</label>
+            <div class="layui-input-block">
+                <input type="text" id="userMobilePhone" name="userMobilPhone" class="layui-input userMobilePhone"
+                       lay-verify="phone" placeholder="请输入手机号码">
+            </div>
+        </div>
+    </div>
+
+    <div class="layui-row childrenRow">
+        <div class="magb15 layui-col-md6 layui-col-xs12">
+            <label class="layui-form-label">用户昵称</label>
+            <div class="layui-input-block">
+                <input type="text" id="userNickName" name="userAddress" class="layui-input userNickName"
+                       placeholder="请输入用户昵称">
+            </div>
+        </div>
+        <div class="magb15 layui-col-md6 layui-col-xs12">
+            <label class="layui-form-label">网络类型</label>
+            <div class="layui-input-block">
+                <select id="allowedNetworkType" name="allowedNetworkType" class="allowedNetworkType" lay-filter="allowedNetworkType">
+                    <option value="9">通用</option>0.内网1.外网9.通用
+                    <option value="0">内网</option>
+                    <option value="1">外网</option>
+                    <option value="2">工作</option>
+                </select>
+            </div>
+        </div>
+    </div>
+
+    <div class="layui-row childrenRow">
+        <div class="magb15 layui-col-md6 layui-col-xs12">
+            <label class="layui-form-label">邮箱</label>
+            <div class="layui-input-block">
+                <input type="text" id="userEmail" name="userEmail" class="layui-input userEmail" lay-verify="email" placeholder="请输入邮箱">
+            </div>
+        </div>
+        <div class="magb15 layui-col-md6 layui-col-xs12">
+            <label class="layui-form-label">性别</label>
+            <div id="userGender" class="layui-input-block userGender">
+                <input type="radio" name="sex" value="0" title="男">
+                <input type="radio" name="sex" value="1" title="女">
+                <input type="radio" name="sex" value="2" title="保密" checked>
+            </div>
+        </div>
+    </div>
+
+    <div class="layui-row childrenRow">
+        <div class="magb15 layui-col-md6 layui-col-xs12">
+            <label class="layui-form-label">用户类型</label>
+            <div class="layui-input-block">
+                <select id="userType" name="userType" class="userType" lay-filter="userType">
+                    <option value="0">系统默认</option>
+                    <option value="1">普通管理员</option>
+                    <option value="2">系统管理员</option>
+                    <option value="9">超级管理员</option>
+                </select>
+            </div>
+        </div>
+        <div class="magb15 layui-col-md6 layui-col-xs12">
+            <label class="layui-form-label">用户状态</label>
+            <div class="layui-input-block">
+                <select id="userStatus" name="userStatus" class="userStatus" lay-filter="userStatus">
+                    <option value="0">正常使用</option>
+                    <option value="1">无效用户</option>
+                    <option value="2">已经删除</option>
+                    <option value="3">暂停使用</option>
+                </select>
+            </div>
+        </div>
+    </div>
+    <div class="layui-form-item layui-row layui-col-xs12 childrenRow">
+        <label class="layui-form-label">用户简介</label>
+        <div class="layui-input-block">
+            <textarea placeholder="请输入用户简介" id="userDesc" name="userDesc" class="layui-textarea userDesc"></textarea>
+        </div>
+    </div>
+    <div class="layui-form-item layui-row layui-col-xs12 childrenRow">
+        <label class="layui-form-label">备注</label>
+        <div class="layui-input-block">
+            <textarea placeholder="请输入备注" id="remark" name="remark" class="layui-textarea remark"></textarea>
+        </div>
+    </div>
+    <div class="layui-form-item layui-row layui-col-xs12">
+        <div class="layui-input-block">
+            <button class="layui-btn layui-btn-sm" lay-submit="" lay-filter="save">保存</button>
+            <button type="reset" class="layui-btn layui-btn-sm layui-btn-primary">清除</button>
+        </div>
+    </div>
+</form>
+<script src="../../assets/lib/jquery/jquery.js" th:src="@{/assets/lib/jquery/jquery.min.js}"></script>
+<script src="../../assets/lib/jsplus/zTree_v3/js/jquery.ztree.all.js" th:src="@{/assets/lib/jsplus/zTree_v3/js/jquery.ztree.all.js}"></script>
+<script type="text/javascript" src="../../assets/lib/layui/layui.js" th:src="@{/assets/lib/layui/layui.js}"></script>
+<script type="text/javascript" src="../../business/upms/user/edit.js" th:src="@{/business/upms/user/edit.js}"></script>
+<script th:inline="javascript" type="text/javascript">
+    /*var ctxPath = [[${#httpServletRequest.getContextPath()}]];*/
+</script>
+</body>
+</html>

+ 56 - 0
imwork-windows/imwork-silos/src/main/resources/templates/upms/organization/list.html

@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="utf-8">
+	<title>组织管理</title>
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+	<meta name="apple-mobile-web-app-status-bar-style" content="black">
+	<meta name="apple-mobile-web-app-capable" content="yes">
+	<meta name="format-detection" content="telephone=no">
+
+	<link rel="shortcut icon" href="../../assets/images/logo/logo.png" th:href="@{/assets/images/logo/logo.png}"/>
+	<link rel="bookmark" href="../../assets/images/logo/logo.png" th:href="@{/assets/images/logo/logo.png}"/>
+    <link rel="stylesheet" href="../../../static/assets/lib/layui/css/layui.css" th:href="@{/assets/lib/layui/css/layui.css}"/>
+    <link rel="stylesheet" href="../../../static/assets/lib/fonts/fontawesome4/css/font-awesome.css" th:href="@{/assets/lib/fonts/fontawesome4/css/font-awesome.css}"/>
+<style type="text/css">
+	.childrenBody{ padding:10px;}
+	.childrenRow{
+		margin: 10px;
+	}
+</style>
+</head>
+<body class="childrenBody">
+<form class="layui-form">
+	<blockquote class="layui-elem-quote quoteBox">
+		<form class="layui-form">
+			<div class="layui-inline">
+				<div class="layui-input-inline">
+					<input type="text" class="layui-input searchVal" placeholder="请输入搜索的内容" />
+				</div>
+				<a class="layui-btn search_btn" data-type="reload">搜索</a>
+			</div>
+			<div class="layui-inline">
+				<a class="layui-btn layui-btn-normal add_btn">添加角色</a>
+			</div>
+			<div class="layui-inline">
+				<a class="layui-btn layui-btn-danger layui-btn-normal delAll_btn">批量删除</a>
+			</div>
+		</form>
+	</blockquote>
+	<table id="list" lay-filter="list"></table>
+
+	<!--操作-->
+	<script type="text/html" id="userListBar">
+		<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
+		<a class="layui-btn layui-btn-xs layui-btn-warm" lay-event="usable">已启用</a>
+		<a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除</a>
+	</script>
+</form>
+
+<script src="../../../static/assets/lib/jquery/jquery.js" th:src="@{/assets/lib/jquery/jquery.js}"></script>
+<script src="../../../static/assets/lib/layui/layui.js" th:src="@{/assets/lib/layui/layui.js}"></script>
+<script src="../../../static/business/upms/organization/list.js" th:src="@{/business/upms/organization/list.js}"></script>
+</body>
+</html>

+ 64 - 0
imwork-windows/imwork-silos/src/main/resources/templates/upms/permission/list.html

@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="utf-8">
+    <title>权限管理</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="format-detection" content="telephone=no">
+
+    <link rel="stylesheet" href="../../../static/assets/lib/layui/css/layui.css" th:href="@{/assets/lib/layui/css/layui.css}"/>
+    <link rel="stylesheet" href="../../../static/assets/lib/fonts/fontawesome4/css/font-awesome.css" th:href="@{/assets/lib/fonts/fontawesome4/css/font-awesome.css}"/>
+    <link rel="stylesheet" href="../../../static/assets/css/commons.css" th:href="@{/assets/css/commons.css}"/>
+</head>
+<body class="childrenBody">
+<div class="layui-card">
+    <div class="layui-card-body">
+        <form class="layui-form">
+            <div class="layui-inline">
+                <label class="layui-form-label">关键字搜索</label>
+                <div class="layui-input-inline">
+                    <input type="text" id="keyword" name="keyword" class="layui-input" placeholder="请输入模块名称">
+                </div>
+            </div>
+            <div class="layui-inline">
+                <a class="layui-btn search_btn" data-type="reload">搜索</a>
+            </div>
+            <div class="layui-inline">
+                <a class="layui-btn expandAll_btn" data-type="reload">全部展开</a>
+            </div>
+            <div class="layui-inline">
+                <a class="layui-btn foldAll_btn" data-type="reload">全部折叠</a>
+            </div>
+            <div class="layui-inline">
+                <a class="layui-btn layui-btn-normal add_btn">添加权限</a>
+            </div>
+            <div class="layui-inline"><a class="layui-btn layui-btn-warm edit_btn">编辑权限</a></div>
+            <div class="layui-inline">
+                <a class="layui-btn layui-btn-danger delAll_btn">批量删除</a>
+            </div>
+            <div class="layui-inline"><a class="layui-btn layui-btn-normal refresh"><i
+                    class="layui-icon layui-icon-refresh-3"></i>刷新</a></div>
+        </form>
+        <table id="treeTableId"></table>
+    </div>
+</div>
+<div id="leftBar"></div>
+<!-- 表格操作列 -->
+<script type="text/html" id="tbBar">
+    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">编辑</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
+</script>
+
+<script src="../../../static/assets/lib/jquery/jquery.js" th:src="@{/assets/lib/jquery/jquery.js}"></script>
+<script src="../../../static/assets/lib/layui/layui.js" th:src="@{/assets/lib/layui/layui.js}"></script>
+<script src="../../../static/business/upms/user/list.js" th:src="@{/business/upms/user/list.js}"></script>
+
+<script src="../../../static/assets/lib/jplus/treeTable.js" th:src="@{/assets/js/treeTable.js}"></script>
+<script type="text/javascript" src="../../../static/business/upms/permission/list.js"
+        th:src="@{/business/upms/permission/list.js}"></script>
+</body>
+</html>

+ 213 - 0
imwork-windows/imwork-silos/src/main/resources/templates/upms/permission/update.html

@@ -0,0 +1,213 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="utf-8">
+    <title>权限维护</title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="format-detection" content="telephone=no">
+
+    <link rel="stylesheet" href="../../static/assets/lib/layui/css/layui.css" th:href="@{/assets/lib/layui/css/layui.css}" media="all">
+    <link rel="stylesheet" href="../../static/assets/lib/font/css/font-awesome.css" th:href="@{/assets/lib/font/css/font-awesome.css}" media="all">
+    <link rel="stylesheet" href="../../static/assets/lib/jsplus/zTree_v3/css/zTreeStyle/zTreeStyle.css" th:href="@{/assets/lib/jsplus/zTree_v3/css/zTreeStyle/zTreeStyle.css}" media="all">
+    <link rel="stylesheet" href="../../static/assets/css/admin.css" th:href="@{/assets/css/admin.css}">
+
+</head>
+<body class="childrenBody">
+<form class="layui-form" style="width:80%;">
+    <input type="hidden" id="id" name="id" th:value="${session.permission.id}"/>
+    <div class="layui-form-item">
+        <div class="layui-inline">
+            <label class="layui-form-label">模块编码</label>
+            <div class="layui-input-block">
+                <input type="text" id="authCode" name="authCode" th:value="${session.permission.authCode}" class="layui-input"
+                       placeholder="请输入模块编码">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <label class="layui-form-label">模块名称</label>
+            <div class="layui-input-inline">
+                <input type="text" id="authName" name="authName" th:value="${session.permission.authName}" class="layui-input authName" lay-verify="required"
+                       placeholder="请输入模块名称">
+            </div>
+        </div>
+    </div>
+
+    <div class="layui-form-item">
+        <div class="layui-inline">
+            <label class="layui-form-label">模块类型</label>
+            <div class="layui-input-block">
+                <input type="radio" name="authType"  value="0" title="父节点" checked>
+                <input type="radio" name="authType"  value="1" title="子节点">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <label class="layui-form-label">访问地址</label>
+            <div class="layui-input-inline">
+                <input type="text" id="linkUrl" name="linkUrl" th:value="${session.permission.linkUrl}" class="layui-input" lay-verify="required"
+                       placeholder="请输入url">
+            </div>
+        </div>
+    </div>
+
+    <div class="layui-form-item">
+        <div class="layui-inline">
+            <label class="layui-form-label">权限名称</label>
+            <div class="layui-input-inline">
+                <input type="text" id="permissionName" name="permissionName" th:value="${session.permission.permissionName}" class="layui-input" lay-verify="required"
+                       placeholder="请输入权限名称">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <label class="layui-form-label">权限标识</label>
+            <div class="layui-input-inline">
+                <input type="text" id="permission" name="permission" th:value="${session.permission.permission}" class="layui-input" lay-verify="required"
+                       placeholder="请输入权限标识">
+            </div>
+        </div>
+    </div>
+    <div class="layui-row">
+        <div class="magb15 layui-col-md4 layui-col-xs6">
+            <label class="layui-form-label">父级权限</label>
+            <div class="layui-input-block">
+                <input id="parentId" type="hidden" value=""/>
+                <ul id="permissionTree" class="ztree"></ul>
+            </div>
+        </div>
+    </div>
+    <br/>
+    <div class="layui-form-item layui-row layui-col-xs12">
+        <label class="layui-form-label">描述</label>
+        <div class="layui-input-block">
+            <textarea placeholder="请输入描述" id="remark" th:text="${session.permission.remark}" name="remark" class="layui-textarea remark"></textarea>
+        </div>
+    </div>
+    <div class="layui-form-item layui-row layui-col-xs12">
+        <div class="layui-input-block">
+            <button class="layui-btn layui-btn-sm" lay-submit="" lay-filter="save">立即添加</button>
+            <button type="reset" class="layui-btn layui-btn-sm layui-btn-primary">取消</button>
+        </div>
+    </div>
+</form>
+<script src="../../static/assets/lib/jquery/jquery.js" th:src="@{/assets/lib/jquery/jquery.js}"></script>
+<script src="../../static/assets/lib/jsplus/zTree_v3/js/jquery.ztree.all.js" th:src="@{/assets/lib/jsplus/zTree_v3/js/jquery.ztree.all.js}"></script>
+<script type="text/javascript" src="../../static/assets/lib/layui/layui.js" th:src="@{/assets/lib/layui/layui.js}"></script>
+<script type="text/javascript" src="../../static/business/upms/permission/save.js" th:src="@{/business/upms/permission/save.js}"></script>
+<script th:inline="javascript" type="text/javascript">
+    var zTreeList = null;
+    $.ajax({
+        //请求方式
+        type : "POST",
+        //请求的媒体类型
+        contentType: "application/json;charset=UTF-8",
+        //请求地址
+        url : "/permission/getTree",
+        //数据,json字符串
+        //请求成功
+        success : function(result) {
+            zTreeList = result.zTreeList;
+
+            var setting = {
+                view: {
+                    dblClickExpand: true,//双击节点时,是否自动展开父节点的标识
+                    showLine: true,//是否显示节点之间的连线
+                    fontCss:{'color':'black','font-weight':'bold'},//字体样式函数
+                    selectedMulti: true //设置是否允许同时选中多个节点
+                },
+                check: {
+                    chkboxType: {"Y":"s", "N":"ps"},
+                    chkStyle: "checkbox",//复选框类型
+                    enable: true //每个节点上是否显示 CheckBox
+                },
+                data: {
+                    simpleData: {
+                        enable: true,
+                        idKey: "id",
+                        pidKey: "pId",
+                        rootPId: "0"
+                    }
+                } ,callback:{
+                    onCheck:function(e,treeId, treeNode){
+                        if(treeId == "permissionTree") {
+                            var zTreeObj = $.fn.zTree.getZTreeObj(treeId);
+                            optParOrSon(treeId, treeNode,zTreeObj);
+                        }
+                    }
+                }
+            };
+            /**
+             * 选父不选子,选子不选父
+             * */
+            var optParOrSon = function(treeId,treeNode,zTreeObj){
+                if(treeNode.checked){
+                    // console.log(treeNode.id);
+                    $("#parentId").val(treeNode.id);
+                    //取消全部后代节点的选中
+                    var childNodes = getChildsByTreeNode(treeNode);
+                    for(var i in childNodes){
+                        zTreeObj.checkNode(childNodes[i], false, false);
+                    }
+                    //同时全部祖先节点也不能被选中
+                    if(treeNode.getParentNode()){
+                        var parNodes = getParsByTreeNode(treeNode);
+                        for(var i in parNodes){
+                            zTreeObj.checkNode(parNodes[i], false, false);
+                        }
+                    }
+                }
+            };
+
+            //展开选中节点
+            var expandCheckedNode = function(){
+                //获取所有选中状态的节点
+                var checkedNodes = zTreeObj.getCheckedNodes(true);
+                for(var i in checkedNodes){
+                    var checkedParAll = getParsAll(checkedNodes[i]);
+                    for(var j in checkedParAll){
+                        zTreeObj.expandNode(checkedParAll[j],true,false);
+                    }
+                }
+            };
+
+            //获取所有子节点
+            var getChildsByTreeNode = function(treeNode,childsArr){
+                var childsArr = childsArr || [];
+                if (treeNode.isParent) {//是父节点则获取所有子节点
+                    var childs = treeNode.children;
+                    for(var i in childs){
+                        childsArr.push(childs[i]);
+                        getChildsByTreeNode(childs[i],childsArr);
+                    }
+                }
+                return childsArr;
+            };
+
+            //获取所有父节点
+            var getParsByTreeNode = function(treeNode,parsArr){
+                var parsArr = parsArr || [];
+                var parNode = treeNode.getParentNode();
+                if(parNode){
+                    parsArr.push(parNode);
+                    getParsByTreeNode(parNode,parsArr);
+                }
+                return parsArr;
+            }
+            $(document).ready(function(){
+                // console.log(zTreeList);
+                zTreeObj = $.fn.zTree.init($("#permissionTree"), setting, zTreeList);
+            });
+        },
+        //请求失败,包含具体的错误信息
+        error : function(e){
+            console.log(e.status);
+            console.log(e.responseText);
+        }
+    });
+
+
+</script>
+</body>
+</html>