Skip to content

Commit

Permalink
[support] #70 [fix] #34 (support処理の修正)
Browse files Browse the repository at this point in the history
  • Loading branch information
yoneyan committed Mar 18, 2021
1 parent 800da59 commit 438be37
Show file tree
Hide file tree
Showing 10 changed files with 167 additions and 115 deletions.
2 changes: 1 addition & 1 deletion pkg/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ func UserRestAPI() {
// Support
//
v1.POST("/support", ticket.Create)
v1.GET("/support", ticket.GetTitle)
v1.GET("/support", ticket.GetAll)
v1.POST("/support/:id", chat.Add)
v1.GET("/support/:id", ticket.Get)
//
Expand Down
1 change: 1 addition & 0 deletions pkg/api/core/controller/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ type Chat struct {
Err string `json:"error"`
CreatedAt time.Time `json:"created_at"`
UserID uint `json:"user_id"`
UserName string `json:"user_name"`
GroupID uint `json:"group_id"`
Admin bool `json:"admin"`
Message string `json:"message"`
Expand Down
1 change: 1 addition & 0 deletions pkg/api/core/controller/v0/admin.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ func SendChatAdmin(data controller.Chat) {
Err: data.Err,
CreatedAt: data.CreatedAt,
UserID: data.UserID,
UserName: data.UserName,
GroupID: data.GroupID,
Admin: data.Admin,
Message: data.Message,
Expand Down
3 changes: 3 additions & 0 deletions pkg/api/core/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,8 @@ type Ticket struct {
Chat []Chat `json:"chat"`
Solved *bool `json:"solved"`
Title string `json:"title"`
Group Group `json:"group"`
User User `json:"user"`
}

type Chat struct {
Expand All @@ -260,6 +262,7 @@ type Chat struct {
UserID uint `json:"user_id"`
Admin bool `json:"admin"`
Data string `json:"data" gorm:"size:65535"`
User User `json:"user"`
}

type Token struct {
Expand Down
6 changes: 3 additions & 3 deletions pkg/api/core/support/chat/v0/chat.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,19 +58,19 @@ func Add(c *gin.Context) {
return
}
// 問題解決時はここでエラーを返す
if *resultTicket.Ticket[0].Solved {
if *resultTicket.Tickets[0].Solved {
c.JSON(http.StatusInternalServerError, common.Error{Error: "This problem is closed..."})
return
}
// GroupIDが一致しない場合はここでエラーを返す
if resultTicket.Ticket[0].GroupID != result.Group.ID {
if resultTicket.Tickets[0].GroupID != result.Group.ID {
c.JSON(http.StatusInternalServerError, common.Error{Error: "Auth Error: group id failed..."})
return
}

// Chat DBに登録
resultChat, err := dbChat.Create(&core.Chat{
TicketID: resultTicket.Ticket[0].ID,
TicketID: resultTicket.Tickets[0].ID,
UserID: result.User.ID,
Admin: false,
Data: input.Data,
Expand Down
17 changes: 10 additions & 7 deletions pkg/api/core/support/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,26 @@ type WebSocketResult struct {
UserToken string `json:"user_token"`
AccessToken string `json:"access_token"`
UserID uint `json:"user_id"`
UserName string `json:"user_name"`
GroupID uint `json:"group_id"`
Admin bool `json:"admin"`
Message string `json:"message"`
}

type WebSocketChatResponse struct {
CreatedAt time.Time `json:"created_at"`
UserID uint `json:"user_id"`
GroupID uint `json:"group_id"`
Admin bool `json:"admin"`
Message string `json:"message"`
Time string `json:"time"`
UserID uint `json:"user_id"`
UserName string `json:"username"`
GroupID uint `json:"group_id"`
Admin bool `json:"admin"`
Message string `json:"message"`
}

type WebSocket struct {
TicketID uint
GroupID uint
UserID uint
UserName string
Admin bool
Socket *websocket.Conn
}
Expand All @@ -49,6 +52,6 @@ type FirstInput struct {
}

type Result struct {
Ticket []core.Ticket `json:"support_ticket"`
Chat []core.Chat `json:"support_chat"`
Ticket []core.Ticket `json:"ticket"`
Chat []core.Chat `json:"chat"`
}
51 changes: 34 additions & 17 deletions pkg/api/core/support/ticket/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package ticket
import (
"github.com/gorilla/websocket"
"github.com/homenoc/dsbd-backend/pkg/api/core"
"github.com/jinzhu/gorm"
"net/http"
)

Expand All @@ -16,27 +15,45 @@ const (

//#4 Issue(解決済み)

type AdminAllResult struct {
Ticket []AdminResult `json:"ticket"`
type Ticket struct {
ID uint `json:"id"`
Time string `json:"time"`
GroupID uint `json:"group_id"`
UserID uint `json:"user_id"`
Chat []Chat `json:"chat"`
Solved *bool `json:"solved"`
Title string `json:"title"`
UserName string `json:"username"`
}

type AdminResult struct {
gorm.Model
Status bool `json:"status"`
Error string `json:"error"`
GroupID uint `json:"group_id"`
GroupName string `json:"group_name"`
UserID uint `json:"user_id"`
UserName string `json:"user_name"`
ChatIDStart uint `json:"chat_id_start"`
ChatIDEnd uint `json:"chat_id_end"`
Solved *bool `json:"solved"`
Title string `json:"title"`
type Chat struct {
Time string `json:"time"`
TicketID uint `json:"ticket_id"`
UserID uint `json:"user_id"`
UserName string `json:"username"`
Admin bool `json:"admin"`
Data string `json:"data"`
}

type Result struct {
Ticket Ticket `json:"tickets"`
}

type ResultAll struct {
Tickets []Ticket `json:"tickets"`
}

type ResultTicketAll struct {
Tickets []Ticket `json:"tickets"`
}

type ResultAdminAll struct {
Tickets []core.Ticket `json:"tickets"`
}

type ResultDatabase struct {
Err error
Ticket []core.Ticket
Err error
Tickets []core.Ticket
}

var WsUpgrader = websocket.Upgrader{
Expand Down
73 changes: 24 additions & 49 deletions pkg/api/core/support/ticket/v0/admin.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,10 @@ import (
"github.com/homenoc/dsbd-backend/pkg/api/core/common"
controllerInterface "github.com/homenoc/dsbd-backend/pkg/api/core/controller"
controller "github.com/homenoc/dsbd-backend/pkg/api/core/controller/v0"
"github.com/homenoc/dsbd-backend/pkg/api/core/group"
"github.com/homenoc/dsbd-backend/pkg/api/core/support"
"github.com/homenoc/dsbd-backend/pkg/api/core/support/chat"
"github.com/homenoc/dsbd-backend/pkg/api/core/support/ticket"
"github.com/homenoc/dsbd-backend/pkg/api/core/tool/mail"
"github.com/homenoc/dsbd-backend/pkg/api/core/user"
dbGroup "github.com/homenoc/dsbd-backend/pkg/api/store/group/v0"
dbChat "github.com/homenoc/dsbd-backend/pkg/api/store/support/chat/v0"
dbTicket "github.com/homenoc/dsbd-backend/pkg/api/store/support/ticket/v0"
dbUser "github.com/homenoc/dsbd-backend/pkg/api/store/user/v0"
Expand Down Expand Up @@ -49,7 +46,7 @@ func CreateAdmin(c *gin.Context) {
return
}

// Ticket DBに登録
// Tickets DBに登録
ticketResult, err := dbTicket.Create(&core.Ticket{
GroupID: input.GroupID,
UserID: 0,
Expand Down Expand Up @@ -101,15 +98,15 @@ func UpdateAdmin(c *gin.Context) {
return
}

// Ticket DBからデータを取得
// Tickets DBからデータを取得
ticketResult := dbTicket.Get(ticket.ID, &core.Ticket{Model: gorm.Model{ID: uint(id)}})
if ticketResult.Err != nil {
c.JSON(http.StatusInternalServerError, common.Error{Error: ticketResult.Err.Error()})
return
}

// input check
replace, err := updateAdminTicket(input, ticketResult.Ticket[0])
replace, err := updateAdminTicket(input, ticketResult.Tickets[0])
if err != nil {
c.JSON(http.StatusInternalServerError, common.Error{Error: err.Error()})
return
Expand Down Expand Up @@ -144,15 +141,7 @@ func GetAdmin(c *gin.Context) {
c.JSON(http.StatusInternalServerError, common.Error{Error: resultTicket.Err.Error()})
return
}

// Ticket DBからTicket IDのTicketデータを抽出
// このとき、データはIDの昇順で出力
resultChat := dbChat.Get(chat.TicketID, &core.Chat{TicketID: resultTicket.Ticket[0].ID})
if resultChat.Err != nil {
c.JSON(http.StatusInternalServerError, common.Error{Error: resultTicket.Err.Error()})
return
}
c.JSON(http.StatusOK, support.Result{Ticket: resultTicket.Ticket, Chat: resultChat.Chat})
c.JSON(http.StatusOK, support.Result{Ticket: resultTicket.Tickets})
}

func GetAllAdmin(c *gin.Context) {
Expand All @@ -163,33 +152,14 @@ func GetAllAdmin(c *gin.Context) {
return
}

// Ticket DBからGroup IDのTicketデータを抽出
// Tickets DBからGroup IDのTicketデータを抽出
resultTicket := dbTicket.GetAll()
if resultTicket.Err != nil {
c.JSON(http.StatusInternalServerError, common.Error{Error: resultTicket.Err.Error()})
return
}

var ticketResponse []ticket.AdminResult

for _, tmp := range resultTicket.Ticket {
//user名検索
tmpUserResult := dbUser.Get(user.ID, &core.User{Model: gorm.Model{ID: tmp.UserID}})
//group名検索
tmpGroupResult := dbGroup.Get(group.ID, &core.Group{Model: gorm.Model{ID: tmp.GroupID}})

ticketResponse = append(ticketResponse, ticket.AdminResult{
Model: tmp.Model,
GroupID: tmp.GroupID,
GroupName: tmpGroupResult.Group[0].Org,
UserID: tmp.UserID,
UserName: tmpUserResult.User[0].Name,
Solved: tmp.Solved,
Title: tmp.Title,
})
}

c.JSON(http.StatusOK, ticket.AdminAllResult{Ticket: ticketResponse})
c.JSON(http.StatusOK, ticket.ResultAdminAll{Tickets: resultTicket.Tickets})
}

func GetAdminWebSocket(c *gin.Context) {
Expand Down Expand Up @@ -231,7 +201,8 @@ func GetAdminWebSocket(c *gin.Context) {
support.Clients[&support.WebSocket{
TicketID: uint(id),
UserID: resultAdmin.AdminID,
GroupID: ticketResult.Ticket[0].GroupID,
UserName: "HomeNOC",
GroupID: ticketResult.Tickets[0].GroupID,
Socket: conn,
}] = true

Expand All @@ -244,14 +215,15 @@ func GetAdminWebSocket(c *gin.Context) {
delete(support.Clients, &support.WebSocket{
TicketID: uint(id),
UserID: resultAdmin.AdminID,
GroupID: ticketResult.Ticket[0].GroupID,
UserName: "HomeNOC(運営)",
GroupID: ticketResult.Tickets[0].GroupID,
Socket: conn,
})
break
}

_, err = dbChat.Create(&core.Chat{
TicketID: ticketResult.Ticket[0].ID,
TicketID: ticketResult.Tickets[0].ID,
UserID: resultAdmin.AdminID,
Admin: true,
Data: msg.Message,
Expand All @@ -260,7 +232,8 @@ func GetAdminWebSocket(c *gin.Context) {
conn.WriteJSON(&support.WebSocketResult{Err: "db write error"})
} else {
msg.UserID = resultAdmin.AdminID
msg.GroupID = ticketResult.Ticket[0].GroupID
msg.GroupID = ticketResult.Tickets[0].GroupID
msg.UserName = "HomeNOC(運営)"
msg.Admin = true
// Token関連の初期化
msg.AccessToken = ""
Expand All @@ -271,17 +244,18 @@ func GetAdminWebSocket(c *gin.Context) {
CreatedAt: msg.CreatedAt,
Admin: msg.Admin,
UserID: resultAdmin.AdminID,
GroupID: ticketResult.Ticket[0].GroupID,
UserName: msg.UserName,
GroupID: ticketResult.Tickets[0].GroupID,
Message: msg.Message,
})

resultTicket := dbTicket.Get(ticket.ID, &core.Ticket{Model: gorm.Model{ID: ticketResult.Ticket[0].ID}})
resultTicket := dbTicket.Get(ticket.ID, &core.Ticket{Model: gorm.Model{ID: ticketResult.Tickets[0].ID}})
if resultTicket.Err != nil {
log.Println(resultTicket.Err)
}
if len(resultTicket.Ticket) != 0 {
if len(resultTicket.Tickets) != 0 {
resultUser := dbUser.Get(user.GIDAndLevel, &core.User{
GroupID: resultTicket.Ticket[0].GroupID,
GroupID: resultTicket.Tickets[0].GroupID,
Level: 1,
})
if resultUser.Err != nil {
Expand Down Expand Up @@ -315,11 +289,12 @@ func HandleMessagesAdmin() {
return
} else if client.GroupID == msg.GroupID {
err := client.Socket.WriteJSON(support.WebSocketChatResponse{
CreatedAt: time.Now(),
UserID: msg.UserID,
GroupID: msg.GroupID,
Admin: msg.Admin,
Message: msg.Message,
Time: time.Now().UTC().Add(9 * time.Hour).Format(timeLayout),
UserID: msg.UserID,
UserName: msg.UserName,
GroupID: msg.GroupID,
Admin: msg.Admin,
Message: msg.Message,
})
if err != nil {
log.Printf("error: %v", err)
Expand Down
Loading

0 comments on commit 438be37

Please sign in to comment.