教师端-首页

beetlsql3-dev
Mlxa0324 2 years ago
parent 35ea732249
commit 60e4eb508c

@ -1,34 +1,25 @@
package com.ibeetl.admin.core.conf;
import com.ibeetl.admin.core.entity.CoreOrg;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.service.CoreUserService;
import com.ibeetl.admin.core.util.HttpRequestLocal;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.beetl.core.GroupTemplate;
import org.beetl.ext.spring.BeetlGroupUtilConfiguration;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.format.FormatterRegistry;
import org.springframework.format.datetime.DateFormatter;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Configuration
@ConditionalOnMissingClass("cn.jlw.Interceptor.WebSessionInterceptor")
public class MVCConf implements WebMvcConfigurer, InitializingBean {
private final Log log = LogFactory.getLog(this.getClass());
@ -53,23 +44,15 @@ public class MVCConf implements WebMvcConfigurer, InitializingBean {
@Resource
Environment env;
@Resource
CoreUserService userService;
@Resource
BeetlGroupUtilConfiguration beetlGroupUtilConfiguration;
@Resource
HttpRequestLocal httpRequestLocal;
@Resource
GroupTemplate groupTemplate;
@Resource
SessionInterceptor sessionInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new SessionInterceptor(httpRequestLocal, this)).addPathPatterns("/**");
registry.addInterceptor(sessionInterceptor).addPathPatterns("/**");
// super.addInterceptors(registry);
}
@ -123,58 +106,6 @@ public class MVCConf implements WebMvcConfigurer, InitializingBean {
var.put("jsVer", System.currentTimeMillis());
groupTemplate.setSharedVars(var);
}
}
class SessionInterceptor implements HandlerInterceptor {
MVCConf conf;
HttpRequestLocal httpRequestLocal;
public SessionInterceptor(HttpRequestLocal httpRequestLocal, MVCConf conf) {
this.conf = conf;
this.httpRequestLocal = httpRequestLocal;
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// 方便运行时,修改环境变量参数,用于测试类变更登录用户
Long userId = conf.env.getProperty("user.id", Long.class);
Long orgId = conf.env.getProperty("user.orgId", Long.class);
if (userId != null && orgId != null
&& request.getSession().getAttribute(CorePlatformService.ACCESS_CURRENT_USER) == null) {
// 模拟用户登录,用于快速开发,未来用rember么代替
CoreUser user = conf.userService.getUserById(userId);
CoreOrg org = conf.userService.getOrgById(orgId);
List<CoreOrg> orgs = conf.userService.getUserOrg(userId, org.getId());
request.getSession().setAttribute(CorePlatformService.ACCESS_CURRENT_USER, user);
request.getSession().setAttribute(CorePlatformService.ACCESS_CURRENT_ORG, org);
request.getSession().setAttribute(CorePlatformService.ACCESS_USER_ORGS, orgs);
request.getSession().setAttribute("ip", request.getRemoteHost());
}
httpRequestLocal.set(request);
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// do nothing
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// do nothing
}
}

@ -0,0 +1,65 @@
package com.ibeetl.admin.core.conf;
import com.ibeetl.admin.core.entity.CoreOrg;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.service.CoreUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* Session Test
*/
@Component
public class SessionInterceptor implements HandlerInterceptor {
@Resource private CoreUserService userService;
@Autowired private Environment environment;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
/**
* {@link com.ibeetl.admin.core.util.servlet.ServletUtils#getRequest}
* ThreadLocal
*/
// httpRequestLocal.set(request);
// 方便运行时,修改环境变量参数,用于测试类变更登录用户
Long userId = environment.getProperty("user.id", Long.class);
Long orgId = environment.getProperty("user.orgId", Long.class);
if (userId != null && orgId != null
&& request.getSession().getAttribute(CorePlatformService.ACCESS_CURRENT_USER) == null) {
// 模拟用户登录,用于快速开发,未来用rember么代替
CoreUser user = userService.getUserById(userId);
CoreOrg org = userService.getOrgById(orgId);
List<CoreOrg> orgs = userService.getUserOrg(userId, org.getId());
request.getSession().setAttribute(CorePlatformService.ACCESS_CURRENT_USER, user);
request.getSession().setAttribute(CorePlatformService.ACCESS_CURRENT_ORG, org);
request.getSession().setAttribute(CorePlatformService.ACCESS_USER_ORGS, orgs);
request.getSession().setAttribute("ip", request.getRemoteHost());
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// do nothing
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// do nothing
}
}

@ -0,0 +1,123 @@
package com.ibeetl.admin.core.service;
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 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.entity.CoreDict;
import com.ibeetl.admin.core.util.PlatformException;
import org.beetl.sql.core.TailBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.List;
/**
* <p>
*
* CoreBaseService 便
*
* </p>
*
* @author mlx
* @date 2022/10/20
* @modified
*/
public class CoreBaseAnnotationParser {
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Resource
protected CoreDictService dictUtil;
public void queryListAfter(List list) {
list.parallelStream().forEach(this::queryEntityAfter);
}
public void queryEntityAfter(Object bean) {
if (bean == null) {
return;
}
if (!(bean instanceof TailBean)) {
throw new PlatformException("指定的pojo" + bean.getClass() + " 不能获取数据字典需要继承TailBean");
}
TailBean ext = (TailBean) bean;
Class c = ext.getClass();
do {
Field[] fields = c.getDeclaredFields();
for (Field field : fields) {
if (field.isAnnotationPresent(Dict.class)) {
field.setAccessible(true);
Dict dict = field.getAnnotation(Dict.class);
try {
String display = "";
Object fieldValue = field.get(ext);
if (fieldValue != null) {
CoreDict dbDict = dict.type().contains(".") ? dictUtil.findCoreDictByTable(dict.type(), fieldValue.toString()) : dictUtil.findCoreDict(dict.type(), fieldValue.toString());
display = dbDict != null ? dbDict.getName() : null;
}
ext.set(field.getName() + dict.suffix(), display);
} catch (Exception e) {
e.printStackTrace();
} finally {
field.setAccessible(false);
}
}
// 深度解析注解
if (field.isAnnotationPresent(DictDeep.class)) {
field.setAccessible(true);
try {
Object res = field.get(ext);
if (res instanceof List) {
queryListAfter((List) res);
} else {
queryEntityAfter(res);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
field.setAccessible(false);
}
}
// 枚举自动转换中文
if (field.isAnnotationPresent(DictEnum.class)) {
field.setAccessible(true);
DictEnum dict = field.getAnnotation(DictEnum.class);
try {
String display = "";
Method methodByName = ReflectUtil.getMethodByName(field.getType(), "get" + StrUtil.upperFirst(dict.value()));
Assert.notNull(methodByName, field.getName() + " 缺少getter方法");
Object o = field.get(ext);
if(null != o) {
Object enumValue = ReflectUtil.invoke(o, methodByName);
if (ObjectUtil.isNotEmpty(enumValue)) {
display = String.valueOf(enumValue);
}
ext.set(field.getName() + dict.suffix(), display);
}
} catch (IllegalArgumentException | IllegalAccessException e) {
log.error("@DictEnum 注解解析异常: {}", e.getMessage());
} finally {
field.setAccessible(false);
}
}
}
c = c.getSuperclass();
} while (c != TailBean.class);
}
}

@ -2,11 +2,9 @@ package com.ibeetl.admin.core.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.*;
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.entity.CoreDict;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReUtil;
import com.ibeetl.admin.core.util.PlatformException;
import com.ibeetl.admin.core.util.enums.DelFlagEnum;
import org.beetl.sql.core.SQLManager;
@ -16,8 +14,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.HashMap;
@ -29,12 +25,10 @@ import java.util.Map;
* :
* @author : TLT
*/
public class CoreBaseService<T> {
public class CoreBaseService<T> extends CoreBaseAnnotationParser {
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Resource
protected CoreDictService dictUtil;
@Resource
protected SQLManager sqlManager;
@ -348,89 +342,4 @@ public class CoreBaseService<T> {
return (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
public void queryListAfter(List list) {
list.parallelStream().forEach(this::queryEntityAfter);
}
public void queryEntityAfter(Object bean) {
if (bean == null) {
return;
}
if (!(bean instanceof TailBean)) {
throw new PlatformException("指定的pojo" + bean.getClass() + " 不能获取数据字典需要继承TailBean");
}
TailBean ext = (TailBean) bean;
Class c = ext.getClass();
do {
Field[] fields = c.getDeclaredFields();
for (Field field : fields) {
if (field.isAnnotationPresent(Dict.class)) {
field.setAccessible(true);
Dict dict = field.getAnnotation(Dict.class);
try {
String display = "";
Object fieldValue = field.get(ext);
if (fieldValue != null) {
CoreDict dbDict = dict.type().contains(".") ? dictUtil.findCoreDictByTable(dict.type(), fieldValue.toString()) : dictUtil.findCoreDict(dict.type(), fieldValue.toString());
display = dbDict != null ? dbDict.getName() : null;
}
ext.set(field.getName() + dict.suffix(), display);
} catch (Exception e) {
e.printStackTrace();
} finally {
field.setAccessible(false);
}
}
// 深度解析注解
if (field.isAnnotationPresent(DictDeep.class)) {
field.setAccessible(true);
try {
Object res = field.get(ext);
if (res instanceof List) {
queryListAfter((List) res);
} else {
queryEntityAfter(res);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
field.setAccessible(false);
}
}
// 枚举自动转换中文
if (field.isAnnotationPresent(DictEnum.class)) {
field.setAccessible(true);
DictEnum dict = field.getAnnotation(DictEnum.class);
try {
String display = "";
Method methodByName = ReflectUtil.getMethodByName(field.getType(), "get" + StrUtil.upperFirst(dict.value()));
Assert.notNull(methodByName, field.getName() + " 缺少getter方法");
Object o = field.get(ext);
if(null != o) {
Object enumValue = ReflectUtil.invoke(o, methodByName);
if (ObjectUtil.isNotEmpty(enumValue)) {
display = String.valueOf(enumValue);
}
ext.set(field.getName() + dict.suffix(), display);
}
} catch (IllegalArgumentException | IllegalAccessException e) {
log.error("@DictEnum 注解解析异常: {}", e.getMessage());
} finally {
field.setAccessible(false);
}
}
}
c = c.getSuperclass();
} while (c != TailBean.class);
}
}

@ -8,6 +8,8 @@ import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.UnknownHostException;
import static com.ibeetl.admin.core.util.servlet.ServletUtils.getRequest;
/**
* 便
* {@link MVCConf}
@ -17,42 +19,36 @@ import java.net.UnknownHostException;
@Component
public class HttpRequestLocal {
public HttpRequestLocal(){
}
private HttpRequestLocal(){ }
private static final ThreadLocal<HttpServletRequest> requests =
new ThreadLocal<HttpServletRequest>() {
@Override protected HttpServletRequest initialValue() {
return null;
}
};
// private static final ThreadLocal<HttpServletRequest> requests = ThreadLocal.withInitial(() -> null);
public Object getSessionValue(String attr){
return requests.get().getSession().getAttribute(attr);
return getRequest().getSession().getAttribute(attr);
}
public void setSessionValue(String attr,Object obj){
requests.get().getSession().setAttribute(attr,obj);
getRequest().getSession().setAttribute(attr,obj);
}
public String getOriginalToken(){
String token = requests.get().getHeader("token");
HttpServletRequest request = getRequest();
String token = request.getHeader("token");
if("null".equals(token)||"NULL".equals(token)||"undefined".equals(token)||"UNDEFINED".equals(token)){
token = "";
}
if(StringUtils.isBlank(token) && requests.get().getRequestURL().toString().contains("index.do")){//从参数中获取
if(null != requests.get().getParameter("token")){
token = requests.get().getParameter("token");
if(StringUtils.isBlank(token) && request.getRequestURL().toString().contains("index.do")){//从参数中获取
if(null != request.getParameter("token")){
token = request.getParameter("token");
}
}
if(StringUtils.isBlank(token)){//从参数中获取
if(null != requests.get().getHeader("cookie") && requests.get().getHeader("cookie").contains("token=")){
token = requests.get().getHeader("cookie").split("token=")[1];
if(null != request.getHeader("cookie") && request.getHeader("cookie").contains("token=")){
token = request.getHeader("cookie").split("token=")[1];
}
}
@ -68,20 +64,20 @@ public class HttpRequestLocal {
}
public Object getRequestValue(String attr){
return requests.get().getAttribute(attr);
return getRequest().getAttribute(attr);
}
public String getRequestURI(){
return requests.get().getRequestURI();
return getRequest().getRequestURI();
}
public String getRequestIP(){
return getIpAddr(requests.get());
return getIpAddr(getRequest());
}
public void set(HttpServletRequest request){
requests.set(request);
}
// public void set(HttpServletRequest request){
// requests.set(request);
// }
/**
* ip

@ -5,21 +5,31 @@ import com.ibeetl.admin.core.conf.MVCConf;
import com.ibeetl.jlw.entity.FileEntity;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.beetl.core.GroupTemplate;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.format.FormatterRegistry;
import org.springframework.format.datetime.DateFormatter;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
import static com.ibeetl.admin.core.conf.MVCConf.DEFAULT_APP_NAME;
//拦截器
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
public class InterceptorConfig implements WebMvcConfigurer, InitializingBean {
@Resource private GetSCoreUser getSCoreUser;
@Resource private GetFile getFile;
@ -27,6 +37,13 @@ public class InterceptorConfig implements WebMvcConfigurer {
@Resource private GetReferer getReferer;
@Resource private GetIp getIp;
@Resource private WebSessionInterceptor webSessionInterceptor;
@Resource
Environment environment;
@Resource
GroupTemplate groupTemplate;
private final Log log = LogFactory.getLog(this.getClass());
private static String p = new FileEntity().getParentPath();
@ -47,6 +64,7 @@ public class InterceptorConfig implements WebMvcConfigurer {
registry.addInterceptor(authenticationInterceptor())
.addPathPatterns("/**");
registry.addInterceptor(aliPayInterceptor()).addPathPatterns("/**");
registry.addInterceptor(webSessionInterceptor).addPathPatterns("/**");
}
//配置图片访问路径转换
@ -89,4 +107,27 @@ public class InterceptorConfig implements WebMvcConfigurer {
argumentResolvers.add(getIp);
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addFormatter(new DateFormatter("yyyy-MM-dd HH:mm:ss"));
registry.addFormatter(new DateFormatter("yyyy-MM-dd"));
}
@Override
public void afterPropertiesSet() throws Exception {
Map<String, Object> var = new HashMap<>(5);
String appName = environment.getProperty("app.name");
if(appName==null) {
var.put("appName",DEFAULT_APP_NAME);
}
var.put("jsVer", System.currentTimeMillis());
groupTemplate.setSharedVars(var);
}
}

@ -0,0 +1,71 @@
package cn.jlw.Interceptor;
import com.ibeetl.admin.core.entity.CoreOrg;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.service.CorePlatformService;
import com.ibeetl.admin.core.service.CoreUserService;
import com.ibeetl.jlw.service.WebPlatformService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* Session Test
*/
@Component
public class WebSessionInterceptor implements HandlerInterceptor {
@Resource private CoreUserService userService;
@Autowired private Environment environment;
@Autowired private WebPlatformService webPlatformService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
/**
* {@link com.ibeetl.admin.core.util.servlet.ServletUtils#getRequest}
* ThreadLocal
*/
// httpRequestLocal.set(request);
// 方便运行时,修改环境变量参数,用于测试类变更登录用户
Long userId = environment.getProperty("user.id", Long.class);
Long orgId = environment.getProperty("user.orgId", Long.class);
if (userId != null && orgId != null
&& request.getSession().getAttribute(CorePlatformService.ACCESS_CURRENT_USER) == null) {
// 模拟用户登录,用于快速开发,未来用rember么代替
CoreUser user = userService.getUserById(userId);
CoreOrg org = userService.getOrgById(orgId);
List<CoreOrg> orgs = userService.getUserOrg(userId, org.getId());
request.getSession().setAttribute(CorePlatformService.ACCESS_CURRENT_USER, user);
request.getSession().setAttribute(CorePlatformService.ACCESS_CURRENT_ORG, org);
request.getSession().setAttribute(CorePlatformService.ACCESS_USER_ORGS, orgs);
request.getSession().setAttribute(CorePlatformService.ACCESS_USER_ORGS, orgs);
request.getSession().setAttribute("ip", request.getRemoteHost());
// 根据身份设置Session用户信息
webPlatformService.setUserInfoToSessionByIdentity(user);
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// do nothing
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// do nothing
}
}

@ -22,5 +22,6 @@ public interface TeacherMergeApplicationDao extends BaseMapper<TeacherMergeAppli
int updateGivenByIds(TeacherMergeApplicationQuery teacherMergeApplicationQuery);
List<TeacherMergeApplication> getByIds(String ids);
List<TeacherMergeApplication> getValuesByQuery(TeacherMergeApplicationQuery teacherMergeApplicationQuery);
List<TeacherMergeApplication> getValuesByQueryOrderByIndex(TeacherMergeApplicationQuery teacherMergeApplicationQuery);
List<TeacherMergeApplication> getValuesByQueryNotWithPermission(TeacherMergeApplicationQuery teacherMergeApplicationQuery);
}

@ -5,10 +5,11 @@ import com.ibeetl.admin.core.entity.BaseEntity;
import com.ibeetl.admin.core.util.ValidateConfig;
import org.beetl.sql.annotation.entity.AssignID;
import org.beetl.sql.fetch.annotation.Fetch;
import org.beetl.sql.fetch.annotation.FetchOne;
import org.beetl.sql.fetch.annotation.FetchSql;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.Map;
/*
* --
@ -34,8 +35,9 @@ public class TeacherMergeApplication extends BaseEntity{
private Long resourcesApplicationId ;
@FetchOne("resourcesApplicationId")
private ResourcesApplication resourcesApplication;
@FetchSql("select resources_application_id, application_name, application_link, application_carousel, application_introduction, application_info, application_introduction_original, application_info_original " +
" from resources_application t where t.resources_application_id = #resourcesApplicationId# ")
private Map resourcesApplication;
//排序
@ -148,11 +150,11 @@ public class TeacherMergeApplication extends BaseEntity{
}
public ResourcesApplication getResourcesApplication() {
public Map getResourcesApplication() {
return resourcesApplication;
}
public void setResourcesApplication(ResourcesApplication resourcesApplication) {
public void setResourcesApplication(Map resourcesApplication) {
this.resourcesApplication = resourcesApplication;
}
}

@ -33,7 +33,7 @@ public class TeacherOpenCourse extends BaseEntity{
private String teacherOpenCourseCode ;
//封面列表JSON格式: {封面URLis默认封面}
// 也可以是 逗号隔开的图片列表,第一个是默认封面。只需要控制图片保存时候的位置。
private String teacherOpenCourseCover ;
//开课状态1启用 2禁用

@ -4,14 +4,18 @@ import com.ibeetl.admin.core.annotation.Dict;
import com.ibeetl.admin.core.entity.BaseEntity;
import com.ibeetl.admin.core.util.ValidateConfig;
import org.beetl.sql.annotation.entity.AssignID;
import org.beetl.sql.fetch.annotation.Fetch;
import org.beetl.sql.fetch.annotation.FetchSql;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.Map;
/*
* --
* gen by Spring Boot2 Admin 2022-09-12
*/
@Fetch
public class TeacherOpenCourseMergeTeacher extends BaseEntity{
//课程开课教师关联ID
@ -25,6 +29,11 @@ public class TeacherOpenCourseMergeTeacher extends BaseEntity{
@Dict(type="teacher_open_course.teacher_open_course_title.teacher_open_course_status=1")
private Long teacherOpenCourseId ;
@FetchSql("select teacher_open_course_id, teacher_open_course_title, teacher_open_course_code, " +
"teacher_open_course_cover, start_time,end_time,create_time " +
"from teacher_open_course where teacher_open_course_status = 1 and teacher_open_course_id = #teacherOpenCourseId# ")
private Map teacherOpenCourse;
//教师ID
@Dict(type="teacher.teacher_name.teacher_status=1")
@ -154,4 +163,11 @@ public class TeacherOpenCourseMergeTeacher extends BaseEntity{
this.teacherOpenCourseMergeTeacherAuthCode = teacherOpenCourseMergeTeacherAuthCode;
}
public Map getTeacherOpenCourse() {
return teacherOpenCourse;
}
public void setTeacherOpenCourse(Map teacherOpenCourse) {
this.teacherOpenCourse = teacherOpenCourse;
}
}

@ -1,4 +1,4 @@
package com.ibeetl.jlw.entity;
package com.ibeetl.jlw.entity.api;
import com.ibeetl.admin.core.annotation.DictDeep;
import com.ibeetl.admin.core.entity.CoreUser;
@ -7,13 +7,14 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.beetl.sql.core.TailBean;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Accessors(chain = true)
public class CurrentUserInfo {
public class CurrentUserInfo extends TailBean {
/**
*

@ -1,12 +1,17 @@
package com.ibeetl.jlw.entity.api.teacher;
import com.ibeetl.admin.core.annotation.DictDeep;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.jlw.entity.TeacherMergeApplication;
import com.ibeetl.jlw.entity.TeacherOpenCourseMergeTeacher;
import com.ibeetl.jlw.entity.TeacherOpenCourseNotice;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.beetl.sql.core.TailBean;
import org.beetl.sql.fetch.annotation.Fetch;
import java.util.List;
/**
* -
@ -16,17 +21,28 @@ import lombok.experimental.Accessors;
@AllArgsConstructor
@Builder
@Accessors(chain = true)
public class TeacherIndexData {
@Fetch(level = 2)
public class TeacherIndexData extends TailBean {
/**
*
* TODO xuliangtong
*/
private List<Object> toDoList;
/**
*
*/
private List<TeacherOpenCourseNotice> noticeList;
/**
*
*
*/
@DictDeep
private CoreUser coreUser;
private List<TeacherMergeApplication> myApplicationList;
/**
*
*
*/
private Object identityInfo;
private List<TeacherOpenCourseMergeTeacher> myOpenCourseList;
}

@ -1,6 +1,6 @@
package com.ibeetl.jlw.service;
import com.ibeetl.jlw.entity.CurrentUserInfo;
import com.ibeetl.jlw.entity.api.CurrentUserInfo;
import org.springframework.stereotype.Service;
@Service

@ -1,7 +1,8 @@
package com.ibeetl.jlw.service;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.jlw.entity.CurrentUserInfo;
import com.ibeetl.admin.core.service.CoreBaseAnnotationParser;
import com.ibeetl.jlw.entity.api.CurrentUserInfo;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -9,7 +10,7 @@ import javax.annotation.Resource;
import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUser;
@Service
public class IndexBaseService {
public class IndexBaseService extends CoreBaseAnnotationParser {
@Resource private WebPlatformService webPlatformService;
@ -21,8 +22,12 @@ public class IndexBaseService {
*/
public CurrentUserInfo userInfo() {
CoreUser user = getUser();
return CurrentUserInfo.builder().coreUser(user)
CurrentUserInfo currentUserInfo = CurrentUserInfo.builder().coreUser(user)
.identityInfo(webPlatformService.getUserInfoFromSessionByIdentity(user))
.build();
// 解析注解
queryEntityAfter(currentUserInfo);
return currentUserInfo;
}
}

@ -1,8 +1,25 @@
package com.ibeetl.jlw.service.api.teacher;
import cn.hutool.core.lang.Assert;
import com.ibeetl.jlw.dao.TeacherMergeApplicationDao;
import com.ibeetl.jlw.entity.Teacher;
import com.ibeetl.jlw.entity.TeacherMergeApplication;
import com.ibeetl.jlw.entity.TeacherOpenCourseMergeTeacher;
import com.ibeetl.jlw.entity.TeacherOpenCourseNotice;
import com.ibeetl.jlw.entity.api.CurrentUserInfo;
import com.ibeetl.jlw.entity.api.teacher.TeacherIndexData;
import com.ibeetl.jlw.service.IndexBaseService;
import com.ibeetl.jlw.service.TeacherOpenCourseMergeTeacherService;
import com.ibeetl.jlw.service.TeacherOpenCourseNoticeService;
import com.ibeetl.jlw.web.query.TeacherMergeApplicationQuery;
import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeTeacherQuery;
import com.ibeetl.jlw.web.query.TeacherOpenCourseNoticeQuery;
import org.assertj.core.util.Lists;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* <p>
*
@ -15,12 +32,49 @@ import org.springframework.stereotype.Service;
@Service
public class TeacherIndexService {
@Resource private IndexBaseService indexBaseService;
@Resource private TeacherOpenCourseNoticeService teacherOpenCourseNoticeService;
@Resource private TeacherMergeApplicationDao teacherMergeApplicationDao;
@Resource private TeacherOpenCourseMergeTeacherService teacherOpenCourseMergeTeacherService;
/**
* -
* @return
*/
public TeacherIndexData index() {
return new TeacherIndexData();
// 自动根据登录的身份获取当前用户信息。
CurrentUserInfo currentUserInfo = indexBaseService.userInfo();
Object identityInfo = currentUserInfo.getIdentityInfo();
Assert.isTrue(identityInfo instanceof Teacher, "该接口只能老师访问!");
// 教师ID
final Long teacherId = ((Teacher) identityInfo).getTeacherId();
// TODO xuliangtong 实训评阅列表查询
List<Object> toDoList = Lists.emptyList();
// 我的通知
TeacherOpenCourseNoticeQuery teacherOpenCourseNoticeQuery = new TeacherOpenCourseNoticeQuery();
teacherOpenCourseNoticeQuery.setCreateByTeacherId(teacherId);
List<TeacherOpenCourseNotice> noticeList = teacherOpenCourseNoticeService.getValuesByQuery(teacherOpenCourseNoticeQuery);
// 教师应用信息
TeacherMergeApplicationQuery teacherMergeApplicationQuery = new TeacherMergeApplicationQuery();
teacherMergeApplicationQuery.setTeacherId(teacherId);
List<TeacherMergeApplication> applicationList = teacherMergeApplicationDao.getValuesByQueryOrderByIndex(teacherMergeApplicationQuery);
// 我的开课信息
TeacherOpenCourseMergeTeacherQuery teacherOpenCourseMergeTeacherQuery = new TeacherOpenCourseMergeTeacherQuery();
teacherOpenCourseMergeTeacherQuery.setTeacherId(teacherId);
List<TeacherOpenCourseMergeTeacher> openCourseList = teacherOpenCourseMergeTeacherService.getValuesByQuery(teacherOpenCourseMergeTeacherQuery);
return TeacherIndexData.builder()
.toDoList(toDoList)
.noticeList(noticeList)
.myApplicationList(applicationList)
.myOpenCourseList(openCourseList)
.build();
}
}

@ -1,7 +1,7 @@
package com.ibeetl.jlw.web.api;
import com.ibeetl.admin.core.web.JsonResult;
import com.ibeetl.jlw.entity.CurrentUserInfo;
import com.ibeetl.jlw.entity.api.CurrentUserInfo;
import com.ibeetl.jlw.service.IndexBaseService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

@ -19,6 +19,10 @@ public class TeacherIndexController {
@Resource private TeacherIndexService teacherIndexService;
/**
* -
* @return
*/
@PostMapping(API + "/index.do")
public JsonResult<TeacherIndexData> index() {
return JsonResult.success(teacherIndexService.index());

@ -7,7 +7,7 @@ queryByCondition
t.*
@}
from resources_application t
left join teacher_merge_application ta on ta.application_id = t.resources_application_id
left join teacher_merge_application ta on ta.resources_application_id = t.resources_application_id
where 1=1
@//数据权限该sql语句功能点,如果不考虑数据权限,可以删除此行
and #function("resourcesApplication.query")#
@ -65,7 +65,7 @@ queryByCondition
@if(isNotEmpty(coreUser) && isTeacher) {
and ta.teacher_id = (select teacher_id from teacher where user_id = #coreUser.id#)
@}
order by ta.order_index asc
order by ta.teacher_merge_application_order_index asc

@ -243,6 +243,52 @@ getValuesByQuery
and find_in_set(t.user_id,#userIdPlural#)
@}
getValuesByQueryOrderByIndex
===
* 根据不为空的参数进行查询 根据排序字段 排序
select t.*
from teacher_merge_application t
where 1=1 and #function("teacherMergeApplication.query")#
@if(!isEmpty(teacherMergeApplicationId)){
and t.teacher_merge_application_id =#teacherMergeApplicationId#
@}
@if(!isEmpty(teacherMergeApplicationIdPlural)){
and find_in_set(t.teacher_merge_application_id,#teacherMergeApplicationIdPlural#)
@}
@if(!isEmpty(teacherId)){
and t.teacher_id =#teacherId#
@}
@if(!isEmpty(teacherIdPlural)){
and find_in_set(t.teacher_id,#teacherIdPlural#)
@}
@if(!isEmpty(resourcesApplicationId)){
and t.resources_application_id =#resourcesApplicationId#
@}
@if(!isEmpty(resourcesApplicationIdPlural)){
and find_in_set(t.resources_application_id,#resourcesApplicationIdPlural#)
@}
@if(!isEmpty(teacherMergeApplicationOrderIndex)){
and t.teacher_merge_application_order_index =#teacherMergeApplicationOrderIndex#
@}
@if(!isEmpty(teacherMergeApplicationAddTime)){
and t.teacher_merge_application_add_time =#teacherMergeApplicationAddTime#
@}
@if(!isEmpty(orgId)){
and t.org_id =#orgId#
@}
@if(!isEmpty(orgIdPlural)){
and find_in_set(t.org_id,#orgIdPlural#)
@}
@if(!isEmpty(userId)){
and t.user_id =#userId#
@}
@if(!isEmpty(userIdPlural)){
and find_in_set(t.user_id,#userIdPlural#)
@}
order by t.teacher_merge_application_order_index desc
getValuesByQueryNotWithPermission
===

@ -0,0 +1,43 @@
package com.ibeetl.jlw.web.api.teacher;
import base.BaseTest;
import org.junit.jupiter.api.Test;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import java.nio.charset.Charset;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
/**
* <p>
*
* </p>
*
* @author mlx
* @date 2022/10/20
* @modified
*/
class TeacherIndexControllerTest extends BaseTest {
private static final String API = "/api/teacherIndex";
@Test
void index() throws Exception {
//构造请求参数
RequestBuilder rb = MockMvcRequestBuilders.post(API + "/index.do");
// 测试账号,佟老师
putLoginInfoToEnv("102", "26");
//发送请求,验证返回结果
String result = mvc.perform(rb)
.andExpect(status().isOk())
.andExpect(MockMvcResultMatchers.jsonPath("$.code").value("0"))
.andReturn().getResponse().getContentAsString(Charset.defaultCharset());
System.out.println(result);
clearEnvLoginInfo();
}
}
Loading…
Cancel
Save