Selaa lähdekoodia

构建基本框架

tangs 7 vuotta sitten
vanhempi
commit
6f7cb9eb54

+ 2 - 0
src/config.conf

@@ -0,0 +1,2 @@
+db_url=user:password@tcp(localhost:5555)/dbname?charset=utf8
+listen_port=:8090

+ 3 - 3
src/ddpf/login/login.go

@@ -3,15 +3,15 @@ package login
 import (
 	"net/http"
 	"ddpf/response"
-	"github.com/Tangmz/tangs/log"
-	"ddpf/util"
+	"github.com/Tangmz/go-tool/log"
+	"github.com/Tangmz/go-tool/util"
 )
 
 func Login(w http.ResponseWriter, r *http.Request) {
 	var code int
 	var err error
 	var msg string
-	var data map[string]interface{}
+	var data util.Map
 	defer func() {
 		response.WriteResponse(w, code, msg, err, data)
 	}()

+ 59 - 0
src/ddpf/login/session.go

@@ -0,0 +1,59 @@
+package login
+
+import (
+	"net/http"
+	"github.com/tangs-drm/go-tool/log"
+	"github.com/tangs-drm/go-tool/util"
+	"strings"
+)
+
+type FilterFunc func(args util.Map) error
+
+type Filter struct {
+	FilterMap map[string]FilterFunc
+}
+
+func NewFilter() {
+	filter := &Filter{}
+	filter.DefaultFilter()
+}
+
+func (ft *Filter) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+	cookie, err := r.Cookie("session")
+	if err != nil || cookie == nil {
+		cookie = &http.Cookie{}
+	}
+	path  := r.URL.Path
+
+	return
+}
+
+func (ft *Filter) getFilterFunc(path string) FilterFunc {
+	for key := range ft.FilterMap {
+		if strings.HasPrefix(key, path) {
+			return ft.FilterMap[key]
+		}
+	}
+	return nil
+}
+
+func (ft *Filter) Filter(router string, FilterFunc) {
+}
+
+func (ft *Filter) Print() {
+	log.Debug("Filter Print ---- ")
+	for key, _ := range ft.FilterMap {
+		log.Debug("-----> %v", key)
+	}
+}
+
+func (ft *Filter) DefaultFilter() {
+	var usrFilter FilterFunc = func() error {
+		return nil
+	}
+	ft.Filter("/usr", usrFilter)
+}
+
+func (ft *Filter) FindUser() {
+
+}

+ 16 - 0
src/ddpf/login/session_test.go

@@ -0,0 +1,16 @@
+package login
+
+import "testing"
+
+func TestSession(t *testing.T) {
+	type testFunc func() error
+
+	var tf testFunc = func() error {
+		return nil
+	}
+	if tf == nil {
+		t.Error(nil)
+		return
+	}
+	return
+}

+ 4 - 1
src/ddpf/model/dbm/dbm.go

@@ -1,5 +1,8 @@
 package dbm
 
-func Open() {
+import "github.com/tangs-drm/go-tool/dbm"
 
+func Db() *dbm.DB {
+	return dbm.DbMangerV.Db()
 }
+

+ 10 - 0
src/ddpf/model/session/items.go

@@ -0,0 +1,10 @@
+package session
+
+
+// Session 表
+type Session struct {
+	Id string `json:"id"` 		// session id
+	Uid string `json:"uid"`		// 用户id
+	Time int64 `json:"time"`	// 创建时间
+	LastTime int64 `json:"lastTime"` // 最后一次更新时间
+}

+ 21 - 0
src/ddpf/model/session/session.go

@@ -0,0 +1,21 @@
+package session
+
+import (
+	"ddpf/model/dbm"
+	"github.com/tangs-drm/go-tool/util"
+)
+
+// CreateSession create user session
+// 没有uid最多同时5个地方登陆
+func CreateSession(uid string) (*Session, error) {
+	sess := &Session{
+		Id:"",
+		Uid:uid,
+		Time:util.
+	}
+	var sqlString string = "INSERT INTO SESSION(ID,UID,TIME,LASTTIME) VALUE(?,?,?,?);"
+	stmt, err := dbm.Db().Prepare(sqlString)
+	if err != nil {
+		return nil, err
+	}
+}

+ 2 - 1
src/ddpf/model/user/items.go

@@ -14,6 +14,7 @@ const (
 	DDPF_TEACHER									//9. 教师
 )
 
+// 用户表
 type User struct  {
 	Id string `json:"id"`		// 用户id
 	Name string `json:"name"`	// 用户名
@@ -23,4 +24,4 @@ type User struct  {
 	Time int64 `json:"time"`	// 创建时间
 	College string `json:"college"` // 所在学院
 	Attrs map[string]interface{} // 其他属性
-}
+}

+ 4 - 4
src/ddpf/response/items.go

@@ -2,18 +2,18 @@ package response
 
 import (
 	"net/http"
-	"ddpf/util"
+	"github.com/Tangmz/go-tool/util"
 )
 
 type Response struct {
 	Code int `json:"code"`
 	Message string `json:"message,omitempty"`
 	Error string `json:"error,omitempty"`
-	Data map[string]interface{} `json:"data,omitempty"`
+	Data util.Map `json:"data,omitempty"`
 }
 
 // WriteResponse write data to http.ResponseWriter
-func WriteResponse(w http.ResponseWriter, code int, msg string, err error, data map[string]interface{}) (int, error) {
+func WriteResponse(w http.ResponseWriter, code int, msg string, err error, data util.Map) (int, error) {
 	var resp = Response{
 		Code:code,
 	}
@@ -37,6 +37,6 @@ func WriteResponseError(w http.ResponseWriter, code int, msg string, err error)
 }
 
 // WriteResponseSuccess write return value to http.ResponseWriter if http request succeed
-func WriteResponseSuccess(w http.ResponseWriter, data map[string]interface{}) {
+func WriteResponseSuccess(w http.ResponseWriter, data util.Map) (int, error) {
 	return WriteResponse(w, 0, "", nil, data)
 }

+ 0 - 10
src/ddpf/util/error.go

@@ -1,10 +0,0 @@
-package util
-
-import (
-	"errors"
-	"fmt"
-)
-
-func Error(format string, args... interface{}) error {
-	return errors.New(fmt.Sprintf(format, args...))
-}

+ 0 - 14
src/ddpf/util/trans.go

@@ -1,14 +0,0 @@
-package util
-
-import "encoding/json"
-
-// S2Json trans data to json, e.g struct, map and so on.
-func S2Json(data interface{}) string {
-	bys, _ := json.Marshal(data)
-	return string(bys)
-}
-
-// Json2S trans json to object
-func Json2S(src string, dest interface{}) error {
-	return json.Unmarshal([]byte(src), dest)
-}

+ 0 - 1
src/github.com/Tangmz/tangs

@@ -1 +0,0 @@
-Subproject commit 045349c71386dc886c6728f82f4ba5cbef4bde37

+ 1 - 0
src/github.com/tangs-drm/go-tool

@@ -0,0 +1 @@
+Subproject commit 07fa5378f3aeb70d41e12dc79ebe9da34ced36da

+ 35 - 0
src/main.go

@@ -1,5 +1,40 @@
 package main
 
+import (
+	"net/http"
+	"github.com/tangs-drm/go-tool/config"
+	"github.com/tangs-drm/go-tool/log"
+	"github.com/tangs-drm/go-tool/dbm"
+	_ "github.com/go-sql-driver/mysql"
+	"fmt"
+)
+
 func main() {
+	var err error
+
+	// 初始化配置文件
+	var conf = "config.conf"
+	var config = config.NewConfig()
+	err = config.Config(conf)
+	if err != nil {
+		fmt.Println(err)
+		log.Error("main read config with conf(%v) error ->(%v)", conf, err)
+		return
+	}
+	config.Print()
+
+	// 初始化数据库
+	var db_url = config.String("db_url")
+	_, err = dbm.Default(db_url)
+	if err != nil {
+		fmt.Println(err)
+		log.Error("main init db by url(%v) error ->(%v)", db_url, err)
+		return
+	}
+	log.Debug("main init db success")
+
+	var port = config.String("listen_port")
+	log.Debug("main start listen on port", port)
 
+	http.ListenAndServe(port, nil)
 }