parse_token_logic.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package logic
  2. import (
  3. "context"
  4. "database/sql"
  5. "git.i2edu.net/i2/i2-bill-erp/internal/svc"
  6. "git.i2edu.net/i2/i2-bill-erp/internal/utils"
  7. "git.i2edu.net/i2/i2-bill-erp/transform"
  8. "git.i2edu.net/i2/go-zero/core/logx"
  9. )
  10. type ErpUserPrivileges struct {
  11. Mobile sql.NullString `db:"mobile"`
  12. UserRoleIds sql.NullString `db:"user_role_ids"`
  13. UserSchoolIds sql.NullString `db:"user_school_ids"`
  14. UserProvinceIds sql.NullString `db:"user_province_ids"`
  15. UserOrganIds sql.NullString `db:"user_organ_ids"`
  16. SysSchoolId sql.NullString `db:"sys_school_id"`
  17. SysOrganId sql.NullString `db:"sys_organ_id"`
  18. }
  19. type ParseTokenLogic struct {
  20. ctx context.Context
  21. svcCtx *svc.ServiceContext
  22. logx.Logger
  23. }
  24. func NewParseTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ParseTokenLogic {
  25. return &ParseTokenLogic{
  26. ctx: ctx,
  27. svcCtx: svcCtx,
  28. Logger: logx.WithContext(ctx),
  29. }
  30. }
  31. func (l *ParseTokenLogic) ParseToken(in *transform.TokenRequest) (*transform.TokenResponse, error) {
  32. userId := utils.GetGlobalTokenStore().Get(in.Token)
  33. privileges := ErpUserPrivileges{}
  34. tr := transform.TokenResponse{}
  35. if userId != "" {
  36. tr.UserId = userId
  37. l.svcCtx.SqlConn.QueryRowPartial(&privileges, `SELECT
  38. GROUP_CONCAT(DISTINCT sys_user_role.role_id)user_role_ids
  39. FROM
  40. sys_user_role
  41. WHERE
  42. sys_user_role.del_flag = 0
  43. AND sys_user_role.user_id = ?
  44. ORDER BY sys_user_role.role_id`, tr.UserId)
  45. l.svcCtx.SqlConn.QueryRowPartial(&privileges, `SELECT
  46. GROUP_CONCAT(DISTINCT base_user_organ_school.os_id) user_school_ids,
  47. GROUP_CONCAT(DISTINCT base_organ.parent) user_province_ids,
  48. GROUP_CONCAT(DISTINCT base_organ_school.organ_id) user_organ_ids
  49. FROM sys_user, base_user_organ_school,base_organ_school,base_organ
  50. WHERE sys_user.id = base_user_organ_school.user_id
  51. and base_user_organ_school.del_flag=0
  52. AND base_organ_school.id = base_user_organ_school.os_id
  53. AND base_organ_school.organ_id = base_organ.id
  54. AND sys_user.id = ?
  55. ORDER BY base_organ.parent,base_organ_school.id`, tr.UserId)
  56. l.svcCtx.SqlConn.QueryRowPartial(&privileges, `select
  57. base_organ.id sys_organ_id,
  58. base_organ_school.id sys_school_id,
  59. sys_user.mobile
  60. from
  61. sys_user,sys_user_school,base_organ_school,base_organ
  62. where sys_user.id=sys_user_school.user_id
  63. and sys_user_school.del_flag=0
  64. #and base_user_organ_school.del_flag=0
  65. and base_organ_school.id = sys_user_school.os_id
  66. and base_organ.id = base_organ_school.organ_id
  67. and sys_user.id = ?
  68. ORDER BY base_organ.parent,base_organ_school.id`, tr.UserId)
  69. tr.UserPhone = privileges.Mobile.String
  70. tr.UserRoleIds = privileges.UserRoleIds.String
  71. tr.UserSchoolIds = privileges.UserSchoolIds.String
  72. tr.UserProvinceIds = privileges.UserProvinceIds.String
  73. tr.UserOrganIds = privileges.UserOrganIds.String
  74. tr.SysSchoolId = privileges.SysSchoolId.String
  75. tr.SysOrganId = privileges.SysOrganId.String
  76. }
  77. return &tr, nil
  78. }