logo
0
0
WeChat Login
unknown<jiangguiping@sciveda.mgmt>
调整后台管理系统样式

通用积分模块开发文档

概述

本项目实现了一个基于AOP的低耦合通用积分模块,支持论坛、商城、教育等多种业务场景的积分管理需求。通过注解驱动的方式,实现非侵入式积分功能集成。

核心特性

1. 低耦合设计

  • AOP切面:通过@PointsEvent注解实现非侵入式积分功能
  • 注解驱动:现有业务代码只需添加注解即可集成积分功能
  • 异步处理:支持异步积分处理,不影响主业务流程性能

2. 通用性支持

  • 多场景适配:支持论坛、商城、教育等不同业务场景
  • 配置化管理:所有积分规则通过数据库配置,支持动态调整
  • 灵活扩展:新的积分事件只需添加配置和注解

3. 完整功能

  • 积分产生:支持事件触发式积分获得
  • 积分消耗:支持兑换、抵扣、扣除等场景
  • 规则控制:支持有效期、上限、转赠等核心规则

快速开始

1. 数据库初始化

执行database/points_table.sql文件创建积分模块所需表结构:

source database/points_table.sql

2. 集成使用示例

用户注册积分集成

@Service public class AuthService { @PointsEvent(eventCode = "USER_REGISTER", sourceType = "AUTH") public User register(RegisterRequest request) { // 原有注册逻辑完全不变 User user = new User(); user.setUsername(request.getUsername()); user.setPassword(passwordUtils.encode(request.getPassword())); return userService.createUser(user); } }

内容发布积分集成

@Service public class CommentService { @PointsEvent(eventCode = "POST_COMMENT", sourceType = "COMMENT", sourceIdIndex = 0) public Comment createComment(CreateCommentRequest request) { // 原有评论逻辑完全不变 Comment comment = new Comment(); comment.setContent(request.getContent()); comment.setUserId(CurrentUserUtils.getCurrentUserId()); return commentMapper.insert(comment); } }

3. API接口使用

查询个人积分记录

GET /api/points/records/my?page=1&size=10 Authorization: Bearer {token}

获取个人积分汇总

GET /api/points/summary/my Authorization: Bearer {token}

积分功能演示

POST /api/points/demo/register Content-Type: application/json { "username": "testuser", "password": "password", "email": "test@example.com" }

核心组件说明

1. 注解系统

  • @PointsEvent:标记需要触发积分事件的方法
  • 支持条件表达式、异步处理、来源标识等配置

2. AOP切面

  • PointsAspect:拦截注解方法,自动处理积分逻辑
  • 支持SpEL表达式条件验证
  • 自动获取用户信息和来源信息

3. 服务层

  • PointsEventService:积分事件处理核心逻辑
  • PointsRecordService:积分记录管理
  • PointsRuleService:积分规则验证
  • PointsSummaryService:用户积分汇总管理

4. 数据模型

  • PointsEventConfig:积分事件配置
  • PointsRecord:积分变动记录
  • PointsRuleConfig:积分规则配置
  • UserPointsSummary:用户积分汇总

配置说明

1. 应用配置

application.yml中配置积分模块参数:

points: async: enabled: true core-pool-size: 5 expiry: check-enabled: true check-cron: "0 0 2 * * ?" rules: daily-max-gain: 1000 single-max-gain: 500

2. 数据库配置

积分事件配置表示例:

INSERT INTO points_event_config (event_code, event_name, points_value, event_type, description) VALUES ('USER_REGISTER', '用户注册', 100, 'GAIN', '新用户注册成功获得积分'), ('POST_ARTICLE', '发表文章', 20, 'GAIN', '发表文章获得积分'), ('REDEEM_COUPON', '兑换优惠券', -100, 'CONSUME', '使用积分兑换优惠券');

开发指南

1. 新增积分事件

  1. points_event_config表中添加事件配置
  2. 在业务方法上添加@PointsEvent注解
  3. 配置事件编码、来源类型等参数

2. 自定义积分规则

  1. points_rule_config表中添加规则配置
  2. PointsRuleService中实现规则验证逻辑
  3. 配置规则键值对和描述信息

3. 扩展积分功能

  1. 新增积分事件类型枚举
  2. 扩展AOP切面处理逻辑
  3. 添加相应的服务层和控制器

测试验证

1. 单元测试

运行积分模块的单元测试:

mvn test -Dtest=PointsAspectTest

2. 集成测试

使用演示接口测试积分功能:

# 用户注册测试 curl -X POST http://localhost:8080/api/points/demo/register \ -H "Content-Type: application/json" \ -d '{"username":"testuser","password":"password"}' # 查询积分信息 curl -X GET http://localhost:8080/api/points/demo/my-info \ -H "Authorization: Bearer {token}"

部署说明

1. 环境要求

  • Java 8+
  • Spring Boot 2.7+
  • MySQL 5.7+
  • Maven 3.6+

2. 部署步骤

  1. 创建数据库并执行初始化脚本
  2. 配置数据库连接参数
  3. 启动Spring Boot应用
  4. 验证积分模块功能

常见问题

1. 积分事件未触发

  • 检查注解配置是否正确
  • 验证用户是否已登录
  • 查看条件表达式是否满足

2. 积分记录未创建

  • 检查积分事件配置状态是否为ENABLED
  • 验证积分规则限制是否满足
  • 查看数据库连接是否正常

3. 性能优化建议

  • 启用异步处理减少主流程影响
  • 合理配置积分规则限制
  • 定期清理过期积分记录

技术支持

如有问题或建议,请联系开发团队或查看项目文档。

About

作为springboot的的基础项目这个项目开发了权限校验和图片上传作为一个模板项目可以少开发一些代码

Language
Java46.3%
Vue45.1%
JavaScript5.4%
CSS3.2%