پیک موتوری یک پروژه بکاند است که با استفاده از فریمورک Django توسعه یافته و برای مدیریت و هماهنگی فعالیتهای پیکهای موتوری طراحی شده است. این سیستم به مدیریت سفارشات، رانندگان، مشتریان، آدرسها و وضعیتهای مختلف پیکهای موتوری کمک میکند. همچنین، سیستم قابلیت ثبت و پیگیری سفارشات، مدیریت اطلاعات رانندگان و مشتریان، و نظارت بر حضور و غیاب رانندگان را داراست.
این پروژه بکاند به دو اپلیکیشن موبایل متصل است که با استفاده از فریمورک فلاتر توسعه داده شدهاند. یکی از اپلیکیشنها به کاربران امکان میدهد تا سفارشات خود را ثبت کرده و وضعیت آنها را پیگیری کنند. اپلیکیشن دیگر برای رانندگان طراحی شده است تا بتوانند سفارشات را دریافت و مدیریت کنند. برای کسب اطلاعات بیشتر دربارهی پروژههای فلاتر، لطفاً به لینکهای زیر مراجعه کنید:
- مدیریت سفارشات: امکان ثبت و پیگیری سفارشات، مشاهده وضعیت و جزئیات آنها.
- مدیریت رانندگان: مدیریت اطلاعات رانندگان، وضعیتها و نوع پیک.
- مدیریت مشتریان و آدرسها: ثبت و مدیریت اطلاعات مشتریان و آدرسهای آنها.
- مدیریت وضعیتها و حضور و غیاب: نظارت بر وضعیتهای مختلف پیکها و مدیریت حضور و غیاب.
- اتصال به اپلیکیشنهای موبایل: قابلیت اتصال به اپلیکیشنهای موبایل برای تعامل مستقیم با کاربران و رانندگان.
کلاس Delivery
برای ذخیره اطلاعات مربوط به رانندگان پیک موتوری استفاده میشود. این مدل شامل مشخصاتی از جمله نام، نام خانوادگی، شماره تماس، تاریخ تولد، کد ملی، کد شخصی، وضعیت فعلی، تاریخ عضویت، نوع پیک (با جعبه، بدون جعبه، مسافر)، و شماره پلاکهای خودرو است.
کلاس Customer
برای ذخیره اطلاعات مشتریان سیستم طراحی شده است. این مدل شامل نام، نام خانوادگی، شماره تماس، جنسیت، شماره اشتراک، وضعیت فعال بودن، تاریخ عضویت و آخرین تاریخ بهروزرسانی مشتریان است.
کلاس CustomerAddresses
برای مدیریت آدرسهای مشتریان استفاده میشود. این مدل شامل کد آدرس، شماره اشتراک مشتری، نام و توضیحات آدرس و وضعیت اصلی بودن آن است.
کلاس Orders
برای ثبت و مدیریت سفارشات پیک موتوری طراحی شده است. این مدل شامل نوع تحویل، نوع مسیر، شماره مسیر، آدرس مبدأ و مقصد، شماره اشتراک، نام و شماره تماس گیرنده، تاریخ و زمان ثبت و تکمیل سفارش، مبلغ سفارش، کد تحویل، وضعیت سفارش، و توضیحات مرتبط با آن است.
کلاس CustomerSessions
برای ذخیره اطلاعات مربوط به نشستهای مشتریان استفاده میشود. این مدل شامل شماره اشتراک و نشست جاری مشتری است.
کلاس DeliverySessions
برای مدیریت نشستهای رانندگان طراحی شده است. این مدل شامل کد شخصی و نشست جاری راننده است.
کلاس VerifyCode
برای تولید و ذخیره کدهای تأیید استفاده میشود. این مدل شامل وضعیت استفاده، شماره تماس، کد تأیید، زمان و تاریخ تولید کد و نوع استفاده از کد است.
کلاس API_KEYS
برای مدیریت کلیدهای API طراحی شده است. این مدل شامل کلید API، هش، و مجوزهای اضافه و لیستکردن API است.
کلاس Station
برای مدیریت ایستگاههای پیک موتوری استفاده میشود. این مدل شامل کد ایستگاه، نام، کد، توضیحات، تعداد سفارشات و تعداد پیکها است.
کلاس AttendanceDelivery
برای ثبت حضور و غیاب رانندگان پیک موتوری طراحی شده است. این مدل شامل کد تحویل، وضعیت حضور، تاریخ، زمان شروع، مدت زمان مرخصی، و وضعیت پایان است.
کلاس Events
برای ثبت و مدیریت رویدادها استفاده میشود. این مدل شامل کد، نام، زمان، تاریخ، توضیحات، مهمانها و مکان رویداد است.
کلاس RegisterRequest
برای مدیریت درخواستهای ثبتنام رانندگان طراحی شده است. این مدل شامل کد، نام، کد ملی، نام پدر، شماره تماس، آدرس، وضعیت نظام وظیفه، و زمان ثبتنام است.
برای اجرای این پروژه نیاز به نصب نرمافزارها و ابزارهای زیر دارید:
- Python نسخه 3.8 یا بالاتر
- Django نسخه 3.2 یا بالاتر
- PostgreSQL یا SQLite (براساس انتخاب شما)
پکیجهای زیر در این پروژه استفاده شدهاند:
Django==5.0.1
django-jalali==6.0.1
djangorestframework==3.14.0
jdatetime==5.0.0
برای راهاندازی پروژه، مراحل زیر را دنبال کنید:
-
این مخزن را کلون کنید:
git clone https://github.com/Bestsenator/Bike-Delivery.git
-
وارد دایرکتوری پروژه شوید:
cd Bike-Delivery
-
یک محیط مجازی پایتون ایجاد کنید:
python -m venv venv
-
محیط مجازی را فعال کنید:
- در سیستمعامل ویندوز:
venv\Scripts\activate
- در سیستمعامل مک یا لینوکس:
source venv/bin/activate
- در سیستمعامل ویندوز:
-
وابستگیهای پروژه را نصب کنید:
pip install -r requ.txt
-
فایل
.env
را براساس نمونه.env.example
تنظیم کنید. -
مهاجرتهای پایگاه داده را اعمال کنید:
python manage.py migrate
-
سرور را اجرا کنید:
python manage.py runserver
-
پروژه اکنون در
http://localhost:8000
در دسترس است.
لیستی از توابع موجود در API:
POST /Orders_list/
- دریافت لیست سفارشات بر اساس کدهای تحویل، مشتری، وضعیت یا بازه زمانی مشخص شدهPOST /create_api/
- ایجاد یک کلید API جدید و ذخیره آنGET /list_api/
- دریافت لیست کلیدهای API موجودPOST /checkSession/
- بررسی وضعیت نشست کاربر و فعال بودن حساب کاربریPOST /getPhone/
- ارسال کد تأیید به شماره تلفن ثبت شدهPOST /verifyPhone/
- تأیید کد ارسال شده به شماره تلفن و ایجاد نشست کاربرPOST /customerRegistration/
- ثبتنام مشتری جدید و ایجاد نشست برای آنPOST /infoCustomer/
- دریافت اطلاعات مشتری بر اساس شماره اشتراکPOST /editInfoCustomer/
- ویرایش اطلاعات مشتری بر اساس شماره اشتراک.POST /getListAddr/
- دریافت لیست آدرسهای ثبت شده برای یک مشتری بر اساس شماره اشتراک.POST /addCustomerAddr/
- افزودن آدرس جدید برای مشتری. در صورتی که هیچ آدرسی برای مشتری وجود نداشته باشد، آدرس جدید به عنوان آدرس اصلی ثبت میشود.POST /deleteCustomerAddr/
- حذف آدرس مشخص شده بر اساس شماره اشتراک و کد آدرس.POST /editCustomerAddr/
- ویرایش اطلاعات آدرس مشتری بر اساس شماره اشتراک و کد آدرس.GET /getListStations/
- دریافت لیست ایستگاهها.POST /Orders_list/
- دریافت لیست سفارشات بر اساس کدهای تحویل، مشتری، وضعیت یا بازه زمانی مشخص شده.POST /orderRegistration/
- ثبت سفارش جدید برای مشتری.POST /getStatusOrder/
- دریافت وضعیت سفارش بر اساس کد سفارش.POST /cancelOrder/
- لغو سفارش بر اساس کد سفارش. سفارشاتی که وضعیت آنها از "در انتظار پذیرش" تغییر کرده باشد، قابل لغو نیستند.POST /getLikeOrder/
- ثبت یا ویرایش امتیاز و توضیحات مشتری برای یک سفارش بر اساس کد سفارش.
Bike-Delivery/
├── config/
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── api/
│ ├── migrations/
│ ├── models.py
│ ├── serializers.py
│ ├── views.py
│ └── urls.py
├── dashboard/
│ ├── migrations/
│ ├── models.py
│ ├── views.py
│ └── urls.py
├── calculator/
│ ├── migrations/
│ ├── models.py
│ ├── views.py
│ └── urls.py
├── attendanceDelivery/
│ ├── migrations/
│ ├── models.py
│ ├── views.py
│ └── urls.py
├── index/
│ ├── migrations/
│ ├── models.py
│ ├── views.py
│ └── urls.py
├── funcs/
│ ├── checkStatus.py
│ ├── auth.py
│ ├── auth_api.py
│ ├── cookies.py
│ ├── phone.py
│ ├── sms.py
│ └── hash.py
├── home/
│ ├── migrations/
│ ├── models.py
│ ├── views.py
│ └── urls.py
├── hourlyLeave/
│ ├── migrations/
│ ├── models.py
│ ├── views.py
│ └── urls.py
├── listDeliveries/
│ ├── migrations/
│ ├── models.py
│ ├── views.py
│ └── urls.py
├── listUsers/
│ ├── migrations/
│ ├── models.py
│ ├── views.py
│ └── urls.py
├── reports/
│ ├── migrations/
│ ├── models.py
│ ├── views.py
│ └── urls.py
├── support/
│ ├── migrations/
│ ├── models.py
│ ├── views.py
│ └── urls.py
├── workCalendar/
│ ├── migrations/
│ ├── models.py
│ ├── views.py
│ └── urls.py
├── static/
├── templates/
├── manage.py
├── db.sqlite3
├── README.md
├── README_fa.md
├── README_en.md
└── requ.txt
اگر مایل به مشارکت در این پروژه هستید، میتوانید:
- این مخزن را فورک کنید.
- یک شاخه جدید برای ویژگی یا باگ جدید ایجاد کنید (
git checkout -b feature/AmazingFeature
). - تغییرات خود را کامیت کنید (
git commit -m 'Add some AmazingFeature'
). - شاخه خود را پوش کنید (
git push origin feature/AmazingFeature
). - یک Pull Request باز کنید.
تشکر ویژه از برنامهنویس اپلیکیشن فلاتر که با تلاش و مهارت خود این اپلیکیشن را توسعه داده و به این پروژه بکاند متصل کرده است. بدون زحمات او، امکان ایجاد این سیستم یکپارچه فراهم نمیشد.