From 2df1380a4520b9281dc09c674d22a72cb150e49b Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Sun, 18 Sep 2022 02:04:56 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=B0=83=E6=95=B4=E6=9C=BA?= =?UTF-8?q?=E5=99=A8=E4=BA=BA=E5=A4=B4=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assets/images/avatar/github-color.webp | Bin 0 -> 2918 bytes .../web/assets/images/avatar/github-dark.svg | 12 +++++ client/web/assets/images/avatar/github.svg | 12 +++++ client/web/assets/images/avatar/robot.webp | Bin 0 -> 5520 bytes client/web/build/webpack.config.ts | 4 ++ .../services/subscribe.service.ts | 2 +- .../services/simplenotify.service.ts | 3 +- server/services/core/user/user.service.ts | 48 +++++++++++++----- 8 files changed, 65 insertions(+), 16 deletions(-) create mode 100644 client/web/assets/images/avatar/github-color.webp create mode 100644 client/web/assets/images/avatar/github-dark.svg create mode 100644 client/web/assets/images/avatar/github.svg create mode 100644 client/web/assets/images/avatar/robot.webp diff --git a/client/web/assets/images/avatar/github-color.webp b/client/web/assets/images/avatar/github-color.webp new file mode 100644 index 0000000000000000000000000000000000000000..c1a81c6b4917951cf694a2abc74dd95a2f2987a4 GIT binary patch literal 2918 zcmV-s3z_s%Nk&Fq3jhFDMM6+kP&gn`3jhERK>(crD(nF406uLrmq#QcA|WXBnc#p8 ziA~%s;lKkjD))T(Kls1zU%CF*wfFDejX7kH&!%4?`Wy1!=m(+?FfZ7yk-lNSW`AkD z<~<|&0DoNnY1Xai6XnnQvGCvhgZ?k>54I+%7oxj6^G3uM7iYh-8EFH3lXAQKDQX8{ zJvwgCj;Xsb_uSL}^NY@RfrP?|)H_MgR-0}pa7gzMBdTswi=(x}=YdpeoX3v(7Jp-# z_n(ffM$##2?^(CpB&3+oBUqV2$&Q%FJaF6ztFiyW7;Su@on#U(_FH}Ee34Bk+b05k z!&FUUkp8}#OSHd7wkU%!z`H6fJV0ci=mH4qzs7#OI@)b`BYFv6DM4pj*hTqV`W| zh>I(!6D{5Z`zt$2@*>3tU`M}TuJO15yp#lm9fsmH%NZM&{)BoC19f2K?Tm8@M-*65 z|K4{0+ufW-kXQACIrg%{%=fQbd(W)eHN@DqcTWeT^e}2};?_+>5m*4vxj&m1vj!*x z^SXOG;3b3$ZYK}!|N9uJS|mH8sWf6t)IS&Z=sm}jPjl-=#MEiKEL-&gFeWL2gIIUa z!7HI~xIB_FexCFS|NZ6;EZw0VP_x0oojpLc}?gS8Shp?L2-XQ$?jWy@7=5i%4qtnP$9WTs5_;YzUR2KXuoA@e{_1! zimRz)6H1y<6k78b^g4i4%*SxkTC*DHHJakk616-ZETjLk03QLUC_(cNxjsQBVF!lU z#)RZy%$)8uDG)6U;hp2zxz?;;K*3Y(8Mpy+ZR{pgk#W?2=P#>3=KuD?0cL*F7)Q|P zf;&&ane_otds5hgaRdu=3s7&=nVYfUl?$C8(8WW7ygWnPf&dIE0=8iAB&c_z$(T`P z6Z^nwog+O#MlV{SsnfX&dTQHl=d-y8|1m|ryn0FV%{MlWwCerkiYx4Q zq+i+K$Ta*DfP)d_VI$}r)EA7Om6{({G*1mHaH7Z$$c@cUqkEnGgtI0lEUdg3ey6x* zEZ0A(#D0%QZ%=7c>E3^$z>rFP+t!;Vl%Ceg*Wm3=7m+-$nTUe*aWhIOZ~esds&D&J z$)o)pjp2iNsHjc-*#E01S_?%v0MZ}10~hZbdde4+9pp>P(8}zKgdn2P{TZ*mN;M5a zv4G6-B2S}1@Kl@OD*SwRCyE!~PHvv?35OJMv%oCp+N1GT0!`|oO5u+y;4RIRoNgkj z@GTG@>1_)8@b{kCJ5xvh{kXQ!Wn;E%j367fL!Z#^4okRREfq+IhGDJJ+(CdFON33k zA#7GB|5lsLJ?mZ@lurvnO-dlFlip{mZ!L_r|1>|9&AC9Z=Td!bC+TWe&?b$D{X-+& zGw8H?7_?@<>zZz#7~coItLWe&W6g1L(WEo|Af`m$h@12x&5f%P+v zd0wSs4)@(w>rS8dfBT;C(p8S&gPlfg(d==)v$~3;KFG9%Uw|~>d@&4Zu7$;D57(cN z0w;n|hXZYw=2=T)z%3&b5hdU5P$YPRj3jTExrpjRK_&T1B8c_z@*&qu)bq&gyZi)M z!kbPgW)K|K#T`oPH&+48b1+W(jExjZj1N@)#eo>-El;UqRuek%ga#rA{T%oR!2=rXQgyBz0E>P@1^Vu0APNeJj@vzuqPy=4FRUV1;!y z@+NEQi2G#YD6@b7>4|0l0jEv2%e@q$Ekf@>Av%Vs*J@QZ@Wf2UdO?AdDDP0Vlsoex zNDL+4kwiXN$bySC-{>0cW!O*xee7yDRFIJQL9d4Guw_&VcT!OfXzY(>!R-N*-#WmX zyOzzrw$d}{*qsyCc+JjNsD8iXA(e2#AIH#n;5rs#!^dQqUC_3N$h_k4cO+u+umP`j zI;G~R011172=!-rR-gcCl7uvJ{8>9k?i)!vBhZb(mM{?9*_m#Uld_{>&vx5_U7xt! zvyB3k3$ch&S_ziadRu3r&WGy*m9q^h_HCI0^2#BdNVyStY`m{m@Vj;X?vrij6Ab@M z6jaKjh|t4@G}5&)mnbAngb2wJy)?tJW$_pc5E22J$@bX?AyS!pTDTU-aT_Elq)mD$ z2}yV#q?62#&&Lodl)-O=YiV3*L;+4~()Xn}XjsIjoOQ0WG#VXy|E%sOzql`}nBGkQ6SDc$phqviUNuWTNqKP`@qWL)f^^)@`IzO&AcfJDL@S`3^A9tfR|oU=#VCpsdIK^K|j4x1N`w1>ieI9Xor+{%qKgcEb9oTwMqFq!RPSJ;e&$ zlE3mk9Yc5CLm&0V4z=I;70;i}gw=QX3g-0{!g4YAbsN=LJR5w96&jqx?Kujn+Uv}W z@Xthc6BJ4O@!BU9@!2zJg%W?nCS=44*xp0=gu{AVdr(j2-Yod9o3a*joGM+k?98*f za>4Aiu>4xyJEq_&5b`#=nC%I}nJ{VfJrPXa5q-2|lc4>3+`mSzHoUt^RL@4SWYd1w z?cQ>)=g!zy!=s_DM#eYFX?U|?fWEPADJ~(@T~^+33c1RpM5a3ZW3Zu(Yp1iA^D@Qf zZr9L_C+3BW*zU_VlAI6t(iFeF;+9bqwxtk$98|%nOE=fo@y1j5BkOo#L)B-{YJ%>q z(^)s+|E-GJ%Wk*h3_hS)f^mJYw6W`Tv-w~jiBnp@aS(9vw`hjUv74x3|D3a^!Mn*j zUO*fGFq!Wj9+s+B~BDJweEXa^~319;)f)D4at%g~RE~2RZw_eY4WgNzach_QjVgx03i+!5Qxx5Nv#F6&O0b(9S*Sd7?8s5( zE_s9-><^J_j*ifH`GDC-YqvEfor+$EM;_pb28QUDFqWZg>!sR$PN%<-T;@G6!VC2a zCF)9d(zp1BcP0XCI`WsUYck;RarPuE;jgR$Vj~MYp$J*JQH; + + + + + + + + + + + diff --git a/client/web/assets/images/avatar/github.svg b/client/web/assets/images/avatar/github.svg new file mode 100644 index 00000000..a7ca7f54 --- /dev/null +++ b/client/web/assets/images/avatar/github.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/client/web/assets/images/avatar/robot.webp b/client/web/assets/images/avatar/robot.webp new file mode 100644 index 0000000000000000000000000000000000000000..7d5c4873d7adec4d8544fd4c290f7be07f52d9b2 GIT binary patch literal 5520 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 literal 0 HcmV?d00001 diff --git a/client/web/build/webpack.config.ts b/client/web/build/webpack.config.ts index 53b0597b..3eea23e5 100644 --- a/client/web/build/webpack.config.ts +++ b/client/web/build/webpack.config.ts @@ -83,6 +83,10 @@ const plugins: Configuration['plugins'] = [ from: path.resolve(ROOT_PATH, './assets/images/logo/'), to: 'images/logo/', }, + { + from: path.resolve(ROOT_PATH, './assets/images/avatar/'), + to: 'images/avatar/', + }, { from: path.resolve(ROOT_PATH, '../../vercel.json'), to: 'vercel.json', diff --git a/server/plugins/com.msgbyte.github/services/subscribe.service.ts b/server/plugins/com.msgbyte.github/services/subscribe.service.ts index dfed0aad..580f24d8 100644 --- a/server/plugins/com.msgbyte.github/services/subscribe.service.ts +++ b/server/plugins/com.msgbyte.github/services/subscribe.service.ts @@ -60,7 +60,7 @@ class GithubSubscribeService extends TcService { const botUserId = await this.broker.call('user.ensurePluginBot', { botId: 'github-bot', nickname: 'Github Bot', - avatar: 'https://api.iconify.design/akar-icons/github-fill.svg', + avatar: 'https://api.iconify.design/entypo-social/github.svg', }); this.logger.info('Github Bot Id:', botUserId); diff --git a/server/plugins/com.msgbyte.simplenotify/services/simplenotify.service.ts b/server/plugins/com.msgbyte.simplenotify/services/simplenotify.service.ts index 5be2d62d..bc0e8c05 100644 --- a/server/plugins/com.msgbyte.simplenotify/services/simplenotify.service.ts +++ b/server/plugins/com.msgbyte.simplenotify/services/simplenotify.service.ts @@ -70,8 +70,7 @@ class SimpleNotifyService extends TcService { const botUserId = await this.broker.call('user.ensurePluginBot', { botId: 'simple-notify-bot', nickname: 'Notify Bot', - avatar: - 'https://api.iconify.design/icon-park-outline/volume-notice.svg', + avatar: '/images/avatar/robot.webp', }); this.logger.info('Simple Notify Bot Id:', botUserId); diff --git a/server/services/core/user/user.service.ts b/server/services/core/user/user.service.ts index d6a15cc0..96e8e1bc 100644 --- a/server/services/core/user/user.service.ts +++ b/server/services/core/user/user.service.ts @@ -602,24 +602,34 @@ class UserService extends TcService { async ensurePluginBot( ctx: TcContext<{ - botId: 'string'; - nickname: 'string'; - avatar: { type: 'string'; optional: true }; + botId: string; + nickname: string; + avatar: string; }> ): Promise { const { botId, nickname, avatar } = ctx.params; const email = this.buildPluginBotEmail(botId); - const bot = await this.adapter.model.findOne( - { - email, - }, - { - _id: 1, - } - ); + const bot = await this.adapter.model.findOne({ + email, + }); if (bot) { + if (bot.nickname !== nickname || bot.avatar !== avatar) { + /** + * 如果信息不匹配,则更新 + */ + this.logger.info('检查到插件机器人信息不匹配, 更新机器人信息:', { + nickname, + avatar, + }); + await bot.updateOne({ + nickname, + avatar, + }); + await this.cleanUserInfoCache(String(bot._id)); + } + return String(bot._id); } @@ -634,10 +644,22 @@ class UserService extends TcService { return String(newBot._id); } + /** + * 清理当前用户的缓存信息 + */ private async cleanCurrentUserCache(ctx: TcContext) { const { token, userId } = ctx.meta; - this.cleanActionCache('resolveToken', [token]); - this.cleanActionCache('getUserInfo', [userId]); + await Promise.all([ + this.cleanActionCache('resolveToken', [token]), + this.cleanActionCache('getUserInfo', [userId]), + ]); + } + + /** + * 根据用户ID清理缓存信息 + */ + private async cleanUserInfoCache(userId: string) { + await this.cleanActionCache('getUserInfo', [String(userId)]); } /**