init: create project
This commit is contained in:
87
server/service/handler.go
Normal file
87
server/service/handler.go
Normal file
@ -0,0 +1,87 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
type QueryResponse struct {
|
||||
Names []string `json:"names"`
|
||||
Nicknames []string `json:"nicknames"`
|
||||
PhoneNumbers []string `json:"phone_numbers"`
|
||||
IDNumbers []string `json:"id_numbers"`
|
||||
QQNumbers []string `json:"qq_numbers"`
|
||||
Passwords []string `json:"passwords"`
|
||||
Emails []string `json:"emails"`
|
||||
Addresses []string `json:"addresses"`
|
||||
}
|
||||
|
||||
func NewQueryResponse() *QueryResponse {
|
||||
return &QueryResponse{
|
||||
Names: make([]string, 0),
|
||||
Nicknames: make([]string, 0),
|
||||
PhoneNumbers: make([]string, 0),
|
||||
IDNumbers: make([]string, 0),
|
||||
QQNumbers: make([]string, 0),
|
||||
Passwords: make([]string, 0),
|
||||
Emails: make([]string, 0),
|
||||
Addresses: make([]string, 0),
|
||||
}
|
||||
}
|
||||
|
||||
func (svc *Service) queryHandlerFunc(ctx echo.Context) error {
|
||||
value := ctx.QueryParam("value")
|
||||
if value == "" {
|
||||
return InvalidParameterError
|
||||
}
|
||||
result := NewQueryResult()
|
||||
types := whatType(value)
|
||||
for _, t := range types {
|
||||
switch value := t.(type) {
|
||||
case QQNumber:
|
||||
result.addQQNumber(int64(value))
|
||||
case PhoneNumber:
|
||||
result.addPhoneNumber(int64(value))
|
||||
case Email:
|
||||
result.addEmail(string(value))
|
||||
case IDNumber:
|
||||
result.addIDNumber(string(value))
|
||||
}
|
||||
}
|
||||
ok := false
|
||||
for !ok {
|
||||
for qqNumber, checked := range result.QQNumbers {
|
||||
if !checked {
|
||||
if err := result.queryQQNumber(svc.databases, int64(qqNumber)); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
continue
|
||||
}
|
||||
for phoneNumber, checked := range result.PhoneNumbers {
|
||||
if !checked {
|
||||
if err := result.queryPhoneNumber(svc.databases, int64(phoneNumber)); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
continue
|
||||
}
|
||||
for idNumber, checked := range result.IDNumbers {
|
||||
if !checked {
|
||||
if err := result.queryIDNumber(svc.databases, string(idNumber)); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
continue
|
||||
}
|
||||
for email, checked := range result.Emails {
|
||||
if !checked {
|
||||
if err := result.queryEmail(svc.databases, string(email)); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
continue
|
||||
}
|
||||
ok = true
|
||||
}
|
||||
return NewResponse(ctx, nil, result.Build(svc.config.Mask))
|
||||
}
|
Reference in New Issue
Block a user