프로젝트 제목 : 온라인 주문 시스템
프로젝트 내용 : Golang과 mongodb를 이용하여 온라인 주문 시스템의 Backend API 개발
①주문자/피주문자의 역할에 필수적인 기능을 구현
②주문자와 피주문자의 입장에서 필요한 기능을 도출하여 주문 서비스 기능을 구현
③주문부터 배달까지 주문내역 관리 서비스 기능을 구현
📦go-ordering
┣ 📂conf
┃ ┣ 📜config.go
┃ ┗ 📜config.toml
┣ 📂controller
┃ ┣ 📜controller.go
┃ ┗ 📜controllerConvParams.go
┣ 📂docs
┃ ┣ 📜docs.go
┃ ┣ 📜swagger.json
┃ ┗ 📜swagger.yaml
┣ 📂logger
┃ ┗ 📜logger.go
┣ 📂logs
┃ ┗ 📜go-loger_2022-12-25.log
┣ 📂model
┃ ┣ 📜model.go
┃ ┣ 📜modelDataCheck.go
┃ ┗ 📜modelStruct.go
┣ 📂router
┃ ┗ 📜router.go
┣ 📜go.mod
┣ 📜go.sum
┗ 📜main.go
#gin
$ go get "github.com/gin-gonic/gin"
#errorgroup
$ go mod download golang.org/x/sync
#mongodb
$ go get go.mongodb.org/mongo-driver/mongo
$ go get go.mongodb.org/mongo-driver/mongo/options
$ go get go.mongodb.org/mongo-driver/bson
#swagger
$ go get -u github.com/swaggo/swag/cmd/swag
$ go install github.com/swaggo/swag/cmd/swag@latest
$ go get -u github.com/swaggo/gin-swagger
$ go get -u github.com/swaggo/files
#toml
$ go get "github.com/naoina/toml"
#log
$ go get "github.com/natefinch/lumberjack"
$ go get "go.uber.org/zap"
$ go get "go.uber.org/zap/zapcore"
#uuid
$ go get github.com/google/uuid
#validator
$ get github.com/go-playground/validator
tOrdererMenuLink에 MenuID 속성을 추가하여 tMenu와 링크 관리
db.tUserAccount.insertMany([{userID:"LEE",userName:"이철수",userType:"판매자"}
,{userID:"KIM",userName:"김영희",userType:"주문자"}])
type Menu struct {
MenuID string `bson:"menuID"` //메뉴 ID
SellerID string `bson:"sellerID"` //판매자 ID
SellerName string `bson:"sellerName"` //판매자 이름
MenuName string `bson:"menuName"` //메뉴 이름
Status string `bson:"status"` //주문 가능 상태 nums(준비중, 판매중)
MaxCount int `bson:"maxCount" validate:"min=1,max=50"` //판매 가능 갯수 mininum(1) maxinum(50)
CountryOf string `bson:"countryOf"` //원산지 Enums(한국, 일본, 중국)
Price int `bson:"price"` //가격
Spicy string `bson:"spicy"` //맵기 Enums(아주매움, 매움, 보통, 순한맛)
Popularity int `bson:"popularity" validate:"min=1,max=5"` //인기도 mininum(1) maxinum(5)
IsRecommeded bool `bson:"isRecommeded"` //판매여부 default(true)
IsTdoayMenu bool `bson:"isTdoayMenu"` //오늘의 추천메뉴 여부 default(false)
Category []string `bson:"category"` //메뉴 카테고리 Enums(한식, 일식, 중식)
}
type OrdererMenuLink struct {
OrderNo string `bson:"orderNo"` //주문번호
SellerID string `bson:"sellerID"` //판매자 ID
MenuID string `bson:"menuID"` //메뉴 ID
OrdererID string `bson:"ordererID"` //주문자ID
MenuName string `bson:"menuName"` //메뉴이름
OrderStarGrade int `bson:"orderStarGrade" validate:"min=1,max=5"` //평점 mininum(1) maxinum(5)
OrderComment string `bson:"ordercomment"` //후기
OrderStatus string `bson:"orderStatus"` //주문상태 Enums(주문확인중 - 조리중 - 배달중 - 배달완료 - 주문취소)
OrdererAddress string `bson:"ordererAddress"` //주문자 주소
OrdererPhone int `bson:"ordererPhone"` //주문자 폰번호
}
type UserAccount struct {
UserID string `bson:"userID"` //주문자 ID
UserName string `bson:"userName"` //주문자 이름
UserType string `bson:"userType"` //판매자, 주문자 nums(판매자, 주문자)
Address string `bson:"address"` //주문자 주소
Phone int `bson:"phone"` //주문자 폰번호
OrderCount int `bson:"orderCount"` //주문 숫자
SellCount int `bson:"sellCount"` //주문 숫자
}
/oos/seller/menu [POST] // @Description 메뉴 등록 - 피주문자
/oos/seller/menu{menuID} [PUT] // @Description 메뉴 수정 - 피주문자 (메뉴ID를 기준으로 메뉴 업데이트)
/oos/seller/menu [DELETE] // @Description 메뉴 삭제 - 피주문자 (판매여부 bool 설정변경)
/oos/seller/menu [GET] // @Description 메뉴 검색 - 주문자, 피주문자
/oos/seller/orderStatus // @Description 주문 내역 조회 - 피주문자 (판매자ID 기준으로 검색)
/oos/seller/setTodayMenu // @Description 오늘의 추천메뉴 여부 - 설정 변경 (메뉴ID를 기준으로 메뉴 업데이트)
/oos/order/viewMenu // @Description 주문 상세 - 주문자, 피주문자
/oos/order/newOrder // @Description 주문 등록 - 주문자
/oos/order/changeOrder // @Description 주문 변경 - 주문자 (주문변경 커멘드 Enums(주문추가, 주문취소, 정보변경))
/oos/order/searchOrder // @Description 주문 내역 조회 기능 - 주문자 (주문자ID, 주문상태로 조회)
/oos/order/viewOrder // @Description 주문 상세 - 주문자, 피주문자
/oos/order/createReview // @Description 리뷰 등록 - 주문자 (주문번호 기준으로 등록
/oos/order/searchTodayMenu // @Description 오늘의 추천메뉴 리스트
{
"category": ["한식","중식"],
"countryOf": "대한민국",
"isRecommeded": true,
"maxCount": 20,
"menuName": "마라탕면",
"price": 9000,
"sellerID": "LEE",
"sellerName": "리반점",
"spicy": "보통",
"status": "판매중",
"isTdoayMenu": true
}
"menuID": "ee097877-2878-43da-b312-f72f4a233089"
{
"category": ["일식","중식"],
"countryOf": "중국",
"popularity" : 4,
"maxCount" : 20,
"isRecommeded": true
}
"menuID": "ee097877-2878-43da-b312-f72f4a233089"
"isRecommeded": true
{
"todayMenu": true,
"menuID": "ee097877-2878-43da-b312-f72f4a233089"
}
{
"menuID": "ee097877-2878-43da-b312-f72f4a233089",
"ordererID": "KIM",
"ordererAddress": "서울시 광진구",
"ordererPhone": 1012345678
}
{
"changeOrderCmd": "정보변경",
"orderNo": "5ca65c501bc8409ca92a2a9496170943",
"ordererAddress": "서울시 서초구",
"ordererPhone": 1043719999
}
{
"orderComment": "맛있습니다.",
"orderNo": "5ca65c501bc8409ca92a2a9496170943",
"orderStarGrade": 5,
"ordererID" : "KIM"
}


























