Browse Source

消息中心推送核心代码

hanzhengyi 11 months ago
parent
commit
2ceeb06687

+ 22 - 0
service-iot/service-iot-api/src/main/java/com/usky/iot/RemoteMceService.java

@@ -0,0 +1,22 @@
+package com.usky.iot;
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.iot.factory.RemoteMceFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+/**
+ * @author han
+ * @date 2024/04/26 14:07
+ */
+@FeignClient(contextId = "remoteMceService", value = "service-iot", fallbackFactory =
+        RemoteMceFallbackFactory.class)
+public interface RemoteMceService {
+    /**
+     * 新增消息
+     *
+     * @return 消息结果
+     */
+    @PostMapping("/addMce")
+    ApiResult<Void> addMce(String mceReceive);
+}

+ 32 - 0
service-iot/service-iot-api/src/main/java/com/usky/iot/factory/RemoteMceFallbackFactory.java

@@ -0,0 +1,32 @@
+package com.usky.iot.factory;
+
+import com.alibaba.fastjson.JSONObject;
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.core.exception.FeignBadRequestException;
+import com.usky.iot.RemoteMceService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author han
+ * @date 2024/04/02 15:07
+ */
+@Component
+public class RemoteMceFallbackFactory implements FallbackFactory<RemoteMceService> {
+    private static final Logger log = LoggerFactory.getLogger(RemoteMceFallbackFactory.class);
+
+    @Override
+    public RemoteMceService create(Throwable throwable)
+    {
+        log.error("iot服务调用失败:{}", throwable.getMessage());
+        return new RemoteMceService()
+        {
+            @Override
+            public ApiResult<Void> addMce(String mceReceive) {
+                throw new FeignBadRequestException(500,"新增消息异常"+throwable.getMessage());
+            }
+        };
+    }
+}

+ 20 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/api/MceControllerApi.java

@@ -0,0 +1,20 @@
+package com.usky.iot.controller.api;
+
+import com.usky.common.core.bean.ApiResult;
+import com.usky.iot.RemoteMceService;
+import com.usky.iot.service.MceReceiveService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class MceControllerApi implements RemoteMceService {
+
+    @Autowired
+    private MceReceiveService mceReceiveService;
+
+    @Override
+    public ApiResult<Void> addMce(String mceReceive) {
+        mceReceiveService.add(mceReceive);
+        return ApiResult.success();
+    }
+}

+ 10 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/controller/web/MceReceiveController.java

@@ -101,5 +101,15 @@ public class MceReceiveController {
         mceReceiveService.updateMceReceive(mceReceive);
         return ApiResult.success();
     }
+
+    /**
+     * 消息接收接口
+     * @return
+     */
+    @PostMapping("/mceAdd")
+    ApiResult<Void> add(@RequestBody String mceReceive){
+        mceReceiveService.add(mceReceive);
+        return ApiResult.success();
+    }
 }
 

+ 4 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/MceContent.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -60,6 +62,7 @@ public class MceContent implements Serializable {
     /**
      * 创建时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;
 
     /**
@@ -70,6 +73,7 @@ public class MceContent implements Serializable {
     /**
      * 更新时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime updateTime;
 
 

+ 4 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/MceReceive.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -75,6 +77,7 @@ public class MceReceive implements Serializable {
     /**
      * 创建时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;
 
     /**
@@ -85,6 +88,7 @@ public class MceReceive implements Serializable {
     /**
      * 更新时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime updateTime;
 
 

+ 4 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/domain/MceSetting.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -60,6 +62,7 @@ public class MceSetting implements Serializable {
     /**
      * 创建时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;
 
     /**
@@ -70,6 +73,7 @@ public class MceSetting implements Serializable {
     /**
      * 更新时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime updateTime;
 
 

+ 2 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/MceReceiveService.java

@@ -29,4 +29,6 @@ public interface MceReceiveService extends CrudService<MceReceive> {
     Map<String, Object> mceReceiveStatic();
 
     void updateMceReceive(MceReceive mceReceive);
+
+    void add(String mceReceive);
 }

+ 137 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/config/HttpClientUtils.java

@@ -0,0 +1,137 @@
+package com.usky.iot.service.config;
+
+import org.apache.http.NameValuePair;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ 1. 跨域请求工具类
+ */
+public class HttpClientUtils {
+
+    public static String doGet(String url, Map<String, String> param) {
+
+        // 创建Httpclient对象
+        CloseableHttpClient httpclient = HttpClients.createDefault();
+
+        String resultString = "";
+        CloseableHttpResponse response = null;
+        try {
+            // 创建uri
+            URIBuilder builder = new URIBuilder(url);
+            if (param != null) {
+                for (String key : param.keySet()) {
+                    builder.addParameter(key, param.get(key));
+                }
+            }
+            URI uri = builder.build();
+
+            // 创建http GET请求
+            HttpGet httpGet = new HttpGet(uri);
+
+            // 执行请求
+            response = httpclient.execute(httpGet);
+            // 判断返回状态是否为200
+            if (response.getStatusLine().getStatusCode() == 200) {
+                resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if (response != null) {
+                    response.close();
+                }
+                httpclient.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return resultString;
+    }
+
+    public static String doGet(String url) {
+        return doGet(url, null);
+    }
+
+    public static String doPost(String url, Map<String, String> param) {
+        // 创建Httpclient对象
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        CloseableHttpResponse response = null;
+        String resultString = "";
+        try {
+            // 创建Http Post请求
+            HttpPost httpPost = new HttpPost(url);
+            httpPost.setHeader("Content-Type", "application/json");
+            // 创建参数列表
+            if (param != null) {
+                List<NameValuePair> paramList = new ArrayList<>();
+                for (String key : param.keySet()) {
+                    paramList.add(new BasicNameValuePair(key, param.get(key)));
+                }
+                // 模拟表单
+                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);
+                httpPost.setEntity(entity);
+            }
+            // 执行http请求
+            response = httpClient.execute(httpPost);
+            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                response.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+
+        return resultString;
+    }
+
+    public static String doPost(String url) {
+        return doPost(url, null);
+    }
+
+    public static String doPostJson(String url, String json) {
+        // 创建Httpclient对象
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        CloseableHttpResponse response = null;
+        String resultString = "";
+        try {
+            // 创建Http Post请求
+            HttpPost httpPost = new HttpPost(url);
+            // 创建请求内容
+            StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
+            httpPost.setEntity(entity);
+            // 执行http请求
+            response = httpClient.execute(httpPost);
+            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                response.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+
+        return resultString;
+    }
+}

+ 61 - 2
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/MceReceiveServiceImpl.java

@@ -10,16 +10,19 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.gson.JsonObject;
 import com.usky.common.core.bean.ApiResult;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.security.utils.SecurityUtils;
-import com.usky.iot.domain.BaseBuild;
 import com.usky.iot.domain.MceContent;
 import com.usky.iot.domain.MceReceive;
+import com.usky.iot.domain.MceSetting;
 import com.usky.iot.mapper.MceReceiveMapper;
 import com.usky.iot.service.MceContentService;
 import com.usky.iot.service.MceReceiveService;
 import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.iot.service.MceSettingService;
+import com.usky.iot.service.config.HttpClientUtils;
 import com.usky.system.RemoteUserService;
 import com.usky.system.domain.SysUser;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -27,7 +30,6 @@ import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -46,6 +48,9 @@ public class MceReceiveServiceImpl extends AbstractCrudService<MceReceiveMapper,
     @Autowired
     private RemoteUserService remoteUserService;
 
+    @Autowired
+    private MceSettingService mceSettingService;
+
     @Override
     public CommonPage<Object> mceList(String infoTitle, String infoType, String startTime, String endTime, Integer current, Integer size) {
         List<Object> list = new ArrayList<>();
@@ -207,4 +212,58 @@ public class MceReceiveServiceImpl extends AbstractCrudService<MceReceiveMapper,
         }
         this.update(updateWrapper);
     }
+
+    @Override
+    public void add(String mceReceive){
+        String appUrl = "https://fc-mp-85a26092-1305-4bf1-998f-b609512c8f7b.next.bspapp.com/uniPushMessage";
+        JSONObject mceReceiveVO = JSONObject.parseObject(mceReceive);
+        MceContent mceContent = new MceContent();
+        mceContent.setInfoTitle(mceReceiveVO.get("infoTitle").toString());
+        mceContent.setInfoContent(mceReceiveVO.get("infoContent").toString());
+        mceContent.setInfoType(mceReceiveVO.get("infoType").toString());
+        mceContent.setCreateBy(SecurityUtils.getUsername());
+        mceContent.setCreateTime(LocalDateTime.now());
+        mceContent.setDeptId(SecurityUtils.getLoginUser().getSysUser().getDeptId().intValue());
+        mceContent.setTenantId(SecurityUtils.getTenantId());
+        mceContentService.save(mceContent);
+        Integer contentId = mceContent.getId();
+        ApiResult<List<SysUser>> userAllList = remoteUserService.userAllList();
+        List<SysUser> list = userAllList.getData();
+        if (CollectionUtils.isNotEmpty(list)) {
+            for (int i = 0; i < list.size(); i++) {
+                MceReceive mceReceive1 = new MceReceive();
+                mceReceive1.setReceiverId(list.get(i).getUserId().intValue());
+                mceReceive1.setContentId(contentId);
+                mceReceive1.setReadFlag(0);
+                mceReceive1.setInfoType(mceReceiveVO.get("infoType").toString());
+                mceReceive1.setModuleId((int)mceReceiveVO.get("id"));
+                mceReceive1.setReceiverName(list.get(i).getUserName());
+                mceReceive1.setCreateBy(SecurityUtils.getUsername());
+                mceReceive1.setCreateTime(LocalDateTime.now());
+                mceReceive1.setTenantId(list.get(i).getTenantId());
+//                mceReceive1.setDeptId(list.get(i).getDeptId().intValue());
+                this.save(mceReceive1);
+                LambdaQueryWrapper<MceSetting> lambdaQuery = Wrappers.lambdaQuery();
+                lambdaQuery.eq(MceSetting::getCreateBy,list.get(i).getUserName());
+                List<MceSetting> list1 = mceSettingService.list(lambdaQuery);
+                if (CollectionUtils.isNotEmpty(list1)){
+                    JSONObject appMode = JSONObject.parseObject(list1.get(0).getAppMode());
+                    if (appMode.get(mceReceiveVO.get("infoType").toString()).equals(true)){
+                        JsonObject jsonObject = new JsonObject();
+                        jsonObject.addProperty("cids", "b9ba637d52b3eca1cd15d9d1ede4d00b");
+                        jsonObject.addProperty("title", mceReceiveVO.get("infoTitle").toString());
+                        jsonObject.addProperty("content", mceReceiveVO.get("infoContent").toString());
+//                        HashMap map1 = new HashMap();
+//                        map1.put("text", "b0e7580c39166f9f8d5ed20da807ba1f");
+//                        map.put("payload", map1);
+                        String resultString = HttpClientUtils.doPostJson(appUrl,jsonObject.toString());
+                    }
+                    JSONObject wcMode = JSONObject.parseObject(list1.get(0).getWcMode());
+                    if (wcMode.get(mceReceiveVO.get("infoType").toString()).equals(true)){
+
+                    }
+                }
+            }
+        }
+    }
 }

+ 2 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/MceSettingServiceImpl.java

@@ -65,10 +65,12 @@ public class MceSettingServiceImpl extends AbstractCrudService<MceSettingMapper,
             map.put("appMode",map1);
             map.put("pcMode",map1);
             map.put("wcMode",map1);
+            map.put("id",0);
         }else {
             map.put("appMode",JSONObject.parseObject(list1.get(0).getAppMode()));
             map.put("pcMode",JSONObject.parseObject(list1.get(0).getPcMode()));
             map.put("wcMode",JSONObject.parseObject(list1.get(0).getWcMode()));
+            map.put("id",list1.get(0).getId());
         }
         return map;
     }