diff --git a/src/main/java/com/mini/capi/biz/controller/ApiMenusController.java b/src/main/java/com/mini/capi/biz/controller/ApiMenusController.java new file mode 100644 index 0000000..717fb76 --- /dev/null +++ b/src/main/java/com/mini/capi/biz/controller/ApiMenusController.java @@ -0,0 +1,18 @@ +package com.mini.capi.biz.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 前端控制器 + *

+ * + * @author gaoxq + * @since 2025-08-29 + */ +@RestController +@RequestMapping("/biz/apiMenus") +public class ApiMenusController { + +} diff --git a/src/main/java/com/mini/capi/biz/controller/ApiModuleController.java b/src/main/java/com/mini/capi/biz/controller/ApiModuleController.java new file mode 100644 index 0000000..0cf0127 --- /dev/null +++ b/src/main/java/com/mini/capi/biz/controller/ApiModuleController.java @@ -0,0 +1,18 @@ +package com.mini.capi.biz.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 前端控制器 + *

+ * + * @author gaoxq + * @since 2025-08-29 + */ +@RestController +@RequestMapping("/biz/apiModule") +public class ApiModuleController { + +} diff --git a/src/main/java/com/mini/capi/biz/domain/ApiMenus.java b/src/main/java/com/mini/capi/biz/domain/ApiMenus.java new file mode 100644 index 0000000..1098bc6 --- /dev/null +++ b/src/main/java/com/mini/capi/biz/domain/ApiMenus.java @@ -0,0 +1,65 @@ +package com.mini.capi.biz.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author gaoxq + * @since 2025-08-29 + */ +@Getter +@Setter +@TableName("biz_api_menus") +public class ApiMenus implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableField("menu_id") + private String menuId; + + @TableField("menu_name") + private String menuName; + + @TableField("menu_code") + private String menuCode; + + @TableField("c_icon") + private String cIcon; + + @TableField("c_href") + private String cHref; + + @TableField("module_code") + private String moduleCode; + + /** + * 租户id + */ + @TableField("f_tenant_id") + private String fTenantId; + + /** + * 流程id + */ + @TableField("f_flow_id") + private String fFlowId; + + /** + * 流程任务主键 + */ + @TableField("f_flow_task_id") + private String fFlowTaskId; + + /** + * 流程任务状态 + */ + @TableField("f_flow_state") + private Integer fFlowState; +} diff --git a/src/main/java/com/mini/capi/biz/domain/ApiModule.java b/src/main/java/com/mini/capi/biz/domain/ApiModule.java new file mode 100644 index 0000000..739f1a3 --- /dev/null +++ b/src/main/java/com/mini/capi/biz/domain/ApiModule.java @@ -0,0 +1,62 @@ +package com.mini.capi.biz.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author gaoxq + * @since 2025-08-29 + */ +@Getter +@Setter +@TableName("biz_api_module") +public class ApiModule implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableField("module_id") + private String moduleId; + + @TableField("module_name") + private String moduleName; + + @TableField("module_code") + private String moduleCode; + + @TableField("c_icon") + private String cIcon; + + @TableField("c_href") + private String cHref; + + /** + * 租户id + */ + @TableField("f_tenant_id") + private String fTenantId; + + /** + * 流程id + */ + @TableField("f_flow_id") + private String fFlowId; + + /** + * 流程任务主键 + */ + @TableField("f_flow_task_id") + private String fFlowTaskId; + + /** + * 流程任务状态 + */ + @TableField("f_flow_state") + private Integer fFlowState; +} diff --git a/src/main/java/com/mini/capi/biz/mapper/ApiMenusMapper.java b/src/main/java/com/mini/capi/biz/mapper/ApiMenusMapper.java new file mode 100644 index 0000000..3116873 --- /dev/null +++ b/src/main/java/com/mini/capi/biz/mapper/ApiMenusMapper.java @@ -0,0 +1,16 @@ +package com.mini.capi.biz.mapper; + +import com.mini.capi.biz.domain.ApiMenus; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author gaoxq + * @since 2025-08-29 + */ +public interface ApiMenusMapper extends BaseMapper { + +} diff --git a/src/main/java/com/mini/capi/biz/mapper/ApiModuleMapper.java b/src/main/java/com/mini/capi/biz/mapper/ApiModuleMapper.java new file mode 100644 index 0000000..55c2ce0 --- /dev/null +++ b/src/main/java/com/mini/capi/biz/mapper/ApiModuleMapper.java @@ -0,0 +1,16 @@ +package com.mini.capi.biz.mapper; + +import com.mini.capi.biz.domain.ApiModule; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author gaoxq + * @since 2025-08-29 + */ +public interface ApiModuleMapper extends BaseMapper { + +} diff --git a/src/main/java/com/mini/capi/biz/service/ApiMenusService.java b/src/main/java/com/mini/capi/biz/service/ApiMenusService.java new file mode 100644 index 0000000..34c18c6 --- /dev/null +++ b/src/main/java/com/mini/capi/biz/service/ApiMenusService.java @@ -0,0 +1,16 @@ +package com.mini.capi.biz.service; + +import com.mini.capi.biz.domain.ApiMenus; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author gaoxq + * @since 2025-08-29 + */ +public interface ApiMenusService extends IService { + +} diff --git a/src/main/java/com/mini/capi/biz/service/ApiModuleService.java b/src/main/java/com/mini/capi/biz/service/ApiModuleService.java new file mode 100644 index 0000000..8a54d9c --- /dev/null +++ b/src/main/java/com/mini/capi/biz/service/ApiModuleService.java @@ -0,0 +1,16 @@ +package com.mini.capi.biz.service; + +import com.mini.capi.biz.domain.ApiModule; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author gaoxq + * @since 2025-08-29 + */ +public interface ApiModuleService extends IService { + +} diff --git a/src/main/java/com/mini/capi/biz/service/impl/ApiMenusServiceImpl.java b/src/main/java/com/mini/capi/biz/service/impl/ApiMenusServiceImpl.java new file mode 100644 index 0000000..129def7 --- /dev/null +++ b/src/main/java/com/mini/capi/biz/service/impl/ApiMenusServiceImpl.java @@ -0,0 +1,20 @@ +package com.mini.capi.biz.service.impl; + +import com.mini.capi.biz.domain.ApiMenus; +import com.mini.capi.biz.mapper.ApiMenusMapper; +import com.mini.capi.biz.service.ApiMenusService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author gaoxq + * @since 2025-08-29 + */ +@Service +public class ApiMenusServiceImpl extends ServiceImpl implements ApiMenusService { + +} diff --git a/src/main/java/com/mini/capi/biz/service/impl/ApiModuleServiceImpl.java b/src/main/java/com/mini/capi/biz/service/impl/ApiModuleServiceImpl.java new file mode 100644 index 0000000..37e1e6e --- /dev/null +++ b/src/main/java/com/mini/capi/biz/service/impl/ApiModuleServiceImpl.java @@ -0,0 +1,20 @@ +package com.mini.capi.biz.service.impl; + +import com.mini.capi.biz.domain.ApiModule; +import com.mini.capi.biz.mapper.ApiModuleMapper; +import com.mini.capi.biz.service.ApiModuleService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author gaoxq + * @since 2025-08-29 + */ +@Service +public class ApiModuleServiceImpl extends ServiceImpl implements ApiModuleService { + +} diff --git a/src/main/java/com/mini/capi/mybatis/demo.java b/src/main/java/com/mini/capi/mybatis/demo.java index 5bf931d..045af45 100644 --- a/src/main/java/com/mini/capi/mybatis/demo.java +++ b/src/main/java/com/mini/capi/mybatis/demo.java @@ -29,7 +29,7 @@ public class demo { .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "/src/main/resources/mapper")); }) .strategyConfig(builder -> { - builder.addInclude("biz_api_user") + builder.addInclude("biz_api_module,biz_api_menus") .addTablePrefix("biz_") .entityBuilder() .enableLombok() diff --git a/src/main/java/com/mini/capi/sys/controller/LoginController.java b/src/main/java/com/mini/capi/sys/controller/LoginController.java index 33c6ba4..484f04b 100644 --- a/src/main/java/com/mini/capi/sys/controller/LoginController.java +++ b/src/main/java/com/mini/capi/sys/controller/LoginController.java @@ -1,18 +1,20 @@ package com.mini.capi.sys.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.mini.capi.biz.domain.ApiMenus; +import com.mini.capi.biz.domain.ApiModule; import com.mini.capi.biz.domain.ApiUser; import com.mini.capi.biz.service.ApiUserService; import com.mini.capi.model.auth.Result; +import com.mini.capi.sys.service.PortalService; import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpSession; import lombok.Data; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.io.Serializable; +import java.util.List; import java.util.Objects; @@ -24,6 +26,9 @@ public class LoginController { @Resource private ApiUserService userService; + @Resource + private PortalService portalService; + @Data public static class LoginRequest implements Serializable { @@ -63,4 +68,20 @@ public class LoginController { return Result.error("登录失败,请稍后重试"); } } + + + @GetMapping("/modules") + public List modules() { + return portalService.listModules(); + } + + @GetMapping("/menus") + public List menus(@RequestParam String moduleCode) { + return portalService.listMenus(moduleCode); + } + + @GetMapping("/me") + public ApiUser me(HttpServletRequest request) { + return portalService.currentUser(request); + } } diff --git a/src/main/java/com/mini/capi/sys/service/PortalService.java b/src/main/java/com/mini/capi/sys/service/PortalService.java new file mode 100644 index 0000000..cc92932 --- /dev/null +++ b/src/main/java/com/mini/capi/sys/service/PortalService.java @@ -0,0 +1,95 @@ +package com.mini.capi.sys.service; + +import com.mini.capi.biz.domain.ApiMenus; +import com.mini.capi.biz.domain.ApiModule; +import com.mini.capi.biz.domain.ApiUser; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class PortalService { + + + private final List modules = Arrays.asList( + createModule("m1","API管理","API","fa-code","#api"), + createModule("m2","邮件管理","MAIL","fa-envelope","#mail"), + createModule("m3","数据管理","DATA","fa-database","#data"), + createModule("m4","系统管理","SYS","fa-cog","#system") + ); + + private final List menus = Arrays.asList( + // API + createMenu("m1-1","新增API","API_ADD","fa-plus-circle","#api/add","API"), + createMenu("m1-2","API列表","API_LIST","fa-list","#api/list","API"), + createMenu("m1-3","调用统计","API_STAT","fa-bar-chart","#api/stat","API"), + createMenu("m1-4","密钥管理","API_KEY","fa-key","#api/key","API"), + createMenu("m1-5","权限设置","API_PERM","fa-shield","#api/perm","API"), + createMenu("m1-6","调用记录","API_LOG","fa-history","#api/log","API"), + + // MAIL + createMenu("m2-1","发送邮件","MAIL_SEND","fa-pencil","#mail/send","MAIL"), + createMenu("m2-2","收件箱","MAIL_INBOX","fa-inbox","#mail/inbox","MAIL"), + createMenu("m2-3","已发送","MAIL_SENT","fa-paper-plane","#mail/sent","MAIL"), + createMenu("m2-4","垃圾箱","MAIL_TRASH","fa-trash","#mail/trash","MAIL"), + createMenu("m2-5","星标邮件","MAIL_STAR","fa-star","#mail/star","MAIL"), + createMenu("m2-6","邮件设置","MAIL_SET","fa-cog","#mail/set","MAIL"), + + // DATA + createMenu("m3-1","数据列表","DATA_LIST","fa-table","#data/list","DATA"), + createMenu("m3-2","数据筛选","DATA_FILTER","fa-filter","#data/filter","DATA"), + createMenu("m3-3","数据导出","DATA_EXPORT","fa-download","#data/export","DATA"), + createMenu("m3-4","数据导入","DATA_IMPORT","fa-upload","#data/import","DATA"), + createMenu("m3-5","数据分析","DATA_ANALYZE","fa-bar-chart","#data/analyze","DATA"), + createMenu("m3-6","操作记录","DATA_LOG","fa-history","#data/log","DATA"), + + // SYS + createMenu("m4-1","用户管理","SYS_USER","fa-user","#sys/user","SYS"), + createMenu("m4-2","角色权限","SYS_ROLE","fa-users","#sys/role","SYS"), + createMenu("m4-3","系统设置","SYS_SET","fa-sliders","#sys/set","SYS"), + createMenu("m4-4","插件管理","SYS_PLUGIN","fa-plug","#sys/plugin","SYS"), + createMenu("m4-5","安全中心","SYS_SECURE","fa-shield","#sys/secure","SYS"), + createMenu("m4-6","关于系统","SYS_ABOUT","fa-info-circle","#sys/about","SYS") + ); + + public List listModules() { + return modules; + } + + public List listMenus(String moduleCode) { + return menus.stream() + .filter(m -> m.getModuleCode().equalsIgnoreCase(moduleCode)) + .collect(Collectors.toList()); + } + + public ApiUser currentUser(HttpServletRequest request) { + HttpSession session = request.getSession(); + return (ApiUser) session.getAttribute("Authorization"); + } + + /* ---------- helper ---------- */ + private ApiModule createModule(String id, String name, String code, String icon, String href) { + ApiModule m = new ApiModule(); + m.setModuleId(id); + m.setModuleName(name); + m.setModuleCode(code); + m.setCIcon(icon); + m.setCHref(href); + return m; + } + + private ApiMenus createMenu(String id, String name, String code, String icon, String href, String moduleCode) { + ApiMenus m = new ApiMenus(); + m.setMenuId(id); + m.setMenuName(name); + m.setMenuCode(code); + m.setCIcon(icon); + m.setCHref(href); + m.setModuleCode(moduleCode); + return m; + } +} diff --git a/src/main/resources/mapper/ApiMenusMapper.xml b/src/main/resources/mapper/ApiMenusMapper.xml new file mode 100644 index 0000000..3662bdd --- /dev/null +++ b/src/main/resources/mapper/ApiMenusMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + menu_id, menu_name, menu_code, c_icon, c_href, module_code, f_tenant_id, f_flow_id, f_flow_task_id, f_flow_state + + + diff --git a/src/main/resources/mapper/ApiModuleMapper.xml b/src/main/resources/mapper/ApiModuleMapper.xml new file mode 100644 index 0000000..cdbd1b2 --- /dev/null +++ b/src/main/resources/mapper/ApiModuleMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + module_id, module_name, module_code, c_icon, c_href, f_tenant_id, f_flow_id, f_flow_task_id, f_flow_state + + + diff --git a/src/main/resources/static/views/demo.html b/src/main/resources/static/views/demo.html index 566549b..f342bca 100644 --- a/src/main/resources/static/views/demo.html +++ b/src/main/resources/static/views/demo.html @@ -1,10 +1,408 @@ - + - Title - - + + 智能化管理系统 + + + + + + + + + + + + +
+
+ +
+
+ +
+

智能管理平台

+
+ + + + + +
+ + + + +
+
+
+ + +
+
+
+
+ + + + + + + + \ No newline at end of file