Config.php 4.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Model;
  4. use Illuminate\Database\Eloquent\SoftDeletes;
  5. use Illuminate\Support\Facades\Cache;
  6. /**
  7. * App\Models\Config
  8. *
  9. * @property int $id
  10. * @property int $type_id config_types.id
  11. * @property string $name 配置名称
  12. * @property string $alias 别名
  13. * @property string $value 配置值
  14. * @property int $listorder 排序
  15. * @property string $input_type 组件类型
  16. * @property string $default_value 默认值
  17. * @property string|null $option_values 提供的选择项:json对象{"name":"value"}
  18. * @property string|null $tips 帮助信息
  19. * @property string|null $placeholder placeholder
  20. * @property string|null $rules 验证规则
  21. * @property string|null $rule_messages 验证错误信息json对象
  22. * @property \Illuminate\Support\Carbon|null $created_at
  23. * @property \Illuminate\Support\Carbon|null $updated_at
  24. * @property string|null $deleted_at
  25. * @method static bool|null forceDelete()
  26. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config newModelQuery()
  27. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config newQuery()
  28. * @method static \Illuminate\Database\Query\Builder|\App\Models\Config onlyTrashed()
  29. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config query()
  30. * @method static bool|null restore()
  31. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereAlias($value)
  32. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereCreatedAt($value)
  33. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereDefaultValue($value)
  34. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereDeletedAt($value)
  35. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereId($value)
  36. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereInputType($value)
  37. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereListorder($value)
  38. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereName($value)
  39. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereOptionValues($value)
  40. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config wherePlaceholder($value)
  41. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereRuleMessages($value)
  42. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereRules($value)
  43. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereTips($value)
  44. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereTypeId($value)
  45. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereUpdatedAt($value)
  46. * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereValue($value)
  47. * @method static \Illuminate\Database\Query\Builder|\App\Models\Config withTrashed()
  48. * @method static \Illuminate\Database\Query\Builder|\App\Models\Config withoutTrashed()
  49. * @mixin \Eloquent
  50. */
  51. class Config extends Model
  52. {
  53. use SoftDeletes;
  54. public function getOptionValuesAttribute($value)
  55. {
  56. if (empty($value)) {
  57. return [];
  58. }
  59. if (is_null(json_decode($value, true))) {
  60. return $value;
  61. }
  62. return json_decode($value, true);
  63. }
  64. public function getRuleMessagesAttribute($value)
  65. {
  66. return json_decode($value, true)?:[];
  67. }
  68. public static function buildConfig()
  69. {
  70. $types=ConfigType::where('parent', 0)->get();
  71. $configs=[];
  72. foreach ($types as $type) {
  73. $configs[$type->alias]=[];
  74. foreach ($type->subTypes as $secondType) {
  75. $configs[$type->alias][$secondType->alias]=[];
  76. foreach ($secondType->subTypes as $thirdType) {
  77. $configs[$type->alias][$secondType->alias][$thirdType->alias]=[];
  78. foreach ($thirdType->configs as $config) {
  79. $configs[$type->alias][$secondType->alias][$thirdType->alias][$config->alias]
  80. =$config->value?:$config->default_value;
  81. }
  82. }
  83. }
  84. }
  85. Cache::set('system_config', $configs);
  86. config($configs);
  87. return $configs;
  88. }
  89. }