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 05ffb36f..85d8e7fe 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 @@ -79,6 +79,8 @@ public class CoreBaseAnnotationParser { do { List fields = Arrays.asList(c.getDeclaredFields()); for (Field field : fields) { + + // 字典查询,也可以查询普通表 if (field.isAnnotationPresent(Dict.class)) { field.setAccessible(true); Dict dict = field.getAnnotation(Dict.class); @@ -107,6 +109,7 @@ public class CoreBaseAnnotationParser { } } + // 深度解析注解 if (field.isAnnotationPresent(DictDeep.class)) { field.setAccessible(true); diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreDictService.java b/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreDictService.java index 269bf5a5..9e100953 100644 --- a/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreDictService.java +++ b/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreDictService.java @@ -1,11 +1,16 @@ package com.ibeetl.admin.core.service; +import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; +import com.ibeetl.admin.core.annotation.Dict; +import com.ibeetl.admin.core.annotation.Query; import com.ibeetl.admin.core.dao.CoreDictDao; import com.ibeetl.admin.core.entity.CoreDict; +import com.ibeetl.admin.core.entity.CoreUser; import com.ibeetl.admin.core.util.BeetlSqlKit; import com.ibeetl.admin.core.util.enums.DelFlagEnum; import org.apache.commons.lang3.StringUtils; +import org.beetl.core.BeetlKit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -17,6 +22,8 @@ import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; +import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser; + /** * 描述: 字典 service,包含常规字典和级联字典的操作。 * @author : TLT @@ -51,10 +58,15 @@ public class CoreDictService extends CoreBaseService { /** * 根据表和行名获取字典集合 表名.存中文的那一行.参数 参数按照 参数名 条件,参数名 条件...的格式 采用英文逗号 + * {@link Query} 的最终实现方法 + * {@link Dict} 的最终实现方法 * @return List */ @Cacheable(value = CorePlatformService.DICT_CACHE_TYPE, key="#type") public List findAllByTable(String type) { + + type = renderStringTemplate(type, null); + String[] str = type.split("\\."); String tableName = null,filedName = null,params = null; if(str.length>0) @@ -98,7 +110,50 @@ public class CoreDictService extends CoreBaseService { } } -// @Cacheable(value = "core.coreDict.findCoreDictByTable", key="#type+\"_\"+#value") + /** + * 全局的变量 + */ + static Map GLOBAL_PARAMS = MapUtil.builder() + // 通过身份判断,只查询我自己的机构 + .put("seeMyOrgByRole", "${user.isAdmin ? '1=1' : 'find_in_set(org_id,' + user.orgId +')'}") + .build(); + + /** + * 走beetl的渲染 + * @param script + * @return + */ + private String renderStringTemplate(String script, Map params) { + try { + // 获取当前登录人的用户信息。通过request的header中获取 + CoreUser loginUser = getUser(); + // 有使用到beetl模块 + if (script.indexOf("${") >= 0) { + if (params == null) { + params = new HashMap<>(); + params.putAll(GLOBAL_PARAMS); + } + if (loginUser != null && !params.containsKey("user")) { + params.put("user", loginUser); + } + + String resultScript = BeetlKit.render(script, params); + + if (resultScript.indexOf("${") >= 0) { + return renderStringTemplate(resultScript, params); + } + + return resultScript; + } + }catch (Exception e) { + System.out.println(e.getMessage()); + return script; + } + + return script; + } + + // @Cacheable(value = "core.coreDict.findCoreDictByTable", key="#type+\"_\"+#value") public CoreDict findCoreDictByTable(String type,String value) { List list = findAllByTable(type); if(list==null) { diff --git a/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseQuery.java b/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseQuery.java index b0bf5c35..dbef3514 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseQuery.java +++ b/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseQuery.java @@ -26,7 +26,7 @@ public class TeacherOpenCourseQuery extends PageParam { // @Query(name = "封面列表(JSON格式: {封面URL:is默认封面})", display = false) @Query(name = "封面列表", display = false) private String teacherOpenCourseCover; - @Query(name = "上课教师", display = true, type = Query.TYPE_DICT, dict = "teacher.teacher_name.teacher_status=1") + @Query(name = "上课教师", display = true, type = Query.TYPE_DICT, dict = "teacher.teacher_name.teacher_status=1,${seeMyOrgByRole}") private Long teacherId; // @Query(name = "开课状态(1启用 2禁用)", display = true,type=Query.TYPE_DICT,dict=GLOBAL_OPEN_STATUS) @Query(name = "开课状态", display = true, type = Query.TYPE_DICT, dict = GLOBAL_OPEN_STATUS) diff --git a/web/src/main/resources/sql/jlw/universitiesCollegesJurisdictionCurriculumResources.md b/web/src/main/resources/sql/jlw/universitiesCollegesJurisdictionCurriculumResources.md index 3cb5cef0..c5682d04 100644 --- a/web/src/main/resources/sql/jlw/universitiesCollegesJurisdictionCurriculumResources.md +++ b/web/src/main/resources/sql/jlw/universitiesCollegesJurisdictionCurriculumResources.md @@ -79,6 +79,7 @@ queryAllAuthCourseInfoByCondition t.use_end_time, t.second_level_name, t.second_level_logo, + tb.universities_colleges_name, ta.`course_info_id`, ta.`course_info_full_id`, ta.`course_info_name`, @@ -99,7 +100,6 @@ queryAllAuthCourseInfoByCondition ta.`add_time`, ta.org_id, ta.user_id, - tb.universities_colleges_name, tc.course_label_type, tc.course_label_name from course_info ta