wangwei %!s(int64=7) %!d(string=hai) anos
pai
achega
f613a076cf

+ 195 - 173
examcloud-core-basic-api-provider/src/main/java/cn/com/qmth/examcloud/core/basic/api/controller/CourseController.java

@@ -2,7 +2,6 @@ package cn.com.qmth.examcloud.core.basic.api.controller;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -30,8 +29,12 @@ import com.google.common.collect.Lists;
 
 import cn.com.qmth.examcloud.commons.base.util.ErrorMsg;
 import cn.com.qmth.examcloud.commons.base.util.excel.ExcelError;
-import cn.com.qmth.examcloud.commons.web.security.entity.AccessUser;
+import cn.com.qmth.examcloud.commons.web.security.bean.User;
 import cn.com.qmth.examcloud.commons.web.support.ControllerSupport;
+import cn.com.qmth.examcloud.core.basic.api.CourseCloudService;
+import cn.com.qmth.examcloud.core.basic.api.bean.CourseBean;
+import cn.com.qmth.examcloud.core.basic.api.request.SaveCourseReq;
+import cn.com.qmth.examcloud.core.basic.api.response.SaveCourseResp;
 import cn.com.qmth.examcloud.core.basic.dao.CourseRepo;
 import cn.com.qmth.examcloud.core.basic.dao.entity.Course;
 import cn.com.qmth.examcloud.core.basic.service.bean.CourseAssembler;
@@ -41,89 +44,95 @@ import cn.com.qmth.examcloud.core.basic.service.impl.ExportService;
 import io.swagger.annotations.ApiOperation;
 
 /**
- * 课程服务API
- * Created by songyue on 17/1/14.
+ * 课程服务API Created by songyue on 17/1/14.
  */
 @RestController
 @RequestMapping("${$rmp.ctr.basic}/course")
-public class CourseController extends ControllerSupport{
-
-    @Autowired
-    CourseRepo courseRepo;
-    @Autowired
-    CourseService courseService;
-    @Autowired
-    CourseAssembler courseAssembler;
-
-    @ApiOperation(value="查询课程分页带查询",notes="分页带查询")
-    @GetMapping("/all/{curPage}/{pageSize}")
-    public ResponseEntity getAllOrg(@ModelAttribute Course course,
-    								@RequestParam(required = false ) Long specialtyId,
-                                    @PathVariable Integer curPage,
-                                    @PathVariable Integer pageSize,
-                                    HttpServletRequest request){
-        cn.com.qmth.examcloud.commons.web.security.bean.User accessUser = getAccessUser();
-        if(accessUser != null){
-            course.setOrgId(accessUser.getRootOrgId());
-        }else{
-            return new ResponseEntity(HttpStatus.NOT_FOUND);
-        }
-    	return new ResponseEntity(courseService.findAll(course,specialtyId,new PageRequest(curPage - 1,pageSize)), HttpStatus.OK);
-    }
-
-    @ApiOperation(value="按代码或名称查询课程",notes = "代码或名称查询")
-    @GetMapping("/codeOrName")
-    public ResponseEntity getByCodeName(@RequestParam String codeName,HttpServletRequest request){
-        cn.com.qmth.examcloud.commons.web.security.bean.User accessUser = getAccessUser();
-        if(accessUser != null){
-            return new ResponseEntity(courseRepo.findByCodeName(accessUser.getRootOrgId(),codeName), HttpStatus.OK);
-        }else{
-            return new ResponseEntity(HttpStatus.NOT_FOUND);
-        }
-    }
-    
-    @ApiOperation(value="查询课程不分页带查询",notes = "不分页带查询")
-    @GetMapping("/all")
-    public ResponseEntity getEnableExam(@ModelAttribute Course course,HttpServletRequest request){
-        cn.com.qmth.examcloud.commons.web.security.bean.User accessUser = getAccessUser();
-        if(accessUser != null){
-            course.setOrgId(accessUser.getRootOrgId());
-        }
-        course.setEnable(true);
-        return new ResponseEntity(courseService.findAll(course), HttpStatus.OK);
-    }
-
-    @ApiOperation(value="查询课程不分页带查询",notes = "不分页带查询")
-    @GetMapping("/all/both")
-    public ResponseEntity getAllExam(@ModelAttribute Course course,HttpServletRequest request){
-        cn.com.qmth.examcloud.commons.web.security.bean.User accessUser = getAccessUser();
-        if(accessUser != null){
-            course.setOrgId(accessUser.getRootOrgId());
-        }
-        return new ResponseEntity(courseService.findAll(course), HttpStatus.OK);
-    }
-    
-    @ApiOperation(value="按ID查询课程",notes="ID查询")
-    @GetMapping("/{id}")
-    public ResponseEntity getCourseById(@PathVariable Long id){
-        return new ResponseEntity(courseRepo.findOne(id),HttpStatus.OK);
-    }
-    
-    @ApiOperation(value="按code查询课程",notes="code查询")
-    @GetMapping()
-    public ResponseEntity getCourseByCode(@RequestParam Long orgId,@RequestParam String code){
-        return new ResponseEntity(courseRepo.findByOrgIdAndCode(orgId, code),HttpStatus.OK);
-    }
-
-    @ApiOperation(value="按orgId查询课程",notes="orgId查询")
-    @GetMapping("/org/{orgId}")
-    public ResponseEntity getCourseByOrgId(@PathVariable Long orgId){
-        return new ResponseEntity(courseRepo.findByOrgId(orgId),HttpStatus.OK);
-    }
-    
+public class CourseController extends ControllerSupport {
+
+	@Autowired
+	CourseRepo courseRepo;
+
+	@Autowired
+	CourseService courseService;
+
+	@Autowired
+	CourseAssembler courseAssembler;
+
+	@Autowired
+	CourseCloudService courseCloudService;
+
+	@ApiOperation(value = "查询课程分页带查询", notes = "分页带查询")
+	@GetMapping("/all/{curPage}/{pageSize}")
+	public ResponseEntity getAllOrg(@ModelAttribute Course course,
+			@RequestParam(required = false) Long specialtyId, @PathVariable Integer curPage,
+			@PathVariable Integer pageSize, HttpServletRequest request) {
+		cn.com.qmth.examcloud.commons.web.security.bean.User accessUser = getAccessUser();
+		if (accessUser != null) {
+			course.setOrgId(accessUser.getRootOrgId());
+		} else {
+			return new ResponseEntity(HttpStatus.NOT_FOUND);
+		}
+		return new ResponseEntity(
+				courseService.findAll(course, specialtyId, new PageRequest(curPage - 1, pageSize)),
+				HttpStatus.OK);
+	}
+
+	@ApiOperation(value = "按代码或名称查询课程", notes = "代码或名称查询")
+	@GetMapping("/codeOrName")
+	public ResponseEntity getByCodeName(@RequestParam String codeName, HttpServletRequest request) {
+		cn.com.qmth.examcloud.commons.web.security.bean.User accessUser = getAccessUser();
+		if (accessUser != null) {
+			return new ResponseEntity(
+					courseRepo.findByCodeName(accessUser.getRootOrgId(), codeName), HttpStatus.OK);
+		} else {
+			return new ResponseEntity(HttpStatus.NOT_FOUND);
+		}
+	}
+
+	@ApiOperation(value = "查询课程不分页带查询", notes = "不分页带查询")
+	@GetMapping("/all")
+	public ResponseEntity getEnableExam(@ModelAttribute Course course, HttpServletRequest request) {
+		cn.com.qmth.examcloud.commons.web.security.bean.User accessUser = getAccessUser();
+		if (accessUser != null) {
+			course.setOrgId(accessUser.getRootOrgId());
+		}
+		course.setEnable(true);
+		return new ResponseEntity(courseService.findAll(course), HttpStatus.OK);
+	}
+
+	@ApiOperation(value = "查询课程不分页带查询", notes = "不分页带查询")
+	@GetMapping("/all/both")
+	public ResponseEntity getAllExam(@ModelAttribute Course course, HttpServletRequest request) {
+		cn.com.qmth.examcloud.commons.web.security.bean.User accessUser = getAccessUser();
+		if (accessUser != null) {
+			course.setOrgId(accessUser.getRootOrgId());
+		}
+		return new ResponseEntity(courseService.findAll(course), HttpStatus.OK);
+	}
+
+	@ApiOperation(value = "按ID查询课程", notes = "ID查询")
+	@GetMapping("/{id}")
+	public ResponseEntity getCourseById(@PathVariable Long id) {
+		return new ResponseEntity(courseRepo.findOne(id), HttpStatus.OK);
+	}
+
+	@ApiOperation(value = "按code查询课程", notes = "code查询")
+	@GetMapping()
+	public ResponseEntity getCourseByCode(@RequestParam Long orgId, @RequestParam String code) {
+		return new ResponseEntity(courseRepo.findByOrgIdAndCode(orgId, code), HttpStatus.OK);
+	}
+
+	@ApiOperation(value = "按orgId查询课程", notes = "orgId查询")
+	@GetMapping("/org/{orgId}")
+	public ResponseEntity getCourseByOrgId(@PathVariable Long orgId) {
+		return new ResponseEntity(courseRepo.findByOrgId(orgId), HttpStatus.OK);
+	}
+
 	@ApiOperation(value = "批量查询课程", notes = "批量查询课程")
 	@PostMapping("/batchGetCourses")
-	public ResponseEntity<List<Course>> batchGetCourses(@RequestBody String[] funcIds, HttpServletRequest request) {
+	public ResponseEntity<List<Course>> batchGetCourses(@RequestBody String[] funcIds,
+			HttpServletRequest request) {
 		List<Course> list = Lists.newArrayList();
 		for (String id : funcIds) {
 			Course one = courseRepo.findOne(Long.parseLong(id));
@@ -132,102 +141,115 @@ public class CourseController extends ControllerSupport{
 			}
 		}
 		return new ResponseEntity<List<Course>>(list, HttpStatus.OK);
-	}			
-
-    @ApiOperation(value="新增课程",notes="新增")
-    @PostMapping
-    public ResponseEntity addCourse(@RequestBody Course course,HttpServletRequest request){
-    	course.setCreateTime(new Date());
-        cn.com.qmth.examcloud.commons.web.security.bean.User accessUser = getAccessUser();
-        if(accessUser != null){
-            course.setOrgId(accessUser.getRootOrgId());
-        }else{
-            return new ResponseEntity(HttpStatus.NOT_FOUND);
-        }
-        try {
-			return new ResponseEntity(courseService.save(course),HttpStatus.CREATED);
-		} catch (Exception e) {
-		    e.printStackTrace();
-			return new ResponseEntity(new ErrorMsg(e.getMessage()), HttpStatus.INTERNAL_SERVER_ERROR);
-		}
-    }
-
-    @ApiOperation(value="更新课程",notes="更新")
-    @PutMapping
-    public ResponseEntity updateCourse(@RequestBody Course course,HttpServletRequest request){
-        cn.com.qmth.examcloud.commons.web.security.bean.User accessUser = getAccessUser();
-        if(accessUser != null){
-            course.setOrgId(accessUser.getRootOrgId());
-        }else{
-            return new ResponseEntity(HttpStatus.NOT_FOUND);
-        }
-        try {
-			return new ResponseEntity(courseService.update(course.getId(),course), HttpStatus.OK);
-		} catch (Exception e) {
-			return new ResponseEntity(new ErrorMsg(e.getMessage()), HttpStatus.INTERNAL_SERVER_ERROR);
+	}
+
+	/**
+	 * 修正
+	 *
+	 * @author WANGWEI
+	 * @param course
+	 * @return
+	 */
+	@ApiOperation(value = "新增课程", notes = "新增")
+	@PostMapping
+	public Long addCourse(@RequestBody Course course) {
+		User accessUser = getAccessUser();
+
+		SaveCourseReq saveCourseReq = new SaveCourseReq();
+		saveCourseReq.setCourseCode(course.getCode());
+		saveCourseReq.setCourseName(course.getName());
+		saveCourseReq.setCourseLevel(course.getLevel().getName());
+		saveCourseReq.setRootOrgId(accessUser.getRootOrgId());
+
+		SaveCourseResp saveCourseResp = courseCloudService.saveCourse(saveCourseReq);
+		CourseBean courseBean = saveCourseResp.getCourseBean();
+		return courseBean.getId();
+	}
+
+	/**
+	 * 修正
+	 *
+	 * @author WANGWEI
+	 * @param course
+	 * @param request
+	 * @return
+	 */
+	@ApiOperation(value = "更新课程", notes = "更新")
+	@PutMapping
+	public Long updateCourse(@RequestBody Course course, HttpServletRequest request) {
+		User accessUser = getAccessUser();
+
+		SaveCourseReq saveCourseReq = new SaveCourseReq();
+		saveCourseReq.setCourseCode(course.getCode());
+		saveCourseReq.setCourseName(course.getName());
+		saveCourseReq.setCourseLevel(course.getLevel().getName());
+		saveCourseReq.setRootOrgId(accessUser.getRootOrgId());
+
+		SaveCourseResp saveCourseResp = courseCloudService.saveCourse(saveCourseReq);
+		CourseBean courseBean = saveCourseResp.getCourseBean();
+		return courseBean.getId();
+	}
+
+	@ApiOperation(value = "按ID删除课程", notes = "删除")
+	@DeleteMapping("/{ids}")
+	public ResponseEntity deleteCourse(@PathVariable String ids) {
+		courseService.delete(ids);
+		return new ResponseEntity(HttpStatus.OK);
+	}
+
+	@ApiOperation(value = "导入课程", notes = "导入")
+	@PostMapping("/import")
+	public ResponseEntity importCourse(HttpServletRequest request,
+			@RequestParam CommonsMultipartFile file) {
+		cn.com.qmth.examcloud.commons.web.security.bean.User accessUser = getAccessUser();
+		Long orgId = null;
+		if (accessUser != null) {
+			orgId = accessUser.getRootOrgId();
+		} else {
+			return new ResponseEntity(new ErrorMsg("用户token不存在或已失效"), HttpStatus.NOT_FOUND);
 		}
-    }
-
-    @ApiOperation(value="按ID删除课程",notes="删除")
-    @DeleteMapping("/{ids}")
-    public ResponseEntity deleteCourse(@PathVariable String ids){
-    	courseService.delete(ids);
-        return new ResponseEntity(HttpStatus.OK);
-    }
-    
-    @ApiOperation(value="导入课程",notes = "导入")
-    @PostMapping("/import")
-    public ResponseEntity importCourse(HttpServletRequest request,
-                                       @RequestParam CommonsMultipartFile file){
-        cn.com.qmth.examcloud.commons.web.security.bean.User accessUser = getAccessUser();
-        Long orgId = null;
-        if(accessUser != null){
-            orgId = accessUser.getRootOrgId();
-        }else{
-            return new ResponseEntity(new ErrorMsg("用户token不存在或已失效"),HttpStatus.NOT_FOUND);
-        }
-    	try {
-    		List<ExcelError> errors = courseService.importCourse(orgId,file.getInputStream());
-    		return new ResponseEntity(errors,HttpStatus.OK);
+		try {
+			List<ExcelError> errors = courseService.importCourse(orgId, file.getInputStream());
+			return new ResponseEntity(errors, HttpStatus.OK);
 		} catch (IOException e) {
 			e.printStackTrace();
 			return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR);
 		}
-    }
-
-    @ApiOperation(value="下载导入模板",notes = "下载导入模板")
-    @GetMapping("/download")
-    public void importFileTemplate(HttpServletResponse response){
-        List<CourseDto> list= new ArrayList<CourseDto>();
-        list.add(new CourseDto("大学英语", "000001", "0"));
-        ExportService.exportEXCEL("课程导入模板", CourseDto.class, list, response);
-    }
-    
-    @ApiOperation(value="导出课程",notes = "导出")
-    @GetMapping("/export")
-    public void exportCourse(@ModelAttribute Course orgCriteria,HttpServletResponse response){
-    	List<CourseDto> list = new ArrayList<CourseDto>();
-    	courseService.findAll(orgCriteria).forEach(c -> {
-    		list.add(courseAssembler.toDTO(c));
-        });
-    	ExportService.exportEXCEL("课程列表", CourseDto.class, list, response);
-    }
-    
-    @ApiOperation(value="禁用课程",notes="禁用")
-    @PutMapping("/disable/{ids}")
-    public ResponseEntity disableCourse(@PathVariable String ids){
-        List<Long> courseIds = Stream.of(ids.split(",")).map(s->Long.parseLong(s.trim()))
-                .collect(Collectors.toList());
-        courseService.enableCourse(courseIds,false);
-        return new ResponseEntity(HttpStatus.OK);
-    }
-
-    @ApiOperation(value="启用课程",notes="启用")
-    @PutMapping("/enable/{ids}")
-    public ResponseEntity enableCourse(@PathVariable String ids){
-        List<Long> courseIds = Stream.of(ids.split(",")).map(s->Long.parseLong(s.trim()))
-                .collect(Collectors.toList());
-        courseService.enableCourse(courseIds,true);
-        return new ResponseEntity(HttpStatus.OK);
-    }
+	}
+
+	@ApiOperation(value = "下载导入模板", notes = "下载导入模板")
+	@GetMapping("/download")
+	public void importFileTemplate(HttpServletResponse response) {
+		List<CourseDto> list = new ArrayList<CourseDto>();
+		list.add(new CourseDto("大学英语", "000001", "0"));
+		ExportService.exportEXCEL("课程导入模板", CourseDto.class, list, response);
+	}
+
+	@ApiOperation(value = "导出课程", notes = "导出")
+	@GetMapping("/export")
+	public void exportCourse(@ModelAttribute Course orgCriteria, HttpServletResponse response) {
+		List<CourseDto> list = new ArrayList<CourseDto>();
+		courseService.findAll(orgCriteria).forEach(c -> {
+			list.add(courseAssembler.toDTO(c));
+		});
+		ExportService.exportEXCEL("课程列表", CourseDto.class, list, response);
+	}
+
+	@ApiOperation(value = "禁用课程", notes = "禁用")
+	@PutMapping("/disable/{ids}")
+	public ResponseEntity disableCourse(@PathVariable String ids) {
+		List<Long> courseIds = Stream.of(ids.split(",")).map(s -> Long.parseLong(s.trim()))
+				.collect(Collectors.toList());
+		courseService.enableCourse(courseIds, false);
+		return new ResponseEntity(HttpStatus.OK);
+	}
+
+	@ApiOperation(value = "启用课程", notes = "启用")
+	@PutMapping("/enable/{ids}")
+	public ResponseEntity enableCourse(@PathVariable String ids) {
+		List<Long> courseIds = Stream.of(ids.split(",")).map(s -> Long.parseLong(s.trim()))
+				.collect(Collectors.toList());
+		courseService.enableCourse(courseIds, true);
+		return new ResponseEntity(HttpStatus.OK);
+	}
 }

+ 9 - 5
examcloud-core-basic-api-provider/src/main/java/cn/com/qmth/examcloud/core/basic/api/provider/CourseCloudServiceProvider.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -19,7 +20,7 @@ import cn.com.qmth.examcloud.core.basic.dao.OrgRepo;
 import cn.com.qmth.examcloud.core.basic.dao.entity.Course;
 import cn.com.qmth.examcloud.core.basic.dao.entity.Org;
 import cn.com.qmth.examcloud.core.basic.dao.enums.CourseLevel;
-import cn.com.qmth.examcloud.core.basic.service.impl.CourseService;
+import cn.com.qmth.examcloud.core.basic.service.impl.DataSendService;
 import io.swagger.annotations.ApiOperation;
 
 /**
@@ -29,19 +30,20 @@ import io.swagger.annotations.ApiOperation;
  * @date 2018年7月10日
  * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
  */
+@Transactional
 @RestController
 @RequestMapping("${$rmp.cloud.basic}" + "course")
 public class CourseCloudServiceProvider implements CourseCloudService {
 
-	@Autowired
-	CourseService courseService;
-
 	@Autowired
 	OrgRepo orgRepo;
 
 	@Autowired
 	CourseRepo courseRepo;
 
+	@Autowired
+	DataSendService dataSendService;
+
 	@ApiOperation(value = "保存课程")
 	@PostMapping("saveCourse")
 	@Override
@@ -84,7 +86,9 @@ public class CourseCloudServiceProvider implements CourseCloudService {
 		CourseLevel courseLevel = CourseLevel.getCourseLevel(courseReq.getCourseLevel());
 		course.setLevel(courseLevel);
 
-		Course saved = courseService.save(course);
+		Course saved = courseRepo.save(course);
+
+		dataSendService.sendCourse(saved);
 
 		SaveCourseResp resp = new SaveCourseResp();
 		CourseBean courseBean = new CourseBean();

+ 14 - 48
examcloud-core-basic-dao/src/main/java/cn/com/qmth/examcloud/core/basic/dao/entity/Course.java

@@ -1,7 +1,5 @@
 package cn.com.qmth.examcloud.core.basic.dao.entity;
 
-import java.util.Date;
-
 import javax.persistence.Entity;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
@@ -10,10 +8,8 @@ import javax.persistence.Id;
 import javax.persistence.Table;
 import javax.validation.constraints.NotNull;
 
-import org.springframework.format.annotation.DateTimeFormat;
-
 import cn.com.qmth.examcloud.commons.base.util.excel.ExcelProperty;
-import cn.com.qmth.examcloud.commons.web.cloud.api.JsonSerializable;
+import cn.com.qmth.examcloud.commons.web.jpa.JpaEntity;
 import cn.com.qmth.examcloud.core.basic.dao.enums.CourseLevel;
 
 /**
@@ -24,7 +20,7 @@ import cn.com.qmth.examcloud.core.basic.dao.enums.CourseLevel;
  */
 @Entity
 @Table(name = "ecs_core_course")
-public class Course implements JsonSerializable {
+public class Course extends JpaEntity {
 
 	private static final long serialVersionUID = -6261302618070108336L;
 
@@ -49,16 +45,15 @@ public class Course implements JsonSerializable {
 	@Enumerated(EnumType.STRING)
 	private CourseLevel level;
 
-	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-	private Date createTime;
-
-	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-	private Date updateTime;
-
 	private Boolean enable;
 
-	public static long getSerialVersionUID() {
-		return serialVersionUID;
+	public Course() {
+	}
+
+	public Course(String name, String code) {
+		this.name = name;
+		this.code = code;
+		this.enable = true;
 	}
 
 	public Long getId() {
@@ -85,34 +80,6 @@ public class Course implements JsonSerializable {
 		this.name = name;
 	}
 
-	public Date getCreateTime() {
-		return createTime;
-	}
-
-	public void setCreateTime(Date createTime) {
-		this.createTime = createTime;
-	}
-
-	public Date getUpdateTime() {
-		return updateTime;
-	}
-
-	public void setUpdateTime(Date updateTime) {
-		this.updateTime = updateTime;
-	}
-
-	public Boolean getEnable() {
-		return enable;
-	}
-
-	public void setEnable(Boolean enable) {
-		this.enable = enable;
-	}
-
-	public static long getSerialversionuid() {
-		return serialVersionUID;
-	}
-
 	public Long getOrgId() {
 		return orgId;
 	}
@@ -129,13 +96,12 @@ public class Course implements JsonSerializable {
 		this.level = level;
 	}
 
-	public Course() {
+	public Boolean getEnable() {
+		return enable;
 	}
 
-	public Course(String name, String code) {
-		this.name = name;
-		this.code = code;
-		this.createTime = new Date();
-		this.enable = true;
+	public void setEnable(Boolean enable) {
+		this.enable = enable;
 	}
+
 }

+ 76 - 122
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/impl/CourseService.java

@@ -31,52 +31,50 @@ import cn.com.qmth.examcloud.core.basic.service.bean.CourseDto;
 @Service
 public class CourseService {
 
-    @Autowired
-    CourseRepo courseRepo;
+	@Autowired
+	CourseRepo courseRepo;
 
 	@Autowired
 	DataSendService dataSendService;
 
-    @Transactional
-	public List<ExcelError> importCourse(Long orgId,InputStream inputStream) {
-		List<Course> list = new ArrayList<Course>();
+	@Transactional
+	public List<ExcelError> importCourse(Long orgId, InputStream inputStream) {
 		ExcelReader excelReader = new ExcelReader(CourseDto.class);
-        List<ExcelError> excelErrors = excelReader.reader(inputStream, new ExcelReaderHandle() {
-            @Override
-            public ExcelError handle(Object obj) {
-            	CourseDto dto = (CourseDto) obj;
-            	Course course = new Course(dto.getName(),dto.getCode());
-            	course.setOrgId(orgId);
-            	course.setCreateTime(new Date());
+		List<ExcelError> excelErrors = excelReader.reader(inputStream, new ExcelReaderHandle() {
+			@Override
+			public ExcelError handle(Object obj) {
+				CourseDto dto = (CourseDto) obj;
+				Course course = new Course(dto.getName(), dto.getCode());
+				course.setOrgId(orgId);
 				course.setEnable(true);
-            	if("ZSB".equalsIgnoreCase(dto.getLevel())){
-            		course.setLevel(CourseLevel.ZSB);
-            	}
-            	if("GQZ".equalsIgnoreCase(dto.getLevel())){
-            		course.setLevel(CourseLevel.GQZ);
-            	}
-				if("GQB".equalsIgnoreCase(dto.getLevel())){
+				if ("ZSB".equalsIgnoreCase(dto.getLevel())) {
+					course.setLevel(CourseLevel.ZSB);
+				}
+				if ("GQZ".equalsIgnoreCase(dto.getLevel())) {
+					course.setLevel(CourseLevel.GQZ);
+				}
+				if ("GQB".equalsIgnoreCase(dto.getLevel())) {
 					course.setLevel(CourseLevel.GQB);
 				}
-            	if("ALL".equalsIgnoreCase(dto.getLevel())){
-            		course.setLevel(CourseLevel.ALL);
-            	}
-                ExcelError error = importCheck(course);
-                if (error == null) {
+				if ("ALL".equalsIgnoreCase(dto.getLevel())) {
+					course.setLevel(CourseLevel.ALL);
+				}
+				ExcelError error = importCheck(course);
+				if (error == null) {
 					addCourse(course);
-                }
-                return error;
-            }
-        });
+				}
+				return error;
+			}
+		});
 		return excelErrors;
 	}
 
-	private void addCourse(Course course){
-		Course old = courseRepo.findByOrgIdAndCode(course.getOrgId(),course.getCode());
-		if(old == null){
+	private void addCourse(Course course) {
+		Course old = courseRepo.findByOrgIdAndCode(course.getOrgId(), course.getCode());
+		if (old == null) {
 			Course tempCourse = courseRepo.save(course);
 			dataSendService.sendCourse(tempCourse);
-		}else{
+		} else {
 			old.setName(course.getName());
 			old.setLevel(course.getLevel());
 			old.setUpdateTime(new Date());
@@ -86,86 +84,64 @@ public class CourseService {
 	}
 
 	private ExcelError importCheck(Course course) {
-		if(StringUtils.isEmpty(course.getCode())){
+		if (StringUtils.isEmpty(course.getCode())) {
 			return new ExcelError("代码不能为空");
 		}
-		if(StringUtils.isEmpty(course.getName())){
+		if (StringUtils.isEmpty(course.getName())) {
 			return new ExcelError("名称不能为空");
 		}
-		if(null == course.getLevel()){
+		if (null == course.getLevel()) {
 			return new ExcelError("层次不能为空");
 		}
 		return null;
 	}
-	
-	public Page<Course> findAll(Course courseCriteria,Long specialtyId, Pageable pageable) {
-//		ExampleMatcher exampleMatcher = ExampleMatcher.matching()
-//				.withMatcher("name", startsWith())
-//				.withMatcher("code", startsWith()).withIgnoreNullValues();
-//		Example<Course> examExamStudentple = Example.of(orgCriteria,
-//				exampleMatcher);
-//		return courseRepo.findAll(examExamStudentple, pageable);
-		Specification<Course> specification = getSpecification(courseCriteria,specialtyId);
-		Page<Course> examStudents = courseRepo.findAll(specification,pageable);
+
+	public Page<Course> findAll(Course courseCriteria, Long specialtyId, Pageable pageable) {
+
+		Specification<Course> specification = getSpecification(courseCriteria, specialtyId);
+		Page<Course> examStudents = courseRepo.findAll(specification, pageable);
 		return examStudents;
 	}
 
-	private Specification<Course> getSpecification(Course courseCriteria,Long specialtyId) {
+	private Specification<Course> getSpecification(Course courseCriteria, Long specialtyId) {
 		Specification<Course> specification = (root, query, cb) -> {
-		    List<Predicate> predicates = new ArrayList<>();
-		    if(!StringUtils.isEmpty(courseCriteria.getOrgId())){
-		    	predicates.add(cb.equal(root.get("orgId"),courseCriteria.getOrgId()));
-		    }
-		    if(!StringUtils.isEmpty(courseCriteria.getName())){
-		    	predicates.add(cb.like(root.get("name"),"%"+courseCriteria.getName()+"%"));
-		    }
-		    if(!StringUtils.isEmpty(courseCriteria.getCode())){
-		    	predicates.add(cb.like(root.get("code"),"%"+courseCriteria.getCode()+"%"));
-		    }
-		    if(!StringUtils.isEmpty(courseCriteria.getLevel())){
-		    	predicates.add(cb.equal(root.get("level"),courseCriteria.getLevel()));
-		    }
-		    if(!StringUtils.isEmpty(courseCriteria.getEnable())){
-		    	predicates.add(cb.equal(root.get("enable"),courseCriteria.getEnable()));
-		    }
-		    if(specialtyId!=null){
-		    	Subquery<CourseSpeciatly> relationshipSubquery = query.subquery(CourseSpeciatly.class);
-		    	Root<CourseSpeciatly> residencyRelationshipSubqueryRoot = relationshipSubquery.from(CourseSpeciatly.class);
-		    	relationshipSubquery.select(residencyRelationshipSubqueryRoot);
-		    	Predicate predicate = cb.equal(residencyRelationshipSubqueryRoot.get("specialtyId"), specialtyId);
-		    	Predicate predicate2 = cb.equal(residencyRelationshipSubqueryRoot.get("courseId"), root.get("id"));
-		    	relationshipSubquery.where(cb.and(predicate,predicate2));
-		    	predicates.add(cb.exists(relationshipSubquery));
-		    }
-		    return cb.and(predicates.toArray(new Predicate[predicates.size()]));
+			List<Predicate> predicates = new ArrayList<>();
+			if (!StringUtils.isEmpty(courseCriteria.getOrgId())) {
+				predicates.add(cb.equal(root.get("orgId"), courseCriteria.getOrgId()));
+			}
+			if (!StringUtils.isEmpty(courseCriteria.getName())) {
+				predicates.add(cb.like(root.get("name"), "%" + courseCriteria.getName() + "%"));
+			}
+			if (!StringUtils.isEmpty(courseCriteria.getCode())) {
+				predicates.add(cb.like(root.get("code"), "%" + courseCriteria.getCode() + "%"));
+			}
+			if (!StringUtils.isEmpty(courseCriteria.getLevel())) {
+				predicates.add(cb.equal(root.get("level"), courseCriteria.getLevel()));
+			}
+			if (!StringUtils.isEmpty(courseCriteria.getEnable())) {
+				predicates.add(cb.equal(root.get("enable"), courseCriteria.getEnable()));
+			}
+			if (specialtyId != null) {
+				Subquery<CourseSpeciatly> relationshipSubquery = query
+						.subquery(CourseSpeciatly.class);
+				Root<CourseSpeciatly> residencyRelationshipSubqueryRoot = relationshipSubquery
+						.from(CourseSpeciatly.class);
+				relationshipSubquery.select(residencyRelationshipSubqueryRoot);
+				Predicate predicate = cb.equal(residencyRelationshipSubqueryRoot.get("specialtyId"),
+						specialtyId);
+				Predicate predicate2 = cb.equal(residencyRelationshipSubqueryRoot.get("courseId"),
+						root.get("id"));
+				relationshipSubquery.where(cb.and(predicate, predicate2));
+				predicates.add(cb.exists(relationshipSubquery));
+			}
+			return cb.and(predicates.toArray(new Predicate[predicates.size()]));
 		};
 		return specification;
 	}
 
 	public List<Course> findAll(Course courseCriteria) {
-//		ExampleMatcher exampleMatcher = ExampleMatcher.matching()
-//				.withMatcher("name", startsWith())
-//				.withMatcher("code", startsWith()).withIgnoreNullValues();
-//        Example<Course> examExample = Example.of(orgCriteria,exampleMatcher);
-//		List<Course> courseList = courseRepo.findAll(examExample);
-//        return courseList;
-		Specification<Course> specification = getSpecification(courseCriteria,null);
-        return courseRepo.findAll(specification);
-	}
-
-	public Course save(Course course){
-		checkCode(course.getOrgId(),course.getCode());
-		course.setCreateTime(new Date());
-		Course reCourse = courseRepo.saveAndFlush(course);
-		dataSendService.sendCourse(reCourse);
-		return reCourse;
-	}
-
-	private void checkCode(Long orgId,String code) {
-		Course old = courseRepo.findByOrgIdAndCode(orgId,code);
-		if(old!=null){
-			throw new RuntimeException("代码已存在");
-		}
+		Specification<Course> specification = getSpecification(courseCriteria, null);
+		return courseRepo.findAll(specification);
 	}
 
 	@Transactional
@@ -178,36 +154,14 @@ public class CourseService {
 			dataSendService.sendCourse(reCourse);
 		}
 	}
-	
+
 	@Transactional
 	public void delete(String ids) {
-		List<Long> courseIds = Stream.of(ids.split(",")).map(s->Long.parseLong(s.trim()))
-                .collect(Collectors.toList());
-        for(Long courseId:courseIds){
-        	courseRepo.delete(courseId);
-        }
-	}
-
-	public Course update(Long id, Course course) {
-		Course old = courseRepo.findOne(id);
-		if(!old.getCode().equals(course.getCode())){
-			checkCode(course.getOrgId(),course.getCode());
+		List<Long> courseIds = Stream.of(ids.split(",")).map(s -> Long.parseLong(s.trim()))
+				.collect(Collectors.toList());
+		for (Long courseId : courseIds) {
+			courseRepo.delete(courseId);
 		}
-		course.setUpdateTime(new Date());
-		Course reCourse = courseRepo.saveAndFlush(course);
-		dataSendService.sendCourse(reCourse);
-		return reCourse;
 	}
 
-	public Course findByOrgIdAndCode(Long orgId,String code){
-		return courseRepo.findByOrgIdAndCode(orgId, code);
-	}
-	
-	public Course saveCourse(Course course) throws Exception{
-		course.setEnable(true);
-		course.setCreateTime(new Date());
-		Course reCourse = courseRepo.saveAndFlush(course);
-		dataSendService.sendCourse(reCourse);
-		return reCourse;
-	}
 }