yonge 3 年 前
コミット
b32db41494

+ 2 - 2
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/provider/PhoneAuthenticationProvider.java

@@ -94,9 +94,9 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 
 					// 添加userType以及附加信息
 					if (StringUtils.equals("STUDENT", clientId)) {
-						sysUserService.saveStudent(user.getId());
+						sysUserService.saveStudent(user);
 					} else if (StringUtils.equals("TEACHER", clientId)) {
-						sysUserService.saveTeacher(user.getId());
+						sysUserService.saveTeacher(user);
 					}
 					sysUserService.update(user);
 				}

+ 24 - 0
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/service/CustomTokenServices.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.auth.core.service;
 
+import java.util.Collection;
 import java.util.Date;
 import java.util.Set;
 import java.util.UUID;
@@ -33,6 +34,8 @@ import org.springframework.security.web.authentication.preauth.PreAuthenticatedA
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
 
+import com.yonge.cooleshow.common.security.SecurityConstants;
+
 /**
  * Base implementation for token services using random UUID values for the access token and refresh token values. The
  * main extension point for customizations is the {@link TokenEnhancer} which will be called after the access and
@@ -271,6 +274,27 @@ public class CustomTokenServices implements AuthorizationServerTokenServices, Re
 		}
 		return clientAuth.getClientId();
 	}
+	
+	public boolean revokeToken(String clientId, 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 true;
+	}
 
 	public boolean revokeToken(String tokenValue) {
 		OAuth2AccessToken accessToken = tokenStore.readAccessToken(tokenValue);

+ 4 - 5
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/SysUserService.java

@@ -1,5 +1,7 @@
 package com.yonge.cooleshow.auth.service;
 
+import java.util.List;
+
 import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
 import com.yonge.cooleshow.auth.api.dto.SysUserInfo;
 import com.yonge.cooleshow.auth.api.dto.SysUserQueryInfo;
@@ -8,9 +10,6 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.api.vo.UserSetVo;
 import com.yonge.cooleshow.common.entity.ImUserModel;
 import com.yonge.cooleshow.common.service.BaseService;
-import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
-
-import java.util.List;
 
 public interface SysUserService extends BaseService<Long, SysUser> {
 
@@ -138,14 +137,14 @@ public interface SysUserService extends BaseService<Long, SysUser> {
      *
      * @param userId
      */
-    void saveStudent(Long userId);
+    void saveStudent(SysUser sysUser);
 
     /**
      * 保存teacher数据
      *
      * @param userId
      */
-    void saveTeacher(Long userId);
+    void saveTeacher(SysUser sysUser);
 
     /***
      * 更新用户实名信息

+ 11 - 11
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserServiceImpl.java

@@ -36,8 +36,6 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
     @Autowired
     private SysRoleMenuService sysRoleMenuService;
     @Autowired
-    private SysUserService sysUserService;
-    @Autowired
     private SysConfigService sysConfigService;
 
     @Override
@@ -164,7 +162,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
         } else if (StringUtils.equalsIgnoreCase(clientId, "STUDENT")) {
             sysUser.setUserType("STUDENT");
             sysUserDao.insert(sysUser);
-            sysUserService.saveStudent(sysUser.getId());
+            saveStudent(sysUser);
             return queryUserInfoByPhone(phone);
         }
         return null;
@@ -178,19 +176,21 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void saveStudent(Long userId) {
-        sysUserDao.saveStudent(userId);
-        //创建老师账户
-        sysUserDao.createUserAccount(userId);
+    public void saveStudent(SysUser sysUser) {
+        sysUserDao.saveStudent(sysUser.getId());
+        if(!sysUser.getUserType().contains("TEACHER")){
+            sysUserDao.createUserAccount(sysUser.getId());
+        }
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void saveTeacher(Long userId) {
+    public void saveTeacher(SysUser sysUser) {
 
-        sysUserDao.saveTeacher(userId);
-        //创建老师账户
-        sysUserDao.createUserAccount(userId);
+        sysUserDao.saveTeacher(sysUser.getId());
+        if(!sysUser.getUserType().contains("STUDENT")){
+            sysUserDao.createUserAccount(sysUser.getId());
+        }
     }
 
     @Override

+ 1 - 22
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/TokenController.java

@@ -7,7 +7,6 @@ import io.swagger.annotations.ApiOperation;
 
 import java.io.IOException;
 import java.util.Base64;
-import java.util.Collection;
 import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
@@ -38,7 +37,6 @@ import com.yonge.cooleshow.auth.service.SysUserService;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.security.AuthUser;
-import com.yonge.cooleshow.common.security.SecurityConstants;
 import com.yonge.cooleshow.common.security.SecurityUtils;
 
 @RestController
@@ -159,30 +157,11 @@ 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("退出成功");
+		return tokenService.revokeToken(clientId, phone) ? succeed("退出成功") : failed();
 	}
 
 	@GetMapping(value = "/checkToken",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)

+ 20 - 2
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/UserController.java

@@ -32,6 +32,7 @@ import com.yonge.cooleshow.auth.api.dto.UserSetReq;
 import com.yonge.cooleshow.auth.api.entity.SysRole;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.api.vo.UserSetVo;
+import com.yonge.cooleshow.auth.core.service.CustomTokenServices;
 import com.yonge.cooleshow.auth.service.SysConfigService;
 import com.yonge.cooleshow.auth.service.SysRoleService;
 import com.yonge.cooleshow.auth.service.SysUserRoleService;
@@ -64,8 +65,13 @@ public class UserController extends BaseController {
     private SysUserRoleService sysUserRoleService;
     @Autowired
     private IdGeneratorService smsCodeService;
+
+	@Autowired
+	private CustomTokenServices tokenService;
+	
     @Value("${message.debugMode}")
     private boolean debugMode;
+    
     @Autowired
     private RealnameAuthenticationPlugin realnameAuthenticationPlugin;
     @Autowired
@@ -305,10 +311,22 @@ public class UserController extends BaseController {
         if (sysUser == null) {
             return failed("用户不存在");
         }
-        if (sysUser.getId() != userId) {
+        if (sysUser.getId() != userId.longValue()) {
             return failed("非法操作");
         }
         sysUser.setLockFlag(lockFlag);
+        
+        if(lockFlag == 1){
+        	if(sysUser.getUserType().contains("STUDENT")){
+        		tokenService.revokeToken("student", sysUser.getPhone());
+        	}
+        	if(sysUser.getUserType().contains("TEACHER")){
+        		tokenService.revokeToken("teacher", sysUser.getPhone());
+        	}
+        	if(sysUser.getUserType().contains("SYSTEM")){
+        		tokenService.revokeToken("system", sysUser.getPhone());
+        	}
+        }
         sysUser.setUpdateTime(new Date());
         sysUserService.update(sysUser);
         return succeed();
@@ -330,7 +348,7 @@ public class UserController extends BaseController {
         if (sysUser == null) {
             return failed("用户不存在");
         }
-        if (sysUser.getId() != userId) {
+        if (sysUser.getId() != userId.longValue()) {
             return failed("非法操作");
         }
 

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/EmployeeServiceImpl.java

@@ -10,6 +10,8 @@ import com.yonge.cooleshow.biz.dal.dto.EmployeeDto;
 import com.yonge.cooleshow.biz.dal.dto.search.EmployeeSearch;
 import com.yonge.cooleshow.biz.dal.vo.EmployeeVo;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@@ -69,6 +71,9 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Long, Employee> impleme
                 return HttpResponseResult.failed("该手机号对应用户已经是员工");
             }
             sysUser.setUserType(SysUserType.SYSTEM.getCode() + "," + sysUser.getUserType());
+            if(StringUtils.isNotBlank(param.getUsername())){
+            	sysUser.setUsername(param.getUsername());
+            }
             sysUser.setUpdateTime(new Date());
             employeeDao.updateSysUser(sysUser);
         }

+ 1 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/ContractTemplateMapper.xml

@@ -106,7 +106,7 @@
 	<!-- 分页查询 -->
 	<select id="queryPageList" resultMap="ContractTemplateDto"
 		parameterType="map">
-		SELECT tct.*,u.real_name_ latest_operator_ FROM contract_template tct left join sys_user u on tct.modify_by_ = u.id_ 
+		SELECT tct.*,ifnull(u.real_name_,u.username_) latest_operator_ FROM contract_template tct left join sys_user u on tct.modify_by_ = u.id_ 
 		<where>
 			<if test="status != null">
 				and tct.status_ = #{status}