From c764c7cf8eb8080180fbb61b7cd78f86adc2a119 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Wed, 11 Oct 2023 22:33:47 +0800
Subject: [PATCH] Merge branch 'jtdev' of https://hbsl-code.gistack.cn/hbwri/manager into jtdev

---
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/vo/PushVO.java                    |    1 
 skjcmanager/skjcmanager-service/skjcmanager-system/src/main/java/cn/gistack/system/service/impl/MenuServiceImpl.java      |    1 
 skjcmanager/skjcmanager-service/skjcmanager-system/src/main/java/cn/gistack/system/mapper/MenuMapper.xml                  |    4 +-
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/controller/PushController.java    |   13 ++++++
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/IPushService.java         |    2 +
 skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/service/BladeUserDetailsServiceImpl.java                       |   28 ++++++++++++++
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/message/mapper/MessageRecordMapper.xml         |    6 +++
 skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java |   61 ++++++++++++++++++++++--------
 8 files changed, 98 insertions(+), 18 deletions(-)

diff --git a/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/service/BladeUserDetailsServiceImpl.java b/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/service/BladeUserDetailsServiceImpl.java
index 5e5fbe9..c8927ea 100644
--- a/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/service/BladeUserDetailsServiceImpl.java
+++ b/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/service/BladeUserDetailsServiceImpl.java
@@ -17,11 +17,17 @@
 package cn.gistack.auth.service;
 
 import cn.gistack.auth.constant.AuthConstant;
+import cn.gistack.common.utils.Base64Utils;
+import cn.gistack.pwd.dto.CBCResultDTO;
+import cn.gistack.pwd.dto.ResultDTO;
+import cn.gistack.pwd.fegin.IPwdClient;
 import cn.gistack.sm.collect.feign.ICollectClient;
 import cn.gistack.sm.collect.feign.ICollectClientFallback;
 import cn.gistack.sm.sjztmd.entity.AttResManagePerson;
 import cn.gistack.sm.sjztmd.feign.IAttResManagePersonClient;
 import cn.gistack.system.entity.Dept;
+import cn.gistack.system.user.supo.UserSUPO;
+import com.alibaba.fastjson.JSONObject;
 import com.alibaba.nacos.common.utils.StringUtils;
 import io.jsonwebtoken.Claims;
 import lombok.AllArgsConstructor;
@@ -47,6 +53,7 @@
 import org.springframework.stereotype.Service;
 import javax.servlet.http.HttpServletRequest;
 import java.time.Duration;
+import java.util.Base64;
 import java.util.List;
 
 /**
@@ -70,6 +77,8 @@
 	private final JwtProperties jwtProperties;
 
 	private final ICollectClient collectClient;
+
+	private final IPwdClient pwdClient;
 
 	@Override
 	@SneakyThrows
@@ -178,6 +187,25 @@
 			String collectResIds = collectClient.getMyCollect(user.getId().toString());
 			userInfo.getDetail().set("collect",collectResIds);
 
+			User loginUserInfo = userInfo.getUser();
+
+			//获取解密后的Base64字符串
+			R<ResultDTO> encryptRes = pwdClient.getDecrypt(loginUserInfo.getSm4iv(), loginUserInfo.getKeyindexs(),loginUserInfo.getEncdata());
+
+			if (encryptRes.getCode() != 200){
+				throw new UserDeniedAuthorizationException("获取密钥失败");
+			}
+
+			//解码Base64
+			String base64Decode = Base64Utils.getBase64Decode(encryptRes.getData().getData());
+
+			UserSUPO userSUPO = JSONObject.parseObject(base64Decode, UserSUPO.class);
+
+			//若登录用户的电话、角色、部门与原加密数据不符,登录失败
+			if (!(loginUserInfo.getPhone().equals(userSUPO.getPhone())  && loginUserInfo.getRoleId().equals(userSUPO.getRoleId())  && loginUserInfo.getDeptId().equals(userSUPO.getDeptId())) ){
+				throw new UserDeniedAuthorizationException("用户信息异常,请联系管理员");
+			}
+
 			return new BladeUserDetails(user.getId(),
 				user.getTenantId(), StringPool.EMPTY, user.getName(), user.getRealName(), user.getDeptId(), user.getPostId(), user.getRoleId(), Func.join(userInfo.getRoles()), Func.toStr(user.getAvatar(), TokenUtil.DEFAULT_AVATAR),
 				username, AuthConstant.ENCRYPT + user.getPassword(), userInfo.getDetail(), true, true, true, true,
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/controller/PushController.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/controller/PushController.java
index 3110d78..66e4b85 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/controller/PushController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/controller/PushController.java
@@ -37,6 +37,19 @@
 	}
 
 	/**
+	 * 通过用户id推送消息,用于2.0测试(多人)
+	 * @param pushVO
+	 * @return
+	 */
+	@PostMapping("/pushMessageByUserList")
+	public R pushMessageByUserList(PushVO pushVO){
+		return R.data(pushService.pushMessageByUserList(pushVO));
+	}
+
+
+
+
+	/**
 	 * 清空redis中的缓存
 	 * @param userId
 	 * @return
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/IPushService.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/IPushService.java
index 7692fc3..69b7f2e 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/IPushService.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/IPushService.java
@@ -56,4 +56,6 @@
 	 * @return
 	 */
 	Boolean geTuiPushMessage(PushVO pushVO);
+
+	Boolean pushMessageByUserList(PushVO pushVO);
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java
index 3389cd7..33d26e6 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/service/impl/PushServiceImpl.java
@@ -46,26 +46,28 @@
 
 		//uni-push 一次推送最多500名用户,所以分批推送
 		List<List<String>> groupList = groupListByQuantity(cIdList, 400);
-		groupList.forEach(item->{
+		Boolean push = false;
+		for(List<String> cids :groupList){
 			PushVO pushVO = new PushVO();
 
-			pushVO.setCIds(cIdList);
+			pushVO.setCIds(cids);
 			pushVO.setTitle(messageRecordList.get(0).getTheme());
 			pushVO.setContent(messageRecordList.get(0).getContent());
 
-			HashMap<String,Object> payload = new HashMap<>();
-			payload.put("title",messageRecordList.get(0).getTheme());
-			payload.put("content",messageRecordList.get(0).getContent());
-			payload.put("payload","test");
+			HashMap<String, Object> payload = new HashMap<>();
+			payload.put("title", messageRecordList.get(0).getTheme());
+			payload.put("content", messageRecordList.get(0).getContent());
+			payload.put("payload", "test");
 			pushVO.setPayload(payload);
-			 pushMessage(pushVO);
+			push = pushMessage(pushVO);
+		}
 
-		});
-		return true;
+		return push;
 	}
 
 	/**
 	 * 新增测试信息
+	 *
 	 * @param messageRecordList
 	 */
 	private void addSendMsgTest(List<MessageRecord> messageRecordList) {
@@ -120,10 +122,10 @@
 		cIdList.add(clientIdByUserId);
 		pushVO.setCIds(cIdList);
 
-		HashMap<String,Object> payload = new HashMap<>();
-		payload.put("title",pushVO.getTitle());
-		payload.put("content",pushVO.getContent());
-		payload.put("payload","test");
+		HashMap<String, Object> payload = new HashMap<>();
+		payload.put("title", pushVO.getTitle());
+		payload.put("content", pushVO.getContent());
+		payload.put("payload", "test");
 		pushVO.setPayload(payload);
 
 
@@ -136,6 +138,32 @@
 		cIdList.add(getClientIdByUserId(pushVO.getUserId()));
 //		return geTuiUtils.pushMsg(cIdList, pushVO.getTitle(), pushVO.getContent());
 		return geTuiUtils.myPushMessage(cIdList, pushVO.getTitle(), pushVO.getContent());
+	}
+
+	@Override
+	public Boolean pushMessageByUserList(PushVO pushVO) {
+
+		if (Func.isEmpty(pushVO.getUserId())) {
+			throw new ServiceException("请填写用户id!");
+		}
+
+		//获取userIdList
+		List<String> userIdList = Arrays.asList(pushVO.getUserId().split(","));
+		List<MessageRecord> messageRecordList = new ArrayList<>();
+
+		userIdList.forEach(userId->{
+			MessageRecord messageRecord = new MessageRecord();
+
+			messageRecord.setContent(pushVO.getContent());
+			messageRecord.setTheme(pushVO.getTitle());
+			messageRecord.setRecipient(userId);
+
+			messageRecordList.add(messageRecord);
+		});
+
+		Boolean aBoolean = pushMessageList(messageRecordList);
+
+		return aBoolean;
 	}
 
 	/**
@@ -169,7 +197,7 @@
 
 		params.put("requestId", UUID.randomUUID());
 
-		params.put("payload",pushVO.getPayload());
+		params.put("payload", pushVO.getPayload());
 		UniCloudReturnRes uniCloudReturnRes = template.postForObject(UNI_CLOUD_PUSH_URL, params, UniCloudReturnRes.class);
 		return uniCloudReturnRes.getErrCode().equals("0") ? true : false;
 
@@ -177,12 +205,13 @@
 
 	/**
 	 * 对集合按指定数量进行分组
-	 * @param list 分组的集合
+	 *
+	 * @param list     分组的集合
 	 * @param quantity 数量
 	 * @param <T>
 	 * @return
 	 */
-	public  <T> List<List<T>> groupListByQuantity(List list, int quantity) {
+	public <T> List<List<T>> groupListByQuantity(List list, int quantity) {
 		if (list == null || list.size() == 0) {
 			return list;
 		}
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/vo/PushVO.java b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/vo/PushVO.java
index ba30ad2..48ca6f4 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/vo/PushVO.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/push/vo/PushVO.java
@@ -17,4 +17,5 @@
 	private String userId;
 
 	private HashMap<String,Object> payload;
+
 }
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/message/mapper/MessageRecordMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/message/mapper/MessageRecordMapper.xml
index bc59eea..7d0bbbb 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/message/mapper/MessageRecordMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/message/mapper/MessageRecordMapper.xml
@@ -26,6 +26,12 @@
         <if test="messageRecord.source!=null and messageRecord.source!=''">
             and source = #{messageRecord.source}
         </if>
+
+        <if test="messageRecord.createTime != null">
+            AND DATE_FORMAT(create_time,'%Y-%m-%d')  = DATE_FORMAT(#{messageRecord.createTime},'%Y-%m-%d')
+        </if>
+
+
         ORDER BY ID DESC
     </select>
 </mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-system/src/main/java/cn/gistack/system/mapper/MenuMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-system/src/main/java/cn/gistack/system/mapper/MenuMapper.xml
index af62c8e..5413003 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-system/src/main/java/cn/gistack/system/mapper/MenuMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-system/src/main/java/cn/gistack/system/mapper/MenuMapper.xml
@@ -61,7 +61,7 @@
         <if test="param1!=null">
             <choose>
                 <when test="param2.super!=null and param1==0">
-                    and menu.parent_id = #{param1} and (menu.name = 'web' or menu.name = 'newWeb' or menu.name = 'app')
+                    and menu.parent_id = #{param1} and (menu.name = 'web' or menu.name = 'newWeb' or menu.name='superWeb' or menu.name = 'app')
                 </when>
                 <otherwise>
                     and menu.parent_id = #{param1}
@@ -533,7 +533,7 @@
     <!--查询菜单列表(排除 web,app 之外的菜单)-->
     <select id="grantTreeNew" resultMap="treeNodeResultMap">
         select id, parent_id, name as title, id as "value", id as "key" from blade_menu
-        where is_deleted = 0 start with ( name = 'web' or name = 'app' or name = 'newWeb') CONNECT BY PRIOR id =  parent_id order by sort asc
+        where is_deleted = 0 start with ( name = 'web' or name = 'app' or name = 'newWeb' or name ='superWeb') CONNECT BY PRIOR id =  parent_id order by sort asc
     </select>
 
 </mapper>
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-system/src/main/java/cn/gistack/system/service/impl/MenuServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-system/src/main/java/cn/gistack/system/service/impl/MenuServiceImpl.java
index dfec50d..13036c9 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-system/src/main/java/cn/gistack/system/service/impl/MenuServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-system/src/main/java/cn/gistack/system/service/impl/MenuServiceImpl.java
@@ -319,6 +319,7 @@
 
 		List<MenuVO> list = routes.stream().filter(r -> Func.equals(r.getAlias(), "web")).collect(Collectors.toList());
 		list.addAll(routes.stream().filter(r -> Func.equals(r.getAlias(), "newWeb")).collect(Collectors.toList()));
+		list.addAll(routes.stream().filter(r -> Func.equals(r.getAlias(), "superWeb")).collect(Collectors.toList()));
 		if (list.size()>0){
 			MenuVO menuVO = list.get(0);
 //			int level = 0;

--
Gitblit v1.9.3