package entity import ( "admin/apps/mockpro/internal/model" "admin/apps/mockpro/internal/model/dto" "reflect" ) var WhiteListDtoFieldsDescInfo = DefaultWhiteList().GetDtoFieldsDescInfo() type WhiteList struct { Id int po *model.WhiteList } func DefaultWhiteList() *WhiteList { return &WhiteList{ po: &model.WhiteList{}, } } func FromWhiteListPo(po *model.WhiteList) *WhiteList { return &WhiteList{ Id: po.ID, po: po, } } func FromWhiteListDto(dto dto.CommonDtoValues) *WhiteList { et := DefaultWhiteList() po := et.po //to := reflect.TypeOf(po) vo := reflect.ValueOf(po) for k, v := range dto { fo := vo.FieldByName(k) fo.Set(reflect.ValueOf(v)) } return et } func (et *WhiteList) ToPo() *model.WhiteList { return et.po } func (et *WhiteList) ToCommonDto() dto.CommonDtoValues { obj := make(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) obj[ft.Name] = fo.Interface() } return obj } func (et *WhiteList) 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 }