$home_notice, 'home_invite_banner' => cdn_url(site('home_invite_banner')) ]); } /** * 邀请页面 * @return \Psr\Http\Message\MessageInterface|\Psr\Http\Message\ResponseInterface * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface */ public function invite() { $user = AuthUser::getInstance()->get(); if (empty($user['invite_code'])) { $user['invite_code'] = 'U' . Common::createRandomKeys($user['id']); UserModel::query()->where('id', $user['id'])->update(['invite_code' => $user['invite_code']]); } // 优惠券数量 $list = (new UserCouponModel())->getList( params : [ 'user_id' => $user['id'], 'is_use' => 0, 'valid' => 0 ], orderBy: ['id' => 'desc'] ); $user_coupon_ids = array_column($list, 'coupon_id'); $coupon_num = count($user_coupon_ids); // 邀请人数 $invite_people_num = UserModel::query()->where('parent_id', $user['id'])->where('status', 1)->count(); // 待领取优惠券 // 未领取的优惠券 $new_coupons = (new CouponModel())->query()->whereNotIn('id', $user_coupon_ids)->where(['status' => 1])->get()->toArray(); return AppResult::success(result: [ 'invite_code' => $user['invite_code'], 'coupon_num' => $coupon_num, 'invite_people_num' => $invite_people_num, 'coupons' => $new_coupons, ]); } /** * 领取优惠券 * @return \Psr\Http\Message\MessageInterface|\Psr\Http\Message\ResponseInterface * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface */ public function get_coupon() { $user = AuthUser::getInstance()->get(); // 已领取的优惠券 $user_coupon_ids = UserCouponModel::query()->where(['user_id' => $user['id']])->pluck('coupon_id')->toArray(); // 未领取的优惠券 $new_coupons = CouponModel::query()->whereNotIn('id', $user_coupon_ids)->where(['status' => 1])->get()->toArray(); if (!$new_coupons) { return AppResult::success('暂无新的优惠券'); } $time = time(); $insert = []; foreach ($new_coupons as $key => $item) { $insert[] = [ 'user_id' => $user['id'], 'coupon_id' => $item['id'], 'name' => $item['name'], 'type' => $item['type'], 'min_money' => $item['min_money'], 'money' => $item['money'], 'valid_at' => strtotime(date('Y-m-d 23:59:59', $time + ($item['valid_days'] * 24 * 60 * 60))),// 自领取之日起 计算过期时间 'remark' => $item['remark'], 'status' => 1, 'create_time' => $time ]; } // 领取优惠券 if (count($insert) > 0) { if (!UserCouponModel::query()->insert($insert)) { return AppResult::error('领取失败'); } } return AppResult::success('领取成功'); } }