Giới Thiệu FPT Software - FPT Software là tên gọi khác của công ty TNHH Phần Mềm FPT với nhiệm vụ chính là gia công phần mềm tại Việt Nam và nước ngoài.Thành lập từ năm 1988 đến nay với
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO THỰC TẬP TỐT NGHIỆP THÁNG 8
CÔNG TY: FPT SOFTWARE
Đề Tài: Xây Dựng BackEnd Cho Website Thế Giới Di Động
GVHD: ThS Nguyễn Hữu Trung Sinh viên thực tập : Lý Quốc Dũng MSSV: 19133015
Trang 2MỤC LỤC
Chương 1: Giới Thiệu Cơ Quan Thực Tập và Nhiệm Vụ 1
1 Giới Thiệu FPT Software 1
2 Nhiệm Vụ 1
Chương 2: Nội Dung Thực Tập Trong Tháng 8 2
1 Xử Lý Exception: 2
2 Mapping Dto – Entity: 2
3 Spring Security JWT: 2
4 Pagination: 2
Chương 3: Kết Quả Project Thế Giới Di Động 4
1 Project TheGioiDiDong: 4
Chương 4: Source Code Project Thế Giới Di Động 14
1 Project Thế Giới Di Động: 14
Chương 5: Kết Quả Thực Tập 15
1 Kiến Thức đạt được: 15
2 Kết Quả Project: 15
TÀI LIỆU THAM KHẢO VÀ HỌC TẬP 16
Trang 3Chương 1: Giới Thiệu Cơ Quan Thực Tập và Nhiệm Vụ
1 Giới Thiệu FPT Software
- FPT Software là tên gọi khác của công ty TNHH Phần Mềm FPT với nhiệm vụ chính là gia công phần mềm tại Việt Nam và nước ngoài.Thành lập từ năm
1988 đến nay với 3 Trụ sở chính FPT Software đặt tại Việt Nam và một số nước trên toàn thế giới
- FPT Software theo đuổi mục tiêu gia công phần mềm để đáp ứng cho nhu cầu phát triển CNTT của các hãng phần mềm trong nước, các công ty lớn trong nước và tham vọng hơn là xuất khẩu phần mềm trên toàn thế giới
- Từ khi được thành lập cho đến nay, FPT Software đã là công ty phần mềm số 1 tại Việt Nam trong lĩnh vực tích hợp hệ thống, phân phối và bán lẻ, dịch vụ Công Nghệ Thông tin, xuất khẩu gia công phần mềm, bán lẻ sản phẩm CNTT
- Ở lĩnh vực Viễn Thông FPT là một trong 3 nhà cung cấp dịch vụ internet cáp quang FPT hàng đầu tại Việt Nam Về lĩnh vực quảng cáo, FPT là đơn vị quảng cáo trực tuyến số 1 tại Việt Nam với trang báo điện tử VNexpress với hơn 42 triệu lượt truy cập mỗi ngày
2 Nhiệm Vụ
- Thời gian bắt đầu 4/7/2022, dự kiến kết thúc 31/8/2022
- Địa điểm: công ty FPT Software
- Xây dựng Back- End của website Thế Giới Di Động
https://www.thegioididong.com/
Thực hiện theo nhóm (5 người)
Trang 4Chương 2: Nội Dung Thực Tập Trong Tháng 8
1 Xử Lý Exception:
a Lý thuyết:
Exception cơ bản là đối tượng đại diện cho một lỗi xảy ra khi chạy chương trình Lỗi này có thể do tác động bên ngoài hoặc chính trong code ném ra Lập trình viên phải "bắt" và "xử lý" chúng một cách thích hợp (đưa ra thông báo lỗi, ) Nếu exception không được xử lý, nó có thể làm chương trình bị dừng.
b Ứng Dụng: @ControllerAdvice và @ExceptionHandler
c Mục đích:
Một chương trình nên có cơ chế xử lý ngoại lệ thích hợp Nếu không, chương trình sẽ bị ngắt khi một ngoại lệ xảy ra Trong trường hợp đó, tất cả các nguồn tài nguyên mà hệ thống đã cấp không được giải phóng Điều này gây lãng phí tài nguyên Để tránh trường hợp này, tất cả các nguồn tài nguyên mà hệ thống cấp nên được thu hồi lại Tiến trình này đòi hỏi cơ chế xử lý ngoại lệ thích hợp.
2 Mapping Dto – Entity:
a Lý Thuyết:
MapStruct là một trình tạo mã đơn giản hóa đáng kể việc ánh xạ giữa các kiểu bean Java dựa trên quy ước về cách tiếp cận cấu hình Mã ánh
xạ được tạo sử dụng các lệnh gọi phương thức rõ ràng và do đó nhanh chóng, an toàn về kiểu chữ và dễ hiểu.
b Ứng Dụng: Mapstruct
3 Spring Security JWT:
a Lý thuyết:
JSON Web Token (JWT) là một chuẩn mở (RFC 7519) xác định một cách nhỏ gọn, khép kín để truyền tải thông tin một cách an toàn giữa các bên bằng một đối tượng JSON Thông tin được truyền tải bởi JWT
có thể được xác thực và tin tưởng bởi vì nó sử dụng chữ ký số, JWT có thể được ký với khóa private (ví dụ HMAC) hoặc cặp khóa
public/private (ví dụ RSA)
b Ứng Dụng: Spring Security JWT
4 Pagination:
a Lý thuyết:
Trang 5Việc phân trang thường hữu ích khi chúng ta có một lượng dữ liệu lớn
và hiển thị nó cho người dùng theo từng phần nhỏ hơn Bên cạnh đó, ta cũng sắp xếp lượng dữ liệu đó theo một số tiêu chí nhất trong khi đang phân trang.
b Ứng Dụng: Phân trang
Trang 6Chương 3: Kết Quả Project Thế Giới Di Động
1 Project TheGioiDiDong:
a Database:
3 Table cho việc xử lý đăng nhập và phân quyền
10 table Thông tin về các cửa hàng, các sản phẩm, thể loại, đơn hàng,
b Mô Hình Project:
Controller: nơi tiếp nhận các request được gửi từ user
Dto: class đóng gói data để chuyển giữa client - server Mục đích
là để giảm bớt các cột không cần thiết phải chuyển đi, và tăng cường độ bảo mật
Trang 7 Entity: một Java class tương ứng với một table trong database, mỗi entity object tương ứng với một dòng trong bảng
Mapstruct: Chuyển từ Entity sang Dto và ngược lại
Repository: Data access layer, chứa các hàm xử lý CRUD
Service: Business Logic Layer, chứa các code tính toán, xử lý
exception: xử lý exception
enums: giá trị hằng filter
security: phân quyền
specification: logic filter
c API :
Trang 8d API trả về của Store:
Phân Trang:
Phân trang dựa trên việc truyền vào pageSiza và pageNum
Trang 9 Spring Security JWT:
Gửi request đến controller cùng với username và password, trả về token để login và phân quyền:
Nội Dung Token:
Xử Lý Exception:
Trả về lỗi rõ ràng để lập trình viên có thể dễ dàng nhận biết, xử dụng @ExceptionHandler và @ControllerAdvice
Trang 10 Filter:
Truyền vào Params để filter
Truyền vào Body những tham số được cố định sẵn trong package enums để filter
Trang 11Kết Quả:
Trang 12 Xuất Excel để thống kê các sản phẩm đã bán:
Add Store:
Trang 13 Add Store 2:
Get Store sau khi add 2 Store:
Trang 14 Update All Store 1:
Update Property Store:
Trang 15 Get Store sau update:
Delete Store:
Get Store sau Delete:
Trang 16Chương 4: Source Code Project Thế Giới Di Động
1 Project Thế Giới Di Động:
- Database:
https://drive.google.com/file/d/1KJ5qRD5ZFaH_Zt03ElARaVbe6F4ldBsn/view? usp=sharing
- Postman:
https://drive.google.com/file/d/1wdO2wtP2Yl-4x62yOojUWMEJQva51p9f/view? usp=sharing
- Source:
https://drive.google.com/drive/folders/1yzgVyXOIhp627LG1Ae9U7BmiMtN_iz6T? usp=sharing
Trang 17Chương 5: Kết Quả Thực Tập
1 Kiến Thức đạt được:
Nắm vững kiến thức Java Core
Hiểu về Framework Spring Boot
Hiểu về Spring Data Jpa
Xử lý ngoại lệ
Xử lý Phân trang
Bảo mật và phân quyền
Áp dụng Filter
Xuất Excel
2 Kết Quả Project:
Tên: Thế Giới Di Động
Điểm: 9
Nhóm 7:
o Nguyễn Phạm Duy Khiêm – 19133027 (Database)
o Phạm Nguyễn Quang Lộc - 19110393 (Database)
o Lê Thị Thanh Nhi - 19110420 (Code)
o Nguyễn Huỳnh Thanh Hải - 19110355 (Code)
Đáp ứng được các task của mentor và phát triển thêm đề tài
Trang 18TÀI LIỆU THAM KHẢO VÀ HỌC TẬP
1. Các tài liệu và slide của FPT SoftWare
2. MapStruct: https://auth0.com/blog/how-to-automatically-map-jpa-entities-into-dtos-in-spring-boot-using-mapstruct/
3. Spring Boot: https://www.baeldung.com/spring-boot
4. Filter: https://www.baeldung.com/spring-boot-add-filter
5. Exception:https://www.baeldung.com/exception-handling-for-rest-with-spring