| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- <?php
- // +----------------------------------------------------------------------
- // | saiadmin [ saiadmin快速开发框架 ]
- // +----------------------------------------------------------------------
- namespace plugin\saiadmin\app\logic\miniProgram;
- use plugin\saiadmin\app\model\miniProgram\AlipayMiniProgram;
- use plugin\saiadmin\basic\think\BaseLogic;
- use plugin\saiadmin\exception\ApiException;
- /**
- * 支付宝小程序配置逻辑层
- */
- class AlipayMiniProgramLogic extends BaseLogic
- {
- private const CONFIG_FIELDS = [
- 'mini_program_name',
- 'appid',
- 'app_private_key',
- 'alipay_public_key',
- 'aes_key',
- 'credit_service_id',
- ];
- public function __construct()
- {
- $this->model = new AlipayMiniProgram();
- }
- public function add(array $data): mixed
- {
- $data = $this->normalizeConfig($data);
- $this->ensureAppidAvailable($data['appid']);
- return parent::add($data);
- }
- public function edit($id, array $data): mixed
- {
- $data = $this->normalizeConfig($data);
- $this->ensureAppidAvailable($data['appid'], (int) $id);
- unset($data['id'], $data['partner_id'], $data['created_by'], $data['create_time']);
- return parent::edit($id, $data);
- }
- private function normalizeConfig(array $data): array
- {
- foreach (self::CONFIG_FIELDS as $field) {
- if (array_key_exists($field, $data) && is_string($data[$field])) {
- $data[$field] = trim($data[$field]);
- }
- }
- return $data;
- }
- private function ensureAppidAvailable(string $appid, ?int $ignoreId = null): void
- {
- $query = $this->model->where('appid', '=', $appid);
- if ($ignoreId !== null) {
- $query->where('id', '<>', $ignoreId);
- }
- if ($query->count() > 0) {
- throw new ApiException('该支付宝小程序 APPID 已经绑定');
- }
- }
- }
|