# 积分管理系统后端 ## 项目简介 积分管理系统后端,基于Spring Boot 2.6.10 + MyBatis Plus + PostgreSQL开发,支持积分规则设置、个人积分看板、单位积分看板等功能。 ## 技术栈 - **框架**: Spring Boot 2.6.10 - **ORM**: MyBatis Plus 3.5.1 - **数据库**: PostgreSQL 42.3.3 - **连接池**: Druid 1.2.8 - **缓存**: Redis - **文件存储**: MinIO 8.4.3 - **API文档**: Knife4j 3.0.3 - **工具库**: Hutool 5.8.0, FastJSON 2.0.7 ## 功能模块 ### 1. 积分规则设置 - 积分获取规则配置 - 积分消耗规则配置 - 积分转换规则配置 - 支持每日积分上限设置 ### 2. 个人积分看板 - 个人积分统计(余额、累计获取、累计消耗、累计转换) - 个人积分流水明细 - 支持按时间、数据类目、数据类型筛选 ### 3. 单位积分看板 - 单位积分统计 - 单位积分流水明细 - 支持按年、月、日、自定义时间筛选 - 积分分类统计(获取、消耗、转换) ## 数据库设计 ### 主要表结构 1. **points_rule** - 积分规则表 2. **points_flow** - 积分流水表 3. **user_points** - 用户积分表 ### 数据库兼容性 - 支持PostgreSQL数据库 - 兼容达梦数据库(使用通用SQL语法) ## 快速开始 ### 环境要求 - JDK 1.8+ - Maven 3.6+ - PostgreSQL 12+ - Redis 6+ - MinIO ### 安装步骤 1. **克隆项目** ```bash git clone cd WEB-MANAGE-BACK ``` 2. **配置数据库** ```bash # 创建数据库 psql -U postgres -c "CREATE DATABASE web_manage;" # 执行初始化脚本 psql -U postgres -d web_manage -f src/main/resources/sql/init.sql ``` 3. **修改配置** 编辑 `src/main/resources/application.yml`,修改数据库、Redis、MinIO配置 4. **启动项目** ```bash mvn spring-boot:run ``` 5. **访问API文档** ``` http://localhost:8080/admin/doc.html ``` ## 已实现的模块 ### 1. 产品定价管理模块 ✅ - 产品定价的增删改查 - 价格策略管理 - 批量操作支持 ### 2. 订单管理模块 ✅ - 订单创建、查询、详情查看 - 订单状态管理 - 订单附件上传 - 订单评价管理 - 交易确认流程 - 雪花算法生成唯一订单编号 ### 3. 审批管理模块 ✅ - 订单审批流程 - 审批记录管理 - 授权审批机制 - 审批状态跟踪 ### 4. 积分管理模块 ✅ - 积分规则配置 - 个人/单位积分流水 - 积分统计查询 - 根据规则自动计算积分 - 每日积分上限校验 ### 5. 购物车模块 ✅ - Redis缓存 + 数据库持久化 - 购物车商品增删改查 - 数据同步与一致性检查 - 批量操作支持 - 自动过期管理 ## 技术特性 - **双重存储**: Redis提供高性能缓存,数据库保证数据持久化 - **数据同步**: 实时同步Redis与数据库数据,确保一致性 - **容错机制**: Redis故障时自动降级到数据库查询 - **过期管理**: 购物车数据30天自动过期,节省存储空间 - **事务支持**: 关键操作使用事务保证数据完整性 ## API接口 ### 产品定价管理 - `POST /api/pricing/page` - 分页查询产品定价 - `POST /api/pricing/add` - 新增产品定价 - `POST /api/pricing/update` - 修改产品定价 - `DELETE /api/pricing/{id}` - 删除产品定价 - `GET /api/pricing/product/{productId}` - 根据产品ID查询定价 ### 订单管理 - `POST /api/order/buyer/page` - 分页查询买家订单列表 - `POST /api/order/seller/page` - 分页查询卖家订单列表 - `POST /api/order/approval/page` - 分页查询待审批订单列表 - `GET /api/order/detail/{orderId}` - 获取订单详情 - `POST /api/order/attachment/upload` - 上传订单附件 - `POST /api/order/evaluation/add` - 添加订单评价 - `POST /api/order/transaction/confirm` - 确认交易 - `POST /api/order/evaluation/reply` - 回复评价 ### 审批管理 - `POST /api/approval/page` - 分页查询审批记录 - `POST /api/approval/pending/page` - 分页查询待审批订单 - `GET /api/approval/order/{orderId}` - 根据订单ID查询审批记录 - `POST /api/approval/approve` - 审批订单 - `POST /api/approval/authorize/{approvalId}` - 授权审批 - `GET /api/approval/status/{orderId}` - 获取订单当前审批状态 ### 积分管理 - `POST /api/points/rule/page` - 分页查询积分规则 - `POST /api/points/rule/add` - 新增积分规则 - `POST /api/points/rule/update` - 修改积分规则 - `DELETE /api/points/rule/{id}` - 删除积分规则 - `POST /api/points/rule/toggle/{id}` - 启用/禁用积分规则 - `GET /api/points/rule/type/{ruleType}` - 根据规则类型查询启用的规则 - `POST /api/points/flow/personal/page` - 分页查询个人积分流水 - `POST /api/points/flow/unit/page` - 分页查询单位积分流水 - `GET /api/points/flow/user/{userId}` - 根据用户ID查询积分流水 - `GET /api/points/flow/unit/{unitId}` - 根据单位ID查询积分流水 - `POST /api/points/flow/add` - 新增积分流水(根据规则自动计算) - `POST /api/points/flow/add/personal` - 新增个人积分流水 - `POST /api/points/flow/add/unit` - 新增单位积分流水 - `GET /api/points/total/user/{userId}` - 获取用户积分统计 - `GET /api/points/total/unit/{unitId}` - 获取单位积分统计 ### 文件管理 - `POST /api/file/upload` - 文件上传 - `GET /api/file/download/{fileName}` - 文件下载 - `GET /api/file/preview/{fileName}` - 文件预览 - `DELETE /api/file/{fileName}` - 文件删除 ### 购物车管理 - `POST /api/cart/add` - 添加商品到购物车 - `DELETE /api/cart/remove` - 从购物车移除商品 - `PUT /api/cart/update` - 更新购物车商品数量 - `DELETE /api/cart/clear` - 清空购物车 - `GET /api/cart/info` - 获取购物车信息 - `GET /api/cart/items` - 获取购物车商品列表 - `DELETE /api/cart/batch-remove` - 批量删除购物车商品 - `GET /api/cart/count` - 获取购物车商品数量 - `POST /api/cart/sync-to-db` - 同步Redis数据到数据库 - `POST /api/cart/load-from-db` - 从数据库加载数据到Redis - `GET /api/cart/consistency` - 检查数据一致性 ### 订单编号 - 采用雪花算法生成唯一订单号 - `GET /api/order/no/new` - 生成唯一订单号(调试/前置占号可用) #### 配置项(application.yml) ```yaml snowflake: worker-id: 1 # 0-31 datacenter-id: 1 # 0-31 twepoch-ms: 1577808000000 # 2020-01-01 00:00:00,勿随意变更 ``` 如不配置,默认使用上述值。 ## 项目结构 ``` src/main/java/com/webmanage/ ├── WebManageApplication.java # 主启动类 ├── common/ # 公共组件 │ ├── Result.java # 统一响应结果 │ ├── PageResult.java # 分页响应结果 │ ├── BusinessException.java # 业务异常 │ ├── FileUploadException.java # 文件上传异常 │ └── GlobalExceptionHandler.java # 全局异常处理器 ├── config/ # 配置类 │ ├── MinioConfig.java # MinIO配置 │ └── MybatisPlusConfig.java # MyBatis Plus配置 ├── entity/ # 实体类 │ ├── ProductPricing.java # 产品定价实体 │ ├── OrderInfo.java # 订单信息实体 │ ├── OrderDetail.java # 订单详情实体 │ ├── OrderAttachment.java # 订单附件实体 │ ├── OrderEvaluation.java # 订单评价实体 │ ├── ApprovalRecord.java # 审批记录实体 │ ├── PointsRule.java # 积分规则实体 │ ├── PointsFlow.java # 积分流水实体 │ └── UserPoints.java # 用户积分实体 ├── dto/ # 数据传输对象 │ ├── OrderQueryDTO.java # 订单查询条件 │ ├── ApprovalQueryDTO.java # 审批查询条件 │ ├── ApprovalActionDTO.java # 审批操作 │ ├── PointsRuleDTO.java # 积分规则 │ ├── PointsFlowQueryDTO.java # 积分流水查询条件 │ ├── AddPointsFlowDTO.java # 新增积分流水 │ ├── CartItemDTO.java # 购物车商品项 │ └── CartQueryDTO.java # 购物车查询条件 ├── vo/ # 视图对象 │ ├── OrderDetailVO.java # 订单详情视图 │ ├── OrderDetailItemVO.java # 订单详情项视图 │ ├── OrderAttachmentVO.java # 订单附件视图 │ ├── OrderEvaluationVO.java # 订单评价视图 │ ├── CartVO.java # 购物车视图 │ └── CartItemVO.java # 购物车商品项视图 ├── mapper/ # 数据访问层 │ ├── ProductPricingMapper.java # 产品定价Mapper │ ├── OrderInfoMapper.java # 订单信息Mapper │ ├── OrderDetailMapper.java # 订单详情Mapper │ ├── OrderAttachmentMapper.java # 订单附件Mapper │ ├── OrderEvaluationMapper.java # 订单评价Mapper │ ├── ApprovalRecordMapper.java # 审批记录Mapper │ ├── PointsRuleMapper.java # 积分规则Mapper │ ├── PointsFlowMapper.java # 积分流水Mapper │ └── UserPointsMapper.java # 用户积分Mapper ├── service/ # 业务逻辑层 │ ├── MinioService.java # MinIO服务 │ ├── ProductPricingService.java # 产品定价服务 │ ├── OrderInfoService.java # 订单信息服务 │ ├── ApprovalRecordService.java # 审批记录服务 │ ├── PointsRuleService.java # 积分规则服务 │ ├── PointsFlowService.java # 积分流水服务 │ └── CartService.java # 购物车服务 ├── service/impl/ # 业务逻辑实现 │ ├── ProductPricingServiceImpl.java # 产品定价服务实现 │ ├── OrderInfoServiceImpl.java # 订单信息服务实现 │ ├── ApprovalRecordServiceImpl.java # 审批记录服务实现 │ ├── PointsRuleServiceImpl.java # 积分规则服务实现 │ ├── PointsFlowServiceImpl.java # 积分流水服务实现 │ └── CartServiceImpl.java # 购物车服务实现 └── controller/ # 控制器层 ├── ProductPricingController.java # 产品定价控制器 ├── OrderController.java # 订单管理控制器 ├── ApprovalController.java # 审批管理控制器 ├── PointsController.java # 积分管理控制器 ├── CartController.java # 购物车管理控制器 └── FileController.java # 文件管理控制器 ``` ## 数据库表结构 ### 核心业务表 - `product_pricing` - 产品定价表 - `order_info` - 订单信息表 - `order_detail` - 订单详情表 - `order_attachment` - 订单附件表 - `order_evaluation` - 订单评价表 - `approval_record` - 审批记录表 ### 积分管理表 - `points_rule` - 积分规则表 - `points_flow` - 积分流水表 - `user_points` - 用户积分表 ### 系统配置表 - `points_rule` - 积分规则配置表 ## 配置说明 ### 数据库配置 ```yaml spring: datasource: driver-class-name: org.postgresql.Driver url: jdbc:postgresql://localhost:5432/web_manage username: postgres password: 123456 ``` ### Redis配置 ```yaml spring: redis: host: localhost port: 6379 password: database: 0 ``` ### MinIO配置 ```yaml spring: minio: endpoint: http://localhost:9000 access-key: minioadmin secret-key: minioadmin bucket-name: web-manage ``` ## 部署说明 ### 开发环境 ```bash mvn spring-boot:run ``` ### 生产环境 ```bash mvn clean package java -jar target/web-manage-back-1.0.0.jar ``` ## 注意事项 1. 数据库初始化脚本需要根据实际环境调整 2. 用户认证和权限控制需要根据实际业务需求实现 3. 积分计算逻辑需要根据实际业务规则调整 4. 建议在生产环境中配置适当的日志级别 ## 联系方式 如有问题,请联系开发团队。 ## 待开发功能 ### 已完成功能 ✅ - [x] 产品定价管理模块 - [x] 交易管理模块(买家中心) - [x] 交易管理模块(卖家中心) - [x] 审批管理模块 - [x] 积分管理模块 - [x] 购物车管理模块 ### 待完善功能 🔄 - [ ] 产品定价管理的前端页面 - [ ] 订单管理的前端页面 - [ ] 审批管理的前端页面 - [ ] 积分管理的前端页面 - [ ] 购物车管理的前端页面 - [ ] 用户认证和权限管理 - [ ] 工作流引擎集成 - [ ] 消息通知系统 - [ ] 数据统计和报表 - [ ] 系统监控和日志 - [ ] 单元测试和集成测试