93 lines
2.6 KiB
PHP
93 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace App\Endpoint\Api\Http\Controllers;
|
|
|
|
use App\Endpoint\Api\Http\Resources\UserCouponResource;
|
|
use App\Exceptions\BizException;
|
|
use App\Helpers\Paginator as PaginatorHelper;
|
|
use App\Models\User;
|
|
use App\Models\UserCoupon;
|
|
use Illuminate\Http\Request;
|
|
|
|
class UserCouponController extends Controller
|
|
{
|
|
/**
|
|
* 我的优惠券
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
public function index(Request $request)
|
|
{
|
|
$user = $request->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);
|
|
$discount = $coupon->getDiscountAmount($request->input('total', 0));
|
|
|
|
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([]);
|
|
}
|
|
}
|