سلام دوستان، من بخش سبد خرید و کد تخفیفرو زدم که وقتی کد رو زدن تخفیف اعمال میشه.
حالا یه سوال داشتم اینکه تو سایتا رو تمام دورهها تخفیف گروهی بدون کد تخفیف میزنن رو چه مدلی پیاده میشه؟
مثلا رو قیمت اصلی خط قرمز میکشن قیمت تخفیف دار میزنن که تایمر داره. اینو چجوری با لاراول انجامش بدم که مثلا رو همه محصولات یا چند تاش اعمال بشه و تو ساعت مشخصی تخفیف تموم بشه.
سلام
تیبل discounts رو تعریف کنید که شامل کد تخفیف و کد محصول (و یک حالت کلی برای همه محصولات) و زمان منقضی شدن (expire_date) و وضعیت و درصد تخفیف باشد.
حالا توی مدل Discount یک اسکوپ متد تعریف کنید که با گرفتن کد تخفیف و ایدی محصول میزان یا قیمت محصول و مقدار تخفیف رو برگردونه قطعا در نظر دارید که اینجا معتبر بودن کد تخفیف بر اساس زمان تعریف شده و زمان حال بررسی می شود حالا این متد رو توی OrderController میتونید فراخوانی کنید و هرجا لازم بود قیمت اصلی و پارامترهای دیگر رو بهش بدید و جزییات تخفیف رو ازش دریافت کنید.
نکته ای که باید توجه بفرمایید اینه که همین متد هم ممکن بر اساس روش کار شما لازم باشه توی PaymentController نیاز باشه فراخوانی کنید تا زمان هدایت به سمت بانک و سیستم پرداخت در زمان مورد قبول برای لحاظ شدن تخفیف قابل مدیریت باشه.
جدول discounts رو به صورت polymorphic تعریف کنید که بتونید به چندین entity توی جدولتون تخفیف اختصاص بدید ، مثلا به محصولات ،دسته بندی ها ،نقش های کاربری و هر چیز دیگه ای که خواستید.
ساختار جدول به صورت زیر میشه
$table->id();
$table->string('discount_title')->unique();
$table->string('discount_label');
$table->morphs('discountable');
$table->enum('discount_type', ['fixed', 'percent'])->default('percent');
$table->bigInteger('discount_amount');
$table->bigInteger('usage_limit')->nullable();
$table->dateTime('expires_at')->nullable();
$table->bigInteger('used_count')->default(0);
$table->json('meta')->nullable();
بعد توی مدل هایی که قابلیت تخفیف خوردن رو دارند رابطه discounts رو تعریف کنید
این طوری میتونید روی entity های مختلف برنامتون تخفیف بزارید و موقع نمایش محصولتون روابط محصول با اونها رو چک کنید و اگر تخفیف داشتن قیمت نهایی محصولتون رو موقع نمایش تغییر بدن و قیمت اصلی هم که از طریق price محصول قابل دسترسی هست.
یه کم پیچیدست فرایند اجراش و چالش داره به این صورت ولی به سیستمتون قابلیت های زیادی رو میده.
برای اجراش میتونید از decorator pattern روی قیمت هاتون استفاده کنید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟