CreatorRuleRepository.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace App\Repositories;
  3. use App\Constants\CreatorConstant;
  4. use App\Model\CreatorRuleModel;
  5. use KZ2\Repositories\Model\Repository;
  6. use Psr\SimpleCache\CacheInterface;
  7. class CreatorRuleRepository extends Repository
  8. {
  9. public function model()
  10. {
  11. return CreatorRuleModel::class;
  12. }
  13. /**
  14. * 无缓存获取规则,返回数组.
  15. * @return array|mixed[]
  16. */
  17. public function getRulesWithoutCache()
  18. {
  19. $items = CreatorRuleModel::query()->orderBy('level', 'ASC')->get();
  20. $result = [];
  21. if ($items->count()) {
  22. $result = $items->toArray();
  23. }
  24. return $result;
  25. }
  26. /**
  27. * 获取规则(带缓存, 并格式化数据).
  28. * @return mixed
  29. */
  30. public function getRules()
  31. {
  32. $cacheRepo = make(CacheInterface::class);
  33. $arrItems = $cacheRepo->rememberForever(CreatorConstant::CACHE_KEY_RULE, function () {
  34. $lists = $this->getRulesWithoutCache();
  35. if (!empty($lists)) {
  36. foreach ($lists as &$v) {
  37. $tmpLevel = intval($v['level']);
  38. $v['level_name'] = $v['level'];
  39. $v['coin_desc'] = sprintf('累计%d元', $v['lowest_coin'] / 10);
  40. if ($tmpLevel == 0) {
  41. $v['level_name'] = '未认证';
  42. $v['coin_desc'] = '无';
  43. } elseif ($tmpLevel == 1) {
  44. $v['coin_desc'] = '认证通过即可';
  45. }
  46. unset($v['id'], $v['created_at'], $v['updated_at']);
  47. }
  48. }
  49. return $lists;
  50. });
  51. return $arrItems;
  52. }
  53. /**
  54. * 根据等级获取规则.
  55. * @param $level
  56. * @return \Hyperf\Database\Model\Builder|\Hyperf\Database\Model\Model|object|null
  57. */
  58. public function getRuleByLevel($level)
  59. {
  60. return CreatorRuleModel::query()->where(['level' => $level])->first();
  61. }
  62. }