一、code样例

  1. <?php
  2. namespace App\Module\Sup\Controller\Api\V1\Order;
  3. use Swork\Bean\BeanCollector;
  4. use .....
  5. /**
  6. * @Controller("/sup/api/v1/order")
  7. */
  8. class OrderController extends BeanCollector
  9. {
  10. /**
  11. * @Inject()
  12. * @var OrderLogic
  13. */
  14. private $orderLogic;
  15. /**
  16. * 获取用户订单列表
  17. * @param Argument $argument
  18. * @return array
  19. * @throws
  20. */
  21. public function pager(Argument $argument)
  22. {
  23. //外部参数
  24. $uid = Context::get('userId');
  25. /**
  26. * 订单状态
  27. * @var int
  28. * @sample 11
  29. */
  30. $odrstat = $argument->get('odrstat', 0);
  31. /**
  32. * 页码
  33. * @var int
  34. * @sample 1
  35. */
  36. $idx = $argument->get('idx', 1);
  37. /**
  38. * 每页行数
  39. * @var int
  40. * @sample 10
  41. */
  42. $size = $argument->get('size', 10);
  43. //查询字符
  44. $query = [
  45. 'uid' => $uid,
  46. 'odrstat' => $odrstat,
  47. ];
  48. //获取数据
  49. $list = $this->orderLogic->getPager($query, $idx, $size);
  50. //API返回
  51. /**
  52. * {
  53. * list: [
  54. * {
  55. * okey: "101201904101123", //订单号
  56. * gid: "101201904101123", //商品ID
  57. * odrstat: 11, //订单状态 11:待揽件 .....
  58. * odrtime11: "2019-09-17 21:00", //下单时间
  59. * pname: "iPhone 8 全网通4G双卡双待 256G 深空灰色 美版" //商品信息
  60. * refprice3: "6,553" //预计帮卖价
  61. * minprice: "2,199" //保底售价
  62. * prepayamt: "2,000" //预付款
  63. * payamt: "20", //尾款
  64. * saleprice: "1,000" //销售价格
  65. * totalamt:"2,020", //已收总金额
  66. * }
  67. * ]
  68. * pager: {
  69. * idx: 1, 页码
  70. * size: 20, 当页行数
  71. * },
  72. * }
  73. */
  74. return [
  75. 'list' => $list,
  76. 'pager' => [
  77. 'idx' => $idx,
  78. 'size' => count($list),
  79. ]
  80. ];
  81. }
  82. }

二、解析说明

1)基本规范与其它的一致;此项特别要求两个地方:
a)外部参数注释:每个外部参数单独注释,把 参数名称、参数类型、样例数据 描述清楚;
b)返回样例子注释(固定://API返回 );

参数注释:

  1. <?php
  2. /**
  3. * 订单状态 ---- 第一行:参数名称
  4. * @var int ---- 第二行:参数类型
  5. * @sample 11 ---- 第三行:样例数据
  6. */
  7. $odrstat = $argument->get('odrstat', 0);

返回注释:

  1. <?php
  2. //API返回
  3. /**
  4. * {
  5. * list: [
  6. * {
  7. * okey: "101201904101123", //订单号
  8. * gid: "101201904101123", //商品ID
  9. * odrstat: 11, //订单状态 11:待揽件 .....
  10. * odrtime11: "2019-09-17 21:00", //下单时间
  11. * pname: "iPhone 8 全网通4G双卡双待 256G 深空灰色 美版" //商品信息
  12. * refprice3: "6,553" //预计帮卖价
  13. * minprice: "2,199" //保底售价
  14. * prepayamt: "2,000" //预付款
  15. * payamt: "20", //尾款
  16. * saleprice: "1,000" //销售价格
  17. * totalamt:"2,020", //已收总金额
  18. * }
  19. * ]
  20. * pager: {
  21. * idx: 1, 页码
  22. * size: 20, 当页行数
  23. * },
  24. * }
  25. */
  26. return [
  27. 'list' => $list,
  28. 'pager' => [
  29. 'idx' => $idx,
  30. 'size' => count($list),
  31. ]
  32. ];

操作方法:在开发完成时,运行后,把结果复制至这里。

三、如此目的

相对普通Controller开发的,API开发的注释会麻烦一些。
为了给前端一目了解的API接口文档,系统自动通过扫描此类注释,生成API文档。

生成的例子:
WX20190926-093854@2x.png

四、无数据返回样例

  1. <?php
  2. /**
  3. * 删除订单
  4. * @param Argument $argument
  5. * @return array
  6. * @throws
  7. */
  8. public function delete(Argument $argument)
  9. {
  10. /**
  11. * 订单ID
  12. * @var string
  13. * @sample 1
  14. */
  15. $oid = $argument->post('oid', '');
  16. //删除数据
  17. $this->orderLogic->delete($oid);
  18. //API返回
  19. /**
  20. * success
  21. */
  22. return 'success';
  23. }

注:API返回内容,仅有一个 sucess ,没有其它内容

五、错误返回样例#1

禁止在Logic层返回 sucess ,然后在Controller返回。

  1. <?php
  2. /**
  3. * 删除订单
  4. * @param Argument $argument
  5. * @return array
  6. * @throws
  7. */
  8. public function delete(Argument $argument)
  9. {
  10. /**
  11. * 订单ID
  12. * @var string
  13. * @sample 1
  14. */
  15. $oid = $argument->post('oid', '');
  16. //删除数据
  17. $info = $this->orderLogic->delete($oid); //logic层返回 success
  18. /*----------------------------
  19. /* 这个是错误的代码 !!!!!
  20. /*----------------------------
  21. //API返回
  22. /**
  23. * success
  24. */
  25. return $info;
  26. }