123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- <?php
- namespace App\Http\Controllers\Admin;
- use App\Filters\DepositCardFilter;
- use App\Http\Requests\DepositCardRequest;
- use App\Http\Resources\DepositCardResource;
- use App\Models\AdminMerchant;
- use App\Models\AdminUser;
- use App\Models\AdminUserArea;
- use App\Models\DepositCard;
- use App\Models\DepositCardOrder;
- use App\Models\User;
- use App\Utils\Admin;
- use Carbon\Carbon;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- class DepositCardController extends Controller
- {
- /**
- * index
- *
- * @param Request $request
- * @param DepositCardFilter $depositCardFilter
- * @return \Illuminate\Http\JsonResponse
- * @author Fx
- */
- public function index(Request $request, DepositCardFilter $depositCardFilter)
- {
- $area_ids = AdminUser::getAreaIdsByAdminId(Admin::user()->id);
- $depositCards = DepositCard::query()->filter($depositCardFilter)->where(AdminMerchant::getMerchantWhere())->orderByDesc('id')->whereIn('area_id', $area_ids);
- $depositCards = $request->get('all') ? $depositCards->get() : $depositCards->paginate();
- return $this->ok(DepositCardResource::collection($depositCards));
- }
- /**
- * Show the form for creating a new resource.
- *
- * @return \Illuminate\Http\Response
- */
- public function create()
- {
- //
- }
- /**
- * store
- *
- * @param DepositCardRequest $request
- * @param DepositCard $depositCard
- * @return \Illuminate\Http\JsonResponse
- * @author Fx
- *
- */
- public function store(DepositCardRequest $request, DepositCard $depositCard)
- {
- $inputs = $request->validated();
- if ($inputs['is_discount'] == DepositCard::DISCOUNT_NO) {
- // 无折扣设为100
- $inputs['discount'] = 100;
- }
- $inputs['merchant_id'] = AdminMerchant::getMerchantWhere();
- $depositCard = $depositCard->create($inputs);
- //
- return $this->created(DepositCardResource::make($depositCard));
- }
- /**
- * Display the specified resource.
- *
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function show($id)
- {
- //
- }
- /**
- * Show the form for editing the specified resource.
- *
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function edit(DepositCard $depositCard)
- {
- //
- return $this->ok(DepositCardResource::make($depositCard));
- }
- /**
- * Update the specified resource in storage.
- *
- * @param \Illuminate\Http\Request $request
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function update(DepositCardRequest $request, DepositCard $depositCard)
- {
- //
- $inputs = $request->validated();
- if ($inputs['is_discount'] == DepositCard::DISCOUNT_NO) {
- // 无折扣设为100
- $inputs['discount'] = 100;
- }
- $depositCard->update($inputs);
- //
- return $this->created(DepositCardResource::make($depositCard));
- }
- /**
- * destroy
- *
- * @param DepositCard $depositCard
- * @return \Illuminate\Http\JsonResponse
- * @author Fx
- *
- */
- public function destroy(DepositCard $depositCard)
- {
- //
- $depositCard->delete();
- return $this->noContent();
- }
- public function giveDepositCardToUser(Request $request)
- {
- $mobile = $request->get('mobile') ?? '';
- $card_id = $request->get('card_id') ?? '';
- if (empty($mobile) || empty($card_id)) return $this->error('参数错误');
- $users = User::query()
- ->where('mobile', $mobile)
- ->first();
- if (empty($users)) return $this->error('找不到该用户,请检查手机号是否正确');
- $depositCard = DepositCard::query()
- ->where('status', DepositCard::STATUS_OK)
- ->find($card_id);
- if (empty($depositCard)) return $this->error('找不到该免押金卡');
- if ($depositCard->is_give == DepositCard::GIVE_NO) return $this->error('此卡不能赠送');
- DB::beginTransaction();
- try {
- $depositCardOrder = DepositCardOrder::firstOrCreate([
- 'no' => DepositCardOrder::makeNo(),
- 'area_id' => $users->register_area_id,
- 'user_id' => $users->id,
- 'deposit_cards_id' => $depositCard->id,
- 'money' => 0.00,
- 'effective_days' => $depositCard->effective_days,
- 'discount' => 100,
- 'pay_money' => 0.00,
- 'pay_type' => DepositCardOrder::PAY_TYPE_ADMIN_GIVE,
- 'pay_status' => DepositCardOrder::PAY_STATUS_OK,
- 'pay_time' => Carbon::now(),
- ]);
- $deposit_expire_time = Carbon::parse($users->deposit_expire_time);
- if(Carbon::now()->gte($deposit_expire_time)){
- $time = Carbon::now();
- }else{
- $time = $deposit_expire_time;
- }
- if($users->deposit_type == User::DEPOSIT_MONEY){
- User::where('id', $users->id)->update([
- 'deposit_expire_time' => $time->addDays($depositCardOrder->effective_days),
- // 'deposit_type' => User::DEPOSIT_CARD,
- 'is_deposit' => User::DEPOSIT_OK
- ]);
- }else{
- User::where('id', $users->id)->update([
- 'deposit_expire_time' => $time->addDays($depositCardOrder->effective_days),
- 'deposit_type' => User::DEPOSIT_CARD,
- 'is_deposit' => User::DEPOSIT_OK
- ]);
- }
- DB::commit();
- return $this->ok('操作成功');
- } catch (\Exception $exception) {
- DB::rollBack();
- Log::error($exception->getMessage());
- return $this->error('出现错误,请联系管理员');
- }
- }
- }
|