From 3bf4c3d0fc9318591430eaa351e91c8d7975d3dd Mon Sep 17 00:00:00 2001 From: qiaoqinzheng <qiaoqinzheng@hivekion.com> Date: Tue, 20 Feb 2024 15:50:57 +0800 Subject: [PATCH] =?UTF-8?q?app=E5=BE=AE=E6=9C=8D=E5=8A=A1=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E7=99=BB=E9=99=86=E5=8F=8A=E6=8E=A8=E9=80=81=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E8=B0=83=E7=94=A8=E6=8E=A5=E5=8F=A3=EF=BC=8Capp?= =?UTF-8?q?=E7=AB=AF=E4=B8=8EPC=E7=AB=AF=E5=86=B2=E7=AA=81=E9=83=A8?= =?UTF-8?q?=E5=88=86=E6=8E=A5=E5=8F=A3=E6=96=B0=E5=A2=9Eapp=E7=AB=AF?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=BF=9B=E8=A1=8C=E5=8C=BA=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/feignclient/MessageService.java | 2 +- .../modules/feignclient/SystemClient.java | 8 +- .../system/controller/LoginController.java | 88 +++++++++++++++++++ .../SysAnnouncementSendController.java | 27 +++++- 4 files changed, 117 insertions(+), 8 deletions(-) diff --git a/jeecg-module-app/src/main/java/org/jeecg/modules/feignclient/MessageService.java b/jeecg-module-app/src/main/java/org/jeecg/modules/feignclient/MessageService.java index d8a286e5..3a01639f 100644 --- a/jeecg-module-app/src/main/java/org/jeecg/modules/feignclient/MessageService.java +++ b/jeecg-module-app/src/main/java/org/jeecg/modules/feignclient/MessageService.java @@ -18,7 +18,7 @@ import java.util.Map; public interface MessageService { - @GetMapping(value = "/sys/sysAnnouncementSend/getMyAnnouncementSend") + @GetMapping(value = "/sys/sysAnnouncementSend/getMyAnnouncementSendApp") Result<IPage<AnnouncementSendModel>> getMyAnnouncementSend(@RequestParam AnnouncementSendModel announcementSendModel, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize); diff --git a/jeecg-module-app/src/main/java/org/jeecg/modules/feignclient/SystemClient.java b/jeecg-module-app/src/main/java/org/jeecg/modules/feignclient/SystemClient.java index 27f8579e..ca54dfee 100644 --- a/jeecg-module-app/src/main/java/org/jeecg/modules/feignclient/SystemClient.java +++ b/jeecg-module-app/src/main/java/org/jeecg/modules/feignclient/SystemClient.java @@ -23,7 +23,7 @@ public interface SystemClient { Result<JSONObject> mLogin(@RequestBody SysLoginModel sysLoginModel); /** - * 图形验证码 + * 保存用户关联客户端 * @return */ @PostMapping("/userClient/saveOrUpdateClient") @@ -33,19 +33,19 @@ public interface SystemClient { * 登出 * @return */ - @RequestMapping("/logout") + @RequestMapping("/mlogout") Result<Object> logout(@RequestBody HttpServletRequest request); /** * 图形验证码 */ - @GetMapping("/randomImage/{key}") + @GetMapping("/mRandomImage/{key}") Result<String> randomImage(@PathVariable("key") String key); /** * 图形验证码 * @return */ - @PostMapping("/checkCaptcha") + @PostMapping("/mCheckCaptcha") Result<?> checkCaptcha(); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java index df9484e4..f222d59c 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java @@ -214,6 +214,38 @@ public class LoginController { return Result.error("Token无效!"); } } + + /** + * app端退出登录 + * @return + */ + @RequestMapping(value = "/mlogout") + public Result<Object> mlogout(@RequestBody HttpServletRequest request) { + //用户退出逻辑 + String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN); + if(oConvertUtils.isEmpty(token)) { + return Result.error("退出登录失败!"); + } + String username = JwtUtil.getUsername(token); + LoginUser sysUser = sysBaseApi.getUserByName(username); + if(sysUser!=null) { + //update-begin--Author:wangshuai Date:20200714 for:登出日志没有记录人员 + baseCommonService.addLog("用户名: "+sysUser.getRealname()+",退出成功!", CommonConstant.LOG_TYPE_1, null,sysUser); + //update-end--Author:wangshuai Date:20200714 for:登出日志没有记录人员 + log.info(" 用户名: "+sysUser.getRealname()+",退出成功! "); + //清空用户登录Token缓存 + redisUtil.del(CommonConstant.PREFIX_USER_TOKEN + token); + //清空用户登录Shiro权限缓存 + redisUtil.del(CommonConstant.PREFIX_USER_SHIRO_CACHE + sysUser.getId()); + //清空用户的缓存信息(包括部门信息),例如sys:cache:user::<username> + redisUtil.del(String.format("%s::%s", CacheConstant.SYS_USERS_CACHE, sysUser.getUsername())); + //调用shiro的logout + SecurityUtils.getSubject().logout(); + return Result.ok("退出登录成功!"); + }else { + return Result.error("Token无效!"); + } + } /** * 获取访问量 @@ -510,6 +542,40 @@ public class LoginController { @ApiOperation("获取验证码") @GetMapping(value = "/randomImage/{key}") public Result<String> randomImage(HttpServletResponse response,@PathVariable("key") String key){ + Result<String> res = new Result<String>(); + try { + //生成验证码 + String code = RandomUtil.randomString(BASE_CHECK_CODES,4); + //存到redis中 + String lowerCaseCode = code.toLowerCase(); + + //update-begin-author:taoyan date:2022-9-13 for: VUEN-2245 【漏洞】发现新漏洞待处理20220906 + // 加入密钥作为混淆,避免简单的拼接,被外部利用,用户自定义该密钥即可 + String origin = lowerCaseCode+key+jeecgBaseConfig.getSignatureSecret(); + String realKey = Md5Util.md5Encode(origin, "utf-8"); + //update-end-author:taoyan date:2022-9-13 for: VUEN-2245 【漏洞】发现新漏洞待处理20220906 + + redisUtil.set(realKey, lowerCaseCode, 60); + log.info("获取验证码,Redis key = {},checkCode = {}", realKey, code); + //返回前端 + String base64 = RandImageUtil.generate(code); + res.setSuccess(true); + res.setResult(base64); + } catch (Exception e) { + log.error(e.getMessage(), e); + res.error500("获取验证码失败,请检查redis配置!"); + return res; + } + return res; + } + + /** + * app端后台生成图形验证码 :有效 + * @param key + */ + @ApiOperation("获取验证码") + @GetMapping(value = "/mRandomImage/{key}") + public Result<String> mRandomImage(@PathVariable("key") String key){ Result<String> res = new Result<String>(); try { //生成验证码 @@ -679,6 +745,28 @@ public class LoginController { } return Result.ok(); } + + /** + * app端图形验证码 + * @param sysLoginModel + * @return + */ + @RequestMapping(value = "/mCheckCaptcha", method = RequestMethod.POST) + public Result<?> mCheckCaptcha(@RequestBody SysLoginModel sysLoginModel){ + String captcha = sysLoginModel.getCaptcha(); + String checkKey = sysLoginModel.getCheckKey(); + if(captcha==null){ + return Result.error("验证码无效"); + } + String lowerCaseCaptcha = captcha.toLowerCase(); + String realKey = Md5Util.md5Encode(lowerCaseCaptcha+checkKey, "utf-8"); + Object checkCode = redisUtil.get(realKey); + if(checkCode==null || !checkCode.equals(lowerCaseCaptcha)) { + return Result.error("验证码错误"); + } + return Result.ok(); + } + /** * 登录二维码 */ diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementSendController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementSendController.java index e28d36f5..46fd08ad 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementSendController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementSendController.java @@ -199,13 +199,34 @@ public class SysAnnouncementSendController { result.setSuccess(true); return result; } - + + /** + * @功能:获取我的消息 + * @return + */ + @GetMapping(value = "/getMyAnnouncementSend") + public Result<IPage<AnnouncementSendModel>> getMyAnnouncementSend(AnnouncementSendModel announcementSendModel, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) { + Result<IPage<AnnouncementSendModel>> result = new Result<IPage<AnnouncementSendModel>>(); + LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal(); + String userId = sysUser.getId(); + announcementSendModel.setUserId(userId); + announcementSendModel.setPageNo((pageNo-1)*pageSize); + announcementSendModel.setPageSize(pageSize); + Page<AnnouncementSendModel> pageList = new Page<AnnouncementSendModel>(pageNo,pageSize); + pageList = sysAnnouncementSendService.getMyAnnouncementSendPage(pageList, announcementSendModel); + result.setResult(pageList); + result.setSuccess(true); + return result; + } + /** * @功能:获取我的消息 * @return */ - @GetMapping(value = "/getMyAnnouncementSend") - public Result<IPage<AnnouncementSendModel>> getMyAnnouncementSend(AnnouncementSendModel announcementSendModel, + @GetMapping(value = "/getMyAnnouncementSendApp") + public Result<IPage<AnnouncementSendModel>> getMyAnnouncementSendApp(@RequestParam AnnouncementSendModel announcementSendModel, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) { Result<IPage<AnnouncementSendModel>> result = new Result<IPage<AnnouncementSendModel>>();