package rule import ( "dubbo.apache.org/dubbo-go/v3/common/logger" "errors" "fmt" api "github.com/fonchain_enterprise/fonchain-main/api/rule" "github.com/fonchain_enterprise/fonchain-main/pkg/e" "github.com/fonchain_enterprise/fonchain-main/pkg/model/login" "github.com/fonchain_enterprise/fonchain-main/pkg/model/vo" "github.com/fonchain_enterprise/fonchain-main/pkg/service" "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/binding" "time" ) func Create(c *gin.Context) { var req api.CreateRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } res, err := service.RuleProvider.Create(c, &req) if err != nil { service.Error(c, e.Error, err) return } service.Success(c, res) } func Remove(c *gin.Context) { var req api.RemoveRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } res, err := service.RuleProvider.Remove(c, &req) if err != nil { service.Error(c, e.Error, err) return } service.Success(c, res) } func Detail(c *gin.Context) { var req api.DetailRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } res, err := service.RuleProvider.Detail(c, &req) if err != nil { service.Error(c, e.Error, err) return } service.Success(c, res) } func Update(c *gin.Context) { var req api.UpdateRequest fmt.Println("1---") if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } fmt.Println("2---") res, err := service.RuleProvider.Update(c, &req) if err != nil { service.Error(c, e.Error, err) return } service.Success(c, res) } func List(c *gin.Context) { var req api.ListRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } res, err := service.RuleProvider.List(c, &req) if err != nil { service.Error(c, e.Error, err) return } service.Success(c, res) } func TreeList(c *gin.Context) { req := api.ListRequest{ Page: 1, PageSize: 99999, Type: e.RULE_TYPE_MENU, } res, err := service.RuleProvider.List(c, &req) if err != nil { service.Error(c, e.Error, err) return } var list []*api.DetailResponse for _, t := range res.Data { if t.Pid != 0 { continue } temp := t for _, tt := range res.Data { if temp.ID == tt.Pid { temp.Son = append(temp.Son, tt) } } list = append(list, temp) } res.Count = uint64(len(list)) res.Data = list service.Success(c, res) return } func TopList(c *gin.Context) { req := api.ListRequest{ Page: 1, PageSize: 99999, Type: e.RULE_TYPE_MENU, IsNotJumpTop: true, } res, err := service.RuleProvider.List(c, &req) if err != nil { service.Error(c, e.Error, err) return } service.Success(c, res) return } func InterfaceAuth(c *gin.Context) { var reqIngo vo.InterfaceReq if err := c.ShouldBindBodyWith(&reqIngo, binding.JSON); err != nil { service.Error(c, e.Error, err) return } userInfoAny, _ := c.Get("jwtInfo") userInfo := userInfoAny.(login.Info) req := api.RuleByUrlRequest{ AccountID: userInfo.ID, Domain: userInfo.Domain, Url: reqIngo.Url, Method: reqIngo.Method, } fmt.Println("1------", req) ruleInfo, ruleErr := service.RuleProvider.RuleByUrl(c, &req) if ruleErr != nil { service.Error(c, e.Error, ruleErr) return } //接口存在 true 并且 isPass == false 不通过 if ruleInfo.Exist == true && !ruleInfo.IsPass { service.Error(c, e.Error, errors.New("没有权限")) return } service.Success(c, ruleInfo) return } func Rules(c *gin.Context) { startTime := time.Now() var req api.RulesRequest if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil { service.Error(c, e.Error, err) return } userInfoAny, _ := c.Get("jwtInfo") userInfo := userInfoAny.(login.Info) req.AccountID = userInfo.ID res, err := service.RuleProvider.Rules(c, &req) if err != nil { service.Error(c, e.Error, err) return } var list []*api.DetailResponse for _, t := range res.MyMenuAuths { if t.Pid != 0 { continue } temp := t for _, tt := range res.MyMenuAuths { if temp.ID == tt.Pid { temp.Son = append(temp.Son, tt) } } list = append(list, temp) } res.MyMenuAuths = list service.Success(c, res) logger.Error("rules 发送完毕时间:", time.Now().Sub(startTime)) return }