GiftCardController.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controllers\Admin;
  4. use App\Controllers\BaseController;
  5. use App\Models\GiftCard;
  6. use App\Utils\Tools;
  7. use Psr\Http\Message\ResponseInterface;
  8. use Slim\Http\Request;
  9. use Slim\Http\Response;
  10. final class GiftCardController extends BaseController
  11. {
  12. public static $details = [
  13. 'field' => [
  14. 'op' => '操作',
  15. 'id' => '礼品卡ID',
  16. 'card' => '卡号',
  17. 'balance' => '面值',
  18. 'create_time' => '创建时间',
  19. 'status' => '使用状态',
  20. 'use_time' => '使用时间',
  21. 'use_user' => '使用用户',
  22. ],
  23. 'create_dialog' => [
  24. [
  25. 'id' => 'card_number',
  26. 'info' => '创建数量',
  27. 'type' => 'input',
  28. 'placeholder' => '',
  29. ],
  30. [
  31. 'id' => 'card_value',
  32. 'info' => '礼品卡面值',
  33. 'type' => 'input',
  34. 'placeholder' => '',
  35. ],
  36. [
  37. 'id' => 'card_length',
  38. 'info' => '礼品卡长度',
  39. 'type' => 'select',
  40. 'select' => [
  41. '12' => '12位',
  42. '18' => '18位',
  43. '24' => '24位',
  44. '30' => '30位',
  45. '36' => '36位',
  46. ],
  47. ],
  48. ],
  49. ];
  50. public function index(Request $request, Response $response, array $args): ResponseInterface
  51. {
  52. return $response->write(
  53. $this->view()
  54. ->assign('details', self::$details)
  55. ->fetch('admin/giftcard.tpl')
  56. );
  57. }
  58. public function add(Request $request, Response $response, array $args): ResponseInterface
  59. {
  60. $card_number = $request->getParam('card_number') ?? 0;
  61. $card_value = $request->getParam('card_value') ?? 0;
  62. $card_length = $request->getParam('card_length') ?? 0;
  63. $card_added = '';
  64. if ($card_number === '' || $card_number <= 0) {
  65. return $response->withJson([
  66. 'ret' => 0,
  67. 'msg' => '生成数量不能为空或小于0',
  68. ]);
  69. }
  70. if ($card_value === '' || $card_value <= 0) {
  71. return $response->withJson([
  72. 'ret' => 0,
  73. 'msg' => '礼品卡面值不能为空或小于0',
  74. ]);
  75. }
  76. if ($card_length === '' || $card_length <= 0) {
  77. return $response->withJson([
  78. 'ret' => 0,
  79. 'msg' => '礼品卡长度不能为空或小于0',
  80. ]);
  81. }
  82. for ($i = 0; $i < $card_number; $i++) {
  83. $card = Tools::genRandomChar($card_length);
  84. // save to database
  85. $giftcard = new GiftCard();
  86. $giftcard->card = $card;
  87. $giftcard->balance = $card_value;
  88. $giftcard->create_time = \time();
  89. $giftcard->status = 0;
  90. $giftcard->use_time = 0;
  91. $giftcard->use_user = 0;
  92. $giftcard->save();
  93. $card_added .= $card . PHP_EOL;
  94. }
  95. return $response->withJson([
  96. 'ret' => 1,
  97. 'msg' => '添加成功' . PHP_EOL . $card_added,
  98. ]);
  99. }
  100. public function delete(Request $request, Response $response, array $args): ResponseInterface
  101. {
  102. $card_id = $args['id'];
  103. GiftCard::find($card_id)->delete();
  104. return $response->withJson([
  105. 'ret' => 1,
  106. 'msg' => '删除成功',
  107. ]);
  108. }
  109. public function ajax(Request $request, Response $response, array $args): ResponseInterface
  110. {
  111. $giftcards = GiftCard::orderBy('id', 'desc')->get();
  112. foreach ($giftcards as $giftcard) {
  113. $giftcard->op = '<button type="button" class="btn btn-red" id="delete-gift-card-' . $giftcard->id . '"
  114. onclick="deleteGiftCard(' . $giftcard->id . ')">删除</button>';
  115. $giftcard->status = $giftcard->status();
  116. $giftcard->create_time = Tools::toDateTime((int) $giftcard->create_time);
  117. $giftcard->use_time = Tools::toDateTime((int) $giftcard->use_time);
  118. }
  119. return $response->withJson([
  120. 'giftcards' => $giftcards,
  121. ]);
  122. }
  123. }