6.1 KiB
6.1 KiB
Stemcell_Datacollection Module
这是一个Magento2数据收集模块,提供了基本的WebAPI接口,支持多种表单类型的数据收集。
功能特性
- 提供POST API接口用于数据收集
- 支持Inquiry表单数据收集
- 支持默认数据收集(保存到日志文件)
- 支持匿名访问
- 数据验证和错误处理
安装
第一步:composer require alekseon/custom-forms-builder 第二步: php bin/magento module:enable Alekseon_AlekseonEav Alekseon_CustomFormsBuilder Alekseon_CustomFormsEmailNotification Alekseon_CustomFormsStatistics 第三步:php bin/magento setup:upgrade 第四步:php bin/magento module:enable Stemcell_Datacollection 第五步:php bin/magento setup:upgrade
API接口
1. 默认数据收集
URL: POST /rest/V1/datacollection/submit
参数:
data(string): 要收集的数据内容formType(string, 可选): 表单类型,默认为 'default'
示例请求:
curl -X POST "https://your-domain.com/rest/V1/datacollection/submit" \
-H "Content-Type: application/json" \
-d '{"data": "测试数据内容"}'
2. Inquiry表单数据收集
URL: POST /rest/V1/datacollection/inquiry
参数:
data(string): JSON格式的inquiry表单数据formType(string): 设置为 'inquiry'
Inquiry表单字段:
inquiry_company: 公司名称inquiry_email: 邮箱地址inquiry_mobile: 手机号码inquiry_province: 省份inquiry_subject_group: 主题组inquiry_username: 用户名
示例请求:
curl -X POST "https://your-domain.com/rest/V1/datacollection/inquiry" \
-H "Content-Type: application/json" \
-d '{
"data": "{\"inquiry_company\":\"测试公司\",\"inquiry_email\":\"test@example.com\",\"inquiry_mobile\":\"13800138000\",\"inquiry_province\":\"北京\",\"inquiry_subject_group\":\"产品咨询\",\"inquiry_username\":\"张三\",\"inquiry_product_sku\":\"AKD732894723\",\"inquiry_product_name\":\"商品名称123456测试\"}",
"formType": "inquiry"
}'
3. Lecture表单数据收集
URL: POST /rest/V1/datacollection/lecture
参数:
data(string): JSON格式的lecture表单数据formType(string): 设置为 'lecture'
Lecture表单字段:
lecture_username: 用户名 (varchar)lecture_company: 公司名称 (varchar)lecture_subject_group: 主题组 (varchar)lecture_province: 省份 (varchar)lecture_email: 邮箱地址 (varchar)lecture_mobile: 手机号码 (varchar)lecture_species_studied: 研究物种 (multiselect)lecture_cell_type: 细胞类型 (select)lecture_apply_topics: 应用主题 (varchar)lecture_the_way: 讲座方式 (select)
示例请求:
curl -X POST "https://your-domain.com/rest/V1/datacollection/lecture" \
-H "Content-Type: application/json" \
-d '{
"data": "{\"lecture_username\":\"李四\",\"lecture_company\":\"生物科技公司\",\"lecture_subject_group\":\"细胞生物学\",\"lecture_province\":\"上海\",\"lecture_email\":\"lisi@biotech.com\",\"lecture_mobile\":\"13900139000\",\"lecture_species_studied\":\"人类,小鼠,大鼠\",\"lecture_cell_type\":\"干细胞\",\"lecture_apply_topics\":\"细胞治疗,再生医学\",\"lecture_the_way\":\"线上讲座\"}",
"formType": "lecture"
}'
响应示例:
"Inquiry data collected successfully (Record ID: 123)"
数据存储
Inquiry表单数据
- 表单记录存储在
alekseon_custom_form_record表 - 字段值存储在
alekseon_custom_form_record_entity_varchar表 - 字段定义存储在
alekseon_custom_form_record_attribute表
Lecture表单数据
- 表单记录存储在
alekseon_custom_form_record表 - varchar类型字段值存储在
alekseon_custom_form_record_entity_varchar表 - select类型字段值存储在
alekseon_custom_form_record_entity_int表(存储option_id) - multiselect类型字段值存储在
alekseon_custom_form_record_entity_varchar表(存储逗号分隔的option_id) - 字段定义存储在
alekseon_custom_form_record_attribute表 - 选项值存储在
alekseon_custom_form_record_attribute_option和alekseon_custom_form_record_attribute_option_value表
默认数据
- 接收到的数据会保存在
var/log/datacollection/目录下 - 每个请求会创建一个带时间戳的日志文件
安装说明
- 将模块文件复制到
app/code/Stemcell/Datacollection/目录 - 运行以下命令启用模块:
php bin/magento module:enable Stemcell_Datacollection php bin/magento setup:upgrade php bin/magento setup:di:compile php bin/magento cache:flush
文件结构
Stemcell_Datacollection/
├── Api/
│ └── DataCollectionInterface.php
├── Model/
│ ├── DataCollection.php
│ └── Type/
│ ├── Inquiry.php
│ └── Lecture.php
├── etc/
│ ├── module.xml
│ ├── webapi.xml
│ └── di.xml
├── composer.json
├── registration.php
└── README.md
扩展说明
添加新的表单类型
- 在
Model/Type/目录下创建新的表单模型类 - 在
DataCollection.php中添加新的表单类型处理逻辑 - 在
webapi.xml中添加新的API路由(可选)
表单模型要求
新的表单模型类需要实现以下方法:
processData($data): 处理表单数据validateData($data): 验证表单数据getFieldsConfig(): 获取字段配置
注意事项
- 确保Alekseon_CustomFormsBuilder模块已正确安装
- Inquiry表单必须在后台创建,标识符为 'inquiry'
- Lecture表单必须在后台创建,标识符为 'lecture'
- Inquiry表单所有字段必须是varchar类型
- Lecture表单支持varchar、select和multiselect字段类型
- 生产环境使用前请根据实际需求进行修改
- 默认允许匿名访问,如需权限控制请修改
webapi.xml中的资源配置
通过邮件将所有询价表单数据用excel附件的形式发到指定邮箱
- 代码再Stemcell\Datacollection\Cron\FormRecordsNotification
- 需要去管理后台配置Alekseon Extensions->Custom Forms->New Entity Notification Email的Send Email To邮件接收人