VipCodeRepository.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. /**
  3. * 兑换码仓库.
  4. * @author ningque
  5. * @date 2020-02-26 10:10:06
  6. */
  7. declare(strict_types=1);
  8. namespace App\Repositories;
  9. use App\Model\VipCodeModel;
  10. use Carbon\Carbon;
  11. use KZ2\Repositories\Model\Repository;
  12. class VipCodeRepository extends Repository
  13. {
  14. public function model()
  15. {
  16. return VipCodeModel::class;
  17. }
  18. /**
  19. * 生成兑换码
  20. * @return bool
  21. */
  22. public function makeCode($data)
  23. {
  24. $num = 0;
  25. $insert = [];
  26. while ($num < $data['count']) {
  27. $insert[$num] = [
  28. 'title' => $data['title'],
  29. 'remark' => $data['remark'],
  30. 'code' => strtoupper(random(6)),
  31. 'day' => $data['day'],
  32. 'type' => $data['type'],
  33. 'limit' => $data['limit'],
  34. 'expire' => $data['expire'],
  35. 'created_at' => Carbon::now()->toDateTimeString(),
  36. 'updated_at' => Carbon::now()->toDateTimeString(),
  37. ];
  38. $num++;
  39. }
  40. try {
  41. // 可能有重复的code,用try catch过滤.
  42. return VipCodeModel::query()->insert($insert);
  43. } catch (\Exception $e) {
  44. unset($insert);
  45. $this->makeCode($data);
  46. }
  47. }
  48. }