菜单

管理模块 (mall-admin)

相关源文件

Admin Module (mall-admin) 是 Mall 电商平台的后端管理系统。它提供了一套完整的 API 来处理管理功能,包括用户管理、基于角色的访问控制、产品管理、类别管理以及其他重要的电商管理操作。该模块由 mall-admin-web 前端应用消费,并且设计为仅供拥有适当权限的已认证管理员访问。

有关面向客户的功能,请参阅 Portal Module (mall-portal)。有关产品搜索功能,请参阅 Search Module (mall-search)

1. 模块架构

mall-admin 模块遵循分层架构模式,具有清晰的关注点分离,使其易于维护和扩展。

来源:mall-admin/src/main/java/com/macro/mall/controller/UmsAdminController.java mall-admin/src/main/java/com/macro/mall/service/impl/UmsAdminServiceImpl.java mall-admin/src/main/java/com/macro/mall/service/UmsAdminService.java mall-admin/src/main/java/com/macro/mall/bo/AdminUserDetails.java mall-admin/src/main/java/com/macro/mall/dao/UmsAdminRoleRelationDao.java

2. 用户与角色管理

Admin Module 提供全面的用户管理,支持基于角色的访问控制,允许为管理员用户进行精细化的权限分配。

2.1 用户管理

UmsAdminControllerUmsAdminService 负责处理与管理员用户相关的操作,包括:

  • 用户注册
  • 认证(登录/登出)
  • 用户信息检索
  • 密码管理
  • 用户角色分配

来源:mall-admin/src/main/java/com/macro/mall/controller/UmsAdminController.java58-70 mall-admin/src/main/java/com/macro/mall/service/impl/UmsAdminServiceImpl.java98-119

2.2 角色与权限管理

系统实现了基于角色的访问控制机制,包括:

  • 角色创建与管理
  • 资源-角色映射
  • 菜单-角色映射
  • 管理员-角色映射

来源:mall-admin/src/main/java/com/macro/mall/service/UmsRoleService.java mall-admin/src/main/java/com/macro/mall/controller/UmsRoleController.java mall-admin/src/main/java/com/macro/mall/service/impl/UmsRoleServiceImpl.java

管理员用户登录时,系统会检索其关联的角色、资源和菜单。

来源:mall-admin/src/main/java/com/macro/mall/controller/UmsAdminController.java87-106 mall-admin/src/main/java/com/macro/mall/service/impl/UmsAdminServiceImpl.java220-223 mall-admin/src/main/java/com/macro/mall/dao/UmsAdminRoleRelationDao.java21-23

3. 产品管理

Admin Module 的核心功能之一是全面的产品管理。这包括产品创建、修改、分类和状态管理。

3.1 产品 CRUD 操作

系统中的产品通过 PmsProductControllerPmsProductService 进行管理。

来源:mall-admin/src/main/java/com/macro/mall/controller/PmsProductController.java mall-admin/src/main/java/com/macro/mall/service/PmsProductService.java mall-admin/src/main/java/com/macro/mall/dto/PmsProductParam.java

产品创建过程复杂,涉及多个相关实体。

来源:mall-admin/src/main/java/com/macro/mall/service/impl/PmsProductServiceImpl.java68-95 mall-admin/src/main/java/com/macro/mall/service/impl/PmsProductServiceImpl.java310-325

3.2 产品分类管理

产品分类通过 PmsProductCategoryControllerPmsProductCategoryService 进行管理。

来源:mall-admin/src/main/java/com/macro/mall/controller/PmsProductCategoryController.java mall-admin/src/main/java/com/macro/mall/service/PmsProductCategoryService.java mall-admin/src/main/java/com/macro/mall/service/impl/PmsProductCategoryServiceImpl.java137-153

4. 认证与授权

Admin Module 实现了一个基于 JWT 的认证系统,并集成了 Spring Security。

4.1 认证流程

来源:mall-admin/src/main/java/com/macro/mall/controller/UmsAdminController.java58-70 mall-admin/src/main/java/com/macro/mall/service/impl/UmsAdminServiceImpl.java98-119 mall-admin/src/main/java/com/macro/mall/service/impl/UmsAdminServiceImpl.java264-273

4.2 资源授权

系统实现了一个自定义的 AdminUserDetails 类,该类与 Spring Security 集成。

来源:mall-admin/src/main/java/com/macro/mall/bo/AdminUserDetails.java

当用户尝试访问受保护的资源时,系统会检查用户是否拥有所需的权限。

  1. JWT 令牌被验证。
  2. 用户的身份被确定。
  3. 用户的资源从缓存或数据库中检索。
  4. Spring Security 检查请求的资源是否在用户的权限列表中。

5. API 结构

Admin Module 按领域组织 RESTful API。

控制器基础路径关键端点功能
UmsAdminController/admin/register, /login, /info, /logout管理员用户管理
UmsRoleController/role/create, /update, /delete, /list角色管理
PmsProductController/product/create, /update, /list, /update/publishStatus产品管理
PmsProductCategoryController/productCategory/create, /update, /list, /list/withChildren类别管理

来源:mall-admin/src/main/java/com/macro/mall/controller/UmsAdminController.java36 mall-admin/src/main/java/com/macro/mall/controller/UmsRoleController.java23 mall-admin/src/main/java/com/macro/mall/controller/PmsProductController.java26 mall-admin/src/main/java/com/macro/mall/controller/PmsProductCategoryController.java26

6.与其他模块集成

mall-admin 模块与系统中的其他几个模块进行了集成

来源:mall-admin/src/main/java/com/macro/mall/controller/UmsAdminController.java4-12 mall-admin/src/main/java/com/macro/mall/service/impl/UmsAdminServiceImpl.java3-18

6.1 依赖关系

Admin 模块依赖于:

  1. mall-common:用于共享的工具类、常量和通用的响应结构。
  2. mall-mbg:用于 MyBatis 生成的代码,包括 mapper 和 model 类。
  3. mall-security:用于身份验证和授权机制。

6.2 数据库交互

该模块通过 MyBatis mappers 和自定义 DAOs 与多个数据库表进行交互。

来源:mall-admin/src/main/java/com/macro/mall/dao/UmsAdminRoleRelationDao.java mall-admin/src/main/resources/dao/UmsAdminRoleRelationDao.xml

7. 缓存策略

Admin 模块实现了一个缓存机制,用于缓存经常访问的数据,例如管理员用户信息和资源列表。

来源:mall-admin/src/main/java/com/macro/mall/service/impl/UmsAdminServiceImpl.java62-74 mall-admin/src/main/java/com/macro/mall/service/impl/UmsAdminServiceImpl.java225-238 mall-admin/src/main/java/com/macro/mall/service/UmsAdminService.java88-91

缓存策略通过减少对常用数据的数据库查询来提高性能。服务首先尝试从缓存中检索数据,然后再查询数据库。

8. 总结

Admin 模块(mall-admin)是 Mall 电子商务系统的管理骨干,为管理员、产品、类别和平台其他关键方面提供了全面的管理功能。它实现了分层架构,具有清晰的关注点分离、强大的 JWT 和基于角色的访问控制安全性,以及用于提高性能的全面缓存策略。

其 RESTful API 设计能够与管理员前端应用程序无缝集成,同时与核心模块的集成确保了整个系统功能的统一性。该模块的事务管理和全面的审计日志记录确保了数据完整性和管理操作的可追溯性。