123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- package com.sooka.sponest.event.utils;
- import com.ruoyi.common.core.utils.SpringUtils;
- import com.ruoyi.common.core.utils.StringUtils;
- import com.ruoyi.common.security.utils.SecurityUtils;
- import com.ruoyi.system.api.domain.SysUser;
- import com.sooka.sponest.evaluation.api.RemoteEvaluationService;
- import com.sooka.sponest.evaluation.api.domain.EvaluationVo;
- import com.sooka.sponest.event.centereventteventcatalogue.domain.CentereventTEventcatalogue;
- import com.sooka.sponest.message.api.RemoteMessageService;
- import com.sooka.sponest.message.api.domain.MessageJiGuangVo;
- import com.sooka.sponest.message.api.domain.MessagePushrecordVo;
- import com.sooka.sponest.message.api.domain.MessageVo;
- import com.sooka.sponest.monitor.api.RemoteMonitorService;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Component;
- import org.springframework.web.context.request.RequestAttributes;
- import org.springframework.web.context.request.RequestContextHolder;
- import java.net.URLEncoder;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Set;
- import java.util.concurrent.CompletableFuture;
- import java.util.concurrent.ExecutionException;
- /**
- * @Auther: mjq
- * @Date: 2023/6/29 - 06 - 29 - 8:54
- * @Description: 发送短信和推送工具类
- * @version: 1.0
- */
- @Component
- public class RemoteApiUtil {
- private static final Logger logger = LoggerFactory.getLogger(RemoteApiUtil.class);
- private static RemoteApiUtil instance;
- public static RemoteApiUtil getInstance() {
- if (instance == null) {
- instance = SpringUtils.getBean(RemoteApiUtil.class);
- }
- return instance;
- }
- /**
- * 发送短信和极光
- *
- * @param phones
- * @param userIds
- * @param message
- * @param eventCode
- * @param eventName
- */
- public void sendMessageAndJg(Set<String> phones, Set<Long> userIds, String message, String eventCode, String eventName) {
- sendMessage(phones, message, eventCode, eventName);
- sendJGMessage(userIds, message, eventCode);
- }
- /**
- * 发送短信
- *
- * @param phones
- * @param message
- * @param eventCode
- * @param eventName
- */
- public void sendMessage(Set<String> phones, String message, String eventCode, String eventName) {
- if (StringUtils.isNotEmpty(phones) && StringUtils.isNotBlank(message)) {
- //腾讯短信
- MessageVo messageVo = new MessageVo();
- messageVo.setType("1");
- messageVo.setPhones(phones.toArray(new String[0]));
- messageVo.setContent(new String[]{message});
- messageVo.setEventCode(StringUtils.isBlank(eventCode) ? "" : eventCode);
- messageVo.setEventName(StringUtils.isBlank(eventName) ? "" : eventName);
- SpringUtils.getBean(RemoteMessageService.class).sendTxMessage(messageVo);
- //阿里云短信
- // RequestAttributes attributes = RequestContextHolder.getRequestAttributes();// 异步之前获取上下文
- // List<CompletableFuture> futures = new ArrayList<>();
- // phones.forEach(item -> {
- // MessageVo messageVo = new MessageVo();
- // messageVo.setPhone(item);
- // messageVo.setStr(message);
- // messageVo.setEventCode(StringUtils.isBlank(eventCode) ? "" : eventCode);
- // messageVo.setEventName(StringUtils.isBlank(eventName) ? "" : eventName);
- // futures.add(CompletableFuture.supplyAsync(() -> {
- // RequestContextHolder.setRequestAttributes(attributes);
- // try {
- // return SpringUtils.getBean(RemoteMessageService.class).sendMessage(messageVo);
- // } catch (Exception e) {
- // logger.error(e.getMessage());
- // }
- // return null;
- // }));
- // });
- // CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
- }
- }
- /**
- * 极光推送
- *
- * @param userIds
- * @param message
- * @param eventCode
- */
- public void sendJGMessage(Set<Long> userIds, String message, String eventCode) {
- if (StringUtils.isNotEmpty(userIds) && StringUtils.isNotBlank(message)) {
- RequestAttributes attributes = RequestContextHolder.getRequestAttributes();// 异步之前获取上下文
- List<CompletableFuture> futures = new ArrayList<>();
- userIds.forEach(item -> {
- MessageJiGuangVo messageJiGuangVo = new MessageJiGuangVo();
- messageJiGuangVo.setType("1");
- messageJiGuangVo.setUserId(item);
- messageJiGuangVo.setTitle("通知");
- messageJiGuangVo.setContent(message);
- messageJiGuangVo.setEventCode(StringUtils.isBlank(eventCode) ? "" : eventCode);
- futures.add(CompletableFuture.supplyAsync(() -> {
- RequestContextHolder.setRequestAttributes(attributes);
- try {
- return SpringUtils.getBean(RemoteMessageService.class).sendJGMessageEvent(messageJiGuangVo);
- } catch (Exception e) {
- logger.error(e.getMessage());
- }
- return null;
- }));
- });
- CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
- }
- }
- /**
- * 可视化消息推送
- *
- * @param deptIds
- * @param message
- * @param eventCode
- */
- public void insertCentermessageTPushrecord(List<Long> deptIds, String message, String eventCode) {
- if (StringUtils.isNotEmpty(deptIds) && StringUtils.isNotBlank(message)) {
- RequestAttributes attributes = RequestContextHolder.getRequestAttributes();// 异步之前获取上下文
- MessagePushrecordVo messagePushrecordVo = new MessagePushrecordVo();
- messagePushrecordVo.setType("1");
- messagePushrecordVo.setDeptIds(deptIds);
- messagePushrecordVo.setTitle("通知");
- messagePushrecordVo.setContent(message);
- messagePushrecordVo.setEventCode(StringUtils.isBlank(eventCode) ? "" : eventCode);
- CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
- RequestContextHolder.setRequestAttributes(attributes);
- try {
- SpringUtils.getBean(RemoteMessageService.class).insertCentermessageTPushrecord(messagePushrecordVo);
- } catch (Exception e) {
- logger.error(e.getMessage());
- }
- });
- try {
- future.get();
- } catch (InterruptedException e) {
- logger.error(e.getMessage());
- Thread.currentThread().interrupt();
- } catch (ExecutionException e) {
- logger.error(e.getMessage());
- }
- }
- }
- /**
- * 更改消息状态为已读
- *
- * @param eventCode
- */
- public void updateMessageByEventCode(String eventCode) {
- if (StringUtils.isNotBlank(eventCode)) {
- RequestAttributes attributes = RequestContextHolder.getRequestAttributes();// 异步之前获取上下文
- CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
- RequestContextHolder.setRequestAttributes(attributes);
- try {
- SpringUtils.getBean(RemoteMessageService.class).updateMessageByEventCode(eventCode);
- } catch (Exception e) {
- logger.error(e.getMessage());
- }
- });
- try {
- future.get();
- } catch (InterruptedException e) {
- logger.error(e.getMessage());
- Thread.currentThread().interrupt();
- } catch (ExecutionException e) {
- logger.error(e.getMessage());
- }
- }
- }
- @Value("${sooka.dahuafile:}")
- private Boolean dahuaFile;
- /**
- * 获取大华token
- *
- * @return
- */
- public String getToken() {
- if (dahuaFile) {
- return SpringUtils.getBean(RemoteMonitorService.class).getToken();
- }
- return "";
- }
- /**
- * 新增测评考核
- *
- * @param centereventTEventcatalogue
- * @param evaluationRule
- */
- public void addFen(CentereventTEventcatalogue centereventTEventcatalogue, String evaluationRule) {
- if (StringUtils.isNotNull(centereventTEventcatalogue)) {
- RequestAttributes attributes = RequestContextHolder.getRequestAttributes();// 异步之前获取上下文
- SysUser user = SecurityUtils.getLoginUser().getSysUser();
- EvaluationVo evaluation = new EvaluationVo();
- evaluation.setEvaluationUserId(SecurityUtils.getUserId());
- evaluation.setEvaluationUserName(user.getNickName());
- evaluation.setEvaluationDeptId(centereventTEventcatalogue.getDeptId());
- evaluation.setEvaluationDeptName(centereventTEventcatalogue.getDeptName());
- evaluation.setEvaluationRule("evaluation_rule_" + evaluationRule);
- evaluation.setEventCode(centereventTEventcatalogue.getEventCode());
- evaluation.setEventName(centereventTEventcatalogue.getEventName());
- evaluation.setCreateBy(SecurityUtils.getUserId().toString());
- evaluation.setCreateName(user.getNickName());
- CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
- RequestContextHolder.setRequestAttributes(attributes);
- try {
- SpringUtils.getBean(RemoteEvaluationService.class).addFen(evaluation);
- } catch (Exception e) {
- logger.error(e.getMessage());
- }
- });
- try {
- future.get();
- } catch (InterruptedException e) {
- logger.error(e.getMessage());
- Thread.currentThread().interrupt();
- } catch (ExecutionException e) {
- logger.error(e.getMessage());
- }
- }
- }
- public static String encodeUrl(String input) {
- try {
- // 使用 URLEncoder 类的 encode 方法对输入字符串进行编码
- return URLEncoder.encode(input, "UTF-8");
- } catch (Exception e) {
- logger.error(e.getMessage());
- }
- return null;
- }
- }
|