Rumah > rangka kerja php > Laravel > Cara menggunakan Laravel untuk membangunkan platform perkongsian kumpulan dalam talian

Cara menggunakan Laravel untuk membangunkan platform perkongsian kumpulan dalam talian

王林
Lepaskan: 2023-11-03 19:18:11
asal
973 orang telah melayarinya

Cara menggunakan Laravel untuk membangunkan platform perkongsian kumpulan dalam talian

Dalam beberapa tahun kebelakangan ini, dengan perkembangan pesat Internet mudah alih, pelbagai platform e-dagang berasaskan pembelian berkumpulan telah bermunculan Antaranya, platform e-dagang yang memfokuskan kepada pembelian berkumpulan semakin popular di kalangan pengguna. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Laravel untuk membangunkan platform pembinaan kumpulan dalam talian dan menyediakan contoh kod khusus.

1. Analisis Keperluan

Sebelum memulakan pembangunan, kami perlu menjalankan analisis keperluan untuk menjelaskan modul berfungsi yang perlu dibangunkan. Platform pembinaan kumpulan yang lengkap secara amnya perlu memasukkan modul berikut:

1 Modul pengurusan pengguna

Pendaftaran pengguna, log masuk, pengurusan maklumat peribadi, dsb.

2. Modul pengurusan produk

Pentadbir boleh menambah maklumat produk, termasuk nama produk, harga, inventori, dll.

3. Modul Pengurusan Pesanan

Pengguna boleh memilih produk untuk dikumpulkan bersama, membuat pesanan untuk pembelian dan pentadbir boleh melihat dan memproses pesanan.

4. Modul pengurusan kumpulan

Pengguna boleh membuat aktiviti kumpulan atau menyertai aktiviti kumpulan sedia ada.

5. Modul pembayaran

menyokong pelbagai kaedah pembayaran, dan pengguna boleh memilih kaedah pembayaran yang sesuai dengan mereka.

2. Persediaan persekitaran

Sebelum menyediakan persekitaran pembangunan, anda perlu memasang Komposer terlebih dahulu, dan kemudian jalankan arahan berikut pada baris arahan:

composer create-project --prefer-dist laravel/laravel pin-tuan
Salin selepas log masuk

Arahan ini akan mencipta projek Laravel bernama "pin-tuan".

Seterusnya, kita perlu mengkonfigurasi pangkalan data, mengedit fail ".env" dalam direktori akar projek dan mengisi maklumat berkaitan pangkalan data sepenuhnya.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=pin-tuan
DB_USERNAME=root
DB_PASSWORD=root
Salin selepas log masuk

Selepas melengkapkan langkah di atas, anda boleh mula menulis kod program.

3. Tulis kod program

1. Modul pengurusan pengguna

(1) Pendaftaran pengguna

Pertama, kita perlu menambah laluan pendaftaran dalam fail penghalaan:

Route::get('/register', 'AuthRegisterController@showRegistrationForm')->name('register');
Route::post('/register', 'AuthRegisterController@register');
Salin selepas log masuk

Di sini kami menggunakan sistem pengesahan pengguna Laravel sendiri Fungsi pendaftaran pengguna. Dalam fail pengawal, kita hanya perlu mengatasi kaedah showRegistrationForm() dan register(). Kod khusus adalah seperti berikut:

class RegisterController extends Controller
{
    use RegistersUsers;

    protected $redirectTo = '/dashboard';

    public function __construct()
    {
        $this->middleware('guest');
    }

    public function showRegistrationForm()
    {
        return view('auth.register');
    }

    protected function register(Request $request)
    {
        $this->validator($request->all())->validate();

        event(new Registered($user = $this->create($request->all())));

        $this->guard()->login($user);

        return redirect($this->redirectPath());
    }
}
Salin selepas log masuk

(2) Log masuk pengguna

Tambah laluan log masuk dalam fail penghalaan:

Route::get('/login', 'AuthLoginController@showLoginForm')->name('login');
Route::post('/login', 'AuthLoginController@login');
Route::post('/logout', 'AuthLoginController@logout')->name('logout');
Salin selepas log masuk

Begitu juga, kami menggunakan sistem pengesahan pengguna Laravel sendiri untuk melaksanakan fungsi log masuk pengguna. Dalam fail pengawal, kita hanya perlu mengatasi kaedah showLoginForm(), log masuk() dan log keluar(). Kod khusus adalah seperti berikut:

class LoginController extends Controller
{
    use AuthenticatesUsers;

    protected $redirectTo = '/dashboard';

    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    public function showLoginForm()
    {
        return view('auth.login');
    }

    protected function authenticated(Request $request, $user)
    {
        if (!$user->is_activated) {
            $this->guard()->logout();

            return redirect('/login')->withError('请先激活您的账号');
        }
    }

    public function logout(Request $request)
    {
        $this->guard()->logout();

        $request->session()->invalidate();

        return redirect('/login');
    }
}
Salin selepas log masuk

(3) Pengurusan maklumat peribadi

Dalam fail pengawal, kami hanya perlu menulis kaedah kemas kini() untuk mengendalikan permintaan kemas kini maklumat peribadi. Kod khusus adalah seperti berikut:

public function update(Request $request)
{
    $user = Auth::user();

    $this->validate($request, [
        'name' => 'required|string|max:255|unique:users,name,' . $user->id,
        'email' => 'required|string|email|max:255|unique:users,email,' . $user->id,
        'password' => 'nullable|string|min:6|confirmed',
    ]);

    $user->name = $request->input('name');
    $user->email = $request->input('email');
    if ($request->has('password')) {
        $user->password = bcrypt($request->input('password'));
    }
    $user->save();

    return redirect()->back()->withSuccess('更新成功');
}
Salin selepas log masuk

2 Modul pengurusan produk

(1) Senarai produk

Pertama, tentukan model produk dalam fail model:

class Product extends Model
{
    protected $fillable = ['name', 'price', 'stock', 'description', 'image'];

    public function getAvatarAttribute($value)
    {
        return asset('storage/' . $value);
    }
}
Salin selepas log masuk

Seterusnya, dalam fail pengawal, kami menulis indeks( ) kaedah untuk Memaparkan senarai produk. Kod khusus adalah seperti berikut:

public function index()
{
    $products = Product::all();

    return view('product.index', compact('products'));
}
Salin selepas log masuk

Dalam fail paparan, kami hanya perlu melintasi semua produk dan memaparkannya. Kod khusus adalah seperti berikut:

@foreach ($products as $product)
    <div class="col-md-4">
        <div class="card mb-4 shadow-sm">
            <img  src="{{ $product- alt="Cara menggunakan Laravel untuk membangunkan platform perkongsian kumpulan dalam talian" >image }}" width="100%">
            <div class="card-body">
                <h5 class="card-title">{{ $product->name }}</h5>
                <p class="card-text">{{ $product->description }}</p>
                <div class="d-flex justify-content-between align-items-center">
                    <div class="btn-group">
                        <a href="{{ route('product.show', $product->id) }}" class="btn btn-sm btn-outline-secondary">查看</a>
                    </div>
                    <small class="text-muted">{{ $product->price }}元</small>
                </div>
            </div>
        </div>
    </div>
@endforeach
Salin selepas log masuk

(2) Butiran produk

Dalam fail pengawal, kami menulis kaedah show() untuk memaparkan butiran produk. Kod khusus adalah seperti berikut:

public function show($id)
{
    $product = Product::findOrFail($id);

    return view('product.show', compact('product'));
}
Salin selepas log masuk

Dalam fail paparan, kami hanya perlu memaparkan maklumat terperinci produk. Kod khusus adalah seperti berikut:

<div class="row">
    <div class="col-md-6">
        <img  src="{{ $product- alt="Cara menggunakan Laravel untuk membangunkan platform perkongsian kumpulan dalam talian" >image }}" width="100%">
    </div>
    <div class="col-md-6">
        <h2>{{ $product->name }}</h2>
        <p>价格:{{ $product->price }}元</p>
        <p>库存:{{ $product->stock }}件</p>
        <form action="{{ route('product.buy', $product->id) }}" method="post">
            @csrf
            <div class="form-group">
                <label for="quantity">数量</label>
                <input type="number" name="quantity" class="form-control" min="1" max="{{ $product->stock }}" required>
            </div>
            <button type="submit" class="btn btn-primary">立即购买</button>
        </form>
    </div>
</div>
Salin selepas log masuk

3 Modul pengurusan pesanan

(1) Senarai pesanan

Dalam fail pengawal, kami menulis kaedah indeks() untuk memaparkan senarai pesanan. Kod khusus adalah seperti berikut:

public function index()
{
    $orders = Order::where('user_id', Auth::id())->get();

    return view('order.index', compact('orders'));
}
Salin selepas log masuk

Dalam fail paparan, kami hanya perlu melintasi semua pesanan dan memaparkannya. Kod khusus adalah seperti berikut:

@foreach ($orders as $order)
    <tr>
        <td>{{ $order->id }}</td>
        <td>{{ $order->product->name }}</td>
        <td>{{ $order->quantity }}</td>
        <td>{{ $order->price }}</td>
        <td>{{ $order->status }}</td>
    </tr>
@endforeach
Salin selepas log masuk

(2) Buat pesanan untuk pembelian

Dalam fail pengawal, kami menulis kaedah beli() untuk melaksanakan fungsi meletakkan pesanan untuk membeli. Kod khusus adalah seperti berikut:

public function buy(Request $request, $id)
{
    $product = Product::findOrFail($id);

    $this->validate($request, [
        'quantity' => 'required|integer|min:1|max:' . $product->stock,
    ]);

    $total_price = $product->price * $request->input('quantity');

    $order = new Order;
    $order->user_id = Auth::id();
    $order->product_id = $product->id;
    $order->quantity = $request->input('quantity');
    $order->price = $total_price;
    $order->status = '待支付';
    $order->save();

    // 跳转到第三方支付页面
    return redirect()->to('https://example.com/pay/' . $total_price);
}
Salin selepas log masuk

4. Modul pengurusan kumpulan

(1) Buat aktiviti kumpulan

Dalam fail pengawal, kami menulis kaedah create() untuk merealisasikan fungsi mencipta aktiviti kumpulan. Kod khusus adalah seperti berikut:

public function create(Request $request)
{
    $product = Product::findOrFail($request->input('product_id'));

    $this->validate($request, [
        'group_size' => 'required|integer|min:2|max:' . $product->stock,
        'group_price' => 'required|numeric|min:0',
        'expired_at' => 'required|date|after:now',
    ]);

    $order = new Order;
    $order->user_id = Auth::id();
    $order->product_id = $product->id;
    $order->quantity = $request->input('group_size');
    $order->price = $request->input('group_price') * $request->input('group_size');
    $order->status = '待成团';
    $order->save();

    $group = new Group;
    $group->order_id = $order->id;
    $group->size = $request->input('group_size');
    $group->price = $request->input('group_price');
    $group->expired_at = $request->input('expired_at');
    $group->save();

    return redirect()->route('product.show', $product->id)->withSuccess('拼团创建成功');
}
Salin selepas log masuk

(2) Sertai aktiviti kumpulan

Dalam fail pengawal, kami menulis kaedah join() untuk melaksanakan fungsi menyertai aktiviti kumpulan. Kod khusus adalah seperti berikut:

public function join(Request $request, $id)
{
    $group = Group::findOrFail($id);

    $user_id = Auth::id();
    $product_id = $group->order->product_id;

    // 检查用户是否已参加该拼团活动
    $order = Order::where('user_id', $user_id)->where('product_id', $product_id)->where('status', '待成团')->first();
    if ($order) {
        return redirect()->route('product.show', $product_id)->withError('您已参加该拼团活动');
    }

    // 检查拼团活动是否已过期
    if ($group->expired_at < Carbon::now()) {
        return redirect()->route('product.show', $product_id)->withError('该拼团活动已过期');
    }

    // 检查拼团人数是否已满
    $count = Order::where('product_id', $product_id)->where('status', '待成团')->count();
    if ($count >= $group->size) {
        return redirect()->route('product.show', $product_id)->withError('该拼团活动已满员');
    }

    $order = new Order;
    $order->user_id = $user_id;
    $order->product_id = $product_id;
    $order->quantity = 1;
    $order->price = $group->price;
    $order->status = '待支付';
    $order->group_id = $group->id;
    $order->save();

    // 跳转到第三方支付页面
    return redirect()->to('https://example.com/pay/' . $group->price);
}
Salin selepas log masuk

5 Modul pembayaran

Memandangkan artikel ini hanyalah demo, kami tidak menggunakan antara muka pembayaran pihak ketiga yang sebenar dan melompat terus ke halaman kejayaan pembayaran.

4. Ringkasan

Di atas adalah keseluruhan proses menggunakan rangka kerja Laravel untuk membangunkan platform pembinaan kumpulan dalam talian. Sudah tentu, artikel ini hanya menyediakan pelaksanaan fungsi asas, dan pembangunan sebenar perlu diperluas dan diperbaiki mengikut keperluan khusus. Saya berharap pembaca dapat lebih mengenali aplikasi rangka kerja Laravel melalui artikel ini, dan pembaca boleh terus meneroka dan mencuba dalam pembangunan sebenar.

Atas ialah kandungan terperinci Cara menggunakan Laravel untuk membangunkan platform perkongsian kumpulan dalam talian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan