فرض کنید قرار است یکی از API های یک سیستم بانکی را توسعه بدهید. لطفا با استفاده از آخرین نسخه فریم ورک لاراول سیستمی فوق را با شرایط زیر پیاده سازی کنید
#فرضیات پروژه
-
هر کاربر در سیستم می تواند یک شماره موبایل و چندین شماره حساب و به ازای هر شماره حساب هم چند شماره کارت داشته باشد
-
در تمامی موارد در صورت نیاز میتوانید از مقادیر فرضی استفاده کنید. مثلا اگر نیاز هست که یک API KEY از یک سرویس داشته باشید میتوانید آن را با مقدار فرضی تکمیل کنید و پروژه را تحویل نمایید. مثلا اگر شما نیاز به یک کلید از سرویس کاوه نگار داخل پروژه دارید می توانید این کلید را صرفا یه مقدار دلخواه در نظر بگیرید
- KAVEHNEGAR_API_KEY = 12345
#نیازمندی های پروژه:
-
تمام Migration های دیتابیس مورد نیاز پروژه را خودتان اضافه کنید.
-
تمام Seeder های دیتابیس مورد نیاز پروژه را جهت سهولت نصب، راه اندازی و تست پروژه خودتان اضافه کنید.
-
یک API بنویسید که شماره کارت مبدا و مقصد را بگیرد و در صورت کفایت موجودی عملیات انتقال مبلغ را انجام دهد.
-
شماره کارت باید اعتبار سنجی (Validate) شود و فقط یک شماره کارت معتبر را بپذیرد. پس شماره کارتهایی که در سیستم بانکی ایران معتبر نیستن را سیستم شما نباید بپذیرد مثلا 1234-1234-1234-1234 نامعتبر است.
-
حداقل مبلغ برای انجام تراکنش ۱۰۰۰ تومان و حداکثر ۵۰ میلیون تومان است.
-
انجام هر تراکنش ۵۰۰ تومان کارمزد برای بانک شما به همراه دارد که باید این کارمزدها را یک جدول جداگانه نگهداری کنید.
-
این API باید قابلیت پردازش شماره کارت و مبلغ با اعداد انگلیسی و فارسی و عربی را داشته باشد و کلاینت را مجبور نکن که حتما اعداد را انگلیسی ارسال کند.
-
در جداول مرتبط با تراکنش های انجام شده, هیچ ارتباط مستقیمی به کاربر نباید وجود داشته باشد. تنها ارتباط مستقیم با کارت مجاز است.
-
بعد از انجام این تراکنش باید برای هر دو کاربر مبدا و مقصد پیامک کاهش/افزایش موجودی ارسال شود.
-
متن این پیامک باید براحتی توسط توسعه دهندگان بعدی قابل تغییر باشد.
-
سیستم باید امکان ارسال پیامک از سرویس شرکتهای پیامک زیر را داشته باشد
-
سیستم باید طوری نوشته شود که قابلیت افزودن سرویس جدید ارسال پیامک از شرکتهای جدید را داشته باشید مثلا اگر در آینده خواستیم سرویس ارسال پیامک از شرکت sms.ir را هم اضافه کنیم براحتی و با کمترین تغییرات بتوانیم این کار را انجام دهیم.
-
یک API طراحی کنید که اطلاعات سه کاربری که در ۱۰ دقیقه ی اخیر بیشترین تراکنش را دارند, به همراه لیست ۱۰ تراکنش آخر هر کدام, بازگرداند.
#ملاحظات:
-مکانیزم احراز هویت API مهم نیست و میتوانید آن را در نظر نگیرید.
-رعایت تمام استانداردهای برنامه نویسی الزامی است.
-استفاده از best peractise الزامی است.
-استفاده از Design Pattern ها در صورت امکان الزامی است.
-پروژه باید بصورت repository روی سایت Github یا Gitlab تحویل داده شود.
-هر دو وب سایت کاوه نگار و قاصدک بعد از ثبت نام یک مبلغ ناچیز برای تست در پنل کاربر شارژ میکنند و نیازی به هزینه کردن وجود ندارد. نهایتا هم کیفیت کد بررسی خواهد شد و نیاز به ارسال واقعی پیامک وجود ندارد.
-نوشتن تست الزامی نیست اما قطعا امتیاز اضافه به همراه خواهد داشت.
##نصب و راهاندازی
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
docker-compose run --rm composer install
docker-compose up -d server
docker-compose run --rm artisan migrate --seed
لطفا بعد از هر بار اجرای دستور migrate، مجددا دستور زیر اجرا شود
docker-compose run --rm artisan passport:install
"mobile": "09128458991"
"password": "password"
SMS_PROVIDER_NAME=kavenegar
SMS_PROVIDER_API_KEY=123456
./src/lang/fa/messages/
- به محض لاگین یا رجیستر به صورت اتوماتیک token از سمت سرور دریافت خواهد شد ونیازی به مقداردهی دستی ندارد
baseUrl: http://localhost:8000/api