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>>();