gpnalin / module-date-time
N/A
1.0.2
2024-08-26 01:46 UTC
Requires
- php: ~8.1.0||~8.2.0||~8.3.0
- magento/framework: *
README
概述
Aligent DateTime API 是一个 Magento 2 模块,它提供了计算两个日期之间差异的功能。它支持多种计算类型,并且可以通过 REST API 和 GraphQL 进行访问。
功能
- 计算两个日期之间的差异
days
:计算总天数weekdays
:计算工作日(周一至周五)的数量weeks
:计算完整周数hours
:计算总小时数minutes
:计算总分钟数seconds
:计算总秒数years
:计算年数
- 支持带时区的标准日期时间格式
- REST API 端点
- GraphQL 查询
- 单元测试和 API/GraphQL 功能测试
安装
- 如果您已经设置了 Magento 实例,请跳到 #6。
- 创建您的项目目录,然后进入它
mkdir magento.test; cd $_;
- 下载 Docker Compose 模板
curl -s https://raw.githubusercontent.com/markshust/docker-magento/master/lib/template | bash
- 下载您想使用的 Magento 版本
bin/download 2.4.7 community
- 运行 Magento 安装程序
bin/setup magento.test
- 安装模块
bin/composer require gpnalin/module-date-time # or clone the module to app/code/Aligent/DateTime mkdir -p app/code/Aligent; cd $_; git clone git@github.com:gpnalin/module-date-time.git DateTime;
- 通过运行以下命令启用模块
bin/magento module:enable Aligent_DateTime
- 运行 Magento 设置升级
bin/magento setup:upgrade
- 编译依赖注入
bin/magento setup:di:compile
- 清理缓存
bin/magento cache:clean
用法
REST API
端点
POST /V1/datetime/calculate
参数
startDate
(字符串):起始日期,ISO 8601 格式(例如,“2023-01-01T00:00:00+00:00”)endDate
(字符串):结束日期,ISO 8601 格式(例如,“2023-01-10T00:00:00+00:00”)calculationType
(字符串):要执行的计算类型(days, weekdays, weeks, hours, minutes, seconds, years)
示例请求
POST /V1/datetime/calculate Content-Type: application/json { "startDate": "2023-01-01T00:00:00+00:00", "endDate": "2023-01-10T00:00:00+00:00", "calculationType": "days" }
示例响应
{ "result": 9 }
GraphQL
查询
query DiffCalculatorQuery( $startDate: String!, $endDate: String!, $calculationType: CalculationType! ) { DiffCalculatorQuery( startDate: $startDate, endDate: $endDate, calculationType: $calculationType ) { result } }
变量
{ "startDate": "2023-01-01T00:00:00+00:00", "endDate": "2023-01-10T00:00:00+00:00", "calculationType": "days" }
示例响应
{ "data": { "DiffCalculatorQuery": { "result": 9 } } }
错误处理
如果输入无效或计算过程中发生意外错误,REST API 和 GraphQL 查询将返回适当的错误消息。
注意
- 所有日期都应提供带时区信息的标准日期时间格式。
- 如果没有指定时区,则假定使用 UTC。
endDate
必须大于或等于startDate
。
测试覆盖率
- 单元测试
/usr/local/bin/php -dmemory_limit=-1 $(pwd)/vendor/bin/phpunit --bootstrap $(pwd)/dev/tests/unit/framework/bootstrap.php --configuration $(pwd)/dev/tests/unit/phpunit.xml.dist $(pwd)/vendor/gpnalin/module-date-time/Test/Unit/
- Web API 功能测试
/usr/local/bin/php -dmemory_limit=-1 $(pwd)/vendor/bin/phpunit -c $(pwd)/dev/tests/api-functional/phpunit_rest.xml.dist $(pwd)/vendor/gpnalin/module-date-time/Test/Api/
- GraphQL 功能测试
/usr/local/bin/php -dmemory_limit=-1 $(pwd)/vendor/bin/phpunit -c $(pwd)/dev/tests/api-functional/phpunit_graphql.xml.dist $(pwd)/vendor/gpnalin/module-date-time/Test/GraphQl/