|
|
@@ -1,10 +1,16 @@
|
|
|
-
|
|
|
package controllers
|
|
|
|
|
|
import (
|
|
|
- sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
|
|
|
"fmt"
|
|
|
+ "strconv"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+
|
|
|
+ "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
|
|
|
+ sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
|
|
|
+ "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
|
|
|
)
|
|
|
+
|
|
|
//https://www.kancloud.cn/xormplus/xorm/167077
|
|
|
|
|
|
// _Login
|
|
|
@@ -19,13 +25,45 @@ func System_Login(c *SystemController) {
|
|
|
__none_func_system__(logininfo)
|
|
|
fmt.Println(logininfo)
|
|
|
var user sysmodel.SysUser
|
|
|
- ret, err:=c.Db.SQL(sysmodel.SqlUserLogin, logininfo.Account).Get(&user)
|
|
|
- if ret && err ==nil{
|
|
|
+ ret, err := c.Db.SQL(sysmodel.SqlUserLogin, logininfo.Account).Get(&user)
|
|
|
+ if ret && err == nil {
|
|
|
//TODO check password
|
|
|
+ timestamp := uint64(time.Now().UnixNano())
|
|
|
+ md5Pwd := utils.HashPassword(logininfo.Password, "")
|
|
|
+
|
|
|
+ //密码错误
|
|
|
+ if !strings.EqualFold(user.Password, md5Pwd) {
|
|
|
+ c.Ctx.JSON(200, sysmodel.SysReturn{400, "passowrd incorrect!", nil})
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
- data:=sysmodel.LoginReturnInfo{user.Id,user.LoginId,user.Id}
|
|
|
+ token := &entitys.Token{}
|
|
|
+ if v := utils.GlobalTokenStore.Get(logininfo.Account + user.Domain); v == nil {
|
|
|
+ timestamp_str := strconv.FormatUint(timestamp, 10)
|
|
|
+ sec_tooken := utils.GenerateToken(logininfo.Account + timestamp_str)
|
|
|
+ token.AccessToken = sec_tooken
|
|
|
+ token.RefreshToken = sec_tooken
|
|
|
+ token.LoginID = logininfo.Account
|
|
|
+ token.UserId = user.Id
|
|
|
+ token.Result = 200
|
|
|
+ //token.Password = pwd
|
|
|
+ token.ServerIp = ""
|
|
|
+ token.Domain = user.Domain
|
|
|
+ utils.GlobalTokenStore.Set(sec_tooken, token)
|
|
|
+
|
|
|
+ //设置session
|
|
|
+ //fmt.Println("----------set token ----------", token.AccessToken)
|
|
|
+ //session := sessions.Default(c.Ctx)
|
|
|
+ //session.Set("token", token.AccessToken)
|
|
|
+ //session.Save()
|
|
|
+
|
|
|
+ } else {
|
|
|
+ token = v
|
|
|
+ }
|
|
|
+
|
|
|
+ data := sysmodel.LoginReturnInfo{user.Id, user.LoginId, token.AccessToken}
|
|
|
c.Ctx.JSON(200, sysmodel.SysReturn{200, "", data})
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
//fmt.Println(err.Error())
|
|
|
c.Ctx.JSON(200, sysmodel.SysReturn{400, "username or passowrd incorrect!", nil})
|
|
|
}
|
|
|
@@ -39,15 +77,18 @@ func System_Login(c *SystemController) {
|
|
|
// @Failure 403 :id is empty
|
|
|
func System_Logout(c *SystemController) {
|
|
|
|
|
|
+ token := c.Ctx.GetHeader("token")
|
|
|
+ fmt.Println("delete token: ", token)
|
|
|
+ utils.GlobalTokenStore.Remove(token)
|
|
|
+
|
|
|
ret := __none_func_system__()
|
|
|
if ret {
|
|
|
c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// _GetMenuTree
|
|
|
// @Title _GetMenuTree
|
|
|
// @Description 获取系统菜单
|
|
|
@@ -61,11 +102,11 @@ func System_GetMenuTree(c *SystemController) {
|
|
|
c.Db.SQL(sysmodel.Selectall_sys_menu).Find(&menus)
|
|
|
|
|
|
var menutree []sysmodel.SysMenuTree
|
|
|
- finChildrenMenu( &menus, "", nil, &menutree)
|
|
|
- for i:=0;i<len(menutree);i++{
|
|
|
- finChildrenMenu( &menus, menutree[i].Id, &menutree[i], &menutree)
|
|
|
+ finChildrenMenu(&menus, "", nil, &menutree)
|
|
|
+ for i := 0; i < len(menutree); i++ {
|
|
|
+ finChildrenMenu(&menus, menutree[i].Id, &menutree[i], &menutree)
|
|
|
}
|
|
|
- if ret{
|
|
|
+ if ret {
|
|
|
c.Ctx.JSON(200, sysmodel.SysReturn{200, "", menutree})
|
|
|
}
|
|
|
}
|
|
|
@@ -83,40 +124,40 @@ func System_GetOrgTree(c *SystemController) {
|
|
|
c.Db.SQL(sysmodel.Selectall_sys_org).Find(&orgs)
|
|
|
|
|
|
var orgtree []sysmodel.SysOrgTree
|
|
|
- finChildrenOrg( &orgs, "", nil, &orgtree)
|
|
|
- for i:=0;i<len(orgtree);i++{
|
|
|
- finChildrenOrg( &orgs, orgtree[i].Id, &orgtree[i], &orgtree)
|
|
|
+ finChildrenOrg(&orgs, "", nil, &orgtree)
|
|
|
+ for i := 0; i < len(orgtree); i++ {
|
|
|
+ finChildrenOrg(&orgs, orgtree[i].Id, &orgtree[i], &orgtree)
|
|
|
}
|
|
|
|
|
|
if ret {
|
|
|
c.Ctx.JSON(200, sysmodel.SysReturn{200, "", orgtree})
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func finChildrenOrg(menus *[]sysmodel.SysOrgTree, parent string, parent_menu* sysmodel.SysOrgTree, menutree *[]sysmodel.SysOrgTree) {
|
|
|
- for _,m:= range *menus{
|
|
|
+func finChildrenOrg(menus *[]sysmodel.SysOrgTree, parent string, parent_menu *sysmodel.SysOrgTree, menutree *[]sysmodel.SysOrgTree) {
|
|
|
+ for _, m := range *menus {
|
|
|
if m.Parent == parent {
|
|
|
- if parent_menu == nil{
|
|
|
+ if parent_menu == nil {
|
|
|
*menutree = append(*menutree, m)
|
|
|
//finChildrenMenu(menus, m.Id, menutree[len(*menutree)-1], menutree)
|
|
|
- }else {
|
|
|
- parent_menu.Children = append(parent_menu.Children,m)
|
|
|
+ } else {
|
|
|
+ parent_menu.Children = append(parent_menu.Children, m)
|
|
|
finChildrenOrg(menus, m.Id, &parent_menu.Children[len(parent_menu.Children)-1], menutree)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-func finChildrenMenu(menus *[]sysmodel.SysMenuTree, parent string, parent_menu* sysmodel.SysMenuTree, menutree *[]sysmodel.SysMenuTree) {
|
|
|
- for _,m:= range *menus{
|
|
|
+func finChildrenMenu(menus *[]sysmodel.SysMenuTree, parent string, parent_menu *sysmodel.SysMenuTree, menutree *[]sysmodel.SysMenuTree) {
|
|
|
+ for _, m := range *menus {
|
|
|
if m.Parent == parent {
|
|
|
- if parent_menu == nil{
|
|
|
+ if parent_menu == nil {
|
|
|
*menutree = append(*menutree, m)
|
|
|
//finChildrenMenu(menus, m.Id, menutree[len(*menutree)-1], menutree)
|
|
|
- }else {
|
|
|
- parent_menu.Children = append(parent_menu.Children,m)
|
|
|
+ } else {
|
|
|
+ parent_menu.Children = append(parent_menu.Children, m)
|
|
|
finChildrenMenu(menus, m.Id, &parent_menu.Children[len(parent_menu.Children)-1], menutree)
|
|
|
}
|
|
|
}
|
|
|
@@ -130,20 +171,21 @@ func finChildrenMenu(menus *[]sysmodel.SysMenuTree, parent string, parent_menu*
|
|
|
// @Success 200 {object} sysmodel.Account
|
|
|
// @Failure 403 :id is empty
|
|
|
func System_FindUserPage(c *SystemController) {
|
|
|
+
|
|
|
var getpageinfo sysmodel.GetPageInfo
|
|
|
c.Ctx.BindJSON(&getpageinfo)
|
|
|
__none_func_system__(getpageinfo)
|
|
|
fmt.Println(getpageinfo)
|
|
|
page := sysmodel.SysUserPageInfo{}
|
|
|
var users []sysmodel.SysUser
|
|
|
- err := c.Db.SQL(sysmodel.Selectall_sys_user).Limit(getpageinfo.PageSize, (getpageinfo.PageNum -1)*getpageinfo.PageSize).Find(&users)
|
|
|
+ err := c.Db.SQL(sysmodel.Selectall_sys_user).Limit(getpageinfo.PageSize, (getpageinfo.PageNum-1)*getpageinfo.PageSize).Find(&users)
|
|
|
page.Content = users
|
|
|
page.PageSize = getpageinfo.PageSize
|
|
|
page.PageNum = getpageinfo.PageNum
|
|
|
page.TotalSize = 1
|
|
|
- if err==nil{
|
|
|
+ if err == nil {
|
|
|
c.Ctx.JSON(200, sysmodel.SysReturn{200, "", page})
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
fmt.Println(err.Error())
|
|
|
c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
|
|
|
}
|
|
|
@@ -157,11 +199,15 @@ func System_FindUserPage(c *SystemController) {
|
|
|
// @Success 200 {object} sysmodel.Account
|
|
|
// @Failure 403 :id is empty
|
|
|
func System_FindPermissions(c *SystemController) {
|
|
|
- user := c.Ctx.Param(":user")
|
|
|
+ //获取用户id
|
|
|
+ tk, _ := c.Ctx.Get("token")
|
|
|
+ user := tk.(*entitys.Token)
|
|
|
+
|
|
|
+ //user := c.Ctx.Param(":user")
|
|
|
ret := __none_func_system__(user)
|
|
|
if ret {
|
|
|
c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
|
|
|
}
|
|
|
}
|
|
|
@@ -169,20 +215,36 @@ func System_FindPermissions(c *SystemController) {
|
|
|
// _AddPermission
|
|
|
// @Title _AddPermission
|
|
|
// @Description 查找用户的菜单权限标识集合
|
|
|
-// @Param user string false "用户id"
|
|
|
-// @Success 200 {object} sysmodel.Account
|
|
|
+// @Param perms string false "权限标识"
|
|
|
+// @Param domain string false "域"
|
|
|
+// @Success 200 {object} models.Account
|
|
|
// @Failure 403 :id is empty
|
|
|
func System_AddPermission(c *SystemController) {
|
|
|
- user := c.Ctx.Param(":user")
|
|
|
- ret := __none_func_system__(user)
|
|
|
- if ret {
|
|
|
+ perms := c.Ctx.Param(":perms")
|
|
|
+ domain := c.Ctx.Param(":domain")
|
|
|
+ ret := __none_func_system__(perms, domain)
|
|
|
+
|
|
|
+ //查找此权限标识符是否存在
|
|
|
+ //c.Db.Where().Get()
|
|
|
+
|
|
|
+ tk, _ := c.Ctx.Get("token")
|
|
|
+ user := tk.(*entitys.Token)
|
|
|
+
|
|
|
+ permiss := &sysmodel.SysPermission{}
|
|
|
+ permiss.Id = utils.NewUUID()
|
|
|
+ permiss.Perms = perms
|
|
|
+ permiss.Domain = domain
|
|
|
+ permiss.CreateBy = user.UserId
|
|
|
+ permiss.CreateTime = time.Now()
|
|
|
+ _, err := c.Db.Insert(permiss)
|
|
|
+
|
|
|
+ if ret && err == nil {
|
|
|
c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
|
|
|
- }else{
|
|
|
- c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
|
|
|
+ } else {
|
|
|
+ c.Ctx.JSON(200, sysmodel.SysReturn{500, err.Error(), nil})
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-func __none_func_system__(params ... interface{}) bool{
|
|
|
+func __none_func_system__(params ...interface{}) bool {
|
|
|
return true
|
|
|
}
|