npm_microservice 1.0.13 → 1.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/service.js
CHANGED
|
@@ -1948,6 +1948,21 @@ var require_StudentService = __commonJS({
|
|
|
1948
1948
|
this.service = "Lms.StudentService";
|
|
1949
1949
|
this.isCache = false;
|
|
1950
1950
|
}
|
|
1951
|
+
async getScore(filter = {}) {
|
|
1952
|
+
let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/lms/students-scores";
|
|
1953
|
+
this.service = "students-scores";
|
|
1954
|
+
return this.request("get", url, filter);
|
|
1955
|
+
}
|
|
1956
|
+
async getStudentReview(filter = {}) {
|
|
1957
|
+
let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/lms/students-reviews";
|
|
1958
|
+
this.service = "students-reviews";
|
|
1959
|
+
return this.request("get", url, filter);
|
|
1960
|
+
}
|
|
1961
|
+
async getStudentSettingReview(filter = {}) {
|
|
1962
|
+
let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/lms/setting-reviews";
|
|
1963
|
+
this.service = "setting-reviews";
|
|
1964
|
+
return this.request("get", url, filter);
|
|
1965
|
+
}
|
|
1951
1966
|
};
|
|
1952
1967
|
module2.exports = StudentService;
|
|
1953
1968
|
}
|
|
@@ -2171,34 +2186,38 @@ var require_CategoryService4 = __commonJS({
|
|
|
2171
2186
|
}
|
|
2172
2187
|
});
|
|
2173
2188
|
|
|
2174
|
-
// src/services/
|
|
2189
|
+
// src/services/online/CourseService.js
|
|
2175
2190
|
var require_CourseService2 = __commonJS({
|
|
2176
|
-
"src/services/
|
|
2191
|
+
"src/services/online/CourseService.js"(exports2, module2) {
|
|
2177
2192
|
var BaseService = require_BaseService();
|
|
2178
|
-
var { CONFIG_ROUTER_SERVICE } = require_config();
|
|
2193
|
+
var { CONFIG_ROUTER_SERVICE, API_MICROSERVICE_TOKEN } = require_config();
|
|
2179
2194
|
var CourseService = class extends BaseService {
|
|
2180
2195
|
constructor() {
|
|
2181
|
-
super(CONFIG_ROUTER_SERVICE.
|
|
2182
|
-
|
|
2196
|
+
super(CONFIG_ROUTER_SERVICE.CourseOnlineService, {
|
|
2197
|
+
Authorization: `Bearer ${API_MICROSERVICE_TOKEN}`
|
|
2198
|
+
});
|
|
2199
|
+
this.isCache = false;
|
|
2200
|
+
this.service = "course_online";
|
|
2183
2201
|
}
|
|
2184
2202
|
// có thể thêm method riêng cho user nếu cần
|
|
2185
|
-
async detailSchedule(id
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
return this.request(
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
);
|
|
2203
|
+
async detailSchedule(id) {
|
|
2204
|
+
let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/course/course_schedule/" + id;
|
|
2205
|
+
this.service = "course_schedule";
|
|
2206
|
+
return this.request("get", url);
|
|
2207
|
+
}
|
|
2208
|
+
async getLevel(id) {
|
|
2209
|
+
let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/lms/course-levels/" + id;
|
|
2210
|
+
this.service = "course_levels";
|
|
2211
|
+
return this.request("get", url);
|
|
2195
2212
|
}
|
|
2196
2213
|
async count(filter = {}) {
|
|
2197
2214
|
let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/course/course/count";
|
|
2215
|
+
this.service = "course_online";
|
|
2198
2216
|
return this.request("get", url, { params: filter });
|
|
2199
2217
|
}
|
|
2200
2218
|
async student(filter = {}) {
|
|
2201
2219
|
let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/course/students";
|
|
2220
|
+
this.service = "course_online";
|
|
2202
2221
|
return this.request("get", url, { params: filter });
|
|
2203
2222
|
}
|
|
2204
2223
|
};
|
|
@@ -2210,7 +2229,7 @@ var require_CourseService2 = __commonJS({
|
|
|
2210
2229
|
var require_CourseLessonService2 = __commonJS({
|
|
2211
2230
|
"src/services/course/CourseLessonService.js"(exports2, module2) {
|
|
2212
2231
|
var BaseService = require_BaseService();
|
|
2213
|
-
var { CONFIG_ROUTER_SERVICE
|
|
2232
|
+
var { CONFIG_ROUTER_SERVICE } = require_config();
|
|
2214
2233
|
var CourseLessonService = class extends BaseService {
|
|
2215
2234
|
constructor() {
|
|
2216
2235
|
super(CONFIG_ROUTER_SERVICE.Course.CourseLessonService);
|
|
@@ -183,7 +183,7 @@ var require_BaseService = __commonJS({
|
|
|
183
183
|
"src/services/BaseService.js"(exports2, module2) {
|
|
184
184
|
var axios = require("axios");
|
|
185
185
|
var qs = require("qs");
|
|
186
|
-
var { API_MICROSERVICE_TOKEN
|
|
186
|
+
var { API_MICROSERVICE_TOKEN, CONFIG_REDIS } = require_config();
|
|
187
187
|
var BaseService2 = class {
|
|
188
188
|
baseUrl = "";
|
|
189
189
|
headers = {};
|
|
@@ -209,7 +209,7 @@ var require_BaseService = __commonJS({
|
|
|
209
209
|
* - không truyền: dùng token từ ENV
|
|
210
210
|
*/
|
|
211
211
|
setHeader(headers = {}) {
|
|
212
|
-
let Authorization = `Bearer ${
|
|
212
|
+
let Authorization = `Bearer ${API_MICROSERVICE_TOKEN}`;
|
|
213
213
|
if (typeof headers === "string") {
|
|
214
214
|
Authorization = headers;
|
|
215
215
|
} else if (headers && headers.Authorization) {
|
|
@@ -335,7 +335,7 @@ var require_BaseService = __commonJS({
|
|
|
335
335
|
|
|
336
336
|
// src/services/course/CourseLessonService.js
|
|
337
337
|
var BaseService = require_BaseService();
|
|
338
|
-
var { CONFIG_ROUTER_SERVICE
|
|
338
|
+
var { CONFIG_ROUTER_SERVICE } = require_config();
|
|
339
339
|
var CourseLessonService = class extends BaseService {
|
|
340
340
|
constructor() {
|
|
341
341
|
super(CONFIG_ROUTER_SERVICE.Course.CourseLessonService);
|
|
@@ -342,5 +342,20 @@ var StudentService = class extends BaseService {
|
|
|
342
342
|
this.service = "Lms.StudentService";
|
|
343
343
|
this.isCache = false;
|
|
344
344
|
}
|
|
345
|
+
async getScore(filter = {}) {
|
|
346
|
+
let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/lms/students-scores";
|
|
347
|
+
this.service = "students-scores";
|
|
348
|
+
return this.request("get", url, filter);
|
|
349
|
+
}
|
|
350
|
+
async getStudentReview(filter = {}) {
|
|
351
|
+
let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/lms/students-reviews";
|
|
352
|
+
this.service = "students-reviews";
|
|
353
|
+
return this.request("get", url, filter);
|
|
354
|
+
}
|
|
355
|
+
async getStudentSettingReview(filter = {}) {
|
|
356
|
+
let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/lms/setting-reviews";
|
|
357
|
+
this.service = "setting-reviews";
|
|
358
|
+
return this.request("get", url, filter);
|
|
359
|
+
}
|
|
345
360
|
};
|
|
346
361
|
module.exports = StudentService;
|
package/package.json
CHANGED
|
@@ -1,365 +0,0 @@
|
|
|
1
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
2
|
-
var __commonJS = (cb, mod) => function __require() {
|
|
3
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
// src/config.js
|
|
7
|
-
var require_config = __commonJS({
|
|
8
|
-
"src/config.js"(exports2, module2) {
|
|
9
|
-
require("dotenv").config({ quiet: true, override: true });
|
|
10
|
-
var Redis = require("ioredis");
|
|
11
|
-
var redis = new Redis({
|
|
12
|
-
host: process.env.REDIS_HOST || "128.199.195.180",
|
|
13
|
-
port: process.env.REDIS_PORT || 6379,
|
|
14
|
-
password: process.env.REDIS_PASSWORD || "WZyB5Z7BRRgvrzuGzRwB"
|
|
15
|
-
});
|
|
16
|
-
var baseUrl = process.env.API_MICROSERVICE_URL;
|
|
17
|
-
var configRouteService = {
|
|
18
|
-
BASE_URL: baseUrl,
|
|
19
|
-
Finance: {
|
|
20
|
-
InvoicesService: `${baseUrl}/finance/invoices`,
|
|
21
|
-
InvoicesCancelService: `${baseUrl}/finance/invoice_detail_cancel`,
|
|
22
|
-
InvoicesDetailService: `${baseUrl}/finance/invoices-detail`,
|
|
23
|
-
InvoicesLogsAssignService: `${baseUrl}/finance/invoices-logs-assign`,
|
|
24
|
-
PaymentService: `${baseUrl}/finance/payments`,
|
|
25
|
-
PaymentRequestService: `${baseUrl}/finance/payments-request`,
|
|
26
|
-
VouchersService: `${baseUrl}/finance/vouchers`,
|
|
27
|
-
VouchersCategoryService: `${baseUrl}/finance/vouchers-category`,
|
|
28
|
-
WalletsService: `${baseUrl}/finance/wallets`,
|
|
29
|
-
WalletTransactionService: `${baseUrl}/finance/wallet-transaction`
|
|
30
|
-
},
|
|
31
|
-
CallCenter: {
|
|
32
|
-
CategoryService: `${baseUrl}/call-center/ticket-categories`,
|
|
33
|
-
TicketService: `${baseUrl}/call-center/ticket`,
|
|
34
|
-
TicketActivityService: `${baseUrl}/call-center/ticket-activities`,
|
|
35
|
-
TicketTemplateService: `${baseUrl}/call-center/ticket-template`,
|
|
36
|
-
TicketTopicService: `${baseUrl}/call-center/ticket-topics`,
|
|
37
|
-
CallService: `${baseUrl}/call-center/calls`
|
|
38
|
-
},
|
|
39
|
-
Inventory: {
|
|
40
|
-
InventoryService: `${baseUrl}/inventory/inventory-products`,
|
|
41
|
-
LogService: `${baseUrl}/inventory/logs`,
|
|
42
|
-
ProductService: `${baseUrl}/inventory/products`,
|
|
43
|
-
ProductShipmentService: `${baseUrl}/inventory/products_shipment`,
|
|
44
|
-
StoreService: `${baseUrl}/inventory/stores`,
|
|
45
|
-
SupplierService: `${baseUrl}/inventory/supplier`,
|
|
46
|
-
TransactionService: `${baseUrl}/inventory/transaction`,
|
|
47
|
-
TransactionDetailService: `${baseUrl}/inventory/transaction_detail`
|
|
48
|
-
},
|
|
49
|
-
App: {
|
|
50
|
-
CategoryService: `${baseUrl}/app/category`,
|
|
51
|
-
NewService: `${baseUrl}/app/news`,
|
|
52
|
-
BannerService: `${baseUrl}/app/banner`,
|
|
53
|
-
AppTestService: `${baseUrl}/app/test`,
|
|
54
|
-
RecommendedCourseService: `${baseUrl}/app/recommended_level`,
|
|
55
|
-
SettingAppService: `${baseUrl}/app/setting`,
|
|
56
|
-
TargetAppService: `${baseUrl}/app/target`
|
|
57
|
-
},
|
|
58
|
-
Course: {
|
|
59
|
-
CategoryService: `${baseUrl}/course/category`,
|
|
60
|
-
CourseService: `${baseUrl}/course/course`,
|
|
61
|
-
CourseLessonService: `${baseUrl}/course/course_schedule`,
|
|
62
|
-
StudentService: `${baseUrl}/course/students`
|
|
63
|
-
},
|
|
64
|
-
Asset: {
|
|
65
|
-
AllocationDetailService: `${baseUrl}/asset/asset-allocation-detail`,
|
|
66
|
-
BroadcastService: `${baseUrl}/asset/broadcast`,
|
|
67
|
-
EntityAssetService: `${baseUrl}/asset/entity-asset`,
|
|
68
|
-
SubAssetService: `${baseUrl}/asset/sub-asset`
|
|
69
|
-
},
|
|
70
|
-
Test: {
|
|
71
|
-
TestService: `${baseUrl}/tests/tests`
|
|
72
|
-
},
|
|
73
|
-
Pm: {
|
|
74
|
-
NoteService: `${baseUrl}/pm/notes`,
|
|
75
|
-
TaskService: `${baseUrl}/pm/tasks`
|
|
76
|
-
},
|
|
77
|
-
Crm: {
|
|
78
|
-
ContactService: `${baseUrl}/crm/contacts`,
|
|
79
|
-
AccountsService: `${baseUrl}/crm/accounts`,
|
|
80
|
-
CalendarContactService: `${baseUrl}/crm/calendar-contact`,
|
|
81
|
-
CalendarsService: `${baseUrl}/crm/calendars`,
|
|
82
|
-
CampaignService: `${baseUrl}/crm/campaigns`,
|
|
83
|
-
CompanyService: `${baseUrl}/crm/company`,
|
|
84
|
-
ContactDocumentService: `${baseUrl}/crm/contact-document`,
|
|
85
|
-
ContactToCampaignService: `${baseUrl}/crm/contacts-campaign`,
|
|
86
|
-
DeviceService: `${baseUrl}/crm/devices`,
|
|
87
|
-
LeadsService: `${baseUrl}/crm/leads`,
|
|
88
|
-
NotificationService: `${baseUrl}/crm/notifications`,
|
|
89
|
-
NotificationContactService: `${baseUrl}/crm/notification-to-contact`,
|
|
90
|
-
OpportunitiesService: `${baseUrl}/crm/opportunities`,
|
|
91
|
-
SegmentsService: `${baseUrl}/crm/segments`
|
|
92
|
-
},
|
|
93
|
-
Notification: {
|
|
94
|
-
AppService: `${baseUrl}/notification/type/app`,
|
|
95
|
-
MailService: `${baseUrl}/notification/type/mail`,
|
|
96
|
-
SmsService: `${baseUrl}/notification/type/sms`,
|
|
97
|
-
ZnsService: `${baseUrl}/notification/type/zns`,
|
|
98
|
-
NotificationContactService: `${baseUrl}/notification/notification_contact`,
|
|
99
|
-
NotificationEmployeeService: `${baseUrl}/notification/notification_employee`,
|
|
100
|
-
NotificationService: `${baseUrl}/notification`,
|
|
101
|
-
TemplateService: `${baseUrl}/notification/template`
|
|
102
|
-
},
|
|
103
|
-
Org: {
|
|
104
|
-
BranchService: `${baseUrl}/org/branch`,
|
|
105
|
-
BranchRequestService: `${baseUrl}/org/branch_request`,
|
|
106
|
-
BranchToMacsService: `${baseUrl}/org/branch_to_mac`,
|
|
107
|
-
BrandService: `${baseUrl}/org/brand`,
|
|
108
|
-
CitiesService: `${baseUrl}/org/city`,
|
|
109
|
-
LegalEntityService: `${baseUrl}/org/legal_entities`
|
|
110
|
-
},
|
|
111
|
-
Lms: {
|
|
112
|
-
AlbumService: `${baseUrl}/lms/album`,
|
|
113
|
-
AlbumCategoryService: `${baseUrl}/lms/cate_album`,
|
|
114
|
-
AlbumFileService: `${baseUrl}/lms/album_file`,
|
|
115
|
-
ClassesService: `${baseUrl}/lms/classes`,
|
|
116
|
-
ClassScheduleService: `${baseUrl}/lms/class-schedules`,
|
|
117
|
-
CourseLessonService: `${baseUrl}/lms/course-lessons`,
|
|
118
|
-
CoursePriceService: `${baseUrl}/lms/course-prices`,
|
|
119
|
-
CourseProductService: `${baseUrl}/lms/course-product`,
|
|
120
|
-
CourseService: `${baseUrl}/lms/courses`,
|
|
121
|
-
DocumentService: `${baseUrl}/lms/documents`,
|
|
122
|
-
DocumentCategoryService: `${baseUrl}/lms/document-categories`,
|
|
123
|
-
LicenseService: `${baseUrl}/lms/license`,
|
|
124
|
-
PracticeResultService: `${baseUrl}/lms/practices-result`,
|
|
125
|
-
PracticeService: `${baseUrl}/lms/practices`,
|
|
126
|
-
StudentAgainService: `${baseUrl}/lms/students-agains`,
|
|
127
|
-
StudentDocumentService: `${baseUrl}/lms/students-documents`,
|
|
128
|
-
StudentExamTimeService: `${baseUrl}/lms/student-exam-time`,
|
|
129
|
-
StudentReviewService: `${baseUrl}/lms/students-reviews`,
|
|
130
|
-
StudentService: `${baseUrl}/lms/students`,
|
|
131
|
-
StudentScoreService: `${baseUrl}/lms/students-scores`,
|
|
132
|
-
StudentSettingReviewService: `${baseUrl}/lms/setting-reviews`,
|
|
133
|
-
StudentTrackingService: `${baseUrl}/lms/students-tracking`,
|
|
134
|
-
StudentTrialService: `${baseUrl}/lms/students-trial`
|
|
135
|
-
},
|
|
136
|
-
Hr: {
|
|
137
|
-
AllowanceService: `${baseUrl}/hr/allowance`,
|
|
138
|
-
CategoryService: `${baseUrl}/hr/setting/category`,
|
|
139
|
-
AnnualLeaveService: `${baseUrl}/hr/annual_leave`,
|
|
140
|
-
EmployeeService: `${baseUrl}/hr/employees`,
|
|
141
|
-
JobTitleService: `${baseUrl}/hr/setting/job_title`,
|
|
142
|
-
DepartmentService: `${baseUrl}/hr/departments`,
|
|
143
|
-
DeviceService: `${baseUrl}/hr/device`,
|
|
144
|
-
DocumentService: `${baseUrl}/hr/documents`,
|
|
145
|
-
EmployeeExtendService: `${baseUrl}/hr/employees/extend`,
|
|
146
|
-
EmployeeExtendTempService: `${baseUrl}/hr/employees/extend/temp`,
|
|
147
|
-
EmployeeLeaveService: `${baseUrl}/hr/employee_leave`,
|
|
148
|
-
EmployeeNotificationService: `${baseUrl}/hr/notification-employee`,
|
|
149
|
-
EmployeeQuitService: `${baseUrl}/hr/employee_quit`,
|
|
150
|
-
EmployeeShiftService: `${baseUrl}/hr/employee_shift`,
|
|
151
|
-
HolidayService: `${baseUrl}/hr/holidays`,
|
|
152
|
-
PositionService: `${baseUrl}/hr/positions`,
|
|
153
|
-
ReasonTypeService: `${baseUrl}/hr/setting/reason_type`,
|
|
154
|
-
ResignationService: `${baseUrl}/hr/resignations`,
|
|
155
|
-
SalaryService: `${baseUrl}/hr/employee_salary`,
|
|
156
|
-
ScheduleService: `${baseUrl}/hr/schedule`,
|
|
157
|
-
ScheduleOnlineService: `${baseUrl}/hr/schedule_online`,
|
|
158
|
-
ShiftService: `${baseUrl}/hr/setting/shifts`,
|
|
159
|
-
ShiftsCustomerCareService: `${baseUrl}/hr/setting/shifts-customer-care`,
|
|
160
|
-
TicketService: `${baseUrl}/hr/ticket`,
|
|
161
|
-
TicketExtendService: `${baseUrl}/hr/ticket/extend`,
|
|
162
|
-
TicketTypeService: `${baseUrl}/hr/ticket-type`,
|
|
163
|
-
TrackingConfirmService: `${baseUrl}/hr/tracking_confirm`,
|
|
164
|
-
TrackingErrorService: `${baseUrl}/hr/tracking-error`,
|
|
165
|
-
SettingDocumentService: `${baseUrl}/hr/setting/profile`
|
|
166
|
-
},
|
|
167
|
-
Support: {
|
|
168
|
-
CommentService: `${baseUrl}/support/comment`
|
|
169
|
-
}
|
|
170
|
-
};
|
|
171
|
-
module2.exports = {
|
|
172
|
-
AUTHENTICATOR_PUBLIC_KEY: process.env.AUTHENTICATOR_PUBLIC_KEY || "",
|
|
173
|
-
API_MICROSERVICE_URL: process.env.API_MICROSERVICE_URL || "",
|
|
174
|
-
API_MICROSERVICE_TOKEN: process.env.API_MICROSERVICE_TOKEN || "",
|
|
175
|
-
CONFIG_ROUTER_SERVICE: configRouteService,
|
|
176
|
-
CONFIG_REDIS: redis
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
// src/services/BaseService.js
|
|
182
|
-
var require_BaseService = __commonJS({
|
|
183
|
-
"src/services/BaseService.js"(exports2, module2) {
|
|
184
|
-
var axios = require("axios");
|
|
185
|
-
var qs = require("qs");
|
|
186
|
-
var { API_MICROSERVICE_TOKEN, CONFIG_REDIS } = require_config();
|
|
187
|
-
var BaseService2 = class {
|
|
188
|
-
baseUrl = "";
|
|
189
|
-
headers = {};
|
|
190
|
-
isCache = false;
|
|
191
|
-
// bật/tắt cache mặc định
|
|
192
|
-
service = null;
|
|
193
|
-
// nhớ gán ở subclass
|
|
194
|
-
timeCache = 300;
|
|
195
|
-
// 300s = 5 phút
|
|
196
|
-
constructor(baseUrl = "", defaultHeaders = {}) {
|
|
197
|
-
this.baseUrl = baseUrl;
|
|
198
|
-
this.setHeader(defaultHeaders);
|
|
199
|
-
this.http = axios.create({
|
|
200
|
-
baseURL: this.baseUrl,
|
|
201
|
-
headers: this.headers,
|
|
202
|
-
paramsSerializer: (params) => qs.stringify(params, { arrayFormat: "brackets", encode: true })
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Set header cho request
|
|
207
|
-
* - headers: object { Authorization: "Bearer x" }
|
|
208
|
-
* - string: "Bearer x"
|
|
209
|
-
* - không truyền: dùng token từ ENV
|
|
210
|
-
*/
|
|
211
|
-
setHeader(headers = {}) {
|
|
212
|
-
let Authorization = `Bearer ${API_MICROSERVICE_TOKEN}`;
|
|
213
|
-
if (typeof headers === "string") {
|
|
214
|
-
Authorization = headers;
|
|
215
|
-
} else if (headers && headers.Authorization) {
|
|
216
|
-
Authorization = headers.Authorization;
|
|
217
|
-
}
|
|
218
|
-
this.headers = {
|
|
219
|
-
...this.headers || {},
|
|
220
|
-
Authorization
|
|
221
|
-
};
|
|
222
|
-
return this;
|
|
223
|
-
}
|
|
224
|
-
buildCacheKey(path, params = {}) {
|
|
225
|
-
const q = qs.stringify(params, { arrayFormat: "brackets", encode: true });
|
|
226
|
-
const full = `${path}${q ? "?" + q : ""}`;
|
|
227
|
-
const service = this.service || "unknown";
|
|
228
|
-
return `gateway.${service}.urls:${full}`;
|
|
229
|
-
}
|
|
230
|
-
async request(method, url, options = {}, cacheKey = null, cacheOption = {}) {
|
|
231
|
-
var _a, _b;
|
|
232
|
-
const isGet = method.toLowerCase() === "get";
|
|
233
|
-
const enableCache = cacheOption.isCache ?? this.isCache;
|
|
234
|
-
if (isGet && enableCache) {
|
|
235
|
-
cacheKey = cacheKey || this.buildCacheKey(url, options.params);
|
|
236
|
-
const cached = await CONFIG_REDIS.get(cacheKey);
|
|
237
|
-
if (cached) {
|
|
238
|
-
console.log(`[CACHE HIT] ${cacheKey}`);
|
|
239
|
-
return JSON.parse(cached);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
try {
|
|
243
|
-
if (isGet) {
|
|
244
|
-
console.log(`[HTTP GET] ${this.buildGET(url, options.params || {})}`);
|
|
245
|
-
}
|
|
246
|
-
const startTime = Date.now();
|
|
247
|
-
const res = await this.http.request({
|
|
248
|
-
method,
|
|
249
|
-
url,
|
|
250
|
-
headers: this.headers,
|
|
251
|
-
...options
|
|
252
|
-
});
|
|
253
|
-
const data = res.data;
|
|
254
|
-
if (isGet && enableCache) {
|
|
255
|
-
cacheKey = cacheKey || this.buildCacheKey(url, options.params);
|
|
256
|
-
const ttl = cacheOption.timeCache || this.timeCache;
|
|
257
|
-
await CONFIG_REDIS.set(cacheKey, JSON.stringify(data), "EX", ttl);
|
|
258
|
-
console.log(`[CACHE SET] ${cacheKey} - TTL ${ttl}s`);
|
|
259
|
-
}
|
|
260
|
-
const duration = (Date.now() - startTime) / 1e3;
|
|
261
|
-
if (duration > 5) {
|
|
262
|
-
console.log(
|
|
263
|
-
`[SLOW ${method.toUpperCase()}] ${url} - ${duration.toFixed(2)}s`
|
|
264
|
-
);
|
|
265
|
-
if (options.params) console.log("Query:", options.params);
|
|
266
|
-
if (options.data) console.log("Body:", options.data);
|
|
267
|
-
}
|
|
268
|
-
return data;
|
|
269
|
-
} catch (error) {
|
|
270
|
-
const safeError = {
|
|
271
|
-
statusCode: ((_a = error.response) == null ? void 0 : _a.status) || 500,
|
|
272
|
-
...(_b = error.response) == null ? void 0 : _b.data
|
|
273
|
-
};
|
|
274
|
-
if (safeError.statusCode === 404) {
|
|
275
|
-
const q = qs.stringify(options.params || {}, {
|
|
276
|
-
arrayFormat: "brackets",
|
|
277
|
-
encode: true
|
|
278
|
-
});
|
|
279
|
-
return {
|
|
280
|
-
statusCode: 404,
|
|
281
|
-
status: "error",
|
|
282
|
-
message: `[HTTP ${method.toUpperCase()}] ${url}${q ? "?" + q : ""} not found`
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
|
-
console.error(`[${method.toUpperCase()}] ${url} failed:`, safeError);
|
|
286
|
-
return { error: true, ...safeError };
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
buildGET(url, params = {}) {
|
|
290
|
-
const queryString = qs.stringify(params, {
|
|
291
|
-
arrayFormat: "brackets",
|
|
292
|
-
encode: true
|
|
293
|
-
});
|
|
294
|
-
return `${url}${queryString ? "?" + queryString : ""}`;
|
|
295
|
-
}
|
|
296
|
-
async all(query = {}, cacheOption = {}) {
|
|
297
|
-
if (query.order_by && Array.isArray(query.order_by)) {
|
|
298
|
-
query.order_by = query.order_by.slice(0, 2);
|
|
299
|
-
if (query.order_by[1] && !["asc", "desc"].includes(query.order_by[1])) {
|
|
300
|
-
query.order_by[1] = "asc";
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
return this.request(
|
|
304
|
-
"get",
|
|
305
|
-
this.baseUrl,
|
|
306
|
-
{ params: query },
|
|
307
|
-
null,
|
|
308
|
-
cacheOption
|
|
309
|
-
);
|
|
310
|
-
}
|
|
311
|
-
async detail(id, cacheOption = {}) {
|
|
312
|
-
const enableCache = cacheOption.isCache ?? this.isCache;
|
|
313
|
-
const cacheKey = enableCache ? `gateway.${this.service}.${id}` : null;
|
|
314
|
-
return this.request(
|
|
315
|
-
"get",
|
|
316
|
-
`${this.baseUrl}/${id}`,
|
|
317
|
-
{},
|
|
318
|
-
cacheKey,
|
|
319
|
-
cacheOption
|
|
320
|
-
);
|
|
321
|
-
}
|
|
322
|
-
async create(data) {
|
|
323
|
-
return this.request("post", this.baseUrl, { data });
|
|
324
|
-
}
|
|
325
|
-
async update(id, data) {
|
|
326
|
-
return this.request("put", `${this.baseUrl}/${id}`, { data });
|
|
327
|
-
}
|
|
328
|
-
async delete(id) {
|
|
329
|
-
return this.request("delete", `${this.baseUrl}/${id}`);
|
|
330
|
-
}
|
|
331
|
-
};
|
|
332
|
-
module2.exports = BaseService2;
|
|
333
|
-
}
|
|
334
|
-
});
|
|
335
|
-
|
|
336
|
-
// src/services/course/CourseService.js
|
|
337
|
-
var BaseService = require_BaseService();
|
|
338
|
-
var { CONFIG_ROUTER_SERVICE } = require_config();
|
|
339
|
-
var CourseService = class extends BaseService {
|
|
340
|
-
constructor() {
|
|
341
|
-
super(CONFIG_ROUTER_SERVICE.Course.CourseService);
|
|
342
|
-
this.service = "Course.CourseService";
|
|
343
|
-
}
|
|
344
|
-
// có thể thêm method riêng cho user nếu cần
|
|
345
|
-
async detailSchedule(id, cacheOption = {}) {
|
|
346
|
-
const enableCache = cacheOption.isCache ?? this.isCache;
|
|
347
|
-
const cacheKey = enableCache ? `gateway.course_schedule.${id}` : null;
|
|
348
|
-
return this.request(
|
|
349
|
-
"get",
|
|
350
|
-
`${this.baseUrl}/${id}`,
|
|
351
|
-
{},
|
|
352
|
-
cacheKey,
|
|
353
|
-
cacheOption
|
|
354
|
-
);
|
|
355
|
-
}
|
|
356
|
-
async count(filter = {}) {
|
|
357
|
-
let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/course/course/count";
|
|
358
|
-
return this.request("get", url, { params: filter });
|
|
359
|
-
}
|
|
360
|
-
async student(filter = {}) {
|
|
361
|
-
let url = CONFIG_ROUTER_SERVICE.BASE_URL + "/course/students";
|
|
362
|
-
return this.request("get", url, { params: filter });
|
|
363
|
-
}
|
|
364
|
-
};
|
|
365
|
-
module.exports = CourseService;
|