yonge 5 years ago
parent
commit
0edd129b80
16 changed files with 161 additions and 29 deletions
  1. 18 0
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/AuthTaskFeignService.java
  2. 20 0
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/fallback/AuthTaskFeignServiceFallback.java
  3. 1 1
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/enums/UserLockFlag.java
  4. 1 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/handler/AuthenticationFailureListener.java
  5. 2 2
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/service/DefaultUserDetailsService.java
  6. 14 3
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserDao.java
  7. 1 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserLoginDao.java
  8. 14 8
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserLoginService.java
  9. 51 5
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserLoginServiceImpl.java
  10. 9 5
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/TaskController.java
  11. 4 0
      mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml
  12. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  13. 5 0
      mec-task/pom.xml
  14. 1 1
      mec-task/src/main/java/com/ym/mec/task/jobs/PushNoSignOutMessageTask.java
  15. 18 0
      mec-task/src/main/java/com/ym/mec/task/jobs/UserAutoUnlockedTask.java
  16. 1 1
      mec-task/src/main/java/com/ym/mec/task/jobs/VipGroupTeacherSalarySettlementTask.java

+ 18 - 0
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/AuthTaskFeignService.java

@@ -0,0 +1,18 @@
+package com.ym.mec.auth.api.client;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+
+import com.ym.mec.auth.api.client.fallback.AuthTaskFeignServiceFallback;
+import com.ym.mec.common.config.FeignConfiguration;
+
+@FeignClient(name = "auth-server", configuration = { FeignConfiguration.class }, fallback = AuthTaskFeignServiceFallback.class)
+public interface AuthTaskFeignService {
+
+	/**
+	 * 用户自动解锁
+	 * @return
+	 */
+	@GetMapping(value = "task/autoUnlock")
+	public boolean autoUnlock();
+}

+ 20 - 0
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/fallback/AuthTaskFeignServiceFallback.java

@@ -0,0 +1,20 @@
+package com.ym.mec.auth.api.client.fallback;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import com.ym.mec.auth.api.client.AuthTaskFeignService;
+
+@Component
+public class AuthTaskFeignServiceFallback implements AuthTaskFeignService {
+
+	private final static Logger logger = LoggerFactory.getLogger(AuthTaskFeignServiceFallback.class);
+
+	@Override
+	public boolean autoUnlock() {
+		logger.warn("用户自动解锁服务调用失败");
+		return false;
+	}
+
+}

+ 1 - 1
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/enums/UserLockFlag.java

@@ -9,7 +9,7 @@ import com.ym.mec.common.enums.BaseEnum;
  */
 public enum UserLockFlag implements BaseEnum<Integer, UserLockFlag> {
 
-	NOACTIVATED(0, "正常"), CANCELLED(1, "冻结"), NORMAL(9, "锁定");
+	NORMAL(0, "正常"), CANCELLED(1, "冻结"), LOCKED(9, "锁定");
 
 	private int code;
 

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/handler/AuthenticationFailureListener.java

@@ -61,7 +61,7 @@ public class AuthenticationFailureListener implements ApplicationListener<Authen
                 if(userLogin.getFailCount() >= 5){
                     userLogin.setLockTime(30);
                     userLogin.setLockDate(date);
-                    sysUser.setLockFlag(UserLockFlag.NORMAL);
+                    sysUser.setLockFlag(UserLockFlag.LOCKED);
                     sysUser.setUpdateTime(date);
                     sysUserService.update(sysUser);
                 }

+ 2 - 2
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/service/DefaultUserDetailsService.java

@@ -51,7 +51,7 @@ public class DefaultUserDetailsService implements UserDetailsService {
 		}
 		if (userInfo == null) {
 			throw new UsernameNotFoundException("账户不存在");
-		} else if (userInfo.getSysUser().getLockFlag() == UserLockFlag.NORMAL) {
+		} else if (userInfo.getSysUser().getLockFlag() == UserLockFlag.LOCKED) {
 			throw new LockedException("账户被锁定");
 		}
 
@@ -68,7 +68,7 @@ public class DefaultUserDetailsService implements UserDetailsService {
 
 		SysUser sysUser = userInfo.getSysUser();
 
-		return new AuthUser(sysUser.getId(), sysUser.getOrganId(), username, BCRYPT + sysUser.getPassword(), sysUser.getLockFlag() == UserLockFlag.NOACTIVATED,
+		return new AuthUser(sysUser.getId(), sysUser.getOrganId(), username, BCRYPT + sysUser.getPassword(), sysUser.getLockFlag() == UserLockFlag.NORMAL,
 				true, true, true, authorities);
 	}
 

+ 14 - 3
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserDao.java

@@ -1,9 +1,13 @@
 package com.ym.mec.auth.dal.dao;
 
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.auth.api.enums.UserLockFlag;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImUserModel;
-import org.apache.ibatis.annotations.Param;
 
 public interface SysUserDao extends BaseDAO<Integer, SysUser> {
 
@@ -13,7 +17,7 @@ public interface SysUserDao extends BaseDAO<Integer, SysUser> {
 	 * @return
 	 */
 	SysUser queryByUsername(String username);
-	
+
 	/**
 	 * 根据手机号查询对象
 	 * @param phone
@@ -33,5 +37,12 @@ public interface SysUserDao extends BaseDAO<Integer, SysUser> {
 	 * @param userId
 	 * @return
 	 */
-    ImUserModel getBasic(Integer userId);
+	ImUserModel getBasic(Integer userId);
+
+	/**
+	 * 根据状态查询
+	 * @param status
+	 * @return
+	 */
+	List<SysUser> queryByStatus(UserLockFlag status);
 }

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserLoginDao.java

@@ -3,7 +3,7 @@ package com.ym.mec.auth.dal.dao;
 import com.ym.mec.auth.api.entity.SysUserLogin;
 import com.ym.mec.common.dal.BaseDAO;
 
-public interface SysUserLoginDao extends BaseDAO<Long, SysUserLogin> {
+public interface SysUserLoginDao extends BaseDAO<Integer, SysUserLogin> {
 
     /**
      * 根据用户查询登录信息

+ 14 - 8
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserLoginService.java

@@ -3,12 +3,18 @@ package com.ym.mec.auth.service;
 import com.ym.mec.auth.api.entity.SysUserLogin;
 import com.ym.mec.common.service.BaseService;
 
-public interface SysUserLoginService extends BaseService<Long, SysUserLogin> {
-
-    /**
-     * 根据用户查询登录信息
-     * @param userId
-     * @return
-     */
-    SysUserLogin findLoginByUserId(Integer userId);
+public interface SysUserLoginService extends BaseService<Integer, SysUserLogin> {
+
+	/**
+	 * 根据用户查询登录信息
+	 * @param userId
+	 * @return
+	 */
+	SysUserLogin findLoginByUserId(Integer userId);
+
+	/**
+	 * 自动解锁
+	 * @return
+	 */
+	public boolean autoUnlock();
 }

+ 51 - 5
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserLoginServiceImpl.java

@@ -1,21 +1,34 @@
 package com.ym.mec.auth.service.impl;
 
+import java.util.Date;
+import java.util.List;
+
+import org.apache.commons.lang.time.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.entity.SysUserLogin;
+import com.ym.mec.auth.api.enums.UserLockFlag;
+import com.ym.mec.auth.dal.dao.SysUserDao;
 import com.ym.mec.auth.dal.dao.SysUserLoginDao;
 import com.ym.mec.auth.service.SysUserLoginService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 
 @Service
-public class SysUserLoginServiceImpl extends BaseServiceImpl<Long, SysUserLogin> implements SysUserLoginService {
-	
+public class SysUserLoginServiceImpl extends BaseServiceImpl<Integer, SysUserLogin> implements SysUserLoginService {
+
 	@Autowired
 	private SysUserLoginDao sysUserLoginDao;
 
+	@Autowired
+	private SysUserDao sysUserDao;
+
 	@Override
-	public BaseDAO<Long, SysUserLogin> getDAO() {
+	public BaseDAO<Integer, SysUserLogin> getDAO() {
 		return sysUserLoginDao;
 	}
 
@@ -23,4 +36,37 @@ public class SysUserLoginServiceImpl extends BaseServiceImpl<Long, SysUserLogin>
 	public SysUserLogin findLoginByUserId(Integer userId) {
 		return sysUserLoginDao.findLoginByUserId(userId);
 	}
+
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public boolean autoUnlock() {
+		List<SysUser> users = sysUserDao.queryByStatus(UserLockFlag.LOCKED);
+		if (users != null) {
+			SysUserLogin userLogin = null;
+			Date targetDate = null;
+			Date currentDate = new Date();
+			Integer lockTime = null;
+			for (SysUser user : users) {
+				userLogin = get(user.getId());
+				if (userLogin != null) {
+					lockTime = userLogin.getLockTime();
+					if (lockTime == null || lockTime == 0) {
+						continue;
+					}
+					targetDate = DateUtils.addMinutes(userLogin.getLockDate(), lockTime);
+					if (targetDate.getTime() < currentDate.getTime()) {
+						userLogin.setFailCount(0);
+						userLogin.setLockDate(null);
+						userLogin.setLockTime(0);
+						update(userLogin);
+
+						user.setLockFlag(UserLockFlag.NORMAL);
+						user.setUpdateTime(currentDate);
+						sysUserDao.update(user);
+					}
+				}
+			}
+		}
+		return false;
+	}
 }

+ 9 - 5
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/TaskController.java

@@ -1,19 +1,23 @@
 package com.ym.mec.auth.web.controller;
 
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import com.ym.mec.auth.service.SysUserLoginService;
 import com.ym.mec.common.controller.BaseController;
 
-@RestController()
+@RestController
 @RequestMapping("task")
 public class TaskController extends BaseController {
 
-	@GetMapping("/test")
-	public Object test() {
-		System.out.println("测试第一个定时任务");
-		return succeed();
+	@Autowired
+	private SysUserLoginService sysUserLoginService;
+
+	@GetMapping("/autoUnlock")
+	public void autoUnlock() {
+		sysUserLoginService.autoUnlock();
 	}
 
 }

+ 4 - 0
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -179,4 +179,8 @@
     <select id="getBasic" resultMap="ImUserModel">
         select * from sys_user where id_ = #{userId}
     </select>
+    
+    <select id="queryByStatus" resultMap="SysUser">
+        select * from sys_user where lock_flag_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+    </select>
 </mapper>

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

@@ -169,7 +169,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             sysUser.setPhone(studentRegistration.getParentsPhone());
             sysUser.setCreateTime(date);
             sysUser.setUpdateTime(date);
-            sysUser.setLockFlag(UserLockFlag.NOACTIVATED);
+            sysUser.setLockFlag(UserLockFlag.NORMAL);
             sysUser.setDelFlag(com.ym.mec.auth.api.enums.YesOrNoEnum.NO);
             sysUser.setUserType(SysUserType.STUDENT);
             sysUser.setGender(studentRegistration.getGender());

+ 5 - 0
mec-task/pom.xml

@@ -64,6 +64,11 @@
         	<groupId>com.ym</groupId>
         	<artifactId>mec-client-api</artifactId>
         </dependency>
+        
+        <dependency>
+        	<groupId>com.ym</groupId>
+        	<artifactId>mec-auth-api</artifactId>
+        </dependency>
 		
 	</dependencies>
 	

+ 1 - 1
mec-task/src/main/java/com/ym/mec/task/jobs/PushNoSignOutMessage.java → mec-task/src/main/java/com/ym/mec/task/jobs/PushNoSignOutMessageTask.java

@@ -6,7 +6,7 @@ import com.ym.mec.task.TaskRemoteService;
 import com.ym.mec.task.core.BaseTask;
 import com.ym.mec.task.core.TaskException;
 
-public class PushNoSignOutMessage extends BaseTask {
+public class PushNoSignOutMessageTask extends BaseTask {
 
 	@Autowired
 	private TaskRemoteService taskRemoteService;

+ 18 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/UserAutoUnlockedTask.java

@@ -0,0 +1,18 @@
+package com.ym.mec.task.jobs;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.ym.mec.auth.api.client.AuthTaskFeignService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+
+public class UserAutoUnlockedTask extends BaseTask {
+
+	@Autowired
+	private AuthTaskFeignService authTaskFeignService;
+
+	@Override
+	public void execute() throws TaskException {
+		authTaskFeignService.autoUnlock();
+	}
+}

+ 1 - 1
mec-task/src/main/java/com/ym/mec/task/jobs/VipGroupTeacherSalarySettlement.java → mec-task/src/main/java/com/ym/mec/task/jobs/VipGroupTeacherSalarySettlementTask.java

@@ -6,7 +6,7 @@ import com.ym.mec.task.TaskRemoteService;
 import com.ym.mec.task.core.BaseTask;
 import com.ym.mec.task.core.TaskException;
 
-public class VipGroupTeacherSalarySettlement extends BaseTask {
+public class VipGroupTeacherSalarySettlementTask extends BaseTask {
 
 	@Autowired
 	private TaskRemoteService taskRemoteService;