package logic import ( "context" "database/sql" "git.i2edu.net/i2/i2-bill-erp/internal/svc" "git.i2edu.net/i2/i2-bill-erp/internal/utils" "git.i2edu.net/i2/i2-bill-erp/transform" "git.i2edu.net/i2/go-zero/core/logx" ) type ErpUserPrivileges struct { Mobile sql.NullString `db:"mobile"` 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 logx.Logger } func NewParseTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ParseTokenLogic { return &ParseTokenLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } func (l *ParseTokenLogic) ParseToken(in *transform.TokenRequest) (*transform.TokenResponse, error) { userId := utils.GetGlobalTokenStore().Get(in.Token) privileges := ErpUserPrivileges{} tr := transform.TokenResponse{} if userId != "" { tr.UserId = 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, sys_user.mobile 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.UserPhone = privileges.Mobile.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 }