| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package controls
- import (
- "encoding/json"
- "git.sxidc.com/go-tools/utils/strutils"
- )
- type InfoStruct interface {
- BankInfo
- }
- // 银行控件
- type BankInfo struct {
- ID string `json:"id"`
- Name string `json:"name"`
- Code string `json:"code"`
- }
- func ExtractInfo[T InfoStruct](infoStr string) (*T, error) {
- info := new(T)
- if strutils.IsStringEmpty(infoStr) {
- return info, nil
- }
- err := json.Unmarshal([]byte(infoStr), info)
- if err != nil {
- return nil, err
- }
- return info, nil
- }
- type InfosStruct interface {
- ProjectInfo | DeptInfo
- }
- // 项目控件
- type ProjectInfo struct {
- ID string `json:"id"`
- Name string `json:"name"`
- }
- // 部门控件
- type DeptInfo struct {
- Type string `json:"type"`
- ID string `json:"subjectId"`
- Name string `json:"name"`
- }
- func ExtractInfoFormInfos[T InfosStruct](infosStr string) (*T, error) {
- infos, err := ExtractInfos[T](infosStr)
- if err != nil {
- return nil, err
- }
- if infos == nil || len(infos) == 0 {
- var info T
- return &info, nil
- }
- return &infos[0], nil
- }
- func ExtractInfos[T InfosStruct](infosStr string) ([]T, error) {
- infos := make([]T, 0)
- if strutils.IsStringEmpty(infosStr) {
- return infos, nil
- }
- err := json.Unmarshal([]byte(infosStr), &infos)
- if err != nil {
- return nil, err
- }
- return infos, nil
- }
|