95 lines
1.7 KiB
Go
95 lines
1.7 KiB
Go
package entity
|
|
|
|
import (
|
|
"admin/apps/game/model"
|
|
"admin/apps/game/model/dto"
|
|
"reflect"
|
|
)
|
|
|
|
var ProjectDtoFieldsDescInfo = DefaultProject().GetDtoFieldsDescInfo()
|
|
|
|
type Project struct {
|
|
Id int
|
|
po *model.Project
|
|
}
|
|
|
|
func DefaultProject() *Project {
|
|
return &Project{
|
|
po: &model.Project{},
|
|
}
|
|
}
|
|
|
|
func FromProjectPo(po *model.Project) *Project {
|
|
return &Project{
|
|
Id: po.ID,
|
|
po: po,
|
|
}
|
|
}
|
|
|
|
func FromProjectDto(dto *dto.CommonDtoValues) *Project {
|
|
et := DefaultProject()
|
|
po := et.po
|
|
|
|
//to := reflect.TypeOf(po)
|
|
vo := reflect.ValueOf(po)
|
|
|
|
for _, f := range dto.Values {
|
|
fo := vo.FieldByName(f.FieldName)
|
|
fo.Set(reflect.ValueOf(f.Value))
|
|
}
|
|
|
|
return et
|
|
}
|
|
|
|
func (et *Project) ToPo() *model.Project {
|
|
return et.po
|
|
}
|
|
|
|
func (et *Project) ToCommonDto() *dto.CommonDtoValues {
|
|
obj := &dto.CommonDtoValues{}
|
|
|
|
to := reflect.TypeOf(et.po).Elem()
|
|
vo := reflect.ValueOf(et.po).Elem()
|
|
for i := 0; i < vo.NumField(); i++ {
|
|
ft := to.Field(i)
|
|
fo := vo.Field(i)
|
|
|
|
f1 := &dto.CommonDtoValue{
|
|
FieldName: ft.Name,
|
|
Value: fo.Interface(),
|
|
}
|
|
|
|
obj.Values = append(obj.Values, f1)
|
|
}
|
|
|
|
return obj
|
|
}
|
|
|
|
func (et *Project) GetDtoFieldsDescInfo() []*dto.CommonDtoFieldDesc {
|
|
|
|
to := reflect.TypeOf(et.po).Elem()
|
|
vo := reflect.ValueOf(et.po).Elem()
|
|
|
|
obj := make([]*dto.CommonDtoFieldDesc, 0, to.NumField())
|
|
|
|
for i := 0; i < vo.NumField(); i++ {
|
|
ft := to.Field(i)
|
|
//fo := vo.Field(i)
|
|
|
|
f1 := &dto.CommonDtoFieldDesc{
|
|
Name: ft.Name,
|
|
Key: ft.Name,
|
|
Type: ft.Type.Name(),
|
|
HelpText: ft.Tag.Get("desc"),
|
|
Editable: true,
|
|
Require: true,
|
|
Choices: make([]*dto.CommonDtoFieldChoice, 0),
|
|
MultiChoice: false,
|
|
}
|
|
|
|
obj = append(obj, f1)
|
|
}
|
|
|
|
return obj
|
|
}
|