HomeController.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Api\v1;
  4. use App\Controller\AbstractController;
  5. use App\Model\Arts\CouponModel;
  6. use App\Model\Arts\UserAddressModel;
  7. use App\Model\Arts\UserCouponModel;
  8. use App\Model\Arts\UserModel;
  9. use App\Model\Arts\UserMoneyLogModel;
  10. use App\Model\Arts\UserWalletModel;
  11. use App\Request\Api\v1\User\AddressAddRequest;
  12. use App\Request\Api\v1\User\AddressDelRequest;
  13. use App\Request\Api\v1\User\AddressDetailRequest;
  14. use App\Request\Api\v1\User\AddressEditRequest;
  15. use App\Request\Api\v1\User\AddressListRequest;
  16. use App\Request\Api\v1\User\MoneyLogRequest;
  17. use App\Utils\AppResult;
  18. use App\Utils\Common;
  19. use App\Utils\Control\AuthUser;
  20. /**
  21. * 首页
  22. * UserController
  23. */
  24. class HomeController extends AbstractController
  25. {
  26. // 日志模块名称
  27. const LOG_MODULE = 'v1/HomeController';
  28. public function index()
  29. {
  30. $home_notice = site('home_notice');
  31. $home_notice = explode("\n", $home_notice);
  32. return AppResult::success('success', [
  33. 'home_notice' => $home_notice,
  34. 'home_invite_banner' => cdn_url(site('home_invite_banner'))
  35. ]);
  36. }
  37. /**
  38. * 邀请页面
  39. * @return \Psr\Http\Message\MessageInterface|\Psr\Http\Message\ResponseInterface
  40. * @throws \Psr\Container\ContainerExceptionInterface
  41. * @throws \Psr\Container\NotFoundExceptionInterface
  42. */
  43. public function invite()
  44. {
  45. $user = AuthUser::getInstance()->get();
  46. if (empty($user['invite_code'])) {
  47. $user['invite_code'] = 'U' . Common::createRandomKeys($user['id']);
  48. UserModel::query()->where('id', $user['id'])->update(['invite_code' => $user['invite_code']]);
  49. }
  50. // 优惠券数量
  51. $list = (new UserCouponModel())->getList(
  52. params : [
  53. 'user_id' => $user['id'],
  54. 'is_use' => 0,
  55. 'valid' => 0
  56. ],
  57. orderBy: ['id' => 'desc']
  58. );
  59. $user_coupon_ids = array_column($list, 'coupon_id');
  60. $coupon_num = count($user_coupon_ids);
  61. // 邀请人数
  62. $invite_people_num = UserModel::query()->where('parent_id', $user['id'])->where('status', 1)->count();
  63. // 待领取优惠券
  64. // 未领取的优惠券
  65. $new_coupons = (new CouponModel())->query()->whereNotIn('id', $user_coupon_ids)->where(['status' => 1])->get()->toArray();
  66. return AppResult::success(result: [
  67. 'invite_code' => $user['invite_code'],
  68. 'coupon_num' => $coupon_num,
  69. 'invite_people_num' => $invite_people_num,
  70. 'coupons' => $new_coupons,
  71. ]);
  72. }
  73. /**
  74. * 领取优惠券
  75. * @return \Psr\Http\Message\MessageInterface|\Psr\Http\Message\ResponseInterface
  76. * @throws \Psr\Container\ContainerExceptionInterface
  77. * @throws \Psr\Container\NotFoundExceptionInterface
  78. */
  79. public function get_coupon()
  80. {
  81. $user = AuthUser::getInstance()->get();
  82. // 已领取的优惠券
  83. $user_coupon_ids = UserCouponModel::query()->where(['user_id' => $user['id']])->pluck('coupon_id')->toArray();
  84. // 未领取的优惠券
  85. $new_coupons = CouponModel::query()->whereNotIn('id', $user_coupon_ids)->where(['status' => 1])->get()->toArray();
  86. if (!$new_coupons) {
  87. return AppResult::success('暂无新的优惠券');
  88. }
  89. $time = time();
  90. $insert = [];
  91. foreach ($new_coupons as $key => $item) {
  92. $insert[] = [
  93. 'user_id' => $user['id'],
  94. 'coupon_id' => $item['id'],
  95. 'name' => $item['name'],
  96. 'type' => $item['type'],
  97. 'min_money' => $item['min_money'],
  98. 'money' => $item['money'],
  99. 'valid_at' => strtotime(date('Y-m-d 23:59:59', $time + ($item['valid_days'] * 24 * 60 * 60))),// 自领取之日起 计算过期时间
  100. 'remark' => $item['remark'],
  101. 'status' => 1,
  102. 'create_time' => $time
  103. ];
  104. }
  105. // 领取优惠券
  106. if (count($insert) > 0) {
  107. if (!UserCouponModel::query()->insert($insert)) {
  108. return AppResult::error('领取失败');
  109. }
  110. }
  111. return AppResult::success('领取成功');
  112. }
  113. }