UnitService.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace App\Services;
  3. use App\Unit;
  4. use App\Traits\ServiceAppAop;
  5. use Illuminate\Support\Facades\Cache;
  6. class UnitService
  7. {
  8. use ServiceAppAop;
  9. protected $modelClass=Unit::class;
  10. /*
  11. * array | string $column
  12. * 默认一些select字段,可传递string 或 array来指定select字段
  13. * */
  14. public function getSelection($column = ['id','name']){
  15. if (!is_array($column)) {
  16. $column = [$column];
  17. }
  18. return Unit::query()->orderBy("sequence")->select($column)->get();
  19. }
  20. /**
  21. * 设置/刷新 单位缓存
  22. */
  23. public function setUnitCache()
  24. {
  25. $units = Unit::query()->get();
  26. Cache::forever("units",$units);
  27. }
  28. /**
  29. * 获取单位缓存
  30. *
  31. * @return mixed
  32. */
  33. public function getUnitCache()
  34. {
  35. if (!Cache::has("units")){
  36. $units = Unit::query()->get();
  37. Cache::forever("units",$units);
  38. }
  39. return Cache::get("units");
  40. }
  41. /**
  42. * 获取单位集的映射
  43. *
  44. * @param null|array $targets
  45. *
  46. * @return array
  47. */
  48. public function getUnitMapping($targets = null)
  49. {
  50. return Cache::remember("unitMapping:".json_encode($targets,JSON_UNESCAPED_UNICODE),config("cache.expirations.rarelyChange"),function ()use($targets){
  51. $result = [];
  52. $units = $this->getUnitCache();
  53. if (!$units)return [];
  54. foreach ($units as $unit){
  55. if (!$targets)$result[$unit->id] = $unit->name;
  56. else if (array_search($unit->name,$targets)!==false)$result[$unit->id] = $unit->name;
  57. }
  58. return $result;
  59. });
  60. }
  61. }