# QR码BusinessType测试说明

## 问题描述
`createEncryptedQrImage`接口传入`businessType`参数后，生成的二维码内容中没有包含该字段。

## 问题原因
1. **JSON库导入错误**：代码中混合使用了`JSONUtil`（项目自定义）和`JSONObject`（fastjson）
2. **方法调用不一致**：部分地方使用了不存在的`JSONUtil.toJSONString`方法

## 修复内容
1. **统一使用fastjson**：将所有JSON操作统一使用`JSONObject`
2. **修复方法调用**：
   - `JSONUtil.toJSONString` → `JSONObject.toJSONString`
   - `JSONUtil.parseObject` → `JSONObject.parseObject`

## 修复后的二维码内容结构

### 带businessType的二维码内容：
```json
{
  "token": "生成的token",
  "data": "加密的数据",
  "type": "encrypted",
  "businessType": "LOGIN"
}
```

### 不带businessType的二维码内容：
```json
{
  "token": "生成的token", 
  "data": "加密的数据",
  "type": "encrypted"
}
```

## 测试方法

### 1. 测试带businessType的接口
```bash
curl "http://localhost:8080/api/qr-code/create-encrypted-qr-image?data=测试数据&businessType=LOGIN&size=200x200&expireMinutes=30"
```

### 2. 扫描生成的二维码
扫描后应该能看到包含`businessType: "LOGIN"`的JSON内容

### 3. 验证解密
```bash
curl -X POST "http://localhost:8080/api/qr-code/verify-and-decrypt-qr-with-type" \
  -H "Content-Type: application/json" \
  -d '{"qrContent": "扫描得到的JSON字符串"}'
```

返回结果应该包含businessType字段：
```json
{
  "code": 200,
  "message": "验证和解密成功",
  "data": {
    "originalData": "测试数据",
    "businessType": "LOGIN"
  }
}
```

## 相关文件修改
- `EncryptedQrCodeUtil.java` - 修复JSON序列化问题
- `QrCodeController.java` - 添加businessType参数支持
- `GlobalExceptionHandler.java` - 添加参数验证异常处理

## 注意事项
现在所有生成加密二维码的接口都正确支持businessType参数：
- ✅ `POST /create-encrypted-qr-code` (JSON格式)
- ✅ `GET /create-encrypted-qr-image` (URL参数)
- ✅ `POST /create-business-encrypted-qr-code` (JSON格式)
