GroupDataService.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace crmeb\services;
  12. use app\services\system\config\SystemGroupDataServices;
  13. /**
  14. * 获取组合数据配置
  15. * Class GroupDataService
  16. * @package crmeb\services
  17. */
  18. class GroupDataService
  19. {
  20. /**
  21. * 获取单个值
  22. * @param string $config_name 配置名称
  23. * @param int $limit 截取多少条
  24. * @param bool $isCaChe 是否读取缓存
  25. * @return array
  26. */
  27. public static function getData(string $config_name, int $limit = 0, bool $isCaChe = false): array
  28. {
  29. $callable = function () use ($config_name, $limit) {
  30. try {
  31. /** @var SystemGroupDataServices $service */
  32. $service = app()->make(SystemGroupDataServices::class);
  33. return $service->getConfigNameValue($config_name, $limit);
  34. } catch (\Exception $e) {
  35. return [];
  36. }
  37. };
  38. try {
  39. $cacheName = $limit ? "data_{$config_name}_{$limit}" : "data_{$config_name}";
  40. if ($isCaChe)
  41. return $callable();
  42. return CacheService::remember($cacheName, $callable);
  43. } catch (\Throwable $e) {
  44. return $callable();
  45. }
  46. }
  47. /**
  48. * 根据id 获取单个值
  49. * @param int $id
  50. * @param bool $isCaChe 是否读取缓存
  51. * @return array
  52. */
  53. public static function getDataNumber(int $id, bool $isCaChe = false): array
  54. {
  55. $callable = function () use ($id) {
  56. try {
  57. /** @var SystemGroupDataServices $service */
  58. $service = app()->make(SystemGroupDataServices::class);
  59. $data = $service->getDateValue($id);
  60. if (is_object($data))
  61. $data = $data->toArray();
  62. return $data;
  63. } catch (\Exception $e) {
  64. return [];
  65. }
  66. };
  67. try {
  68. $cacheName = "data_number_{$id}";
  69. if ($isCaChe)
  70. return $callable();
  71. return CacheService::remember($cacheName, $callable);
  72. } catch (\Throwable $e) {
  73. return $callable();
  74. }
  75. }
  76. }