You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.1 KiB
97 lines
2.1 KiB
package controller
|
|
|
|
import (
|
|
"GoClouds/cloud/sysCloud"
|
|
"GoClouds/core/bean"
|
|
"GoClouds/core/comm"
|
|
"GoClouds/models"
|
|
"GoClouds/service/userService"
|
|
"encoding/json"
|
|
"fmt"
|
|
"github.com/go-macaron/cache"
|
|
gocloud "github.com/mgr9525/go-cloud"
|
|
ruisUtil "github.com/mgr9525/go-ruisutil"
|
|
"gopkg.in/macaron.v1"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
type UserController struct{}
|
|
|
|
func (e *UserController) GetPath() string {
|
|
return "/user"
|
|
}
|
|
func (e *UserController) Routes() {
|
|
gocloud.Web.Any("/info", e.info)
|
|
gocloud.Web.Any("/login", e.login)
|
|
}
|
|
func (e *UserController) Mid() []macaron.Handler {
|
|
return []macaron.Handler{gocloud.AccessAllowFun}
|
|
}
|
|
|
|
func (UserController) info(c *macaron.Context, ch cache.Cache, ctj gocloud.ContJSON) {
|
|
id := ctj.GetString("id")
|
|
if len(id) <= 0 {
|
|
c.PlainText(500, []byte("param err"))
|
|
return
|
|
}
|
|
|
|
e := &models.SysUser{}
|
|
key := fmt.Sprintf("uinfo:%s", id)
|
|
if ch.Get(key) != nil {
|
|
bts := ch.Get(key).([]byte)
|
|
err := json.Unmarshal(bts, e)
|
|
if err == nil {
|
|
c.JSON(200, e)
|
|
return
|
|
}
|
|
}
|
|
e = userService.FindXid(id)
|
|
bts, err := json.Marshal(e)
|
|
if err == nil {
|
|
ch.Put(key, bts, 3600*5)
|
|
}
|
|
c.JSON(200, e)
|
|
}
|
|
func (e *UserController) login(c *macaron.Context, ctj gocloud.ContJSON) {
|
|
name := ctj.GetString("name")
|
|
pass := ctj.GetString("pass")
|
|
if len(name) <= 0 {
|
|
c.PlainText(511, []byte("param err:name!"))
|
|
return
|
|
}
|
|
if len(pass) <= 0 {
|
|
c.PlainText(511, []byte("param err:pass!"))
|
|
return
|
|
}
|
|
|
|
ret := &bean.SysLogin{}
|
|
usr := userService.FindName(name)
|
|
if usr == nil {
|
|
ret.Errs = "未找到用户"
|
|
c.JSON(200, ret)
|
|
return
|
|
}
|
|
if len(usr.Xid) <= 0 {
|
|
usr.Xid = fmt.Sprintf("%d", usr.Id)
|
|
comm.DbSys.Cols("xid").Where("id=?", usr.Id).Update(usr)
|
|
}
|
|
if usr.Pass != strings.ToUpper(ruisUtil.Md5String(pass)) {
|
|
ret.Errs = "密码错误"
|
|
c.JSON(200, ret)
|
|
return
|
|
}
|
|
if !sysCloud.CheckPermission(usr.Xid, "login") {
|
|
c.PlainText(514, []byte("帐号禁止登录"))
|
|
return
|
|
}
|
|
|
|
usr.Logintm = time.Now()
|
|
comm.DbSys.Cols("logintm").Where("xid=?", usr.Xid).Update(usr)
|
|
|
|
ret.Stat = 1
|
|
ret.Uid = usr.Id
|
|
ret.Xid = usr.Xid
|
|
ret.Name = usr.Name
|
|
c.JSON(200, ret)
|
|
}
|