瀏覽代碼

feat: 添加权限解析

2637309949 4 年之前
父節點
當前提交
ebfc926476
共有 5 個文件被更改,包括 419 次插入553 次删除
  1. 51 0
      internal/logic/parsetokenlogic.go
  2. 1 0
      internal/server/transformserver.go
  3. 6 0
      transform.proto
  4. 358 550
      transform/transform.pb.go
  5. 3 3
      transformclient/transform.go

+ 51 - 0
internal/logic/parsetokenlogic.go

@@ -2,6 +2,7 @@ package logic
 
 import (
 	"context"
+	"database/sql"
 
 	"git.i2edu.net/i2/i2-bill-erp/internal/svc"
 	"git.i2edu.net/i2/i2-bill-erp/internal/utils"
@@ -10,6 +11,15 @@ import (
 	"git.i2edu.net/i2/go-zero/core/logx"
 )
 
+type ErpUserPrivileges struct {
+	UserRoleIds     sql.NullString `db:"user_role_ids"`
+	UserSchoolIds   sql.NullString `db:"user_school_ids"`
+	UserProvinceIds sql.NullString `db:"user_province_ids"`
+	UserOrganIds    sql.NullString `db:"user_organ_ids"`
+	SysSchoolId     sql.NullString `db:"sys_school_id"`
+	SysOrganId      sql.NullString `db:"sys_organ_id"`
+}
+
 type ParseTokenLogic struct {
 	ctx    context.Context
 	svcCtx *svc.ServiceContext
@@ -26,9 +36,50 @@ func NewParseTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ParseT
 
 func (l *ParseTokenLogic) ParseToken(in *transform.TokenRequest) (*transform.TokenResponse, error) {
 	erpToken := utils.GetGlobalTokenStore().Get(in.Token)
+	privileges := ErpUserPrivileges{}
 	tr := transform.TokenResponse{}
 	if erpToken != nil {
 		tr.UserId = erpToken.UserId
+		l.svcCtx.SqlConn.QueryRowPartial(&privileges, `SELECT
+		GROUP_CONCAT(DISTINCT sys_user_role.role_id)user_role_ids
+		FROM
+			sys_user_role
+		WHERE
+			sys_user_role.del_flag = 0
+			AND sys_user_role.user_id = ?
+		ORDER BY sys_user_role.role_id`, tr.UserId)
+
+		l.svcCtx.SqlConn.QueryRowPartial(&privileges, `SELECT
+		GROUP_CONCAT(DISTINCT base_user_organ_school.os_id) user_school_ids,
+		GROUP_CONCAT(DISTINCT base_organ.parent) user_province_ids,
+		GROUP_CONCAT(DISTINCT base_organ_school.organ_id) user_organ_ids
+		FROM sys_user, base_user_organ_school,base_organ_school,base_organ
+		WHERE sys_user.id = base_user_organ_school.user_id
+		and base_user_organ_school.del_flag=0
+		AND base_organ_school.id = base_user_organ_school.os_id
+		AND base_organ_school.organ_id = base_organ.id
+		AND sys_user.id = ? 
+		ORDER BY base_organ.parent,base_organ_school.id`, tr.UserId)
+
+		l.svcCtx.SqlConn.QueryRowPartial(&privileges, `select
+		base_organ.id sys_organ_id,
+		base_organ_school.id sys_school_id
+		from
+		sys_user,sys_user_school,base_organ_school,base_organ
+		where sys_user.id=sys_user_school.user_id
+		and sys_user_school.del_flag=0
+		#and base_user_organ_school.del_flag=0
+		and base_organ_school.id = sys_user_school.os_id
+		and base_organ.id = base_organ_school.organ_id
+		and sys_user.id = ?
+		ORDER BY base_organ.parent,base_organ_school.id`, tr.UserId)
+		tr.UserRoleIds = privileges.UserRoleIds.String
+		tr.UserRoleIds = privileges.UserRoleIds.String
+		tr.UserSchoolIds = privileges.UserSchoolIds.String
+		tr.UserProvinceIds = privileges.UserProvinceIds.String
+		tr.UserOrganIds = privileges.UserOrganIds.String
+		tr.SysSchoolId = privileges.SysSchoolId.String
+		tr.SysOrganId = privileges.SysOrganId.String
 	}
 	return &tr, nil
 }

+ 1 - 0
internal/server/transformserver.go

@@ -33,5 +33,6 @@ func (s *TransformServer) ParseToken(ctx context.Context, in *transform.TokenReq
 
 func (s *TransformServer) GetErpCityTree(ctx context.Context, in *transform.Empty) (*transform.TreeNodes, error) {
 	l := logic.NewGetErpCityTreeLogic(ctx, s.svcCtx)
+	// return l.GetErpCityTree(in)
 	return l.GetErpCityTree()
 }

+ 6 - 0
transform.proto

@@ -24,6 +24,12 @@ message TokenRequest {
 
 message TokenResponse {
   string UserId = 1;
+  string UserRoleIds = 2;
+  string UserSchoolIds = 3;
+  string UserProvinceIds = 4;
+  string UserOrganIds = 5;
+  string SysSchoolId = 6;
+  string SysOrganId = 7;
 }
 
 message Empty {}

File diff suppressed because it is too large
+ 358 - 550
transform/transform.pb.go


+ 3 - 3
transformclient/transform.go

@@ -14,14 +14,14 @@ import (
 )
 
 type (
-	TreeNodes     = transform.TreeNodes
-	TreeNode      = transform.TreeNode
-	Tag           = transform.Tag
 	UserRequest   = transform.UserRequest
 	UserResponse  = transform.UserResponse
 	TokenRequest  = transform.TokenRequest
 	TokenResponse = transform.TokenResponse
 	Empty         = transform.Empty
+	TreeNodes     = transform.TreeNodes
+	TreeNode      = transform.TreeNode
+	Tag           = transform.Tag
 
 	Transform interface {
 		GetUser(ctx context.Context, in *UserRequest) (*UserResponse, error)

Some files were not shown because too many files changed in this diff