WechatOfficialAccountLogic.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | saiadmin [ saiadmin快速开发框架 ]
  4. // +----------------------------------------------------------------------
  5. namespace plugin\saiadmin\app\logic\miniProgram;
  6. use plugin\saiadmin\app\model\miniProgram\WechatOfficialAccount;
  7. use plugin\saiadmin\basic\think\BaseLogic;
  8. /**
  9. * 微信公众号配置逻辑层
  10. */
  11. class WechatOfficialAccountLogic extends BaseLogic
  12. {
  13. private const CONFIG_ID = 1;
  14. private const STRING_FIELDS = [
  15. 'logo',
  16. 'account_name',
  17. 'description',
  18. 'follow_message',
  19. 'follow_url',
  20. 'appid',
  21. 'original_id',
  22. 'appsecret',
  23. 'server_url',
  24. 'token',
  25. 'encoding_aes_key',
  26. ];
  27. public function __construct()
  28. {
  29. $this->model = new WechatOfficialAccount();
  30. }
  31. public function getConfig(): array
  32. {
  33. $model = $this->model->findOrEmpty(self::CONFIG_ID);
  34. if (!$model->isEmpty()) {
  35. return $model->toArray();
  36. }
  37. return [
  38. 'id' => self::CONFIG_ID,
  39. 'logo' => '',
  40. 'account_name' => '',
  41. 'description' => '',
  42. 'follow_message' => '',
  43. 'follow_url' => '',
  44. 'follow_enabled' => 0,
  45. 'appid' => '',
  46. 'original_id' => '',
  47. 'appsecret' => '',
  48. 'server_url' => '',
  49. 'token' => '',
  50. 'encoding_aes_key' => '',
  51. 'encryption_mode' => 1,
  52. 'free_recharge_times' => 0,
  53. 'follow_free_recharge' => 0,
  54. 'all_merchant_follow' => 0,
  55. ];
  56. }
  57. public function saveConfig(array $data): bool
  58. {
  59. foreach (self::STRING_FIELDS as $field) {
  60. if (array_key_exists($field, $data) && is_string($data[$field])) {
  61. $data[$field] = trim($data[$field]);
  62. }
  63. }
  64. foreach (['follow_enabled', 'encryption_mode', 'free_recharge_times', 'follow_free_recharge', 'all_merchant_follow'] as $field) {
  65. if (array_key_exists($field, $data)) {
  66. $data[$field] = (int) $data[$field];
  67. }
  68. }
  69. unset($data['id'], $data['created_by'], $data['create_time'], $data['updated_by'], $data['update_time']);
  70. $model = $this->model->findOrEmpty(self::CONFIG_ID);
  71. if ($model->isEmpty()) {
  72. $data['id'] = self::CONFIG_ID;
  73. return (bool) $this->model->create($data)->getKey();
  74. }
  75. return $model->save($data) !== false;
  76. }
  77. }