controls.go 965 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package controls
  2. import (
  3. "encoding/json"
  4. "git.sxidc.com/go-tools/utils/strutils"
  5. )
  6. type InfoStruct interface {
  7. BankInfo
  8. }
  9. type InfosStruct interface {
  10. ProjectInfo | DeptInfo | IDName | SubjectIDName
  11. }
  12. func ExtractInfo[T InfoStruct](infoStr string) (*T, error) {
  13. info := new(T)
  14. if strutils.IsStringEmpty(infoStr) {
  15. return info, nil
  16. }
  17. err := json.Unmarshal([]byte(infoStr), info)
  18. if err != nil {
  19. return nil, err
  20. }
  21. return info, nil
  22. }
  23. func ExtractInfoFormInfos[T InfosStruct](infosStr string) (*T, error) {
  24. infos, err := ExtractInfos[T](infosStr)
  25. if err != nil {
  26. return nil, err
  27. }
  28. if infos == nil || len(infos) == 0 {
  29. var info T
  30. return &info, nil
  31. }
  32. return &infos[0], nil
  33. }
  34. func ExtractInfos[T InfosStruct](infosStr string) ([]T, error) {
  35. infos := make([]T, 0)
  36. if strutils.IsStringEmpty(infosStr) {
  37. return infos, nil
  38. }
  39. err := json.Unmarshal([]byte(infosStr), &infos)
  40. if err != nil {
  41. return nil, err
  42. }
  43. return infos, nil
  44. }