From 42902276e90b485ee31169be5aead2674b995f89 Mon Sep 17 00:00:00 2001 From: hwf452 Date: Tue, 11 Feb 2025 16:28:53 +0800 Subject: [PATCH] bh add mqtt --- .../AdminClientAppmqttserverApplication.java | 19 ++- .../MqttRSAClientBhAPP.java | 153 ++++++++++++++++++ .../controller/UserController.java | 4 +- .../controller/UserDywController.java | 2 +- .../controller/UserbhController.java | 37 +++++ .../controller/UserzyController.java | 6 +- .../dao/UserbhRepository.java | 15 ++ .../entity/Userbh.java | 34 ++++ .../service/UserbhService.java | 16 ++ .../service/impl/UserbhServiceImpl.java | 30 ++++ 10 files changed, 305 insertions(+), 11 deletions(-) create mode 100644 SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/MqttRSAClientBhAPP.java create mode 100644 SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserbhController.java create mode 100644 SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/dao/UserbhRepository.java create mode 100644 SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/entity/Userbh.java create mode 100644 SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/UserbhService.java create mode 100644 SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/impl/UserbhServiceImpl.java diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/AdminClientAppmqttserverApplication.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/AdminClientAppmqttserverApplication.java index 865176a..313e84e 100644 --- a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/AdminClientAppmqttserverApplication.java +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/AdminClientAppmqttserverApplication.java @@ -1,9 +1,6 @@ package com.rehome.adminclientappmqttserver; -import com.rehome.adminclientappmqttserver.controller.UserController; -import com.rehome.adminclientappmqttserver.controller.UserDywController; -import com.rehome.adminclientappmqttserver.controller.UseryfController; -import com.rehome.adminclientappmqttserver.controller.UserzyController; +import com.rehome.adminclientappmqttserver.controller.*; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Autowired; @@ -52,6 +49,11 @@ public class AdminClientAppmqttserverApplication implements CommandLineRunner, A */ @Resource private UserDywController userDywController; + /** + 后台接口自动导入 博贺电厂 + */ + @Resource + private UserbhController userbhController; public static void main(String[] args) { SpringApplication.run(AdminClientAppmqttserverApplication.class, args); @@ -112,6 +114,15 @@ public class AdminClientAppmqttserverApplication implements CommandLineRunner, A } else { System.out.println("UserDywController is empty"); } + //博贺电厂 mqtt + if (userbhController != null) { + System.out.println("------------------------"); + System.out.println("UserDywController is not empty"); + MqttRSAClientBhAPP client_bh = new MqttRSAClientBhAPP(); + client_bh.start(userbhController); + } else { + System.out.println("UserDywController is empty"); + } } catch (Exception ex) { ex.printStackTrace(); } diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/MqttRSAClientBhAPP.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/MqttRSAClientBhAPP.java new file mode 100644 index 0000000..011746e --- /dev/null +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/MqttRSAClientBhAPP.java @@ -0,0 +1,153 @@ +package com.rehome.adminclientappmqttserver; + + +import com.google.gson.Gson; +import com.rehome.adminclientappmqttserver.controller.UserbhController; +import com.rehome.adminclientappmqttserver.entity.Userbh; +import com.rehome.adminclientappmqttserver.utils.UUIDUtil; +import org.eclipse.paho.client.mqttv3.*; +import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; +import java.util.Timer; +import java.util.TimerTask; + + +public class MqttRSAClientBhAPP { + /** + * 代理服务器ip地址 + */ + public static final String MQTT_BROKER_HOST = "tcp://47.242.184.139:1883"; + + /** + * 客户端唯一标识 + */ + public static String MQTT_CLIENT_ID = "AppServer_BH_APP_server_04"; + + /** + * + */ + public static final String USERNAME = "admin"; + /** + * 密码 + */ + public static final String PASSWORD = "publish452131wW452131wW$"; + /** + * 订阅标识 + */ + public static final String TOPIC_FILTER = "app_push_bh"; + + private volatile static MqttClient mqttClient; + private static MqttConnectOptions options; + private static int qos = 2; + + + //定时器 + private Timer timer; + + public MqttRSAClientBhAPP(){ + try { + MQTT_CLIENT_ID = UUIDUtil.getUUID(); + // host为主机名,clientid即连接MQTT的客户端ID,一般以客户端唯一标识符表示, + // MemoryPersistence设置clientid的保存形式,默认为以内存保存 + mqttClient = new MqttClient(MQTT_BROKER_HOST, MQTT_CLIENT_ID, new MemoryPersistence()); + // 配置参数信息 + options = new MqttConnectOptions(); + // 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录, + // 这里设置为true表示每次连接到服务器都以新的身份连接 + options.setCleanSession(true); + // 设置用户名 + options.setUserName(USERNAME); + // 设置密码 + options.setPassword(PASSWORD.toCharArray()); + // 设置超时时间 单位为秒 + options.setConnectionTimeout(10); + // 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制 + options.setKeepAliveInterval(20); + //断线重连 + options.setAutomaticReconnect(true); + } catch (Exception e) { + e.printStackTrace(); + } + } + public void start(UserbhController userController) { + try { + // 连接 + mqttClient.connect(options); + // 订阅 + mqttClient.subscribe(TOPIC_FILTER,qos); + // 设置回调 + mqttClient.setCallback(new MqttCallbackExtended(){ + + @Override + public void connectionLost(Throwable throwable) { + System.out.println("connectionLost"); + try { + mqttClient.reconnect(); + } catch (MqttException e) { + e.printStackTrace(); + } + } + + @Override + public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { + System.out.println("topic:"+s); + System.out.println("Qos:"+mqttMessage.getQos()); + System.out.println("message RSA:"+new String(mqttMessage.getPayload())); + System.out.println("博贺电厂收到mqtt消息"); + try { + String messageDe = RSAAndroid.decryptByPrivateKeyForSpiltStr(new String(mqttMessage.getPayload()), RSAAndroid.privateRsaKey); + System.out.println("message content:"+messageDe); + Gson gson = new Gson(); + + Userbh userInfo = gson.fromJson(messageDe, Userbh.class); + System.out.println(userInfo.getUsername()); + System.out.println(userInfo.getPassword()); + System.out.println(userInfo.getDate()); + System.out.println(userInfo.getNfc()); + System.out.println(userInfo.getName()); + userController.saveUserBh(userInfo); + }catch (Exception e){ + e.printStackTrace(); + } + } + + @Override + public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { + System.out.println("deliveryComplete---------"+ iMqttDeliveryToken.isComplete()); + } + + @Override + public void connectComplete(boolean b, String s) { + //连接成功后调用 + try { + mqttClient.subscribe(TOPIC_FILTER,qos);//具体订阅代码 + } catch (MqttException e) { + e.printStackTrace(); + } + } + }); + + timer = new Timer(); + timer.schedule(new TimerTask() { + public void run() { + System.out.println("-------设定要指定任务--------"); + try { + //判断拦截状态,这里注意一下,如果没有这个判断,是非常坑的 + if (!mqttClient.isConnected()) { + System.out.println("***** 没有连接到服务器 *****"); + System.out.println("***** client to connect *****"); + // 重新连接 + mqttClient.connect(options); + } + if (mqttClient.isConnected()) {//连接成功,跳出连接 + System.out.println("***** connect success *****"); + } + } catch (MqttException e1) { + e1.printStackTrace(); + } + } + }, 10000,10000); + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserController.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserController.java index cf881b1..539cdc7 100644 --- a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserController.java +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserController.java @@ -12,14 +12,14 @@ import javax.annotation.Resource; /** *

- * 前端控制器 + * 前端控制器 珠海电厂 *

* * @author huangwenfei * @since 2021-08-17 */ @RestController -@RequestMapping("/user") +@RequestMapping("/userZhdc") public class UserController { @Resource diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserDywController.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserDywController.java index a28b9b4..8340099 100644 --- a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserDywController.java +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserDywController.java @@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; /** - * 前端控制器 亚湾综合能源 + * 前端控制器 大亚湾综合能源 * @author huangwenfei * @since 2024-11-05 10:04 */ diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserbhController.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserbhController.java new file mode 100644 index 0000000..c77940a --- /dev/null +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserbhController.java @@ -0,0 +1,37 @@ +package com.rehome.adminclientappmqttserver.controller; + + +import com.rehome.adminclientappmqttserver.entity.Userbh; +import com.rehome.adminclientappmqttserver.entity.Useryf; +import com.rehome.adminclientappmqttserver.entity.Userzy; +import com.rehome.adminclientappmqttserver.service.UserbhService; +import com.rehome.adminclientappmqttserver.service.UseryfService; +import com.rehome.adminclientappmqttserver.service.UserzyService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + *

+ * 前端控制器 博贺电厂 + *

+ * + * @author huangwenfei + * @since 2022-03-09 + */ +@RestController +@RequestMapping("/userBh") +public class UserbhController { + + @Resource + private UserbhService userbhService; + + public void saveUserBh(Userbh user){ + userbhService.saveByUsernameBh(user); + } + + +} \ No newline at end of file diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserzyController.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserzyController.java index c065a5c..fe1ac4e 100644 --- a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserzyController.java +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserzyController.java @@ -13,16 +13,14 @@ import javax.annotation.Resource; /** *

- * 前端控制器 + * 前端控制器 中粤能源电厂 *

* * @author huangwenfei * @since 2022-03-09 */ @RestController -@RequestMapping("/useryf") - - +@RequestMapping("/userzy") public class UserzyController { @Resource diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/dao/UserbhRepository.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/dao/UserbhRepository.java new file mode 100644 index 0000000..348c807 --- /dev/null +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/dao/UserbhRepository.java @@ -0,0 +1,15 @@ +package com.rehome.adminclientappmqttserver.dao; + +import com.rehome.adminclientappmqttserver.entity.Userbh; +import com.rehome.adminclientappmqttserver.entity.Userzy; +import org.springframework.data.jpa.repository.JpaRepository; + +/** + * 参数一 T :当前需要映射的实体 + * 参数二 ID :当前映射的实体中的OID的类型 + * + */ +public interface UserbhRepository extends JpaRepository { + //方法名称必须要遵循驼峰式命名规则,findBy(关键字)+属性名称(首字母大写)+查询条件(首字母大写) + Userbh findByUsername(String username); +} \ No newline at end of file diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/entity/Userbh.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/entity/Userbh.java new file mode 100644 index 0000000..72f09d8 --- /dev/null +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/entity/Userbh.java @@ -0,0 +1,34 @@ +package com.rehome.adminclientappmqttserver.entity; + +import java.io.Serializable; +import lombok.Data; +import org.hibernate.annotations.Proxy; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.*; + +/** + * @author huangwenfei + * @since 2023-08-29 + */ +@EntityListeners(AuditingEntityListener.class) +@Proxy(lazy = false) +@Data +@Entity +public class Userbh implements Serializable { + + private static final long serialVersionUID = 1L; + + @Id + private String username; + + private String password; + + private String nfc; + + @Column( length = 32) + private String date; + + private String name; + +} \ No newline at end of file diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/UserbhService.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/UserbhService.java new file mode 100644 index 0000000..e48d316 --- /dev/null +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/UserbhService.java @@ -0,0 +1,16 @@ +package com.rehome.adminclientappmqttserver.service; + + +import com.rehome.adminclientappmqttserver.entity.Userbh; + +/** + *

+ * 服务类 博贺电厂 + *

+ * + * @author huangwenfei + * @since 2025-02-11 + */ +public interface UserbhService { + public void saveByUsernameBh(Userbh user); +} \ No newline at end of file diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/impl/UserbhServiceImpl.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/impl/UserbhServiceImpl.java new file mode 100644 index 0000000..200a166 --- /dev/null +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/impl/UserbhServiceImpl.java @@ -0,0 +1,30 @@ +package com.rehome.adminclientappmqttserver.service.impl; + +import com.rehome.adminclientappmqttserver.dao.UserbhRepository; +import com.rehome.adminclientappmqttserver.entity.Userbh; +import com.rehome.adminclientappmqttserver.service.UserbhService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +/** + *

+ * 服务实现类 博贺电厂 + *

+ * + * @author huangwenfei + * @since 2025-02-11 + */ +@Service +@Transactional +public class UserbhServiceImpl implements UserbhService { + @Resource + private UserbhRepository userbhRepository; + + + @Override + public void saveByUsernameBh(Userbh user) { + this.userbhRepository.save(user); + } +}