id; $ridingCard = CardRiding::query() ->filter($cardRidingFilter) ->where(AdminMerchant::getMerchantWhere()) ->with(['areaRidingCard']) ->orderByDesc('id'); if (!Admin::isAdministrator()) { $ridingCard = $ridingCard->where(function ($q) use ($admin_id) { $q->where('admin_id', $admin_id)->orWhere('admin_id', 1); }); } $ridingCard = $request->get('all') ? $ridingCard->get() : $ridingCard->paginate(); return $this->ok(CardRidingResource::collection($ridingCard)); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { // } /** * store 添加骑行卡 * * @param CardRidingRequest $ridingCardRequest * @param CardRiding $cardRiding * @return \Illuminate\Http\Response * @author Fx * */ public function store(CardRidingRequest $ridingCardRequest, CardRiding $cardRiding) { // $admin_id = Admin::user()->id; $inputs = $ridingCardRequest->validated(); if ($inputs['is_limit_times'] == CardRiding::LIMIT_TIMES_NO) { // 不限次设为0 $inputs['times'] = 0; } if ($inputs['is_discount'] == CardRiding::DISCOUNT_NO) { // 无折扣设为1.00 $inputs['discount'] = 1.00; } $inputs['admin_id'] = $admin_id; $inputs['merchant_id'] = AdminMerchant::putMerchantId(); $cardRiding = $cardRiding->create($inputs); if (!empty($areas = $inputs['areas'] ?? [])) { $cardRidingAreas = $cardRiding->areaRidingCard()->attach($areas, ['merchant_id' => AdminMerchant::putMerchantId()]); // $cardRidingAreas->merchant_id = AdminMerchant::putMerchantId(); // $cardRidingAreas->save(); } return $this->created(CardRidingResource::make($cardRiding)); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * edit 编辑骑行卡 * * @param CardRiding $cardRiding * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function edit(CardRiding $cardRiding) { // $cardRiding->load(['areaRidingCard']); return $this->ok(CardRidingResource::make($cardRiding)); } /** * update 更新骑行卡 * * @param CardRidingRequest $ridingCardRequest * @param CardRiding $cardRiding * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function update(CardRidingRequest $ridingCardRequest, CardRiding $cardRiding) { // $admin_id = Admin::user()->id; $inputs = $ridingCardRequest->validated(); if (!Admin::isAdministrator() && !Admin::isNormalAdministrator()) { if ($admin_id !== $cardRiding->admin_id) { return $this->error('暂无权限'); } } if ($inputs['is_limit_times'] == CardRiding::LIMIT_TIMES_NO) { // 不限次设为0 $inputs['times'] = 0; } if ($inputs['is_discount'] == CardRiding::DISCOUNT_NO) { // 无折扣设为1.00 $inputs['discount'] = 1.00; } // Log::info($inputs); $cardRiding->update($inputs); if (isset($inputs['areas'])) { $cardRiding->areaRidingCard()->sync($inputs['areas']); } return $this->created(CardRidingResource::make($cardRiding)); } /** * destroy 删除骑行卡 * * @param CardRiding $ridingCard * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function destroy(CardRiding $ridingCard) { // $ridingCard->delete(); return $this->noContent(); } /** * giveCardToUser 赠送骑行卡 * * @param Request $request * @return \Illuminate\Http\JsonResponse * @author Fx * */ public function giveCardToUser(Request $request) { $mobile = $request->get('mobile') ?? ''; $card_id = $request->get('card_id') ?? ''; $user_id = $request->get('id', 0); if (empty($mobile) || !$user_id || empty($card_id)) return $this->error('参数错误'); $users = User::query() ->where('id', $user_id) ->where('mobile', $mobile) ->first(); if (empty($users)) return $this->error('找不到该用户'); $cardRiding = CardRiding::query() ->where('is_give', CardRiding::GIVE_OK) ->find($card_id); if (empty($cardRiding)) return $this->error('找不到该骑行卡'); if ($cardRiding->is_give == CardRiding::GIVE_NO) return $this->error('该骑行卡不可赠送'); $expiration_time = Carbon::now()->addDays($cardRiding->effective_days)->format('Y-m-d H:i:s'); try { DB::beginTransaction(); $cardRidingOrder = CardRidingOrder::firstOrCreate([ 'no' => CardRidingOrder::makeNo(), 'area_id' => $users->register_area_id, 'user_id' => $users->id, 'riding_card_id' => $card_id, 'money' => 0, 'discount' => 1, 'pay_money' => 0, 'pay_type' => CardRidingOrder::PAY_TYPE_ADMIN_GIVE, 'pay_status' => CardRidingOrder::PAY_STATUS_OK, 'pay_time' => Carbon::now(), 'merchant_id' => $cardRiding->merchant_id, ]); $data = [ 'user_id' => $users->id, 'riding_card_id' => $card_id, 'card_riding_order_id' => $cardRidingOrder->id, 'take_effect_time' => Carbon::now(), 'deduction_money' => $cardRiding->deduction_money, 'expiration_time' => $expiration_time, 'is_limit_times' => $cardRiding->is_limit_times, 'can_ridding_times' => $cardRiding->times, 'day_can_ridding_times' => $cardRiding->day_can_ridding_times, 'status' => CardRidingUserBags::STATUS_OK, 'merchant_id' => $cardRiding->merchant_id, ]; CardRidingUserBags::firstOrCreate(['card_riding_order_id' => $cardRidingOrder->id], $data); DB::commit(); return $this->ok('操作成功'); } catch (\Exception $e) { DB::rollBack(); Log::error($e->getMessage()); return $this->error('出现错误,请联系管理员'); } } }