wangwei il y a 7 ans
Parent
commit
c87bdf5f40

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

@@ -1,19 +1,34 @@
 package cn.com.qmth.examcloud.core.basic.api.provider;
 
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import cn.com.qmth.examcloud.commons.base.exception.StatusException;
 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.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 io.swagger.annotations.ApiOperation;
 
+/**
+ * 类注释
+ *
+ * @author WANGWEI
+ * @date 2018年7月10日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
 @RestController
 @RequestMapping("${$rmp.cloud.basic}" + "course")
 public class CourseCloudServiceProvider implements CourseCloudService {
@@ -21,19 +36,53 @@ public class CourseCloudServiceProvider implements CourseCloudService {
 	@Autowired
 	CourseService courseService;
 
+	@Autowired
+	OrgRepo orgRepo;
+
+	@Autowired
+	CourseRepo courseRepo;
+
 	@ApiOperation(value = "保存课程")
 	@PostMapping("saveCourse")
 	@Override
-	public SaveCourseResp saveCourse(SaveCourseReq courseReq) {
-		Course course = courseService.findByOrgIdAndCode(courseReq.getRootOrgId(),
-				courseReq.getCourseCode());
+	public SaveCourseResp saveCourse(@RequestBody SaveCourseReq courseReq) {
+
+		Long rootOrgId = courseReq.getRootOrgId();
+		if (null == rootOrgId) {
+			throw new StatusException("B-160000", "rootOrgId is null");
+		}
+		Org rootOrg = orgRepo.findOne(rootOrgId);
+		if (null == rootOrg) {
+			throw new StatusException("B-160001", "机构不存在");
+		}
+		if (null != rootOrg.getParentId()) {
+			throw new StatusException("B-160002", "机构错误");
+		}
+
+		String courseName = courseReq.getCourseName();
+		if (StringUtils.isBlank(courseName)) {
+			throw new StatusException("B-160003", "courseName is null");
+		}
+
+		String courseCode = courseReq.getCourseCode();
+		if (StringUtils.isBlank(courseCode)) {
+			throw new StatusException("B-160004", "courseCode is null");
+		}
+
+		List<Course> list = courseRepo.findAllByOrgIdAndCode(rootOrgId, courseCode);
+		if (1 < list.size()) {
+			throw new StatusException("B-160005", "存在课程编码重复的数据. courseCode: " + courseCode);
+		}
+
+		Course course = courseRepo.findByOrgIdAndCode(rootOrgId, courseCode);
 		if (course == null) {
 			course = new Course();
+			course.setOrgId(courseReq.getRootOrgId());
+			course.setCode(courseReq.getCourseCode());
 		}
-		course.setOrgId(courseReq.getRootOrgId());
-		course.setName(courseReq.getCourseName());
-		course.setCode(courseReq.getCourseCode());
-		course.setLevel(getCourseLevelByCName(courseReq.getCourseLevel()));
+		course.setName(courseName);
+		CourseLevel courseLevel = CourseLevel.getCourseLevel(courseReq.getCourseLevel());
+		course.setLevel(courseLevel);
 
 		Course saved = courseService.save(course);
 
@@ -50,20 +99,4 @@ public class CourseCloudServiceProvider implements CourseCloudService {
 		return resp;
 	}
 
-	private CourseLevel getCourseLevelByCName(String cname) {
-		CourseLevel courseLevel = null;
-		for (CourseLevel level : CourseLevel.values()) {
-			if (cname.equals(level.getName())) {
-				courseLevel = level;
-				break;
-			}
-		}
-
-		if (courseLevel == null) {
-			return CourseLevel.ALL;
-		} else {
-			return courseLevel;
-		}
-	}
-
 }

+ 9 - 3
examcloud-core-basic-dao/src/main/java/cn/com/qmth/examcloud/core/basic/dao/CourseRepo.java

@@ -9,15 +9,21 @@ import org.springframework.data.repository.query.QueryByExampleExecutor;
 
 import cn.com.qmth.examcloud.core.basic.dao.entity.Course;
 
-public interface CourseRepo extends JpaRepository<Course, Long>,QueryByExampleExecutor<Course>, JpaSpecificationExecutor<Course> {
+public interface CourseRepo
+		extends
+			JpaRepository<Course, Long>,
+			QueryByExampleExecutor<Course>,
+			JpaSpecificationExecutor<Course> {
 
 	List<Course> findByOrgId(Long orgId);
 
+	List<Course> findAllByOrgIdAndCode(Long orgId, String code);
+
 	Course findByOrgIdAndCode(Long orgId, String code);
-	
+
 	List<Course> findByIdNotIn(List<Long> ids);
 
 	@Query("select t from Course t where t.orgId = ?1 and (t.code like %?2% or t.name like %?2%) and t.enable = true")
-	List<Course> findByCodeName(Long orgId,String codeName);
+	List<Course> findByCodeName(Long orgId, String codeName);
 
 }

+ 32 - 1
examcloud-core-basic-dao/src/main/java/cn/com/qmth/examcloud/core/basic/dao/enums/CourseLevel.java

@@ -1,5 +1,14 @@
 package cn.com.qmth.examcloud.core.basic.dao.enums;
 
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * 重新定义
+ *
+ * @author WANGWEI
+ * @date 2018年7月10日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
 public enum CourseLevel {
 
 	ZSB("专升本"),
@@ -8,7 +17,7 @@ public enum CourseLevel {
 
 	GQB("高起本"),
 
-	ALL("");
+	ALL("不限");
 
 	private String name;
 
@@ -19,4 +28,26 @@ public enum CourseLevel {
 	public String getName() {
 		return this.name;
 	}
+
+	/**
+	 * 混合查询
+	 *
+	 * @author WANGWEI
+	 * @param name
+	 * @return
+	 */
+	public static CourseLevel getCourseLevel(String name) {
+		if (StringUtils.isBlank(name)) {
+			return CourseLevel.ALL;
+		}
+		for (CourseLevel cur : CourseLevel.values()) {
+			if (name.equals(cur.getName())) {
+				return cur;
+			}
+			if (name.equals(cur.name())) {
+				return cur;
+			}
+		}
+		return CourseLevel.ALL;
+	}
 }