From 3adefa44b77cae70f37b573560ed480c2e56768b Mon Sep 17 00:00:00 2001
From: EricsHu <hrr145632>
Date: 星期二, 09 五月 2023 19:16:17 +0800
Subject: [PATCH] 新增后台接口

---
 src/main/resources/application.properties                                      |    4 
 src/main/java/com/qxueyou/scc/base/dao/BaseDAO.java                            |  555 ++++++++++++------------
 src/main/java/com/qxueyou/scc/sys/action/LoginController.java                  |   37 +
 src/main/java/com/qxueyou/scc/exercise/service/impl/ExerciseInfoService.java   |  356 ++++++++--------
 src/main/java/com/qxueyou/scc/admin/schoolRoll/impl/SchoolRollServiceImpl.java |   15 
 src/main/java/com/qxueyou/scc/wx/service/IWechatService.java                   |    2 
 src/main/java/com/qxueyou/scc/admin/classes/service/impl/ClsClassService.java  |  220 +++++-----
 src/main/java/com/qxueyou/scc/teach/live/service/impl/MediaLiveService.java    |   19 
 src/main/java/com/qxueyou/scc/wx/service/impl/WechatService.java               |   16 
 src/main/java/com/qxueyou/scc/controller/VideoLiveController.java              |    4 
 src/main/java/com/qxueyou/scc/teach/live/service/IMediaLiveService.java        |   48 +-
 11 files changed, 678 insertions(+), 598 deletions(-)

diff --git a/src/main/java/com/qxueyou/scc/admin/classes/service/impl/ClsClassService.java b/src/main/java/com/qxueyou/scc/admin/classes/service/impl/ClsClassService.java
index 3aa4e02..dbf0cb3 100644
--- a/src/main/java/com/qxueyou/scc/admin/classes/service/impl/ClsClassService.java
+++ b/src/main/java/com/qxueyou/scc/admin/classes/service/impl/ClsClassService.java
@@ -81,7 +81,7 @@
      */
     @Override
     public Result insertReClass(String className, String classNumber, Date startTime, Date endTime, String subjectId,
-                              String teacherId,String classTypes) {
+                                String teacherId,String classTypes) {
 
         ClsClass cls = new ClsClass();
 
@@ -97,14 +97,14 @@
         save(cls);
         return new Result(true, "success",CollectionUtils.newStringMap("classId",cls.getClassId()));
     }
-	@Override
-	public ClsClass getReClass(String classTypes) {
-		String hql = "select c from ClsClass c where c.deleteFlag is false and c.classTypes=? ";
+    @Override
+    public ClsClass getReClass(String classTypes) {
+        String hql = "select c from ClsClass c where c.deleteFlag is false and c.classTypes=? ";
 
-		ClsClass cls = findUnique(hql, CollectionUtils.newList(classTypes),
-				ClsClass.class);
-		return cls;
-	}
+        ClsClass cls = findUnique(hql, CollectionUtils.newList(classTypes),
+                ClsClass.class);
+        return cls;
+    }
 
     @Override
     public Result updateClass(String classId, String className, String classNumber, Date startTime, Date endTime,
@@ -150,7 +150,7 @@
             hql.append(" and c.endTime < sysdate() ");
         }
 //        System.out.println("vvvvv"+ClientUtils.getOrgId()+"333333333"+ClientUtils.getUserId());
-        List<Object> args = CollectionUtils.newList(ClientUtils.getOrgId(),keyword_ + "%","40288a1261d106ba0161d1072e260000");
+        List<Object> args = CollectionUtils.newList(ClientUtils.getOrgId(),keyword_ + "%",ClientUtils.getUserId());
 //        System.out.println(args);
         if (!StringUtils.isEmpty(teacherId)) {
             hql.append(" and exists( select 1 from ClsClassReSubject r,Subject t where r.subjectId=t.subjectId and c.classId= r.classId and t.teacherId=? and r.deleteFlag is false and t.deleteFlag is false)");
@@ -170,13 +170,13 @@
         if (pageType == 1) {
             hql.append(" and c.endTime >= sysdate() ");
         }else if(pageType == 2) {
-        	hql.append(" and c.endTime < sysdate() ");
+            hql.append(" and c.endTime < sysdate() ");
         }
 
         List<Object> args = CollectionUtils.newList(ClientUtils.getOrgId(),keyword + "%");
 
         if (!StringUtils.isEmpty(teacherId)) {
-        	hql.append(" and exists( select 1 from ClsClassReSubject r,Subject t where r.subjectId=t.subjectId and c.classId= r.classId and t.teacherId=? and r.deleteFlag is false and t.deleteFlag is false)");
+            hql.append(" and exists( select 1 from ClsClassReSubject r,Subject t where r.subjectId=t.subjectId and c.classId= r.classId and t.teacherId=? and r.deleteFlag is false and t.deleteFlag is false)");
             args.add(teacherId);
         }
 
@@ -316,138 +316,138 @@
 
     @Override
     public List<Map<String,Object>> queryAvailableClassIdAndName(String teacherId,String subjectId) {
-    	StringBuffer hql = new StringBuffer(1000);
-    	// and c.endTime>=sysdate() 澧炲姞鏉′欢杩囨护鎺夊巻鍙茬彮绾�
-    	hql.append("select c.classId as classId ,c.name as className from ClsClass c where c.deleteFlag is false and c.orgId=:orgId and c.createId=:createId " );
-    	Map<String,Object> queryParam = new HashMap<String,Object>();
-    	queryParam.put("orgId", ClientUtils.getOrgId());
-    	queryParam.put("createId", ClientUtils.getUserId());
+        StringBuffer hql = new StringBuffer(1000);
+        // and c.endTime>=sysdate() 澧炲姞鏉′欢杩囨护鎺夊巻鍙茬彮绾�
+        hql.append("select c.classId as classId ,c.name as className from ClsClass c where c.deleteFlag is false and c.orgId=:orgId and c.createId=:createId " );
+        Map<String,Object> queryParam = new HashMap<String,Object>();
+        queryParam.put("orgId", ClientUtils.getOrgId());
+        queryParam.put("createId", ClientUtils.getUserId());
 
-    	if(StringUtils.isNotEmpty(teacherId)||StringUtils.isNotEmpty(subjectId)){
-    		hql.append(" and exists (select 1 from ClsClassReSubject r ,Subject s where r.subjectId=s.subjectId and  r.classId =c.classId and r.deleteFlag is false ");
-    	}
+        if(StringUtils.isNotEmpty(teacherId)||StringUtils.isNotEmpty(subjectId)){
+            hql.append(" and exists (select 1 from ClsClassReSubject r ,Subject s where r.subjectId=s.subjectId and  r.classId =c.classId and r.deleteFlag is false ");
+        }
 
-    	if(!StringUtils.isEmpty(teacherId)){
-    		hql.append(" and s.teacherId=:teacherId ");
-    		queryParam.put("teacherId", teacherId);
-    	}
+        if(!StringUtils.isEmpty(teacherId)){
+            hql.append(" and s.teacherId=:teacherId ");
+            queryParam.put("teacherId", teacherId);
+        }
 
-    	if(!StringUtils.isEmpty(subjectId)){
-    		hql.append(" and s.origSubjectId=:subjectId ");
-    		queryParam.put("subjectId", subjectId);
-    	}
+        if(!StringUtils.isEmpty(subjectId)){
+            hql.append(" and s.origSubjectId=:subjectId ");
+            queryParam.put("subjectId", subjectId);
+        }
 
-    	if(StringUtils.isNotEmpty(teacherId)||StringUtils.isNotEmpty(subjectId)){
-    		hql.append(")");
-    	}
+        if(StringUtils.isNotEmpty(teacherId)||StringUtils.isNotEmpty(subjectId)){
+            hql.append(")");
+        }
 
-    	return this.findListWithMapByHql(hql.toString(), queryParam);
+        return this.findListWithMapByHql(hql.toString(), queryParam);
     }
 
-	@Override
+    @Override
     public List<Map<String,Object>> queryAllClassIdAndName() {
-    	StringBuffer hql = new StringBuffer(500);
+        StringBuffer hql = new StringBuffer(500);
 //        c.deleteFlag is false  and
         hql.append("select c.classId as classId ,c.name as className from ClsClass c where c.endTime>=:endTime  and c.orgId=:orgId " );
 
-    	return this.findListWithMapByHql(hql.toString(), CollectionUtils.newObjectMap("endTime",new Date(),"orgId",ClientUtils.getOrgId()));
+        return this.findListWithMapByHql(hql.toString(), CollectionUtils.newObjectMap("endTime",new Date(),"orgId",ClientUtils.getOrgId()));
     }
 
 
 
-	/**
-	 * 鏌ヨ鐝骇
-	 *
-	 * type 1姝e父鐝礆锛�2鍘嗗彶鐝礆
-	 */
-	public Result classList(String keyword, Pager pager, int type) {
-		//鑾峰彇鑰佸笀id
-		String teacherId = teacherService.getTeacherIdByUserId(ClientUtils.getUserId());
-		if (StringUtils.isEmpty(teacherId)) {
-			return new Result(false, "闈炶�佸笀瑙掕壊鏃犳硶鏌ョ湅鐝骇");
-		}
-		QClsClass qClsClass = QClsClass.clsClass;
-		QSubject qSubject = QSubject.subject;
-		QClsClassReSubject qClsClassReSubject = QClsClassReSubject.clsClassReSubject;
-		QSubjectProgressTreeV qSubjectProgressTreeV = QSubjectProgressTreeV.subjectProgressTreeV;
+    /**
+     * 鏌ヨ鐝骇
+     *
+     * type 1姝e父鐝礆锛�2鍘嗗彶鐝礆
+     */
+    public Result classList(String keyword, Pager pager, int type) {
+        //鑾峰彇鑰佸笀id
+        String teacherId = teacherService.getTeacherIdByUserId(ClientUtils.getUserId());
+        if (StringUtils.isEmpty(teacherId)) {
+            return new Result(false, "闈炶�佸笀瑙掕壊鏃犳硶鏌ョ湅鐝骇");
+        }
+        QClsClass qClsClass = QClsClass.clsClass;
+        QSubject qSubject = QSubject.subject;
+        QClsClassReSubject qClsClassReSubject = QClsClassReSubject.clsClassReSubject;
+        QSubjectProgressTreeV qSubjectProgressTreeV = QSubjectProgressTreeV.subjectProgressTreeV;
 
-		//鏌ヨ鑴氭湰
-		JPAQuery<Tuple> queryDsl = this.getQueryFactory()
-				.select(qClsClass.name, qClsClass.classId, qClsClass.classNumber, qClsClass.studentCount,
-						qClsClass.createTime, qClsClass.startTime, qClsClass.endTime, qSubject)
-				.from(qClsClass, qSubject, qClsClassReSubject)
-				.where(qClsClass.deleteFlag.isFalse().and((type == 2 ? qClsClass.endTime.lt(new Date()) : qClsClass.endTime.gt(new Date()))).and(qClsClass.name.like("%" + keyword + "%"))
-						.and(qSubject.teacherId.eq(teacherId)).and(qSubject.deleteFlag.isFalse())
-						.and(qClsClassReSubject.deleteFlag.isFalse())
-						.and(qClsClassReSubject.classId.eq(qClsClass.classId))
-						.and(qClsClassReSubject.subjectId.eq(qSubject.subjectId)))
-				.groupBy(qClsClass.classId);
+        //鏌ヨ鑴氭湰
+        JPAQuery<Tuple> queryDsl = this.getQueryFactory()
+                .select(qClsClass.name, qClsClass.classId, qClsClass.classNumber, qClsClass.studentCount,
+                        qClsClass.createTime, qClsClass.startTime, qClsClass.endTime, qSubject)
+                .from(qClsClass, qSubject, qClsClassReSubject)
+                .where(qClsClass.deleteFlag.isFalse().and((type == 2 ? qClsClass.endTime.lt(new Date()) : qClsClass.endTime.gt(new Date()))).and(qClsClass.name.like("%" + keyword + "%"))
+                        .and(qSubject.teacherId.eq(teacherId)).and(qSubject.deleteFlag.isFalse())
+                        .and(qClsClassReSubject.deleteFlag.isFalse())
+                        .and(qClsClassReSubject.classId.eq(qClsClass.classId))
+                        .and(qClsClassReSubject.subjectId.eq(qSubject.subjectId)))
+                .groupBy(qClsClass.classId);
 
-		//鎬绘暟
-		long count = queryDsl.fetchCount();
+        //鎬绘暟
+        long count = queryDsl.fetchCount();
 
-		//listData
-		List<Map<String, Object>> listData = queryDsl.limit(pager.getPageSize()).offset(pager.getOffset())
-				.orderBy(qClsClass.createTime.desc(), qSubject.createTime.desc()).fetch().stream().map(tuple -> {
-					Map<String, Object> map = new HashMap<String, Object>();
-					Subject subject = tuple.get(qSubject);
+        //listData
+        List<Map<String, Object>> listData = queryDsl.limit(pager.getPageSize()).offset(pager.getOffset())
+                .orderBy(qClsClass.createTime.desc(), qSubject.createTime.desc()).fetch().stream().map(tuple -> {
+                    Map<String, Object> map = new HashMap<String, Object>();
+                    Subject subject = tuple.get(qSubject);
 
-					map.put("className", tuple.get(qClsClass.name));
-					map.put("classId", tuple.get(qClsClass.classId));
-					map.put("classNumber", tuple.get(qClsClass.classNumber));
-					map.put("studentCount", tuple.get(qClsClass.studentCount));
-					map.put("createTime", tuple.get(qClsClass.createTime));
-					map.put("startTime", tuple.get(qClsClass.startTime));
-					map.put("endTime", tuple.get(qClsClass.endTime));
-					if (subject != null) {
-						map.put("subjectName", subject.getName());
-						map.put("progressPercent",
-								this.getQueryFactory().select(qSubjectProgressTreeV.percent.avg())
-										.from(qSubjectProgressTreeV)
-										.where(qSubjectProgressTreeV.id.nodeId.eq(subject.getSubjectId())
-												.and(qSubjectProgressTreeV.nodeType.eq(Progress.PROGRESS_TYPE_SUBJECT)))
-										.groupBy(qSubjectProgressTreeV.id.nodeId).fetchOne());
-					} else {
-						map.put("subjectName", "鏆傛棤寮�鐝绋�");
-						map.put("progressPercent", 0);
-					}
-					return map;
-				}).collect(Collectors.toList());
+                    map.put("className", tuple.get(qClsClass.name));
+                    map.put("classId", tuple.get(qClsClass.classId));
+                    map.put("classNumber", tuple.get(qClsClass.classNumber));
+                    map.put("studentCount", tuple.get(qClsClass.studentCount));
+                    map.put("createTime", tuple.get(qClsClass.createTime));
+                    map.put("startTime", tuple.get(qClsClass.startTime));
+                    map.put("endTime", tuple.get(qClsClass.endTime));
+                    if (subject != null) {
+                        map.put("subjectName", subject.getName());
+                        map.put("progressPercent",
+                                this.getQueryFactory().select(qSubjectProgressTreeV.percent.avg())
+                                        .from(qSubjectProgressTreeV)
+                                        .where(qSubjectProgressTreeV.id.nodeId.eq(subject.getSubjectId())
+                                                .and(qSubjectProgressTreeV.nodeType.eq(Progress.PROGRESS_TYPE_SUBJECT)))
+                                        .groupBy(qSubjectProgressTreeV.id.nodeId).fetchOne());
+                    } else {
+                        map.put("subjectName", "鏆傛棤寮�鐝绋�");
+                        map.put("progressPercent", 0);
+                    }
+                    return map;
+                }).collect(Collectors.toList());
 
-		return new Result(true, "success", CollectionUtils.newObjectMap("count", count, "listData", listData));
-	}
+        return new Result(true, "success", CollectionUtils.newObjectMap("count", count, "listData", listData));
+    }
 
     @Override
     public String [] queryClassNamesByIds(String[] classIds){
-    	if(classIds!=null && classIds.length==0){
-    		return null;
-    	}
+        if(classIds!=null && classIds.length==0){
+            return null;
+        }
 
-    	String [] classNames = null;
+        String [] classNames = null;
 
-    	List<Map<String,Object>> lstResult= this.findListWithMapByHql("select c.classId as classId ,c.name as className from ClsClass c where c.classId in (:classIds) ",
-    			CollectionUtils.newObjectMap("classIds",classIds));
+        List<Map<String,Object>> lstResult= this.findListWithMapByHql("select c.classId as classId ,c.name as className from ClsClass c where c.classId in (:classIds) ",
+                CollectionUtils.newObjectMap("classIds",classIds));
 
-    	if(lstResult!=null && lstResult.size()==classIds.length){
-    		Map<String,String> map= new HashMap<String,String>(lstResult.size());
-    		classNames =new String [classIds.length];
+        if(lstResult!=null && lstResult.size()==classIds.length){
+            Map<String,String> map= new HashMap<String,String>(lstResult.size());
+            classNames =new String [classIds.length];
 
-    		for(Map<String,Object> item:lstResult){
-        		map.put((String)item.get("classId"), (String)item.get("className"));
-        	}
+            for(Map<String,Object> item:lstResult){
+                map.put((String)item.get("classId"), (String)item.get("className"));
+            }
 
-    		for(int i=0;i<classIds.length;i++){
-    			classNames[i]= map.get(classIds[i]);
-    		}
-    	}
+            for(int i=0;i<classIds.length;i++){
+                classNames[i]= map.get(classIds[i]);
+            }
+        }
 
-    	return classNames;
+        return classNames;
     }
 
     @Override
     public List<ClsClass> queryStudentClassesByUserId(String userId) {
-    	return this.find("from  ClsClass c where c.deleteFlag is false and exists( select 1 from StuStudent t where  t.classId = c.classId and t.userId=? and t.status=? ) ",
-				CollectionUtils.newList(userId,StuStudent.STATUS_ACTIVE),ClsClass.class);
+        return this.find("from  ClsClass c where c.deleteFlag is false and exists( select 1 from StuStudent t where  t.classId = c.classId and t.userId=? and t.status=? ) ",
+                CollectionUtils.newList(userId,StuStudent.STATUS_ACTIVE),ClsClass.class);
     }
 
 
diff --git a/src/main/java/com/qxueyou/scc/admin/schoolRoll/impl/SchoolRollServiceImpl.java b/src/main/java/com/qxueyou/scc/admin/schoolRoll/impl/SchoolRollServiceImpl.java
index 92f3715..2d0694f 100644
--- a/src/main/java/com/qxueyou/scc/admin/schoolRoll/impl/SchoolRollServiceImpl.java
+++ b/src/main/java/com/qxueyou/scc/admin/schoolRoll/impl/SchoolRollServiceImpl.java
@@ -65,14 +65,23 @@
             StuStudent stuStudent = findUnique(hql.toString(), args, StuStudent.class);
 
             if(stuStudent!=null && classId!=null){
+                StringBuffer ClaHql=new StringBuffer("from ClsClass where classId=? and deleteFlag is false");
+
+                List<Object> claArgs = CollectionUtils.newList(classId);
+
+                ClsClass cLaClass = findUnique(ClaHql.toString(), claArgs, ClsClass.class);
+
+                cLaClass.setStudentCount(cLaClass.getStudentCount()+1);
+
                 stuStudent.setClassId(classId);
+
                 save(stuStudent);
             }else {
                 return new Result(false,"鐝骇涓嶅瓨鍦ㄦ垨瀛︾敓涓嶅瓨鍦�");
             }
         }
 
-        return new Result(true);
+        return new Result(true,"鍒嗙彮鎴愬姛");
 
     }
 
@@ -88,7 +97,7 @@
         String[] headers = { "濮撳悕", "鎬у埆" ,"鎵嬫満鍙�" ,"韬唤璇�"};
         List<StuStudent> dataset = new ArrayList<StuStudent>();
         for (StuStudent stuStudent:
-        stuStudents) {
+                stuStudents) {
             StuStudent u = new StuStudent();
             u.setName(stuStudent.getName());
             u.setSex(stuStudent.getSex());
@@ -133,7 +142,7 @@
     @Override
     public Result loopStudentIds(String[] studentIds) {
         for (String studentId:
-             studentIds) {
+                studentIds) {
             auditStudent(studentId);
         }
         return new Result(true);
diff --git a/src/main/java/com/qxueyou/scc/base/dao/BaseDAO.java b/src/main/java/com/qxueyou/scc/base/dao/BaseDAO.java
index 13f67a8..843a3db 100644
--- a/src/main/java/com/qxueyou/scc/base/dao/BaseDAO.java
+++ b/src/main/java/com/qxueyou/scc/base/dao/BaseDAO.java
@@ -39,11 +39,12 @@
  * @since JDK1.6
  * @history 2010-07-28 澶忓痉铏� 鏂板缓
  */
+@Transactional(readOnly=false)
 public class BaseDAO extends HibernateDaoSupport {
-	
-	/** 娉ㄩ噴 rawtypes  */
-	private static final String RAW_TYPES = "rawtypes";
-	
+
+    /** 娉ㄩ噴 rawtypes  */
+    private static final String RAW_TYPES = "rawtypes";
+
     /**
      * 娉ㄥ叆sessionFactory
      *
@@ -63,9 +64,9 @@
      * @return 鏌ユ壘鍒扮殑缁撴灉,濡傛灉娌℃壘鍒�,杩斿洖null
      */
     public <T> T read(Class<T> clz, Serializable key) {
-    	if(key==null){
-    		return null;
-    	}
+        if(key==null){
+            return null;
+        }
         return clz.cast(this.getHibernateTemplate().get(clz, key));
     }
 
@@ -75,7 +76,7 @@
     public void update(Object obj) {
         this.getHibernateTemplate().update(obj);
     }
-    
+
     /**
      * 淇濆瓨瀵硅薄
      */
@@ -96,7 +97,7 @@
      */
     public void saveOrUpdateAll(@SuppressWarnings(RAW_TYPES) Collection collection) {
         for(Object obj:collection){
-        	this.getHibernateTemplate().saveOrUpdate(obj);
+            this.getHibernateTemplate().saveOrUpdate(obj);
         }
     }
 
@@ -106,7 +107,7 @@
     public void deleteAll(@SuppressWarnings(RAW_TYPES) Collection col) {
         this.getHibernateTemplate().deleteAll(col);
     }
-    
+
     /**
      * 鏍规嵁hql鏌ヨ,骞惰繑鍥炴墽琛岀被鍨嬬殑鍒楄〃缁撴灉
      *
@@ -115,10 +116,10 @@
      * @return
      */
     @SuppressWarnings("unchecked")
-	public <T> List<T> find(String hql, Class<T> cls) {
+    public <T> List<T> find(String hql, Class<T> cls) {
         return find(hql,Collections.EMPTY_LIST,cls);
     }
-    
+
     /**
      * 鏍规嵁hql鏌ヨ,骞惰繑鍥炴墽琛岀被鍨嬬殑鍒楄〃缁撴灉
      *
@@ -127,11 +128,11 @@
      * @param cls 杩斿洖绫诲瀷
      * @return
      */
-	public <T> List<T> find(final String hql,final List<Object> args,final Class<T> cls) {
-    	return this.getHibernateTemplate().execute(new HibernateCallback<List<T>>() {
+    public <T> List<T> find(final String hql,final List<Object> args,final Class<T> cls) {
+        return this.getHibernateTemplate().execute(new HibernateCallback<List<T>>() {
 
             @SuppressWarnings("unchecked")
-			public List<T> doInHibernate(Session session) {
+            public List<T> doInHibernate(Session session) {
                 Query query = session.createQuery(hql);
                 int i = 0;
                 for (Object arg : args) {
@@ -143,7 +144,7 @@
             }
         });
     }
-    
+
     /**
      * 鏍规嵁hql鏌ヨ,骞惰繑鍥炴墽琛岀被鍨嬬殑鍒楄〃
      *
@@ -152,11 +153,11 @@
      * @param cls 杩斿洖绫诲瀷 
      * @return
      */
-	@SuppressWarnings("unchecked")
-	public List<Object[]> findwithRawResult(String hql, List<Object> args) {
+    @SuppressWarnings("unchecked")
+    public List<Object[]> findwithRawResult(String hql, List<Object> args) {
         return (List<Object[]>) this.getHibernateTemplate().find(hql, args.toArray());
     }
-    
+
     /**
      * 鏍规嵁hql鏌ヨ,杩斿洖鍒楄〃鏁版嵁鎬绘暟
      *
@@ -165,28 +166,28 @@
      * @param cls 杩斿洖绫诲瀷
      * @return
      */
-	public int findCount(final String hql, final List<Object> args) {
-    	return getHibernateTemplate().execute(new HibernateCallback<Integer>() {
-    		 
+    public int findCount(final String hql, final List<Object> args) {
+        return getHibernateTemplate().execute(new HibernateCallback<Integer>() {
+
             @Override
             public Integer doInHibernate(Session session){
-            	
-            	Query query = session.createQuery(hql.trim().startsWith("from")?"select count(1) ".concat(hql):hql);
-            	int i = 0;
-            	for (Object arg : args) {
+
+                Query query = session.createQuery(hql.trim().startsWith("from")?"select count(1) ".concat(hql):hql);
+                int i = 0;
+                for (Object arg : args) {
                     query.setParameter(i++, arg);
                 }
-            	
-            	if(null != query.uniqueResult()){
-            		return ((Long)query.uniqueResult()).intValue();
-            	}else{
-            		return 0 ;
-            	}
+
+                if(null != query.uniqueResult()){
+                    return ((Long)query.uniqueResult()).intValue();
+                }else{
+                    return 0 ;
+                }
             }
         });
     }
-	
-	 /**
+
+    /**
      * 鏍规嵁hql鏌ヨ,杩斿洖鍒楄〃鏁版嵁鎬绘暟
      *
      * @param hql 鏌ヨ璇彞
@@ -194,27 +195,27 @@
      * @param cls 杩斿洖绫诲瀷
      * @return
      */
-	public int findCountBySql(final String sql, final List<Object> args) {
-    	return getHibernateTemplate().execute(new HibernateCallback<Integer>() {
-    		 
+    public int findCountBySql(final String sql, final List<Object> args) {
+        return getHibernateTemplate().execute(new HibernateCallback<Integer>() {
+
             @Override
             public Integer doInHibernate(Session session){
-            	
-            	Query query = session.createSQLQuery(sql.trim().startsWith("from")?"select count(1) ".concat(sql):sql);
-            	int i = 0;
-            	for (Object arg : args) {
+
+                Query query = session.createSQLQuery(sql.trim().startsWith("from")?"select count(1) ".concat(sql):sql);
+                int i = 0;
+                for (Object arg : args) {
                     query.setParameter(i++, arg);
                 }
-            	
-            	if(null != query.uniqueResult()){
-            		return ((BigInteger)query.uniqueResult()).intValue();
-            	}else{
-            		return 0 ;
-            	}
+
+                if(null != query.uniqueResult()){
+                    return ((BigInteger)query.uniqueResult()).intValue();
+                }else{
+                    return 0 ;
+                }
             }
         });
     }
-    
+
     /**
      * 鏍规嵁hql鏌ヨ,杩斿洖鍒楄〃鍒嗛〉鏁版嵁
      *
@@ -224,7 +225,7 @@
      * @return
      */
     @SuppressWarnings({ "unchecked" })
-	public <T> List<T> findList(final String hql, final Pager page, final List<Object> args,Class<T> cls) {
+    public <T> List<T> findList(final String hql, final Pager page, final List<Object> args,Class<T> cls) {
         return this.getHibernateTemplate().execute(new HibernateCallback<List<T>>() {
 
             public List<T> doInHibernate(Session session) {
@@ -239,7 +240,7 @@
             }
         });
     }
-    
+
     /**
      * 鏍规嵁hql鏌ヨ,杩斿洖鍞竴鐨勬暟鎹�
      *
@@ -249,7 +250,7 @@
      * @return
      */
     @SuppressWarnings({ RAW_TYPES, "unchecked" })
-	public <T> T findUnique(final String hql, final List<Object> args,Class<T> cls) {
+    public <T> T findUnique(final String hql, final List<Object> args,Class<T> cls) {
         return  (T)this.getHibernateTemplate().execute(new HibernateCallback() {
 
             public Object doInHibernate(Session session) {
@@ -290,7 +291,7 @@
 
         });
     }
-    
+
     /**
      * 鏍规嵁hql鏌ヨ,骞惰繑鍥炴墽琛岀被鍨嬬殑鍒楄〃缁撴灉
      *
@@ -310,14 +311,14 @@
                     query.setParameter(i++, arg);
                 }
                 query.setFirstResult(pager.getPageSize()*(pager.getPageNum()-1));
-	            query.setMaxResults(pager.getPageSize());
+                query.setMaxResults(pager.getPageSize());
                 return query.list();
             }
 
         });
     }
-    
-    
+
+
     /**
      * hql鍙惈鍗曚竴鍙傛暟
      *
@@ -327,17 +328,17 @@
      * @return
      */
     public Result bulkUpdateInLoop(String hql, Object args[]) {
-    	int iCount = 0;
+        int iCount = 0;
         for(Object arg:args){
-        	iCount += getHibernateTemplate().bulkUpdate(hql, arg);
+            iCount += getHibernateTemplate().bulkUpdate(hql, arg);
         }
         Map<String,Object> attrs = new HashMap<String,Object>(1);
         attrs.put("doCount", iCount);
         Result result = new Result(true);
         result.setData(attrs);
-    	return result;
+        return result;
     }
-    
+
     /**
      * hql鍙惈鍗曚竴鍙傛暟
      *
@@ -347,14 +348,14 @@
      * @return
      */
     public Result bulkUpdate(String hql, Object args[]) {
-        int count = getHibernateTemplate().bulkUpdate(hql, args);      
+        int count = getHibernateTemplate().bulkUpdate(hql, args);
         Map<String,Object> attrs = new HashMap<String,Object>(1);
         attrs.put("doCount", count);
         Result result = new Result(true);
         result.setData(attrs);
-    	return result;
+        return result;
     }
-    
+
     /**
      * 瀛樺偍杩囩▼璇彞
      *
@@ -362,25 +363,25 @@
      * @param args 鍙傛暟鏁扮粍
      * @return
      */
-	public Result executeProduce(final String sql, final Object args[]) {
-    	
-    	Integer result = getHibernateTemplate().execute(new HibernateCallback<Integer>(){
+    public Result executeProduce(final String sql, final Object args[]) {
 
-			@Override
-			public Integer doInHibernate(Session session)
-					throws HibernateException {
-				
-				Query query = session.createSQLQuery("{ "+sql+" }");
-				for(int i=0;i<args.length;i++){
-					query.setParameter(i, args[i]);
-				}
+        Integer result = getHibernateTemplate().execute(new HibernateCallback<Integer>(){
+
+            @Override
+            public Integer doInHibernate(Session session)
+                    throws HibernateException {
+
+                Query query = session.createSQLQuery("{ "+sql+" }");
+                for(int i=0;i<args.length;i++){
+                    query.setParameter(i, args[i]);
+                }
                 return query.executeUpdate();
-			}
-        	
+            }
+
         });
         return new Result(true,String.valueOf(result));
     }
-    
+
     /**
      * 鎵цsql鍒犻櫎
      *
@@ -388,24 +389,24 @@
      * @param args 鍙傛暟鏁扮粍
      * @return
      */
-	public int executeSqlDelete(final String sql, final Object args[]) {
-    	
-    	return getHibernateTemplate().execute(new HibernateCallback<Integer>(){
+    public int executeSqlDelete(final String sql, final Object args[]) {
 
-			@Override
-			public Integer doInHibernate(Session session)
-					throws HibernateException {
-				
-				Query query = session.createSQLQuery(sql);
-				for(int i=0;i<args.length;i++){
-					query.setParameter(i, args[i]);
-				}
+        return getHibernateTemplate().execute(new HibernateCallback<Integer>(){
+
+            @Override
+            public Integer doInHibernate(Session session)
+                    throws HibernateException {
+
+                Query query = session.createSQLQuery(sql);
+                for(int i=0;i<args.length;i++){
+                    query.setParameter(i, args[i]);
+                }
                 return query.executeUpdate();
-			}
-        	
+            }
+
         });
     }
-    
+
     /**
      * 鏍规嵁hql鏌ヨ,骞惰繑鍥炴墽琛岀被鍨嬬殑鍒楄〃缁撴灉
      *
@@ -416,30 +417,30 @@
      */
     @SuppressWarnings({RAW_TYPES, "unchecked" })
     public List<Object[]> findRawByComplexHql(final String hql, final Map<String, Object> map) {
-    	// 鏌ヨ缁撴灉
+        // 鏌ヨ缁撴灉
         return  (List<Object[]>)this.getHibernateTemplate().execute(new HibernateCallback<List>() {
             public List doInHibernate(Session session) {
                 Query query = session.createQuery(hql);
-                if (map != null) {  
-                    Set<String> keySet = map.keySet();  
-                    for (String string : keySet) {  
-                        Object obj = map.get(string);  
+                if (map != null) {
+                    Set<String> keySet = map.keySet();
+                    for (String string : keySet) {
+                        Object obj = map.get(string);
                         //杩欓噷鑰冭檻浼犲叆鐨勫弬鏁版槸浠�涔堢被鍨嬶紝涓嶅悓绫诲瀷浣跨敤鐨勬柟娉曚笉鍚�  
-                        if(obj instanceof Collection<?>){  
-                            query.setParameterList(string, (Collection<?>)obj);  
-                        }else if(obj instanceof Object[]){  
-                            query.setParameterList(string, (Object[])obj);  
-                        }else{  
-                            query.setParameter(string, obj);  
-                        }  
-                    }  
-                }  
+                        if(obj instanceof Collection<?>){
+                            query.setParameterList(string, (Collection<?>)obj);
+                        }else if(obj instanceof Object[]){
+                            query.setParameterList(string, (Object[])obj);
+                        }else{
+                            query.setParameter(string, obj);
+                        }
+                    }
+                }
                 return query.list();
             }
 
         });
-    }   
-    
+    }
+
     /**
      * 鏍规嵁hql鏌ヨ,杩斿洖鍒楄〃鏁版嵁鎬绘暟
      *
@@ -448,39 +449,39 @@
      * @param cls 杩斿洖绫诲瀷
      * @return
      */
-	public int findCountByComplexHql(final String hql, final Map<String, Object> map) {
-    	return getHibernateTemplate().execute(new HibernateCallback<Integer>() {
-    		 
+    public int findCountByComplexHql(final String hql, final Map<String, Object> map) {
+        return getHibernateTemplate().execute(new HibernateCallback<Integer>() {
+
             @Override
             public Integer doInHibernate(Session session){
-            	
-            	Query queryHql = session.createQuery(hql.trim().startsWith("from")?"select count(1) ".concat(hql):hql);
-            	
-            	if (map != null) {  
-                    Set<String> keySet = map.keySet();  
-                    for (String string : keySet) {  
-                        Object obj = map.get(string);  
+
+                Query queryHql = session.createQuery(hql.trim().startsWith("from")?"select count(1) ".concat(hql):hql);
+
+                if (map != null) {
+                    Set<String> keySet = map.keySet();
+                    for (String string : keySet) {
+                        Object obj = map.get(string);
                         //杩欓噷鑰冭檻浼犲叆鐨勫弬鏁版槸浠�涔堢被鍨嬶紝涓嶅悓绫诲瀷浣跨敤鐨勬柟娉曚笉鍚�  
-                        if(obj instanceof Collection<?>){  
-                        	queryHql.setParameterList(string, (Collection<?>)obj);  
-                        }else if(obj instanceof Object[]){  
-                        	queryHql.setParameterList(string, (Object[])obj);  
-                        }else{  
-                        	queryHql.setParameter(string, obj);  
-                        }  
-                    }  
-            	}
-            	
-            	if(null != queryHql.uniqueResult()){
-            		return ((Long)queryHql.uniqueResult()).intValue();
-            	}else{
-            		return 0 ;
-            	}
+                        if(obj instanceof Collection<?>){
+                            queryHql.setParameterList(string, (Collection<?>)obj);
+                        }else if(obj instanceof Object[]){
+                            queryHql.setParameterList(string, (Object[])obj);
+                        }else{
+                            queryHql.setParameter(string, obj);
+                        }
+                    }
+                }
+
+                if(null != queryHql.uniqueResult()){
+                    return ((Long)queryHql.uniqueResult()).intValue();
+                }else{
+                    return 0 ;
+                }
             }
         });
     }
-	
-	 /**
+
+    /**
      * 鏍规嵁sql鏌ヨ,杩斿洖鍒楄〃鏁版嵁鎬绘暟
      *
      * @param hql 鏌ヨ璇彞
@@ -488,38 +489,38 @@
      * @param cls 杩斿洖绫诲瀷
      * @return
      */
-	public int findCountByComplexSql(final String hql, final Map<String, Object> map) {
-    	return getHibernateTemplate().execute(new HibernateCallback<Integer>() {
-    		 
+    public int findCountByComplexSql(final String hql, final Map<String, Object> map) {
+        return getHibernateTemplate().execute(new HibernateCallback<Integer>() {
+
             @Override
             public Integer doInHibernate(Session session){
-            	
-            	Query querySql = session.createSQLQuery(hql.trim().startsWith("from")?"select count(1) ".concat(hql):hql);
-            	
-            	if (map != null) {  
-                    Set<String> keySet = map.keySet();  
-                    for (String string : keySet) {  
-                        Object obj = map.get(string);  
+
+                Query querySql = session.createSQLQuery(hql.trim().startsWith("from")?"select count(1) ".concat(hql):hql);
+
+                if (map != null) {
+                    Set<String> keySet = map.keySet();
+                    for (String string : keySet) {
+                        Object obj = map.get(string);
                         //杩欓噷鑰冭檻浼犲叆鐨勫弬鏁版槸浠�涔堢被鍨嬶紝涓嶅悓绫诲瀷浣跨敤鐨勬柟娉曚笉鍚�  
-                        if(obj instanceof Collection<?>){  
-                        	querySql.setParameterList(string, (Collection<?>)obj);  
-                        }else if(obj instanceof Object[]){  
-                        	querySql.setParameterList(string, (Object[])obj);  
-                        }else{  
-                        	querySql.setParameter(string, obj);  
-                        }  
-                    }  
-            	}
-            	
-            	if(null != querySql.uniqueResult()){
-            		return ((BigInteger)querySql.uniqueResult()).intValue();
-            	}else{
-            		return 0 ;
-            	}
+                        if(obj instanceof Collection<?>){
+                            querySql.setParameterList(string, (Collection<?>)obj);
+                        }else if(obj instanceof Object[]){
+                            querySql.setParameterList(string, (Object[])obj);
+                        }else{
+                            querySql.setParameter(string, obj);
+                        }
+                    }
+                }
+
+                if(null != querySql.uniqueResult()){
+                    return ((BigInteger)querySql.uniqueResult()).intValue();
+                }else{
+                    return 0 ;
+                }
             }
         });
     }
-	
+
     /**
      * 鏍规嵁hql鏌ヨ,骞惰繑鍥炴墽琛岀被鍨嬬殑鍒楄〃缁撴灉
      *
@@ -529,12 +530,12 @@
      * @return
      */
     public <T> List<T> findByComplexHql(final String hql, final Map<String, Object> map, Class<T> cls) {
-    	Pager page = new Pager();
-    	page.setPageSize(Integer.MAX_VALUE);
-    	page.setPageNum(1);
+        Pager page = new Pager();
+        page.setPageSize(Integer.MAX_VALUE);
+        page.setPageNum(1);
         return findByComplexHql(hql, page, map, cls);
     }
-    
+
     /**
      * 澶嶆潅hql
      * @param sql
@@ -543,43 +544,43 @@
      * @return
      */
     public <T> T findUniqueByHql(final String hql, final Map<String, Object> map){
-    	// 鏌ヨ缁撴灉
+        // 鏌ヨ缁撴灉
         List<T> lst =  this.getHibernateTemplate().execute(new HibernateCallback<List<T>>() {
-        	
+
             @SuppressWarnings("unchecked")
-			public List<T> doInHibernate(Session session) {
+            public List<T> doInHibernate(Session session) {
                 Query queryHql = session.createQuery(hql);
-                if (map != null) {  
-                    Set<String> keySet = map.keySet();  
-                    for (String string : keySet) {  
-                        Object obj = map.get(string);  
+                if (map != null) {
+                    Set<String> keySet = map.keySet();
+                    for (String string : keySet) {
+                        Object obj = map.get(string);
                         //杩欓噷鑰冭檻浼犲叆鐨勫弬鏁版槸浠�涔堢被鍨嬶紝涓嶅悓绫诲瀷浣跨敤鐨勬柟娉曚笉鍚�  
-                        if(obj instanceof Collection<?>){  
-                        	queryHql.setParameterList(string, (Collection<?>)obj);  
-                        }else if(obj instanceof Object[]){  
-                        	queryHql.setParameterList(string, (Object[])obj);  
-                        }else{  
-                        	queryHql.setParameter(string, obj);  
-                        }  
-                    }  
-                }  
+                        if(obj instanceof Collection<?>){
+                            queryHql.setParameterList(string, (Collection<?>)obj);
+                        }else if(obj instanceof Object[]){
+                            queryHql.setParameterList(string, (Object[])obj);
+                        }else{
+                            queryHql.setParameter(string, obj);
+                        }
+                    }
+                }
                 queryHql.setFirstResult(0);
                 queryHql.setMaxResults(1);
-                
+
                 List<?> r = queryHql.list();
-                
+
                 List<T> lst = new ArrayList<T>(r.size());
                 for(Object o:r) {
-                	lst.add((T)o);
+                    lst.add((T)o);
                 }
                 return lst;
             }
 
         });
-        
+
         return lst.isEmpty()?null:lst.get(0);
     }
-    
+
     /**
      * 鏍规嵁hql鏌ヨ,骞惰繑鍥炴墽琛岀被鍨嬬殑鍒楄〃缁撴灉锛屽垪琛ㄦ暟鎹负Map
      *
@@ -588,13 +589,13 @@
      * @return
      */
     public List<Map<String,Object>> findListWithMapByHql(final String hql, final Map<String, Object> map) {
-    	Pager page = new Pager();
-    	page.setPageNum(1);
-    	page.setPageSize(Integer.MAX_VALUE);
-    	
+        Pager page = new Pager();
+        page.setPageNum(1);
+        page.setPageSize(Integer.MAX_VALUE);
+
         return findListWithMapByHql(hql,map,page);
     }
-    
+
     /**
      * 鏍规嵁hql鏌ヨ,骞惰繑鍥炴墽琛岀被鍨嬬殑鍒楄〃缁撴灉锛屽垪琛ㄦ暟鎹负Map
      *
@@ -604,34 +605,34 @@
      */
     @SuppressWarnings("unchecked")
     public List<Map<String,Object>> findListWithMapByHql(final String hql, final Map<String, Object> map,final Pager page) {
-    	// 鏌ヨ缁撴灉
+        // 鏌ヨ缁撴灉
         List<Map<String,Object>> lst =  getHibernateTemplate().execute(new HibernateCallback<List<Map<String,Object>>>() {
-			public List<Map<String,Object>> doInHibernate(Session session) {
+            public List<Map<String,Object>> doInHibernate(Session session) {
                 Query query = session.createQuery(hql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
-                if (map != null) {  
-                    Set<String> keySet = map.keySet();  
-                    for (String string : keySet) {  
-                        Object obj = map.get(string);  
+                if (map != null) {
+                    Set<String> keySet = map.keySet();
+                    for (String string : keySet) {
+                        Object obj = map.get(string);
                         //杩欓噷鑰冭檻浼犲叆鐨勫弬鏁版槸浠�涔堢被鍨嬶紝涓嶅悓绫诲瀷浣跨敤鐨勬柟娉曚笉鍚�  
-                        if(obj instanceof Collection<?>){  
-                            query.setParameterList(string, (Collection<?>)obj);  
-                        }else if(obj instanceof Object[]){  
-                            query.setParameterList(string, (Object[])obj);  
-                        }else{  
-                            query.setParameter(string, obj);  
-                        }  
+                        if(obj instanceof Collection<?>){
+                            query.setParameterList(string, (Collection<?>)obj);
+                        }else if(obj instanceof Object[]){
+                            query.setParameterList(string, (Object[])obj);
+                        }else{
+                            query.setParameter(string, obj);
+                        }
                     }
-                }  
+                }
                 query.setFirstResult(page.getPageSize()*(page.getPageNum()-1));
                 query.setMaxResults(page.getPageSize());
                 return query.list();
             }
 
         });
-        
+
         return lst;
     }
-    
+
     /**
      * 鏍规嵁hql鏌ヨ,骞惰繑鍥炲敮涓�涓�鏉$粨鏋�
      *
@@ -642,35 +643,35 @@
      */
     @SuppressWarnings({RAW_TYPES })
     public <T> T findUniqueByComplexHql(final String hql, final Map<String, Object> map, Class<T> cls) {
-    	// 鏌ヨ缁撴灉
+        // 鏌ヨ缁撴灉
         List<T> lst =  this.getHibernateTemplate().execute(new HibernateCallback<List<T>>() {
             public List doInHibernate(Session session) {
                 Query query = session.createQuery(hql);
-                if (map != null) {  
-                    Set<String> keySet = map.keySet();  
-                    for (String string : keySet) {  
-                        Object obj = map.get(string);  
+                if (map != null) {
+                    Set<String> keySet = map.keySet();
+                    for (String string : keySet) {
+                        Object obj = map.get(string);
                         //杩欓噷鑰冭檻浼犲叆鐨勫弬鏁版槸浠�涔堢被鍨嬶紝涓嶅悓绫诲瀷浣跨敤鐨勬柟娉曚笉鍚�  
-                        if(obj instanceof Collection<?>){  
-                            query.setParameterList(string, (Collection<?>)obj);  
-                        }else if(obj instanceof Object[]){  
-                            query.setParameterList(string, (Object[])obj);  
-                        }else{  
-                            query.setParameter(string, obj);  
-                        }  
-                    }  
-                }  
+                        if(obj instanceof Collection<?>){
+                            query.setParameterList(string, (Collection<?>)obj);
+                        }else if(obj instanceof Object[]){
+                            query.setParameterList(string, (Object[])obj);
+                        }else{
+                            query.setParameter(string, obj);
+                        }
+                    }
+                }
                 query.setFirstResult(0);
                 query.setMaxResults(1);
                 return query.list();
             }
 
         });
-        
+
         return lst.isEmpty()?null:cls.cast(lst.get(0));
     }
 
-    
+
     /**
      * 鏍规嵁Sql鏌ヨ,骞惰繑鍥炴墽琛岀被鍨嬬殑鍒楄〃缁撴灉
      *
@@ -680,13 +681,13 @@
      * @return
      */
     public <T> List<T> findByComplexSql(final String sql, final Map<String, Object> map, Class<T> cls) {
-    	Pager page = new Pager();
-    	page.setPageSize(Integer.MAX_VALUE);
-    	page.setPageNum(1);
+        Pager page = new Pager();
+        page.setPageSize(Integer.MAX_VALUE);
+        page.setPageNum(1);
         return findByComplexSql(sql, page, map, cls);
     }
-    
-    
+
+
     /**
      * 鏍规嵁Sql鏌ヨ,骞惰繑鍥炴墽琛岀被鍨嬬殑鍒楄〃缁撴灉
      *
@@ -697,32 +698,32 @@
      */
     @SuppressWarnings({RAW_TYPES, "unchecked" })
     public List<Object[]> findRawByComplexSql(final String sql, final Map<String, Object> map) {
-    	// 鏌ヨ缁撴灉
+        // 鏌ヨ缁撴灉
         return  (List<Object[]>)this.getHibernateTemplate().execute(new HibernateCallback<List>() {
             public List doInHibernate(Session session) {
                 SQLQuery query = session.createSQLQuery(sql);
-                if (map != null) {  
-                    Set<String> keySet = map.keySet();  
-                    for (String string : keySet) {  
-                        Object obj = map.get(string);  
+                if (map != null) {
+                    Set<String> keySet = map.keySet();
+                    for (String string : keySet) {
+                        Object obj = map.get(string);
                         //杩欓噷鑰冭檻浼犲叆鐨勫弬鏁版槸浠�涔堢被鍨嬶紝涓嶅悓绫诲瀷浣跨敤鐨勬柟娉曚笉鍚�  
-                        if(obj instanceof Collection<?>){  
-                            query.setParameterList(string, (Collection<?>)obj);  
-                        }else if(obj instanceof Object[]){  
-                            query.setParameterList(string, (Object[])obj);  
-                        }else{  
-                            query.setParameter(string, obj);  
-                        }  
-                    }  
-                }  
+                        if(obj instanceof Collection<?>){
+                            query.setParameterList(string, (Collection<?>)obj);
+                        }else if(obj instanceof Object[]){
+                            query.setParameterList(string, (Object[])obj);
+                        }else{
+                            query.setParameter(string, obj);
+                        }
+                    }
+                }
                 return query.list();
             }
 
         });
-        
-     
+
+
     }
-    
+
     /**
      * 鏍规嵁hql鏌ヨ,骞惰繑鍥炴墽琛岀被鍨嬬殑鍒楄〃缁撴灉
      *
@@ -733,31 +734,31 @@
      */
     @SuppressWarnings({RAW_TYPES })
     public <T> List<T> findByComplexHql(final String hql,final Pager page, final Map<String, Object> map, Class<T> cls) {
-    	// 鏌ヨ缁撴灉
+        // 鏌ヨ缁撴灉
         List lst =  this.getHibernateTemplate().execute(new HibernateCallback<List>() {
             public List doInHibernate(Session session) {
                 Query queryHql = session.createQuery(hql);
-                if (map != null) {  
-                    Set<String> keySet = map.keySet();  
-                    for (String string : keySet) {  
-                        Object obj = map.get(string);  
+                if (map != null) {
+                    Set<String> keySet = map.keySet();
+                    for (String string : keySet) {
+                        Object obj = map.get(string);
                         //杩欓噷鑰冭檻浼犲叆鐨勫弬鏁版槸浠�涔堢被鍨嬶紝涓嶅悓绫诲瀷浣跨敤鐨勬柟娉曚笉鍚�  
-                        if(obj instanceof Collection<?>){  
-                        	queryHql.setParameterList(string, (Collection<?>)obj);  
-                        }else if(obj instanceof Object[]){  
-                        	queryHql.setParameterList(string, (Object[])obj);  
-                        }else{  
-                        	queryHql.setParameter(string, obj);  
-                        }  
-                    }  
-                }  
+                        if(obj instanceof Collection<?>){
+                            queryHql.setParameterList(string, (Collection<?>)obj);
+                        }else if(obj instanceof Object[]){
+                            queryHql.setParameterList(string, (Object[])obj);
+                        }else{
+                            queryHql.setParameter(string, obj);
+                        }
+                    }
+                }
                 queryHql.setFirstResult(page.getPageSize()*(page.getPageNum()-1));
                 queryHql.setMaxResults(page.getPageSize());
                 return queryHql.list();
             }
 
         });
-        
+
         // 缁勮缁撴灉
         List<T> result = new ArrayList<T>();
         for (Object obj : lst) {
@@ -765,7 +766,7 @@
         }
         return result;
     }
-    
+
     /**
      * 鏍规嵁Sql鏌ヨ,骞惰繑鍥炴墽琛岀被鍨嬬殑鍒楄〃缁撴灉
      *
@@ -776,31 +777,31 @@
      */
     @SuppressWarnings({RAW_TYPES })
     public <T> List<T> findByComplexSql(final String sql,final Pager page, final Map<String, Object> map, Class<T> cls) {
-    	// 鏌ヨ缁撴灉
+        // 鏌ヨ缁撴灉
         List lst =  this.getHibernateTemplate().execute(new HibernateCallback<List>() {
             public List doInHibernate(Session session) {
-            	 SQLQuery querySql = session.createSQLQuery(sql);
-                if (map != null) {  
-                    Set<String> keySet = map.keySet();  
-                    for (String string : keySet) {  
-                        Object obj = map.get(string);  
+                SQLQuery querySql = session.createSQLQuery(sql);
+                if (map != null) {
+                    Set<String> keySet = map.keySet();
+                    for (String string : keySet) {
+                        Object obj = map.get(string);
                         //杩欓噷鑰冭檻浼犲叆鐨勫弬鏁版槸浠�涔堢被鍨嬶紝涓嶅悓绫诲瀷浣跨敤鐨勬柟娉曚笉鍚�  
-                        if(obj instanceof Collection<?>){  
-                        	querySql.setParameterList(string, (Collection<?>)obj);  
-                        }else if(obj instanceof Object[]){  
-                        	querySql.setParameterList(string, (Object[])obj);  
-                        }else{  
-                        	querySql.setParameter(string, obj);  
-                        }  
-                    }  
-                }  
+                        if(obj instanceof Collection<?>){
+                            querySql.setParameterList(string, (Collection<?>)obj);
+                        }else if(obj instanceof Object[]){
+                            querySql.setParameterList(string, (Object[])obj);
+                        }else{
+                            querySql.setParameter(string, obj);
+                        }
+                    }
+                }
                 querySql.setFirstResult(page.getPageSize()*(page.getPageNum()-1));
                 querySql.setMaxResults(page.getPageSize());
                 return querySql.list();
             }
 
         });
-        
+
         // 缁勮缁撴灉
         List<T> result = new ArrayList<T>();
         for (Object obj : lst) {
@@ -808,6 +809,6 @@
         }
         return result;
     }
-    
-    
+
+
 }
diff --git a/src/main/java/com/qxueyou/scc/controller/VideoLiveController.java b/src/main/java/com/qxueyou/scc/controller/VideoLiveController.java
index 359b4b1..f18bac9 100644
--- a/src/main/java/com/qxueyou/scc/controller/VideoLiveController.java
+++ b/src/main/java/com/qxueyou/scc/controller/VideoLiveController.java
@@ -259,8 +259,8 @@
 	 */
 	@ApiOperation(value = "鍒犻櫎鍒涘缓鐨勭洿鎾�")
 	@PostMapping(value = "delete")
-	public Result delete(String videoLiveIds) {
-		return liveService.delete(videoLiveIds.split(","));
+	public Result delete(String videoLiveIds,String	courseIds) throws Exception {
+		return liveService.delete(videoLiveIds.split(","),courseIds.split(","));
 	}
 	
 	
diff --git a/src/main/java/com/qxueyou/scc/exercise/service/impl/ExerciseInfoService.java b/src/main/java/com/qxueyou/scc/exercise/service/impl/ExerciseInfoService.java
index 8efc799..f71fc0c 100644
--- a/src/main/java/com/qxueyou/scc/exercise/service/impl/ExerciseInfoService.java
+++ b/src/main/java/com/qxueyou/scc/exercise/service/impl/ExerciseInfoService.java
@@ -62,7 +62,7 @@
 
 /**
  * 鑰冭瘯
- * 
+ *
  * @author lihanqi
  *
  */
@@ -87,64 +87,64 @@
 
 	@Autowired
 	IHandoutService handoutService;
-	
+
 	@Autowired
 	IMsgInfoService msgInfoService;
-	
+
 	@Autowired
 	IExerciseCompleteService exerciseCompleteService;
-	
+
 	@Autowired
 	IExerciseGroupService exerciseGroupService;
-	
+
 	@Override
 	public List<ExerciseInfo> list(String keyword,String classId,Short status,Integer pageSize,Integer pageNum) {
 		StringBuffer hql = new StringBuffer(500);
 		hql.append("from ExerciseInfo e where e.name like ? and e.createId =? ");
 		List<Object> params = CollectionUtils.newList('%' + keyword.trim() + '%',ClientUtils.getUserId());
-		
+
 		if(status!=null){
 			hql.append(" and e.status = ? ");
 			params.add(status);
 		}
-		
+
 		if(StringUtils.isNotEmpty(classId)){
 			hql.append(" and exists(select 1 from ExerciseExamReClass r where e.exerciseInfoId=r.examId and r.classId = ? and r.deleteFlag is false)");
 			params.add(classId);
 		}
-		
+
 		hql.append(" and e.deleteFlag is false order by e.createTime desc");
 		return findList(hql.toString(),new Pager(pageSize, pageNum),params, ExerciseInfo.class);
 	}
-	
+
 	@Override
 	public int listCount(String keyword,String classId, Short status) {
 		StringBuffer hql = new StringBuffer(500);
 		hql.append("from ExerciseInfo e where e.name like ? and e.createId =? ");
 		List<Object> params = CollectionUtils.newList('%' + keyword.trim() + '%',ClientUtils.getUserId());
-		
+
 		if(status!=null){
 			hql.append(" and e.status = ? ");
 			params.add(status);
 		}
-		
+
 		if(StringUtils.isNotEmpty(classId)){
 			hql.append(" and exists(select 1 from ExerciseExamReClass r where e.exerciseInfoId=r.examId and r.classId = ? and r.deleteFlag is false)");
 			params.add(classId);
 		}
-		
+
 		hql.append(" and e.deleteFlag is false ");
 		return findCount(hql.toString(),params);
 	}
-	
+
 	/**
 	 * 淇濆瓨浣滀笟
-	 * 
+	 *
 	 * @return
 	 */
 	public Result insertExerciseInfo(ExerciseInfo exerciseInfo) {
 		String[] classIds = QBeanUtils.listPropertyVal(exerciseInfo.getReClasses(), "classId").toArray(new String[exerciseInfo.getReClasses().size()]);
-		
+
 		String exerciseInfoId = UUIDUtils.generateUUID().replace("-", "");
 		exerciseInfo.setExerciseInfoId(exerciseInfoId);
 		exerciseInfo.setOrgId(ClientUtils.getOrgId());
@@ -157,39 +157,39 @@
 			// 淇濆瓨棰樼洰绫诲瀷
 			List<ExerciseItemSet> lstExerciseItemSet = exerciseInfo.getExerciseItemSets();
 			this.saveExerciseItemSet(exerciseInfoId,lstExerciseItemSet);
-			
+
 			//鐢熸垚浣滀笟棰樼洰淇℃伅
 			String[] sourceGroupIds = QBeanUtils.listPropertyVal(exerciseInfo.getReGroups(), "groupId").toArray(new String[exerciseInfo.getReGroups().size()]);
-			
+
 			String newGroupId = this.exerciseGroupService.doCreateRandomExerciseGroup(
 					exerciseInfo.getName() + "-浣滀笟",ExerciseGroup.TYPE_EXERCISE_EXAM_ITEM,sourceGroupIds,lstExerciseItemSet);
-				
+
 			if(StringUtils.isEmpty(newGroupId)){
 				return new Result(false, "棰樼洰鏁版嵁涓嶅锛岃澧炲姞棰樺簱鐨勯鐩垨鑰呭噺灏戣瘯鍗风殑棰樻暟",exerciseInfoId);
 			}
-			
+
 			this.saveExerciseExamReGroup(exerciseInfoId,new String[]{newGroupId},EXAM_TYPES[0],ExerciseExamReGroup.GROUP_TYPE_EXAM);
-			
+
 			// 淇濆瓨鍏宠仈棰樺簱淇℃伅
 			this.saveExerciseExamReGroup(exerciseInfoId,sourceGroupIds,null,ExerciseExamReGroup.GROUP_TYPE_SOURCE);
 		}
-		
+
 		// 淇濆瓨鍏宠仈鐝骇
 		this.saveExerciseExamReClass(exerciseInfoId, classIds);
-		
+
 		return new Result(true, "", exerciseInfoId);
 	}
 
 	/**
 	 * 淇敼缁冧範
-	 * 
+	 *
 	 * @return
 	 */
 	public Result updateExerciseInfo(ExerciseInfo exerciseInfo) {
 		String[] classIds = QBeanUtils.listPropertyVal(exerciseInfo.getReClasses(), "classId").toArray(new String[exerciseInfo.getReClasses().size()]);
-		
+
 		String exerciseInfoId = exerciseInfo.getExerciseInfoId();
-		
+
 		ExerciseInfo newExerciseInfo = this.read(ExerciseInfo.class, exerciseInfoId);
 		newExerciseInfo.setScore(exerciseInfo.getScore());
 		newExerciseInfo.setClassCount(classIds == null ? 0 : classIds.length);
@@ -203,49 +203,49 @@
 		newExerciseInfo.setCommitUploadType(exerciseInfo.getCommitUploadType());
 		TraceUtils.setUpdateTrace(newExerciseInfo);
 		this.save(newExerciseInfo);
-		
+
 		//娓呯悊鏃у叧绯绘暟鎹�
 		this.doClearExerciseExamReData(exerciseInfoId);
-		
+
 		// 绛旈浣滀笟榛樿鎸夌収缁熶竴鍗风敓鎴愪綔涓氶鐩�
-		
+
 		if (newExerciseInfo.getType() == ExerciseInfo.EXERCISE_TYPE_ANSWER) {
-			
+
 			// 淇濆瓨棰樼洰绫诲瀷
 			List<ExerciseItemSet> lstExerciseItemSet = exerciseInfo.getExerciseItemSets();
-			
+
 			saveExerciseItemSet(exerciseInfoId,lstExerciseItemSet);
-			
+
 			//鐢熸垚浣滀笟棰樼洰淇℃伅
 			String[] groupIds = QBeanUtils.listPropertyVal(exerciseInfo.getReGroups(), "groupId").toArray(new String[exerciseInfo.getReGroups().size()]);
 			String newGroupId = this.exerciseGroupService.doCreateRandomExerciseGroup(
-						exerciseInfo.getName() + "-浣滀笟",ExerciseGroup.TYPE_EXERCISE_EXAM_ITEM,groupIds, lstExerciseItemSet);
-				
+					exerciseInfo.getName() + "-浣滀笟",ExerciseGroup.TYPE_EXERCISE_EXAM_ITEM,groupIds, lstExerciseItemSet);
+
 			if(StringUtils.isEmpty(newGroupId)){
 				return new Result(false, "棰樼洰鏁版嵁涓嶅锛岃澧炲姞棰樺簱鐨勯鐩垨鑰呭噺灏戣瘯鍗风殑棰樻暟");
 			}
-			
+
 			this.saveExerciseExamReGroup(exerciseInfoId,new String[]{newGroupId},EXAM_TYPES[0],ExerciseExamReGroup.GROUP_TYPE_EXAM);
-			
+
 			// 淇濆瓨鍏宠仈棰樺簱淇℃伅
 			this.saveExerciseExamReGroup(exerciseInfoId,groupIds,null,ExerciseExamReGroup.GROUP_TYPE_SOURCE);
-			
-		
+
+
 		}
 
 		// 淇濆瓨鍏宠仈鐝骇
 		this.saveExerciseExamReClass(exerciseInfoId, classIds);
-		
+
 		return new Result(true, "", exerciseInfoId);
 	}
-	
+
 	//娓呴櫎涔嬪墠鐨勭粌涔犲叧鑱斿叧绯绘暟鎹�
 	private void doClearExerciseExamReData(String exerciseInfoId){
 		this.bulkUpdate("update ExerciseExamReGroup set deleteFlag = 1 where examId = ?",new Object[]{exerciseInfoId});
 		this.bulkUpdate("update ExerciseExamReClass set deleteFlag = 1 where examId = ?",new Object[] {exerciseInfoId});
 		this.bulkUpdate("update ExerciseItemSet set deleteFlag = 1 where exerciseInfoId = ?",new Object[]{exerciseInfoId});
 	}
-	
+
 	private void saveExerciseExamReClass(String exerciseInfoId,String[] classIds){
 		ExerciseExamReClass reClass = null;
 		for (String classId : classIds) {
@@ -254,10 +254,10 @@
 			reClass.setDeleteFlag(false);
 			reClass.setExamId(exerciseInfoId);
 			TraceUtils.setCreateTrace(reClass);
-			this.save(reClass);	
+			this.save(reClass);
 		}
 	}
-	
+
 	private void saveExerciseExamReGroup(String exerciseInfoId, String [] groupIds,String examType,short reType){
 		ExerciseExamReGroup reGroup = null;
 		for (String groupId : groupIds) {
@@ -269,9 +269,9 @@
 			reGroup.setExamId(exerciseInfoId);
 			TraceUtils.setCreateTrace(reGroup);
 			this.save(reGroup);
-		}		
+		}
 	}
-	
+
 	private void saveExerciseItemSet(String exerciseInfoId,List<ExerciseItemSet> lstExerciseItemSet){
 		for (ExerciseItemSet itemSet : lstExerciseItemSet) {
 			itemSet.setExerciseInfoId(exerciseInfoId);
@@ -282,7 +282,7 @@
 
 	/**
 	 * 鍒犻櫎浣滀笟
-	 * 
+	 *
 	 * @param examId
 	 * @return
 	 */
@@ -293,43 +293,43 @@
 
 	@Override
 	public String queryExerciseInfoRelatedGroupId(String exerciseInfoId) {
-		return this.findUnique("select groupId from ExerciseExamReGroup where examId=? and type=? and deleteFlag is false ", 
-								CollectionUtils.newList(exerciseInfoId, ExerciseExamReGroup.GROUP_TYPE_EXAM),String.class);
+		return this.findUnique("select groupId from ExerciseExamReGroup where examId=? and type=? and deleteFlag is false ",
+				CollectionUtils.newList(exerciseInfoId, ExerciseExamReGroup.GROUP_TYPE_EXAM),String.class);
 	}
-	
-	
+
+
 	@Override
 	public List<ExerciseItemSet> queryExerciseItemSet(String exerciseInfoId){
-		return this.find("from ExerciseItemSet where exerciseInfoId=? and deleteFlag is false order by itemType ASC", 
+		return this.find("from ExerciseItemSet where exerciseInfoId=? and deleteFlag is false order by itemType ASC",
 				CollectionUtils.newList(exerciseInfoId), ExerciseItemSet.class);
 	}
-	
+
 	@Override
 	public List<ExerciseResultV> queryStuExerciselist(String keyword,String exerciseInfoId,String userId,String subjectId,Short status,Integer pageSize,Integer pageNum) {
 		StringBuffer hql = new StringBuffer(500);
 		hql.append("from ExerciseResultV where exerciseStatus=?");
 		List<Object> params = CollectionUtils.newList(ExerciseInfo.EXERCISE_STATUS_PUBLISHED);
-		
+
 		if(!StringUtils.isEmpty(userId)){
 			hql.append(" and userId=? ");
-			params.add(userId);	
+			params.add(userId);
 		}
-		
+
 		if(!StringUtils.isEmpty(exerciseInfoId)){
 			hql.append(" and id.exerciseInfoId=?");
-			params.add(exerciseInfoId);	
+			params.add(exerciseInfoId);
 		}
-		
+
 		if(!StringUtils.isEmpty(keyword)){
 			hql.append(" and studentName like ?");
-			params.add("%" + keyword.trim() + "%");	
+			params.add("%" + keyword.trim() + "%");
 		}
-		
+
 		if(!StringUtils.isEmpty(subjectId)){
 			hql.append(" and subjectId=?");
 			params.add(subjectId);
 		}
-		
+
 		//榛樿鍏ㄩ儴锛�0寰呭畬鎴愶紝1宸叉彁浜� ,2:宸叉壒闃�,3闇�閲嶅啓,4:閫炬湡鏈氦
 		if(status!=null){
 			Date nowTime = new Date();
@@ -353,38 +353,38 @@
 				params.add(ExerciseCompleteInfo.STATUS_DRAFT);
 			}
 		}
-		
+
 		hql.append(" order by startTime desc");
-		
+
 		return this.findList(hql.toString(),new Pager(pageSize, pageNum),params, ExerciseResultV.class);
 	}
-	
+
 	@Override
 	public int queryStuExerciseListCount(String keyword,String exerciseInfoId,String userId,String subjectId,Short status) {
 		StringBuffer hql = new StringBuffer(500);
 		hql.append("from ExerciseResultV where exerciseStatus=?");
 		List<Object> params = CollectionUtils.newList(ExerciseInfo.EXERCISE_STATUS_PUBLISHED);
-		
+
 		if(!StringUtils.isEmpty(userId)){
 			hql.append(" and userId=? ");
-			params.add(userId);	
+			params.add(userId);
 		}
-		
+
 		if(!StringUtils.isEmpty(exerciseInfoId)){
 			hql.append(" and id.exerciseInfoId=?");
-			params.add(exerciseInfoId);	
+			params.add(exerciseInfoId);
 		}
-		
+
 		if(!StringUtils.isEmpty(keyword)){
 			hql.append(" and studentName like ?");
 			params.add("%" + keyword.trim() + "%");
 		}
-		
+
 		if(!StringUtils.isEmpty(subjectId)){
 			hql.append(" and subjectId=?");
 			params.add(subjectId);
 		}
-		
+
 		//榛樿鍏ㄩ儴锛�0寰呭畬鎴愶紝1宸叉彁浜� ,2:宸叉壒闃�,3闇�閲嶅啓,4:閫炬湡鏈氦
 		if(status!=null){
 			Date nowTime = new Date();
@@ -408,13 +408,13 @@
 				params.add(ExerciseCompleteInfo.STATUS_DRAFT);
 			}
 		}
-		
-		return  this.findCount(hql.toString(), params); 
+
+		return  this.findCount(hql.toString(), params);
 	}
-	
+
 	/**
 	 * 鍒濆鍖栧钩鍧囨垚缁╁拰鏈�楂樻垚缁�
-	 * 
+	 *
 	 * @param groupId
 	 * @return
 	 */
@@ -428,7 +428,7 @@
 
 	/**
 	 * 棰樼洰寰楀垎璇︽儏
-	 * 
+	 *
 	 * @param groupId
 	 * @return
 	 */
@@ -495,7 +495,7 @@
 
 	/**
 	 * 寮�濮嬮鐩綔涓�
-	 * 
+	 *
 	 * @param examId
 	 * @return
 	 */
@@ -506,12 +506,12 @@
 				this.doStartAnswerExercise(exerciseInfo, clsClass, studentUserId)
 				:
 				this.doStartOtherExercise(exerciseInfo, clsClass, studentUserId);
-		
+
 	}
 
 	/**
 	 * 寮�濮嬮鐩綔涓�
-	 * 
+	 *
 	 * @param examId
 	 * @return
 	 */
@@ -559,51 +559,51 @@
 		// 鏌ヨ瀛︾敓鑰冭瘯鎬诲垎
 		result.addData("studentScore", record.getScore());
 		result.addData("objStudentScore", record.getObjScore()==null?BigDecimal.ZERO:record.getObjScore());
-		
+
 		ExerciseCompleteInfo completeInfo = doGetOrCreateExerciseCompleteInfo(exerciseInfo.getExerciseInfoId(),clsClass.getClassId() , studentUserId);
-		
+
 		if(completeInfo!=null){
 			result.addData("exerciseCompleteId", completeInfo.getExerciseCompleteId());
 		}
-		
+
 		result.addData("itemSet", exerciseInfo.getExerciseItemSets());
 
 		return result;
 	}
-	
+
 	private ExerciseCompleteInfo doGetOrCreateExerciseCompleteInfo(String exerciseInfoId,String classId,String studentUserId){
-		  // 鍒ゆ柇鏄惁宸茬粡鍒濆鍖�
-			ExerciseCompleteInfo completeInfo = exerciseCompleteService.queryCompleteInfo(exerciseInfoId,classId , studentUserId);
-			
-			if(completeInfo==null){
-				String hql = " select s.studentId as studentId,s.studentNo as studentNo,s.userId as studentUserId,s.name as studentName,"
-						+ " c.classId as classId,c.name as className from StuStudent s ,ClsClass c,ExerciseExamReClass r  "
-						+ " where r.examId=:exerciseInfoId and r.classId =c.classId and c.classId= s.classId and s.userId=:userId"
-						+ " and s.classId=:classId and r.examId=:exerciseInfoId  and r.deleteFlag is false and s.deleteFlag is false and c.deleteFlag is false";
-			
-				List<Map<String, Object>> resultMap = this.findListWithMapByHql(hql, 
+		// 鍒ゆ柇鏄惁宸茬粡鍒濆鍖�
+		ExerciseCompleteInfo completeInfo = exerciseCompleteService.queryCompleteInfo(exerciseInfoId,classId , studentUserId);
+
+		if(completeInfo==null){
+			String hql = " select s.studentId as studentId,s.studentNo as studentNo,s.userId as studentUserId,s.name as studentName,"
+					+ " c.classId as classId,c.name as className from StuStudent s ,ClsClass c,ExerciseExamReClass r  "
+					+ " where r.examId=:exerciseInfoId and r.classId =c.classId and c.classId= s.classId and s.userId=:userId"
+					+ " and s.classId=:classId and r.examId=:exerciseInfoId  and r.deleteFlag is false and s.deleteFlag is false and c.deleteFlag is false";
+
+			List<Map<String, Object>> resultMap = this.findListWithMapByHql(hql,
 					CollectionUtils.newObjectMap("userId",studentUserId,"classId",classId,"exerciseInfoId",exerciseInfoId));
-				
-				if(resultMap!=null && resultMap.get(0)!=null){
-					Map<String, Object> map = resultMap.get(0);
-					
-					completeInfo = new ExerciseCompleteInfo();
-					TraceUtils.setCreateTrace(completeInfo);
-					completeInfo.setStudentId((String) map.get("studentId"));
-					completeInfo.setStudentNo((String) map.get("studentNo"));
-					completeInfo.setStudentUserId((String) map.get("studentUserId"));
-					completeInfo.setStudentUserName((String) map.get("studentName"));
-					completeInfo.setClassId((String) map.get("classId"));
-					completeInfo.setClassName((String) map.get("className"));
-					completeInfo.setExerciseInfoId(exerciseInfoId);
-					completeInfo.setCompleteStatus(ExerciseCompleteInfo.STATUS_DRAFT);
-					this.save(completeInfo);
-				}
+
+			if(resultMap!=null && resultMap.get(0)!=null){
+				Map<String, Object> map = resultMap.get(0);
+
+				completeInfo = new ExerciseCompleteInfo();
+				TraceUtils.setCreateTrace(completeInfo);
+				completeInfo.setStudentId((String) map.get("studentId"));
+				completeInfo.setStudentNo((String) map.get("studentNo"));
+				completeInfo.setStudentUserId((String) map.get("studentUserId"));
+				completeInfo.setStudentUserName((String) map.get("studentName"));
+				completeInfo.setClassId((String) map.get("classId"));
+				completeInfo.setClassName((String) map.get("className"));
+				completeInfo.setExerciseInfoId(exerciseInfoId);
+				completeInfo.setCompleteStatus(ExerciseCompleteInfo.STATUS_DRAFT);
+				this.save(completeInfo);
 			}
-			
-			return completeInfo;
+		}
+
+		return completeInfo;
 	}
-	
+
 	private Map<String,Object>  insertExerRecord(ExerciseInfo exerciseInfo,String groupId) {
 		ExerciseRecord record = new ExerciseRecord();
 		record.setDeleteFlag(false);
@@ -616,7 +616,7 @@
 		record.setUserId(ClientUtils.getUserId());
 		record.setOrgId(ClientUtils.getOrgId());
 		TraceUtils.setCreateTrace(record);
-		
+
 		//鑾峰彇鑰冭瘯棰樼洰缁熻淇℃伅锛屽苟淇濆瓨
 		Map<String,Object> result = this.queryItemStatics(exerciseInfo.getExerciseItemSets());
 		record.setTotalScore(new BigDecimal(exerciseInfo.getScore()));
@@ -625,23 +625,23 @@
 		record.setObjTotalScore((BigDecimal)result.get("objTotalScore"));
 		record.setSubItemCount((int)result.get("subItemCount"));
 		record.setObjItemCount((int)result.get("objItemCount"));
-		
+
 		TraceUtils.setCreateTrace(record);
 		this.save(record);
-		
+
 		Map<String,Object> resultMap = new HashMap<String, Object>(3);
 		resultMap.put("exerciseRecordId", record.getRecordId());
 		resultMap.put("updateTime", DateTimeUtils.getCurrDateTime(record.getUpdateTime()));
 		resultMap.put("exerciseGroupId", groupId);
 		resultMap.put("record", record);
-		
+
 		return resultMap;
 	}
-	
+
 	private Map<String,Object> queryItemStatics(List<ExerciseItemSet> itemSets){
 		float subTotalScore = 0,objTotalScore=0;
 		int subItemCount=0,objItemCount=0;
-		
+
 		//濡傛灉鏄殢鏈虹粍鍗�
 		if(itemSets!=null && itemSets.size()>0){
 			for(ExerciseItemSet s:itemSets){
@@ -654,19 +654,19 @@
 				}
 			}
 		}
-			
+
 		Map<String,Object> result = new HashMap<String,Object>();
 		result.put("subTotalScore", new BigDecimal(subTotalScore));
 		result.put("objTotalScore", new BigDecimal(objTotalScore));
 		result.put("subItemCount", subItemCount);
 		result.put("objItemCount", objItemCount);
-		
+
 		return result;
-	}	
+	}
 
 	/**
 	 * 寮�濮嬫枃浠跺拰鍐欎綔浣滀笟
-	 * 
+	 *
 	 * @param examId
 	 * @return
 	 */
@@ -674,7 +674,7 @@
 		// 鏌ヨ鏄惁宸茬粡瀛樺湪鍋氶璁板綍锛屽鏋滀笉瀛樺湪闇�瑕佹柊寤�
 		ExerciseCompleteInfo exerciseCompleteInfo = exerciseCompleteService.doCheckAndCreateExerciseCompleteInfo(
 				exerciseInfo.getExerciseInfoId(), clsClass.getClassId(), studentUserId);
-		
+
 		exerciseCompleteInfo.setCommitUploadType(exerciseInfo.getCommitUploadType());
 		exerciseCompleteInfo.setRemind(exerciseInfo.getRemind());
 		exerciseCompleteInfo.setExerciseType(exerciseInfo.getType());
@@ -690,7 +690,7 @@
 					exerciseCompleteInfo
 							.setPreviewPath(StringUtils.isNotEmpty(video.getAndroidHD()) ? video.getAndroidHD()
 									: StringUtils.isNotEmpty(video.getAndroidSD()) ? video.getAndroidSD()
-											: video.getAndroidLD());
+									: video.getAndroidLD());
 				} else {
 					exerciseCompleteInfo.setTransStatus(ExerciseCompleteInfo.PREVIEW_STATUS_NO);
 				}
@@ -714,7 +714,7 @@
 					.getOrgText(exerciseCompleteInfo.getExerciseCompleteId(), OrgText.TABLE_WRITING_EXERCISE)
 					.getContent());
 		}
-		
+
 		exerciseCompleteInfo.setTotalScore(exerciseInfo.getScore());
 
 		return new Result(true,"",CollectionUtils.newObjectMap("exerciseCompleteInfo", exerciseCompleteInfo));
@@ -722,11 +722,11 @@
 
 	@Override
 	public Result doSubmitOtherExerciseInfo(String exerciseCompleteInfoId, String content, String fileId,
-			String filePath, short submitType) {
+											String filePath, short submitType) {
 		Result result = new Result(true);
 		ExerciseCompleteInfo exerciseCompleteInfo = this.read(ExerciseCompleteInfo.class, exerciseCompleteInfoId);
 		ExerciseInfo exerciseInfo = this.read(ExerciseInfo.class, exerciseCompleteInfo.getExerciseInfoId());
-		
+
 		if (exerciseInfo.getType() == ExerciseInfo.EXERCISE_TYPE_WRITING) {
 			result = this.doSubmitWritingExerciseInfo(exerciseCompleteInfoId, content, submitType);
 		} else if (exerciseInfo.getType() == ExerciseInfo.EXERCISE_TYPE_FILE) {
@@ -738,7 +738,7 @@
 
 	/**
 	 * 鎻愪氦鍐欎綔浣滀笟
-	 * 
+	 *
 	 * @param exerciseInfoId
 	 * @param content
 	 * @param submitType
@@ -762,14 +762,14 @@
 			exerciseCompleteInfo.setCompleteStatus(ExerciseCompleteInfo.STATUS_COMMIT);
 			exerciseCompleteInfo.setCreator(ClientUtils.getUserName());
 		}
-	
+
 		this.save(exerciseCompleteInfo);
 		return new Result(true);
 	}
 
 	/**
 	 * 鎻愪氦鏂囦欢浣滀笟
-	 * 
+	 *
 	 * @param exerciseCompleteInfoId
 	 * @param content
 	 * @param fileId
@@ -778,7 +778,7 @@
 	 * @return
 	 */
 	private Result doSubmitFileExerciseInfo(String exerciseCompleteInfoId, String content, String fileId,
-			String filePath, short submitType) {
+											String filePath, short submitType) {
 		ExerciseCompleteInfo exerciseCompleteInfo = this.read(ExerciseCompleteInfo.class, exerciseCompleteInfoId);
 		ExerciseInfo exerciseInfo = this.read(ExerciseInfo.class, exerciseCompleteInfo.getExerciseInfoId());
 
@@ -794,7 +794,7 @@
 			ResFile resFile = this.read(ResFile.class, fileId);
 			exerciseCompleteInfo.setFileId(fileId);
 			exerciseCompleteInfo.setFilePath(filePath);
-			exerciseCompleteInfo.setOrgiFileName(resFile.getFileName());
+			exerciseCompleteInfo.setOrgiFileName(ClientUtils.getUserName()+"鐨勪綔涓�");
 		}
 
 		exerciseCompleteInfo.setUploadDesc(content);
@@ -885,12 +885,12 @@
 
 				return new Result(false, "鎻愪氦鏁版嵁寮傚父");
 			}
-			
+
 			ExerciseRecord record = this.read(ExerciseRecord.class, initRecordId);
 
 			//璁$畻寰楀垎
 			double studentScore = this.doCalculateExerciseScores(answerData, exerciseInfo.getExerciseItemSets());
-			
+
 			// 鎻愪氦璇曞嵎绛旀
 			answerData.setScore(new BigDecimal(studentScore));
 			Map<String, Object> resultMap = exerciseVerService.doOperExerciseAnswerData(answerData);
@@ -898,19 +898,19 @@
 			// 鏇存柊寰楀垎璁板綍鍙婄姸鎬�
 			exerciseCompleteInfo = this.read(ExerciseCompleteInfo.class, exerciseCompleteId);
 			resultMap.put("studentScore", studentScore);
-		
-			
+
+
 			// 鏇存柊瀹屾垚寰楀垎
 			if (ExerciseRecord.STATUS_SUBMIT.equals(answerData.getStatus())) {
 				resultMap.put("objScore", studentScore);
 				exerciseCompleteInfo.setSubmitTime(new Date());
-				
+
 				if(record.getSubItemCount()==0){
 					exerciseCompleteInfo.setCompleteStatus(ExerciseCompleteInfo.STATUS_CHECKED);
 				}else{
 					exerciseCompleteInfo.setCompleteStatus(ExerciseCompleteInfo.STATUS_COMMIT);
 				}
-				
+
 				this.bulkUpdate(
 						"update ExerciseRecord set status=1 , score=" + studentScore + ",objScore=" + studentScore
 								+ " where deleteFlag is false and recordId=?",
@@ -928,10 +928,10 @@
 								+ " where deleteFlag is false and recordId=? ",
 						new Object[] { resultMap.get("recordId") });
 			}
-			exerciseCompleteInfo.setStudentScore(new BigDecimal(studentScore));	
-			
+			exerciseCompleteInfo.setStudentScore(new BigDecimal(studentScore));
+
 			this.save(exerciseCompleteInfo);
-			
+
 			// 璁板綍鎻愪氦鐨勬暟鎹棩蹇�
 			exerciseVerService.doSaveExerciseDataSubmitLog(JSON.toJSONString(answerData), initRecordId,
 					ExerciseDataSubmitLog.TYPE_SUBMIT_ANSWER, ExerciseDataSubmitLog.STATUS_SUCCESS,
@@ -956,15 +956,15 @@
 	private double doCalculateExerciseScores(ExerciseSubmitAnswerData answerData, List<ExerciseItemSet> lstItemSet) {
 		//鑾峰彇濉┖棰樼瓟妗堜俊鎭�
 		Map<String,String> exerciseFillItemMap= null;
-		List<Object[]> lstObj =  this.find("select i.exerciseId,i.answer from ExerciseGroupItemRe r, ExerciseItem i where r.exerciseItemId=i.exerciseId and  r.exerciseGroupId=? and r.deleteFlag is false and i.type=? and i.deleteFlag is false", 
+		List<Object[]> lstObj =  this.find("select i.exerciseId,i.answer from ExerciseGroupItemRe r, ExerciseItem i where r.exerciseItemId=i.exerciseId and  r.exerciseGroupId=? and r.deleteFlag is false and i.type=? and i.deleteFlag is false",
 				CollectionUtils.newList(answerData.getExerciseGroupId(),ExerciseItem.TYPE_FILL_BLANKS), Object[].class);
 		if(lstObj!=null && lstObj.size()>0){
 			exerciseFillItemMap = new HashMap<String,String>(lstObj.size());
 			for(Object[] arrObj : lstObj){
 				exerciseFillItemMap.put((String)arrObj[0],(String)arrObj[1]);
-			}	
+			}
 		}
-		
+
 		Map<String, Double> scoreMap = new HashMap<String, Double>();
 		for (int i = 0; i < lstItemSet.size(); i++) {
 			if (lstItemSet.get(i).getItemType() == ExerciseItem.TYPE_SINGLE_SELECT) {
@@ -983,7 +983,7 @@
 				scoreMap.put("fill_right", lstItemSet.get(i).getRightScore());
 				scoreMap.put("fill_wrong", lstItemSet.get(i).getWrongScore());
 				scoreMap.put("fill_noanswer", lstItemSet.get(i).getBlankScore());
-			} 
+			}
 		}
 		double totalScore = 0.00;
 		String tempRightAnswer =null;
@@ -1040,7 +1040,7 @@
 
 		return totalScore;
 	}
-	
+
 	@Override
 	public Result doPublishExercise(String[] exerciseIds) {
 		// 鏇存柊浣滀笟鐘舵��
@@ -1054,7 +1054,7 @@
 		for (String exerciseId : exerciseIds) {
 			// 鍒ゆ柇鏄惁宸茬粡鍒濆鍖栵紝濡傛灉宸茬粡鍒濆鍖栧垯缁х画 -> TODO:闇�瑕佸鐞嗘柊鍔犲叆鐝骇瀛︾敓
 			int count = this.findCount("from ExerciseCompleteInfo f where f.deleteFlag is false and f.exerciseInfoId=?",CollectionUtils.newList(exerciseId));
-			
+
 			if (count == 0) {
 				hql = " select s.studentId as studentId,s.studentNo as studentNo,s.userId as studentUserId,s.name as studentName,c.classId as classId,c.name as className "
 						+ " from StuStudent s ,ClsClass c,ExerciseExamReClass r where r.examId=:exerciseInfoId "
@@ -1079,26 +1079,26 @@
 					this.saveOrUpdateAll(lstCompleteInfos);
 				}
 			}
-			
+
 			//鍙戝竷浣滀笟娑堟伅
 			this.doExercisePublishMsg(exerciseId);
 		}
-		
+
 		return new Result(true);
 	}
-	
+
 	private void doExercisePublishMsg(String exerciseInfoId){
 		ExerciseInfo exerciseInfo= this.read(ExerciseInfo.class, exerciseInfoId);
-		
-		List<String> lstUserIds = this.find("select userId from ExerciseResultV where id.exerciseInfoId=?", 
-										CollectionUtils.newList(exerciseInfoId), String.class);
-		
+
+		List<String> lstUserIds = this.find("select userId from ExerciseResultV where id.exerciseInfoId=?",
+				CollectionUtils.newList(exerciseInfoId), String.class);
+
 		if(lstUserIds!=null && lstUserIds.size()>0){
 			Map<String,String> attrs = CollectionUtils.newStringMap("exerciseInfoId",exerciseInfoId,"exerciseName",exerciseInfo.getName(),
-					"subjectId",exerciseInfo.getSubjectId(),"subjectName",exerciseInfo.getSubject().getName()); 
-			
-			msgInfoService.doSendTextMsgToUsers(lstUserIds.toArray(new String[lstUserIds.size()]), 
-										MsgInfo.TYPE_EXERCISE," 鍙戝竷浜嗕綔涓� ", attrs);
+					"subjectId",exerciseInfo.getSubjectId(),"subjectName",exerciseInfo.getSubject().getName());
+
+			msgInfoService.doSendTextMsgToUsers(lstUserIds.toArray(new String[lstUserIds.size()]),
+					MsgInfo.TYPE_EXERCISE," 鍙戝竷浜嗕綔涓� ", attrs);
 		}
 	}
 
@@ -1108,7 +1108,7 @@
 		this.bulkUpdateInLoop("update ExerciseInfo set status=" + ExerciseInfo.EXERCISE_STATUS_DRAFT + " WHERE exerciseInfoId=?",exerciseIds);
 		// 娓呴櫎浣滀笟瀹屾垚鎯呭喌
 		this.bulkUpdateInLoop("update ExerciseCompleteInfo set deleteFlag= true  WHERE exerciseInfoId=?", exerciseIds);
-		
+
 		return new Result(true);
 	}
 
@@ -1160,7 +1160,7 @@
 
 	/**
 	 * 鑾峰彇瀹屾垚鐨勪綔涓氫釜鏁�
-	 * 
+	 *
 	 * @param classId
 	 * @param userId
 	 * @return
@@ -1197,10 +1197,10 @@
 				CollectionUtils.newObjectMap("classId", classId, "status", ExerciseInfo.EXERCISE_STATUS_PUBLISHED));
 		return exerciseCount;
 	}
-	
+
 	/**
 	 * 鏌ヨ浣滀笟鍒楄〃-鏁欏笀绔�
-	 * 
+	 *
 	 * @param pageSize
 	 * @param keyword
 	 * @param classId
@@ -1210,19 +1210,19 @@
 	public List<Map<String, Object>> teacherExerciseInfoList(Integer pageSize,String keyword,String classId,Integer pageNum) {
 		QHomeworkScoreV qHomeworkScoreV = QHomeworkScoreV.homeworkScoreV;
 		QExerciseInfo qExerciseInfo = QExerciseInfo.exerciseInfo;
-		
+
 		Expression<Integer> cases = new CaseBuilder()
-			    .when(qHomeworkScoreV.completeStatus.isNull()).then(1)
-			    .otherwise(0).sum().as("homeworkNoSubmitCount");
-		
+				.when(qHomeworkScoreV.completeStatus.isNull()).then(1)
+				.otherwise(0).sum().as("homeworkNoSubmitCount");
+
 		Expression<Integer> cases2 = new CaseBuilder()
-			    .when(qHomeworkScoreV.completeStatus.eq(String.valueOf(ExerciseCompleteInfo.STATUS_CHECKED))).then(1)
-			    .otherwise(0).sum().as("homeworkToAuditCount");
-		
+				.when(qHomeworkScoreV.completeStatus.eq(String.valueOf(ExerciseCompleteInfo.STATUS_CHECKED))).then(1)
+				.otherwise(0).sum().as("homeworkToAuditCount");
+
 		Expression<Integer> cases3 = new CaseBuilder()
-			    .when(qHomeworkScoreV.completeStatus.eq(String.valueOf(ExerciseCompleteInfo.STATUS_COMMIT))).then(1)
-			    .otherwise(0).sum().as("homeworkHasAuditCount");
-		
+				.when(qHomeworkScoreV.completeStatus.eq(String.valueOf(ExerciseCompleteInfo.STATUS_COMMIT))).then(1)
+				.otherwise(0).sum().as("homeworkHasAuditCount");
+
 		return this.getQueryFactory().select(cases,cases2,cases3, qExerciseInfo.name.max(),
 				qExerciseInfo.startTime.max(), qExerciseInfo.endTime.max(), qExerciseInfo.type.max()).from(qHomeworkScoreV, qExerciseInfo)
 				.where(qHomeworkScoreV.classId.eq(classId)
@@ -1242,21 +1242,21 @@
 					return map;
 				}).collect(Collectors.toList());
 	}
-	
+
 	@Override
 	public Map<String,Integer> queryResultStatusCount(List<String> lstExerciseIds) {
 		if(lstExerciseIds== null || lstExerciseIds.size()==0){
 			return null;
 		}
-		
+
 		String hql = "select id.exerciseInfoId||'-'||completeStatus ,count(1)  from ExerciseResultV "
-						+ "where id.exerciseInfoId in(:exerciseIds) group by id.exerciseInfoId,completeStatus";
-		
-		List<Object[]> lstResult = this.findByComplexHql(hql, 
+				+ "where id.exerciseInfoId in(:exerciseIds) group by id.exerciseInfoId,completeStatus";
+
+		List<Object[]> lstResult = this.findByComplexHql(hql,
 				CollectionUtils.newObjectMap("exerciseIds",lstExerciseIds.toArray(new String[lstExerciseIds.size()])), Object[].class);
-		
-		Map<String,Integer> resultMap = new HashMap<String,Integer>(lstResult.size()); 
-		
+
+		Map<String,Integer> resultMap = new HashMap<String,Integer>(lstResult.size());
+
 		for(Object[] o:lstResult){
 			resultMap.put((String)o[0],((Long)o[1]).intValue());
 		}
diff --git a/src/main/java/com/qxueyou/scc/sys/action/LoginController.java b/src/main/java/com/qxueyou/scc/sys/action/LoginController.java
index 4a51522..e12d6ee 100644
--- a/src/main/java/com/qxueyou/scc/sys/action/LoginController.java
+++ b/src/main/java/com/qxueyou/scc/sys/action/LoginController.java
@@ -116,6 +116,18 @@
 	@Value("${wx.secret}")
 	private String secret;
 
+	/**
+	 * 鍏紬鍙穉ppID
+	 */
+	@Value("${wx.app.appId}")
+	private String wxappId;
+
+
+	/**
+	 * 鍏紬鍙穝ecret
+	 */
+	@Value("${wx.app.secret}")
+	private String wxsecret;
 
 	public static String UUNUMBER="QXYUUNUMBER";
 
@@ -129,8 +141,19 @@
 	 * @throws IOException
 	 */
 
+	@PostMapping("/wxAccountsLogin")
+	@ApiOperation("寰俊鍏紬鍙风櫥褰�")
+	@ResponseBody
+	public Result wxAccountsLogin(String code) {
+		JSONObject gettoken = wechatService.gettoken(wxappId, wxsecret);
+		JSONObject OpenId = wechatService.getSessionKeyOrOpenId(code);
+		JSONObject user = wechatService.getUser(gettoken.get("access_token").toString(), OpenId.get("openid").toString());
+		return new Result(true,"鎴愬姛",user);
+	}
+
+
 	@PostMapping("/wxlogin")
-	@ApiOperation("寰俊鐧诲綍")
+	@ApiOperation("寰俊灏忕▼搴忕櫥褰�")
 	@ResponseBody
 	public Result wechatLogin(String code,String number) {
 		JSONObject sessionKeyOrOpenId = wechatService.getSessionKeyOrOpenId(code);
@@ -164,10 +187,20 @@
 			String studentSql = "from StuStudent where deleteFlag is false and userId = ? ";
 			List<Object> stuParams =  CollectionUtils.newList(user.getUserId());
 			StuStudent stuStudent = commonDAO.findUnique(studentSql, stuParams, StuStudent.class);
+			CacheParamters param = new CacheParamters();
+			param.setUserId(user.getUserId());
+			param.setCustomRoleValue(user.getEmail());
+			param.setCustomOrgId(user.getImei());
+			param.setCacheIpFlag(true);
+			//		 缂撳瓨鍒拌姹傜嚎绋�
+			UserInfoWrapper wrapper = cacheUserInfo(param, null);
+			// 瀛樺埌redis
+			redisTemplate.opsForValue().set(UserInfoWrapper.SESSION_USER_INFO_KEY, wrapper);
 			return new Result(true,"鎺堟潈鎴愬姛",CollectionUtils.newObjectMap("user",user,"ClassId",stuStudent.getClassId()));
 		}
 		return phone;
-}
+	}
+
 
 	@ApiOperation(value = "鐧诲叆鎺ュ彛", notes = "")
 	@ApiImplicitParams({
diff --git a/src/main/java/com/qxueyou/scc/teach/live/service/IMediaLiveService.java b/src/main/java/com/qxueyou/scc/teach/live/service/IMediaLiveService.java
index 9222dfc..255aeec 100644
--- a/src/main/java/com/qxueyou/scc/teach/live/service/IMediaLiveService.java
+++ b/src/main/java/com/qxueyou/scc/teach/live/service/IMediaLiveService.java
@@ -7,7 +7,7 @@
 import com.qxueyou.scc.teach.live.model.MediaVideoLive;
 
 public interface IMediaLiveService {
-	
+
 	/**
 	 * 鏂板鐩存挱
 	 * @param name 鐩存挱鍚嶇О
@@ -20,21 +20,23 @@
 	 * @return
 	 */
 	Result add(String name,String content,String teacherId,String teacherName,String subjectId,String subjectName,String definition,String imgPath,Date startTime,Date endTime,Integer courseId,boolean record,List<String> classIds);
-	
+
 	/**
 	 * 鏌ヨ鐩存挱
 	 * @param liveId 鐩存挱Id
 	 * @return
 	 */
 	MediaVideoLive read(String liveId);
-	
+
+	MediaVideoLive revamp(int courseId);
+
 	/**
 	 * 鏌ヨ鐩存挱
 	 * @param noticeId 鐩存挱Id
 	 * @return
 	 */
 	List<MediaVideoLive> readByStatus(List<String> liveIdLst,short[] status);
-	
+
 	/**
 	 * 鏌ヨ鐩存挱
 	 * @param keyword 鏌ヨ鍏抽敭瀛�
@@ -43,14 +45,14 @@
 	 * @return
 	 */
 	List<MediaVideoLive> listOfMine(String keyword,Integer pageNum, Integer pageSize);
-	
+
 	/**
 	 * 鏌ヨ鐩存挱鎬绘暟
 	 * @param keyword 鏌ヨ鍏抽敭瀛�
 	 * @return
 	 */
 	int listCountOfMine(String keyword);
-	
+
 	/**
 	 * 鏌ヨ鐩存挱
 	 * @param keyword 鏌ヨ鍏抽敭瀛�
@@ -59,14 +61,14 @@
 	 * @return
 	 */
 	List<MediaVideoLive> list(String keyword,String[] classIds,String subjectId,Short status,Integer pageNum, Integer pageSize);
-	
+
 	/**
 	 * 鏌ヨ鐩存挱鎬绘暟
 	 * @param keyword 鏌ヨ鍏抽敭瀛�
 	 * @return
 	 */
 	int listCount(String keyword,String [] classIds,String subjectId,Short status);
-	
+
 	/**
 	 * 淇敼鐩存挱
 	 * @param liveId 鐩存挱ID
@@ -85,72 +87,72 @@
 	 * @return
 	 */
 	Result update(String liveId,String name,String content,String teacherId,String teacherName,String subjectId,String subjectName,String definition,String imgPath,Date startTime,Date endTime,boolean record,List<String> classIds);
-	
+
 	/**
 	 * 鍒犻櫎鐩存挱
 	 * @param liveId 鐩存挱ID
 	 * @return
 	 */
 	Result delete(String liveId);
-	
+
 	/**
 	 * 鍒犻櫎鐩存挱
 	 * @param liveId 鐩存挱ID鏁扮粍
 	 * @return
 	 */
-	Result delete(String[] liveIds);
-	
+	Result delete(String[] liveIds,String [] courseIds) throws Exception;
+
 	/**
 	 * 鍙戝竷鐩存挱
 	 * @param liveId 鐩存挱ID
 	 * @return
 	 */
 	Result doIssue(String liveId);
-	
+
 	/**
 	 * 鍙栨秷鐩存挱
 	 * @param liveId 鐩存挱ID
 	 * @return
 	 */
 	Result doCancel(String liveId);
-	
-	
+
+
 	/**
 	 * 鍙戝竷鐩存挱
 	 * @param liveId 鐩存挱ID
 	 * @return
 	 */
 	Result doStart(String liveId);
-	
+
 	/**
 	 * 鍙栨秷鐩存挱
 	 * @param liveId 鐩存挱ID
 	 * @return
 	 */
 	Result doPause(String liveId);
-	
+
 	/**
 	 * 鍙栨秷鐩存挱
 	 * @param liveId 鐩存挱ID
 	 * @return
 	 */
 	Result doStop(String liveId);
-	
+
 	/**
 	 * 璇诲彇鐩存挱鐝骇
 	 * @param liveId 鐩存挱ID
 	 * @return
 	 */
 	List<String> getLiveClasses(String liveId);
-	
-	
+
+
 	/**
 	 * 鐐硅禐鐩存挱
 	 * @param liveId 鐩存挱ID
 	 * @return
 	 */
 	Result doPraise(String liveId);
-	
-	
-	
+
+
+
 }
diff --git a/src/main/java/com/qxueyou/scc/teach/live/service/impl/MediaLiveService.java b/src/main/java/com/qxueyou/scc/teach/live/service/impl/MediaLiveService.java
index 4bcd977..51f54e8 100644
--- a/src/main/java/com/qxueyou/scc/teach/live/service/impl/MediaLiveService.java
+++ b/src/main/java/com/qxueyou/scc/teach/live/service/impl/MediaLiveService.java
@@ -7,6 +7,7 @@
 import java.util.List;
 import java.util.Map;
 
+import com.qxueyou.scc.sdk.MTCloud;
 import io.swagger.models.auth.In;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -157,14 +158,19 @@
 		save(live);
 		return Result.SUCCESS;
 	}
-	
+
 	@Override
-	public Result delete(String[] liveIds) {
+	public Result delete(String[] liveIds,String [] courseIds) throws Exception {
 		for(String liveId:liveIds) {
 			delete(liveId);
+			for(String courseId:courseIds) {
+				MTCloud client = new MTCloud();
+				String s = client.courseDelete(courseId);
+			}
 		}
 		return Result.SUCCESS;
 	}
+
 
 	@Override
 	public Result doIssue(String liveId) {
@@ -347,7 +353,14 @@
 	public MediaVideoLive read(String liveId) {
 		return read(MediaVideoLive.class,liveId);
 	}
-	
+
+	@Override
+	public MediaVideoLive revamp(int courseId) {
+		String hql = "from MediaVideoLive where deleteFlag is false and courseId=?";
+		MediaVideoLive unique = findUnique(hql, CollectionUtils.newList(courseId), MediaVideoLive.class);
+		return unique ;
+	}
+
 	@SuppressWarnings("unchecked")
 	@Override
 	public List<MediaVideoLive> readByStatus(List<String> liveIdLst,short[] status) {
diff --git a/src/main/java/com/qxueyou/scc/wx/service/IWechatService.java b/src/main/java/com/qxueyou/scc/wx/service/IWechatService.java
index b6c3f04..4bf39e2 100644
--- a/src/main/java/com/qxueyou/scc/wx/service/IWechatService.java
+++ b/src/main/java/com/qxueyou/scc/wx/service/IWechatService.java
@@ -23,6 +23,8 @@
 	Result getNumber(String tonken, String number);
 
 	JSONObject gettoken(String appid,String secret);
+
+	JSONObject getUser(String token,String openId);
 //	Result isBindWx(String userId);
 	
 //	Result getSignature(String url);
diff --git a/src/main/java/com/qxueyou/scc/wx/service/impl/WechatService.java b/src/main/java/com/qxueyou/scc/wx/service/impl/WechatService.java
index cc0fbd5..3325780 100644
--- a/src/main/java/com/qxueyou/scc/wx/service/impl/WechatService.java
+++ b/src/main/java/com/qxueyou/scc/wx/service/impl/WechatService.java
@@ -116,6 +116,22 @@
 
         return s;
     }
+    @Override
+    public JSONObject getUser(String token, String openId) {
+        String requestUrl = "https://api.weixin.qq.com/sns/userinfo";
+
+        Map<String, String> requestUrlParam = new HashMap<>();
+
+        requestUrlParam.put("access_token", token);
+
+        requestUrlParam.put("openid", openId);
+
+        requestUrlParam.put("lang", "zh_CN");
+
+        JSONObject s = JSON.parseObject(HttpClientUtil.doGet(requestUrl, requestUrlParam));
+
+        return s;
+    }
 //    private String getWechatHeadImgUrl(String unionId) {
 //        WechatUserDO wxUser = this.template.findOne(Query.query(condition().and("unionId").is(unionId)), WechatUserDO.class);
 //        return wxUser.getHeadImgUrl();
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 1ec895b..a6dee7f 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -96,4 +96,8 @@
 wx.appId=wx953bf2ed18e7836b
 wx.secret=1d8b00beaddf5c8f36d1fedc14ef7973
 
+
+wx.app.appId=wx5a7c0d4798fbfdc2
+wx.app.secret=95c5470a52a2c4e037741f82246f4d86
+
 logging.config=classpath:log4j2.xml

--
Gitblit v1.8.0