Bläddra i källkod

Merge branch 'master' of http://git.qmth.com.cn/ExamCloud-2/examcloud-core-basic.git

wangwei 7 år sedan
förälder
incheckning
692afb839d

+ 47 - 6
examcloud-core-basic-api-provider/src/main/java/cn/com/qmth/examcloud/core/basic/api/provider/UserCloudServiceProvider.java

@@ -24,7 +24,10 @@ import cn.com.qmth.examcloud.core.basic.api.response.LoginResp;
 import cn.com.qmth.examcloud.core.basic.base.enums.AccountType;
 import cn.com.qmth.examcloud.core.basic.base.enums.UserType;
 import cn.com.qmth.examcloud.core.basic.dao.OrgRepo;
+import cn.com.qmth.examcloud.core.basic.dao.StudentRepo;
+import cn.com.qmth.examcloud.core.basic.dao.UserRepo;
 import cn.com.qmth.examcloud.core.basic.dao.entity.Org;
+import cn.com.qmth.examcloud.core.basic.dao.entity.Student;
 import cn.com.qmth.examcloud.core.basic.dao.entity.User;
 import cn.com.qmth.examcloud.core.basic.dao.entity.UserRole;
 import cn.com.qmth.examcloud.core.basic.service.UserService;
@@ -44,9 +47,15 @@ public class UserCloudServiceProvider extends ControllerSupport implements UserC
 
 	@Autowired
 	UserService userService;
+	
+	@Autowired
+	UserRepo userRepo;
 
 	@Autowired
 	OrgRepo orgRepo;
+	
+	@Autowired
+	StudentRepo studentRepo;
 
 	@ApiOperation(value = "登录", notes = "")
 	@PostMapping("login")
@@ -54,19 +63,21 @@ public class UserCloudServiceProvider extends ControllerSupport implements UserC
 	public LoginResp login(@RequestBody LoginReq req) {
 
 		String rootOrgId = req.getRootOrgId();
-
+		Org rootOrg = null;
 		if (StringUtils.isBlank(rootOrgId)) {
 			if (StringUtils.isBlank(req.getDomain())) {
 				throw new StatusException("B-001001", "domain,rootOrgId 必须有一个不为空");
 			}
 
-			Org org = orgRepo.findFirstByParentIdAndCode(0L, req.getDomain());
+			rootOrg = orgRepo.findFirstByParentIdAndCode(0L, req.getDomain());
 
-			rootOrgId = String.valueOf(org.getRootId());
+			rootOrgId = String.valueOf(rootOrg.getRootId());
 
 			if (StringUtils.isBlank(rootOrgId)) {
 				throw new StatusException("B-001002", "domain错误");
 			}
+		}else{
+			rootOrg = orgRepo.findOne(Long.valueOf(rootOrgId));
 		}
 
 		String accountType = req.getAccountType();
@@ -89,7 +100,8 @@ public class UserCloudServiceProvider extends ControllerSupport implements UserC
 			userBean.setUserId(user.getId());
 			userBean.setDisplayName(user.getLoginName());
 			userBean.setRootOrgId(user.getRootOrgId());
-
+			userBean.setRootOrgName(rootOrg!=null?rootOrg.getName():null);
+			userBean.setOrgId(user.getOrgId());
 			List<UserRole> userRoles = user.getUserRoles();
 			ArrayList<RoleBean> roleList = Lists.newArrayList();
 
@@ -108,11 +120,13 @@ public class UserCloudServiceProvider extends ControllerSupport implements UserC
 		}
 		// 学生学号登录
 		else if (AccountType.STUDENT_CODE.getCode().equals(accountType)) {
-
+	        Student student = studentRepo.findByStudentCodeAndRootOrgId(accountValue, rootOrg.getId());
+	        userBean = setStudentUserInfo(password,student);
 		}
 		// 学生身份证号登录
 		else if (AccountType.STUDENT_IDENTITY_NUMBER.getCode().equals(accountType)) {
-
+			Student student = studentRepo.findByIdentityNumberAndRootOrgId(accountValue,rootOrg.getId());
+			userBean = setStudentUserInfo(password,student);
 		}
 
 		LoginResp resp = new LoginResp();
@@ -120,5 +134,32 @@ public class UserCloudServiceProvider extends ControllerSupport implements UserC
 
 		return resp;
 	}
+	
+	private UserBean setStudentUserInfo(String password,Student student){
+		UserBean userBean = new UserBean();
+		if (null == student) {
+			throw new StatusException("B-001005", "学生信息不存在");
+		}
+        User user = userRepo.findOne(student.getUser().getId());
+		String rightPassword = user.getPassword();
+		if (!rightPassword.equals(password)) {
+			throw new StatusException("B-001003", "密码错误");
+		}
+		userBean.setUserType(UserType.STUDENT.getCode());
+		userBean.setUserId(student.getId());		//学生userid存studentId
+		userBean.setDisplayName(user.getName());
+		userBean.setRootOrgId(user.getRootOrgId());
+		userBean.setOrgId(user.getOrgId());
+		userBean.setStudentCode(student.getStudentCode());
+		userBean.setIdentityNumber(student.getIdentityNumber());
+		//设置学生角色
+		ArrayList<RoleBean> roleList = Lists.newArrayList();
+		roleList.add(new RoleBean(RoleMeta.STUDENT.name(),RoleMeta.STUDENT.getCnName()));
+		userBean.setRoleList(roleList);
+		
+		Org org = orgRepo.findOne(user.getOrgId());
+		userBean.setOrgName(org.getName());
+		return userBean;
+	}
 
 }

+ 241 - 232
examcloud-core-basic-api-provider/src/main/java/cn/com/qmth/examcloud/service/core/api/CourseApi.java

@@ -1,232 +1,241 @@
-package cn.com.qmth.examcloud.service.core.api;
-
-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;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.ModelAttribute;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.commons.CommonsMultipartFile;
-
-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.core.basic.dao.CourseRepo;
-import cn.com.qmth.examcloud.core.basic.dao.entity.Course;
-import cn.com.qmth.examcloud.core.basic.service.bean.CourseAssembler;
-import cn.com.qmth.examcloud.core.basic.service.bean.CourseDto;
-import cn.com.qmth.examcloud.core.basic.service.impl.CourseService;
-import cn.com.qmth.examcloud.core.basic.service.impl.ExportService;
-import io.swagger.annotations.ApiOperation;
-
-/**
- * 课程服务API
- * Created by songyue on 17/1/14.
- */
-@RestController
-@RequestMapping("${app.api.root}/course")
-public class CourseApi {
-
-    @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){
-        AccessUser accessUser = (AccessUser) request.getAttribute("accessUser");
-        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){
-        AccessUser accessUser = (AccessUser) request.getAttribute("accessUser");
-        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){
-        AccessUser accessUser = (AccessUser) request.getAttribute("accessUser");
-        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){
-        AccessUser accessUser = (AccessUser) request.getAttribute("accessUser");
-        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) {
-		List<Course> list = Lists.newArrayList();
-		for (String id : funcIds) {
-			Course one = courseRepo.findOne(Long.parseLong(id));
-			if (null != one) {
-				list.add(one);
-			}
-		}
-		return new ResponseEntity<List<Course>>(list, HttpStatus.OK);
-	}			
-
-    @ApiOperation(value="新增课程",notes="新增")
-    @PostMapping
-    public ResponseEntity addCourse(@RequestBody Course course,HttpServletRequest request){
-    	course.setCreateTime(new Date());
-        AccessUser accessUser = (AccessUser) request.getAttribute("accessUser");
-        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){
-        AccessUser accessUser = (AccessUser) request.getAttribute("accessUser");
-        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);
-		}
-    }
-
-    @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){
-        AccessUser accessUser = (AccessUser) request.getAttribute("accessUser");
-        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);
-		} 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);
-    }
-}
+package cn.com.qmth.examcloud.service.core.api;
+
+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;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
+
+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.bean.User;
+import cn.com.qmth.examcloud.commons.web.security.entity.AccessUser;
+import cn.com.qmth.examcloud.commons.web.support.ControllerSupport;
+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;
+import cn.com.qmth.examcloud.core.basic.service.bean.CourseDto;
+import cn.com.qmth.examcloud.core.basic.service.impl.CourseService;
+import cn.com.qmth.examcloud.core.basic.service.impl.ExportService;
+import io.swagger.annotations.ApiOperation;
+
+/**
+ * 课程服务API
+ * Created by songyue on 17/1/14.
+ */
+@RestController
+@RequestMapping("${app.api.root}/course")
+public class CourseApi 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){
+        //AccessUser accessUser = (AccessUser) request.getAttribute("accessUser");
+    	User user = getAccessUser();
+        if(user != null){
+            course.setOrgId(user.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){
+        //AccessUser accessUser = (AccessUser) request.getAttribute("accessUser");
+    	User user = getAccessUser();
+        if(user != null){
+            return new ResponseEntity(courseRepo.findByCodeName(user.getRootOrgId(),codeName), HttpStatus.OK);
+        }else{
+            return new ResponseEntity(HttpStatus.NOT_FOUND);
+        }
+    }
+    
+    @ApiOperation(value="查询课程不分页带查询",notes = "不分页带查询")
+    @GetMapping("/all")
+    public ResponseEntity getEnableExam(@ModelAttribute Course course,HttpServletRequest request){
+    	User user = getAccessUser();
+        //AccessUser accessUser = (AccessUser) request.getAttribute("accessUser");
+        if(user != null){
+            course.setOrgId(user.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){
+    	User user = getAccessUser();
+        //AccessUser accessUser = (AccessUser) request.getAttribute("accessUser");
+        if(user != null){
+            course.setOrgId(user.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) {
+		List<Course> list = Lists.newArrayList();
+		for (String id : funcIds) {
+			Course one = courseRepo.findOne(Long.parseLong(id));
+			if (null != one) {
+				list.add(one);
+			}
+		}
+		return new ResponseEntity<List<Course>>(list, HttpStatus.OK);
+	}			
+
+    @ApiOperation(value="新增课程",notes="新增")
+    @PostMapping
+    public ResponseEntity addCourse(@RequestBody Course course,HttpServletRequest request){
+    	course.setCreateTime(new Date());
+    	User user = getAccessUser();
+        //AccessUser accessUser = (AccessUser) request.getAttribute("accessUser");
+        if(user != null){
+            course.setOrgId(user.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){
+    	User user = getAccessUser();
+        //AccessUser accessUser = (AccessUser) request.getAttribute("accessUser");
+        if(user != null){
+            course.setOrgId(user.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);
+		}
+    }
+
+    @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){
+    	User user = getAccessUser();
+    	//AccessUser accessUser = (AccessUser) request.getAttribute("accessUser");
+        Long orgId = null;
+        if(user != null){
+            orgId = user.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);
+		} 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);
+    }
+}

+ 8 - 1
examcloud-core-basic-api/src/main/java/cn/com/qmth/examcloud/core/basic/api/bean/RoleBean.java

@@ -16,7 +16,14 @@ public class RoleBean implements JsonSerializable {
 	private String roleCode;
 
 	private String roleName;
-
+	
+	public RoleBean(){}
+	
+	public RoleBean(String roleCode,String roleName){
+		this.roleCode = roleCode;
+		this.roleName = roleName;
+	}
+	
 	public String getRoleCode() {
 		return roleCode;
 	}

+ 65 - 1
examcloud-core-basic-api/src/main/java/cn/com/qmth/examcloud/core/basic/api/bean/UserBean.java

@@ -31,14 +31,38 @@ public class UserBean implements JsonSerializable {
 	private String displayName;
 
 	/**
-	 * 顶级机构ID
+	 * 顶级机构(学校)ID
 	 */
 	private Long rootOrgId;
+	
+	/**
+	 * 顶级机构(学校)名称
+	 */
+	private String rootOrgName;
+	
+	/**
+	 * 学习中心 ID
+	 */
+	private Long orgId;
+	/**
+	 * 学习中心名称
+	 */
+	private String orgName;
 
 	/**
 	 * 角色集合
 	 */
 	private List<RoleBean> roleList;
+	
+	/**
+	 * 学号 
+	 */
+	private String studentCode;
+	
+	/**
+	 * 身份证号
+	 */
+	private String identityNumber;
 
 	public String getUserType() {
 		return userType;
@@ -80,4 +104,44 @@ public class UserBean implements JsonSerializable {
 		this.roleList = roleList;
 	}
 
+	public Long getOrgId() {
+		return orgId;
+	}
+
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+
+	public String getRootOrgName() {
+		return rootOrgName;
+	}
+
+	public void setRootOrgName(String rootOrgName) {
+		this.rootOrgName = rootOrgName;
+	}
+
+	public String getStudentCode() {
+		return studentCode;
+	}
+
+	public void setStudentCode(String studentCode) {
+		this.studentCode = studentCode;
+	}
+
+	public String getIdentityNumber() {
+		return identityNumber;
+	}
+
+	public void setIdentityNumber(String identityNumber) {
+		this.identityNumber = identityNumber;
+	}
+
+	public String getOrgName() {
+		return orgName;
+	}
+
+	public void setOrgName(String orgName) {
+		this.orgName = orgName;
+	}
+	
 }