學成在線--16.添加課程計劃

文章目錄

  • 一.需求分析
  • 二.API接口
  • 三.后端
    • 1.Dao
    • 2.Service
    • 3.Controller
    • 4.測試
  • 四.前端
    • 1.頁面原型說明
      • 1)添加按鈕
      • 2)視圖部分
      • 3)在數據模型中添加如下變量
      • 4)定義表單提交方法和重置方法
    • 2.Api調用
      • 1)定義 api方法
      • 2)調用 api
    • 3.測試

一.需求分析

用戶操作流程:
1、進入課程計劃頁面,點擊“添加課程計劃”
2、打開添加課程計劃頁面,輸入課程計劃信息
在這里插入圖片描述

一級二級三級
跟節點大章節小章節

上級結點 不填寫的情況下:

  1. 不選擇上級結點,表示當前添加的課程計劃的父節點為課程的根結點,此時使用當前課程的courseid去查詢根節點具體信息(當然包括根節點的id)。

  2. 若此時找不到根節點,則要自動添加課程的根結點。

  3. 點擊提交。

二.API接口

文件位置:xcEduService01\xc-service-api\src\main\java\com\xuecheng\api\course\CourseControllerApi.java

@ApiOperation("添加課程計劃")
public ResponseResult addTeachplan(Teachplan teachplan);

三.后端

1.Dao

文件位置:EduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\dao\TeachplanRepository.java

public interface TeachplanRepository extends JpaRepository<Teachplan, String> {
//定義方法根據課程id和父結點id查詢出結點列表,可以使用此方法實現查詢根結點
public List<Teachplan> findByCourseidAndParentid(String courseId,String parentId);
}

2.Service

文件位置:xcEduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\service\CourseService.java

@Transactional
public ResponseResult addTeachplan(Teachplan teachplan) {if(teachplan == null ||StringUtils.isEmpty(teachplan.getPname()) ||StringUtils.isEmpty(teachplan.getCourseid())){ExceptionCast.cast(CommonCode.INVALID_PARAM);}//課程idString courseid = teachplan.getCourseid();//父結點的idString parentid = teachplan.getParentid();if(StringUtils.isEmpty(parentid)){//獲取課程的根結點parentid = getTeachplanRoot(courseid);}//查詢根結點信息Optional<Teachplan> optional = teachplanRepository.findById(parentid);Teachplan teachplan1 = optional.get();//父結點的級別String parent_grade = teachplan1.getGrade();//創建一個新結點準備添加Teachplan teachplanNew = new Teachplan();//將teachplan的屬性拷貝到teachplanNew中BeanUtils.copyProperties(teachplan,teachplanNew);//要設置必要的屬性teachplanNew.setParentid(parentid);if(parent_grade.equals("1")){teachplanNew.setGrade("2");}else{teachplanNew.setGrade("3");}teachplanNew.setStatus("0");//未發布teachplanRepository.save(teachplanNew);return new ResponseResult(CommonCode.SUCCESS);
}//獲取課程的根結點
public String getTeachplanRoot(String courseId){Optional<CourseBase> optional = courseBaseRepository.findById(courseId);if(!optional.isPresent()){return null;}CourseBase courseBase = optional.get();//調用dao查詢teachplan表得到該課程的根結點(一級結點)List<Teachplan> teachplanList = teachplanRepository.findByCourseidAndParentid(courseId, "0");if(teachplanList == null || teachplanList.size()<=0){//新添加一個課程的根結點Teachplan teachplan = new Teachplan();teachplan.setCourseid(courseId);teachplan.setParentid("0");teachplan.setGrade("1");//一級結點teachplan.setStatus("0");teachplan.setPname(courseBase.getName());teachplanRepository.save(teachplan);return teachplan.getId();}//返回根結點的idreturn teachplanList.get(0).getId();}

3.Controller

文件位置:xcEduService01\xc-service-manage-course\src\main\java\com\xuecheng\manage_course\controller\CourseController.java

@Override
@PostMapping("/teachplan/add")
public ResponseResult addTeachplan(@RequestBody  Teachplan teachplan) {return courseService.addTeachplan(teachplan);
}

4.測試

復雜一些的業務邏輯建議寫完服務端代碼就進行單元測試。

使用swagger-ui或postman測試上邊的課程計劃添加接口。

四.前端

1.頁面原型說明

文件位置:xc-ui-pc-teach\xc-ui-pc-teach\src\module\course\page\course_manage\course_plan.vue

1)添加按鈕

<el-button type="primary" @click="teachplayFormVisible = true">添加課程計劃</el-button>

2)視圖部分

添加課程計劃采用彈出窗口組件Dialog,在course_plan.vue頁面添加添加課程計劃的彈出窗口代碼

    <el-dialog title="添加課程計劃" :visible.sync="teachplayFormVisible" ><el-form ref="teachplanForm"  :model="teachplanActive" label-width="140px" style="width:600px;" :rules="teachplanRules" ><el-form-item label="上級結點" ><el-select v-model="teachplanActive.parentid" placeholder="不填表示根結點"><el-optionv-for="item in teachplanList":key="item.id":label="item.pname":value="item.id"></el-option></el-select></el-form-item><el-form-item label="章節/課時名稱" prop="pname"><el-input v-model="teachplanActive.pname" auto-complete="off"></el-input></el-form-item><el-form-item label="課程類型" ><el-radio-group v-model="teachplanActive.ptype"><el-radio class="radio" label='1'>視頻</el-radio><el-radio class="radio" label='2'>文檔</el-radio></el-radio-group></el-form-item><el-form-item label="學習時長(分鐘)  請輸入數字" ><el-input type="number" v-model="teachplanActive.timelength" auto-complete="off" ></el-input></el-form-item><el-form-item label="排序字段" ><el-input v-model="teachplanActive.orderby" auto-complete="off" ></el-input></el-form-item><el-form-item label="章節/課時介紹" prop="description"><el-input type="textarea" v-model="teachplanActive.description" ></el-input></el-form-item><el-form-item label="狀態" prop="status"><el-radio-group v-model="teachplanActive.status" ><el-radio class="radio" label="0" >未發布</el-radio><el-radio class="radio" label='1'>已發布</el-radio></el-radio-group></el-form-item><el-form-item  ><el-button type="primary" v-on:click="addTeachplan">提交</el-button><el-button type="primary" v-on:click="resetForm">重置</el-button></el-form-item></el-form></el-dialog>

3)在數據模型中添加如下變量

data() {return {mediaFormVisible:false,teachplayFormVisible:false,//控制添加窗口是否顯示teachplanList : [{id: 1,pname: '一級 1',children: [{id: 4,pname: '二級 1-1',children: [{id: 9,pname: '三級 1-1-1'}, {id: 10,pname: '三級 1-1-2'}]}]}],defaultProps:{children: 'children',label: 'pname'},teachplanRules: {pname: [{required: true, message: '請輸入課程計劃名稱', trigger: 'blur'}],status: [{required: true, message: '請選擇狀態', trigger: 'blur'}]},teachplanActive:{},teachplanId:''}
},

4)定義表單提交方法和重置方法

methods: {
//提交課程計劃addTeachplan(){//校驗表單this.$refs.teachplanForm.validate((valid) => {if (valid) {//調用api方法//將課程id設置到teachplanActivethis.teachplanActive.courseid = this.courseidcourseApi.addTeachplan(this.teachplanActive).then(res=>{if(res.success){this.$message.success("添加成功")//刷新樹this.findTeachplan()}else{this.$message.error(res.message)}})}})},//重置表單resetForm(){this.teachplanActive = {}},//查詢課程計劃courseApi.findTeachplanList(this.courseid).then(res=>{if(res && res.children){this.teachplanList = res.children;}})}},

2.Api調用

1)定義 api方法

文件位置:xc-ui-pc-teach\xc-ui-pc-teach\src\module\course\api\course.js

/*添加課程計劃*/
export const addTeachplan = teachplah => {return http.requestPost(apiUrl+'/course/teachplan/add',teachplah)
}

2)調用 api

文件位置:xc-ui-pc-teach\xc-ui-pc-teach\src\module\course\page\course_manage\course_plan.vue

      addTeachplan(){//校驗表單this.$refs.teachplanForm.validate((valid) => {if (valid) {//調用api方法//將課程id設置到teachplanActivethis.teachplanActive.courseid = this.courseidcourseApi.addTeachplan(this.teachplanActive).then(res=>{if(res.success){this.$message.success("添加成功")//刷新樹this.findTeachplan()}else{this.$message.error(res.message)}})}})},

3.測試

測試流程:
1、新建一個課程
2、向新建課程中添加課程計劃
添加一級結點
添加二級結點

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452192.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452192.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452192.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mac 下的操作

nodejs在Mac下的卸載 在 node 官網上下載的安裝包&#xff0c;用安裝包安裝的node.應該可以用一下命令行卸載&#xff1a; 在終端輸入以下命令&#xff1a; sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*} 刪除/usr/local/lib中的…

理解 maven 的核心概念

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 本文以類圖的方式&#xff0c;介紹 maven 核心的 12 個概念及相互之間的關系。 Table of Contents 1 maven管理的目標&#xff1a;工程…

時間跟蹤圖

事件跟蹤圖實質上是擴充的腳本&#xff0c;可以認為事件跟蹤圖是簡化的UML順序圖。

1088. [SCOI2005]掃雷Mine【網格DP】

Description 相信大家都玩過掃雷的游戲。那是在一個n*m的矩陣里面有一些雷&#xff0c;要你根據一些信息找出雷來。萬圣節到了 &#xff0c;“余”人國流行起了一種簡單的掃雷游戲&#xff0c;這個游戲規則和掃雷一樣&#xff0c;如果某個格子沒有雷&#xff0c;那么它里面的數…

spring data jpa和mybatis的不同

使用spring data JPA和mybatis都是用來訪問數據庫&#xff0c;但他們的分工不同&#xff1a; 1.spring data jpa默認使用hibernate作為ORM實現&#xff0c;是spring 提供的一套jpa接口&#xff0c;使用spring data jpa主要完成一些簡單的增刪改查功能。 2.對于復雜的查詢功能會…

函數式編程很難,這正是你要學習它的原因

很奇怪不是&#xff0c;很少有人每天都使用函數式編程語言。如果你用Scala&#xff0c;Haskell&#xff0c;Erlang&#xff0c;F#或某個Lisp方言來編程&#xff0c;很可能沒有公司會花錢聘你。這個行業里的絕大部分人都是使用像Python&#xff0c;Ruby&#xff0c;Java或C#等面…

函數依賴

設R(U)是一個屬性集U上的關系模式&#xff0c;X和Y是U的子集。若對于R(U)的任意一個可能的關系r&#xff0c;r 中不可能存在兩個元組在X上的屬性值相等&#xff0c; 而在Y上的屬性值不等&#xff0c; 則稱“X函數確定Y”或“Y函數依賴于X”&#xff0c;記作X→Y。 X→Y&#x…

Java面試——線程池

1、類比介紹 假如有一個工廠&#xff0c;工廠里面有10個工人&#xff0c;每個工人同時只能做一件任務。 因此只要當10個工人中有工人是空閑的&#xff0c;來了任務就分配給空閑的工人做&#xff1b; 當10個工人都有任務在做時&#xff0c;如果還來了任務&#xff0c;就把任務進…

C#關鍵字的使用

params object[] 用于函數多參數的定義public static void Write(string format, params object[] arg);explicit 關鍵字用于聲明必須使用強制轉換來調用的用戶定義的類型轉換運算符。 例如&#xff0c;在下面的示例中&#xff0c;此運算符將名為 Fahrenheit 的類轉換為名為 Ce…

maven 中 pom.xml 配置文件標簽說明,dependencyManagement和dependencies區別

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 參考&#xff1a;http://zhaoshijie.iteye.com/blog/2094478http://blog.csdn.net/cpf2016/article/details/45674377 還有一篇轉載文章…

學成在線--17.我的課程

文章目錄一.需求分析二.API接口三.PageHelper1.PageHelper介紹2.添加依賴3.配置pageHelper四.Dao1.mapper 接口2.mapper.xml映射文件3.測試Dao五.Service六.Controller七.前端1.創建course_list.vue2.路由3.定義API方法4.前端視圖course_list.vue詳解1&#xff09;API調用--在視…

碼是數據系統中的基本概念。所謂碼就是能唯一標識實體的屬性或屬性集合&#xff0c;他是整個實體集的性質&#xff0c;而不是單個實體的性質。 主屬性與非主屬性 包含在任何一個候選碼中的屬性 &#xff0c;稱為主屬性&#xff08;Prime attribute&#xff09;。 不包含在任何…

關于C編程的一點感受

剛畢業的時候用了兩個多月的C語言編程&#xff0c;總的來說對它還是很有感受的&#xff0c;C是一個過程式語言&#xff0c;沒有像C,Java等OOP語言這樣那樣的一系列的規則和限制&#xff1b;它比較靈活&#xff0c;簡潔&#xff0c;高效&#xff1b;這些是給我的印象最深的。這是…

如何打造高效的多任務、高并發的網絡服務器系統?

同一個功能的軟件&#xff0c;不同的團隊&#xff0c;不同工程師去實現&#xff0c;肯定是千差萬別&#xff0c;甚至從根本上完全不同。所以軟件開發在未來很長時間內仍然是一項工匠的手工勞動&#xff0c;尤其像多任務&#xff0c;高并發&#xff0c;偏底層這種對實現技巧比較…

BZOJ.2780.[SPOJ8093]Sevenk Love Oimaster(廣義后綴自動機)

題目鏈接 \(Description\) 給定n個模式串&#xff0c;多次詢問一個串在多少個模式串中出現過。(字符集為26個小寫字母) \(Solution\) 對每個詢問串進行匹配最終會達到一個節點&#xff0c;我們需要得到這個節點所代表的子串出現在多少個模式串中。 建立廣義后綴自動機。每次插入…

BigDecimal 加減乘除運算

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 java.math.BigDecimal。BigDecimal一共有4個夠造方法&#xff0c;讓我先來看看其中的兩種用法&#xff1a; 第一種&#xff1a;BigDeci…

主碼 超碼 候選碼

碼是數據系統中的基本概念。所謂碼就是能唯一標識實體的屬性&#xff0c;他是整個實體集的性質&#xff0c;而不是單個實體的性質。它包括超碼&#xff0c;候選碼&#xff0c;主碼。   超碼是一個或多個屬性的集合&#xff0c;這些屬性可以讓我們在一個實體集中唯一地標識一…

學成在線--18.新增課程(課程分類查詢)

文章目錄一.需求分析二.課程分類查詢介紹三.數據結構四.數據格式五.數據模型六.Api接口七.服務器端1.Dao1&#xff09;定義mapper2&#xff09;定義mapper映射文件2.Service3.Controller八.接口測試一.需求分析 用戶操作流程如下&#xff1a; 1、用戶進入“我的課程”頁面&…

給程序員們的工資報價提醒

在薪水上討價還價的方式有很多種&#xff0c;我要說的這一點也許并不是最好的。然而&#xff0c;如果使用的得當&#xff0c;會收到很好的效果。如果你正在跟一家公司接觸(沒有經過職業中介)&#xff0c;而且事情看來很順利&#xff0c;進度很快&#xff0c;你要保持這種面試的…

POI 方式-excle 表格導出實現-java-poi

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 效果&#xff1a; jsp 頁面 用的Bootstrap &#xff1a; <li class"dropdown"> <a href"javascript:void(0)…