#P1382
POST /api/v2/colleagues/billing
Route Info
| Method | Endpoint | Controller | Middleware | Purpose | دستهبندی عملکردی | |||||
| POST | /api/ |
Authentication / Branch Connection |
Request(Analysis) Parametersتحلیل عملکرد
این متدEndpoint یکبرای پارامترشناسایی ورودیو اصلیاعتبارسنجی شعبه است. هدف آن بارگزاری دامنه محیط (Unauthenticated) به عنوان نقطه ورود اولیه بدون نیاز به احراز هویت است. این درخواست با نامدریافت idکد شعبه ورودی، هویت دامنه مرتبط با آن دفتر را از بدنهی درخواست دریافتبازگردانی میکند.
مکانیسم کدگذاری شعبه
سیستم از فرمول زیر برای استخراج شناسه واقعی شعبه از کد ارسالی استفاده میکند:
Actual Office ID = Input Branch Code - 1000
برای مثال اگر کد ورودی 1050 باشد، شناسه واقعی شعبه 50 خواهد بود.
منطق اعتبارسنجی
پس از استخراج شناسه واقعی، سیستم پارامتر زیر را بررسی میکند:
- در جدول
officesجستجو انجام میشود تا مطمئن شود شعبه فعال است. - در صورت یافت نشدن یا غیرفعال بودن، پاسخ خطا بازگردانده میشود.
- اگر شعبه معتبر باشد، شناسه و اطلاعات دامنه مرتبط (
domain) بازگردانده میشود.
(Inputs) ورودیها
| نوع داده | الزامی | توضیح | ||
| بله | کد شعبه (شناسه |
نمونه
منطق عملکرد متد بر اساس کد موجود در کنترلر به شرح زیر میباشد:
در صورتی که باشد:
(Outputs)
Processing Logic
ابتدا مقدار$request->idبررسی میشود.اگر این مقدار شامل خط تیرهدرخواست (-)Requestباشد، نوع (type) و شناسه (id) از آن استخراج میشود؛ در غیر این صورت نوع پیشفرضcolleagueدر نظر گرفته میشود.در صورتی که نوع برابر باcolleagueباشد، تابعCronController:Body):colleaguesGeneralBilling($id)فراخوانی شده تا مانده سال جاری حساب محاسبه گردد.خروجی برای نوعcolleagueبهصورت زیر است:
{
"CreditLimit"branch": {credit_amount},
"CreditBalance": {credit_amount - balance}1050
}
type = personnel(Outputs) {
"CreditLimit": false,
"CreditBalance": false
}
Error Handlingخروجیها
در صورتیهمه که شرکت (همکار) یافت نشود یا اطلاعات نادرست باشد،حالات پاسخ زیرHTTP بازگردانده200 میشود:برمیگردد.
خروجی موفق:
HTTP{
200"status": OKtrue,
"office": {
"id": 50,
"domain": "example.domain.ir",
"title": "دفتر مرکزی"
}
}
خروجی ناموفق:
{
"status": false,
"message": "اطلاعاتکد شرکتشعبه بدرستیمعتبر ارسالنیست نشدهیا است.یافت نشد."
}
Response(Dependencies) Exampleوابستگیها
UserController::connectBranch(Request $request)
نوع- مدلها:
درخواست Office کدو وضعیتDomain
(Testing & Usage) تست و استفاده
نمونه پاسخ تست با Postman:
موفق (Colleague)
200 OK
POST /api/auth/connect/branch
Content-Type: application/json
{
"CreditLimit"branch": 5000000,
"CreditBalance": 27500001050
}
(Typical Error پرسنل Cases) 200موارد OK خطا
- کد شعبه کوچکتر از 1000 یا غیرعددی
- شعبه غیرفعال در جدول
offices
- عدم تعریف دامنه برای دفتر مربوطه
(Implementation Details) جزئیات پیادهسازی
public function connectBranch(Request $request)
{
"CreditLimit"$branchCode = $request->branch;
$actualId = $branchCode - 1000;
$office = Office::find($actualId);
if (!$office) {
return response()->json(['status' => false, "CreditBalance":'message' false=> 'کد شعبه معتبر نیست یا یافت نشد.']);
}
return response()->json([
'status' => true,
'office' => [
'id' => $office->id,
'domain' => $office->domain,
'title' => $office->title,
]
]);
}
Notes(Conclusion) نتیجهگیری
- پاسخ همواره با وضعیت HTTP 200 بازگردانده میشود، حتی در حالت خطا.
- این متدEndpoint صرفاًیک جهتنقطه خواندنورود وضعیتکاربردی مالیبرای کللاگین سالدامنهها جاریبدون طراحینیاز شدهبه احراز هویت اولیه است و هیچفرایند تغییریتشخیص دامنه بر اساس کد شعبه را ساده میکند.
(Appendix) پیوست: نگهداری و امنیت
- احراز ورودی قبل از تبدیل نوع: اطمینان از عددی بودن branch.
- عدم نیاز به تزریق احراز JWT در
دادههایاین اصلیمرحله ایجاد(unauthenticated).
نمیکند.
-- پیشنهاد
محاسبهبه ماندهمحدود وکردن سقفنرخ اعتباردرخواستها برجهت مبنایجلوگیری اطلاعاتاز ثبتشدهSpam.
در
حسابداری داخلی سیستم انجام میشود.
در صورتیهمه که شرکت (همکار) یافت نشود یا اطلاعات نادرست باشد،حالات پاسخ زیرHTTP بازگردانده200 میشود:برمیگردد.
(Testing & Usage) تست و استفادهنمونه | تست ||
|---|---|---|
POST /api/auth/connect/branch
Content-Type: application/json
{
"
|
||
(Implementation Details) جزئیات پیادهسازیpublic function connectBranch(Request $request)
{
|
Notes(Conclusion) نتیجهگیری
(Appendix) پیوست: نگهداری و امنیت
- احراز ورودی قبل از تبدیل نوع: اطمینان از عددی بودن branch.
- عدم نیاز به تزریق احراز JWT در
دادههایایناصلیمرحلهایجاد(unauthenticated). - پیشنهاد
محاسبهبهماندهمحدودوکردنسقفنرخاعتباردرخواستهابرجهتمبنایجلوگیریاطلاعاتازثبتشدهSpam.