| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- package controllers
- import (
- "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
- // @Title _Login
- // @Description 用户登录
- // @Param logininfo false "登录信息"
- // @Success 200 {object} sysmodel.Account
- // @Failure 403 :id is empty
- func System_Login(c *SystemController) {
- var logininfo sysmodel.LoginInfo
- c.Ctx.BindJSON(&logininfo)
- __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 {
- //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
- }
- 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 {
- //fmt.Println(err.Error())
- c.Ctx.JSON(200, sysmodel.SysReturn{400, "username or passowrd incorrect!", nil})
- }
- }
- // _Logout
- // @Title _Logout
- // @Description 用户退出
- // @Success 200 {object} sysmodel.Account
- // @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 {
- c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
- }
- }
- // _GetMenuTree
- // @Title _GetMenuTree
- // @Description 获取系统菜单
- // @Param user string false "用户id"
- // @Success 200 {object} sysmodel.Account
- // @Failure 403 :id is empty
- func System_GetMenuTree(c *SystemController) {
- user := c.Ctx.Param(":user")
- ret := __none_func_system__(user)
- var menus []sysmodel.SysMenuTree
- 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)
- }
- if ret {
- c.Ctx.JSON(200, sysmodel.SysReturn{200, "", menutree})
- }
- }
- // _GetOrgTree
- // @Title _GetOrgTree
- // @Description 获取组织架构树
- // @Success 200 {object} sysmodel.Account
- // @Failure 403 :id is empty
- func System_GetOrgTree(c *SystemController) {
- ret := __none_func_system__()
- var orgs []sysmodel.SysOrgTree
- 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)
- }
- if ret {
- c.Ctx.JSON(200, sysmodel.SysReturn{200, "", orgtree})
- } 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 {
- if m.Parent == parent {
- 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)
- 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 {
- if m.Parent == parent {
- 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)
- finChildrenMenu(menus, m.Id, &parent_menu.Children[len(parent_menu.Children)-1], menutree)
- }
- }
- }
- }
- // _FindUserPage
- // @Title _FindUserPage
- // @Description 获取用户分布数据
- // @Param page false "分页参数"
- // @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)
- page.Content = users
- page.PageSize = getpageinfo.PageSize
- page.PageNum = getpageinfo.PageNum
- page.TotalSize = 1
- if err == nil {
- c.Ctx.JSON(200, sysmodel.SysReturn{200, "", page})
- } else {
- fmt.Println(err.Error())
- c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
- }
- }
- // _FindPermissions
- // @Title _FindPermissions
- // @Description 查找用户的菜单权限标识集合
- // @Param user string false "用户id"
- // @Success 200 {object} sysmodel.Account
- // @Failure 403 :id is empty
- func System_FindPermissions(c *SystemController) {
- //获取用户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 {
- c.Ctx.JSON(200, sysmodel.SysReturn{500, "", nil})
- }
- }
- // _AddPermission
- // @Title _AddPermission
- // @Description 查找用户的菜单权限标识集合
- // @Param perms string false "权限标识"
- // @Param domain string false "域"
- // @Success 200 {object} models.Account
- // @Failure 403 :id is empty
- func System_AddPermission(c *SystemController) {
- 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, err.Error(), nil})
- }
- }
- func __none_func_system__(params ...interface{}) bool {
- return true
- }
|