From ab3b4221998766f171a7fece4ba9e97c80f06af5 Mon Sep 17 00:00:00 2001
From: 付智勇 <fuzhiyong@efangtec.com>
Date: Thu, 24 Aug 2017 17:24:10 +0800
Subject: [PATCH] 1、鉴权完善   2、创建课堂

---
 app.js                          |  6 ++++++
 controller/meetingController.js | 42 +++++++++++++++++++++++++++++++++++++++++-
 controller/userController.js    |  2 +-
 model/meetingModel.js           |  1 -
 routes/meeting.js               |  7 ++-----
 services/meetingService.js      | 22 ++++++++++++++++++++++
 services/userService.js         |  2 +-
 util/tokenUtil.js               |  8 +++++---
 8 files changed, 78 insertions(+), 12 deletions(-)
 create mode 100644 services/meetingService.js

diff --git a/app.js b/app.js
index 3b31263..a26f18d 100644
--- a/app.js
+++ b/app.js
@@ -10,6 +10,7 @@ const cors = require('koa-cors');
 
 const index = require('./routes/index')
 const users = require('./routes/users')
+const meeting = require('./routes/meeting')
 const filterUrl = require(__dirname+'/util/filterUrl')
 var tokenUtil =  require('./util/tokenUtil');
 const _ = require('lodash');
@@ -41,6 +42,9 @@ app.use(async (ctx, next) => {
       status.catchError(ctx,400,'请登录');        
     }else{
       let isToken = await tokenUtil.prverifySession(ctx.header.token);
+      ctx.request.userID = isToken.id;
+      ctx.request.userName = isToken.userName;
+      ctx.request.userRole = isToken.userRole;
       await next();      
     }
     const ms = new Date() - start;
@@ -53,5 +57,7 @@ app.use(async (ctx, next) => {
 // routes
 app.use(index.routes(), index.allowedMethods())
 app.use(users.routes(), users.allowedMethods())
+app.use(meeting.routes(), meeting.allowedMethods())
+
 
 module.exports = app
diff --git a/controller/meetingController.js b/controller/meetingController.js
index a365fc3..520f8ea 100644
--- a/controller/meetingController.js
+++ b/controller/meetingController.js
@@ -1,6 +1,7 @@
 var userModel =  require('../model/userModel');
 var saitMd5 = require('../util/saltMD5')
 var status = require('../util/resTemplate') 
+const meetingService = require('../services/meetingService')
 const uuid = require('../util/UuidUtil')
 
 
@@ -11,8 +12,47 @@ const uuid = require('../util/UuidUtil')
 meetingController.prototype.createMeeting = async(ctx,next)=>{
     try {
         
+        let meetingbody = ctx.request.body;
+        if(!meetingbody.presenterPassword){
+            return status.paramError('meetingName');
+        }else if(!meetingbody.meetingName){
+            return status.paramError('meetingName','不能为空');        
+        }
+        let num = JSON.stringify(Math.floor(Math.random() * 99999) + 1000)
+        let meeting = {
+            meetingNumber:num, //课堂序号
+            meetingName:meetingbody.meetingName, //课堂名字
+            meetingContent:meetingbody.meetingContent, //课堂描述
+            create_user:ctx.request.userName,  //创建用户名
+            presenterPassword:meetingbody.presenterPassword, //主讲人密码            
+            beginTime:new Date(meetingbody.beginTime), //开始时间
+            endTime:new Date(meetingbody.endTime), // 结束时间
+            isPublic:meetingbody.isPublic,  //是否公开课
+            repeatmode:meetingbody.repeatmode, //是否重复周期
+            meetingType:meetingbody.meetingType, //课堂类型
+            h5Module:meetingbody.h5Module, // 是否支持H5
+            attendeePassword:meetingbody.attendeePassword, //学生密码
+            videoModule:meetingbody.videoModule, //视频是否启用
+            chatInterval:meetingbody.chatInterval, //聊天延时时间
+            aheadTime:meetingbody.aheadTime, // 提前进入课堂时间
+            maxVideoChannels:meetingbody.maxVideoChannels, //最大视频路数
+            max_audioChannels:meetingbody.max_audioChannels, // 最大音频路数
+            video_quality:meetingbody.video_quality, //视频画质
+            pagenaviUserprivilege:meetingbody.pagenaviUserprivilege, //换页权限是否开启
+            markerUserprivilege:meetingbody.markerUserprivilege, // 批注权限是否开启
+            chatToNormalUserprivilege:meetingbody.chatToNormalUserprivilege, //与参会者聊天权限是否开启
+            chatToHostUserprivilege:meetingbody.chatToHostUserprivilege, //与主持人聊天权限是否开启
+            docModule:meetingbody.docModule, //文档共享是否开启
+            screenModule:meetingbody.screenModule, //屏幕共享是否开启
+            mediaModule:meetingbody.mediaModule, //媒体共享是否开启 
+            whiteboardModule:meetingbody.whiteboardModule, //白板共享是否开启
+            recordModule:meetingbody.recordModule, //录制是否启用
+            chatModule:meetingbody.chatModule, //聊天模式是否启用
+        }
+        let backMeeting = await meetingService.createMeeting(meeting);
+        return backMeeting;
     } catch (error) {
-        
+        throw error;
     }
 }
 
diff --git a/controller/userController.js b/controller/userController.js
index 8d368b2..543817e 100644
--- a/controller/userController.js
+++ b/controller/userController.js
@@ -25,7 +25,7 @@ userController.prototype.addUser = async(ctx, next) =>{
         return status.paramError('loginName');
     }else if(!params.password){
         return status.paramError('password','不能为空');        
-    }if(params.password.length < 6){
+    }else if(params.password.length < 6){
         return status.paramError('password','不得小于6位');                
     }
 
diff --git a/model/meetingModel.js b/model/meetingModel.js
index 9ff44c5..227bd4c 100644
--- a/model/meetingModel.js
+++ b/model/meetingModel.js
@@ -35,7 +35,6 @@ var  user = sequelize.define('3m_meeting', {
     },
     beginTime:{
         type:Sequelize.DATE,
-        defaultValue:Sequelize.NOW,
         field: "begin_time"
     },
     endTime:{
diff --git a/routes/meeting.js b/routes/meeting.js
index ef4231a..742b507 100644
--- a/routes/meeting.js
+++ b/routes/meeting.js
@@ -1,6 +1,4 @@
 const router = require('koa-router')()
-var userModel =  require('../model/userModel');
-var saitMd5 = require('../util/saltMD5')
 var meetingContoller = require('../controller/meetingController')
 var status = require('../util/resTemplate') 
 
@@ -11,10 +9,9 @@ router.prefix('/meeting')
 router.post('/createMeeting', async (ctx, next) => {
     try{
         var data = await meetingContoller.createMeeting(ctx, next);
-        status.successTemp(200,data);
+        status.successTemp(ctx,200,data);
       }catch(e){
-        const err = {code:0,msg:e.message}
-        status.catchError(400,e.message);    
+        status.catchError(ctx,400,e.message);    
       } 
   })
 
diff --git a/services/meetingService.js b/services/meetingService.js
new file mode 100644
index 0000000..f146526
--- /dev/null
+++ b/services/meetingService.js
@@ -0,0 +1,22 @@
+var meetingModel =  require('../model/meetingModel');
+var status = require('../util/resTemplate');
+var saitMd5 = require('../util/saltMD5');
+var  sequelize = require('../config');
+var tokenUtil =  require('../util/tokenUtil');
+var co = require('co');
+
+function meetingService(){
+}
+
+meetingService.prototype.createMeeting = async(meetingInfo) =>{
+    try {
+        let backMeeting = meetingModel.create(meetingInfo);
+        return backMeeting
+    } catch (error) {
+        throw error
+    }
+}
+
+
+
+module.exports = new meetingService();
\ No newline at end of file
diff --git a/services/userService.js b/services/userService.js
index bb5061c..508743f 100644
--- a/services/userService.js
+++ b/services/userService.js
@@ -46,7 +46,7 @@ userService.prototype.login = async(name,pw) => {
 userService.prototype.getStu = async(type)=>{
     try {
         let sql = `SELECT
-                     u.*, ug.name
+                     u.*, ug.name groupName
                     FROM
                         3m_user u
                     LEFT JOIN 3m_user_group ug ON ug.id = u.group_id`
diff --git a/util/tokenUtil.js b/util/tokenUtil.js
index 3f46471..dc86122 100644
--- a/util/tokenUtil.js
+++ b/util/tokenUtil.js
@@ -15,11 +15,12 @@ module.exports = new JwtSession() ;
  * @param cb
  */
 JwtSession.prototype.getSession =  (users) =>{
-  var expiresIn = 60 * 60 * 2;
+  console.log(users)
+  var expiresIn = 60 * 60 * 1000;
   var payload = {};
   payload.id = users.id;
-  payload.name = users.loginName;
-  payload.code =users.userType;
+  payload.name = users.userName;
+  payload.userRole =users.userRole;
   var options = {
     "expiresIn": expiresIn
   };
@@ -39,6 +40,7 @@ JwtSession.prototype.getSession =  (users) =>{
 JwtSession.prototype.prverifySession =  async(token) => {
   try {
     let back =jwt.verify(token, '3mang');
+    return back;
   } catch (error) {
     throw new Error(error)
   }
--
libgit2 0.24.0