user(); $query = $user->coupons(); $coupons = $query->filter($request->all())->simplePaginate(PaginatorHelper::resolvePerPage('per_page', 20, 50)); return UserCouponResource::collection($coupons); } /** * 查询所有用户的优惠券 */ public function list(Request $request) { $user = $request->user(); // 员工身份 if (!$user->userInfo->is_company) { throw new BizException("非员工身份"); } $query = UserCoupon::query(); if ($request->input('user_phone')) { $user = User::where('phone', $request->input('user_phone'))->first(); if (!$user) { throw new BizException("手机号不存在"); } $query->where('user_id', $user->id); } $coupons = $query->filter($request->all())->simplePaginate(PaginatorHelper::resolvePerPage('per_page', 20, 50)); return UserCouponResource::collection($coupons); } /** * 计算优惠券抵扣金额 */ public function discount(Request $request) { $request->validate([ 'id' => 'required' ], [ 'id.required' => '优惠券id必填' ]); $id = $request->input('id'); $coupon = UserCoupon::query()->onlyAvailable()->findOrFail($id); $total = $request->input('total', 0) * 100; $discount = $coupon->getDiscountAmount($total); return response()->json(['discount' => bcdiv($discount, 100, 2)]); } /** * 直接核销优惠券 */ public function check(Request $request) { $user = $request->user(); // 员工身份 if (!$user->userInfo->is_company) { throw new BizException("非员工身份"); } $request->validate([ 'id' => 'requreid' ], [ 'id.required' => '优惠券id必填' ]); $id = $request->input('id'); $coupon = UserCoupon::query()->onlyAvailable()->findOrFail($id); $coupon->markAsUse(); return response()->json([]); } }