Laravel સાથે મલ્ટી-વેન્ડર માર્કેટપ્લેસ કેવી રીતે બનાવવું

માર્કેટપ્લેસ બનાવવું એ ડેટાની સમસ્યા છે.

મોટાભાગના ડેવલપર્સ વિચારે છે કે અઘરો ભાગ સેલર ડેશબોર્ડ છે. તે નથી. સાચી પડકાર મલ્ટી-ટેનન્સી (multi-tenancy) છે. તમારે એ સુનિશ્ચિત કરવું પડશે કે દરેક ક્વેરી એક જ પ્રશ્નનો જવાબ આપે: આ ડેટાનો માલિક કોણ છે?

જો તમે એક સ્ટાન્ડર્ડ શોપ બનાવો અને પછીથી વેન્ડર્સ ઉમેરવાનો પ્રયાસ કરો, તો તમારે આખું કામ ફરીથી કરવું પડશે. તમારે દરેક મોડેલ, દરેક ક્વેરી અને દરેક કાર્ટમાં વેન્ડર ID ઉમેરવો પડશે. જો તમે એક ફિલ્ટર પણ ભૂલી જશો, તો એક સેલર બીજા સેલરના ઓર્ડર જોઈ શકશે. તે ડેટા લીક (data leak) છે.

તમારી પાસે ત્રણ વિકલ્પો છે:

  • જાતે બનાવો: તમારે દરેક સ્કોપિંગ ક્લોઝ (scoping clause) જાતે લખવો પડશે. તે ખર્ચાળ અને જોખમી છે.
  • એડ-ઓન્સ સાથે સિંગલ-ટેનન્ટ શોપનો ઉપયોગ કરો: તમે એવા સ્કીમામાં વેન્ડર કોલમ ઉમેરો છો જે તેના માટે ડિઝાઇન કરવામાં આવ્યું નથી. આનાથી આઈસોલેશન (isolation) નબળું રહી જાય છે.
  • મલ્ટી-ટેનન્ટ ફાઉન્ડેશનનો ઉપયોગ કરો: Aimeos જેવા પેકેજનો ઉપયોગ કરો જે પહેલા દિવસથી જ ડેટા મોડેલમાં આઈસોલેશન બનાવે છે.

Aimeos નો ઉપયોગ કરીને સિંગલ શોપને માર્કેટપ્લેસમાં કેવી રીતે રૂપાંતરિત કરવું તે અહીં છે:

  1. Install the foundation શરૂ કરવા માટે આ કમાન્ડ ચલાવો: composer create-project aimeos/aimeos myshop

  2. Enable multi-vendor mode તમારે તમારું ડેટાબેઝ ફરીથી લખવાની જરૂર નથી. ફક્ત તમારી .env ફાઇલમાં એક લાઇન બદલો: SHOP_MULTISHOP=true

આ ફ્લેગ આપમેળે દરેક રૂટ (route), API અને એડમિન પેનલને ચોક્કસ સાઇટ સાથે જોડી દે છે. સિસ્ટમ તમારા માટે ડેટાનું અલગકરણ સંભાળી લે છે.

  1. Enable self-service onboarding સ્કેલ કરવા માટે, વેન્ડર્સને જાતે સાઇન અપ કરવા દો. તમારી .env માં આ ઉમેરો: SHOP_REGISTRATION=true

નવા સેલર્સને ફક્ત તેમના પોતાના કેટલોગ, ઓર્ડર અને ગ્રાહકોનો જ એક્સેસ મળે છે. તેઓ બીજું કંઈ જોઈ શકતા નથી.

Why this works: Aimeos બધું જ "site" ની આસપાસ વ્યવસ્થિત કરે છે. દરેક પ્રોડક્ટ, કિંમત અને ઓર્ડર સાથે સાઇટ ID હોય છે. ડેટા લેયર તેને આપમેળે ફિલ્ટર કરે છે. તમારે "where site_id = ?" લખવાની જરૂર નથી કારણ કે સિસ્ટમ તે તમારા માટે કરે છે.

This approach solves three major problems:

  • Security: ડેટા આઈસોલેશન એ ડેટાબેઝનો એક ગુણધર્મ છે, તે કોઈ એવો કોડ નથી જેને તમે ભૂલી શકો.
  • Complexity: તમે સ્કીમા બદલ્યા વગર વેન્ડર્સ સબ્સ્ક્રિપ્શન અથવા બંડલ્સ જેવા જટિલ ઉત્પાદનોનું સંચાલન કરી શકે છે.
  • Payments: તમે પેમેન્ટ્સ તરત જ વિભાજિત કરવા માટે Stripe જેવા એક્સ્ટેન્શનનો ઉપયોગ કરી શકો છો. પ્લેટફોર્મ કમિશન લે છે અને બાકીના પૈસા સેલરને મળે છે.

પ્લમ્બિંગ (plumbing) બનાવવાનું બંધ કરો. તમારું માર્કેટપ્લેસ બનાવવાનું શરૂ કરો.

Source: https://dev.to/aimeos/how-to-implement-a-multi-vendor-e-commerce-marketplace-397a