parsetokenlogic.go 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. UserRoleIds sql.NullString `db:"user_role_ids"`
  12. UserSchoolIds sql.NullString `db:"user_school_ids"`
  13. UserProvinceIds sql.NullString `db:"user_province_ids"`
  14. UserOrganIds sql.NullString `db:"user_organ_ids"`
  15. SysSchoolId sql.NullString `db:"sys_school_id"`
  16. SysOrganId sql.NullString `db:"sys_organ_id"`
  17. }
  18. type ParseTokenLogic struct {
  19. ctx context.Context
  20. svcCtx *svc.ServiceContext
  21. logx.Logger
  22. }
  23. func NewParseTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ParseTokenLogic {
  24. return &ParseTokenLogic{
  25. ctx: ctx,
  26. svcCtx: svcCtx,
  27. Logger: logx.WithContext(ctx),
  28. }
  29. }
  30. func (l *ParseTokenLogic) ParseToken(in *transform.TokenRequest) (*transform.TokenResponse, error) {
  31. erpToken := utils.GetGlobalTokenStore().Get(in.Token)
  32. privileges := ErpUserPrivileges{}
  33. tr := transform.TokenResponse{}
  34. if erpToken != nil {
  35. tr.UserId = erpToken.UserId
  36. l.svcCtx.SqlConn.QueryRowPartial(&privileges, `SELECT
  37. GROUP_CONCAT(DISTINCT sys_user_role.role_id)user_role_ids
  38. FROM
  39. sys_user_role
  40. WHERE
  41. sys_user_role.del_flag = 0
  42. AND sys_user_role.user_id = ?
  43. ORDER BY sys_user_role.role_id`, tr.UserId)
  44. l.svcCtx.SqlConn.QueryRowPartial(&privileges, `SELECT
  45. GROUP_CONCAT(DISTINCT base_user_organ_school.os_id) user_school_ids,
  46. GROUP_CONCAT(DISTINCT base_organ.parent) user_province_ids,
  47. GROUP_CONCAT(DISTINCT base_organ_school.organ_id) user_organ_ids
  48. FROM sys_user, base_user_organ_school,base_organ_school,base_organ
  49. WHERE sys_user.id = base_user_organ_school.user_id
  50. and base_user_organ_school.del_flag=0
  51. AND base_organ_school.id = base_user_organ_school.os_id
  52. AND base_organ_school.organ_id = base_organ.id
  53. AND sys_user.id = ?
  54. ORDER BY base_organ.parent,base_organ_school.id`, tr.UserId)
  55. l.svcCtx.SqlConn.QueryRowPartial(&privileges, `select
  56. base_organ.id sys_organ_id,
  57. base_organ_school.id sys_school_id
  58. from
  59. sys_user,sys_user_school,base_organ_school,base_organ
  60. where sys_user.id=sys_user_school.user_id
  61. and sys_user_school.del_flag=0
  62. #and base_user_organ_school.del_flag=0
  63. and base_organ_school.id = sys_user_school.os_id
  64. and base_organ.id = base_organ_school.organ_id
  65. and sys_user.id = ?
  66. ORDER BY base_organ.parent,base_organ_school.id`, tr.UserId)
  67. tr.UserRoleIds = privileges.UserRoleIds.String
  68. tr.UserRoleIds = privileges.UserRoleIds.String
  69. tr.UserSchoolIds = privileges.UserSchoolIds.String
  70. tr.UserProvinceIds = privileges.UserProvinceIds.String
  71. tr.UserOrganIds = privileges.UserOrganIds.String
  72. tr.SysSchoolId = privileges.SysSchoolId.String
  73. tr.SysOrganId = privileges.SysOrganId.String
  74. }
  75. return &tr, nil
  76. }