|
|
@@ -0,0 +1,74 @@
|
|
|
+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
|
|
|
+}
|