MiniProgramRelatedLinksLogic.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | saiadmin [ saiadmin快速开发框架 ]
  4. // +----------------------------------------------------------------------
  5. namespace plugin\saiadmin\app\logic\miniProgram;
  6. use plugin\saiadmin\app\model\miniProgram\MiniProgramRelatedLink;
  7. use plugin\saiadmin\app\model\miniProgram\MiniProgramRelatedSettings;
  8. use plugin\saiadmin\basic\think\BaseLogic;
  9. use plugin\saiadmin\exception\ApiException;
  10. /**
  11. * 小程序相关链接逻辑层
  12. */
  13. class MiniProgramRelatedLinksLogic extends BaseLogic
  14. {
  15. private const SETTINGS_ID = 1;
  16. private MiniProgramRelatedSettings $settingsModel;
  17. public function __construct()
  18. {
  19. $this->model = new MiniProgramRelatedLink();
  20. $this->settingsModel = new MiniProgramRelatedSettings();
  21. }
  22. public function getConfig(): array
  23. {
  24. $settings = $this->settingsModel->findOrEmpty(self::SETTINGS_ID);
  25. return [
  26. 'links' => $this->model
  27. ->field(['id', 'code', 'name', 'link', 'link_label', 'secondary_link', 'secondary_label', 'sort'])
  28. ->order('sort', 'asc')
  29. ->order('id', 'asc')
  30. ->select()
  31. ->toArray(),
  32. 'verification_file' => $settings->isEmpty()
  33. ? ''
  34. : (string) $settings->getAttr('verification_file'),
  35. ];
  36. }
  37. public function saveVerificationFile(string $file): bool
  38. {
  39. $file = trim($file);
  40. if (mb_strlen($file) > 500) {
  41. throw new ApiException('校验文件地址不能超过 500 个字符');
  42. }
  43. $settings = $this->settingsModel->findOrEmpty(self::SETTINGS_ID);
  44. if ($settings->isEmpty()) {
  45. return (bool) $this->settingsModel
  46. ->create(['id' => self::SETTINGS_ID, 'verification_file' => $file])
  47. ->getKey();
  48. }
  49. return $settings->save(['verification_file' => $file]) !== false;
  50. }
  51. }