# 优惠券中心模块 (ruoyi-mall-coupon)

## 模块简介

`ruoyi-mall-coupon` 是商城系统的优惠券中心模块，提供独立的优惠券服务，支持发券、核销、过期处理等功能。

## 功能特性

### 1. 优惠券管理 ✅

- ✅ 优惠券CRUD操作
- ✅ 优惠券类型管理（满减、折扣、现金）
- ✅ 优惠券发放规则配置
- ✅ 优惠券有效期管理
- ✅ 优惠券状态管理（启用/禁用）
- ✅ 优惠券导出功能

### 2. 用户优惠券 ✅

- ✅ 用户领券
- ✅ 用户优惠券列表查询
- ✅ 优惠券使用（订单结算时调用）
- ✅ 优惠券退还（订单取消时调用）
- ✅ 优惠券过期处理（定时任务）✅

### 3. 优惠券统计

- [ ] 发放统计（可在管理端通过列表查询实现）
- [ ] 使用统计（可在管理端通过列表查询实现）
- [ ] 核销统计（可在管理端通过列表查询实现）

## 数据库表

- `mall_coupon` - 优惠券表
- `mall_coupon_user` - 用户优惠券表

详细表结构请参考：`script/sql/ry_mall.sql`

## 模块结构

```
org.dromara.mall.coupon
├── controller
│   ├── admin          // 管理端API
│   │   ├── AdminMallCouponController.java
│   │   └── AdminMallCouponUserController.java
│   └── app            // 用户端API
│       ├── AppMallCouponController.java
│       └── AppMallCouponUserController.java
├── domain
│   ├── MallCoupon.java
│   ├── MallCouponUser.java
│   ├── bo             // 业务对象
│   │   ├── MallCouponBo.java
│   │   └── MallCouponUserBo.java
│   └── vo             // 视图对象
│       ├── MallCouponVo.java
│       └── MallCouponUserVo.java
├── mapper
│   ├── MallCouponMapper.java
│   └── MallCouponUserMapper.java
├── service
│   ├── MallCouponService.java
│   ├── MallCouponUserService.java
│   └── impl
│       ├── MallCouponServiceImpl.java
│       └── MallCouponUserServiceImpl.java
├── job                // 定时任务
│   └── MallCouponJob.java
└── config
    └── MallCouponAutoConfiguration.java
```

## API接口

### 管理端接口

#### 优惠券管理 (`/mall/coupon`)

- `GET /mall/coupon/list` - 查询优惠券列表（分页）
- `GET /mall/coupon/{id}` - 获取优惠券详情
- `POST /mall/coupon` - 新增优惠券
- `PUT /mall/coupon` - 修改优惠券
- `DELETE /mall/coupon/{ids}` - 删除优惠券
- `POST /mall/coupon/export` - 导出优惠券列表
- `PUT /mall/coupon/changeStatus/{id}` - 启用/禁用优惠券

#### 用户优惠券管理 (`/mall/coupon/user`)

- `GET /mall/coupon/user/list` - 查询用户优惠券列表（分页）
- `GET /mall/coupon/user/{id}` - 获取用户优惠券详情
- `DELETE /mall/coupon/user/{ids}` - 删除用户优惠券
- `POST /mall/coupon/user/export` - 导出用户优惠券列表

### 移动端接口

#### 优惠券 (`/app/mall/coupon`)

- `GET /app/mall/coupon/available/list` - 查询可领取的优惠券列表
- `GET /app/mall/coupon/{id}` - 获取优惠券详情

#### 用户优惠券 (`/app/mall/coupon/user`)

- `GET /app/mall/coupon/user/list` - 查询用户优惠券列表
- `GET /app/mall/coupon/user/available/list` - 查询用户可用优惠券列表（未使用且未过期）
- `GET /app/mall/coupon/user/{id}` - 获取用户优惠券详情
- `POST /app/mall/coupon/user/receive/{couponId}` - 领取优惠券

## 优惠券类型说明

- **0 - 满减券**: 需要设置优惠金额和使用门槛
- **1 - 折扣券**: 需要设置折扣率（百分比）和使用门槛
- **2 - 现金券**: 需要设置优惠金额，无使用门槛

## 依赖模块

- `ruoyi-common-*` - 通用工具模块
- `ruoyi-common-excel` - Excel导出功能
- `ruoyi-common-satoken` - 用户身份认证

## 待实现功能

- [ ] 优惠券统计功能（可在管理端通过列表查询和筛选实现）

## 使用说明

### 订单结算时使用优惠券

在订单提交时，可以调用 `MallCouponUserService.useCoupon(couponUserId, orderId)` 来使用优惠券。

### 订单取消时退还优惠券

在订单取消时，可以调用 `MallCouponUserService.returnCoupon(couponUserId)` 来退还优惠券。
