95 lines
1.7 KiB
Go
Raw Normal View History

2025-04-18 17:17:23 +08:00
package entity
import (
"admin/apps/game/model"
"admin/apps/game/model/dto"
2025-04-22 15:46:48 +08:00
"math/rand"
2025-04-18 17:17:23 +08:00
"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,
}
}
2025-04-18 17:43:08 +08:00
func FromProjectDto(dto dto.CommonDtoValues) *Project {
2025-04-18 17:17:23 +08:00
et := DefaultProject()
po := et.po
//to := reflect.TypeOf(po)
2025-04-22 15:46:48 +08:00
vo := reflect.ValueOf(po).Elem()
to := reflect.TypeOf(po).Elem()
2025-04-18 17:17:23 +08:00
2025-04-18 17:43:08 +08:00
for k, v := range dto {
fo := vo.FieldByName(k)
2025-04-22 15:46:48 +08:00
ft, _ := to.FieldByName(k)
fo.Set(parseStr2FieldValue(ft, v))
2025-04-18 17:17:23 +08:00
}
2025-04-22 15:46:48 +08:00
et.Id = po.ID
2025-04-18 17:17:23 +08:00
return et
}
func (et *Project) ToPo() *model.Project {
return et.po
}
2025-04-18 17:43:08 +08:00
func (et *Project) ToCommonDto() dto.CommonDtoValues {
obj := make(dto.CommonDtoValues)
2025-04-18 17:17:23 +08:00
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)
2025-04-18 17:43:08 +08:00
obj[ft.Name] = fo.Interface()
2025-04-18 17:17:23 +08:00
}
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,
2025-04-22 15:46:48 +08:00
Require: rand.Int()%2 == 0,
2025-04-18 17:17:23 +08:00
Choices: make([]*dto.CommonDtoFieldChoice, 0),
MultiChoice: false,
}
obj = append(obj, f1)
}
return obj
}