package entity import ( "admin/apps/game/model" "admin/apps/game/model/dto" "reflect" ) type CommonResource struct { ProjectEt *Project Po model.IModel } func (et *CommonResource) FromPo(po model.IModel) *CommonResource { et.Po = po return et } func (et *CommonResource) FromDto(dto dto.CommonDtoValues) *CommonResource { po := et.Po //to := reflect.TypeOf(Po) vo := reflect.ValueOf(po).Elem() to := reflect.TypeOf(po).Elem() for k, v := range dto { fo := vo.FieldByName(k) ft, find := to.FieldByName(k) if !find { continue } fo.Set(parseStr2FieldValue(ft, v)) } return et } func (et *CommonResource) ToPo() model.IModel { return et.Po } func (et *CommonResource) ToCommonDto() dto.CommonDtoValues { return poToCommonDtoNo(et.Po) } func (et *CommonResource) GetDtoFieldsDescInfo(projectId string) []*dto.CommonDtoFieldDesc { ptrVo := reflect.ValueOf(et.Po) to := reflect.TypeOf(et.Po).Elem() vo := ptrVo.Elem() obj := make([]*dto.CommonDtoFieldDesc, 0, to.NumField()) for i := 0; i < vo.NumField(); i++ { ft := to.Field(i) //fo := vo.Field(i) if ft.Name == "ProjectId" { continue } f1 := getFieldTypeDtoDescInfo(projectId, ptrVo, ft) obj = append(obj, f1) } return obj }