controls.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. // 银行控件
  10. type BankInfo struct {
  11. ID string `json:"id"`
  12. Name string `json:"name"`
  13. Code string `json:"code"`
  14. }
  15. func ExtractInfo[T InfoStruct](infoStr string) (*T, error) {
  16. info := new(T)
  17. if strutils.IsStringEmpty(infoStr) {
  18. return info, nil
  19. }
  20. err := json.Unmarshal([]byte(infoStr), info)
  21. if err != nil {
  22. return nil, err
  23. }
  24. return info, nil
  25. }
  26. type InfosStruct interface {
  27. ProjectInfo | DeptInfo
  28. }
  29. // 项目控件
  30. type ProjectInfo struct {
  31. ID string `json:"id"`
  32. Name string `json:"name"`
  33. }
  34. // 部门控件
  35. type DeptInfo struct {
  36. Type string `json:"type"`
  37. ID string `json:"subjectId"`
  38. Name string `json:"name"`
  39. }
  40. func ExtractInfoFormInfos[T InfosStruct](infosStr string) (*T, error) {
  41. infos, err := ExtractInfos[T](infosStr)
  42. if err != nil {
  43. return nil, err
  44. }
  45. if infos == nil || len(infos) == 0 {
  46. var info T
  47. return &info, nil
  48. }
  49. return &infos[0], nil
  50. }
  51. func ExtractInfos[T InfosStruct](infosStr string) ([]T, error) {
  52. infos := make([]T, 0)
  53. if strutils.IsStringEmpty(infosStr) {
  54. return infos, nil
  55. }
  56. err := json.Unmarshal([]byte(infosStr), &infos)
  57. if err != nil {
  58. return nil, err
  59. }
  60. return infos, nil
  61. }