# 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' **示例请求:** ```bash 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`: 用户名 **示例请求:** ```bash 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) **示例请求:** ```bash 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" }' ``` **响应示例:** ```json "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/` 目录下 - 每个请求会创建一个带时间戳的日志文件 ## 安装说明 1. 将模块文件复制到 `app/code/Stemcell/Datacollection/` 目录 2. 运行以下命令启用模块: ```bash 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 ``` ## 扩展说明 ### 添加新的表单类型 1. 在 `Model/Type/` 目录下创建新的表单模型类 2. 在 `DataCollection.php` 中添加新的表单类型处理逻辑 3. 在 `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邮件接收人