Feat: 登录接口实现
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2022-04-09 11:48:44 +08:00
parent 0df2aaa82f
commit 35801f5ee9
13 changed files with 160 additions and 39 deletions

27
pkg/model/login.go Normal file
View File

@@ -0,0 +1,27 @@
package model
import (
"drive-linked/pkg/dao"
"fmt"
)
const (
LoginMethodName = "name"
LoginMethodEmail = "email"
)
type Login struct {
ID int64
Name string
Password string
}
func (u *Login) GetLoginInfo(account, method string) error {
exec := fmt.Sprintf(`SELECT id, name, password FROM users WHERE %s=?`, method)
err := dao.DB.Get(u, exec, account)
if err != nil {
return err
}
return nil
}

39
pkg/model/user.go Normal file
View File

@@ -0,0 +1,39 @@
package model
import (
"drive-linked/pkg/dao"
"fmt"
"github.com/jmoiron/sqlx"
"strings"
)
type User struct {
ID int64 `json:"id,string"`
Name string `json:"name"`
Nickname string `json:"nickname"`
Email string `json:"email"`
Password string `json:"-"`
Status int32 `json:"status"`
Avatar string `json:"avatar"`
Roles string `json:"roles"`
}
func (user *User) GetProfileWithConditions(conditions *map[string]interface{}) error {
// 支持多条件查询
//TODO:分离多条件查询部分,有利于代码复用
var where []string
var values []interface{}
for k, v := range *conditions {
values = append(values, v)
where = append(where, fmt.Sprintf(`"%s" = %s`, k, "?"))
}
exec := sqlx.Rebind(sqlx.QUESTION, "SELECT * FROM users WHERE "+strings.Join(where, "AND")+" LIMIT 1")
err := dao.DB.Get(user, exec, values...)
if err != nil {
return err
}
return nil
}

22
pkg/model/user_test.go Normal file
View File

@@ -0,0 +1,22 @@
package model
import (
"drive-linked/pkg/dao"
"testing"
)
func TestUser_GetWithConditions(t *testing.T) {
dao.Conn()
var user User
// 存在的用户
conditions := &map[string]interface{}{
"name": "eigeen",
"email": "375109735@qq.com",
}
err := user.GetProfileWithConditions(conditions)
if err != nil {
t.Error(err)
}
t.Log(user)
}