diff --git a/common-lib/src/main/java/com/mortals/xhx/feign/device/IDeviceFeign.java b/common-lib/src/main/java/com/mortals/xhx/feign/device/IDeviceFeign.java index ff017d524964274616c41d469849a150bcf51c77..1900ac20e7f744af5ce43a17eaabdabe6037df86 100644 --- a/common-lib/src/main/java/com/mortals/xhx/feign/device/IDeviceFeign.java +++ b/common-lib/src/main/java/com/mortals/xhx/feign/device/IDeviceFeign.java @@ -30,7 +30,7 @@ public interface IDeviceFeign extends IFeign { * @param devicePdu * @return */ - @PostMapping(value = "/device/list") + @PostMapping(value = "/device/interlist") Rest<RespData<List<DevicePdu>>> list(@RequestBody DevicePdu devicePdu); @@ -40,7 +40,7 @@ public interface IDeviceFeign extends IFeign { * @param id * @return */ - @GetMapping(value = "/device/info") + @GetMapping(value = "/device/interinfo") Rest<DevicePdu> info(@RequestParam(value = "id") Long id); diff --git a/common-lib/src/main/java/com/mortals/xhx/feign/user/IUserFeign.java b/common-lib/src/main/java/com/mortals/xhx/feign/user/IUserFeign.java index 41065a679655e598554be14f31be1f074500b8c9..15b3f366089fbec4ed1aa64542210eac50e5e814 100644 --- a/common-lib/src/main/java/com/mortals/xhx/feign/user/IUserFeign.java +++ b/common-lib/src/main/java/com/mortals/xhx/feign/user/IUserFeign.java @@ -28,7 +28,7 @@ public interface IUserFeign extends IFeign { * @param userPdu * @return */ - @PostMapping(value = "/user/list") + @PostMapping(value = "/user/interlist") Rest<RespData<List<UserPdu>>> list(@RequestBody UserPdu userPdu); @@ -38,7 +38,7 @@ public interface IUserFeign extends IFeign { * @param id * @return */ - @GetMapping(value = "/user/info") + @GetMapping(value = "/user/interinfo") Rest<UserPdu> info(@RequestParam(value = "id") Long id); /** diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/framework/interceptor/AuthTokenServiceImpl.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/framework/interceptor/AuthTokenServiceImpl.java index 4bf2ca6140e837744e81accac4d9c569af8dfb13..793d9d806fcc26f978e85e0eb6a51cfdb81f508e 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/framework/interceptor/AuthTokenServiceImpl.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/framework/interceptor/AuthTokenServiceImpl.java @@ -1,6 +1,5 @@ package com.mortals.xhx.base.framework.interceptor; -import cn.hutool.core.codec.Base64; import com.alibaba.fastjson.JSONObject; import com.mortals.framework.ap.SysConstains; import com.mortals.framework.service.IAuthTokenService; @@ -8,30 +7,42 @@ import com.mortals.framework.service.ICacheService; import com.mortals.framework.service.IUser; import com.mortals.framework.util.DateUtils; import com.mortals.framework.util.StringUtils; +import com.mortals.xhx.base.system.resource.service.ResourceService; import com.mortals.xhx.base.system.user.model.UserEntity; +import com.mortals.xhx.base.system.user.service.UserService; +import com.mortals.xhx.common.key.RedisKey; +import com.mortals.xhx.common.utils.MenuEncodeUtil; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Primary; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; import javax.servlet.http.HttpServletRequest; +import java.util.Base64; import java.util.HashMap; import java.util.Map; +import java.util.Set; /** * token楠岃瘉澶勭悊 * * @author zxfei */ - +@Primary @Service @Order(1) @Slf4j public class AuthTokenServiceImpl implements IAuthTokenService { + + @Autowired + private UserService userService; + // 浠ょ墝鑷畾涔夋爣璇� @Value("${token.header:Authorization}") private String header; @@ -54,7 +65,6 @@ public class AuthTokenServiceImpl implements IAuthTokenService { @Value("${token.database:0}") private Integer portalDb; - protected static final Long SECOND = 1l; protected static final Long SECOND_MINUTE = 60 * SECOND; @@ -70,6 +80,10 @@ public class AuthTokenServiceImpl implements IAuthTokenService { @Autowired private ICacheService cacheService; + @Autowired + private ResourceService resourceService; + + /** * 鑾峰彇淇℃伅 * @@ -82,22 +96,39 @@ public class AuthTokenServiceImpl implements IAuthTokenService { String token = getToken(request); if (StringUtils.isNotEmpty(token)) { try { + boolean signed = Jwts.parser().isSigned(token); + if (!signed) { + log.error("token闈炴硶锛�=>{}", token); + return null; + } Claims claims = parseToken(token); String uuid = (String) claims.get(SysConstains.LOGIN_USER_KEY); String userKey = getTokenKey(uuid); -// Rest<String> rest = userFeign.getToken(userKey); -// String userStr = rest.getData(); cacheService.select(portalDb); - String userStr = cacheService.get(userKey); - + String userStr = cacheService.get(userKey); + //鍒锋柊token鏃堕棿 + UserEntity userEntity = JSONObject.parseObject(userStr, UserEntity.class); + if (!ObjectUtils.isEmpty(userEntity)) { + verifyToken(userEntity); + } cacheService.select(db); - if (StringUtils.isNotEmpty(userStr)) { - UserEntity userEntity = JSONObject.parseObject(userStr, UserEntity.class); - userEntity.setToken(token); + if (!ObjectUtils.isEmpty(userEntity)) { + UserEntity temp = userService.getExtCache(userEntity.getLoginName()); + if (!ObjectUtils.isEmpty(temp)) { + userEntity.setId(temp.getId()); + } + //鏇存柊resource 璺緞 + String menuUrlCode = cacheService.hget(RedisKey.KEY_USER_MENU_CACHE, userEntity.getId().toString(), String.class); + if (ObjectUtils.isEmpty(menuUrlCode)) { + Set<String> urls = resourceService.findUrlSetByUserId(userEntity.getId()); + menuUrlCode = MenuEncodeUtil.generateMenuUrlCode(urls); + cacheService.hset(RedisKey.KEY_USER_MENU_CACHE, userEntity.getId().toString(), menuUrlCode); + } + userEntity.setMenuUrl(menuUrlCode); return userEntity; } } catch (Exception e) { - log.error("瑙f瀽jwt token寮傚父锛�", e); + log.error("瑙f瀽jwt token寮傚父锛�,token:{}",token, e); return null; } } @@ -151,8 +182,8 @@ public class AuthTokenServiceImpl implements IAuthTokenService { public void verifyToken(IUser user) { long expireTime = user.getExpireTime(); long currentTime = System.currentTimeMillis(); - if (expireTime - currentTime <= SECOND_MINUTE_TEN) { - log.info("涓嶈冻鍗佸垎閽燂紝鍒锋柊杩囨湡鏃堕棿"); + if (expireTime - currentTime <= SECOND_MINUTE_TEN*1000) { + log.info("涓嶈冻浜屽崄鍒嗛挓锛屽埛鏂拌繃鏈熸椂闂�"); refreshToken(user); } } @@ -164,7 +195,7 @@ public class AuthTokenServiceImpl implements IAuthTokenService { */ public void refreshToken(IUser user) { //user.setLoginTime(System.currentTimeMillis()); - user.setExpireTime(user.getLoginTime() == null ? System.currentTimeMillis() : user.getLoginTime() + expireTime * SECOND_MINUTE); + user.setExpireTime(user.getLoginTime() == null ? System.currentTimeMillis() : user.getLoginTime() + expireTime * SECOND_MINUTE*1000); // 鏍规嵁uuid灏唘ser缂撳瓨 String userKey = getTokenKey(user.getToken()); //璁剧疆鏈夋晥鏃堕棿 鍗曚綅绉� @@ -182,9 +213,8 @@ public class AuthTokenServiceImpl implements IAuthTokenService { String token = Jwts.builder() .setExpiration(DateUtils.addCurrDate(7)) .setClaims(claims) - .signWith(SignatureAlgorithm.HS256, Base64.encode(secret.getBytes())).compact(); - - + .signWith(SignatureAlgorithm.HS256, Base64.getEncoder() + .encodeToString(secret.getBytes())).compact(); return token; } @@ -197,7 +227,7 @@ public class AuthTokenServiceImpl implements IAuthTokenService { @Override public Claims parseToken(String token) { return Jwts.parser() - .setSigningKey(Base64.encode(secret.getBytes())) + .setSigningKey(Base64.getEncoder().encodeToString(secret.getBytes())) .parseClaimsJws(token) .getBody(); } @@ -232,4 +262,11 @@ public class AuthTokenServiceImpl implements IAuthTokenService { private String getTokenKey(String uuid) { return SysConstains.LOGIN_TOKEN_KEY + uuid; } + + + public static void main(String[] args) { + // boolean signed = Jwts.parser().isSigned("123"); + boolean signed = Jwts.parser().isSigned("eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJuaW5naGFvLm5ldCIsImV4cCI6IjE0Mzg5NTU0NDUiLCJuYW1lIjoid2FuZ2hhbyIsImFkbWluIjp0cnVlfQ.SwyHTEx_RQppr97g4J5lKXtabJecpejuef8AqKYMAJc"); + System.out.println(signed); + } } diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/login/web/StandaloneLoginController.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/login/web/StandaloneLoginController.java index 96134db6d05597b3f65baa546fa6109f656d3e95..61e318d08aa66c8a530d1a8738287367c988eb17 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/login/web/StandaloneLoginController.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/login/web/StandaloneLoginController.java @@ -74,7 +74,7 @@ public class StandaloneLoginController extends BaseCRUDJsonBodyMappingController try { loginForm.validate(); - userEntity = userService.doLogin(loginName, password, ip); + //userEntity = userService.doLogin(loginName, password, ip); userEntity.setLastLoginAddress(ip); recordSysLog(request, userEntity, "鐢ㄦ埛鐧诲綍绯荤粺鎴愬姛!"); diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/resource/dao/ibatis/ResourceDaoImpl.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/resource/dao/ibatis/ResourceDaoImpl.java index ea1abb2f230349f01cf8643ac1a4125a7d6abea8..b7df2d1c3c2238033b309a49af7451475e8adcc4 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/resource/dao/ibatis/ResourceDaoImpl.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/resource/dao/ibatis/ResourceDaoImpl.java @@ -8,7 +8,6 @@ import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; import com.mortals.framework.model.ParamDto; import com.mortals.xhx.base.system.resource.dao.ResourceDao; import com.mortals.xhx.base.system.resource.model.ResourceEntity; - import org.springframework.stereotype.Repository; import java.util.HashMap; diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/resource/model/ResourceEntity.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/resource/model/ResourceEntity.java index 5c42586d34eb06c0cc99b07e17280038c86e86be..8ae450b7d91d59c86085ae1f55ca84ab328a5c30 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/resource/model/ResourceEntity.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/resource/model/ResourceEntity.java @@ -8,10 +8,10 @@ package com.mortals.xhx.base.system.resource.model; -import java.util.Date; - import com.mortals.framework.model.BaseEntityLong; +import java.util.Date; + /** * <p>Title: 璧勬簮淇℃伅</p> * <p>Description: ResourceEntity </p> diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/resource/service/impl/ResourceServiceImpl.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/resource/service/impl/ResourceServiceImpl.java index eb1615990dac4d3267236c76c5a95d4325d6e953..15c6d9e7fdc76b8a84a84fc97f124de5c5d04687 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/resource/service/impl/ResourceServiceImpl.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/resource/service/impl/ResourceServiceImpl.java @@ -15,7 +15,6 @@ import com.mortals.xhx.base.system.resource.dao.ResourceDao; import com.mortals.xhx.base.system.resource.model.ResourceEntity; import com.mortals.xhx.base.system.resource.model.ResourceQuery; import com.mortals.xhx.base.system.resource.service.ResourceService; - import org.springframework.stereotype.Service; import java.util.HashSet; diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/resource/web/ResourceController.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/resource/web/ResourceController.java index 1958f87926dec3d3200b2ab80387888707fbbb90..c75ef9606437b03ee9b3073d14f3c660256e48ff 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/resource/web/ResourceController.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/resource/web/ResourceController.java @@ -1,27 +1,22 @@ package com.mortals.xhx.base.system.resource.web; -import java.util.HashMap; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import com.alibaba.fastjson.JSONObject; import com.mortals.framework.common.IBaseEnum; import com.mortals.framework.common.code.UserType; +import com.mortals.framework.model.Context; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; +import com.mortals.xhx.base.system.resource.model.ResourceEntity; +import com.mortals.xhx.base.system.resource.service.ResourceService; +import com.mortals.xhx.common.code.AuthType; +import com.mortals.xhx.common.code.SourceType; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.alibaba.fastjson.JSONObject; -import com.mortals.framework.model.Context; -import com.mortals.framework.web.BaseCRUDJsonMappingController; -import com.mortals.xhx.base.system.resource.model.ResourceEntity; -import com.mortals.xhx.base.system.resource.service.ResourceService; -import com.mortals.xhx.common.code.AuthType; -import com.mortals.xhx.common.code.SourceType; +import java.util.HashMap; +import java.util.Map; /** * 璧勬簮淇℃伅 diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/dao/ibatis/RoleAuthDaoImpl.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/dao/ibatis/RoleAuthDaoImpl.java index e49065f0420f549bf35b44e1fdd246475400337b..899e2787e1534a47b4535294ccbb80937d2178a4 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/dao/ibatis/RoleAuthDaoImpl.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/dao/ibatis/RoleAuthDaoImpl.java @@ -11,7 +11,6 @@ package com.mortals.xhx.base.system.role.dao.ibatis; import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; import com.mortals.xhx.base.system.role.dao.RoleAuthDao; import com.mortals.xhx.base.system.role.model.RoleAuthEntity; - import org.springframework.stereotype.Repository; /** diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/dao/ibatis/RoleDaoImpl.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/dao/ibatis/RoleDaoImpl.java index d80bc5003092f51e316b643fed6c8f94f5fc4701..34483bcd03b07b0af04240fcbd5c827495d1432c 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/dao/ibatis/RoleDaoImpl.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/dao/ibatis/RoleDaoImpl.java @@ -11,7 +11,6 @@ package com.mortals.xhx.base.system.role.dao.ibatis; import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; import com.mortals.xhx.base.system.role.dao.RoleDao; import com.mortals.xhx.base.system.role.model.RoleEntity; - import org.springframework.stereotype.Repository; /** diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/dao/ibatis/RoleUserDaoImpl.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/dao/ibatis/RoleUserDaoImpl.java index 811745b5db4806fa4bc1a25bbb4919ebcd52b0e0..dea1aca59a94d781c7fba06151b047fae376534a 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/dao/ibatis/RoleUserDaoImpl.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/dao/ibatis/RoleUserDaoImpl.java @@ -11,7 +11,6 @@ package com.mortals.xhx.base.system.role.dao.ibatis; import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; import com.mortals.xhx.base.system.role.dao.RoleUserDao; import com.mortals.xhx.base.system.role.model.RoleUserEntity; - import org.springframework.stereotype.Repository; /** diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/model/RoleEntity.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/model/RoleEntity.java index 8bea5f13bc1444cb8d0e7fa9573f3fa8e72a1837..5ed0f2c136ec02ec608b95044debe7b6d2a9540e 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/model/RoleEntity.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/model/RoleEntity.java @@ -8,10 +8,10 @@ package com.mortals.xhx.base.system.role.model; -import java.util.Date; - import com.mortals.framework.model.BaseEntityLong; +import java.util.Date; + /** * <p>Title: 瑙掕壊淇℃伅</p> * <p>Description: RoleEntity </p> @@ -22,11 +22,7 @@ import com.mortals.framework.model.BaseEntityLong; */ public class RoleEntity extends BaseEntityLong{ private static final long serialVersionUID = 1547777703344L; - - - /** 鐢ㄦ埛ID */ - private Long userId; - + /** 瑙掕壊鍚嶇О */ private String name; diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/service/impl/RoleAuthServiceImpl.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/service/impl/RoleAuthServiceImpl.java index 8beaea0d99a98569f8d23fd78fddf465e8f41863..55cc76f1728d385cdf3e5d0971d7c3ed6a9590a8 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/service/impl/RoleAuthServiceImpl.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/service/impl/RoleAuthServiceImpl.java @@ -1,37 +1,44 @@ /** -* 鏂囦欢锛歊oleAuthServiceImpl.java -* 鐗堟湰锛�1.0.0 -* 鏃ユ湡锛� -* Copyright ® -* All right reserved. -*/ + * 鏂囦欢锛歊oleAuthServiceImpl.java + * 鐗堟湰锛�1.0.0 + * 鏃ユ湡锛� + * Copyright ® + * All right reserved. + */ package com.mortals.xhx.base.system.role.service.impl; +import com.mortals.framework.service.ICacheService; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; +import com.mortals.framework.util.DataUtil; +import com.mortals.xhx.base.system.resource.service.ResourceService; import com.mortals.xhx.base.system.role.dao.RoleAuthDao; import com.mortals.xhx.base.system.role.model.RoleAuthEntity; import com.mortals.xhx.base.system.role.model.RoleAuthQuery; import com.mortals.xhx.base.system.role.service.RoleAuthService; - +import com.mortals.xhx.common.key.RedisKey; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; + +import static com.mortals.xhx.common.utils.MenuEncodeUtil.generateMenuUrlCode; /** * <p>Title: 瑙掕壊璧勬簮鏉冮檺</p> * <p>Description: RoleAuthServiceImpl service鎺ュ彛 </p> * <p>Copyright: Copyright ® </p> * <p>Company: </p> - * @author + * @author * @version 1.0.0 */ @Service("roleAuthService") -public class RoleAuthServiceImpl extends AbstractCRUDServiceImpl<RoleAuthDao,RoleAuthEntity,Long> implements RoleAuthService { +public class RoleAuthServiceImpl extends AbstractCRUDServiceImpl<RoleAuthDao, RoleAuthEntity, Long> implements RoleAuthService { + @Autowired + private ICacheService cacheService; + @Autowired + private ResourceService resourceService; @Override public void doDistributionSource(RoleAuthQuery query) { @@ -49,6 +56,18 @@ public class RoleAuthServiceImpl extends AbstractCRUDServiceImpl<RoleAuthDao,Rol list.add(entity); } this.dao.insertBatch(list); + + this.updateUserMenuUrlCache(); } - + + private void updateUserMenuUrlCache() { + //鏇存柊鐢ㄦ埛鑿滃崟 + Set<String> hkeys = cacheService.hkeys(RedisKey.KEY_USER_MENU_CACHE); + for (String userId : hkeys) { + Set<String> urls = resourceService.findUrlSetByUserId(DataUtil.converStr2Long(userId, 0L)); + String menuUrlCode = generateMenuUrlCode(urls); + cacheService.hset(RedisKey.KEY_USER_MENU_CACHE, userId, menuUrlCode); + } + } + } \ No newline at end of file diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/service/impl/RoleServiceImpl.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/service/impl/RoleServiceImpl.java index 36c6c9a088f149ec4c1602005f132fb050531342..29028b8a1cc707939b570cac5cd6f7dd6179b8ba 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/service/impl/RoleServiceImpl.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/service/impl/RoleServiceImpl.java @@ -1,10 +1,10 @@ /** -* 鏂囦欢锛歊oleServiceImpl.java -* 鐗堟湰锛�1.0.0 -* 鏃ユ湡锛� -* Copyright ® -* All right reserved. -*/ + * 鏂囦欢锛歊oleServiceImpl.java + * 鐗堟湰锛�1.0.0 + * 鏃ユ湡锛� + * Copyright ® + * All right reserved. + */ package com.mortals.xhx.base.system.role.service.impl; @@ -15,7 +15,6 @@ import com.mortals.xhx.base.system.role.dao.RoleDao; import com.mortals.xhx.base.system.role.model.*; import com.mortals.xhx.base.system.role.service.RoleAuthService; import com.mortals.xhx.base.system.role.service.RoleService; - import com.mortals.xhx.base.system.role.service.RoleUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -27,7 +26,7 @@ import java.util.Arrays; * <p>Description: RoleServiceImpl service鎺ュ彛 </p> * <p>Copyright: Copyright ® </p> * <p>Company: </p> - * @author + * @author * @version 1.0.0 */ @Service("roleService") @@ -56,5 +55,5 @@ public class RoleServiceImpl extends AbstractCRUDServiceImpl<RoleDao,RoleEntity, }).count(); super.removeAfter(ids, context, result); } - + } \ No newline at end of file diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/service/impl/RoleUserServiceImpl.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/service/impl/RoleUserServiceImpl.java index 8251b7c55d3632f3a2902fcacc74693f947a8d09..a8a9abefb3827e203d5b273ccfa2bb8f4ee29673 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/service/impl/RoleUserServiceImpl.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/service/impl/RoleUserServiceImpl.java @@ -1,37 +1,47 @@ /** -* 鏂囦欢锛歊oleUserServiceImpl.java -* 鐗堟湰锛�1.0.0 -* 鏃ユ湡锛� -* Copyright ® -* All right reserved. -*/ + * 鏂囦欢锛歊oleUserServiceImpl.java + * 鐗堟湰锛�1.0.0 + * 鏃ユ湡锛� + * Copyright ® + * All right reserved. + */ package com.mortals.xhx.base.system.role.service.impl; +import com.mortals.framework.exception.AppException; +import com.mortals.framework.model.Context; +import com.mortals.framework.service.ICacheService; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; +import com.mortals.framework.util.DataUtil; +import com.mortals.xhx.base.system.resource.service.ResourceService; import com.mortals.xhx.base.system.role.dao.RoleUserDao; import com.mortals.xhx.base.system.role.model.RoleUserEntity; import com.mortals.xhx.base.system.role.model.RoleUserQuery; import com.mortals.xhx.base.system.role.service.RoleUserService; - +import com.mortals.xhx.common.key.RedisKey; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; + +import static com.mortals.xhx.common.utils.MenuEncodeUtil.generateMenuUrlCode; /** * <p>Title: 瑙掕壊鐢ㄦ埛</p> * <p>Description: RoleUserServiceImpl service鎺ュ彛 </p> * <p>Copyright: Copyright ® </p> * <p>Company: </p> - * @author + * @author * @version 1.0.0 */ @Service("roleUserService") -public class RoleUserServiceImpl extends AbstractCRUDServiceImpl<RoleUserDao,RoleUserEntity,Long> implements RoleUserService { +public class RoleUserServiceImpl extends AbstractCRUDServiceImpl<RoleUserDao, RoleUserEntity, Long> implements RoleUserService { + + @Autowired + private ICacheService cacheService; + @Autowired + private ResourceService resourceService; @Override public void doDistributionUser(RoleUserQuery query) { @@ -50,6 +60,7 @@ public class RoleUserServiceImpl extends AbstractCRUDServiceImpl<RoleUserDao,Rol list.add(rolseUser); } this.dao.insertBatch(list); + updateUserMenuUrlCache(); } @Override @@ -68,8 +79,22 @@ public class RoleUserServiceImpl extends AbstractCRUDServiceImpl<RoleUserDao,Rol list.add(rolseUser); } this.dao.insertBatch(list); + updateUserMenuUrlCache(); } + @Override + protected void removeAfter(Long[] ids, Context context, int result) throws AppException { + updateUserMenuUrlCache(); + } + private void updateUserMenuUrlCache() { + //鏇存柊鐢ㄦ埛鑿滃崟 + Set<String> hkeys = cacheService.hkeys(RedisKey.KEY_USER_MENU_CACHE); + for (String userId : hkeys) { + Set<String> urls = resourceService.findUrlSetByUserId(DataUtil.converStr2Long(userId, 0L)); + String menuUrlCode = generateMenuUrlCode(urls); + cacheService.hset(RedisKey.KEY_USER_MENU_CACHE, userId, menuUrlCode); + } + } } \ No newline at end of file diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/web/RoleAuthController.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/web/RoleAuthController.java index 5e43a945fb5f8bae4f6ffa1d7f74357323580a59..a983f7c2fbc480f7a6304e591dcbe2081059a443 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/web/RoleAuthController.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/web/RoleAuthController.java @@ -3,20 +3,15 @@ package com.mortals.xhx.base.system.role.web; import com.alibaba.fastjson.JSONObject; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; +import com.mortals.xhx.base.system.role.model.RoleAuthEntity; import com.mortals.xhx.base.system.role.model.RoleAuthQuery; +import com.mortals.xhx.base.system.role.service.RoleAuthService; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.mortals.framework.web.BaseCRUDJsonMappingController; -import com.mortals.xhx.base.system.role.model.RoleAuthEntity; -import com.mortals.xhx.base.system.role.service.RoleAuthService; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - /** * 瑙掕壊璧勬簮鏉冮檺 * diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/web/RoleController.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/web/RoleController.java index 1c3aadfd75ca02f74d2561d2f9bcd4cd3af4f995..f491e678b00e3a11efe463778aa9b443167619fc 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/web/RoleController.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/web/RoleController.java @@ -5,21 +5,18 @@ import com.alibaba.fastjson.JSONObject; import com.mortals.framework.common.IBaseEnum; import com.mortals.framework.common.code.UserType; import com.mortals.framework.model.Context; - import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; -import com.mortals.framework.web.BasePhpCRUDJsonMappingController; -import com.mortals.xhx.base.system.role.model.RoleQuery; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import com.mortals.framework.web.BaseCRUDJsonMappingController; import com.mortals.xhx.base.system.role.model.RoleEntity; import com.mortals.xhx.base.system.role.model.RoleUserEntity; import com.mortals.xhx.base.system.role.service.RoleService; import com.mortals.xhx.base.system.role.service.RoleUserService; import com.mortals.xhx.common.code.RoleType; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.HashMap; import java.util.List; diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/web/RoleUserController.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/web/RoleUserController.java index 39e025008240b32efdb7637cd8dff6abef56e5bf..63feafc8d7134265b39c87306f3e78a461002f73 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/web/RoleUserController.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/role/web/RoleUserController.java @@ -7,26 +7,22 @@ import com.mortals.framework.ap.SysConstains; import com.mortals.framework.exception.AppException; import com.mortals.framework.model.BaseEntityLong; import com.mortals.framework.model.Context; - import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; -import com.mortals.xhx.base.system.role.model.RoleUserQuery; -import org.apache.commons.beanutils.MethodUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.mortals.framework.web.BaseCRUDJsonMappingController; import com.mortals.xhx.base.system.role.model.RoleEntity; import com.mortals.xhx.base.system.role.model.RoleUserEntity; +import com.mortals.xhx.base.system.role.model.RoleUserQuery; import com.mortals.xhx.base.system.role.service.RoleService; import com.mortals.xhx.base.system.role.service.RoleUserService; import com.mortals.xhx.base.system.user.model.UserEntity; import com.mortals.xhx.base.system.user.model.UserQuery; import com.mortals.xhx.base.system.user.service.UserService; +import org.apache.commons.beanutils.MethodUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/dao/ibatis/UserDaoImpl.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/dao/ibatis/UserDaoImpl.java index 9980470d15f7461aa956ece75e5d98338786b51c..e1f809d42f680d7ccaf21a0209cfc1fcb9f2fa60 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/dao/ibatis/UserDaoImpl.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/dao/ibatis/UserDaoImpl.java @@ -8,11 +8,10 @@ package com.mortals.xhx.base.system.user.dao.ibatis; -import com.mortals.xhx.base.system.user.dao.UserDao; -import com.mortals.xhx.base.system.user.model.UserEntity; import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis; import com.mortals.framework.model.ParamDto; - +import com.mortals.xhx.base.system.user.dao.UserDao; +import com.mortals.xhx.base.system.user.model.UserEntity; import org.springframework.stereotype.Repository; import java.util.List; diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/model/UserEntity.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/model/UserEntity.java index 4c3278cfcaaa3b5606c9ed62656e7309665f5699..20f30ab91cacf06f7a8e70e1d98983fd7df4453e 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/model/UserEntity.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/model/UserEntity.java @@ -131,8 +131,7 @@ public class UserEntity extends UserVo implements IUser { @Override public boolean isAdmin() { - // return super.getId() == null ? false : super.getId().longValue() == SysConstains.ADMIN_ID; - return true; + return super.getId() == null ? false : super.getId().longValue() == SysConstains.ADMIN_ID; } @Override diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/model/UserEntityExt.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/model/UserEntityExt.java deleted file mode 100644 index 204419c46c09c8a2bcf7fa7440d176673fde6b9b..0000000000000000000000000000000000000000 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/model/UserEntityExt.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.mortals.xhx.base.system.user.model; - -import com.mortals.framework.model.BaseEntityLong; -import lombok.Data; - -import java.util.List; - -/** - * Description:User - * date: 2021-9-26 16:11:48 - */ -@Data -public class UserEntityExt extends BaseEntityLong { - /** - * 绔欑偣鍚嶇О - */ - private String siteName; - - private String roleIds; - /** - * 鍞竴鏍囪瘑 - */ - private String token; - /** - * 鑿滃崟鏍� - */ - private String menuUrl; - - /** - * 鐧诲綍鏃堕棿 - */ - private Long loginTime; - - /** - * 杩囨湡鏃堕棿 - */ - private Long expireTime; - - - - -} \ No newline at end of file diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/model/UserQuery.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/model/UserQuery.java index e8d58eec6228ef0f2916fe32ac87f9c94e2da1a9..0b76d804f0487404636a1117ca4f436ebcc46cb1 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/model/UserQuery.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/model/UserQuery.java @@ -1,7 +1,6 @@ package com.mortals.xhx.base.system.user.model; -import java.util.Date; import java.util.List; /** * 鐢ㄦ埛淇℃伅涓氬姟鏌ヨ瀵硅薄 diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/model/vo/UserVo.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/model/vo/UserVo.java index aae3f6758b2fca1af21230de5f16dd0c495fdf8b..ed02779044f07d409862f86e88013c02fdecebbd 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/model/vo/UserVo.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/model/vo/UserVo.java @@ -4,9 +4,6 @@ package com.mortals.xhx.base.system.user.model.vo; import com.mortals.framework.model.BaseEntityLong; import lombok.Data; -import java.util.ArrayList; -import java.util.List; - /** * 鐢ㄦ埛淇℃伅涓氬姟瑙嗗浘瀵硅薄 * @@ -15,6 +12,7 @@ import java.util.List; */ @Data public class UserVo extends BaseEntityLong { + /** * 绔欑偣鍚嶇О */ @@ -39,4 +37,8 @@ public class UserVo extends BaseEntityLong { * 杩囨湡鏃堕棿 */ private Long expireTime; + + private String oldPassword; + private String newPassword; + private String siteIds; } \ No newline at end of file diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/service/UserService.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/service/UserService.java index 741268692c12c00895ba1c6dce9a146e44ce24c8..f7e502d99cdc8007a023be5f7696dff4420565a1 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/service/UserService.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/service/UserService.java @@ -8,9 +8,9 @@ package com.mortals.xhx.base.system.user.service; +import com.mortals.framework.common.Rest; import com.mortals.framework.exception.AppException; -import com.mortals.framework.model.Result; -import com.mortals.framework.service.ICRUDService; +import com.mortals.framework.service.ICRUDCacheService; import com.mortals.framework.service.IUser; import com.mortals.xhx.base.system.menu.model.MenuEntity; import com.mortals.xhx.base.system.user.dao.UserDao; @@ -28,17 +28,9 @@ import java.util.Set; * @version 1.0.0 */ -public interface UserService extends ICRUDService<UserEntity,Long> { - /** - * 鐢ㄦ埛鐧诲綍 - * - * @param loginName 鐧诲綍鐢ㄦ埛鍚� - * @param password 鐧诲綍瀵嗙爜 - * @param loginIp 鐧诲綍IP - * @return - * @throws AppException - */ - UserEntity doLogin(String loginName, String password, String loginIp) throws AppException; +public interface UserService extends ICRUDCacheService<UserEntity,Long> { + + /** * 鏍¢獙鐢ㄦ埛鍚嶄笌瀵嗙爜鏄惁姝g‘ @@ -48,16 +40,7 @@ public interface UserService extends ICRUDService<UserEntity,Long> { * @return * @throws AppException */ - UserEntity doCheckUser(String loginName, String password) throws AppException; - - /** - * 妫€鏌ョ敤鎴锋槸鍚﹀瓨鍦� - * - * @param loginName 鐧诲綍鐢ㄦ埛鍚� - * @param userId 瀵嗙爜 - * @return - */ - boolean existUser(String loginName, Long userId) throws AppException; + UserEntity doCheckUser(String loginName, String password) throws AppException; /** * 閫氳繃鐧诲綍鐢ㄦ埛鑾峰彇鑿滃崟鍔熻兘鏉冮檺 @@ -73,49 +56,10 @@ public interface UserService extends ICRUDService<UserEntity,Long> { * @param userEntity * @return */ - Set<Long> findAllAuthIds(UserEntity userEntity) throws AppException; - - /** - * 鏌ヨ鐢ㄦ埛璁板綍 - * - * @param platformId - * @param params - * @param currPage - * @param prePageResult - * @return - * @throws AppException - */ - Result<UserEntity> find(Long platformId, UserEntity params, int currPage, int prePageResult) throws AppException; - - /** - * 涓哄鎴峰垱寤虹敤鎴� - * - * @param currUser 褰撳墠鐢ㄦ埛 - * @param customerId 瀹㈡埛ID - * @param customerName 瀹㈡埛鍚嶇О - * @param loginName - * @param password - * @param userName - * @param mobile - * @return - * @throws AppException - */ - UserEntity createUser(IUser currUser, Long customerId, String customerName, String loginName, String password, - String userName, String mobile) throws AppException; - - /** - * 鐢ㄦ埛淇敼瀵嗙爜 - * - * @param loginName - * @param oldPwd - * @param newPwd - * @return - * @throws AppException - */ - boolean updateUserPwd(String loginName, String oldPwd, String newPwd) throws AppException; - + Set<Long> findAllAuthIds(UserEntity userEntity) throws AppException; + Rest<Void> refreshUser(); - UserDao getUserDao(); + UserDao getUserDao(); } \ No newline at end of file diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/service/impl/UserServiceImpl.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/service/impl/UserServiceImpl.java index cc0cf32509c85d23a759937c6b82cc7a7aa53129..5f9140bdb4dc9a57a7111f6879beddf5fe3cdc9c 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/service/impl/UserServiceImpl.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/service/impl/UserServiceImpl.java @@ -9,13 +9,12 @@ package com.mortals.xhx.base.system.user.service.impl; import com.mortals.framework.ap.SysConstains; -import com.mortals.framework.common.code.UserType; +import com.mortals.framework.common.Rest; import com.mortals.framework.exception.AppException; import com.mortals.framework.model.Context; import com.mortals.framework.model.PageInfo; -import com.mortals.framework.model.Result; import com.mortals.framework.service.IUser; -import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; +import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl; import com.mortals.framework.util.SecurityUtil; import com.mortals.framework.util.StringUtils; import com.mortals.xhx.base.system.menu.model.MenuEntity; @@ -24,14 +23,17 @@ import com.mortals.xhx.base.system.resource.model.ResourceEntity; import com.mortals.xhx.base.system.resource.service.ResourceService; import com.mortals.xhx.base.system.role.model.RoleUserEntity; import com.mortals.xhx.base.system.role.model.RoleUserQuery; -import com.mortals.xhx.base.system.role.service.RoleService; import com.mortals.xhx.base.system.role.service.RoleUserService; import com.mortals.xhx.base.system.user.dao.UserDao; import com.mortals.xhx.base.system.user.model.UserEntity; import com.mortals.xhx.base.system.user.model.UserQuery; import com.mortals.xhx.base.system.user.service.UserService; - - +import com.mortals.xhx.common.code.YesNoEnum; +import com.mortals.xhx.common.pdu.RespData; +import com.mortals.xhx.common.pdu.user.UserPdu; +import com.mortals.xhx.feign.user.IUserFeign; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; @@ -49,69 +51,66 @@ import java.util.stream.Collectors; * @version 1.0.0 */ @Service("userService") -public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity, Long> implements UserService { +@Slf4j +public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserEntity, Long> implements UserService { @Autowired private MenuService menuService; @Autowired private ResourceService resourceService; - @Autowired - private RoleService roleService; + @Autowired private RoleUserService roleUserService; - private void doHandlerUser(UserEntity entity) throws AppException { - if (StringUtils.isNotEmpty(entity.getLoginPwd())) { - try { - entity.setLoginPwd(SecurityUtil.md5DoubleEncoding(entity.getLoginPwd())); - } catch (Exception e) { - throw new AppException("瀵嗙爜杞崲寮傚父"); - } - } else { - entity.setLoginPwd(null); - } - } + @Autowired + private IUserFeign userFeign; @Override - protected void saveBefore(UserEntity entity, Context context) throws AppException { - if (!ObjectUtils.isEmpty(entity.getLoginName()) && existUser(entity.getLoginName(), entity.getId())) { - throw new AppException("鐧诲綍鍚嶅凡瀛樺湪锛�"); - } - this.doHandlerUser(entity); - + protected String getExtKey(UserEntity data) { + return data.getLoginName(); } + @Override - protected void updateBefore(UserEntity entity, Context context) throws AppException { -// if (entity.getId().longValue() == SysConstains.ADMIN_ID && !context.getUser().isAdmin()) { -// throw new AppException("浣犳病鏈夋潈闄愭墽琛岃鎿嶄綔"); -// } + public UserEntity doCheckUser(String loginName, String password) throws AppException { - //鏇存柊涓嶆洿鏂板瘑鐮佸瓧娈� - entity.setLoginPwd(null); - this.doHandlerUser(entity); - //鏇存柊瑙掕壊 - if(entity.getId().longValue() != SysConstains.ADMIN_ID &&!ObjectUtils.isEmpty(entity.getRoleIds())){ - RoleUserQuery roleUserQuery = new RoleUserQuery(); - roleUserQuery.setUserId(entity.getId()); - List<Long> idList = Arrays.asList(entity.getRoleIds().split(",")).stream().map(Long::parseLong).collect(Collectors.toList()); - roleUserQuery.setRoleIdList(idList); - roleUserService.doDistributionRole(roleUserQuery); + UserQuery params = new UserQuery(); + params.setLoginName(loginName); + UserEntity sysUser = this.selectOne(params); + if (sysUser == null || !sysUser.getLoginName().equals(loginName)) { + return null; } + try { + if (!sysUser.getLoginPwd().equals(SecurityUtil.md5DoubleEncoding(password))) { + return null; + } + } catch (Exception e) { + log.error("鏌ヨ鐢ㄦ埛寮傚父锛宭oginName:" + loginName, e); + return null; + } + return sysUser; } + @Override protected void saveAfter(UserEntity entity, Context context) throws AppException { - //鏇存柊瑙掕壊 - if(!ObjectUtils.isEmpty(entity.getId())&&entity.getId().longValue() != SysConstains.ADMIN_ID &&!ObjectUtils.isEmpty(entity.getRoleIds())){ + updateUserRole(entity); + } + + @Override + protected void updateAfter(UserEntity entity, Context context) throws AppException { + updateUserRole(entity); + } + + private void updateUserRole(UserEntity entity) { + if (!ObjectUtils.isEmpty(entity.getId()) && entity.getId().longValue() != SysConstains.ADMIN_ID && !ObjectUtils.isEmpty(entity.getRoleIds())) { RoleUserQuery roleUserQuery = new RoleUserQuery(); roleUserQuery.setUserId(entity.getId()); List<Long> idList = Arrays.asList(entity.getRoleIds().split(",")).stream().map(Long::parseLong).collect(Collectors.toList()); roleUserQuery.setRoleIdList(idList); roleUserService.doDistributionRole(roleUserQuery); } - super.saveAfter(entity, context); } @Override @@ -122,66 +121,8 @@ public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity String roleIds = roleUserService.find(roleUserQuery).stream().map(RoleUserEntity::getRoleId).map(String::valueOf).collect(Collectors.joining(",")); item.setRoleIds(roleIds); }).count(); - super.findAfter(params, pageInfo, context, list); - } - - @Override - protected UserEntity findBefore(UserEntity params, Context context) throws AppException { -// if (StringUtils.isNotEmpty(params.getDeptIds())) { -// params.setDeptIds(StringUtils.fillWithMark(params.getDeptIds(), ",")); -// } - return super.findBefore(params, context); - } - - @Override - protected UserEntity findBefore(UserEntity params, PageInfo pageInfo, Context context) throws AppException { -// if (StringUtils.isNotEmpty(params.getDeptIds())) { -// params.setDeptIds(StringUtils.fillWithMark(params.getDeptIds(), ",")); -// } - return super.findBefore(params, pageInfo, context); } - public UserEntity findByLoginName(String loginName) { - UserQuery params = new UserQuery(); - params.setLoginName(loginName); - List<UserEntity> userList = super.dao.getList(params); - if (userList != null && userList.size() > 0) { - return userList.get(0); - } - return null; - } - - @Override - public UserEntity doLogin(String loginName, String password, String loginIp) throws AppException { - UserEntity sysUser = this.findByLoginName(loginName); - if (sysUser == null || !sysUser.getLoginName().equals(loginName)) { - throw new AppException("鐢ㄦ埛鍚嶄笉瀛樺湪锛�"); - } - try { - if (!sysUser.getLoginPwd().equals(SecurityUtil.md5DoubleEncoding(password))) { - throw new AppException("鐧诲綍瀵嗙爜閿欒锛�"); - } - } catch (Exception e) { - throw new AppException("瀵嗙爜楠岃鍑洪敊锛�", e); - } - return sysUser; - } - - @Override - public UserEntity doCheckUser(String loginName, String password) throws AppException { - UserEntity sysUser = this.findByLoginName(loginName); - if (sysUser == null || !sysUser.getLoginName().equals(loginName)) { - return null; - } - try { - if (!sysUser.getLoginPwd().equals(SecurityUtil.md5DoubleEncoding(password))) { - return null; - } - } catch (Exception e) { - return null; - } - return sysUser; - } @Override public Set<Long> findAllAuthIds(UserEntity userEntity) throws AppException { @@ -207,7 +148,7 @@ public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity urls.addAll(StringUtils.converStr2Set(url)); } } - Set<Long> authIds = new HashSet<>(); + Set<Long> authIds = new HashSet<Long>(); Map<Long, MenuEntity> menuMap = new HashMap<Long, MenuEntity>(); List<MenuEntity> userModuleList = this.menuService.findAllEnable(); for (MenuEntity sysModule : userModuleList) { @@ -215,7 +156,6 @@ public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity continue; } menuMap.put(sysModule.getId(), sysModule); - if (!user.isAdmin() && urls.contains(StringUtils.trim(sysModule.getUrl()))) { authIds.add(sysModule.getId()); } @@ -250,86 +190,85 @@ public class UserServiceImpl extends AbstractCRUDServiceImpl<UserDao, UserEntity } @Override - public Result<UserEntity> find(Long platformId, UserEntity params, int currPage, int prePageResult) throws AppException { - PageInfo pageInfo = new PageInfo(prePageResult); - pageInfo.setCurrPage(currPage); - return super.find(params, pageInfo, null); - } + public Rest<Void> refreshUser() { + UserPdu userPdu = new UserPdu(); + userPdu.setPage(1); + userPdu.setSize(-1); + Rest<RespData<List<UserPdu>>> resp = userFeign.list(userPdu); + if (resp.getCode() == YesNoEnum.YES.getValue()) { + List<UserPdu> userPduList = resp.getData().getData(); + log.info("鐢ㄦ埛鎬绘暟閲忥細{}", userPduList.size()); + if (!ObjectUtils.isEmpty(userPduList)) { + List<UserEntity> newUserList = userPduList.stream().map(newUser -> { + UserEntity userEntity = new UserEntity(); + userEntity.initAttrValue(); + BeanUtils.copyProperties(newUser, userEntity, new String[]{"id", "lastLoginTime", "lastLoginAddress"}); + return userEntity; + }).collect(Collectors.toList()); - @Override - public UserEntity createUser(IUser currUser, Long customerId, String customerName, String loginName, String password, - String userName, String mobile) throws AppException { - try { - UserEntity entity = new UserEntity(); - entity.initAttrValue(); - entity.setLoginName(loginName); - entity.setRealName(userName); - entity.setLoginPwd(password); - entity.setMobile(mobile); - entity.setUserType(UserType.CUSTOMER.getValue()); - entity.setCreateTime(new Date()); - if (currUser != null) { - entity.setCreateUser(currUser.getLoginName()); - entity.setCreateUserName(currUser.getRealName()); - } - this.doHandlerUser(entity); - dao.insert(entity); - return entity; - } catch (Exception e) { - log.error("缁欏鎴峰垱寤虹敤鎴峰紓甯�-->customerId:" + customerId + ",customerName:" + customerName + ",loginName:" + loginName + - "-->鍘熷洜锛�" + e.getMessage()); - return null; - } - } + List<UserEntity> saveUpdateUserList = newUserList.parallelStream().map(item -> { + UserEntity extCache = this.getExtCache(item.getLoginName()); + if (ObjectUtils.isEmpty(extCache)) { + item.setCreateUserId(1L); + item.setCreateUserName("绯荤粺绠$悊鍛�"); + item.setCreateTime(new Date()); + return item; + } else { + //鏇存柊鐢ㄦ埛鍒楄〃 + item.setId(extCache.getId()); + item.setUpdateUserId(1L); + item.setUpdateUserName("绯荤粺绠$悊鍛�"); + item.setUpdateTime(new Date()); + return item; + } + }).collect(Collectors.toList()); + Map<Boolean, List<UserEntity>> saveUpdateCollect = saveUpdateUserList.stream().collect(Collectors.partitioningBy(x -> x.getId() == null)); + if (!ObjectUtils.isEmpty(saveUpdateCollect.get(true))) { + //闇€瑕佹柊澧炵殑鐢ㄦ埛 + log.info("闇€瑕佹柊澧炵敤鎴锋暟閲忥細{}", saveUpdateCollect.get(true).size()); + saveUpdateCollect.get(true).stream().forEach(item -> { + this.getUserDao().insert(item); + this.putCache(item.getId() == null ? "" : item.getId().toString(), item); + RoleUserQuery roleUserQuery = new RoleUserQuery(); + roleUserQuery.setUserId(item.getId()); + roleUserQuery.setRoleIdList(Arrays.asList(1L)); + roleUserService.doDistributionRole(roleUserQuery); + }); + } - @Override - public boolean existUser(String loginName, Long userId) throws AppException { - UserEntity sysUser = this.findByLoginName(loginName); - boolean bRet = false; - if (sysUser != null) { - if (userId == null || userId == 0 || userId.longValue() != sysUser.getId().longValue()) { - bRet = true; + if (!ObjectUtils.isEmpty(saveUpdateCollect.get(false))) { + //闇€瑕佹柊澧炵殑鐢ㄦ埛 + log.info("闇€瑕佹洿鏂扮敤鎴锋暟閲忥細{}", saveUpdateCollect.get(false).size()); + saveUpdateCollect.get(false).stream().forEach(item -> { + this.getUserDao().update(item); + this.putCache(item.getId() == null ? "" : item.getId().toString(), item); + }); + } + //宸泦鍒犻櫎 + Set<String> collectSet = newUserList.parallelStream().map(x -> x.getLoginName()).collect(Collectors.toSet()); + Long[] removeUserIds = this.getCacheList().parallelStream().filter(f -> !collectSet.contains(f.getLoginName())).map(i -> i.getId()).distinct().toArray(Long[]::new); + if (!ObjectUtils.isEmpty(removeUserIds)) { + log.info("闇€瑕佸垹闄ょ殑鏈湴鐢ㄦ埛鏁伴噺:{}", removeUserIds.length); + this.remove(removeUserIds, null); + } } + //鏌ユ壘鏂板 涓庢洿鏂� } - return bRet; + return Rest.ok(); } @Override - public boolean updateUserPwd(String loginName, String oldPwd, String newPwd) throws AppException { - UserEntity sysUser = this.findByLoginName(loginName); - if (sysUser == null || !sysUser.getLoginName().equals(loginName)) { - throw new AppException("甯愬彿閿欒锛�"); - } - try { - if (!sysUser.getLoginPwd().equals(SecurityUtil.md5DoubleEncoding(oldPwd))) { - throw new AppException("鍘熷瀵嗙爜閿欒锛�"); - } - } catch (Exception e) { - throw new AppException("瀵嗙爜楠岃鍑洪敊锛�", e); - } - try { - sysUser.setLoginPwd(SecurityUtil.md5DoubleEncoding(newPwd)); - } catch (Exception e) { - throw new AppException("瀵嗙爜杞崲寮傚父锛�", e); - } - dao.update(sysUser); - return true; + protected void removeAfter(Long[] ids, Context context, int result) throws AppException { + super.removeAfter(ids, context, result); + RoleUserQuery roleUserQuery = new RoleUserQuery(); + roleUserQuery.setUserIdList(Arrays.asList(ids)); + Long[] userIds = roleUserService.find(roleUserQuery).stream().map(RoleUserEntity::getId).toArray(Long[]::new); + roleUserService.remove(userIds, context); } - @Override - public UserDao getUserDao() { - return getDao(); - } @Override - protected void removeAfter(Long[] ids, Context context, int result) throws AppException { - Arrays.asList(ids).stream().peek(userId->{ - RoleUserQuery roleUserQuery = new RoleUserQuery(); - roleUserQuery.setUserId(userId); - Long[] userIds = roleUserService.find(roleUserQuery).stream().map(RoleUserEntity::getId).toArray(Long[]::new); - roleUserService.remove(userIds,context); - }).count(); - - super.removeAfter(ids, context, result); + public UserDao getUserDao() { + return this.getDao(); } } \ No newline at end of file diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/web/UserController.java b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/web/UserController.java index 13047fb246c73b2dae4f522efd57084cabe88e78..78c55acb21ea5b02bc4bdb3894dbfae5f479ce67 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/web/UserController.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/base/system/user/web/UserController.java @@ -1,44 +1,40 @@ +/** + * 鏂囦欢锛歎serController.java + * 鐗堟湰锛�1.0.0 + * 鏃ユ湡锛� + * Copyright ® + * All right reserved. + */ package com.mortals.xhx.base.system.user.web; -import com.alibaba.fastjson.JSONObject; +import com.mortals.framework.annotation.UnAuth; import com.mortals.framework.common.IBaseEnum; +import com.mortals.framework.common.Rest; import com.mortals.framework.common.code.UserType; -import com.mortals.framework.exception.AppException; import com.mortals.framework.model.Context; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; -import com.mortals.framework.web.BaseCRUDJsonMappingController; -import com.mortals.xhx.base.framework.annotation.Operlog; -import com.mortals.xhx.base.system.role.model.RoleQuery; -import com.mortals.xhx.base.system.role.model.RoleUserEntity; -import com.mortals.xhx.base.system.role.model.RoleUserQuery; +import com.mortals.xhx.base.system.role.model.RoleEntity; import com.mortals.xhx.base.system.role.service.RoleService; -import com.mortals.xhx.base.system.role.service.RoleUserService; import com.mortals.xhx.base.system.user.model.UserEntity; import com.mortals.xhx.base.system.user.service.UserService; import com.mortals.xhx.common.code.UserStatus; -import io.jsonwebtoken.Claims; -import io.jsonwebtoken.Jwts; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.util.ObjectUtils; -import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.Base64; -import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** - * 鐢ㄦ埛淇℃伅 - * - * @author: zxfei - * @date: 2022/5/7 15:42 + * <p>Title: 鐢ㄦ埛淇℃伅</p> + * <p>Description: UserController </p> + * <p>Copyright: Copyright ® </p> + * <p>Company: </p> + * @author + * @version 1.0.0 */ @RestController @RequestMapping("user") @@ -46,90 +42,28 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic @Autowired private RoleService roleService; - @Autowired - private RoleUserService roleUserService; - + public UserController() { super.setModuleDesc("鐢ㄦ埛淇℃伅"); } @Override protected void init(Map<String, Object> model, Context context) { + this.addDict(model,"userType", IBaseEnum.getEnumMap(UserType.class)); this.addDict(model,"status", UserStatus.getEnumMap()); - this.addDict(model, "roleIds", roleService.find(new RoleQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getName()))); - - } - - @Override - protected void doListBefore(UserEntity query, Map<String, Object> model, Context context) throws AppException { - if (!StringUtils.isEmpty(query.getRealName())) { - query.setRealName("%".concat(query.getRealName()).concat("%")); - } - if (!StringUtils.isEmpty(query.getLoginName())) { - query.setLoginName("%".concat(query.getLoginName()).concat("%")); - } - } - - - @Override - protected int editAfter(Long id, Map<String, Object> model, UserEntity entity, Context context) throws AppException { - RoleUserQuery roleUserQuery = new RoleUserQuery(); - roleUserQuery.setUserId(entity.getId()); - String roleIds = roleUserService.find(roleUserQuery).stream().map(RoleUserEntity::getRoleId).map(String::valueOf).collect(Collectors.joining(",")); - entity.setRoleIds(roleIds); - return super.editAfter(id, model, entity, context); + List<RoleEntity> roleList = roleService.find(new RoleEntity()); + this.addDict(model,"roleId", roleList.stream().collect(Collectors.toMap(e->e.getId().toString(), e->e.getName()))); + super.init(model, context); } - @Override - protected int saveAfter(UserEntity entity, Map<String, Object> model, Context context) throws AppException { - if (entity.getId() == getCurUser().getId()) { - // TODO: 2022/8/15 鏇存柊redis session淇℃伅 - //saveCurrUserForSession(request, response, userService.get(form.getEntity().getId(), false)); - } - return super.saveAfter(entity, model, context); - } - - -// @Override -// protected void saveBefore(UserEntity entity, Map<String, Object> model, Context context) throws AppException { -// if (!ObjectUtils.isEmpty(entity.getLoginName()) && service.existUser(entity.getLoginName(), entity.getId())) { -// throw new AppException("鐧诲綍鍚嶅凡瀛樺湪锛�"); -// } -// super.saveBefore(entity, model, context); -// } - - - @RequestMapping(value = "change/password", method = RequestMethod.POST) - @Operlog(msg = "瀵嗙爜淇敼鎴愬姛!") - public String changePassword(@RequestParam String oldPwd, @RequestParam String newPwd) { - JSONObject ret = new JSONObject(); - try { - service.updateUserPwd(super.getCurUser().getLoginName(), oldPwd, newPwd); - ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS); - ret.put(KEY_RESULT_MSG, "瀵嗙爜淇敼鎴愬姛锛�"); - } catch (Exception e) { - ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE); - ret.put(KEY_RESULT_MSG, super.convertException(e)); - } - return ret.toJSONString(); - } - - - public static void main(String[] args) { - - String token = "eyJhbGciOiJIUzI1NiJ9.eyJsb2dpbl91c2VyX2tleSI6IjIzNGE5NDA5ZDVhOTQ3MWNhMzdkYjZkYmMwY2JjZTc5In0.MWyQW40HYDxyUz7PJRf_nRsFPWx3Hr811Ime984nixs"; - String secret = "026db82420614469897fcc2dc1b4ce38"; - Claims claims = Jwts.parser() - .setSigningKey(Base64.getEncoder().encodeToString(secret.getBytes())) - .parseClaimsJws(token) - .getBody(); - - String uuid = (String) claims.get("login_user_key"); - - System.out.println(uuid); - + @PostMapping({"refreshUser"}) + @UnAuth + public Rest<Object> refreshUser() { + log.info("鍒锋柊鐢ㄦ埛"); + this.service.refreshUser(); + return Rest.ok("鐢ㄦ埛鍚屾鍒锋柊鎿嶄綔鎴愬姛"); } } \ No newline at end of file diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java b/smart-office-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java index 3320daefebde17948014859430e841731fdba1b7..b2e529a34401666a9e5cd4dbee8acd06c16bc6b5 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/common/key/RedisKey.java @@ -23,4 +23,6 @@ public class RedisKey { public static final String KEY_PRODUCT_CACHE = "productDict"; public static final String KEY_TOKEN_API_CACHE = "token:api:"; + + public static final String KEY_USER_MENU_CACHE = "user:menu"; } diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/common/utils/MenuEncodeUtil.java b/smart-office-manager/src/main/java/com/mortals/xhx/common/utils/MenuEncodeUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..9de4fc113650d8e44ba74848042ff3b59db7f4f8 --- /dev/null +++ b/smart-office-manager/src/main/java/com/mortals/xhx/common/utils/MenuEncodeUtil.java @@ -0,0 +1,30 @@ +package com.mortals.xhx.common.utils; + +import com.mortals.framework.ap.GlobalSysInfo; +import com.mortals.framework.ap.SysConstains; +import com.mortals.framework.util.AESUtil; +import lombok.extern.slf4j.Slf4j; + +import java.util.Set; + +@Slf4j +public class MenuEncodeUtil { + + public static String generateMenuUrlCode(Set<String> urls) { + try { + String securityKey = GlobalSysInfo.getPropertyValue(SysConstains.PROP_COOKIE_SECURITY_KEY); + StringBuilder sb = new StringBuilder(); + if (urls != null && urls.size() > 0) { + for (String url : urls) { + int index = url.hashCode() & (Integer.MAX_VALUE - 1); + sb.append(index).append(","); + } + } + String menuUrl = sb.toString(); + return AESUtil.encrypt(menuUrl, securityKey); + } catch (Throwable e) { + log.error("缂栫爜寮傚父",e); + return null; + } + } +} diff --git a/smart-office-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java b/smart-office-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java index 845f9c3c8dd73252a7ae8ddb645dc8831bfe708e..7bf52e983d8b86634a84d33b7a18e2c74fbc842e 100644 --- a/smart-office-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java +++ b/smart-office-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java @@ -37,7 +37,8 @@ public class SyncUserTaskImpl implements ITaskExcuteService { @Override public void excuteTask(ITask task) throws AppException { log.info("鍚屾鐢ㄦ埛浠诲姟"); - UserPdu userPdu = new UserPdu(); + userService.refreshUser(); + /* UserPdu userPdu = new UserPdu(); userPdu.setPage(1); userPdu.setSize(-1); Rest<RespData<List<UserPdu>>> resp = userFeign.list(userPdu); @@ -60,7 +61,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService { userService.getUserDao().update(userEntity); } }); - } + }*/ }