| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <?php
- // +----------------------------------------------------------------------
- // | saiadmin [ saiadmin快速开发框架 ]
- // +----------------------------------------------------------------------
- namespace plugin\saiadmin\app\logic\miniProgram;
- use plugin\saiadmin\app\model\miniProgram\WechatMiniProgram;
- use plugin\saiadmin\basic\think\BaseLogic;
- use plugin\saiadmin\exception\ApiException;
- /**
- * 微信小程序绑定逻辑层
- */
- class WechatMiniProgramLogic extends BaseLogic
- {
- private const CONFIG_FIELDS = [
- 'mini_program_name',
- 'appid',
- 'appsecret',
- 'original_id',
- 'mchid',
- 'api_key',
- 'apiv3_key',
- 'apiclient_cert',
- 'apiclient_key',
- 'certificate_serial_no',
- 'service_id',
- ];
- public function __construct()
- {
- $this->model = new WechatMiniProgram();
- }
- 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['partner_nickname'],
- $data['partner_account'],
- $data['partner_name'],
- $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 已经绑定');
- }
- }
- }
|