diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java index e6ad9249..220dc960 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java @@ -4,7 +4,7 @@ import com.dreamchaser.depository_manage.entity.*; import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.pojo.*; import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; -import com.dreamchaser.depository_manage.security.pool.HandlesOtherfunctionalThreadPool; +import com.dreamchaser.depository_manage.security.pool.HandlesOtherFunctionalThreadPool; import com.dreamchaser.depository_manage.service.*; import com.dreamchaser.depository_manage.utils.*; import lombok.Data; @@ -142,13 +142,13 @@ public class DepositoryController { UserByPort userToken = AuthenticationTokenPool.getUserToken(token); if (map.containsKey("id")) { Integer id = ObjectFormatUtil.toInteger(map.get("id")); - HandlesOtherfunctionalThreadPool.execute(() -> RealDeleteSonDepository(id.toString(), userToken)); + HandlesOtherFunctionalThreadPool.execute(() -> RealDeleteSonDepository(id.toString(), userToken)); return CrudUtil.deleteHandle(depositoryService.deleteDepositoryRecordById(id), 1); } else if (map.containsKey("ids")) { List ids = (List) map.get("ids"); for (Integer integer : ids) { String id = integer.toString(); - HandlesOtherfunctionalThreadPool.execute(() -> RealDeleteSonDepository(id, userToken)); + HandlesOtherFunctionalThreadPool.execute(() -> RealDeleteSonDepository(id, userToken)); } return CrudUtil.deleteHandle(depositoryService.deleteDepositoryRecordByIds(ids), ids.size()); } else { @@ -225,14 +225,14 @@ public class DepositoryController { UserByPort userToken = AuthenticationTokenPool.getUserToken(token); if (map.containsKey("id")) { Integer id = ObjectFormatUtil.toInteger(map.get("id")); - HandlesOtherfunctionalThreadPool.execute(() -> UpdateSonState(id.toString(), 3, true, userToken)); + HandlesOtherFunctionalThreadPool.execute(() -> UpdateSonState(id.toString(), 3, true, userToken)); return CrudUtil.deleteHandle(depositoryService.changeStateToDeletedById(id), 1); } else if (map.containsKey("ids")) { List ids = (List) map.get("ids"); for (Integer integer : ids) { String id = integer.toString(); - HandlesOtherfunctionalThreadPool.execute(() -> UpdateSonState(id, 3, true, userToken)); + HandlesOtherFunctionalThreadPool.execute(() -> UpdateSonState(id, 3, true, userToken)); } return CrudUtil.deleteHandle(depositoryService.changeStateToDeletedByIds(ids), ids.size()); } else { @@ -279,10 +279,10 @@ public class DepositoryController { if (state == 2) { if (map.containsKey("envelop")) { // 封库 - HandlesOtherfunctionalThreadPool.execute(() -> UpdateSonState(id, state, true, userToken)); + HandlesOtherFunctionalThreadPool.execute(() -> UpdateSonState(id, state, true, userToken)); } else { // 禁用仓库 - HandlesOtherfunctionalThreadPool.execute(() -> UpdateSonState(id, state, false, userToken)); + HandlesOtherFunctionalThreadPool.execute(() -> UpdateSonState(id, state, false, userToken)); } } return CrudUtil.insertHandle(depositoryService.updateDepository(map), 1); diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java index d52ac7e9..4852295b 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/MaterialTypeController.java @@ -4,7 +4,7 @@ import com.dreamchaser.depository_manage.entity.MaterialType; import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.pojo.MaterialP; import com.dreamchaser.depository_manage.pojo.RestResponse; -import com.dreamchaser.depository_manage.security.pool.HandlesOtherfunctionalThreadPool; +import com.dreamchaser.depository_manage.security.pool.HandlesOtherFunctionalThreadPool; import com.dreamchaser.depository_manage.service.MaterialService; import com.dreamchaser.depository_manage.service.MaterialTypeService; import com.dreamchaser.depository_manage.utils.CrudUtil; @@ -34,7 +34,7 @@ public class MaterialTypeController { public RestResponse insertMaterialType(@RequestBody Map map){ Integer integer = materialTypeService.insertMaterialType(map); // 更新树结构 - HandlesOtherfunctionalThreadPool.execute(() -> { + HandlesOtherFunctionalThreadPool.execute(() -> { try { Thread.sleep(1000); } catch (InterruptedException e) { @@ -84,11 +84,11 @@ public class MaterialTypeController { if (map.containsKey("id")){ Integer id= ObjectFormatUtil.toInteger(map.get("id")); MaterialType materialTypeById = materialTypeService.findMaterialTypeById(id); - HandlesOtherfunctionalThreadPool.execute(() -> RealDeleteSonDepository(materialTypeById.getOldId().toString())); + HandlesOtherFunctionalThreadPool.execute(() -> RealDeleteSonDepository(materialTypeById.getOldId().toString())); Integer integer = materialTypeService.deleteMaterialTypeById(id); - HandlesOtherfunctionalThreadPool.execute(() -> { + HandlesOtherFunctionalThreadPool.execute(() -> { try { Thread.sleep(3000); } catch (InterruptedException e) { @@ -102,14 +102,14 @@ public class MaterialTypeController { List ids=(List) map.get("ids"); for (Integer id : ids) { MaterialType materialTypeById = materialTypeService.findMaterialTypeById(id); - HandlesOtherfunctionalThreadPool.execute(() -> RealDeleteSonDepository(materialTypeById.getOldId().toString())); + HandlesOtherFunctionalThreadPool.execute(() -> RealDeleteSonDepository(materialTypeById.getOldId().toString())); } Integer integer = materialTypeService.deleteMaterialTypeByIds(ids); - HandlesOtherfunctionalThreadPool.execute(() -> { + HandlesOtherFunctionalThreadPool.execute(() -> { try { Thread.sleep(3000); } catch (InterruptedException e) { @@ -149,12 +149,12 @@ public class MaterialTypeController { if (map.containsKey("id")){ Integer id= ObjectFormatUtil.toInteger(map.get("id")); MaterialType materialTypeById = materialTypeService.findMaterialTypeById(id); - HandlesOtherfunctionalThreadPool.execute(() -> UpdateSonState(materialTypeById.getOldId().toString(),3)); + HandlesOtherFunctionalThreadPool.execute(() -> UpdateSonState(materialTypeById.getOldId().toString(),3)); Integer integer = materialTypeService.changeStateToDeletedById(id); - HandlesOtherfunctionalThreadPool.execute(() -> { + HandlesOtherFunctionalThreadPool.execute(() -> { try { Thread.sleep(3000); } catch (InterruptedException e) { @@ -168,13 +168,13 @@ public class MaterialTypeController { List ids=(List) map.get("ids"); for (Integer id : ids) { MaterialType materialTypeById = materialTypeService.findMaterialTypeById(id); - HandlesOtherfunctionalThreadPool.execute(() -> UpdateSonState(materialTypeById.getOldId().toString(), 3)); + HandlesOtherFunctionalThreadPool.execute(() -> UpdateSonState(materialTypeById.getOldId().toString(), 3)); } Integer integer = materialTypeService.changeStateToDeletedByIds(ids); - HandlesOtherfunctionalThreadPool.execute(() -> { + HandlesOtherFunctionalThreadPool.execute(() -> { try { Thread.sleep(3000); } catch (InterruptedException e) { @@ -204,7 +204,7 @@ public class MaterialTypeController { Integer integer = materialTypeService.updateMaterialType(map); - HandlesOtherfunctionalThreadPool.execute(() -> { + HandlesOtherFunctionalThreadPool.execute(() -> { try { Thread.sleep(1000); } catch (InterruptedException e) { @@ -305,12 +305,12 @@ public class MaterialTypeController { int state = ((int)map.get("state")); String id = (String) map.get("id"); MaterialType materialTypeById = materialTypeService.findMaterialTypeById(ObjectFormatUtil.toInteger(id)); - HandlesOtherfunctionalThreadPool.execute(() -> UpdateSonState(materialTypeById.getOldId().toString(), state)); + HandlesOtherFunctionalThreadPool.execute(() -> UpdateSonState(materialTypeById.getOldId().toString(), state)); Integer integer = materialTypeService.updateMaterialType(map); - HandlesOtherfunctionalThreadPool.execute(() -> { + HandlesOtherFunctionalThreadPool.execute(() -> { try { Thread.sleep(3000); } catch (InterruptedException e) { diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/NoticeController.java b/src/main/java/com/dreamchaser/depository_manage/controller/NoticeController.java index af0efcf9..66839c50 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/NoticeController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/NoticeController.java @@ -5,7 +5,6 @@ import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.pojo.NoticeP; import com.dreamchaser.depository_manage.pojo.RestResponse; import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; -import com.dreamchaser.depository_manage.security.pool.HandlesOtherfunctionalThreadPool; import com.dreamchaser.depository_manage.service.NoticeService; import com.dreamchaser.depository_manage.service.impl.QyWxOperationService; import com.dreamchaser.depository_manage.utils.CrudUtil; diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java b/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java index 8df42d4f..3a9319ab 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/QyWxOperationController.java @@ -12,7 +12,7 @@ import com.dreamchaser.depository_manage.pojo.RestResponse; import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.*; import com.dreamchaser.depository_manage.pojo.callBackXml.callBackXml_button_templatecard.TemplateCard; import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; -import com.dreamchaser.depository_manage.security.pool.HandlesOtherfunctionalThreadPool; +import com.dreamchaser.depository_manage.security.pool.HandlesOtherFunctionalThreadPool; import com.dreamchaser.depository_manage.security.pool.RedisPool; import com.dreamchaser.depository_manage.security.pool.UserKeyAndTokenPool; import com.dreamchaser.depository_manage.service.CallBackLogService; @@ -198,7 +198,7 @@ public class QyWxOperationController { if (stockTakingType.contains("review")) { // 开启线程处理审批 - HandlesOtherfunctionalThreadPool.execute(() -> { + HandlesOtherFunctionalThreadPool.execute(() -> { Map reviewByQyWx = stockTakingService.reviewByQyWx(templateCard, crypt); if (reviewByQyWx.containsKey("errMsg")) { @@ -206,18 +206,18 @@ public class QyWxOperationController { }); } else if (stockTakingType.contains("complete")) { // 开启线程 - HandlesOtherfunctionalThreadPool.execute(() -> stockTakingService.completeStockTakingByQyWx(templateCard, crypt)); + HandlesOtherFunctionalThreadPool.execute(() -> stockTakingService.completeStockTakingByQyWx(templateCard, crypt)); } } else if (templateCardType.contains("out")) { // 如果点击的是出库审核 // 开启线程处理审批 - HandlesOtherfunctionalThreadPool.execute(() -> depositoryRecordService.reviewByQyWx(templateCard, crypt)); + HandlesOtherFunctionalThreadPool.execute(() -> depositoryRecordService.reviewByQyWx(templateCard, crypt)); } // 开启线程更改其他用户卡片模板样式 String finalResult = result; - HandlesOtherfunctionalThreadPool.execute( + HandlesOtherFunctionalThreadPool.execute( () -> qyWxOperationService.updateButtonTemplateCardToUnEnable(templateCard.getResponseCode(), userByPort.getName(), finalResult, crypt)); @@ -679,18 +679,18 @@ public class QyWxOperationController { ApprovalInfo_Details finalApprovalInfo_details = approvalInfo_details; boolean finalFlagForFirst = flagForFirst; int finalFlagForDepository = flagForDepository; - HandlesOtherfunctionalThreadPool.execute(() -> depositoryRecordService.reviewByQyWxApprovalOut(mainId, finalApprovalInfo_details, crypt, spStatus, approvalInfo.getSpNo(), finalFlagForFirst, finalFlagForDepository)); + HandlesOtherFunctionalThreadPool.execute(() -> depositoryRecordService.reviewByQyWxApprovalOut(mainId, finalApprovalInfo_details, crypt, spStatus, approvalInfo.getSpNo(), finalFlagForFirst, finalFlagForDepository)); } else if (QyWxConfig.stockTaking_approval_template_id.equals(approvalInfo.getTemplateId())) { // 如果是库存盘点审批 // 开启一个线程用于进行处理 ApprovalInfo_Details finalApprovalInfo_details = approvalInfo_details; - HandlesOtherfunctionalThreadPool.execute(() -> stockTakingService.reviewByQyWxApproval(mainId, finalApprovalInfo_details, crypt, spStatus, approvalInfo.getSpNo())); + HandlesOtherFunctionalThreadPool.execute(() -> stockTakingService.reviewByQyWxApproval(mainId, finalApprovalInfo_details, crypt, spStatus, approvalInfo.getSpNo())); } else if (QyWxConfig.in_approval_template_id.equals(approvalInfo.getTemplateId())) { // 如果是入库审批 // 开启一个线程用于进行处理 ApprovalInfo_Details finalApprovalInfo_details = approvalInfo_details; - HandlesOtherfunctionalThreadPool.execute(() -> depositoryRecordService.reviewByQyWxApprovalIn(mainId, finalApprovalInfo_details, crypt, spStatus, spNo)); + HandlesOtherFunctionalThreadPool.execute(() -> depositoryRecordService.reviewByQyWxApprovalIn(mainId, finalApprovalInfo_details, crypt, spStatus, spNo)); } // 开启一个线程用于进行下步操作 } diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java b/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java index 3b6955d0..d103c07c 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/UserController.java @@ -9,14 +9,9 @@ import com.dreamchaser.depository_manage.entity.User; import com.dreamchaser.depository_manage.entity.UserByPort; import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.pojo.*; -import com.dreamchaser.depository_manage.security.bean.LoginRealms; -import com.dreamchaser.depository_manage.security.bean.LoginType; -import com.dreamchaser.depository_manage.security.bean.UserToken; -import com.dreamchaser.depository_manage.security.bean.VerificationCode; import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; import com.dreamchaser.depository_manage.security.pool.RedisPool; import com.dreamchaser.depository_manage.security.pool.UserKeyAndTokenPool; -import com.dreamchaser.depository_manage.security.pool.VerificationCodePool; import com.dreamchaser.depository_manage.service.AccessAddressService; import com.dreamchaser.depository_manage.service.DepositoryService; import com.dreamchaser.depository_manage.service.RoleService; @@ -43,8 +38,6 @@ import static com.dreamchaser.depository_manage.utils.CrudUtil.deleteHandle; */ @RestController public class UserController { - @Autowired - private LoginRealms loginRealms; @Autowired private UserService userService; @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") @@ -62,74 +55,7 @@ public class UserController { @Autowired private AccessAddressService accessAddressService; - /** - * 注册用户(通常为手机或者邮箱注册) - * - * @param map 参数列表,包括账号(手机注册就是phone,邮箱就是email)、密码 - * @return 成功则返回凭证,否则返回验证失败 - */ - - @PostMapping("/register") - public RestResponse register(@RequestBody Map map) { - String principal; - Object password = map.get("pwd"); - Object code = map.get("code"); - UserToken userToken; - //判断必要参数是否满足 - if (password == null || code == null) { - return CrudUtil.ID_MISS_RESPONSE; - } - - //从map中获取对应参数 - if (map.get("email") != null) { - principal = String.valueOf(map.get("email")); - userToken = new UserToken(LoginType.EMAIl_PASSWORD, principal, String.valueOf(password)); - } else { - return CrudUtil.ID_MISS_RESPONSE; - } - //验证码正确且成功插入数据 - if (checkCode(principal, String.valueOf(code))) { - //对密码进行加密然后存储用户信息 - map.put("pwd", Md5.crypt(String.valueOf(map.get("pwd")))); - //如果用户记录插入成功 - if (userService.insertUser(map) == 1) { - String token = Md5.crypt(userToken.getPrincipal() + userToken.getInstant()); - //返回凭证 - return new RestResponse().setData(token); - } - } else { - //验证码错误 - return CrudUtil.CODE_ERROR; - } - return new RestResponse().setStatus(450).setStatusInfo(new StatusInfo("注册失败,系统繁忙,请稍后再试!", "注册失败")); - } - /** - * 验证是否有此账号,然后发送验证码 - * - * @param map 主要认证主体,如账号,邮箱,qq的openID,wechat的code等 - * @return restResponse,附带凭证token - */ - @PostMapping("/sendCode") - public RestResponse sendCode(@RequestBody Map map) { - if (userService.findUserByCondition(map) == null) { - String principal; - if (map.containsKey("phone")) { - principal = String.valueOf(map.get("phone")); - - } else if (map.containsKey("email")) { - principal = String.valueOf(map.get("email")); - } else { - return CrudUtil.ID_MISS_RESPONSE; - } - //创建一个验证码 - VerificationCode v = new VerificationCode(); - //将验证码存入验证码等待池 - VerificationCodePool.addCode(principal, v); - return new RestResponse(); - } - return new RestResponse("", 304, new StatusInfo("发送验证码失败,该账户已存在!", "发送验证码失败,该账户已存在!")); - } /** * 登录接口 @@ -192,20 +118,6 @@ public class UserController { } - /** - * 将生成的令牌拿去认证,如果认证成功则返回带有token凭证响应,否则返回用户密码错误的响应 - * - * @param userToken 未认证的令牌 - * @return restResponse 如果认证成功则返回带有token凭证响应,否则返回用户密码错误的响应 - */ - private RestResponse login(UserToken userToken) { - String token = loginRealms.authenticate(userToken); - if (token != null) { - return new RestResponse(token); - } else { - return CrudUtil.NOT_EXIST_USER_OR_ERROR_PWD_RESPONSE; - } - } @GetMapping("/loginOut") public RestResponse loginOut(HttpServletRequest request) { @@ -444,63 +356,8 @@ public class UserController { } } - @PutMapping("/user") - public RestResponse updateSelf(@RequestBody Map map, HttpServletRequest request) { - UserToken userToken = (UserToken) request.getAttribute("userToken"); - map.put("id", userToken.getUser().getId()); - return CrudUtil.insertHandle(userService.updateUserNoSensitive(map), 1); - } - @PutMapping("/checkOldEmail") - public RestResponse checkOldEmail(@RequestBody Map map, HttpServletRequest request) { - if (!map.containsKey("oldCode")) { - return CrudUtil.ID_MISS_RESPONSE; - } - UserToken userToken = (UserToken) request.getAttribute("userToken"); - if (checkCode(userToken.getPrincipal(), map.get("oldCode").toString())) { - return new RestResponse("验证成功!"); - } else { - //验证码错误 - return CrudUtil.CODE_ERROR; - } - } - @PutMapping("/updateEmail") - public RestResponse updateEmail(@RequestBody Map map, HttpServletRequest request) { - //参数检测 - if (!map.containsKey("email") || !map.containsKey("oldCode") || !map.containsKey("newCode")) { - return CrudUtil.ID_MISS_RESPONSE; - } - UserToken userToken = (UserToken) request.getAttribute("userToken"); - //必须同时检测,否则会出现漏洞 - if (checkCode(userToken.getPrincipal(), map.get("oldCode").toString()) - && checkCode(map.get("email").toString(), map.get("code").toString())) { - map.put("id", userToken.getUser().getId()); - return CrudUtil.updateHandle(userService.updateUser(map), 1); - } else { - //验证码错误 - return CrudUtil.CODE_ERROR; - } - - } - - - /** - * 用于注册用户的方法,主要为号码验证和邮箱验证提供验证码核对的服务 - * - * @param principal 认证主体 - * @param code 验证码 - * @return 是否验证通过 - */ - private boolean checkCode(String principal, String code) { - if (code != null) { - VerificationCode verificationCode = VerificationCodePool.getCode(principal); - if (verificationCode != null) { - return code.equals(verificationCode.getCode()); - } - } - return false; - } /** diff --git a/src/main/java/com/dreamchaser/depository_manage/security/bean/LoginRealms.java b/src/main/java/com/dreamchaser/depository_manage/security/bean/LoginRealms.java deleted file mode 100644 index be3807db..00000000 --- a/src/main/java/com/dreamchaser/depository_manage/security/bean/LoginRealms.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.dreamchaser.depository_manage.security.bean; - -import com.dreamchaser.depository_manage.entity.User; -import com.dreamchaser.depository_manage.exception.MyException; -import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; -import com.dreamchaser.depository_manage.service.UserService; -import com.dreamchaser.depository_manage.utils.Md5; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -/** - * 内置多种登录方式,和shiro中的realm类似 - */ -@Component -public class LoginRealms { - @Autowired - private UserService userService; - - /** - * 认证,如果认证成功则返回凭证,否则返回null - * @param userToken 未认证的令牌 - * @return 如果认证成功则返回凭证,否则返回null - */ - public String authenticate(UserToken userToken){ - if (userToken.getCredentials()!=null){ - //对密码加密 - userToken.setCredentials(Md5.crypt(userToken.getCredentials())); - } - if (userToken.getLoginType().equals(LoginType.EMAIl_PASSWORD)){ - return handle(userToken,emailLogin(userToken)); - } - //else if (其他登录方式...) - //如果无匹配的认证方式则视为验证失败 - return null; - } - - /** - * 邮箱登录方式 - * @param userToken 令牌 - * @return 认证成功返回SimpleUser - */ - private User emailLogin(UserToken userToken){ - return userService.findUserById(userToken.getPrincipal()); - } - - /** - * 根据传入的user是否为null(是否认证通过)来对令牌做剩下的操作(将user刻入令牌,并将该令牌放入令牌池中) - * @param userToken 经过验证后的令牌 - * @return token 根据令牌生成的凭证 ,如果认证未成功则返回null - */ - private String handle(UserToken userToken,User user){ - if (user==null){ - //说明账户不存在 - throw new MyException(409,"该用户不存在,请注册后再登录!"); - } - //判断密码是否正确 - if (user.getPwd().equals(userToken.getCredentials())){ - //将UserP信息刻入令牌 - userToken.setUser(userService.singlePack(user)); - //获取token凭证 - String token=Md5.crypt(userToken.getPrincipal()+userToken.getInstant()); - //将令牌放入认证令牌池 -// AuthenticationTokenPool.addToken(token,userToken); - return token; - } - return null; - } -} diff --git a/src/main/java/com/dreamchaser/depository_manage/security/bean/LoginType.java b/src/main/java/com/dreamchaser/depository_manage/security/bean/LoginType.java deleted file mode 100644 index 3bc75231..00000000 --- a/src/main/java/com/dreamchaser/depository_manage/security/bean/LoginType.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.dreamchaser.depository_manage.security.bean; - -/** - * 登录方式枚举类 - * @author 金昊霖 - */ - -public enum LoginType { - /** - * 通用 - */ - COMMON("common_realm"), - /** - * 用户密码登录 - */ - EMAIl_PASSWORD("user_password_realm"), - /** - * 手机验证码登录 - */ - USER_PHONE("user_phone_realm"), - /** - * 第三方登录(微信登录) - */ - WECHAT_LOGIN("wechat_login_realm"), - /** - * 第三方登录(qq登录) - */ - QQ_LOGIN("qq_login_realm"); - - - private String type; - - LoginType(String type) { - this.type = type; - } - - public String getType() { - return type; - } - - /** - * 根据简单的字符串返回对应的LoginType - * @param s 简单的字符串 - * @return 对应的LoginType - */ - public static LoginType getType(String s){ - switch (s) { - case "email": - return EMAIl_PASSWORD; - case "qq": - return QQ_LOGIN; - case "wechat": - return WECHAT_LOGIN; - case "phone": - return USER_PHONE; - default: - return null; - } - - } - - @Override - public String toString() { - return this.type; - } -} diff --git a/src/main/java/com/dreamchaser/depository_manage/security/bean/UserToken.java b/src/main/java/com/dreamchaser/depository_manage/security/bean/UserToken.java deleted file mode 100644 index 2e6c0f55..00000000 --- a/src/main/java/com/dreamchaser/depository_manage/security/bean/UserToken.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.dreamchaser.depository_manage.security.bean; - - -import com.dreamchaser.depository_manage.entity.User; -import com.dreamchaser.depository_manage.pojo.UserP; -import lombok.Data; - -import java.time.Instant; - - -/** - * 登录令牌,默认有效期为7天 - * @author 金昊霖 - */ -@Data -public class UserToken{ - - final long DEFAULT_TERM=60*60*24*7; - /** - * 登录方式 - */ - private LoginType loginType; - /** - * 微信、qq的code,邮箱,或者用户名之类的 - */ - private String principal; - - /** - * 相当于密码(一般是加密过的) - */ - private String credentials; - - /** - * 放入的时间 - */ - private Instant instant; - - /** - * 有效期(单位:秒) - */ - private long term; - - /** - * 可以放一些不敏感的信息,以便下次访问时可以直接取出,如果user属性太多可以另外写个类,比如SimpleUser, - * 存放一些经常需要用到的信息。 - */ - private UserP User; - - /** - * 根据时间判断是否有效 - * @return 有效则返回true,否则返回false - */ - public boolean isValid(){ - return Instant.now().getEpochSecond()-instant.getEpochSecond()<=term; - } - - public UserToken(LoginType loginType, String principal, String credentials, Instant instant, long term, UserP user) { - this.loginType = loginType; - this.principal = principal; - this.credentials = credentials; - this.instant = instant; - this.term = term; - this.User = user; - } - - public UserToken(LoginType loginType, String principal, String credentials, Instant instant, long term) { - this.loginType = loginType; - this.principal = principal; - this.credentials = credentials; - this.instant = instant; - this.term = term; - } - - public UserToken(LoginType loginType, String principal, String credentials) { - this.loginType = loginType; - this.principal = principal; - this.credentials = credentials; - this.instant = Instant.now(); - this.term=DEFAULT_TERM; - } - - public UserToken(LoginType loginType, String principal) { - this.loginType = loginType; - this.principal = principal; - this.instant=Instant.now(); - this.term=DEFAULT_TERM; - } -} diff --git a/src/main/java/com/dreamchaser/depository_manage/security/bean/VerificationCode.java b/src/main/java/com/dreamchaser/depository_manage/security/bean/VerificationCode.java deleted file mode 100644 index 1ebfac78..00000000 --- a/src/main/java/com/dreamchaser/depository_manage/security/bean/VerificationCode.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.dreamchaser.depository_manage.security.bean; - -import lombok.Data; - -import java.time.Instant; -import java.util.Random; - -/** - * 验证码,默认有效期为五分钟 - * @author 金昊霖 - */ -@Data -public class VerificationCode { - /** - * 默认持续时间 - */ - private final long DEFAULT_TERM=60*5; - /** - * 验证码 - */ - private String code; - /** - * 创建时刻 - */ - private Instant instant; - /** - * 有效期 - */ - private long term; - - /** - * 根据时间判断是否有效 - * @return boolean值 - */ - public boolean isValid(){ - return Instant.now().getEpochSecond()-instant.getEpochSecond()<=term; - } - - public VerificationCode(Instant instant, long term) { - //生成随机验证码code - generateCode(); - this.instant = instant; - this.term = term; - } - - - public VerificationCode(Instant instant) { - //生成随机验证码code - generateCode(); - this.instant = instant; - this.term=DEFAULT_TERM; - } - - public VerificationCode() { - //生成随机验证码code - generateCode(); - this.instant=Instant.now(); - this.term=DEFAULT_TERM; - } - - private void generateCode(){ - StringBuilder codeNum = new StringBuilder(); - int [] numbers = {0,1,2,3,4,5,6,7,8,9}; - Random random = new Random(); - for (int i = 0; i < 5; i++) { - //目的是产生足够随机的数,避免产生的数字重复率高的问题 - int next = random.nextInt(10000); - codeNum.append(numbers[next % 10]); - } - this.code= codeNum.toString(); - } - - -} diff --git a/src/main/java/com/dreamchaser/depository_manage/security/pool/AuthenticationTokenPool.java b/src/main/java/com/dreamchaser/depository_manage/security/pool/AuthenticationTokenPool.java index e43a2f53..981ec6fe 100644 --- a/src/main/java/com/dreamchaser/depository_manage/security/pool/AuthenticationTokenPool.java +++ b/src/main/java/com/dreamchaser/depository_manage/security/pool/AuthenticationTokenPool.java @@ -2,7 +2,6 @@ package com.dreamchaser.depository_manage.security.pool; import com.dreamchaser.depository_manage.entity.UserByPort; -import com.dreamchaser.depository_manage.security.bean.UserToken; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; diff --git a/src/main/java/com/dreamchaser/depository_manage/security/pool/HandlesOtherfunctionalThreadPool.java b/src/main/java/com/dreamchaser/depository_manage/security/pool/HandlesOtherFunctionalThreadPool.java similarity index 81% rename from src/main/java/com/dreamchaser/depository_manage/security/pool/HandlesOtherfunctionalThreadPool.java rename to src/main/java/com/dreamchaser/depository_manage/security/pool/HandlesOtherFunctionalThreadPool.java index d228f92b..b820a938 100644 --- a/src/main/java/com/dreamchaser/depository_manage/security/pool/HandlesOtherfunctionalThreadPool.java +++ b/src/main/java/com/dreamchaser/depository_manage/security/pool/HandlesOtherFunctionalThreadPool.java @@ -6,9 +6,9 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; /** - * 定义用于发送企业微信相关信息的线程池 + * 定义用于处理其他需要开启线程功能的线程池 */ -public class HandlesOtherfunctionalThreadPool { +public class HandlesOtherFunctionalThreadPool { public static ExecutorService exs = new ThreadPoolExecutor(20, 10, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(10)); // 用于执行对应的方法 diff --git a/src/main/java/com/dreamchaser/depository_manage/security/pool/UserKeyAndTokenPool.java b/src/main/java/com/dreamchaser/depository_manage/security/pool/UserKeyAndTokenPool.java index 7331bfed..43fcf1fe 100644 --- a/src/main/java/com/dreamchaser/depository_manage/security/pool/UserKeyAndTokenPool.java +++ b/src/main/java/com/dreamchaser/depository_manage/security/pool/UserKeyAndTokenPool.java @@ -23,8 +23,7 @@ public class UserKeyAndTokenPool { } public static String getKeyAndToken(String key){ - String keyAndToken = pool.get(key); - return keyAndToken; + return pool.get(key); } public static void removeKeyAndToken(String key){ diff --git a/src/main/java/com/dreamchaser/depository_manage/security/pool/VerificationCodePool.java b/src/main/java/com/dreamchaser/depository_manage/security/pool/VerificationCodePool.java deleted file mode 100644 index 415ee1c0..00000000 --- a/src/main/java/com/dreamchaser/depository_manage/security/pool/VerificationCodePool.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.dreamchaser.depository_manage.security.pool; - -import com.dreamchaser.depository_manage.security.bean.VerificationCode; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 验证码等待池 - * @author 金昊霖 - */ -public class VerificationCodePool { - private static Map pool=new ConcurrentHashMap<>(10); - - /** - * 增加一条验证码 - * @param principal 主要内容,如邮箱,电话号码等 - * @param verificationCode 验证码 - */ - public static void addCode(String principal,VerificationCode verificationCode){ - pool.put(principal, verificationCode); - } - - /** - * 根据principal主要信息获取未过期的验证码,如果没有未过期的令牌则返回null - * @param principal 主要内容,如邮箱,电话号码等 - * @return verificationCode 未过期的验证码或者null - */ - public static VerificationCode getCode(String principal){ - VerificationCode verificationCode=pool.get(principal); - - //如果没有相应验证码则直接返回null - if (verificationCode==null){ - return null; - } - - //判断令牌是否过期 - if (verificationCode.isValid()){ - return verificationCode; - }else{ - //清除过期验证码 - pool.remove(principal); - return null; - } - } - - /** - * 根据主要信息principal删除对应的验证码 - * @param principal 主要信息 - */ - public static void removeCode(String principal){ - pool.remove(principal); - } -} diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java index ea7b193a..1a76362e 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java @@ -10,7 +10,7 @@ import com.dreamchaser.depository_manage.pojo.*; import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo_Details; import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo_Details_Approver; import com.dreamchaser.depository_manage.pojo.callBackXml.callBackXml_button_templatecard.TemplateCard; -import com.dreamchaser.depository_manage.security.pool.HandlesOtherfunctionalThreadPool; +import com.dreamchaser.depository_manage.security.pool.HandlesOtherFunctionalThreadPool; import com.dreamchaser.depository_manage.security.pool.RedisPool; import com.dreamchaser.depository_manage.security.pool.SendQyWxMessageThreadPool; import com.dreamchaser.depository_manage.service.DepositoryRecordService; @@ -290,7 +290,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { List applicationOutRecordMinByParent = depositoryRecordMapper.findApplicationOutRecordMinByParent(id); // 开启一个线程去删除redis中的数据 - HandlesOtherfunctionalThreadPool.execute(() -> { + HandlesOtherFunctionalThreadPool.execute(() -> { // 获取该用户在redis中的订单记录 String key = "user:" + recordP.getApplicantId(); // 获取当前用户所有处理单 @@ -318,7 +318,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { }); // 开启一个线程去删除子订单 - HandlesOtherfunctionalThreadPool.execute(() -> depositoryRecordMapper.deleteApplicationOutRecordMinById(id)); + HandlesOtherFunctionalThreadPool.execute(() -> depositoryRecordMapper.deleteApplicationOutRecordMinById(id)); return integer; } @@ -332,7 +332,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { Integer integer = depositoryRecordMapper.deleteApplicationOutRecordByIds(list); // 开启一个线程去删除redis中的数据 - HandlesOtherfunctionalThreadPool.execute(() -> { + HandlesOtherFunctionalThreadPool.execute(() -> { for (ApplicationOutRecord recordP : recordPList ) { // 获取该用户在redis中的订单记录 @@ -361,7 +361,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { }); // 开启一个线程用于删除 - HandlesOtherfunctionalThreadPool.execute(() -> depositoryRecordMapper.deleteApplicationOutRecordMinByIds(list)); + HandlesOtherFunctionalThreadPool.execute(() -> depositoryRecordMapper.deleteApplicationOutRecordMinByIds(list)); return integer; } @@ -1099,7 +1099,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { updateApplicationMinOutInfo(id, applicationOutMinById, record, trueOut, userByPort, placeId, userAgent); // 更新入库批次中的物料数量 - HandlesOtherfunctionalThreadPool.execute(() -> { + HandlesOtherFunctionalThreadPool.execute(() -> { // 获取出库物料id Integer mid1 = inventory.getId(); // 获取当前物料对应的生产日期 @@ -4664,7 +4664,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { @Override public Integer deleteApplicationInRecordById(Integer id, UserByPort userToken, String userAgent) { ApplicationInRecord record = depositoryRecordMapper.findApplicationInRecordPById(id); - HandlesOtherfunctionalThreadPool.execute(() -> { + HandlesOtherFunctionalThreadPool.execute(() -> { if (Integer.compare(record.getAirapproverPass(), 4) == 0 || Integer.compare(record.getAirapproverPass(), 1) == 0) { // 如果已经入库 updateInventoryForErrorInRecord(record.getMid(), record.getQuantity(), record.getAirUnit(), record.getPlaceId(), record.getDepositoryId()); @@ -4682,7 +4682,7 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { @Override public Integer deleteApplicationInRecordByIds(List list, UserByPort userToken, String userAgent) { List applicationInRecordsByIds = depositoryRecordMapper.findApplicationInRecordsByIds(list); - HandlesOtherfunctionalThreadPool.execute(() -> { + HandlesOtherFunctionalThreadPool.execute(() -> { for (ApplicationInRecord record : applicationInRecordsByIds ) { if (Integer.compare(record.getAirapproverPass(), 4) == 0 || Integer.compare(record.getAirapproverPass(), 1) == 0) { diff --git a/src/test/java/com/dreamchaser/depository_manage/OtherTest.java b/src/test/java/com/dreamchaser/depository_manage/OtherTest.java index d6b161b7..4fa6d709 100644 --- a/src/test/java/com/dreamchaser/depository_manage/OtherTest.java +++ b/src/test/java/com/dreamchaser/depository_manage/OtherTest.java @@ -48,39 +48,37 @@ public class OtherTest { @Autowired RedisPool redisPool; - - @Test - public void main() { -// UserByPort userByPort = LinkInterfaceUtil.FindUserById(6235, null); -// Map stringObjectMap = objectToMap(userByPort); -// redisPool.getRedisTemplateByDb(5).opsForHash().putAll(PublicConfig.userInfoRedisPrefix+"300450",stringObjectMap); -// System.out.println(stringObjectMap); - String key = PublicConfig.userInfoRedisPrefix + "300450"; - Iterator iterator = redisPool.getRedisTemplateByDb(5).opsForHash().keys(key).iterator(); - Map map = new HashMap<>(); + public UserByPort getLoginUserInformation(String userKey) { + // 拼接存储key + String userLoginkey = PublicConfig.LoginRedisPrefix + userKey; + // 获取当前登录用户的工号 + String usernumber = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(userLoginkey, "usernumber"); + String userInfoKey = PublicConfig.userInfoRedisPrefix+usernumber; + // 获取当前存储的所有key值 + Iterator iterator = redisPool.getRedisTemplateByDb(5).opsForHash().keys(userInfoKey).iterator(); + // 定义map + Map map = new HashMap<>(); + // 遍历获取存储的redis中的值 while (iterator.hasNext()) { Object next = iterator.next(); - Object o = redisPool.getRedisTemplateByDb(5).opsForHash().get(key, next); - map.put((String) next,o); + Object o = redisPool.getRedisTemplateByDb(5).opsForHash().get(userInfoKey, next); + map.put((String) next, o); } - UserByPort userByPort = JSONObject.parseObject(JSONObject.toJSONString(map), UserByPort.class); - System.out.println(userByPort); - + return JSONObject.parseObject(JSONObject.toJSONString(map), UserByPort.class); } - - public static Map objectToMap(Object object){ - Map dataMap = new HashMap<>(); + public static Map objectToMap(Object object) { + Map dataMap = new HashMap<>(); Class clazz = object.getClass(); for (Field field : clazz.getDeclaredFields()) { try { field.setAccessible(true); Object o = field.get(object); - if(o != null){ + if (o != null) { - dataMap.put(field.getName(), o.toString()); - }else{ - dataMap.put(field.getName(),""); + dataMap.put(field.getName(), o.toString()); + } else { + dataMap.put(field.getName(), ""); } } catch (IllegalAccessException e) { @@ -90,9 +88,16 @@ public class OtherTest { return dataMap; } + @Test + public void main() { +// UserByPort userByPort = LinkInterfaceUtil.FindUserById(6235, null); +// Map stringObjectMap = objectToMap(userByPort); +// redisPool.getRedisTemplateByDb(5).opsForHash().putAll(PublicConfig.userInfoRedisPrefix+"300450",stringObjectMap); +// System.out.println(stringObjectMap); + UserByPort userByPort = getLoginUserInformation("e3bfa398fe9d0e1ab78a00ff59eff788"); + System.out.println(userByPort); - - + } }