diff --git a/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseNoticeDao.java b/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseNoticeDao.java
new file mode 100644
index 00000000..49c132ea
--- /dev/null
+++ b/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseNoticeDao.java
@@ -0,0 +1,27 @@
+package com.ibeetl.jlw.dao;
+
+import java.util.List;
+import java.util.Map;
+
+import  com.ibeetl.jlw.entity.*;
+import com.ibeetl.jlw.web.query.TeacherOpenCourseNoticeQuery;
+
+import org.beetl.sql.mapper.annotation.SqlResource;
+import org.beetl.sql.mapper.BaseMapper;
+import org.beetl.sql.core.engine.PageQuery;
+import org.beetl.sql.mapper.annotation.Update;
+
+/**
+ * 通知公告 Dao
+ */
+@SqlResource("jlw.teacherOpenCourseNotice")
+public interface TeacherOpenCourseNoticeDao extends BaseMapper<TeacherOpenCourseNotice>{
+    PageQuery<TeacherOpenCourseNotice> queryByCondition(PageQuery query);
+    PageQuery<TeacherOpenCourseNotice> queryByConditionQuery(PageQuery query);
+    @Update
+    void deleteTeacherOpenCourseNoticeByIds(String ids);
+    @Update
+    int updateGivenByIds(TeacherOpenCourseNoticeQuery teacherOpenCourseNoticeQuery);
+    List<TeacherOpenCourseNotice> getByIds(String ids);
+    List<TeacherOpenCourseNotice> getValuesByQuery(TeacherOpenCourseNoticeQuery teacherOpenCourseNoticeQuery);
+}
diff --git a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseNotice.java b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseNotice.java
new file mode 100644
index 00000000..16787640
--- /dev/null
+++ b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseNotice.java
@@ -0,0 +1,201 @@
+package com.ibeetl.jlw.entity;
+
+import javax.validation.constraints.NotNull;
+
+import com.ibeetl.admin.core.entity.BaseEntity;
+import org.beetl.sql.annotation.entity.*;
+
+import com.ibeetl.admin.core.util.ValidateConfig;
+
+import com.ibeetl.admin.core.annotation.Dict;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/* 
+* 教师-课程开课-通知公告
+* gen by Spring Boot2 Admin 2022-10-06
+*/
+public class TeacherOpenCourseNotice extends BaseEntity{
+
+    //系统通知公告ID
+    @NotNull(message = "ID不能为空", groups =ValidateConfig.UPDATE.class)
+    // @SeqID(name = ORACLE_CORE_SEQ_NAME)
+    @AssignID(value = "maskAutoID",param = "com.ibeetl.jlw.entity.TeacherOpenCourseNotice")
+
+    private Long teacherOpenCourseNoticeId ;
+	
+    //班级ID(多个逗号隔开)
+
+    private String schoolClassIds ;
+	
+    //课程开课ID(多个逗号隔开)
+
+    private String teacherOpenCourseIds ;
+	
+    //消息标题
+
+    private String noticeTitle ;
+	
+    //消息正文
+
+    private String noticeContent ;
+	
+    //创建时间
+
+    private Date createTime ;
+	
+    //消息创建--老师ID
+
+    private Long createByTeacherId ;
+	
+    //组织ID
+
+    private Long orgId ;
+	
+    //用户ID
+
+    private Long userId ;
+	
+    //是否删除 1删除,0未删除
+	/*逻辑删除标志*/
+	@InsertIgnore
+	@LogicDelete(value = 1)
+
+    private Integer delFlag ;
+	
+    public TeacherOpenCourseNotice(){
+    }
+
+    /**系统通知公告ID
+    *@return 
+    */
+    public Long getTeacherOpenCourseNoticeId(){
+        return  teacherOpenCourseNoticeId;
+    }
+    /**系统通知公告ID
+    *@param  teacherOpenCourseNoticeId
+    */
+    public void setTeacherOpenCourseNoticeId(Long teacherOpenCourseNoticeId){
+        this.teacherOpenCourseNoticeId = teacherOpenCourseNoticeId;
+    }
+
+    /**班级ID(多个逗号隔开)
+    *@return 
+    */
+    public String getSchoolClassIds(){
+        return  schoolClassIds;
+    }
+    /**班级ID(多个逗号隔开)
+    *@param  schoolClassIds
+    */
+    public void setSchoolClassIds(String schoolClassIds){
+        this.schoolClassIds = schoolClassIds;
+    }
+
+    /**课程开课ID(多个逗号隔开)
+    *@return 
+    */
+    public String getTeacherOpenCourseIds(){
+        return  teacherOpenCourseIds;
+    }
+    /**课程开课ID(多个逗号隔开)
+    *@param  teacherOpenCourseIds
+    */
+    public void setTeacherOpenCourseIds(String teacherOpenCourseIds){
+        this.teacherOpenCourseIds = teacherOpenCourseIds;
+    }
+
+    /**消息标题
+    *@return 
+    */
+    public String getNoticeTitle(){
+        return  noticeTitle;
+    }
+    /**消息标题
+    *@param  noticeTitle
+    */
+    public void setNoticeTitle(String noticeTitle){
+        this.noticeTitle = noticeTitle;
+    }
+
+    /**消息正文
+    *@return 
+    */
+    public String getNoticeContent(){
+        return  noticeContent;
+    }
+    /**消息正文
+    *@param  noticeContent
+    */
+    public void setNoticeContent(String noticeContent){
+        this.noticeContent = noticeContent;
+    }
+
+    /**创建时间
+    *@return 
+    */
+    public Date getCreateTime(){
+        return  createTime;
+    }
+    /**创建时间
+    *@param  createTime
+    */
+    public void setCreateTime(Date createTime){
+        this.createTime = createTime;
+    }
+
+    /**消息创建--老师ID
+    *@return 
+    */
+    public Long getCreateByTeacherId(){
+        return  createByTeacherId;
+    }
+    /**消息创建--老师ID
+    *@param  createByTeacherId
+    */
+    public void setCreateByTeacherId(Long createByTeacherId){
+        this.createByTeacherId = createByTeacherId;
+    }
+
+    /**组织ID
+    *@return 
+    */
+    public Long getOrgId(){
+        return  orgId;
+    }
+    /**组织ID
+    *@param  orgId
+    */
+    public void setOrgId(Long orgId){
+        this.orgId = orgId;
+    }
+
+    /**用户ID
+    *@return 
+    */
+    public Long getUserId(){
+        return  userId;
+    }
+    /**用户ID
+    *@param  userId
+    */
+    public void setUserId(Long userId){
+        this.userId = userId;
+    }
+
+    /**是否删除 1删除,0未删除
+    *@return 
+    */
+    public Integer getDelFlag(){
+        return  delFlag;
+    }
+    /**是否删除 1删除,0未删除
+    *@param  delFlag
+    */
+    public void setDelFlag(Integer delFlag){
+        this.delFlag = delFlag;
+    }
+
+
+}
diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseNoticeService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseNoticeService.java
new file mode 100644
index 00000000..5d84d510
--- /dev/null
+++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseNoticeService.java
@@ -0,0 +1,165 @@
+package com.ibeetl.jlw.service;
+
+import java.io.*;
+import java.text.DateFormat;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.math.BigDecimal;
+
+import cn.jlw.util.ToolUtils;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.ibeetl.admin.core.entity.CoreUser;
+import com.ibeetl.admin.core.util.TimeTool;
+import com.ibeetl.admin.core.web.JsonResult;
+import com.ibeetl.admin.core.web.JsonReturnCode;
+import com.ibeetl.jlw.dao.TeacherOpenCourseNoticeDao;
+import com.ibeetl.jlw.entity.TeacherOpenCourseNotice;
+import com.ibeetl.jlw.web.query.TeacherOpenCourseNoticeQuery;
+import com.ibeetl.jlw.entity.FileEntity;
+
+import com.ibeetl.admin.core.service.CoreBaseService;
+import com.ibeetl.admin.core.util.PlatformException;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.beetl.sql.core.engine.PageQuery;
+import org.beetl.sql.core.SqlId;
+import javax.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+/**
+ * 通知公告 Service
+ * 当分布式ID开启后请勿使用insert(*,true)
+ */
+
+@Service
+@Transactional
+@Validated
+public class TeacherOpenCourseNoticeService extends CoreBaseService<TeacherOpenCourseNotice>{
+
+    @Resource private TeacherOpenCourseNoticeDao teacherOpenCourseNoticeDao;
+
+    public PageQuery<TeacherOpenCourseNotice>queryByCondition(PageQuery query){
+        PageQuery ret =  teacherOpenCourseNoticeDao.queryByCondition(query);
+        queryListAfter(ret.getList());
+        return ret;
+    }
+
+    public PageQuery<TeacherOpenCourseNotice>queryByConditionQuery(PageQuery query){
+        PageQuery ret =  teacherOpenCourseNoticeDao.queryByConditionQuery(query);
+        queryListAfter(ret.getList());
+        return ret;
+    }
+
+    public void deleteByList(List list){
+        String ids = "";
+        ToolUtils.deleteNullList(list);
+        for(int i=0;null != list && i<list.size();i++){
+            ids += list.get(i).toString()+(i==list.size()-1?"":",");
+        }
+        if(StringUtils.isNotBlank(ids)){
+            teacherOpenCourseNoticeDao.deleteTeacherOpenCourseNoticeByIds(ids);
+        }
+    }
+
+    public void deleteTeacherOpenCourseNotice(String ids){
+        try {
+            teacherOpenCourseNoticeDao.deleteTeacherOpenCourseNoticeByIds(ids);
+        } catch (Exception e) {
+            throw new PlatformException("批量删除通知公告失败", e);
+        }
+    }
+
+    public String addAll(TeacherOpenCourseNoticeQuery teacherOpenCourseNoticeQuery){
+        String msg = "";
+        List<TeacherOpenCourseNotice> teacherOpenCourseNoticeList = new ArrayList<>();
+        try {
+            teacherOpenCourseNoticeList = JSON.parseArray(teacherOpenCourseNoticeQuery.getTeacherOpenCourseNoticeJsonStr(), TeacherOpenCourseNotice.class);
+        } catch (Exception e) {
+            try {
+                teacherOpenCourseNoticeList.add(JSONObject.parseObject(teacherOpenCourseNoticeQuery.getTeacherOpenCourseNoticeJsonStr(), TeacherOpenCourseNotice.class));
+            } catch (Exception e1) {}
+        }
+        ToolUtils.deleteNullList(teacherOpenCourseNoticeList);
+        if(null != teacherOpenCourseNoticeList && teacherOpenCourseNoticeList.size()>0){
+            for(int i=0;i<teacherOpenCourseNoticeList.size();i++){
+                TeacherOpenCourseNotice teacherOpenCourseNotice = teacherOpenCourseNoticeList.get(i);
+                teacherOpenCourseNotice.setUserId(teacherOpenCourseNoticeQuery.getUserId());
+                teacherOpenCourseNotice.setOrgId(teacherOpenCourseNoticeQuery.getOrgId());
+            }
+            insertBatch(teacherOpenCourseNoticeList);
+        }
+        return msg;
+    }
+
+    public JsonResult add(TeacherOpenCourseNoticeQuery teacherOpenCourseNoticeQuery){
+        String msg = "";
+        TeacherOpenCourseNotice teacherOpenCourseNotice = teacherOpenCourseNoticeQuery.pojo();
+        teacherOpenCourseNoticeDao.insert(teacherOpenCourseNotice);
+        teacherOpenCourseNoticeQuery.setTeacherOpenCourseNoticeId(teacherOpenCourseNotice.getTeacherOpenCourseNoticeId());
+        JsonResult jsonResult = new JsonResult();
+        jsonResult.setData(teacherOpenCourseNotice.getTeacherOpenCourseNoticeId());//自增的ID丢进去
+        jsonResult.setCode(JsonReturnCode.SUCCESS.getCode());
+        jsonResult.setMsg(msg);
+        return jsonResult;
+    }
+
+    public String edit(TeacherOpenCourseNoticeQuery teacherOpenCourseNoticeQuery){
+        String msg = "";
+        TeacherOpenCourseNotice teacherOpenCourseNotice = teacherOpenCourseNoticeQuery.pojo();
+        teacherOpenCourseNoticeDao.updateTemplateById(teacherOpenCourseNotice);
+        return msg;
+    }
+
+    public String updateGivenByIds(TeacherOpenCourseNoticeQuery teacherOpenCourseNoticeQuery){
+        String msg = "";
+        if(StringUtils.isNotBlank(teacherOpenCourseNoticeQuery.get_given())){
+            boolean flag = teacherOpenCourseNoticeDao.updateGivenByIds(teacherOpenCourseNoticeQuery) > 0;
+            if(!flag){
+                msg = "更新指定参数失败";
+            }
+        }else{
+            msg = "指定参数为空";
+        }
+        return msg;
+    }
+
+    public List<TeacherOpenCourseNotice> getValues (Object paras){
+        return sqlManager.select(SqlId.of("jlw.teacherOpenCourseNotice.getTeacherOpenCourseNoticeValues"), TeacherOpenCourseNotice.class, paras);
+    }
+
+    public List<TeacherOpenCourseNotice> getValuesByQuery (TeacherOpenCourseNoticeQuery teacherOpenCourseNoticeQuery){
+        return teacherOpenCourseNoticeDao.getValuesByQuery(teacherOpenCourseNoticeQuery);
+    }
+
+    public TeacherOpenCourseNotice getInfo (Long teacherOpenCourseNoticeId){
+        TeacherOpenCourseNoticeQuery teacherOpenCourseNoticeQuery = new TeacherOpenCourseNoticeQuery();
+        teacherOpenCourseNoticeQuery.setTeacherOpenCourseNoticeId(teacherOpenCourseNoticeId);
+        List<TeacherOpenCourseNotice> list = teacherOpenCourseNoticeDao.getValuesByQuery(teacherOpenCourseNoticeQuery);
+        if(null != list && list.size()>0){
+            return list.get(0);
+        }else{
+            return null;
+        }
+    }
+
+    public TeacherOpenCourseNotice getInfo (TeacherOpenCourseNoticeQuery teacherOpenCourseNoticeQuery){
+        List<TeacherOpenCourseNotice> list = teacherOpenCourseNoticeDao.getValuesByQuery(teacherOpenCourseNoticeQuery);
+        if(null != list && list.size()>0){
+            return list.get(0);
+        }else{
+            return null;
+        }
+    }
+
+}
diff --git a/web/src/main/java/com/ibeetl/jlw/web/StatisticalAnalysisController.java b/web/src/main/java/com/ibeetl/jlw/web/StatisticalAnalysisController.java
new file mode 100644
index 00000000..5aae1eb3
--- /dev/null
+++ b/web/src/main/java/com/ibeetl/jlw/web/StatisticalAnalysisController.java
@@ -0,0 +1,27 @@
+package com.ibeetl.jlw.web;
+
+import com.ibeetl.admin.core.web.JsonResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * 统计分析web
+ *
+ * @Version 0.0.1
+ * @Author 许良彤
+ * @Date 2022/10/6 11:08
+ */
+@RestController
+@RequestMapping("/statisticalAnalysis")
+public class StatisticalAnalysisController {
+
+    @RequestMapping("/detail")
+    public JsonResult<Object> detail(@RequestBody Map<String, Object> map) {
+        return null;
+
+    }
+
+}
\ No newline at end of file
diff --git a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseNoticeController.java b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseNoticeController.java
new file mode 100644
index 00000000..8a937e88
--- /dev/null
+++ b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseNoticeController.java
@@ -0,0 +1,224 @@
+package com.ibeetl.jlw.web;
+
+import cn.jlw.Interceptor.RFile;
+import cn.jlw.Interceptor.SCoreUser;
+import cn.jlw.Interceptor.GetFile;
+import cn.jlw.util.ToolUtils;
+import cn.jlw.validate.ValidateConfig;
+import com.ibeetl.admin.core.entity.CoreUser;
+import com.ibeetl.admin.core.file.FileService;
+import com.ibeetl.admin.core.util.ConvertUtil;
+import com.ibeetl.admin.core.util.PlatformException;
+import com.ibeetl.admin.core.util.TimeTool;
+import com.ibeetl.admin.core.web.JsonResult;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.beetl.sql.core.engine.PageQuery;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.validation.annotation.Validated;
+
+import com.ibeetl.admin.console.web.dto.DictExcelImportData;
+import com.ibeetl.admin.console.web.query.UserQuery;
+import com.ibeetl.admin.core.annotation.Function;
+import com.ibeetl.jlw.entity.*;
+import com.ibeetl.jlw.service.*;
+import com.ibeetl.jlw.web.query.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.math.BigDecimal;
+
+import javax.annotation.Resource;
+
+/**
+ * 通知公告 教师-课程开课-通知公告 接口
+ * 切记不要对非线程安全的静态变量进行写操作
+ */
+
+@RestController
+@Validated
+public class TeacherOpenCourseNoticeController{
+
+    private final Log log = LogFactory.getLog(this.getClass());
+    private static final String MODEL = "/jlw/teacherOpenCourseNotice";
+    private static final String API = "/api/teacherOpenCourseNotice";
+
+
+    @Resource private TeacherOpenCourseNoticeService teacherOpenCourseNoticeService;
+
+    @Resource FileService fileService;
+
+    /* 前端接口 */
+
+    @PostMapping(API + "/getPageList.do")
+    public JsonResult<PageQuery> getPageList(TeacherOpenCourseNoticeQuery condition,@SCoreUser CoreUser coreUser){
+        if(null == coreUser){
+            return JsonResult.failMessage("请登录后再操作");
+        }else{
+            PageQuery page = condition.getPageQuery();
+            teacherOpenCourseNoticeService.queryByConditionQuery(page);
+            return JsonResult.success(page);
+        }
+    }
+
+
+    @GetMapping(API + "/getInfo.do")
+    public JsonResult<TeacherOpenCourseNotice>getInfo(TeacherOpenCourseNoticeQuery param,@SCoreUser CoreUser coreUser) {
+        if(null == coreUser){
+            return JsonResult.failMessage("请登录后再操作");
+        }else{
+            TeacherOpenCourseNotice teacherOpenCourseNotice = teacherOpenCourseNoticeService.getInfo(param);
+            return  JsonResult.success(teacherOpenCourseNotice);
+        }
+    }
+
+
+    @GetMapping(API + "/getList.do")
+    public JsonResult<List<TeacherOpenCourseNotice>>getList(TeacherOpenCourseNoticeQuery param,@SCoreUser CoreUser coreUser) {
+        if(null == coreUser){
+            return JsonResult.failMessage("请登录后再操作");
+        }else{
+            List<TeacherOpenCourseNotice>list = teacherOpenCourseNoticeService.getValuesByQuery(param);
+            return  JsonResult.success(list);
+        }
+    }
+
+
+    /* 后台页面 */
+
+    @GetMapping(MODEL + "/index.do")
+    @Function("teacherOpenCourseNotice.query")
+    public ModelAndView index() {
+        ModelAndView view = new ModelAndView("/jlw/teacherOpenCourseNotice/index.html") ;
+        view.addObject("search", TeacherOpenCourseNoticeQuery.class.getName());
+        return view;
+    }
+
+    @GetMapping(MODEL + "/edit.do")
+    @Function("teacherOpenCourseNotice.edit")
+    public ModelAndView edit(Long teacherOpenCourseNoticeId) {
+        ModelAndView view = new ModelAndView("/jlw/teacherOpenCourseNotice/edit.html");
+        TeacherOpenCourseNotice teacherOpenCourseNotice = teacherOpenCourseNoticeService.queryById(teacherOpenCourseNoticeId);
+        view.addObject("teacherOpenCourseNotice", teacherOpenCourseNotice);
+        return view;
+    }
+
+    @GetMapping(MODEL + "/add.do")
+    @Function("teacherOpenCourseNotice.add")
+    public ModelAndView add(Long teacherOpenCourseNoticeId) {
+        ModelAndView view = new ModelAndView("/jlw/teacherOpenCourseNotice/add.html");
+        if(null != teacherOpenCourseNoticeId){
+            TeacherOpenCourseNotice teacherOpenCourseNotice = teacherOpenCourseNoticeService.queryById(teacherOpenCourseNoticeId);
+            view.addObject("teacherOpenCourseNotice", teacherOpenCourseNotice);
+        }else {
+            view.addObject("teacherOpenCourseNotice", new TeacherOpenCourseNotice());
+        }
+        return view;
+    }
+
+    /* 后台接口 */
+
+    @PostMapping(MODEL + "/list.json")
+    @Function("teacherOpenCourseNotice.query")
+    public JsonResult<PageQuery> list(TeacherOpenCourseNoticeQuery condition){
+        PageQuery page = condition.getPageQuery();
+        teacherOpenCourseNoticeService.queryByCondition(page);
+        return JsonResult.success(page);
+    }
+
+    @PostMapping(MODEL + "/addAll.json")
+    @Function("teacherOpenCourseNotice.add")
+    public JsonResult addAll(TeacherOpenCourseNoticeQuery teacherOpenCourseNoticeQuery,@SCoreUser CoreUser coreUser){
+        if(null == coreUser){
+            return JsonResult.failMessage("请登录后再操作");
+        }else{
+                teacherOpenCourseNoticeQuery.setUserId(coreUser.getId());
+                teacherOpenCourseNoticeQuery.setOrgId(coreUser.getOrgId());
+            String msg = teacherOpenCourseNoticeService.addAll(teacherOpenCourseNoticeQuery);
+            if (StringUtils.isBlank(msg)) {
+                return JsonResult.success();
+            } else {
+                return JsonResult.failMessage("新增失败,"+msg);
+            }
+        }
+    }
+
+    @PostMapping(MODEL + "/add.json")
+    @Function("teacherOpenCourseNotice.add")
+    public JsonResult add(@Validated(ValidateConfig.ADD.class) TeacherOpenCourseNoticeQuery teacherOpenCourseNoticeQuery, BindingResult result,@SCoreUser CoreUser coreUser){
+        if(result.hasErrors()){
+            return JsonResult.failMessage(result);
+        }else{
+                teacherOpenCourseNoticeQuery.setUserId(coreUser.getId());
+                teacherOpenCourseNoticeQuery.setOrgId(coreUser.getOrgId());
+            return teacherOpenCourseNoticeService.add(teacherOpenCourseNoticeQuery);
+        }
+    }
+
+    @PostMapping(MODEL + "/edit.json")
+    @Function("teacherOpenCourseNotice.edit")
+    public JsonResult<String> update(@Validated(ValidateConfig.UPDATE.class) TeacherOpenCourseNoticeQuery teacherOpenCourseNoticeQuery, BindingResult result) {
+        if(result.hasErrors()){
+            return JsonResult.failMessage(result);
+        }else {
+                teacherOpenCourseNoticeQuery.setUserId(null);
+                teacherOpenCourseNoticeQuery.setOrgId(null);
+            String msg = teacherOpenCourseNoticeService.edit(teacherOpenCourseNoticeQuery);
+            if (StringUtils.isBlank(msg)) {
+                return JsonResult.success();
+            } else {
+                return JsonResult.failMessage("更新失败,"+msg);
+            }
+        }
+    }
+
+
+    @GetMapping(MODEL + "/view.json")
+    @Function("teacherOpenCourseNotice.query")
+    public JsonResult<TeacherOpenCourseNotice>queryInfo(Long teacherOpenCourseNoticeId) {
+        TeacherOpenCourseNotice teacherOpenCourseNotice = teacherOpenCourseNoticeService.queryById( teacherOpenCourseNoticeId);
+        return  JsonResult.success(teacherOpenCourseNotice);
+    }
+
+    @GetMapping(MODEL + "/getValues.json")
+    @Function("teacherOpenCourseNotice.query")
+    public JsonResult<List<TeacherOpenCourseNotice>>getValues(TeacherOpenCourseNoticeQuery param) {
+        List<TeacherOpenCourseNotice>list = teacherOpenCourseNoticeService.getValuesByQuery(param);
+        return  JsonResult.success(list);
+    }
+
+
+    @PostMapping(MODEL + "/delete.json")
+    @Function("teacherOpenCourseNotice.delete")
+    @ResponseBody
+    public JsonResult delete(String ids) {
+        teacherOpenCourseNoticeService.deleteTeacherOpenCourseNotice(ids);
+        return JsonResult.success();
+    }
+
+
+}
diff --git a/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseNoticeQuery.java b/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseNoticeQuery.java
new file mode 100644
index 00000000..522d02e5
--- /dev/null
+++ b/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseNoticeQuery.java
@@ -0,0 +1,162 @@
+package com.ibeetl.jlw.web.query;
+
+import cn.jlw.validate.ValidateConfig;
+import com.ibeetl.jlw.entity.TeacherOpenCourseNotice;
+import org.apache.commons.lang3.StringUtils;
+import com.ibeetl.admin.core.annotation.Query;
+import com.ibeetl.admin.core.util.Tool;
+import com.ibeetl.admin.core.util.enums.CoreDictType;
+import com.ibeetl.admin.core.web.query.PageParam;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ *通知公告查询
+ */
+public class TeacherOpenCourseNoticeQuery extends PageParam {
+    @NotNull(message = "ID不能为空", groups =ValidateConfig.UPDATE.class)
+    @Query(name = "系统通知公告ID", display = false)
+    private Long teacherOpenCourseNoticeId;
+    @Query(name = "班级ID(多个逗号隔开)", display = false)
+    private String schoolClassIds;
+    @Query(name = "课程开课ID(多个逗号隔开)", display = false)
+    private String teacherOpenCourseIds;
+    @Query(name = "消息标题", display = false)
+    private String noticeTitle;
+    @Query(name = "消息正文", display = false)
+    private String noticeContent;
+    @Query(name = "创建时间", display = false)
+    private Date createTime;
+    @Query(name = "消息创建--老师ID", display = false)
+    private Long createByTeacherId;
+    @Query(name = "组织ID", display = false)
+    private Long orgId;
+    @Query(name = "用户ID", display = false)
+    private Long userId;
+    @Query(name = "是否删除 1删除,0未删除", display = false)
+    private Integer delFlag;
+
+    private String teacherOpenCourseNoticeIdPlural;
+    private String createByTeacherIdPlural;
+    private String orgIdPlural;
+    private String userIdPlural;
+
+    private String teacherOpenCourseNoticeJsonStr;//json格式
+
+    private String _given;//指定更新的特定字段,多个逗号隔开
+
+    public Long getTeacherOpenCourseNoticeId(){
+        return  teacherOpenCourseNoticeId;
+    }
+    public void setTeacherOpenCourseNoticeId(Long teacherOpenCourseNoticeId ){
+        this.teacherOpenCourseNoticeId = teacherOpenCourseNoticeId;
+    }
+    public String getSchoolClassIds(){
+        return  schoolClassIds;
+    }
+    public void setSchoolClassIds(String schoolClassIds ){
+        this.schoolClassIds = schoolClassIds;
+    }
+    public String getTeacherOpenCourseIds(){
+        return  teacherOpenCourseIds;
+    }
+    public void setTeacherOpenCourseIds(String teacherOpenCourseIds ){
+        this.teacherOpenCourseIds = teacherOpenCourseIds;
+    }
+    public String getNoticeTitle(){
+        return  noticeTitle;
+    }
+    public void setNoticeTitle(String noticeTitle ){
+        this.noticeTitle = noticeTitle;
+    }
+    public String getNoticeContent(){
+        return  noticeContent;
+    }
+    public void setNoticeContent(String noticeContent ){
+        this.noticeContent = noticeContent;
+    }
+    public Date getCreateTime(){
+        return  createTime;
+    }
+    public void setCreateTime(Date createTime ){
+        this.createTime = createTime;
+    }
+    public Long getCreateByTeacherId(){
+        return  createByTeacherId;
+    }
+    public void setCreateByTeacherId(Long createByTeacherId ){
+        this.createByTeacherId = createByTeacherId;
+    }
+    public Long getOrgId(){
+        return  orgId;
+    }
+    public void setOrgId(Long orgId ){
+        this.orgId = orgId;
+    }
+    public Long getUserId(){
+        return  userId;
+    }
+    public void setUserId(Long userId ){
+        this.userId = userId;
+    }
+    public Integer getDelFlag(){
+        return  delFlag;
+    }
+    public void setDelFlag(Integer delFlag ){
+        this.delFlag = delFlag;
+    }
+
+    public TeacherOpenCourseNotice pojo(){
+        TeacherOpenCourseNotice pojo = new TeacherOpenCourseNotice();
+        pojo.setTeacherOpenCourseNoticeId(this.getTeacherOpenCourseNoticeId());
+        pojo.setSchoolClassIds(this.getSchoolClassIds());
+        pojo.setTeacherOpenCourseIds(this.getTeacherOpenCourseIds());
+        pojo.setNoticeTitle(this.getNoticeTitle());
+        pojo.setNoticeContent(this.getNoticeContent());
+        pojo.setCreateTime(this.getCreateTime());
+        pojo.setCreateByTeacherId(this.getCreateByTeacherId());
+        pojo.setOrgId(this.getOrgId());
+        pojo.setUserId(this.getUserId());
+        pojo.setDelFlag(this.getDelFlag());
+        return pojo;
+    }
+
+    public String getTeacherOpenCourseNoticeIdPlural(){
+        return  teacherOpenCourseNoticeIdPlural;
+    }
+    public void setTeacherOpenCourseNoticeIdPlural(String teacherOpenCourseNoticeIdPlural){
+        this.teacherOpenCourseNoticeIdPlural = teacherOpenCourseNoticeIdPlural;
+    }
+    public String getCreateByTeacherIdPlural(){
+        return  createByTeacherIdPlural;
+    }
+    public void setCreateByTeacherIdPlural(String createByTeacherIdPlural){
+        this.createByTeacherIdPlural = createByTeacherIdPlural;
+    }
+    public String getOrgIdPlural(){
+        return  orgIdPlural;
+    }
+    public void setOrgIdPlural(String orgIdPlural){
+        this.orgIdPlural = orgIdPlural;
+    }
+    public String getUserIdPlural(){
+        return  userIdPlural;
+    }
+    public void setUserIdPlural(String userIdPlural){
+        this.userIdPlural = userIdPlural;
+    }
+    public String getTeacherOpenCourseNoticeJsonStr(){
+        return  teacherOpenCourseNoticeJsonStr;
+    }
+    public void setTeacherOpenCourseNoticeJsonStr(String teacherOpenCourseNoticeJsonStr ){
+        this.teacherOpenCourseNoticeJsonStr = teacherOpenCourseNoticeJsonStr;
+    }
+    public String get_given() {
+        return _given;
+    }
+    public void set_given(String _given) {
+        this._given = _given;
+    }
+}
diff --git a/web/src/main/resources/sql/jlw/teacherOpenCourseNotice.md b/web/src/main/resources/sql/jlw/teacherOpenCourseNotice.md
new file mode 100644
index 00000000..3bdd5879
--- /dev/null
+++ b/web/src/main/resources/sql/jlw/teacherOpenCourseNotice.md
@@ -0,0 +1,295 @@
+queryByCondition
+===
+* 根据不为空的参数进行分页查询
+
+  select
+  @pageTag(){
+  t.*
+  @}
+  from teacher_open_course_notice t
+  where 1=1  
+  @//数据权限,该sql语句功能点,如果不考虑数据权限,可以删除此行  
+  and #function("teacherOpenCourseNotice.query")#
+  @if(!isEmpty(teacherOpenCourseNoticeId)){
+  and t.teacher_open_course_notice_id =#teacherOpenCourseNoticeId#
+  @}
+  @if(!isEmpty(teacherOpenCourseNoticeIdPlural)){
+  and find_in_set(t.teacher_open_course_notice_id,#teacherOpenCourseNoticeIdPlural#)
+  @}
+  @if(!isEmpty(schoolClassIds)){
+  and t.school_class_ids =#schoolClassIds#
+  @}
+  @if(!isEmpty(teacherOpenCourseIds)){
+  and t.teacher_open_course_ids =#teacherOpenCourseIds#
+  @}
+  @if(!isEmpty(noticeTitle)){
+  and t.notice_title =#noticeTitle#
+  @}
+  @if(!isEmpty(noticeContent)){
+  and t.notice_content =#noticeContent#
+  @}
+  @if(!isEmpty(createTime)){
+  and t.create_time =#createTime#
+  @}
+  @if(!isEmpty(createByTeacherId)){
+  and t.create_by_teacher_id =#createByTeacherId#
+  @}
+  @if(!isEmpty(createByTeacherIdPlural)){
+  and find_in_set(t.create_by_teacher_id,#createByTeacherIdPlural#)
+  @}
+  @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#)
+  @}
+  @if(!isEmpty(delFlag)){
+  and t.del_flag =#delFlag#
+  @}
+
+
+queryByConditionQuery
+===
+* 根据不为空的参数进行分页查询(无权限)
+
+  select
+  @pageTag(){
+  t.*
+  @}
+  from teacher_open_course_notice t
+  where 1=1  
+  @if(!isEmpty(teacherOpenCourseNoticeId)){
+  and t.teacher_open_course_notice_id =#teacherOpenCourseNoticeId#
+  @}
+  @if(!isEmpty(teacherOpenCourseNoticeIdPlural)){
+  and find_in_set(t.teacher_open_course_notice_id,#teacherOpenCourseNoticeIdPlural#)
+  @}
+  @if(!isEmpty(schoolClassIds)){
+  and t.school_class_ids =#schoolClassIds#
+  @}
+  @if(!isEmpty(teacherOpenCourseIds)){
+  and t.teacher_open_course_ids =#teacherOpenCourseIds#
+  @}
+  @if(!isEmpty(noticeTitle)){
+  and t.notice_title =#noticeTitle#
+  @}
+  @if(!isEmpty(noticeContent)){
+  and t.notice_content =#noticeContent#
+  @}
+  @if(!isEmpty(createTime)){
+  and t.create_time =#createTime#
+  @}
+  @if(!isEmpty(createByTeacherId)){
+  and t.create_by_teacher_id =#createByTeacherId#
+  @}
+  @if(!isEmpty(createByTeacherIdPlural)){
+  and find_in_set(t.create_by_teacher_id,#createByTeacherIdPlural#)
+  @}
+  @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#)
+  @}
+  @if(!isEmpty(delFlag)){
+  and t.del_flag =#delFlag#
+  @}
+
+
+
+
+deleteTeacherOpenCourseNoticeByIds
+===
+
+* 批量删除
+
+  delete from teacher_open_course_notice where find_in_set(teacher_open_course_notice_id,#ids#)
+
+
+
+getByIds
+===
+
+select * from teacher_open_course_notice where find_in_set(teacher_open_course_notice_id,#ids#)
+
+
+updateGivenByIds
+===
+
+* 批量更新指定字段,无论此字段是否有值
+
+  update teacher_open_course_notice
+  set
+  @if(contain("schoolClassIds",_given)){
+  @if(isEmpty(schoolClassIds)){
+  school_class_ids = null ,
+  @}else{
+  school_class_ids = #schoolClassIds# ,
+  @}
+  @}
+  @if(contain("teacherOpenCourseIds",_given)){
+  @if(isEmpty(teacherOpenCourseIds)){
+  teacher_open_course_ids = null ,
+  @}else{
+  teacher_open_course_ids = #teacherOpenCourseIds# ,
+  @}
+  @}
+  @if(contain("noticeTitle",_given)){
+  @if(isEmpty(noticeTitle)){
+  notice_title = null ,
+  @}else{
+  notice_title = #noticeTitle# ,
+  @}
+  @}
+  @if(contain("noticeContent",_given)){
+  @if(isEmpty(noticeContent)){
+  notice_content = null ,
+  @}else{
+  notice_content = #noticeContent# ,
+  @}
+  @}
+  @if(contain("createTime",_given)){
+  @if(isEmpty(createTime)){
+  create_time = null ,
+  @}else{
+  create_time = #createTime# ,
+  @}
+  @}
+  @if(contain("createByTeacherId",_given)){
+  @if(isEmpty(createByTeacherId)){
+  create_by_teacher_id = null ,
+  @}else{
+  create_by_teacher_id = #createByTeacherId# ,
+  @}
+  @}
+  @if(contain("orgId",_given)){
+  @if(isEmpty(orgId)){
+  org_id = null ,
+  @}else{
+  org_id = #orgId# ,
+  @}
+  @}
+  @if(contain("userId",_given)){
+  @if(isEmpty(userId)){
+  user_id = null ,
+  @}else{
+  user_id = #userId# ,
+  @}
+  @}
+  @if(contain("delFlag",_given)){
+  @if(isEmpty(delFlag)){
+  del_flag = null ,
+  @}else{
+  del_flag = #delFlag# ,
+  @}
+  @}
+  teacher_open_course_notice_id = teacher_open_course_notice_id
+  where find_in_set(teacher_open_course_notice_id,#teacherOpenCourseNoticeIdPlural#)
+
+
+
+getTeacherOpenCourseNoticeValues
+===
+
+* 根据不为空的参数进行查询
+
+  select t.*
+  from teacher_open_course_notice t
+  where 1=1  
+  @if(!isEmpty(teacherOpenCourseNoticeId)){
+  and t.teacher_open_course_notice_id =#teacherOpenCourseNoticeId#
+  @}
+  @if(!isEmpty(schoolClassIds)){
+  and t.school_class_ids =#schoolClassIds#
+  @}
+  @if(!isEmpty(teacherOpenCourseIds)){
+  and t.teacher_open_course_ids =#teacherOpenCourseIds#
+  @}
+  @if(!isEmpty(noticeTitle)){
+  and t.notice_title =#noticeTitle#
+  @}
+  @if(!isEmpty(noticeContent)){
+  and t.notice_content =#noticeContent#
+  @}
+  @if(!isEmpty(createTime)){
+  and t.create_time =#createTime#
+  @}
+  @if(!isEmpty(createByTeacherId)){
+  and t.create_by_teacher_id =#createByTeacherId#
+  @}
+  @if(!isEmpty(orgId)){
+  and t.org_id =#orgId#
+  @}
+  @if(!isEmpty(userId)){
+  and t.user_id =#userId#
+  @}
+  @if(!isEmpty(delFlag)){
+  and t.del_flag =#delFlag#
+  @}
+
+
+getValuesByQuery
+===
+
+* 根据不为空的参数进行查询
+
+  select t.*
+  from teacher_open_course_notice t
+  where 1=1 and #function("teacherOpenCourseNotice.query")#
+  @if(!isEmpty(teacherOpenCourseNoticeId)){
+  and t.teacher_open_course_notice_id =#teacherOpenCourseNoticeId#
+  @}
+  @if(!isEmpty(teacherOpenCourseNoticeIdPlural)){
+  and find_in_set(t.teacher_open_course_notice_id,#teacherOpenCourseNoticeIdPlural#)
+  @}
+  @if(!isEmpty(schoolClassIds)){
+  and t.school_class_ids =#schoolClassIds#
+  @}
+  @if(!isEmpty(teacherOpenCourseIds)){
+  and t.teacher_open_course_ids =#teacherOpenCourseIds#
+  @}
+  @if(!isEmpty(noticeTitle)){
+  and t.notice_title =#noticeTitle#
+  @}
+  @if(!isEmpty(noticeContent)){
+  and t.notice_content =#noticeContent#
+  @}
+  @if(!isEmpty(createTime)){
+  and t.create_time =#createTime#
+  @}
+  @if(!isEmpty(createByTeacherId)){
+  and t.create_by_teacher_id =#createByTeacherId#
+  @}
+  @if(!isEmpty(createByTeacherIdPlural)){
+  and find_in_set(t.create_by_teacher_id,#createByTeacherIdPlural#)
+  @}
+  @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#)
+  @}
+  @if(!isEmpty(delFlag)){
+  and t.del_flag =#delFlag#
+  @}
+
+
+
diff --git a/web/src/main/resources/static/js/jlw/teacherOpenCourseNotice/add.js b/web/src/main/resources/static/js/jlw/teacherOpenCourseNotice/add.js
new file mode 100644
index 00000000..1e4b8f7b
--- /dev/null
+++ b/web/src/main/resources/static/js/jlw/teacherOpenCourseNotice/add.js
@@ -0,0 +1,40 @@
+layui.define([ 'form', 'laydate', 'table','teacherOpenCourseNoticeApi', 'layedit'], function(exports) {
+    var form = layui.form;
+    var teacherOpenCourseNoticeApi = layui.teacherOpenCourseNoticeApi;
+    var index = layui.index;
+    var layeidt = layui.layedit;
+    var one = layeidt.build('noticeContent');
+    var view = {
+        init:function(){
+            Lib.initGenrealForm($("#addForm"),form);
+            this.initSubmit();
+        },
+        initSubmit:function(){
+            $("#addButton").click(function(){
+                 form.on('submit(form)', function(){
+                     var teacherOpenCourseNoticeId = $("#addForm input[name='teacherOpenCourseNoticeId']").val();
+                     if(!$.isEmpty(teacherOpenCourseNoticeId)){
+                         teacherOpenCourseNoticeApi.updateTeacherOpenCourseNotice($('#addForm'),function(){
+                             parent.window.dataReload();
+                             Common.info("更新成功");
+                             Lib.closeFrame();
+                         });
+                     }else{
+                         teacherOpenCourseNoticeApi.addTeacherOpenCourseNotice($('#addForm'),function(){
+                             parent.window.dataReload();
+                             Common.info("添加成功");
+                             Lib.closeFrame();
+                         });
+                     }
+
+                });
+            });
+        
+            $("#addButton-cancel").click(function(){
+                Lib.closeFrame();
+            });
+        }
+    			
+    }
+    exports('add',view);
+});
diff --git a/web/src/main/resources/static/js/jlw/teacherOpenCourseNotice/del.js b/web/src/main/resources/static/js/jlw/teacherOpenCourseNotice/del.js
new file mode 100644
index 00000000..bc613723
--- /dev/null
+++ b/web/src/main/resources/static/js/jlw/teacherOpenCourseNotice/del.js
@@ -0,0 +1,23 @@
+layui.define(['table', 'teacherOpenCourseNoticeApi'], function(exports) {
+    var teacherOpenCourseNoticeApi = layui.teacherOpenCourseNoticeApi;
+    var table=layui.table;
+    var view = {
+        init:function(){
+        },
+        delBatch:function(){
+            var data = Common.getMoreDataFromTable(table,"teacherOpenCourseNoticeTable");
+            if(data==null){
+                return ;
+            }
+            Common.openConfirm("确认要删除这些通知公告?",function(){
+            var ids =Common.concatBatchId(data,"teacherOpenCourseNoticeId");
+            teacherOpenCourseNoticeApi.del(ids,function(){
+                Common.info("删除成功");
+                    dataReload();
+                })
+            })
+        }
+    }
+    exports('del',view);
+	
+});
\ No newline at end of file
diff --git a/web/src/main/resources/static/js/jlw/teacherOpenCourseNotice/edit.js b/web/src/main/resources/static/js/jlw/teacherOpenCourseNotice/edit.js
new file mode 100644
index 00000000..e50f2032
--- /dev/null
+++ b/web/src/main/resources/static/js/jlw/teacherOpenCourseNotice/edit.js
@@ -0,0 +1,28 @@
+layui.define([ 'form', 'laydate', 'table','teacherOpenCourseNoticeApi'], function(exports) {
+    var form = layui.form;
+    var teacherOpenCourseNoticeApi = layui.teacherOpenCourseNoticeApi;
+    var index = layui.index;
+    var view = {
+        init:function(){
+	        Lib.initGenrealForm($("#updateForm"),form);
+	        this.initSubmit();
+        },
+        initSubmit:function(){
+            $("#updateButton").click(function(){
+                form.on('submit(form)', function(){
+                    teacherOpenCourseNoticeApi.updateTeacherOpenCourseNotice($('#updateForm'),function(){
+                       parent.window.dataReload();
+                       Common.info("更新成功");
+                       Lib.closeFrame();
+                    });
+                });
+            });
+            $("#updateButton-cancel").click(function(){
+                Lib.closeFrame();
+            });
+        }
+            
+    }
+    exports('edit',view);
+	
+});
\ No newline at end of file
diff --git a/web/src/main/resources/static/js/jlw/teacherOpenCourseNotice/index.js b/web/src/main/resources/static/js/jlw/teacherOpenCourseNotice/index.js
new file mode 100644
index 00000000..2a35b432
--- /dev/null
+++ b/web/src/main/resources/static/js/jlw/teacherOpenCourseNotice/index.js
@@ -0,0 +1,150 @@
+layui.define([ 'form', 'laydate', 'table' ], function(exports) {
+    var form = layui.form;
+    var laydate = layui.laydate;
+    var table = layui.table;
+    var teacherOpenCourseNoticeTable = null;
+    var view ={
+        init:function(){
+            var that = this
+            this.initTable();
+            this.initSearchForm();
+            this.initToolBar();
+            window.dataReload = function(){
+                Lib.doSearchForm($("#searchForm"),teacherOpenCourseNoticeTable)
+                that.initToolBar();
+            }
+        },
+        initTable:function(){
+            var sx_ = localStorage.getItem("teacherOpenCourseNoticeTable_field_"+Common.userInfoId); //筛选值显示、隐藏缓存
+            if($.isEmpty(sx_)){sx_ = {};}else {sx_ = JSON.parse(sx_);}
+            teacherOpenCourseNoticeTable = table.render({
+                elem : '#teacherOpenCourseNoticeTable',
+                height : Lib.getTableHeight(1),
+                cellMinWidth: 100,
+                method : 'post',
+                url : Common.ctxPath + '/jlw/teacherOpenCourseNotice/list.json' // 数据接口
+                ,page : Lib.tablePage // 开启分页
+                ,toolbar: '#toolbar_teacherOpenCourseNotice' //自定义头部左侧工具栏
+                ,defaultToolbar: ['filter', 'print', 'exports'] //头部右侧工具栏
+                ,limit : 10,
+                cols : [ [ // 表头
+                    {
+                        type : 'checkbox',
+
+                    },
+                {
+                    field : 'teacherOpenCourseNoticeId', 
+                    title : '系统通知公告ID',
+                    align:"center",
+                    hideField :false,
+                    hide:$.isEmpty(sx_['teacherOpenCourseNoticeId'])?false:sx_['teacherOpenCourseNoticeId'],
+
+                        width : 60,
+                },
+                {
+                    field : 'noticeTitle', 
+                    title : '消息标题',
+                    align:"center",
+                    hideField :false,
+                    hide:$.isEmpty(sx_['noticeTitle'])?false:sx_['noticeTitle'],
+                },
+                {
+                    field : 'noticeContent', 
+                    title : '消息正文',
+                    align:"center",
+                    hideField :false,
+                    hide:$.isEmpty(sx_['noticeContent'])?false:sx_['noticeContent'],
+                },
+                {
+                    field : 'createTime', 
+                    title : '创建时间',
+                    align:"center",
+                    hideField :false,
+                    hide:$.isEmpty(sx_['createTime'])?false:sx_['createTime'],
+                },
+                {
+                    field : 'operation_',title : '操作',align:"center", templet: function (d) {
+                        var htm = '<button type="button" class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit">编辑</button>';
+                        htm += '<button type="button" class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</button>';
+                        return htm;
+                    }
+                }
+
+        ] ]
+
+        });
+
+            table.on('checkbox(teacherOpenCourseNoticeTable)', function(obj){
+                var teacherOpenCourseNotice = obj.data;
+                if(obj.checked){
+                    //按钮逻辑Lib.buttonEnable()
+                }else{
+
+                }
+            })
+        },
+
+        initSearchForm:function(){
+            Lib.initSearchForm( $("#searchForm"),teacherOpenCourseNoticeTable,form);
+        },
+
+        initToolBar:function(){
+            toolbar = {
+                add: function () {
+                    var url = "/jlw/teacherOpenCourseNotice/add.do";
+                    Common.openDlg(url,"通知公告管理>新增");
+                },
+                edit: function () {
+                    var data = Common.getOneFromTable(table,"teacherOpenCourseNoticeTable");
+                    if(data==null){
+                        return ;
+                    }
+                    var url = "/jlw/teacherOpenCourseNotice/add.do?teacherOpenCourseNoticeId="+data.teacherOpenCourseNoticeId;
+                    Common.openDlg(url,"通知公告管理>"+data.teacherOpenCourseNoticeId+">编辑");
+                },
+                del: function () {
+                    layui.use(['del'], function(){
+                        var delView = layui.del
+                        delView.delBatch();
+                    });
+                },
+                search: function () {
+                    Lib.doSearchForm($("#searchForm"), teacherOpenCourseNoticeTable, 1);
+                    view.initToolBar()
+                },
+                refresh: function () {
+                    searchForm.reset();
+                    Lib.doSearchForm($("#searchForm"), teacherOpenCourseNoticeTable, 1);
+                    view.initToolBar()
+                },
+            }
+            //触发事件
+            $('.ext-toolbar').on('click', function() {
+                var type = $(this).data('type');
+                toolbar[type] ? toolbar[type].call(this) : '';
+            });
+
+        }, initTableTool: table.on('tool(teacherOpenCourseNoticeTable)', function (obj) {
+            var data = obj.data;
+            if (obj.event === 'edit') {
+                var url = "/jlw/teacherOpenCourseNotice/add.do?teacherOpenCourseNoticeId="+data.teacherOpenCourseNoticeId;
+                Common.openDlg(url,"通知公告管理>"+data.teacherOpenCourseNoticeId+">编辑");
+            }else if(obj.event === "del"){
+                layer.confirm('是否确定删除该信息?', function (index) {
+                    var ret = Common.postAjax("/jlw/teacherOpenCourseNotice/delete.json",{ids:data.teacherOpenCourseNoticeId});
+                    layer.msg(ret.code == 0?"删除成功!":ret.msg, {
+                        offset: ['50%'],
+                        icon: ret.code == 0?1:2,
+                        time: 1500 //2秒关闭(如果不配置,默认是3秒)
+                    },function (){
+                        if(ret.code == 0){
+                            Lib.tableRefresh();
+                        }
+                    });
+                });
+            }
+        })
+    }
+    exports('index',view);
+
+});
diff --git a/web/src/main/resources/static/js/jlw/teacherOpenCourseNotice/teacherOpenCourseNoticeApi.js b/web/src/main/resources/static/js/jlw/teacherOpenCourseNotice/teacherOpenCourseNoticeApi.js
new file mode 100644
index 00000000..b77a34de
--- /dev/null
+++ b/web/src/main/resources/static/js/jlw/teacherOpenCourseNotice/teacherOpenCourseNoticeApi.js
@@ -0,0 +1,18 @@
+/*访问后台的代码*/
+layui.define([], function(exports) {
+    var api={
+            updateTeacherOpenCourseNotice:function(form,callback){
+                Lib.submitForm("/jlw/teacherOpenCourseNotice/edit.json",form,{},callback)
+            },
+            addTeacherOpenCourseNotice:function(form,callback){
+                Lib.submitForm("/jlw/teacherOpenCourseNotice/add.json",form,{},callback)
+            },
+            del:function(ids,callback){
+                Common.post("/jlw/teacherOpenCourseNotice/delete.json",{"ids":ids},function(){
+                    callback();
+                })
+            }
+		
+    };
+    exports('teacherOpenCourseNoticeApi',api);
+});
\ No newline at end of file
diff --git a/web/src/main/resources/templates/jlw/teacherOpenCourseNotice/add.html b/web/src/main/resources/templates/jlw/teacherOpenCourseNotice/add.html
new file mode 100644
index 00000000..0f0f4502
--- /dev/null
+++ b/web/src/main/resources/templates/jlw/teacherOpenCourseNotice/add.html
@@ -0,0 +1,61 @@
+<!--# layout("/common/layout.html",{"jsBase":"/js/jlw/teacherOpenCourseNotice/"}){ -->
+
+<form class="layui-form" id="addForm">
+    <div class="layui-row">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label">公告标题</label>
+                <div class="layui-input-inline">
+                    <input type="text" id="noticeTitle" name="noticeTitle"  value="${teacherOpenCourseNotice.noticeTitle}"   class="layui-input" >
+                </div>
+            </div>
+
+        </div>
+    </div>
+    <div class="layui-row">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label">通知对象</label>
+                <div class="layui-input-inline">
+<!--                    <input type="text" placeholder="请选择课程名称" id="teacherOpenCourseIds" name="teacherOpenCourseIds"  value="${teacherOpenCourseNotice.teacherOpenCourseIds}"   class="layui-input" >-->
+                    <layui:simpleDictSelect style='layui-input-inline' placeholder="请选择课程名称"
+                                            value="${teacherOpenCourseNotice.teacherOpenCourseIds}" type="course_info.course_info_name.course_info_status=1,course_info_type=1"
+                                            id="teacherOpenCourseIds" name="teacherOpenCourseIds" layFilter="select_courseInfoIds"/>
+                </div>
+            </div>
+            <div class="layui-inline">
+            	<label class="layui-form-label"></label>
+				<div class="layui-input-inline">
+<!--					<input type="text" placeholder="请选择班级名称"  id="schoolClassIds" name="schoolClassIds"  value="${teacherOpenCourseNotice.schoolClassIds}"   class="layui-input" >-->
+                    <layui:simpleDictSelect style='layui-input-inline' placeholder="请选择班级名称"
+                                            value="${teacherOpenCourseNotice.schoolClassIds}" type="school_class.class_name.class_status=1"
+                                            id="schoolClassIds" name="schoolClassIds" layFilter="select_courseInfoIds"/>
+				</div>
+            </div>
+
+        </div>
+    </div>
+    <div class="layui-row">
+        <div class="layui-inline">
+            <label class="layui-form-label">公告内容</label>
+            <div class="layui-input-inline">
+                <input type="text" id="noticeContent" name="noticeContent"  value="${teacherOpenCourseNotice.noticeContent}"   class="layui-input" >
+            </div>
+        </div>
+    </div>
+    <div class="layui-row">
+        <div class="layui-form-item">
+        </div>
+    </div>
+	<!-- 业务对象须有hidden字段,保存delFlag和version字段-->
+		<input type="hidden" name="delFlag" value=${teacherOpenCourseNotice.delFlag} />
+	<input type="hidden" name="teacherOpenCourseNoticeId" value="${teacherOpenCourseNotice.teacherOpenCourseNoticeId}" />
+    <layui:submitButtons id="addButton" buttonType="" showExamine="2" />
+</form>
+<!--#} -->
+<script>
+layui.use(['add'], function(){
+    var teacherOpenCourseNoticeAdd = layui.add
+    teacherOpenCourseNoticeAdd.init();
+});
+</script>
diff --git a/web/src/main/resources/templates/jlw/teacherOpenCourseNotice/edit.html b/web/src/main/resources/templates/jlw/teacherOpenCourseNotice/edit.html
new file mode 100644
index 00000000..bb465384
--- /dev/null
+++ b/web/src/main/resources/templates/jlw/teacherOpenCourseNotice/edit.html
@@ -0,0 +1,83 @@
+<!--# layout("/common/layout.html",{"jsBase":"/js/jlw/teacherOpenCourseNotice/"}){ -->
+
+<form class="layui-form" id="updateForm">
+    <div class="layui-row">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+            	<label class="layui-form-label">班级ID(多个逗号隔开)</label>
+				<div class="layui-input-inline">
+					<input type="text" id="schoolClassIds" name="schoolClassIds"  value="${teacherOpenCourseNotice.schoolClassIds}"   class="layui-input" >
+				</div>
+            </div>
+            <div class="layui-inline">
+            	<label class="layui-form-label">课程开课ID(多个逗号隔开)</label>
+				<div class="layui-input-inline">
+					<input type="text" id="teacherOpenCourseIds" name="teacherOpenCourseIds"  value="${teacherOpenCourseNotice.teacherOpenCourseIds}"   class="layui-input" >
+				</div>
+            </div>
+        </div>
+    </div>
+    <div class="layui-row">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+            	<label class="layui-form-label">消息标题</label>
+				<div class="layui-input-inline">
+					<input type="text" id="noticeTitle" name="noticeTitle"  value="${teacherOpenCourseNotice.noticeTitle}"   class="layui-input" >
+				</div>
+            </div>
+            <div class="layui-inline">
+            	<label class="layui-form-label">消息正文</label>
+				<div class="layui-input-inline">
+					<input type="text" id="noticeContent" name="noticeContent"  value="${teacherOpenCourseNotice.noticeContent}"   class="layui-input" >
+				</div>
+            </div>
+        </div>
+    </div>
+    <div class="layui-row">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+            	<label class="layui-form-label">创建时间</label>
+				<div class="layui-input-inline">
+					<input type="text" id="createTime" name="createTime"  value="${teacherOpenCourseNotice.createTime,"yyyy-MM-dd"}"   class="layui-input input-date" >
+				</div>
+            </div>
+            <div class="layui-inline">
+            	<label class="layui-form-label">消息创建--老师ID</label>
+				<div class="layui-input-inline">
+					<input type="text" id="createByTeacherId" name="createByTeacherId"  value="${teacherOpenCourseNotice.createByTeacherId}"   class="layui-input" >
+				</div>
+            </div>
+        </div>
+    </div>
+    <div class="layui-row">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+            	<label class="layui-form-label">组织ID</label>
+				<div class="layui-input-inline">
+					<input type="text" id="orgId" name="orgId"  value="${teacherOpenCourseNotice.orgId}"   class="layui-input" >
+				</div>
+            </div>
+            <div class="layui-inline">
+            	<label class="layui-form-label">用户ID</label>
+				<div class="layui-input-inline">
+					<input type="text" id="userId" name="userId"  value="${teacherOpenCourseNotice.userId}"   class="layui-input" >
+				</div>
+            </div>
+        </div>
+    </div>
+    <div class="layui-row">
+        <div class="layui-form-item">
+        </div>
+    </div>
+	<!-- 业务对象须有hidden字段,保存delFlag和version字段-->
+	<input type="hidden" name="delFlag" value=${teacherOpenCourseNotice.delFlag} />
+	<input type="hidden" name="teacherOpenCourseNoticeId" value="${teacherOpenCourseNotice.teacherOpenCourseNoticeId}" />
+    <layui:submitButtons id="updateButton"  buttonType="" showExamine="2" />
+</form>
+<!--#} -->
+<script>
+layui.use(['edit'], function(){
+    var teacherOpenCourseNoticeEdit = layui.edit
+    teacherOpenCourseNoticeEdit.init();
+});
+</script>
diff --git a/web/src/main/resources/templates/jlw/teacherOpenCourseNotice/index.html b/web/src/main/resources/templates/jlw/teacherOpenCourseNotice/index.html
new file mode 100644
index 00000000..2ea9caca
--- /dev/null
+++ b/web/src/main/resources/templates/jlw/teacherOpenCourseNotice/index.html
@@ -0,0 +1,29 @@
+<!--#layout("/common/layout.html",{"jsBase":"/js/jlw/teacherOpenCourseNotice/"}){ -->
+<layui:searchForm formId="searchForm" searchList="" condition="${search}">
+</layui:searchForm>
+<table id="teacherOpenCourseNoticeTable" lay-filter="teacherOpenCourseNoticeTable"></table>
+<!--#} -->
+
+<script type="text/html" id="toolbar_teacherOpenCourseNotice">
+    <div class="layui-btn-container">
+        <div class="layui-btn-group" >
+            <!--# if(core.searchIsShow(search)) {-->
+            <layui:accessButton function="teacherOpenCourseNotice.query"  id="searchFormSearch" action="search"><i class="layui-icon">&#xe615;</i>搜索</layui:accessButton>
+            <!--# }-->
+            <layui:accessButton function="teacherOpenCourseNotice.add"  action="add">添加</layui:accessButton>
+            <layui:accessButton function="teacherOpenCourseNotice.edit"  action="edit">修改</layui:accessButton>
+            <layui:accessButton function="teacherOpenCourseNotice.del"  action="del">删除</layui:accessButton>
+            <!--#            if(!isEmpty(search)) {-->
+            <layui:accessButton function="teacherOpenCourseNotice.query"  action="refresh"><i class="layui-icon">&#xe669;</i>刷新</layui:accessButton>
+            <!--#            }-->
+        </div>
+    </div>
+</script>
+<script>
+
+layui.use(['index'], function(){
+    var index = layui.index;
+    index.init();
+});
+
+</script>