LỜI CẢM ƠNLời đầu tiên nhóm xin phép được gửi lời cảm ơn chân thành và sâu sắc nhất đến với Khoa Công Nghệ Thông Tin – Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh đã tạo điều k
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINHKHOA CÔNG NGHỆ THÔNG TIN
Trang 2CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh Phúc
TP Hồ Chí Minh, ngày 13 tháng 09 năm 2022
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Sinh viên thực hiện:
Họ và tên: Trần Việt Anh MSSV: 19110325 Ngành: Công nghệ thông tin Lớp: 19110ST1C
Tp Hồ Chí Minh, ngày 01 tháng 12 năm 2022 Giáo viên hướng dẫn
(Ký & ghi rõ họ tên)
Trang 3LỜI CẢM ƠN
Lời đầu tiên nhóm xin phép được gửi lời cảm ơn chân thành và sâu sắc nhất đến với Khoa Công Nghệ Thông Tin – Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh đã tạo điều kiện cho người thực hiện báo cáo được học tập, phát triển kiến thức khi thực tập tại FPT Software.
Bên cạnh đó người thực hiện báo cáo xin gửi đến thầy Lê Văn Vinh lời cảm ơn sâu sắc nhất Trải qua một quá trình thực tập và thực hiện đề tài trong thời gian qua Thầy đã tận tâm chỉ bảo nhiệt tình người thực hiện báo cáo trong suốt quá trình từ lúc bắt đầu cũng như kết thúc thực tập này.
Với sự hướng dẫn nhiệt tình giúp đỡ tận tình của thầy Lê Văn Vinh và anh mentor Bùi Công Thành, người thực hiện báo cáo đã học tập và hiểu được những kiến thức cơ bản về công nghệ mà người thực hiện báo cáo tìm hiểu trong quá trình thực tập
Tuy nhiên lượng kiến thức là vô tận và với khả năng hạn hẹp người thực hiện báo cáo đã rất cố gắng để hoàn thành một cách tốt nhất Chính vì vậy việc xảy ra những thiếu sót là điều khó có thể tránh khỏi Người thực hiện báo cáo hi vọng nhận được sự góp ý tận tình của quý thầy (cô) và anh mentor qua đó người thực hiện báo cáo có thể rút ra được bài học kinh nghiệm và hoàn thiện và cải thiện nâng cấp lại sản phẩm của mình một cách tốt nhất có thể.
Xin chân thành cảm ơn!
Sinh viên thực hiện
Trần Việt Anh – 19110325
Trang 4MỤC LỤC
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 2
LỜI CẢM ƠN 3
CHƯƠNG 1: GIỚI THIỆU CÔNG TY VÀ NHIỆM VỤ ĐƯỢC GIAO 6
1.1 Giới thiệu cơ quan thực tập 6
1.2 Giới thiệu lịch làm việc tại cơ quan 6
1.3 Giới thiệu nhiệm vụ được giao 6
CHƯƠNG 2: NỘI DUNG THỰC TẬP 8
2.4 Công việc hàng tuần 9
CHƯƠNG 3: QUÁ TRÌNH XÂY DỰNG PROJECT VÀ KẾT QUẢ 18
3.1 Giới thiệu project 18
3.2 Phân tích và thiết kế hệ thống 18
3.2.1.Xác định yêu cầu 18
3.2.2.Các vai trò và chức năng trong hệ thống 18
3.3 Kết quả thực hiện (Swagger UI) 20
Trang 6CHƯƠNG 1: GIỚI THIỆU CÔNG TY VÀ NHIỆM VỤ ĐƯỢC GIAO
1.1.Giới thiệu cơ quan thực tập
FPT Software là công ty thành viên thuộc tập đoàn FPT, chuyên cung cấp các dịch vụ và giải pháp về công nghệ thông tin hàng đầu thế giới
Được thành lập vào năm 1999, đến nay công ty đã đạt được 1.6 tỷ USD doanh thu và với hơn 54.000 nhân viên đang làm việc tại 28 quốc gia khác nhau trên thị trường quốc tế Trong nhiều năm liền, FPT Software luôn được bình chọn là công ty yêu thích hàng đầu của các lập trình viên và là công ty có môi trường làm việc năng động, tốt nhất châu Á.
Sứ mệnh : Mang lại các giải pháp công nghệ thông tin tốt nhất cho các công ty, tổ
chức hàng đầu thế giới Cung cấp môi trường làm việc năng động cho các bạn trẻ đang theo đuổi ngành công nghệ
Tầm nhìn: Thúc đẩy, phát triển bởi sự đổi mới, cam kết về mức độ hài lòng của
khách hàng với mong muốn trở thành công ty về công nghệ hàng đầu Việt Nam
Giá trị cốt lõi: Nhanh nhẹn - Đổi mới - Cam kết - Tôn trọng
1.2.Giới thiệu lịch làm việc tại cơ quan
Tại FPT Software, số giờ làm việc tiêu chuẩn trong 1 tuần là 40 tiếng Ngày làm việc bắt đầu từ thứ Hai đến thứ Sáu hàng tuần Thời gian làm việc ở buổi sáng từ 8h00 đến 12h00, buổi chiều từ 13h00 đến 17h00.
Khi muốn nghỉ phép, nhân viên cần chủ động gửi e-mail cho Admin trước 2-3 ngày để được sắp xếp Nếu có việc đột xuất, vấn đề về sức khoẻ,… thì nhân viên có thể liên lạc cho Admin ngay trong ngày qua cuộc gọi.
Trang 71.3.Giới thiệu nhiệm vụ được giao
Về nhiệm vụ được giao sẽ bao gồm ba nhiệm vụ chính như sau:
[1] Thực hành, tìm hiểu về Java Core, Spring Boot, Spring Security và các kiến
thức liên quan đến Back-end như: JWT (JSON Web Token), Swagger (Dùng để host API doc), RESTful API,…
[2] Học tập, nghiên cứu và làm việc theo nhóm (Spring Boot, Spring Data JPA,…)[3] Thực hiện project xây dựng hệ thống Back-end cho website thương mại điện tử
Tiki
Trang 8CHƯƠNG 2: NỘI DUNG THỰC TẬP2.1 Nội dung thực tập
Trong quá trình thực tập kéo dài 2 tháng từ 04/07/2022 đến ngày 31/08/2022 đã hoàn thành thực hiện các công việc sau đây:
[1] Ôn tập về Java core, tìm hiểu về Spring Boot, Spring Security, Spring Data
Spring Boot là một công cụ dùng để phát triển các ứng dụng web và các microservice với Spring Framework một cách dễ dàng và nhanh chóng Thông qua Spring Boot, việc cài đặt cấu hình Spring sẽ được giảm tải đi rất nhiều so với cách cài đặt truyền thống
Spring Boot hỗ trợ các bộ chứa nhúng (Embedded containers) giúp các ứng dụng web có thể chạy độc lập mà không cần triển khai chúng lên các Web Server.
Các tính năng của Spring Boot:
[1] Tạo ra các ứng dụng Spring độc lập
[2] Cung cấp rất nhiều các plugin để phát triển và test các ứng dụng Spring Boot
nhanh chóng sử dụng các công cụ như Maven và Gradle
[3] Có thể nhúng trực tiếp Tomcat, Jetty hoặc Undertow giúp chạy các ứng dụng
web mà không cần phải triển khai file WAR
[4] Stater Dependency giúp chạy các cấu hình Maven trở nên đơn giản hơn[5] Không sinh ra code cấu hình, không yêu cầu phải cấu hình bằng XML
2.2.2 Spring Security
Spring Security là một phần của Spring Framework, hỗ trợ việc triển khai các biện pháp bảo mật ở tầng ứng dụng Spring Security hoạt động xoay quanh 2 vấn đề chính là xử lý xác thực và xử lý bảo mật ở cấp độ web request
Spring Security là một framework mạnh và có độ tuỳ biến cao, do đó các lập trình viên có thể sử dụng các cấu hình có sẵn của nó hoặc tuỳ chỉnh theo các bài toán được đặt ra trong hệ thống.
Trang 9Một số tính năng của Spring Security:
[1] Tích hợp các Servlet API
[2] Tích hợp tuỳ chọn với Spring Web MVC
[3] Cung cấp các sự bảo vệ chống lại các cuộc tấn công như session fixation,
clickjacking, CSRF,
[4] Hỗ trợ toàn diện và có thể mở rộng cho cả xác thực và phân quyền2.2.3 Spring Data JPA
Spring Data là một module thuộc Spring Framework Spring Data JPA là một phần của Spring Data, nó được sinh ra để giúp tối giản hoá các bước triển khai JPA (Java Persistance API)
Các tính năng của Spring Data JPA:
[1] Hỗ trợ XML mapping
[2] Cấu hình JavaConfig bằng cách sử dụng @EnableJpaRepositories[3] Hỗ trợ phân trang, thực thi các truy vấn động
[4] Hỗ trợ xây dựng các Repositories dựa trên Spring và JPA
[5] Hỗ trợ xác thực các câu truy vấn có chú thích @Query tại thời điểm phát động
2.2.4 JWT
JSON Web Token (JWT) là một tiêu chuẩn mở (RFC 7519) nhằm xác minh tính an toàn cho việc truyền thông tin giữa Client-Server dưới dạng JSON object Thông tin này sẽ được chứng thực và đảm bảo tin cậy vì nó đã được ký số.
JWT bao gồm 3 thành phần là Header, Payload và Signature Giữa các thành phần được ngăn cách bởi dấu chấm (.) Ví dụ:
Cách hoạt động của JWT: khi người dùng muốn truy cập vào các đường dẫn hoặc tài nguyên đã được bảo vệ thì trong request được gửi đi phải có JWT được đính kèm ở Authorization header Phía server sẽ kiểm tra JWT để xem người dùng có hợp lệ và đủ đặc quyền để được truy cập tài nguyên đó hay không, nếu hợp lệ thì người dùng sẽ được phép truy cập và ngược lại người dùng sẽ không được phép truy cập vào tài nguyên đó.
2.3.Phương thức làm việc
Mỗi cá nhân trong lớp tự tìm hiểu, học hỏi các kiến thức liên quan đến Java core, Spring Boot thông qua các yêu cầu được đưa ra bởi Mentor trong 2 tuần đầu tiên Sau đó các thành viên thành lập nhóm 6 người để thực hiện các project về các trang thương mại điện tử bao gồm Tiki, Thế giới di động, Shopee Sau khi hoàn thành, các nhóm chủ động liên hệ với các nhóm Front-end có chung đề tài để ghép nối giao diện.
Trang 102.4.Công việc hàng tuần
Trang 11Các công c , máy móc, trang ụthiếết b và phịương pháp được
Online meetng g p MentorặOnline meetng g p MentorặNh n task cài đ t các tool hôỗ ậặ
Cài đ t các tool hôỗ tr khóa ặợh cọ
Cài đ t IDEặ EclipseCài đ t công c test APIặụ Postman
Totalhours for the WeekT ng sôế gi trong tuầầnổờ
40
Trang 12Các công c , máy móc, trang ụthiếết b và phịương pháp được
Totalhours for the WeekT ng sôế gi trong tuầầnổờ
40
Trang 13Các công c , máy móc, trang ụthiếết b và phịương pháp được
Online meetng và h c t p vêề ọ ậ
Totalhours for the WeekT ng sôế gi trong tuầầnổờ
40
Trang 14Các công c , máy móc, trang ụthiếết b và phịương pháp được
Totalhours for the Week
Trang 15Các công c , máy móc, trang ụthiếết b và phịương pháp được Totalhours for the Week
T ng sôế gi trong tuầầnổờ
40
Trang 16Các công c , máy móc, trang ụthiếết b và phịương pháp được
Online meetng làm đôề án Xấy d ng Service CRUD cho ựProvince, District, Commune
Online meetng làm đôề án Xấy d ng Entty Ratng, ựRatngService thêm đánh giá, xem đánh giá theo s n ph mảẩ
Xấy d ng Entty Cart, ựCartDTO, CartService thêm s n ph m vào gi hàng, ch nhảẩỏỉs a sôấ lửượng, xóa s n ph m ảẩkh i gi hàngỏ ỏ
Totalhours for the WeekT ng sôế gi trong tuầầnổờ
40
Trang 17Các công c , máy móc, trang ụthiếết b và phịương pháp được
Online meetng làm đôề án Merge code v i các thành ớviên, fix bug
Totalhours for the WeekT ng sôế gi trong tuầầnổờ
40
Trang 18Các công c , máy móc, trang ụthiếết b và phịương pháp được
Lên công ty báo cáo Hoàn thi n báo cáoệMySQL
Totalhours for the WeekT ng sôế gi trong tuầầnổờ
40
Trang 19CHƯƠNG 3: QUÁ TRÌNH XÂY DỰNG PROJECT VÀ KẾT QUẢ3.1.Giới thiệu project
- Tên đề tài: Xây dựng hệ thống back-end cho website thương mại điện tử Tiki - Công nghệ sử dụng: Spring boot, Spring Data JPA, Spring Security, Swagger UI - Cơ sở dữ liệu: Mysql
- IDE sử dụng: Eclipse 2022 - Thời gian bắt đầu: 18/07/2022 - Thời gian kết thúc: 28/08/2022 - Số lượng thành viên: 4 người
- Vị trí trong dự án: Xây dựng, ứng dụng Spring Security vào project để xác thực, phân quyền người dùng với JSON Web Token (JWT) Triển khai, xây dựng các module về người dùng, module xác thực, thiết kế mail server dùng để gửi email xác Xem chi tiết sản phẩm Thêm hàng vào giỏ hàng Đặt hàng và thanh toán Quản lý đơn hàng cá nhân
Trang 21Hình 3.2: Lược đồ thiết kế CSDL
3.3.Kết quả thực hiện (Swagger UI)3.3.1 API auth-controller
Trang 223.3.2 API brand-controller
3.3.3 API cart-controller
Trang 233.3.4 API category-controller
3.3.5 API order-controller
Trang 243.3.6 API product-controller
Trang 253.3.7 API province-controller
3.3.8 API rate-controller
Trang 263.3.9 API user-address-controller
3.3.10.API user-controller
Trang 27CHƯƠNG 4: KẾT LUẬN4.1.Nhận định của bản thân
FPT Software cung cấp môi trường làm việc năng động, cơ sở vật chất hiện đại, đầy đủ đáp ứng được nhu cầu thực tập và làm việc của sinh viên Ngoài ra, công ty còn tổ chức các hoạt động ngoại khoá như các buổi talking, meeting về các chủ đề như English, Tech Talk,… để nâng cao trải nghiệm cho quá trình thực tập cũng như các giải đấu thể thao nâng cao sức khoẻ cộng đồng
Tuy khoảng thời gian thực tập khá ngắn ngủi nhưng việc các anh chị admin và mentor đã tạo điều kiện hỗ trợ hết sức mình giúp quá trình học tập và làm việc trở nên thú vị, năng động hơn thông qua việc phổ biến, cung cấp chia sẻ các kinh nghiệm qua các buổi Talking cũng như Meeting Online cho sinh viên thực tập
4.2.Kết quả đạt được
- Học được tác phong làm việc chuyên nghiệp, kỹ năng mềm như viết email - Trau dồi kỹ năng làm việc nhóm, tương tác qua lại giữa các thành viên - Hiểu biết thêm về các công nghệ dùng để triển khai một hệ thống Back-end - Cách thiết kế, triển khai một hệ thống Back-end với Java Spring Boot
4.3.Hạn chế
Thời gian làm việc trực tiếp trên công ty và số lần gặp mặt trực tiếp các trainer/mentor còn hạn chế Có 2 lớp Back-end nhưng chỉ có 1 lớp Front-end nên nhóm không có Front-end để ghép thành bài hoàn thiện, chỉ có thể chạy bài thông qua các APIs
4.4.Hướng phát triển
- Tạo giao diện đẹp mắt, trực quan, tối ưu hóa hiển thị và độ mượt mà của các trang người dùng.
- Nâng cấp thêm chức năng thanh toán thông qua ngân hàng, ví điện tử - Đăng nhập Website bằng tài khoản Google, Facebook…
- Xây dựng và hoàn thiện chức năng trao đổi trực tiếp với khách hàng bằng chatbox
Trang 28TÀI LIỆU THAM KHẢO
1 https://www.javainuse.com/spring/boot-jwt 2 https://springdoc.org/