From 374e1678ececd02d9f666b2787b459905398e371 Mon Sep 17 00:00:00 2001 From: sige Date: Tue, 28 May 2024 10:27:49 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=B8=E5=90=8C=E9=80=9A=E7=9F=A5=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E5=9C=A8=E6=9C=AA=E8=A2=AB=E5=A4=84=E7=90=86=E5=89=8D?= =?UTF-8?q?=E4=BB=85=E8=A7=A6=E5=8F=91=E4=B8=80=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Readme.md | 2 + app.db | Bin 757760 -> 757760 bytes .../dao/model/UfMdbNotification.java | 80 ++++++++------------- 3 files changed, 33 insertions(+), 49 deletions(-) diff --git a/Readme.md b/Readme.md index dfe89ab..c06cc5b 100644 --- a/Readme.md +++ b/Readme.md @@ -6,3 +6,5 @@ MQTT 服务器管理员账号 :admin/[admin@emqx] +MQTT 服务器安装路径 : C:/Program File (x86)/emqx-5.3.2-windows-amd64 + diff --git a/app.db b/app.db index f30aaad9a2e9af0be5458a153966c6b419fbf7e5..1236bce150a0e2f2a89066d0bb31f9580c92faf7 100644 GIT binary patch delta 1200 zcmchV&r1|x7{}+`8Fy!Q-5sSw`++^iS&qy^h zQq7ERs~_Sx?hVs(CXwR+xw=~eLzDgYvRf0;2~K*N{*r!@7E?3vg%lB&YJWs0q7y;0 zLSjO)3MK+1kAq;zcpMQ@=fO!<_JZKYo&+z{b0_$USZEfd4*qNWNc>2UDfC5zxXA6Q zAh|7=+K)hNU%4ULSj<)?JGWQf=Vh=v*mdAT4Dc0HXb%c<9iJ>8EpLuBX0zZzvGOh7 z20AJYdrl{J3|MCecF4yL9zRy8-@o%k&+OiIPj!)|8yI5bs1Vz<1Z}J!NT@+AjbH`S zlGl5c-W~n?5EPPiH^PW8EsTJl(n@))hgDVZ^HW`lSs~QUa1u@rq;A#D1T8)9YBS}- zf>>-UAKKKN_Z-#n6kS_jM9l5S!n$)u` z#UZMqVyLjc3>hgomE;J@m^vwU@hfx<-FbEsS;#Cw-7FapJC+75-PRy+T}-H5quDw| zW1WLQ-Z0-8*K#%ts2CYjHOpO*H9*fnmZRw^^jLoo6UT(Mt=SN3#MMcZS}I2LzX4)q zV#ZYTau-+w)L4e5|H0}e{fLEVIxD3_Fyz3 z*Cm!`Q|jZSS;?24Nqy5Ti+r~<+|C!lUrePZEFb*CfUL|1zxv{OL9ON#Y2%CW*7Y4* zHOvnqe#rZw;D^c>^0LA(<`Qarmaj()2)k%kK?}pO^SUl delta 2877 zcmbtWTa1-g6+X8)bDu$xVA0@of({in?E8f@6#>QCT4-eyO0nHnYe-82cq`Te#?(uS zqGP6MA1swpk{YWx%4lk06E!B9nrKX{iHRD4jK&8O6CTh+zkM)101p_mv;Ke2{NLJZ z?RELqIeK!#(UTiayx}$58;!>IA>V=wH5$zgUs^Ak+s{7m+{RU7-BXRp7bnh7e0^eQ z{FkGD8a+9@G_Hm&ja^rUzerm;>+%eO9{oH*!4$RHpwxTosv4)>xQ~MS!-#XInOg8p3=7u(}9>Tl7 z7B+0&*Xp#-H`W0(vv6(;Yc{uIyLDmRwx0~PIhjnxFr_G0& z%Mrx;8@tyH%&y$KTxOpmOPN?D0+GQaVy)xEj9MpjHYN$j=8w0gHeH*AX-pIq%xU!mp%S;UMC}xE2*lxtJQDmt7jIa28dXb5fEV% z@kSL=N_NKjjH90X*AuOqud%+iuO2OxPVh)npdRW02Ps)dW;96%)5>1g`b=M4aTQ8n zmKd58ktI_&?-fy$aqX4niubKwdsJOHSV5;VMO{;NQlA^Pfga!Wn}vL&cC^@ z9-Oc`(@YWJ?GiS!yh{E@R8{&@99m`yFMK9)(3OkKfQkX z5r5D>bZC0hk?G(M#|Q5^fbU!CjxfU{cL)v>j01VtAKHI=s_H%++W+6rQc3EjAA9Uz z_UYJkt2?{$*!~qFNG@$ogd2uJNnRr76q)nRdhMKuDdd9(4;;LB?z2m0PMv@0r3;^b z_TuNxEIs?gh3C#LedqMlrl}`i`SI|syRRJEymBm0SyJO1QqCfgJO|>ejRbXBq=PLP z>itK3?3K<; zd#L&6i4~2%j~y9#UFYZHe{KA1=+VJX4?i__shbB5jNLQw!O`CgKQj61(5cq(@gI#p z-Mw|>kDZSX@`1mMzKB~i*0yJxp-4@WFT^QCUwV!rXOt4^Q&LHZWD32%0=>07#n?mh za#ouWedx3IAcSa=lhOs}K2VW56|G{BMEj_TlmZwo1BsF)FaWnQ#(fniTu{npMVN(I zNu@_EYDLf;MJJbBWcI!aG{tHzJtIN)5|CDbM=C8jZL%$J(Ph53B9#sx(PBuBXjdt? zCQjm!i-;;3+{~7H`%XH|g#;hzpx~s661IIJ(J1Q!M`I|urvklH1r5W{w=NUeqfC(? zb!9_TJ6zF)`P~&s1Jn4YB`#O81UbUV+W#^Lk3wdS@%LAtOiFtxH1YUOq_eQ?1tpPb zf&L4&F#f&@w1`loMiU#8g~7~7&vWQ_j@U#QLr`(HA~Pm~iY1fGc};nx}@zD7?1($l_U7A0VhG_1S6hf{1_fNqK{+WxwhS_{cRm4DlUo$ z!poR3*n%O+Ys*k=&I|L7dZeWVt%Eb9^>|>mAWa$Ui|Q~o1eT)N)(0|arT2mqj^8}e z)k$l4APM}SDbk-3-&%n&JH*mhw4e%=u27m*aD#vur?EISbW252WYN^FiHZi&eZKK4 z{P6lkXK+p9lh{1k89LnDiP3mxvoreT_G;`_wL23-t&d-=oxy(D{LyCTGo6=PkT#_52OwR@ mAY=$Kyx4hpWRTvp9>;tS@&M!< notifyData = Map.of( -// "action", action, -// "data", data, -// "task", task.getUUID() -// ); -// var notification = new DiMdbNotification(); -// notification.type = "task-action"; -// notification.data = DiJsonHelper.objectToJson(notifyData); -// notification.status = "new"; -// notification.save(); -// } -// -// // notify error -// public static void taskError( DiTask task, String error ) { -// var notification = new DiMdbNotification(); -// notification.type = "task-error"; -// notification.data = error; -// notification.status = "new"; -// notification.save(); -// } -// -// // notify warning -// public static void warning( String message ) { -// var notification = new DiMdbNotification(); -// notification.type = "warning"; -// notification.data = message; -// notification.status = "new"; -// notification.save(); -// } - // notify error - public static void error( String message, Object ... args ) { - var notification = new UfMdbNotification(); - notification.type = "error"; - notification.data = String.format(message, args); + // create notification + private static void createNotification( String type, String data ) { + var hash = DigestUtils.md5DigestAsHex(data.getBytes()); + + // check if exists, ignore if exists + var notification = UfActiveRecord.findOne(UfMdbNotification.class, Map.of( + "hash", hash, "status", "new" + )); + if ( null != notification ) { + return ; + } + + notification = new UfMdbNotification(); + notification.type = type; + notification.data = data; notification.status = "new"; + notification.hash = hash; + + var dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + notification.time = dateFormatter.format(System.currentTimeMillis()); notification.save(); } + // notify error + public static void error( String message, Object ... args ) { + createNotification("error", String.format(message, args)); + } + // notify action public static void action( String action, Map params) { var data = Map.of("action", action, "params", params); var dataJson = UfJsonHelper.objectToJson(data); - var notification = new UfMdbNotification(); - notification.type = "action"; - notification.data = dataJson; - notification.status = "new"; - notification.save(); + createNotification("action", dataJson); } }