浏览代码

Merge branch 'online1' of http://git.dayaedu.com/yonge/mec into online_music_library

 Conflicts:
	mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
zouxuan 4 年之前
父节点
当前提交
95e7d66da3

+ 4 - 1
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/SysUserFeignService.java

@@ -31,7 +31,10 @@ public interface SysUserFeignService {
 
 	@GetMapping(value = "role/queryRoleCodeListByUserId")
 	public List<String> queryRoleCodeListByUserId(@RequestParam("userId") Integer userId);
-	
+
 	@PostMapping(value = "user/updateSysUser", consumes = MediaType.APPLICATION_JSON_VALUE)
 	public Boolean updateSysUser(SysUser user);
+
+	@PostMapping(value = "exit/{clientId}/{phone}", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
+	public HttpResponseResult<String> exitByPhone(@PathVariable("clientId") String clientId, @PathVariable("phone") String phone);
 }

+ 4 - 1
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/fallback/SysUserFeignServiceFallback.java

@@ -37,8 +37,11 @@ public class SysUserFeignServiceFallback implements SysUserFeignService {
 
 	@Override
 	public Boolean updateSysUser(SysUser user) {
-		// TODO Auto-generated method stub
 		return false;
 	}
 
+	@Override
+	public HttpResponseResult<String> exitByPhone(String clientId, String phone) {
+		return null;
+	}
 }

+ 59 - 17
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/TokenController.java

@@ -1,35 +1,47 @@
 package com.ym.mec.auth.web.controller;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.auth.service.SysUserService;
-import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.entity.ImResult;
-import com.ym.mec.common.entity.ImUserModel;
-import com.ym.mec.common.security.AuthUser;
-import com.ym.mec.common.security.SecurityUtils;
-import com.ym.mec.im.ImFeignService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+
+import java.io.IOException;
+import java.util.Base64;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.*;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
 import org.springframework.security.oauth2.common.OAuth2AccessToken;
 import org.springframework.security.oauth2.provider.token.DefaultTokenServices;
+import org.springframework.security.oauth2.provider.token.TokenStore;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.client.RestTemplate;
-import java.io.IOException;
-import java.util.Base64;
-import java.util.Date;
-import java.util.Map;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.auth.service.SysUserService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.entity.ImResult;
+import com.ym.mec.common.entity.ImUserModel;
+import com.ym.mec.common.security.AuthUser;
+import com.ym.mec.common.security.SecurityConstants;
+import com.ym.mec.common.security.SecurityUtils;
+import com.ym.mec.im.ImFeignService;
 
 @RestController
 @Api(tags = "认证服务")
@@ -37,6 +49,9 @@ public class TokenController extends BaseController {
 
 	@Autowired
 	private DefaultTokenServices tokenService;
+	
+	@Autowired
+	private TokenStore tokenStore;
 
 	@Autowired
 	private RestTemplate restTemplate;
@@ -122,7 +137,9 @@ public class TokenController extends BaseController {
 
 	@PostMapping(value = "exit",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
 	@ApiOperation(value = "退出登录")
-	public HttpResponseResult logout(@RequestHeader(value = HttpHeaders.AUTHORIZATION) String authHeader) {
+	public HttpResponseResult<String> logout(HttpServletRequest request) {
+		
+		String authHeader = request.getHeader(HttpHeaders.AUTHORIZATION);
 		if (StringUtils.isBlank(authHeader)) {
 			return failed("退出失败,token 为空");
 		}
@@ -134,4 +151,29 @@ public class TokenController extends BaseController {
 		return succeed("退出成功");
 	}
 
+	@PostMapping(value = "exit/{clientId}/{phone}", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
+	@ApiOperation(value = "指定用户退出登录")
+	public HttpResponseResult<String> exitByPhone(@PathVariable("clientId") String clientId, @PathVariable("phone") String phone) {
+
+		Collection<OAuth2AccessToken> list = tokenStore.findTokensByClientIdAndUserName(clientId, SecurityConstants.PHONE_PRINCIPAL_PREFIX + phone);
+
+		if (list == null || list.size() == 0) {
+			list = tokenStore.findTokensByClientIdAndUserName(clientId, SecurityConstants.USERNAME_PRINCIPAL_PREFIX + phone);
+		} else {
+			list.addAll(tokenStore.findTokensByClientIdAndUserName(clientId, SecurityConstants.USERNAME_PRINCIPAL_PREFIX + phone));
+		}
+		if (list != null) {
+			for (OAuth2AccessToken accessToken : list) {
+				if (accessToken != null) {
+					if (accessToken.getRefreshToken() != null) {
+						tokenStore.removeRefreshToken(accessToken.getRefreshToken());
+					}
+					tokenStore.removeAccessToken(accessToken);
+				}
+			}
+		}
+
+		return succeed("退出成功");
+	}
+
 }

+ 12 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1919,20 +1919,20 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                                 backCourseSchedule.setTeachingTeacherIdList(integerAndIntegerListDto.getIds());
                             }
                         }
-                        if(CollectionUtils.isEmpty(preCourseSchedule.getTeachingTeacherIdList())){
-							preCourseSchedule.setTeachingTeacherIdList(new ArrayList<>(Arrays.asList(preCourseSchedule.getActualTeacherId())));
-						}else{
-							preCourseSchedule.getTeachingTeacherIdList().add(preCourseSchedule.getActualTeacherId());
+                        List<Integer> preTeachingTeacherIdList = new ArrayList<>();
+						preTeachingTeacherIdList.add(preCourseSchedule.getActualTeacherId());
+                        List<Integer> backTeachingTeacherIdList = new ArrayList<>();
+						backTeachingTeacherIdList.add(backCourseSchedule.getActualTeacherId());
+                        if(!CollectionUtils.isEmpty(preCourseSchedule.getTeachingTeacherIdList())){
+							preTeachingTeacherIdList.addAll(preCourseSchedule.getTeachingTeacherIdList());
 						}
-                        if(CollectionUtils.isEmpty(backCourseSchedule.getTeachingTeacherIdList())){
-							backCourseSchedule.setTeachingTeacherIdList(new ArrayList<>(Arrays.asList(backCourseSchedule.getActualTeacherId())));
-						}else{
-							backCourseSchedule.getTeachingTeacherIdList().add(backCourseSchedule.getActualTeacherId());
+                        if(!CollectionUtils.isEmpty(backCourseSchedule.getTeachingTeacherIdList())){
+							backTeachingTeacherIdList.addAll(backCourseSchedule.getTeachingTeacherIdList());
 						}
-                        if (!CollectionUtils.isEmpty(preCourseSchedule.getTeachingTeacherIdList())
-                                && !CollectionUtils.isEmpty(backCourseSchedule.getTeachingTeacherIdList())) {
-                            List<Integer> repeatIds = preCourseSchedule.getTeachingTeacherIdList()
-                                    .stream().filter(backCourseSchedule.getTeachingTeacherIdList()::contains)
+                        if (!CollectionUtils.isEmpty(preTeachingTeacherIdList)
+                                && !CollectionUtils.isEmpty(backTeachingTeacherIdList)) {
+                            List<Integer> repeatIds = preTeachingTeacherIdList
+                                    .stream().filter(backTeachingTeacherIdList::contains)
                                     .collect(Collectors.toList());
                             if (!CollectionUtils.isEmpty(repeatIds)) {
                                 throw new BizException(courseCheckInfo(preCourseSchedule, backCourseSchedule, existCourseScheduleIds, 2));

+ 4 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -142,22 +142,25 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public void employeeOperate(Integer employeeId, EmployeeOperateEnum operate) {
 		Employee employee = employeeDao.get(employeeId);
+		SysUser sysUser = sysUserFeignService.queryUserById(employeeId);
 		switch (operate){
 			case RESET_PASSWORD:
 				employeeDao.updatePassword(employeeId,new BCryptPasswordEncoder().encode(ParamEnum.INIT_PASSWORD.getCode().toString()));
 				break;
 			case LOCK_UNLOCK:
-				SysUser sysUser = sysUserFeignService.queryUserById(employeeId);
 				if(employee != null && employee.getDemissionDate() != null && sysUser.getLockFlag() == 1){
 					throw new BizException("操作失败:离职员工不允许解冻");
 				}
 				employeeDao.updateUserLockStatus(employeeId);
+				sysUserFeignService.exitByPhone("system", sysUser.getPhone());
 				break;
 			case DEMISSION:
 				employeeDao.updateUserLock(employeeId,1);
 				employeeDao.updateUserDemissionDate(employeeId);
+				sysUserFeignService.exitByPhone("system", sysUser.getPhone());
 				break;
 			case REINSTATE:
 				//离职,如果有关联课程组教务老师,

+ 0 - 3
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -1,13 +1,10 @@
 package com.ym.mec.task;
 
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 
 import com.ym.mec.common.config.FeignConfiguration;
 import com.ym.mec.task.fallback.TaskRemoteServiceFallback;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
 
 @FeignClient(name = "web-server", contextId = "TaskRemoteService", configuration = { FeignConfiguration.class }, fallback = TaskRemoteServiceFallback.class)
 public interface TaskRemoteService {