yxh 6 лет назад
Родитель
Сommit
c739d09148

+ 29 - 8
app/controller/admin/auth.go

@@ -2,12 +2,12 @@ package admin
 
 import (
 	"fmt"
-	"gfast/app/model/auth_rule"
-	"gfast/app/model/role"
-	"gfast/app/model/user"
-	"gfast/app/service/auth_service"
+	"gfast/app/model/admin/auth_rule"
+	"gfast/app/model/admin/role"
+	"gfast/app/model/admin/user"
+	"gfast/app/service/admin/auth_service"
+	"gfast/app/service/admin/user_service"
 	"gfast/app/service/casbin_adapter_service"
-	"gfast/app/service/user_service"
 	"gfast/library/response"
 	"gfast/library/utils"
 	"github.com/gogf/gf/frame/g"
@@ -34,13 +34,30 @@ func (c *Auth) MenuList(r *ghttp.Request) {
 	})
 }
 
+//菜单排序
+func (c *Auth) MenuSort(r *ghttp.Request) {
+	sorts := r.Get("sorts")
+	s := gconv.Map(sorts)
+	if s == nil {
+		response.FailJson(true, r, "排序失败")
+	}
+	for k, v := range s {
+		auth_rule.Model.Where("id=?", k).Data("weigh", v).Update()
+	}
+	response.SusJson(true, r, "排序成功")
+}
+
 //添加菜单
 func (c *Auth) AddMenu(r *ghttp.Request) {
 	if r.Method == "POST" {
-		menu := new(auth_service.MenuReq)
+		menu := new(auth_rule.MenuReq)
 		if err := r.Parse(menu); err != nil {
 			response.FailJson(true, r, err.(*gvalid.Error).FirstString())
 		}
+		//判断菜单规则是否存在
+		if !auth_service.CheckMenuNameUnique(menu.Name, 0) {
+			response.FailJson(true, r, "菜单规则名称已经存在")
+		}
 		//保存到数据库
 		err, _ := auth_service.AddMenu(menu)
 		if err != nil {
@@ -60,12 +77,16 @@ func (c *Auth) AddMenu(r *ghttp.Request) {
 
 //修改菜单
 func (c *Auth) EditMenu(r *ghttp.Request) {
-	id := r.GetRequestInt("id")
+	id := r.GetInt("id")
 	if r.Method == "POST" {
-		menu := new(auth_service.MenuReq)
+		menu := new(auth_rule.MenuReq)
 		if err := r.Parse(menu); err != nil {
 			response.FailJson(true, r, err.(*gvalid.Error).FirstString())
 		}
+		//判断菜单规则是否存在
+		if !auth_service.CheckMenuNameUnique(menu.Name, id) {
+			response.FailJson(true, r, "菜单规则名称已经存在")
+		}
 		//保存到数据库
 		err, _ := auth_service.EditMenu(menu, id)
 		if err != nil {

+ 1 - 1
app/controller/admin/index.go

@@ -1,7 +1,7 @@
 package admin
 
 import (
-	"gfast/app/service/user_service"
+	"gfast/app/service/admin/user_service"
 	"gfast/library/response"
 	"github.com/gogf/gf/frame/g"
 	"github.com/gogf/gf/net/ghttp"

+ 14 - 0
app/model/admin/auth_rule/auth_rule.go

@@ -0,0 +1,14 @@
+package auth_rule
+
+//菜单对象
+type MenuReq struct {
+	IsMenu    int    `p:"ismenu" c:"ismenu" v:"min:0|max:1#菜单类型最小值为:min|菜单类型最大值为:max"`
+	Pid       int    `p:"pid" c:"pid" v:"min:0"`
+	Name      string `p:"name" c:"name" v:"required#请填写规则名称"`
+	Title     string `p:"title" c:"title" v:"required|length:1,100#请填写标题|标题长度在:min到:max位"`
+	Icon      string `p:"icon" c:"icon"`
+	Weigh     int    `p:"weigh" c:"weigh"`
+	Condition string `p:"condition" c:"condition"`
+	Remark    string `p:"remark" c:"remark"`
+	Status    int    `p:"status" c:"status"`
+}

+ 0 - 0
app/model/auth_rule/auth_rule_entity.go → app/model/admin/auth_rule/auth_rule_entity.go


+ 0 - 0
app/model/auth_rule/auth_rule_model.go → app/model/admin/auth_rule/auth_rule_model.go


+ 0 - 0
app/model/casbin_rule/casbin_rule_entity.go → app/model/admin/casbin_rule/casbin_rule_entity.go


+ 0 - 0
app/model/casbin_rule/casbin_rule_model.go → app/model/admin/casbin_rule/casbin_rule_model.go


+ 0 - 0
app/model/role/role_entity.go → app/model/admin/role/role_entity.go


+ 0 - 0
app/model/role/role_model.go → app/model/admin/role/role_model.go


+ 0 - 0
app/model/user/user_entity.go → app/model/admin/user/user_entity.go


+ 0 - 0
app/model/user/user_model.go → app/model/admin/user/user_model.go


+ 19 - 18
app/service/auth_service/auth_rule.go → app/service/admin/auth_service/auth_rule.go

@@ -4,9 +4,9 @@ import (
 	"database/sql"
 	"errors"
 	"fmt"
-	"gfast/app/model/auth_rule"
-	"gfast/app/model/role"
-	"gfast/app/model/user"
+	"gfast/app/model/admin/auth_rule"
+	"gfast/app/model/admin/role"
+	"gfast/app/model/admin/user"
 	"gfast/app/service/casbin_adapter_service"
 	"gfast/library/utils"
 	"github.com/gogf/gf/database/gdb"
@@ -17,19 +17,6 @@ import (
 	"github.com/gogf/gf/util/gvalid"
 )
 
-//菜单对象
-type MenuReq struct {
-	IsMenu    int    `p:"ismenu" c:"ismenu" v:"min:0|max:1#菜单类型最小值为:min|菜单类型最大值为:max"`
-	Pid       int    `p:"pid" c:"pid" v:"min:0"`
-	Name      string `p:"name" c:"name" v:"required#请填写规则名称"`
-	Title     string `p:"title" c:"title" v:"required|length:1,100#请填写标题|标题长度在:min到:max位"`
-	Icon      string `p:"icon" c:"icon"`
-	Weigh     int    `p:"weigh" c:"weigh"`
-	Condition string `p:"condition" c:"condition"`
-	Remark    string `p:"remark" c:"remark"`
-	Status    int    `p:"status" c:"status"`
-}
-
 //获取菜单列表
 func GetMenuList(where string, params ...interface{}) (error, g.List) {
 	var err error
@@ -51,8 +38,22 @@ func GetMenuList(where string, params ...interface{}) (error, g.List) {
 	return nil, gList
 }
 
+//检查菜单规则是否存在
+func CheckMenuNameUnique(name string, id int) bool {
+	model := auth_rule.Model.Where("name=?", name)
+	if id != 0 {
+		model = model.And("id!=?", id)
+	}
+	c, err := model.Count()
+	if err != nil {
+		g.Log().Error(err)
+		return false
+	}
+	return c == 0
+}
+
 // 添加菜单操作
-func AddMenu(req *MenuReq) (err error, insertId int64) {
+func AddMenu(req *auth_rule.MenuReq) (err error, insertId int64) {
 	menuMap := gconv.Map(req)
 	now := gtime.Timestamp()
 	menuMap["createtime"] = now
@@ -64,7 +65,7 @@ func AddMenu(req *MenuReq) (err error, insertId int64) {
 }
 
 //修改菜单操作
-func EditMenu(req *MenuReq, id int) (err error, rows int64) {
+func EditMenu(req *auth_rule.MenuReq, id int) (err error, rows int64) {
 	menuMap := gconv.Map(req)
 	now := gtime.Timestamp()
 	menuMap["updatetime"] = now

+ 3 - 3
app/service/user_service/user.go → app/service/admin/user_service/user.go

@@ -2,9 +2,9 @@ package user_service
 
 import (
 	"fmt"
-	"gfast/app/model/role"
-	"gfast/app/model/user"
-	"gfast/app/service/auth_service"
+	"gfast/app/model/admin/role"
+	"gfast/app/model/admin/user"
+	"gfast/app/service/admin/auth_service"
 	"gfast/app/service/casbin_adapter_service"
 	"gfast/boot"
 	"gfast/library/utils"

+ 1 - 1
app/service/casbin_adapter_service/adapter.go

@@ -2,7 +2,7 @@ package casbin_adapter_service
 
 import (
 	"fmt"
-	"gfast/app/model/casbin_rule"
+	"gfast/app/model/admin/casbin_rule"
 	"github.com/casbin/casbin/v2"
 	"github.com/casbin/casbin/v2/model"
 	"github.com/casbin/casbin/v2/persist"

+ 5 - 1
library/utils/function.go

@@ -4,7 +4,7 @@ import (
 	"database/sql"
 	"errors"
 	"fmt"
-	"gfast/app/model/user"
+	"gfast/app/model/admin/user"
 	"gfast/library/response"
 	"github.com/goflyfox/gtoken/gtoken"
 	"github.com/gogf/gf/crypto/gaes"
@@ -147,6 +147,10 @@ func signIn(username, password string, r *ghttp.Request) (error, *user.QxkjUser)
 	if qxkjUser == nil {
 		return errors.New("账号或密码错误"), nil
 	}
+	//判断用户状态
+	if qxkjUser.UserStatus == 0 {
+		return errors.New("用户已被冻结"), nil
+	}
 	returnData := *qxkjUser
 	//更新登陆时间及ip
 	qxkjUser.LastLoginTime = gconv.Int(gtime.Timestamp())

+ 5 - 11
router/middleware.go

@@ -2,12 +2,11 @@ package router
 
 import (
 	"fmt"
-	"gfast/app/model/auth_rule"
+	"gfast/app/model/admin/auth_rule"
+	"gfast/app/service/admin/user_service"
 	"gfast/app/service/casbin_adapter_service"
-	"gfast/app/service/user_service"
 	"gfast/library/response"
 	"gfast/library/utils"
-	"github.com/gogf/gf/encoding/gurl"
 	"github.com/gogf/gf/frame/g"
 	"github.com/gogf/gf/net/ghttp"
 )
@@ -29,14 +28,10 @@ func MiddlewareAuth(r *ghttp.Request) {
 			return
 		}
 	}
-	url := r.GetUrl()
-	info, err := gurl.ParseURL(url, 32)
-	if err != nil {
-		g.Log().Error(err)
-		response.FailJson(true, r, "请求地址错误")
-	}
+	url := r.Request.URL
+	g.Log().Debug(url.Path)
 	//获取地址对应的菜单id
-	gValue, err := auth_rule.Model.Where("name=?", info["path"]).Fields("id").Value()
+	gValue, err := auth_rule.Model.Where("name=?", url.Path).Fields("id").Value()
 	if err != nil {
 		g.Log().Error(err)
 		response.FailJson(true, r, "请求数据失败")
@@ -56,7 +51,6 @@ func MiddlewareAuth(r *ghttp.Request) {
 			response.FailJson(true, r, "没有访问权限")
 		}
 		hasAccess := false
-		g.Log().Debug(groupPolicy)
 		for _, v := range groupPolicy {
 			if enforcer.HasPolicy(v[1], fmt.Sprintf("r_%d", menuId), "All") {
 				hasAccess = true