gpnalin/module-date-time

N/A

安装: 4

依赖: 0

建议者: 0

安全: 0

星级: 0

关注者: 1

分支: 0

类型:magento2-module

1.0.2 2024-08-26 01:46 UTC

This package is auto-updated.

Last update: 2024-09-26 02:03:47 UTC


README

概述

Aligent DateTime API 是一个 Magento 2 模块,它提供了计算两个日期之间差异的功能。它支持多种计算类型,并且可以通过 REST API 和 GraphQL 进行访问。

功能

  • 计算两个日期之间的差异
    • days:计算总天数
    • weekdays:计算工作日(周一至周五)的数量
    • weeks:计算完整周数
    • hours:计算总小时数
    • minutes:计算总分钟数
    • seconds:计算总秒数
    • years:计算年数
  • 支持带时区的标准日期时间格式
  • REST API 端点
  • GraphQL 查询
  • 单元测试和 API/GraphQL 功能测试

安装

  1. 如果您已经设置了 Magento 实例,请跳到 #6。
  2. 创建您的项目目录,然后进入它
    mkdir magento.test; cd $_;
    
  3. 下载 Docker Compose 模板
    curl -s https://raw.githubusercontent.com/markshust/docker-magento/master/lib/template | bash
    
  4. 下载您想使用的 Magento 版本
    bin/download 2.4.7 community
    
  5. 运行 Magento 安装程序
    bin/setup magento.test
    
  6. 安装模块
    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;
    
  7. 通过运行以下命令启用模块
    bin/magento module:enable Aligent_DateTime
    
  8. 运行 Magento 设置升级
    bin/magento setup:upgrade
    
  9. 编译依赖注入
    bin/magento setup:di:compile
    
  10. 清理缓存
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/