VersionRepository.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Repositories;
  4. use App\Model\UserModel;
  5. use App\Model\VersionModel;
  6. use Hyperf\Database\Model\Builder;
  7. use KZ2\Repositories\Model\Repository;
  8. use App\Repositories\Utils\RandomUserInfoRepository;
  9. use Psr\SimpleCache\CacheInterface;
  10. class VersionRepository extends Repository
  11. {
  12. /**
  13. * @return Builder|mixed|string
  14. */
  15. public function model()
  16. {
  17. return UserModel::class;
  18. }
  19. /**
  20. * 随机产生昵称.
  21. * @return string
  22. */
  23. public function randGenerateNick()
  24. {
  25. return RandomUserInfoRepository::getNickname();
  26. }
  27. /**
  28. * 随机产生设备号
  29. * @return string
  30. */
  31. public function randGenerateDeviceNo()
  32. {
  33. return strtolower(random(32));
  34. }
  35. /**
  36. * 获取最新的强制版本信息.
  37. * @param $deviceType
  38. * @return mixed
  39. */
  40. public function getLastForce($deviceType)
  41. {
  42. $cacheVersionKey = 'force_version:' . $deviceType;
  43. $lastForceVersionInfo = make(CacheInterface::class)->remember(
  44. $cacheVersionKey,
  45. 60 * 60,
  46. function () use ($deviceType) {
  47. $conditions = [
  48. 'status' => 1,
  49. 'device_type' => $deviceType,
  50. 'version_type' => 'free',
  51. 'force' => 1,
  52. ];
  53. $item = VersionModel::query()->where($conditions)->orderByDesc('version_code')->first();
  54. if (!empty($item)) {
  55. $item = $item->toArray();
  56. return $item;
  57. } else {
  58. return null;
  59. }
  60. }
  61. );
  62. return $lastForceVersionInfo;
  63. }
  64. }