diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/annotation/ReadJSON.java b/admin-core/src/main/java/com/ibeetl/admin/core/annotation/ReadJSON.java new file mode 100644 index 00000000..da27dac0 --- /dev/null +++ b/admin-core/src/main/java/com/ibeetl/admin/core/annotation/ReadJSON.java @@ -0,0 +1,22 @@ +package com.ibeetl.admin.core.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + *
+ * 解析JSON + *
+ * + * @author mlx + * @date 2022/9/21 + * @modified + */ +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface ReadJSON { + + String suffix() default "JSONEntity"; +} diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreBaseAnnotationParser.java b/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreBaseAnnotationParser.java index b66c8f8d..5134a88b 100644 --- a/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreBaseAnnotationParser.java +++ b/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreBaseAnnotationParser.java @@ -4,9 +4,11 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import com.ibeetl.admin.core.annotation.Dict; import com.ibeetl.admin.core.annotation.DictDeep; import com.ibeetl.admin.core.annotation.DictEnum; +import com.ibeetl.admin.core.annotation.ReadJSON; import com.ibeetl.admin.core.entity.CoreDict; import com.ibeetl.admin.core.util.PlatformException; import org.beetl.sql.core.TailBean; @@ -111,6 +113,23 @@ public class CoreBaseAnnotationParser { } } + // 深度解析注解 + if (field.isAnnotationPresent(ReadJSON.class)) { + field.setAccessible(true); + + ReadJSON readJSON = field.getAnnotation(ReadJSON.class); + try { + Object o = field.get(ext); + if(null != o) { + ext.set(field.getName() + readJSON.suffix(), JSONUtil.parse(o)); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + field.setAccessible(false); + } + } + // 枚举自动转换中文 if (field.isAnnotationPresent(DictEnum.class)) { field.setAccessible(true); diff --git a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseScheduleSession.java b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseScheduleSession.java index a469a24c..5d134c20 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseScheduleSession.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseScheduleSession.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONUtil; import com.ibeetl.admin.core.annotation.Dict; import com.ibeetl.admin.core.annotation.DictDeep; +import com.ibeetl.admin.core.annotation.ReadJSON; import com.ibeetl.admin.core.entity.BaseEntity; import com.ibeetl.admin.core.util.ValidateConfig; import lombok.Data; @@ -99,6 +100,7 @@ public class TeacherOpenCourseScheduleSession extends BaseEntity{ // 开课节次和班级的组合JSON格式 // [{班级ID:[节次ID]}] + @ReadJSON private String teacherOpenCourseScheduleSessionClassList; diff --git a/web/src/main/resources/templates/jlw/teacherOpenCourseScheduleSession/add.html b/web/src/main/resources/templates/jlw/teacherOpenCourseScheduleSession/add.html index a02122a1..91e4e108 100644 --- a/web/src/main/resources/templates/jlw/teacherOpenCourseScheduleSession/add.html +++ b/web/src/main/resources/templates/jlw/teacherOpenCourseScheduleSession/add.html @@ -58,10 +58,12 @@