fuc/src/Controllers/Admin/GiftCardController.php
2025-02-23 13:30:57 +08:00

146 lines
4.4 KiB
PHP
Executable File

<?php
declare(strict_types=1);
namespace App\Controllers\Admin;
use App\Controllers\BaseController;
use App\Models\GiftCard;
use App\Utils\Tools;
use Exception;
use Psr\Http\Message\ResponseInterface;
use Slim\Http\Response;
use Slim\Http\ServerRequest;
use function time;
use const PHP_EOL;
final class GiftCardController extends BaseController
{
private static array $details = [
'field' => [
'op' => '操作',
'id' => '礼品卡ID',
'card' => '卡号',
'balance' => '面值',
'create_time' => '创建时间',
'status' => '使用状态',
'use_time' => '使用时间',
'use_user' => '使用用户',
],
'create_dialog' => [
[
'id' => 'card_number',
'info' => '创建数量',
'type' => 'input',
'placeholder' => '',
],
[
'id' => 'card_value',
'info' => '礼品卡面值',
'type' => 'input',
'placeholder' => '',
],
[
'id' => 'card_length',
'info' => '礼品卡长度',
'type' => 'select',
'select' => [
'12' => '12位',
'18' => '18位',
'24' => '24位',
'30' => '30位',
'36' => '36位',
],
],
],
];
/**
* @throws Exception
*/
public function index(ServerRequest $request, Response $response, array $args): ResponseInterface
{
return $response->write(
$this->view()
->assign('details', self::$details)
->fetch('admin/giftcard.tpl')
);
}
public function add(ServerRequest $request, Response $response, array $args): ResponseInterface
{
$card_number = $request->getParam('card_number') ?? 0;
$card_value = $request->getParam('card_value') ?? 0;
$card_length = $request->getParam('card_length') ?? 0;
$card_added = '';
if ($card_number === '' || $card_number <= 0) {
return $response->withJson([
'ret' => 0,
'msg' => '生成数量不能为空或小于0',
]);
}
if ($card_value === '' || $card_value <= 0) {
return $response->withJson([
'ret' => 0,
'msg' => '礼品卡面值不能为空或小于0',
]);
}
if ($card_length === '' || $card_length <= 0) {
return $response->withJson([
'ret' => 0,
'msg' => '礼品卡长度不能为空或小于0',
]);
}
for ($i = 0; $i < $card_number; $i++) {
$card = Tools::genRandomChar((int) $card_length);
// save to database
$giftcard = new GiftCard();
$giftcard->card = $card;
$giftcard->balance = $card_value;
$giftcard->create_time = time();
$giftcard->status = 0;
$giftcard->use_time = 0;
$giftcard->use_user = 0;
$giftcard->save();
$card_added .= $card . PHP_EOL;
}
return $response->withJson([
'ret' => 1,
'msg' => '添加成功' . PHP_EOL . $card_added,
]);
}
public function delete(ServerRequest $request, Response $response, array $args): ResponseInterface
{
$card_id = $args['id'];
(new GiftCard())->find($card_id)->delete();
return $response->withJson([
'ret' => 1,
'msg' => '删除成功',
]);
}
public function ajax(ServerRequest $request, Response $response, array $args): ResponseInterface
{
$giftcards = (new GiftCard())->orderBy('id', 'desc')->get();
foreach ($giftcards as $giftcard) {
$giftcard->op = '<button type="button" class="btn btn-red" id="delete-gift-card-' . $giftcard->id . '"
onclick="deleteGiftCard(' . $giftcard->id . ')">删除</button>';
$giftcard->status = $giftcard->status();
$giftcard->create_time = Tools::toDateTime((int) $giftcard->create_time);
$giftcard->use_time = Tools::toDateTime((int) $giftcard->use_time);
}
return $response->withJson([
'giftcards' => $giftcards,
]);
}
}