diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java index ce9f2dbe6..4b7659e23 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java @@ -309,4 +309,17 @@ public class SysUserController { return sysDeptService.getUserDeptOption(); } + /** + * 退出登录 + * @param userId @RequestBody SysUserDTO dto + * @return + */ + @GetMapping("updateUserOpenId/{userId}") + public Result updateUserOpenId(@PathVariable("userId") Long userId) { + + sysUserService.updateUserOpenId(userId); + + return new Result(); + } + } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java index 7a414de6e..193360ec2 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java @@ -82,4 +82,9 @@ public interface SysUserDao extends BaseDao { * @since 2019/11/20 13:56 */ SysUserDTO selectOneOfSysUserByOpenId(String openId); + + /** + * 退出登录 + */ + void updateUserOpenId(@Param("userId") Long userId); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java index 7d8681786..ee21a30dc 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java @@ -11,10 +11,9 @@ package com.elink.esua.epdc.service; import com.elink.esua.epdc.commons.mybatis.service.BaseService; import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.utils.Result; -import com.elink.esua.epdc.dto.DeptOption; +import com.elink.esua.epdc.dto.SysUserDTO; import com.elink.esua.epdc.dto.SysUserOpenIdFormDTO; import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO; -import com.elink.esua.epdc.dto.SysUserDTO; import com.elink.esua.epdc.entity.SysUserEntity; import java.util.List; @@ -94,4 +93,11 @@ public interface SysUserService extends BaseService { * @since 2019/11/20 9:56 */ Result modifyOpenIdByUsername(SysUserOpenIdFormDTO sysUserOpenIdFormDto); + + /** + * 退出登录 + * @param userId + * @return + */ + void updateUserOpenId(Long userId); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java index 1b187b044..a0920b77b 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java @@ -19,26 +19,21 @@ import com.elink.esua.epdc.commons.tools.constant.NumConstant; import com.elink.esua.epdc.commons.tools.enums.SuperAdminEnum; import com.elink.esua.epdc.commons.tools.exception.RenException; import com.elink.esua.epdc.commons.tools.page.PageData; -import com.elink.esua.epdc.commons.tools.redis.RedisKeys; -import com.elink.esua.epdc.commons.tools.redis.RedisUtils; -import com.elink.esua.epdc.commons.tools.redis.UserDetailRedis; import com.elink.esua.epdc.commons.tools.security.password.PasswordUtils; import com.elink.esua.epdc.commons.tools.security.user.SecurityUser; import com.elink.esua.epdc.commons.tools.security.user.UserDetail; import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dao.SysUserDao; -import com.elink.esua.epdc.dto.*; +import com.elink.esua.epdc.dto.SysUserDTO; +import com.elink.esua.epdc.dto.SysUserOpenIdFormDTO; import com.elink.esua.epdc.dto.epdc.GridForLeaderRegisterDTO; import com.elink.esua.epdc.dto.epdc.GridLeaderRegisterDTO; -import com.elink.esua.epdc.entity.SysDeptEntity; import com.elink.esua.epdc.entity.SysUserEntity; import com.elink.esua.epdc.service.SysDeptService; import com.elink.esua.epdc.service.SysRoleUserService; import com.elink.esua.epdc.service.SysUserService; -import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; -import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -246,5 +241,10 @@ public class SysUserServiceImpl extends BaseServiceImpl + + UPDATE sys_user SET open_id = '' WHERE id = #{userId} AND del_flag = 0 + + diff --git a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/controller/AuthController.java b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/controller/AuthController.java index 15ed691b7..ef2fd2e0d 100644 --- a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/controller/AuthController.java +++ b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/controller/AuthController.java @@ -162,4 +162,16 @@ public class AuthController { } return new Result().error(); } + + /** + * 退出登录 + * @param userId + * @Author wanggongfeng + * @return + */ + @GetMapping("logoutUser/{userId}") + public Result logoutUser(@PathVariable("userId") String userId) { + + return authService.logoutUser(Long.parseLong(userId)); + } } diff --git a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java index 88e354940..ca9671b3f 100644 --- a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java +++ b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/UserFeignClient.java @@ -28,7 +28,7 @@ import java.util.List; * @author Mark sunlightcs@gmail.com * @since 1.0.0 */ -@FeignClient(name = ServiceConstant.EPDC_ADMIN_SERVER, fallback = UserFeignClientFallback.class, contextId = "UserFeignClient") +@FeignClient(name = ServiceConstant.EPDC_ADMIN_SERVER, fallback = UserFeignClientFallback.class, contextId = "UserFeignClient",url = "http://127.0.0.1:9092") public interface UserFeignClient { /** @@ -78,4 +78,14 @@ public interface UserFeignClient { @GetMapping("sys/user/packageOption/{userId}") Result packageUserDeptOption(@PathVariable("userId") Long userId); + /** + * 退出登录 + * + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @params userId + * @author wanggongfeng + */ + @GetMapping("sys/user/updateUserOpenId/{userId}") + Result updateUserOpenId(@PathVariable("userId") Long userId); + } diff --git a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java index b05ace690..893db7ec2 100644 --- a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java +++ b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/feign/fallback/UserFeignClientFallback.java @@ -50,4 +50,9 @@ public class UserFeignClientFallback implements UserFeignClient { public Result packageUserDeptOption(Long userId) { return new Result<>(); } + + @Override + public Result updateUserOpenId(Long userId) { + return new Result<>(); + } } diff --git a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/AuthService.java b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/AuthService.java index 6b0061c0f..57ae4a103 100644 --- a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/AuthService.java +++ b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/AuthService.java @@ -70,4 +70,9 @@ public interface AuthService { * @since 2019/11/19 23:42 */ List getDataScopeDetailList(Long id); + + /** + * 退出 + */ + Result logoutUser(Long userId); } diff --git a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/impl/AuthServiceImpl.java b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/impl/AuthServiceImpl.java index 39023f35b..20fed9ad7 100644 --- a/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/impl/AuthServiceImpl.java +++ b/esua-epdc/epdc-auth/src/main/java/com/elink/esua/epdc/service/impl/AuthServiceImpl.java @@ -22,7 +22,10 @@ import com.elink.esua.epdc.commons.tools.log.enums.LogTypeEnum; import com.elink.esua.epdc.commons.tools.log.enums.LoginOperationEnum; import com.elink.esua.epdc.commons.tools.log.enums.LoginStatusEnum; import com.elink.esua.epdc.commons.tools.log.producer.LogProducer; +import com.elink.esua.epdc.commons.tools.redis.RedisKeys; +import com.elink.esua.epdc.commons.tools.redis.RedisUtils; import com.elink.esua.epdc.commons.tools.redis.UserDetailRedis; +import com.elink.esua.epdc.commons.tools.security.enums.UserKillEnum; import com.elink.esua.epdc.commons.tools.security.password.PasswordUtils; import com.elink.esua.epdc.commons.tools.security.user.SecurityUser; import com.elink.esua.epdc.commons.tools.security.user.UserDetail; @@ -42,7 +45,6 @@ import com.elink.esua.epdc.service.AuthService; import io.jsonwebtoken.Claims; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; @@ -73,6 +75,9 @@ public class AuthServiceImpl implements AuthService { @Autowired private UserDeptTask userDeptTask; + @Autowired + private RedisUtils redisUtils; + @Override public AuthorizationDTO login(LoginDTO login) { HttpServletRequest request = HttpContextUtils.getHttpServletRequest(); @@ -273,4 +278,23 @@ public class AuthServiceImpl implements AuthService { public Result modifyOpenId(SysUserOpenIdFormDTO sysUserOpenIdFormDto) { return userFeignClient.modifyOpenIdByUsername(sysUserOpenIdFormDto); } + + /** + * 退出登录 + * @param userId + * @Author wanggongfeng + */ + @Override + public Result logoutUser(Long userId) { + // 清空redis + String key = RedisKeys.getSecurityUserKey(userId); + redisUtils.hSet(key, "kill", UserKillEnum.YES.value()); + + // 更新open_id + userFeignClient.updateUserOpenId(userId); + + return new Result(); + + + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkUserController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkUserController.java index b4d435095..7c42de21c 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkUserController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkUserController.java @@ -1,7 +1,9 @@ package com.elink.esua.epdc.controller; +import com.elink.esua.epdc.common.token.dto.TokenDto; import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; +import com.elink.esua.epdc.commons.tools.annotation.LoginUser; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; import com.elink.esua.epdc.dto.epdc.form.*; @@ -12,10 +14,6 @@ import com.elink.esua.epdc.dto.result.WorkAppMenuStatisticsResultDTO; import com.elink.esua.epdc.service.WorkUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; import java.util.List; @@ -183,4 +181,16 @@ public class ApiWorkUserController { public Result> indexStatistics(WorkAppMenuStatisticsFormDTO formDto) { return workUserService.indexStatistics(formDto); } + + /** + * 退出登录 + * @param tokenDto + * @return + * @Author wanggongfeng + * @Date 2019/12/25 10:17 + */ + @PostMapping("logout") + public Result logout(@LoginUser TokenDto tokenDto) { + return workUserService.logout(tokenDto); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ResourceFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ResourceFeignClient.java index 99c472b6d..7fd00bfdb 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ResourceFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ResourceFeignClient.java @@ -8,6 +8,7 @@ import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.feign.fallback.ResourceFeignClientFallback; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; /** @@ -17,7 +18,7 @@ import org.springframework.web.bind.annotation.PostMapping; * @Author:liuchuang * @Date:2019/11/19 18:59 */ -@FeignClient(name = ServiceConstant.EPDC_AUTH_SERVER, fallback = ResourceFeignClientFallback.class) +@FeignClient(name = ServiceConstant.EPDC_AUTH_SERVER, fallback = ResourceFeignClientFallback.class,url = "http://127.0.0.1:9091") public interface ResourceFeignClient { /** @@ -43,4 +44,13 @@ public interface ResourceFeignClient { */ @PostMapping("auth/workLogin") Result workLogin(WorkUserLoginDTO workUserLoginDto); + + /** + * 退出登录 + * @param userId + * @author wanggongfeng + * @return + */ + @GetMapping("auth/logoutUser/{userId}") + Result logoutUser(@PathVariable("userId") String userId); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ResourceFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ResourceFeignClientFallback.java index f7503d89b..74849e24a 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ResourceFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ResourceFeignClientFallback.java @@ -28,4 +28,9 @@ public class ResourceFeignClientFallback implements ResourceFeignClient { public Result workLogin(WorkUserLoginDTO workUserLoginDto) { return ModuleUtils.feignConError(ServiceConstant.EPDC_AUTH_SERVER, "workLogin", workUserLoginDto); } + + @Override + public Result logoutUser(String userId) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_AUTH_SERVER, "logoutUser", userId); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/WorkUserService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/WorkUserService.java index 83f306436..c1f9fd7cf 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/WorkUserService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/WorkUserService.java @@ -1,5 +1,6 @@ package com.elink.esua.epdc.service; +import com.elink.esua.epdc.common.token.dto.TokenDto; import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; import com.elink.esua.epdc.commons.tools.utils.Result; @@ -130,4 +131,14 @@ public interface WorkUserService { * @since 2019/11/28 20:03 */ Result> indexStatistics(WorkAppMenuStatisticsFormDTO formDto); + + /** + * 退出登录 + * + * @param tokenDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author wanggongfeng + * @Date 2019/12/25 10:17 + **/ + Result logout(TokenDto tokenDto); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/WorkUserServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/WorkUserServiceImpl.java index 421d3e363..c50f97558 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/WorkUserServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/WorkUserServiceImpl.java @@ -2,6 +2,7 @@ package com.elink.esua.epdc.service.impl; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.hutool.core.collection.CollUtil; +import com.elink.esua.epdc.common.token.dto.TokenDto; import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO; import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO; import com.elink.esua.epdc.common.token.dto.WorkUserTokenFormDTO; @@ -322,4 +323,18 @@ public class WorkUserServiceImpl implements WorkUserService { resultDto.setMenuNum(menuNum); return resultDto; } + + /** + * 退出登录 + * + * @param tokenDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author wanggongfeng + * @Date 2019/12/25 10:17 + **/ + @Override + public Result logout(TokenDto tokenDto) { + String userId = tokenDto.getUserId(); + return resourceFeignClient.logoutUser(userId); + } }