You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.9 KiB
71 lines
1.9 KiB
package tab |
|
|
|
import ( |
|
"encoding/json" |
|
"strconv" |
|
|
|
"go-common/library/log" |
|
xtime "go-common/library/time" |
|
) |
|
|
|
type Menu struct { |
|
ID int64 `json:"id,omitempty"` |
|
Name string `json:"name,omitempty"` |
|
Img string `json:"img,omitempty"` |
|
Icon string `json:"icon,omitempty"` |
|
Color string `json:"color,omitempty"` |
|
TabID int64 `json:"tab_id,omitempty"` |
|
Plat int `json:"-"` |
|
CType int `json:"-"` |
|
CValue string `json:"-"` |
|
PlatVersion json.RawMessage `json:"-"` |
|
STime xtime.Time `json:"-"` |
|
ETime xtime.Time `json:"-"` |
|
Status int `json:"-"` |
|
Badge string `json:"-"` |
|
Versions map[int8][]*Version `json:"-"` |
|
} |
|
|
|
type Version struct { |
|
PlatStr string `json:"plat"` |
|
BuildStr string `json:"build"` |
|
Condition string `json:"conditions"` |
|
Plat int8 `json:"-"` |
|
Build int `json:"-"` |
|
} |
|
|
|
func (m *Menu) Change() { |
|
m.Icon = m.Badge |
|
var vs []*Version |
|
if err := json.Unmarshal(m.PlatVersion, &vs); err != nil { |
|
log.Error("json.Unmarshal(%s) error(%v)", m.PlatVersion, err) |
|
return |
|
} |
|
vm := make(map[int8][]*Version, len(vs)) |
|
for _, v := range vs { |
|
if v.PlatStr == "" || v.BuildStr == "" { |
|
continue |
|
} |
|
if plat, err := strconv.ParseInt(v.PlatStr, 10, 8); err != nil { |
|
log.Error("strconv.ParseInt(%s,10,8) error(%v)", v.PlatStr, err) |
|
continue |
|
} else { |
|
v.Plat = int8(plat) |
|
} |
|
if build, err := strconv.Atoi(v.BuildStr); err != nil { |
|
log.Error("strconv.Atoi(%s) error(%v)", v.BuildStr, err) |
|
continue |
|
} else { |
|
v.Build = build |
|
} |
|
vm[v.Plat] = append(vm[v.Plat], v) |
|
} |
|
m.Versions = vm |
|
if m.CType == 1 { |
|
var err error |
|
if m.ID, err = strconv.ParseInt(m.CValue, 10, 64); err != nil { |
|
log.Error("strconv.ParseInt(%s) error(%v)", m.CValue, err) |
|
return |
|
} |
|
} |
|
}
|
|
|