skjcmanager/skjcmanager-auth/pom.xml
@@ -69,6 +69,11 @@ <artifactId>skjcmanager-sm-api</artifactId> <version>3.0.1.RELEASE</version> </dependency> <dependency> <groupId>cn.gistack</groupId> <artifactId>skjcmanager-pwd-api</artifactId> <version>3.0.1.RELEASE</version> </dependency> <!--安全模块--> <dependency> <groupId>org.springframework.boot</groupId> skjcmanager/skjcmanager-common/src/main/java/cn/gistack/common/utils/Base64Utils.java
New file @@ -0,0 +1,30 @@ package cn.gistack.common.utils; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.util.Base64; public class Base64Utils { // 加密 public static String getBase64Encode(String str) { // String-->byte[] byte [] data = str.getBytes(StandardCharsets.UTF_8); // 编码(base64字符串) String base64Str = Base64.getEncoder().encodeToString(data); return base64Str; } /** * 对Base64字符串进行解码 * @param base64Str * @return */ public static String getBase64Decode(String base64Str) { // 解码 byte [] base64Data = Base64.getDecoder().decode(base64Str); // byte[]-->String(解码后的字符串) String str = new String(base64Data, StandardCharsets.UTF_8); return str; } } skjcmanager/skjcmanager-service-api/skjcmanager-user-api/src/main/java/cn/gistack/system/user/entity/User.java
@@ -92,5 +92,10 @@ */ private String postId; /**以下4个为加密字段**/ private String sm4iv; private String keyindexs; private String maced; private String encdata; } skjcmanager/skjcmanager-service-api/skjcmanager-user-api/src/main/java/cn/gistack/system/user/feign/IUserClient.java
@@ -55,6 +55,8 @@ String UPDATE_USER = API_PREFIX + "/upate-user"; String REMOVE_USER = API_PREFIX + "/remove-user"; String GET_ALL_USER_LIST = API_PREFIX+ "/get-all-user-list"; String ENCRYPT_USER = API_PREFIX + "/encrypt-user"; /** * 获取用户信息 * @@ -149,4 +151,10 @@ @GetMapping(GET_ALL_USER_LIST) R<List<User>> getAllUserList(); /** * 更新用户信息并加密 * @return */ @GetMapping(ENCRYPT_USER) String encryptUser(); } skjcmanager/skjcmanager-service-api/skjcmanager-user-api/src/main/java/cn/gistack/system/user/supo/UserSUPO.java
New file @@ -0,0 +1,22 @@ package cn.gistack.system.user.supo; import lombok.Data; /** * 用户加密类 */ @Data public class UserSUPO { /** * 手机号 */ private String phone; /** * 角色id */ private String roleId; /** * 部门id */ private String deptId; } skjcmanager/skjcmanager-service/skjcmanager-user/pom.xml
@@ -38,6 +38,11 @@ <artifactId>skjcmanager-system-api</artifactId> <version>3.0.1.RELEASE</version> </dependency> <dependency> <groupId>cn.gistack</groupId> <artifactId>skjcmanager-pwd-api</artifactId> <version>3.0.1.RELEASE</version> </dependency> </dependencies> <build> skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/feign/UserClient.java
@@ -110,4 +110,20 @@ return R.data(service.list()); } @GetMapping(ENCRYPT_USER) @Override public String encryptUser() { //查询所有用户 List<User> list = service.list(); int count = 0; for (User user : list){ boolean b = service.updateById(user); if (b){ count++; } } return "共:<span style='color:red'>"+ list.size() + "</span>名用户,成功加密:<span style='color:red'>"+ count + "</span>名用户"; } } skjcmanager/skjcmanager-service/skjcmanager-user/src/main/java/cn/gistack/system/user/service/impl/UserServiceImpl.java
@@ -17,6 +17,9 @@ package cn.gistack.system.user.service.impl; import cn.gistack.pwd.dto.CBCResultDTO; import cn.gistack.pwd.dto.ResultDTO; import cn.gistack.pwd.fegin.IPwdClient; import cn.gistack.system.cache.DictCache; import cn.gistack.system.cache.ParamCache; import cn.gistack.system.cache.SysCache; @@ -31,7 +34,9 @@ import cn.gistack.system.user.service.IUserDeptService; import cn.gistack.system.user.service.IUserOauthService; import cn.gistack.system.user.service.IUserService; import cn.gistack.system.user.supo.UserSUPO; import cn.gistack.system.user.vo.UserVO; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -76,6 +81,8 @@ private final ISysClient sysClient; private final BladeTenantProperties tenantProperties; private final IPwdClient pwdClient; @Override @Transactional(rollbackFor = Exception.class) public boolean submit(User user) { @@ -106,6 +113,44 @@ return save(user) && submitUserDept(user); } public Boolean encryptUserInfo(User user){ UserSUPO userSUPO = new UserSUPO(); userSUPO.setPhone(user.getPhone()); userSUPO.setRoleId(user.getRoleId()); userSUPO.setDeptId(user.getDeptId()); String message = JSONObject.toJSONString(userSUPO); R<CBCResultDTO> cbcRres = pwdClient.getCBCMacEncipher(message); if (cbcRres.getCode() != 200){ return false; } CBCResultDTO data = cbcRres.getData(); String keyIndex = data.getKeyIndex(); String maced = data.getMaced(); String sm4IV = data.getSm4IV(); user.setKeyindexs(keyIndex); user.setMaced(maced); user.setSm4iv(sm4IV); R<ResultDTO> encryptRes = pwdClient.getEncrypt(sm4IV, keyIndex, message); if (encryptRes.getCode() != 200){ return false; } user.setEncdata(encryptRes.getData().getData()); return true; } @Override public boolean save(User entity) { //对User进行加密 encryptUserInfo(entity); return super.save(entity); } @Override @Transactional(rollbackFor = Exception.class) public boolean updateUser(User user) { @@ -128,6 +173,14 @@ return updateById(user); } @Override public boolean updateById(User entity) { encryptUserInfo(entity); return super.updateById(entity); } private boolean submitUserDept(User user) { List<Long> deptIdList = Func.toLongList(user.getDeptId()); List<UserDept> userDeptList = new ArrayList<>(); skjcmanager/skjcmanager-service/skjcmanager-xxljob/pom.xml
@@ -58,6 +58,11 @@ <artifactId>skjcmanager-nky-api</artifactId> <version>3.0.1.RELEASE</version> </dependency> <dependency> <groupId>cn.gistack</groupId> <artifactId>skjcmanager-user-api</artifactId> <version>3.0.1.RELEASE</version> </dependency> </dependencies> <build> skjcmanager/skjcmanager-service/skjcmanager-xxljob/src/main/java/cn/gistack/job/executor/jobhandler/UserXxlJob.java
@@ -1,6 +1,7 @@ package cn.gistack.job.executor.jobhandler; import cn.gistack.sm.sjztmd.feign.IAttResManagePersonClient; import cn.gistack.system.user.feign.IUserClient; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.log.XxlJobLogger; @@ -19,6 +20,9 @@ @Autowired private IAttResManagePersonClient attResManagePersonClient; @Autowired private IUserClient userClient; /** * 用户同步调度器 * @return @@ -34,4 +38,18 @@ return ReturnT.SUCCESS; } /** * 用户同步调度器 * @return */ @XxlJob("encryptUserJobHandler") public ReturnT<String> encryptUser(String param) { XxlJobLogger.log("开始更新用户数据"); String message = userClient.encryptUser(); XxlJobLogger.log(message); XxlJobLogger.log("结束更新用户数据"); return ReturnT.SUCCESS; } }