Browse Source

Merge remote-tracking branch 'origin/master' into master

# Conflicts:
#	internal/server/transformserver.go
#	transform/transform.pb.go
#	transformclient/transform.go
icole 4 years ago
parent
commit
634725448d
4 changed files with 90 additions and 26 deletions
  1. 51 0
      internal/logic/parsetokenlogic.go
  2. 33 0
      internal/svc/erp.go
  3. 0 26
      internal/svc/servicecontext.go
  4. 6 0
      transform.proto

+ 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
 }

+ 33 - 0
internal/svc/erp.go

@@ -0,0 +1,33 @@
+package svc
+
+import (
+	"fmt"
+	"strings"
+
+	"git.i2edu.net/i2/go-zero/core/stores/sqlc"
+	"git.i2edu.net/i2/go-zero/core/stores/sqlx"
+	"git.i2edu.net/i2/i2-bill-erp/internal/config"
+	"git.i2edu.net/i2/i2-bill-erp/model"
+	"github.com/thoas/go-funk"
+)
+
+type ErpUtil struct {
+	Config  config.Config
+	SqlConn sqlx.SqlConn
+}
+
+func (rp *ErpUtil) InRoles(userId string, roles ...string) (bool, error) {
+	user := model.SysUser{}
+	role := strings.Join(funk.Map(roles, func(r string) string { return fmt.Sprintf("'%v'", r) }).([]string), ",")
+	err := rp.SqlConn.QueryRowPartial(&user, fmt.Sprintf(`SELECT sys_user_role.user_id id FROM sys_user_role
+	left join sys_role on sys_role.id=sys_user_role.role_id 
+	where sys_role.code in (%v) and sys_role.del_flag=0 and sys_user_role.del_flag=0 and sys_user_role.user_id=?`, role), userId)
+	switch err {
+	case nil:
+		return true, nil
+	case sqlc.ErrNotFound:
+		return false, nil
+	default:
+		return true, nil
+	}
+}

+ 0 - 26
internal/svc/servicecontext.go

@@ -1,14 +1,9 @@
 package svc
 
 import (
-	"fmt"
-	"strings"
-
 	"git.i2edu.net/i2/i2-bill-erp/internal/config"
 	"git.i2edu.net/i2/i2-bill-erp/model"
-	"github.com/thoas/go-funk"
 
-	"git.i2edu.net/i2/go-zero/core/stores/sqlc"
 	"git.i2edu.net/i2/go-zero/core/stores/sqlx"
 )
 
@@ -21,27 +16,6 @@ type ServiceContext struct {
 	MktPartTimeUser model.MktPartTimeUserModel
 }
 
-type ErpUtil struct {
-	Config  config.Config
-	SqlConn sqlx.SqlConn
-}
-
-func (rp *ErpUtil) InRoles(userId string, roles ...string) (bool, error) {
-	user := model.SysUser{}
-	role := strings.Join(funk.Map(roles, func(r string) string { return fmt.Sprintf("'%v'", r) }).([]string), ",")
-	err := rp.SqlConn.QueryRowPartial(&user, fmt.Sprintf(`SELECT sys_user_role.user_id id FROM sys_user_role
-	left join sys_role on sys_role.id=sys_user_role.role_id 
-	where sys_role.code in (%v) and sys_role.del_flag=0 and sys_user_role.del_flag=0 and sys_user_role.user_id=?`, role), userId)
-	switch err {
-	case nil:
-		return true, nil
-	case sqlc.ErrNotFound:
-		return false, nil
-	default:
-		return true, nil
-	}
-}
-
 func NewServiceContext(c config.Config) *ServiceContext {
 	sc := ServiceContext{
 		Config:  c,

+ 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 {}