yaobo hace 7 años
padre
commit
2efbec0b9f

+ 1 - 1
src/main/java/cn/efunbox/audio/config/Config.java

@@ -58,7 +58,7 @@ public class Config extends WebMvcConfigurerAdapter{
         registry.addMapping("/**")
                 .allowedOrigins("*")
                 .allowCredentials(true)
-                .allowedMethods("GET", "POST", "DELETE", "PUT")
+                .allowedMethods("GET", "POST", "DELETE", "PUT", "OPTIONS")
                 .maxAge(3600);
     }
 

+ 49 - 21
src/main/java/cn/efunbox/audio/controller/AudioController.java

@@ -177,27 +177,17 @@ public class AudioController {
             return;
         }
         for(int i=0; i<audio.getClass().getDeclaredFields().length; i++){
-//            try {
-//                System.out.println(audio.getClass().getDeclaredFields()[i].getName());
-//                String fieldName = audio.getClass().getDeclaredFields()[i].getName();
-//                System.out.println(audio.getClass().getDeclaredField(fieldName));
-//                audio.getClass().getDeclaredField(fieldName).get(fieldName).;
-////                Field f = audio.getClass().getDeclaredField(fieldName);
-////                f.setAccessible(true);
-////                f.set(audio, "1");
-////
-////                String firstWord = fieldName.substring(0, 1).toUpperCase();
-////                String methodName = String.format("set%s%s", firstWord, fieldName.substring(1));
-////                Method method = audio.getClass().getMethod(methodName, value.getClass());
-////                method.invoke(obj, value);
-//            }catch (NoSuchFieldException e){
-//                System.out.println(e.getMessage());
-//            }
-//            catch (IllegalAccessException e){
-//                System.out.println(e.getMessage());
-//            }
-
-
+            try {
+                String fieldName = audio.getClass().getDeclaredFields()[i].getName();
+                System.out.println(fieldName);
+                String value = GetFieldValueByName(fieldName, audio)==null?"":GetFieldValueByName(fieldName, audio).toString();
+                System.out.println(value);
+                if(null==GetFieldValueByName(fieldName, audio) && null!=GetFieldValueByName(fieldName, audioOld))
+                    SetFieldValueByName(audio, fieldName, GetFieldValueByName(fieldName, audioOld));
+            }
+            catch (Exception e){
+                System.out.println(e.getMessage());
+            }
         }
         audio = audioService.Insert(audio);
 
@@ -206,6 +196,44 @@ public class AudioController {
     }
 
     /**
+     * 根据属性名获取属性值
+     * */
+    private Object GetFieldValueByName(String fieldName, Object o) {
+        try {
+            String firstLetter = fieldName.substring(0, 1).toUpperCase();
+            String getter = "get" + firstLetter + fieldName.substring(1);
+            Method method = o.getClass().getMethod(getter, new Class[] {});
+            Object value = method.invoke(o, new Object[] {});
+            return value;
+        } catch (Exception e) {
+            log.error(e.getMessage(),e);
+            return null;
+        }
+    }
+
+    /**
+     * 用反射设置对象的属性值
+     * @param obj 需要設置值的對象
+     * @param fieldName 需要設置值的屬性
+     * @param value 需要设置的值
+     * @return 设置值后的对象
+     */
+    private Object SetFieldValueByName(Object obj, String fieldName, Object value) {
+        try{
+            String firstWord = fieldName.substring(0, 1).toUpperCase();
+            String methodName = String.format("set%s%s", firstWord, fieldName.substring(1));
+            Method method = obj.getClass().getMethod(methodName, value.getClass());
+            method.invoke(obj, value);
+        }catch (Exception e) {
+            System.out.println(e.getMessage());
+            log.error(e.getMessage(), e);
+            return null;
+        }
+
+        return obj;
+    }
+
+    /**
      * 过滤出渠道有访问权限的音频列表
      * @param audioList
      * @param rightsList