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