ปรับปรุง Employee Service และ README
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
58ea6c08a4
commit
1f1ed79571
81
README.md
81
README.md
@ -1,69 +1,86 @@
|
|||||||
# 🌐 OpenGIS
|
# 🌐 OpenGIS
|
||||||
|
|
||||||
[](https://opengis.softwarecraft.tech/)
|
|
||||||
[](#license)
|
[](#license)
|
||||||
|
|
||||||
> Frontend สำหรับระบบ OpenGIS และแสดงผลแบบ Responsive ด้วย React + TailwindCSS ✨
|
> ระบบภูมิสารสนเทศ OpenGIS ที่มี CMS สำหรับให้จัดการข้อมูลโดยผู้ใช้งานได้ ✨
|
||||||
> ระบบนี้จะถูก Deploy ไปที่: 🌍 **[https://opengis.softwarecraft.tech/](https://opengis.softwarecraft.tech/)**
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🚀 Features
|
## 🚀 Features
|
||||||
|
|
||||||
- ✅ จัดการข้อมูลที่ต้องการได้ (CRUD)
|
- ✅ จัดการข้อมูลที่ต้องการได้ (CRUD)
|
||||||
- 🌞🌙 ปุ่มสลับธีม Light/Dark พร้อม Animationร
|
- 🌞🌙 ปุ่มสลับธีม Light/Dark
|
||||||
- 📋 ตารางข้อมูลพร้อมปุ่ม Update และ Delete
|
- 📋 ตารางข้อมูลพร้อมปุ่ม Update และ Delete
|
||||||
- 🔒 Modal ยืนยันการลบข้อมูล
|
- 🔒 Modal ยืนยันการลบข้อมูล
|
||||||
- 💅 ใช้ TailwindCSS และ DaisyUI สำหรับ UI ที่ดูดี
|
- 💅 ใช้ TailwindCSS และ DaisyUI สำหรับ UI ที่ดูดี
|
||||||
- ⚠️ หมายเหตุ: อยู่ระหว่างการพัฒนา โค้ดปัจจุบันยังไม่ใช่รูปแบบการทำงานจริงทั้งหมด
|
- ⚠️ หมายเหตุ: อยู่ระหว่างการพัฒนา โค้ดปัจจุบันยังไม่ใช่รูปแบบการทำงานจริงทั้งหมด
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🧪 Tech Stack
|
## 🌟 แผนการพัฒนาในอนาคต
|
||||||
|
|
||||||
| Technology | Description |
|
- 📈 เพิ่มฟีเจอร์แผนที่ (Map)
|
||||||
|--------------|------------------------------------|
|
- 🌐 รองรับหลายภาษาเพื่อการใช้งานที่หลากหลาย
|
||||||
| ⚛️ React | Frontend JavaScript Framework |
|
- 📱 พัฒนาแอปพลิเคชันมือถือสำหรับการเข้าถึงที่สะดวกขึ้น
|
||||||
| 💨 TailwindCSS | Utility-first CSS Framework |
|
- 🔍 ปรับปรุงระบบค้นหาให้มีประสิทธิภาพมากขึ้น
|
||||||
| 🖌️ DaisyUI | Component UI บนพื้นฐาน Tailwind |
|
- 🛡️ เพิ่มระบบความปลอดภัยขั้นสูงเพื่อปกป้องข้อมูลผู้ใช้
|
||||||
| 🧠 Gitea | Git Self-hosted Repository |
|
- 🤖 ใช้ AI และ Machine Learning เพื่อเพิ่มประสิทธิภาพการทำงาน
|
||||||
| 🚀 Drone CI | การทำ Continuous Integration และ Continuous Delivery (CI/CD) |
|
- 📊 เพิ่มการแสดงผลข้อมูลแบบกราฟิกและแดชบอร์ด
|
||||||
| 🚀 SonarQube | การวิเคราะห์คุณภาพโค้ด (Code Quality) |
|
- 🛠️ ปรับปรุง UI/UX ให้ใช้งานง่ายและสวยงามยิ่งขึ้น
|
||||||
|
- 🚀 เพิ่มการรองรับการทำงานร่วมกับระบบอื่น ๆ ผ่าน API
|
||||||
|
- 💬 เพิ่มระบบแชทบอทเพื่อช่วยเหลือผู้ใช้แบบเรียลไทม์
|
||||||
|
- 📋 ตารางแสดงข้อมูลอื่น ๆ พร้อมปุ่ม Update และ Delete
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔗 Deployment
|
## 🧪 Tech Stack
|
||||||
|
|
||||||
ระบบนี้จะถูก Deploy ไปยัง:
|
| Technology | Description |
|
||||||
👉 **[https://opengis.softwarecraft.tech/](https://opengis.softwarecraft.tech/)**
|
|----------------|------------------------------------|
|
||||||
|
| ⚛️ React | Frontend JavaScript Framework |
|
||||||
⚠️ หมายเหตุ: ระบบยังอยู่ในระหว่างการพัฒนา อาจมีการเปลี่ยนแปลงในอนาคต
|
| 💨 TailwindCSS | Utility-first CSS Framework |
|
||||||
|
| 🖌️ DaisyUI | Component UI บนพื้นฐาน Tailwind |
|
||||||
|
| 🧠 Spring Boot | เฟรมเวิร์กที่ช่วยให้การพัฒนาแอปพลิเคชัน Java |
|
||||||
|
⚠️ หมายเหตุ: อยู่ระหว่างการพัฒนา จะมีการเพิ่ม Technology อื่น ๆ ในอนาคต
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🛠️ Development
|
## 🛠️ Development
|
||||||
|
|
||||||
### 1. ขั้นตอนสำหรับ Frontend
|
แนะนำให้ใช้ IDE เช่น IntelliJ IDEA หรือ VS Code เป็นต้น ในการพัฒนา
|
||||||
|
|
||||||
|
### 1. ขั้นตอนสำหรับการพัฒนา Frontend และ Employee Service บน Local
|
||||||
|
|
||||||
|
หากต้องการพัฒนา Frontend และ Employee Service แบบ local dev ไม่ต้องใช้ Docker ก็สามารถทำได้ตามขั้นตอนข้างล่าง
|
||||||
|
- ไฟล์ employee.js กำหนด BASE_URL เป็น "http://localhost:8080/api/employees"
|
||||||
|
- ไฟล์ application.yml กำหนด datasource url เป็น jdbc:postgresql://localhost:5432/employee_service
|
||||||
|
- ไฟล์ EmployeeController.java กำหนด @CrossOrigin("http://localhost:5174")
|
||||||
|
- รัน Docker Compose เฉพาะ Service ที่จำเป็น
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker compose up -d postgres pgadmin
|
||||||
|
```
|
||||||
|
|
||||||
|
- รัน Employee Service
|
||||||
|
- รัน Frontend
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
cd frontend
|
|
||||||
npm install
|
npm install
|
||||||
npm run dev
|
npm run dev
|
||||||
```
|
```
|
||||||
หากต้องการรันเฉพาะ frontend แบบ local dev ไม่ต้องใช้ Docker ก็สามารถทำได้ตามขั้นตอนข้างบน
|
|
||||||
|
|
||||||
### 2. ขั้นตอนสำหรับ Employee Service (Backend)
|
จากนั้นสามารถเข้าใช้งานที่
|
||||||
|
|
||||||
ต้องติดตั้ง JDK 21+ และ Maven
|
- Frontend: http://localhost:5174
|
||||||
|
|
||||||
``` bash
|
- Backend (Employee Service): http://localhost:8080/api/employees
|
||||||
cd employee-service
|
|
||||||
./mvnw spring-boot:run
|
|
||||||
```
|
|
||||||
แนะนำให้ใช้ IDE เช่น IntelliJ IDEA หรือ VS Code ในการพัฒนา
|
|
||||||
|
|
||||||
### 3. การทดสอบระบบแบบรวม (Frontend + Backend)
|
- PGAdmin: http://localhost:8180/
|
||||||
|
|
||||||
ใช้คำสั่งเดียวเพื่อรันทั้งระบบผ่าน Docker Compose
|
### 2. การทดสอบระบบแบบรวม (Frontend + Backend) ด้วย Docker Compose
|
||||||
|
|
||||||
|
- ไฟล์ employee.js กำหนด BASE_URL เป็น "/api/employees"
|
||||||
|
- ไฟล์ application.yml กำหนด datasource url เป็น jdbc:postgresql://ms_pg_sql:5432/employee_service
|
||||||
|
- ไฟล์ EmployeeController.java กำหนด @CrossOrigin("http://localhost")
|
||||||
|
- ใช้คำสั่งเดียวเพื่อรันทั้งระบบผ่าน Docker Compose
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
@ -77,4 +94,4 @@ docker compose up -d
|
|||||||
---
|
---
|
||||||
|
|
||||||
## 🤝 Contributing
|
## 🤝 Contributing
|
||||||
Pull requests welcome! หากมีคำแนะนำหรือข้อเสนอแนะ ยินดีรับฟังเสมอ 🙌
|
หากมีคำแนะนำหรือข้อเสนอแนะ ติดต่อที่ admin@softwarecraft.tech
|
||||||
@ -7,7 +7,7 @@ import tech.softwarecraft.employee_service.service.EmployeeService;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@CrossOrigin("http://localhost") // ถ้า nginx ทำ HTTPS จะเปลี่ยนตาม
|
@CrossOrigin("http://localhost:5174") // http://localhost กรณี docker compose, ถ้า nginx ทำ HTTPS จะเปลี่ยนตาม
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/api/employees")
|
@RequestMapping("/api/employees")
|
||||||
public class EmployeeController {
|
public class EmployeeController {
|
||||||
|
|||||||
@ -17,6 +17,9 @@ public class EmployeeService {
|
|||||||
|
|
||||||
// Create Employee
|
// Create Employee
|
||||||
public Employee createEmployee(Employee employee) {
|
public Employee createEmployee(Employee employee) {
|
||||||
|
if (employeeRepository.existsById(employee.getId())) {
|
||||||
|
throw new IllegalArgumentException("Employee with id " + employee.getId() + " already exists");
|
||||||
|
}
|
||||||
return employeeRepository.save(employee);
|
return employeeRepository.save(employee);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ spring:
|
|||||||
name: employee-service
|
name: employee-service
|
||||||
|
|
||||||
datasource:
|
datasource:
|
||||||
url: jdbc:postgresql://ms_pg_sql:5432/employee_service
|
url: jdbc:postgresql://localhost:5432/employee_service # ms_pg_sql ???? docker compose ???????
|
||||||
username: admin
|
username: admin
|
||||||
password: 123
|
password: 123
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
const BASE_URL = "/api/employees";
|
const BASE_URL = "http://localhost:8080/api/employees"; // /api/employees กรณี docker compose ทั้งหมด
|
||||||
|
|
||||||
export const getEmployees = async ()=>{
|
export const getEmployees = async ()=>{
|
||||||
try{
|
try{
|
||||||
@ -27,10 +27,10 @@ export const addEmployee = async (employee) =>{
|
|||||||
});
|
});
|
||||||
|
|
||||||
if(!response.ok){
|
if(!response.ok){
|
||||||
throw new Error("Fail to create employee");
|
throw new Error("Fail to create employee")
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = response.json();
|
const data = await response.json();
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
@ -53,7 +53,7 @@ export const updateEmployee = async (id, employee) => {
|
|||||||
throw new Error("Fail to update employee")
|
throw new Error("Fail to update employee")
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = response.json();
|
const data = await response.json();
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
@ -96,7 +96,7 @@ export const searchEmployees = async (keyword) => {
|
|||||||
throw new Error("Fail to search employees");
|
throw new Error("Fail to search employees");
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = response.json();
|
const data = await response.json();
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user