mirror of
				https://gitee.com/ThingsGateway/ThingsGateway.git
				synced 2025-10-30 23:24:00 +08:00 
			
		
		
		
	Compare commits
	
		
			817 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 7f4e4017ce | ||
|   | 635970f37b | ||
|   | 106e740220 | ||
|   | 3e6420ba6f | ||
|   | 79be8010d5 | ||
|   | 0b6e679f3b | ||
|   | 97c43ad2b9 | ||
|   | cbf978745c | ||
|   | 63dceada90 | ||
|   | 366aade8b4 | ||
|   | aeb505e3d9 | ||
|   | f9482e4773 | ||
|   | 57dfc22ff7 | ||
|   | adc489b6ed | ||
|   | 0623684315 | ||
|   | 68afccd859 | ||
|   | 99eef8fb28 | ||
|   | 47e7685d39 | ||
|   | b6ea596ade | ||
|   | 44d60b469b | ||
|   | 51087408df | ||
|   | 96226d9e6e | ||
|   | 28f0f62424 | ||
|   | 2e772a8cd4 | ||
|   | 3fd192f0cf | ||
|   | d16ae81961 | ||
|   | 211a8e093e | ||
|   | 84010a51d6 | ||
|   | e9700ea19b | ||
|   | e81ec68072 | ||
|   | 6096e97708 | ||
|   | 6f302b66b4 | ||
|   | b6e41890f7 | ||
|   | be5332a048 | ||
|   | 4d72aeb0cd | ||
|   | c7c3c35100 | ||
|   | 2f0df3c552 | ||
|   | e6effcd921 | ||
|   | cd462b9523 | ||
|   | 7e2e17d38b | ||
|   | 665d616a06 | ||
|   | ced90f5bb9 | ||
|   | ca0ddb6cb4 | ||
|   | 3d733813e1 | ||
|   | 45ddc0b154 | ||
|   | 87294497f3 | ||
|   | 5f45f9c0d0 | ||
|   | 7f78c06793 | ||
|   | 8ea5b7eebc | ||
|   | e49cd511af | ||
|   | 15c88646df | ||
|   | f47919543d | ||
|   | a95291d9cd | ||
|   | 033deb3d29 | ||
|   | 923994c1f4 | ||
|   | 3d45b839b4 | ||
|   | 55d1efa212 | ||
|   | 21d794a0e5 | ||
|   | 614022a78c | ||
|   | c00688e23a | ||
|   | 5c69917d19 | ||
|   | 6a5eb75b6c | ||
|   | 727c55eaa2 | ||
|   | 9b03173ec5 | ||
|   | ab95855d6d | ||
|   | bb84594c6b | ||
|   | 97392c76b1 | ||
|   | 53aec2b306 | ||
|   | a0a381dc63 | ||
|   | 4fa95edeec | ||
|   | b944f1d70e | ||
|   | 0f1a5d0085 | ||
|   | e7e10222e7 | ||
|   | 87c4fda588 | ||
|   | 0ff820de6f | ||
|   | 0dcf55e6d9 | ||
|   | a69842c910 | ||
|   | 318f635e4d | ||
|   | abf0d72316 | ||
|   | 5cd89c8844 | ||
|   | 501c1af38c | ||
|   | 8526e130d9 | ||
|   | 76fd08eade | ||
|   | bfe48ae9d2 | ||
|   | 8547cdba7c | ||
|   | 00d0cd631d | ||
|   | 04460d13cd | ||
|   | a17a15e5d7 | ||
|   | bfe2465658 | ||
|   | 4568987785 | ||
|   | c0e5a1419d | ||
|   | 23ac7ab748 | ||
|   | 5622dc74a8 | ||
|   | 528986f4f0 | ||
|   | e6b8ff3f91 | ||
|   | 3fc3c5296f | ||
|   | f4f2a14a31 | ||
|   | fa3f464cb6 | ||
|   | bed20538ae | ||
|   | 3da461c6e6 | ||
|   | 9c73e8452a | ||
|   | 750dab69d3 | ||
|   | 702d0da47c | ||
|   | 3a955b1e53 | ||
|   | d408bd93e8 | ||
|   | 63fd9eb1de | ||
|   | 4718ab6ddf | ||
|   | affd4b3a26 | ||
|   | 6a660dbcda | ||
|   | 5ff3af8b48 | ||
|   | 9d49070f93 | ||
|   | 5b3994a1dd | ||
|   | bb1e62c580 | ||
|   | 29cc776908 | ||
|   | d2ef60b2ec | ||
|   | 41ea496d41 | ||
|   | c69bb38929 | ||
|   | 23b3f8494e | ||
|   | 0ff94eec1b | ||
|   | f67a638565 | ||
|   | 778cf71c61 | ||
|   | e2da083b48 | ||
|   | dcc48c0d4b | ||
|   | 2446b4a591 | ||
|   | a973d633c8 | ||
|   | c3b11e6e0f | ||
|   | 44bec2d99e | ||
|   | 0d59d0a3f6 | ||
|   | ddc8372b09 | ||
|   | ea7325f4e0 | ||
|   | 6048f95415 | ||
|   | 5682705b8d | ||
|   | 6c3b82607d | ||
|   | 486c9f4ebf | ||
|   | 7c8adebf2d | ||
|   | ce98bb0dc1 | ||
|   | 60b49a4296 | ||
|   | 5d0a2ffae0 | ||
|   | bbcf7c722a | ||
|   | 66574eec6d | ||
|   | 305df3a42c | ||
|   | 323c6f4270 | ||
|   | c056b2b14c | ||
|   | 02ebb07fd8 | ||
|   | 59db0890c3 | ||
|   | 3ea0d9ed3a | ||
|   | 0371d11dd5 | ||
|   | 12f1ebaee9 | ||
|   | 5202cc22d1 | ||
|   | 07a34bdcbf | ||
|   | 27806da4be | ||
|   | a15dd1a3ce | ||
|   | 6cc7451c7c | ||
|   | 652aeee782 | ||
|   | 8e1e887b8f | ||
|   | 6601a2de64 | ||
|   | 75a42ffc32 | ||
|   | 8a80a52f5f | ||
|   | b373a434ba | ||
|   | cd78fdafe6 | ||
|   | 7a1b4c6db7 | ||
|   | f2c7664033 | ||
|   | 12b295f067 | ||
|   | 3ee46da40f | ||
|   | beadaa7212 | ||
|   | 16ef09426f | ||
|   | b8c1f1f5a9 | ||
|   | e027b5cbd6 | ||
|   | bf1bd73ad1 | ||
|   | 86fc95119a | ||
|   | b3a76ea17b | ||
|   | bababd9d53 | ||
|   | 8cd5180531 | ||
|   | f1ccbade8c | ||
|   | a66f4b0417 | ||
|   | ff495b2261 | ||
|   | 90e5824212 | ||
|   | 3d64021062 | ||
|   | fb8ed7428d | ||
|   | bdc273c10a | ||
|   | 2d96cffdc7 | ||
|   | 4356fccbcd | ||
|   | a169fd4ce7 | ||
|   | dcd418139e | ||
|   | 0cac2062d3 | ||
|   | 854c5d4ade | ||
|   | 0f96c6ec84 | ||
|   | b219bd66c1 | ||
|   | cb52f2c0b3 | ||
|   | d3273e03ef | ||
|   | afbfd963f3 | ||
|   | 2cd101c5f3 | ||
|   | b10bc24dee | ||
|   | 51a23df861 | ||
|   | 03a0a9dad9 | ||
|   | 362c0affbe | ||
|   | d5b523479f | ||
|   | 7719b8f6d7 | ||
|   | 3656c0d524 | ||
|   | 8b9e0dd6ea | ||
|   | b3921b1037 | ||
|   | d7d96e5dbf | ||
|   | 3934395b7b | ||
|   | 04fbe9a529 | ||
|   | badd6dd9a2 | ||
|   | 059082456d | ||
|   | 405b68e22f | ||
|   | c90bf6692c | ||
|   | b5ea5d0cc5 | ||
|   | 243617a1e1 | ||
|   | 9e703edd59 | ||
|   | d6c2cf2810 | ||
|   | ae7811acfa | ||
|   | e55731c099 | ||
|   | 9df5c74da4 | ||
|   | 8b75f9f785 | ||
|   | bf12428cf4 | ||
|   | b551df978b | ||
|   | c91d85d2f0 | ||
|   | 965237fa1f | ||
|   | 24cd9afc06 | ||
|   | 602fdefebd | ||
|   | 7e7818aa17 | ||
|   | 27a6023a6a | ||
|   | 3861879900 | ||
|   | 807eeb8351 | ||
|   | 045fa53d58 | ||
|   | 69d405ece7 | ||
|   | d3dc4d0c5b | ||
|   | 7beba1188e | ||
|   | 9779ebe12c | ||
|   | f72cfaa093 | ||
|   | cf8ccafb4a | ||
|   | 7fe281b0b8 | ||
|   | 5f70e9574f | ||
|   | 4be51923ba | ||
|   | a72c78f4a4 | ||
|   | b4d32a6de1 | ||
|   | 8a6b2d5daa | ||
|   | bebadeef14 | ||
|   | 3551be67f0 | ||
|   | 1103950b25 | ||
|   | 9d06e01cec | ||
|   | 24be946b7e | ||
|   | f56d2fc60f | ||
|   | 9f8356f409 | ||
|   | 8e6345d938 | ||
|   | 0eac78bd1c | ||
|   | 21db2502d0 | ||
|   | 38c3492123 | ||
|   | 6376bff476 | ||
|   | 38495a3ebc | ||
|   | cf00897be2 | ||
|   | da640f24ec | ||
|   | ed6a777c42 | ||
|   | 81af4485d3 | ||
|   | 94d8f0237d | ||
|   | c5e579dd38 | ||
|   | 7865e76ee2 | ||
|   | 4d37212cc0 | ||
|   | 9ca43f0bb4 | ||
|   | fe8d262175 | ||
|   | 493d6e7165 | ||
|   | 17b630bcd8 | ||
|   | 018c5ad3b4 | ||
|   | a14b4da977 | ||
|   | 01b4597cc7 | ||
|   | 0b083ccc1c | ||
|   | ca22cb0eae | ||
|   | bcbb8e5f8c | ||
|   | bea286cdd4 | ||
|   | 892d2ee8d2 | ||
|   | 7440608c14 | ||
|   | 6246f0295b | ||
|   | 53c39d9b43 | ||
|   | 9a50b60031 | ||
|   | fd74527320 | ||
|   | f91fb522ac | ||
|   | 7019c02b18 | ||
|   | 94f8422b9b | ||
|   | b25c01567a | ||
|   | b9329885de | ||
|   | ac88c4cff9 | ||
|   | 9674f2d238 | ||
|   | 38c9ecb6f1 | ||
|   | be9e9cdd5a | ||
|   | afdaf07446 | ||
|   | 5caaf10225 | ||
|   | daffc3a776 | ||
|   | 34c9748ce5 | ||
|   | f17acbf4d1 | ||
|   | 229f56ce2f | ||
|   | 0847bedc51 | ||
|   | 9e4546c305 | ||
|   | 97b01bf26a | ||
|   | e7011628d0 | ||
|   | 044ffdecbd | ||
|   | 1a06a3543b | ||
|   | 5fedc0bf1e | ||
|   | 7a881f867e | ||
|   | dfe73a6cfb | ||
|   | 45d0fb27ad | ||
|   | 31890af61d | ||
|   | a54b3ecc15 | ||
|   | c37cd1bd51 | ||
|   | 0e3ee89cbf | ||
|   | a049176c14 | ||
|   | 5ef2b0089e | ||
|   | 1cc4899593 | ||
|   | 26d1390be9 | ||
|   | dc65584fb3 | ||
|   | b3d5a708d5 | ||
|   | 904a5d296b | ||
|   | cc82e6a47a | ||
|   | a9d02ec854 | ||
|   | 6b5a2d3767 | ||
|   | 10d9060b94 | ||
|   | 8441839c01 | ||
|   | b669f5838f | ||
|   | 1a942f9ce1 | ||
|   | ae840758f7 | ||
|   | 082c08e5f9 | ||
|   | 74a43557ab | ||
|   | 184271789d | ||
|   | fa61b0cad8 | ||
|   | 7b197a90d1 | ||
|   | 62384af2f6 | ||
|   | b466202a1a | ||
|   | 7ab38c18d8 | ||
|   | 39841ee43e | ||
|   | e419800d98 | ||
|   | 63c99ab69a | ||
|   | e2a8fd2279 | ||
|   | bbde520471 | ||
|   | 45fb12f98e | ||
|   | 4be3dcce50 | ||
|   | d12a41c769 | ||
|   | ed9a58c9ed | ||
|   | 4389cea5a1 | ||
|   | d24854920b | ||
|   | 9902443bee | ||
|   | 8040b2ef16 | ||
|   | 4533680b10 | ||
|   | 3b28175135 | ||
|   | 8e22812265 | ||
|   | 409bc91b9e | ||
|   | 61fe543a2a | ||
|   | 8a949a7e64 | ||
|   | b0dc9fb97a | ||
|   | 83114d1002 | ||
|   | 94a25a903f | ||
|   | 4f402f9e55 | ||
|   | 27bb2e3dcc | ||
|   | 66cc52f6ec | ||
|   | ed1367b116 | ||
|   | 5c055352e4 | ||
|   | 8dcff5ada1 | ||
|   | 4b8b23d7d5 | ||
|   | e576f6aed3 | ||
|   | 97ab04da91 | ||
|   | c6361bb36e | ||
|   | b0b3dc225d | ||
|   | 9cbaba192a | ||
|   | f511598e13 | ||
|   | 5ffff3b7aa | ||
|   | 24c4fa1c4f | ||
|   | 7f312c1273 | ||
|   | ef5c226c81 | ||
|   | 3f029cf799 | ||
|   | 5bf64a8bec | ||
|   | 89f9c537f8 | ||
|   | e8d7f57818 | ||
|   | 9b42fa78e7 | ||
|   | 96d98e8f39 | ||
|   | 1f3a281e78 | ||
|   | dab4b66ee0 | ||
|   | 64dd192ddb | ||
|   | b0a5c383d0 | ||
|   | 4836cc99eb | ||
|   | ba33873354 | ||
|   | 12c838cab0 | ||
|   | a83a1c83a7 | ||
|   | 2234f47170 | ||
|   | 4bae1b17fc | ||
|   | 6a7a0e0fa6 | ||
|   | bff987c55f | ||
|   | e467006913 | ||
|   | 1d646d4a6d | ||
|   | 70bd4936a1 | ||
|   | 5ae7add6d2 | ||
|   | 02b206ce7c | ||
|   | 2ea626a567 | ||
|   | 653909ec11 | ||
|   | 1d7c148eaf | ||
|   | 94a7e130ca | ||
|   | 609abacdf0 | ||
|   | 033ff2e49a | ||
|   | 00a9bf0641 | ||
|   | 100f322456 | ||
|   | 2251e08d30 | ||
|   | 14e9beef53 | ||
|   | c7cce23d54 | ||
|   | 7becf32352 | ||
|   | 741eda9f4e | ||
|   | 473f51481c | ||
|   | 684f9bd11b | ||
|   | b4b7f0c360 | ||
|   | cf42d02628 | ||
|   | cc9a9eab7b | ||
|   | 784d6abc9b | ||
|   | 0eafc07184 | ||
|   | 7e9499bd2e | ||
|   | d01a52aa95 | ||
|   | 6bcd492980 | ||
|   | 96b15da04b | ||
|   | e0f1801693 | ||
|   | d195ad85c5 | ||
|   | 773f7b6c1b | ||
|   | 40f29fe399 | ||
|   | b19eb117c1 | ||
|   | f930ba5eff | ||
|   | fbbda6c230 | ||
|   | 47db4968e5 | ||
|   | 1aff2e518c | ||
|   | 24134ca49e | ||
|   | aadbe05a5e | ||
|   | 18eddf4700 | ||
|   | 0869ba7e70 | ||
|   | cba5db1c53 | ||
|   | 0aa5430e23 | ||
|   | 88a91828cb | ||
|   | 27af89f5fe | ||
|   | 6f6d483bfe | ||
|   | 915072c191 | ||
|   | 76077b92ae | ||
|   | f0d1a527a5 | ||
|   | fdb2a96d1c | ||
|   | 849e3ac187 | ||
|   | 5c4cf21c59 | ||
|   | 40ee3e5d9b | ||
|   | 77a7cc034e | ||
|   | 82b7881765 | ||
|   | 3515775267 | ||
|   | 10e12aa1c1 | ||
|   | 7fb4e62aa3 | ||
|   | 2605eaa614 | ||
|   | 8e97b4820d | ||
|   | 89af4cdb68 | ||
|   | 6099c1a25a | ||
|   | fd23758aea | ||
|   | 8ad0b89db1 | ||
|   | e7dffa3ff4 | ||
|   | 2772b5d2e2 | ||
|   | df6d9b5f70 | ||
|   | c9622d6d57 | ||
|   | 1f0b7c3c7e | ||
|   | c12245037e | ||
|   | fe6d2a50a5 | ||
|   | 7be84950f8 | ||
|   | ba212da222 | ||
|   | 122b833256 | ||
|   | 7c73479041 | ||
|   | 151f2e99ae | ||
|   | da367e813f | ||
|   | 9143dfe336 | ||
|   | 29914d6a72 | ||
|   | 0dbef72a97 | ||
|   | 3bb118bfe1 | ||
|   | 85ce3be077 | ||
|   | 064c2bf0a8 | ||
|   | c96d06ccc5 | ||
|   | a658dbb753 | ||
|   | bf5d5b629e | ||
|   | 241d576519 | ||
|   | 7807e9bdd0 | ||
|   | fcbf15fed6 | ||
|   | cd90a11209 | ||
|   | ff65707ea2 | ||
|   | b16026070c | ||
|   | 1b5fbf86d8 | ||
|   | 5eb1be8101 | ||
|   | 6a863cd26a | ||
|   | 87ebb7b6c7 | ||
|   | 1233a74307 | ||
|   | 221890acfb | ||
|   | 687c7e766e | ||
|   | ba22c407d3 | ||
|   | a8b9ed56b5 | ||
|   | 3004869e19 | ||
|   | 1145853fe1 | ||
|   | f1617a25b1 | ||
|   | 932be558d9 | ||
|   | ee3a37d3b9 | ||
|   | 5ac412a582 | ||
|   | 1625290bc3 | ||
|   | 1ec169ad49 | ||
|   | 53be552e44 | ||
|   | d3a75d46b9 | ||
|   | 256512c961 | ||
|   | 5c12ac5bcc | ||
|   | 02a2bcb113 | ||
|   | 1f0a01c725 | ||
|   | 6ea164ede1 | ||
|   | 65bae85ecc | ||
|   | 2fd7dcf4d0 | ||
|   | aa3bbbe038 | ||
|   | 6cb09a6f95 | ||
|   | 45868f05d3 | ||
|   | aac7401e20 | ||
|   | c2fc290edd | ||
|   | 330357fc36 | ||
|   | f4a3d6a64e | ||
|   | 2e0963ec81 | ||
|   | 897cb6e62a | ||
|   | 80868bd48e | ||
|   | b3df78c56f | ||
|   | 783a4259e3 | ||
|   | fcf19b8dc8 | ||
|   | 1f9f89817d | ||
|   | 7b94da7d85 | ||
|   | 164406f6c2 | ||
|   | 90ef2adc6b | ||
|   | d65f10f88b | ||
|   | dca0ece9e0 | ||
|   | baabc155c8 | ||
|   | 7eb94412d6 | ||
|   | 0fc8b24f85 | ||
|   | 88f6ef5b96 | ||
|   | 7442483419 | ||
|   | 9c61933c04 | ||
|   | 2b36a99720 | ||
|   | c2cfc42ba4 | ||
|   | 4f32704e08 | ||
|   | fccf43685f | ||
|   | 39135d81ad | ||
|   | ff4b10681e | ||
|   | 10b7908fc2 | ||
|   | 31790da8c6 | ||
|   | 4621201c47 | ||
|   | 692ac31dbf | ||
|   | ed1d163d55 | ||
|   | e931c9040c | ||
|   | f23cb48ea4 | ||
|   | c3b2b6b07b | ||
|   | f89bf590ba | ||
|   | fea17dc00b | ||
|   | dbb1069920 | ||
|   | afc4ccfaa9 | ||
|   | 38d55a1c07 | ||
|   | 5fca29f103 | ||
|   | 78f34b2ca4 | ||
|   | 8e8028e809 | ||
|   | 8dc70687f8 | ||
|   | fa22f9ee64 | ||
|   | b33c0d3f81 | ||
|   | 339009add4 | ||
|   | 798c823c4b | ||
|   | 14ad86f2a3 | ||
|   | a3a714dc17 | ||
|   | e8d8b0d41d | ||
|   | 17daad8f89 | ||
|   | e178263b3b | ||
|   | 4febbc261e | ||
|   | ef3a6942fd | ||
|   | f8ac2be62b | ||
|   | 25447c34e5 | ||
|   | 37cdf8fd48 | ||
|   | ac8e7dc959 | ||
|   | 8293382840 | ||
|   | d85a3e7743 | ||
|   | f3f5ffb5c8 | ||
|   | 99e6702c62 | ||
|   | e143c25078 | ||
|   | 3fb67972be | ||
|   | 61c04d4e09 | ||
|   | b22f728958 | ||
|   | 112be7e383 | ||
|   | 6a7f83fed5 | ||
|   | 4b9698a735 | ||
|   | ec3d203a6d | ||
|   | e77b8f5475 | ||
|   | da8bbd321f | ||
|   | 98fd011def | ||
|   | 9dccbc5316 | ||
|   | 03fa26daf9 | ||
|   | fbc41e3895 | ||
|   | f1a6d0c02c | ||
|   | 67f6bb7155 | ||
|   | 86282f596c | ||
|   | e0f24c795c | ||
|   | 7d44ed860c | ||
|   | 091094a24c | ||
|   | ba18ee518c | ||
|   | 513a031691 | ||
|   | cc79de1106 | ||
|   | bd90e8efb2 | ||
|   | 4bd88ff11d | ||
|   | d27ee61292 | ||
|   | 0c20b3345f | ||
|   | 0f3c8c7193 | ||
|   | 16761ec605 | ||
|   | 1069440cda | ||
|   | 60f5702f17 | ||
|   | ee70133e47 | ||
|   | 06a9fdeb2e | ||
|   | f14bd62004 | ||
|   | 67cbaf22b7 | ||
|   | 60b166dba2 | ||
|   | 66e1647ede | ||
|   | a1a35c00a5 | ||
|   | b02e3361c4 | ||
|   | 2b9ceaa25a | ||
|   | 109b5a9755 | ||
|   | cc4df86c10 | ||
|   | e93532c395 | ||
|   | 6ff688326a | ||
|   | eda5d2872f | ||
|   | dc88394f5f | ||
|   | ec85c9a2c6 | ||
|   | 1341638556 | ||
|   | 4875dfee11 | ||
|   | d834ba8bd4 | ||
|   | 6191067771 | ||
|   | 6c3a571163 | ||
|   | 5efb07e10e | ||
|   | b25ec18ce6 | ||
|   | f3cd281241 | ||
|   | 58b93cbf4c | ||
|   | 57fc0349ff | ||
|   | d0a2cea772 | ||
|   | 58d5801fb5 | ||
|   | e5f2e59798 | ||
|   | 1166921057 | ||
|   | aeb49576f2 | ||
|   | 7ef1fecef8 | ||
|   | fd630373b5 | ||
|   | d365d8f170 | ||
|   | dfa5e1172f | ||
|   | daf195898a | ||
|   | c61c0a39cf | ||
|   | 6137e6baa5 | ||
|   | fd16fd9ffe | ||
|   | 2b8bd5f2cc | ||
|   | d312c2e9e7 | ||
|   | 578b0d2268 | ||
|   | ffb41b0109 | ||
|   | c63fb5d796 | ||
|   | 8caee732e8 | ||
|   | df5381adce | ||
|   | f34836b7fa | ||
|   | 44b459883a | ||
|   | 14a8592ae3 | ||
|   | 787d0dce4a | ||
|   | 8be05ff93d | ||
|   | 3014af565c | ||
|   | 315252bdc4 | ||
|   | c36c3b4607 | ||
|   | 7d5e939bab | ||
|   | f75c9d1eed | ||
|   | 38cb9855ea | ||
|   | ed8b56d624 | ||
|   | bca48b13ae | ||
|   | 29426edb05 | ||
|   | 33a2dc687f | ||
|   | e2398a21b2 | ||
|   | f19530276e | ||
|   | 2b9b92a78c | ||
|   | 99c55dac10 | ||
|   | 25667e46f9 | ||
|   | 2f4e8f2399 | ||
|   | 9169183769 | ||
|   | c420f50831 | ||
|   | c6c9279ef4 | ||
|   | c125e2991d | ||
|   | 5348b19d6a | ||
|   | afd426daac | ||
|   | 202c511cfa | ||
|   | 651eb295a4 | ||
|   | d798aaed33 | ||
|   | 63ef347cc9 | ||
|   | 3139b2d5a0 | ||
|   | 2c80bbb244 | ||
|   | af06755ada | ||
|   | 97d6dbaa6c | ||
|   | 74cf82a1c7 | ||
|   | 74634889ab | ||
|   | dbe30fcd77 | ||
|   | 24a7f3a320 | ||
|   | d3650f1145 | ||
|   | 4801db9050 | ||
|   | 6445281658 | ||
|   | 87719f5938 | ||
|   | 5ba1ec433b | ||
|   | 7c5b382458 | ||
|   | 8960426128 | ||
|   | e1d47d5a92 | ||
|   | 9407c272aa | ||
|   | bccbd7b400 | ||
|   | a24dc010ec | ||
|   | c5e5d50fb8 | ||
|   | be1c520320 | ||
|   | 3d18d0f893 | ||
|   | c3351a38a6 | ||
|   | 0b86340a8d | ||
|   | 829371b032 | ||
|   | b342207bc7 | ||
|   | 58f4fdced3 | ||
|   | 253844cbcf | ||
|   | e2e2b9ffb4 | ||
|   | 2568042f5f | ||
|   | 722edf4b9a | ||
|   | e406d364e4 | ||
|   | 31c37f41b2 | ||
|   | 6cd879bbc5 | ||
|   | b7974050fe | ||
|   | e9c9d0816e | ||
|   | a437692e1a | ||
|   | 2a14d2f3c8 | ||
|   | 559e2d1889 | ||
|   | a1aa919f80 | ||
|   | cbccb27a5a | ||
|   | bbad36d576 | ||
|   | df6c9d55b5 | ||
|   | 36a1d9c364 | ||
|   | 1f3681d5ac | ||
|   | 0159f8e53f | ||
|   | 0432be64fc | ||
|   | 481e062961 | ||
|   | 72b8abdeb6 | ||
|   | 7ec3ee41d1 | ||
|   | b765fa4769 | ||
|   | 06685b162e | ||
|   | 7bcad7c424 | ||
|   | 6e054b3cc6 | ||
|   | e643f6b0f8 | ||
|   | e44c0f85c2 | ||
|   | ea66e968eb | ||
|   | f7e73d804e | ||
|   | 2ff4df56a1 | ||
|   | 346c45fe0c | ||
|   | f98b42a36e | ||
|   | f77a0a266c | ||
|   | 0be672788f | ||
|   | e2e3d11d42 | ||
|   | bb127bb567 | ||
|   | 8eb4f89db8 | ||
|   | 4a87ea3e70 | ||
|   | 61115fce99 | ||
|   | 4f31120394 | ||
|   | b085cd65ce | ||
|   | f76ec0721a | ||
|   | ef3944fbbf | ||
|   | b158fbc0d8 | ||
|   | 68f2d66e97 | ||
|   | 0cdd1735bd | ||
|   | 70f5ead20b | ||
|   | 574e5616f8 | ||
|   | 94fa810590 | ||
|   | 37f69da701 | ||
|   | f2f8448ade | ||
|   | b357d3fff2 | ||
|   | b417194905 | ||
|   | d8741da20a | ||
|   | c469be9a62 | ||
|   | ff4eb339ef | ||
|   | 78489383c0 | ||
|   | f67c1b415f | ||
|   | 570c16d921 | ||
|   | c8bc60568a | ||
|   | 73de3ba856 | ||
|   | 6a69be8537 | ||
|   | 3ee381d505 | ||
|   | 7ce744e2e4 | ||
|   | b81d21c991 | ||
|   | e9fe0992c6 | ||
|   | d5ef9018fa | ||
|   | c2737a7c51 | ||
|   | 4b6d8733c6 | ||
|   | f22a3e0955 | ||
|   | 4b8144a2f7 | ||
|   | abac52e23c | ||
|   | 9aa089313e | ||
|   | b18f2c481a | ||
|   | ec83b9f77b | ||
|   | fad5495e02 | ||
|   | 70dec1171e | ||
|   | 0673a6fce3 | ||
|   | 8f525b1407 | ||
|   | e83a991a4b | ||
|   | c000432a52 | ||
|   | c06d2d6927 | ||
|   | aa29653a8f | ||
|   | 3f7e4ad486 | ||
|   | 0eab546b2f | ||
|   | 8830d216d1 | ||
|   | 9fa1e3d449 | ||
|   | fe5dce7159 | ||
|   | 952fa31548 | ||
|   | cc058ccc61 | ||
|   | bc26ed9701 | ||
|   | 26135fc1a0 | ||
|   | 0bd14672ff | ||
|   | 7c7150cde8 | ||
|   | b08282b0c1 | ||
|   | 3bf6e1befc | ||
|   | 52692371ac | ||
|   | 159ac1d8bb | ||
|   | 7f1ffdbc79 | ||
|   | 5fe64931dc | ||
|   | ee67855b48 | ||
|   | 594a97f43f | ||
|   | 7fb435a8b4 | ||
|   | 01e74d6116 | ||
|   | b321d75b39 | ||
|   | 1e47a45723 | ||
|   | 88c609e5ef | ||
|   | 775d1a424e | 
							
								
								
									
										19
									
								
								framework/Directory.Build.props
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								framework/Directory.Build.props
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| <Project> | ||||
| 	<PropertyGroup> | ||||
| 		 | ||||
| 		<ImplicitUsings>enable</ImplicitUsings> | ||||
| 		<TargetFrameworks>net6.0;net8.0;</TargetFrameworks> | ||||
| 		<Version>4.0.0.10</Version> | ||||
| 		<LangVersion>latest</LangVersion> | ||||
| 		<Authors>Diego</Authors> | ||||
| 		<Product>ThingsGateway</Product> | ||||
| 		<Copyright>© 2023-present Diego</Copyright> | ||||
| 		<RepositoryUrl>https://gitee.com/diego2098/ThingsGateway</RepositoryUrl> | ||||
| 		<SignAssembly>False</SignAssembly> | ||||
| 		<DelaySign>False</DelaySign> | ||||
| 		<SatelliteResourceLanguages>zh-Hans</SatelliteResourceLanguages> | ||||
| 		<GenerateDocumentationFile>False</GenerateDocumentationFile> | ||||
| 	</PropertyGroup> | ||||
|  | ||||
|  | ||||
| </Project> | ||||
| @@ -82,6 +82,7 @@ EndProject | ||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "解决方案项", "解决方案项", "{97B23D8B-C6C0-4746-A21F-C7B49354B284}" | ||||
| 	ProjectSection(SolutionItems) = preProject | ||||
| 		..\.gitignore = ..\.gitignore | ||||
| 		Directory.Build.props = Directory.Build.props | ||||
| 		..\README.md = ..\README.md | ||||
| 	EndProjectSection | ||||
| EndProject | ||||
|   | ||||
| @@ -1,17 +1,7 @@ | ||||
| <Project> | ||||
| 	<Import Project="$(SolutionDir)\Directory.Build.props" /> | ||||
| 	<PropertyGroup> | ||||
| 		<ImplicitUsings>enable</ImplicitUsings> | ||||
| 		<TargetFrameworks>net6.0;net8.0;</TargetFrameworks> | ||||
| 		<Version>4.0.0.4</Version> | ||||
| 		<LangVersion>latest</LangVersion> | ||||
| 		<ImplicitUsings>enable</ImplicitUsings> | ||||
| 		<Authors>Diego</Authors> | ||||
| 		<Product>ThingsGateway</Product> | ||||
| 		<Copyright>© 2023-present Diego</Copyright> | ||||
| 		<RepositoryUrl>https://gitee.com/diego2098/ThingsGateway</RepositoryUrl> | ||||
| 		<SignAssembly>True</SignAssembly> | ||||
| 		<DelaySign>False</DelaySign> | ||||
| 		<SatelliteResourceLanguages>zh-Hans</SatelliteResourceLanguages> | ||||
|  | ||||
| 	</PropertyGroup> | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Microsoft.AspNetCore.Authorization; | ||||
| @@ -26,6 +28,7 @@ namespace ThingsGateway.Admin.ApiController; | ||||
| public class AuthController : IDynamicApiController | ||||
| { | ||||
|     private readonly IAuthService _authService; | ||||
|  | ||||
|     /// <summary> | ||||
|     /// <inheritdoc cref="AuthController"/> | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
| @@ -24,6 +26,7 @@ public class FileController : IDynamicApiController | ||||
| { | ||||
|     private readonly IOperateLogService _operateLogService; | ||||
|     private readonly IVisitLogService _visitLogService; | ||||
|  | ||||
|     /// <summary> | ||||
|     /// <inheritdoc cref="FileController"/> | ||||
|     /// </summary> | ||||
| @@ -50,6 +53,7 @@ public class FileController : IDynamicApiController | ||||
|         }; | ||||
|         return data; | ||||
|     } | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 下载访问日志 | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Microsoft.AspNetCore.Authorization; | ||||
| @@ -28,6 +30,7 @@ namespace ThingsGateway.Admin.ApiController; | ||||
| public class OpenApiAuthController : IDynamicApiController | ||||
| { | ||||
|     private readonly IOpenApiAuthService _authService; | ||||
|  | ||||
|     /// <summary> | ||||
|     /// <inheritdoc cref="OpenApiAuthController"/> | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -27,12 +29,13 @@ namespace ThingsGateway.Admin.ApiController; | ||||
| [Route("Swagger")] | ||||
| public class SwaggerController : IDynamicApiController, IScoped | ||||
| { | ||||
|     private readonly ConfigService _configService; | ||||
|     private readonly IConfigService _configService; | ||||
|  | ||||
|     /// <summary> | ||||
|     /// <inheritdoc cref="SwaggerController"/> | ||||
|     /// </summary> | ||||
|     /// <param name="sysConfigService"></param> | ||||
|     public SwaggerController(ConfigService sysConfigService) | ||||
|     public SwaggerController(IConfigService sysConfigService) | ||||
|     { | ||||
|         _configService = sysConfigService; | ||||
|     } | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| global using Furion.DynamicApiController; | ||||
|   | ||||
| @@ -79,7 +79,7 @@ | ||||
|             Swagger登录授权服务 | ||||
|             </summary> | ||||
|         </member> | ||||
|         <member name="M:ThingsGateway.Admin.ApiController.SwaggerController.#ctor(ThingsGateway.Admin.Application.ConfigService)"> | ||||
|         <member name="M:ThingsGateway.Admin.ApiController.SwaggerController.#ctor(ThingsGateway.Admin.Application.IConfigService)"> | ||||
|             <summary> | ||||
|             <inheritdoc cref="T:ThingsGateway.Admin.ApiController.SwaggerController"/> | ||||
|             </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
| @@ -28,14 +30,17 @@ public class OperDescAttribute : Attribute | ||||
|         Description = description; | ||||
|         Catcategory = catcategory; | ||||
|     } | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 分类 | ||||
|     /// </summary> | ||||
|     public string Catcategory { get; } | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 说明 | ||||
|     /// </summary> | ||||
|     public string Description { get; } | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 记录参数,默认true | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.Reflection; | ||||
| @@ -96,7 +98,7 @@ public class OperDispatchProxy : AspectDispatchProxy, IDispatchProxy | ||||
|     /// <exception cref="NotImplementedException"></exception> | ||||
|     public override async Task InvokeAsync(MethodInfo method, object[] args) | ||||
|     { | ||||
|         var desc = method.GetActualCustomAttribute<OperDescAttribute>(Target); | ||||
|         var desc = method.GetActualCustomAttribute<OperDescAttribute>(Target, true); | ||||
|         if (desc == null) | ||||
|         { | ||||
|             var task = method.Invoke(Target, args) as Task; | ||||
| @@ -134,7 +136,7 @@ public class OperDispatchProxy : AspectDispatchProxy, IDispatchProxy | ||||
|     /// <exception cref="NotImplementedException"></exception> | ||||
|     public override async Task<T> InvokeAsyncT<T>(MethodInfo method, object[] args) | ||||
|     { | ||||
|         var desc = method.GetActualCustomAttribute<OperDescAttribute>(Target); | ||||
|         var desc = method.GetActualCustomAttribute<OperDescAttribute>(Target, true); | ||||
|         if (desc == null) | ||||
|         { | ||||
|             var taskT = method.Invoke(Target, args) as Task<T>; | ||||
| @@ -167,7 +169,6 @@ public class OperDispatchProxy : AspectDispatchProxy, IDispatchProxy | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
|     private void WriteOperLog(MethodInfo method, object[] args, OperDescAttribute desc, object result, Exception exception) | ||||
|     { | ||||
|         //写入操作日志 | ||||
| @@ -216,9 +217,5 @@ public class OperDispatchProxy : AspectDispatchProxy, IDispatchProxy | ||||
|             log.ExeMessage = exception.Source + ":" + exception.Message + Environment.NewLine + exception.StackTrace; | ||||
|         } | ||||
|         DbContext.Db.CopyNew().InsertableWithAttr(log).ExecuteCommand();//入库 | ||||
|  | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
| @@ -17,7 +19,6 @@ namespace ThingsGateway.Admin.Application; | ||||
| /// </summary> | ||||
| public class CacheConst | ||||
| { | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 登录验证码缓存Key | ||||
|     /// </summary> | ||||
| @@ -28,7 +29,6 @@ public class CacheConst | ||||
|     /// </summary> | ||||
|     public const string SYS_CONFIGCATEGORY = "SYS_CONFIGCATEGORY"; | ||||
|  | ||||
|  | ||||
|     #region OpenApi | ||||
|  | ||||
|     /// <summary> | ||||
| @@ -51,7 +51,6 @@ public class CacheConst | ||||
|     /// </summary> | ||||
|     public const string CACHE_USERVERIFICAT = "CACHE_USERVERIFICAT"; | ||||
|  | ||||
|  | ||||
|     #endregion OpenApi | ||||
|  | ||||
|     /// <summary> | ||||
| @@ -78,6 +77,4 @@ public class CacheConst | ||||
|     /// 角色表缓存Key | ||||
|     /// </summary> | ||||
|     public const string CACHE_SYSROLE = "CACHE_SYSROLE"; | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
| @@ -17,19 +19,16 @@ namespace ThingsGateway.Admin.Application; | ||||
| /// </summary> | ||||
| public static class CateGoryConst | ||||
| { | ||||
|  | ||||
|     /// <summary> | ||||
|     /// ThingsGateway.Admin | ||||
|     /// </summary> | ||||
|     public const string ThingsGatewayAdmin = "ThingsGateway.Admin"; | ||||
|  | ||||
|     /// <summary> | ||||
|     /// ThingsGateway.OpenApi | ||||
|     /// </summary> | ||||
|     public const string ThingsGatewayOpenApi = "ThingsGateway.OpenApi"; | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|     #region 关系表 | ||||
|  | ||||
|     /// <summary> | ||||
| @@ -56,6 +55,6 @@ public static class CateGoryConst | ||||
|     /// 用户有哪些角色 | ||||
|     /// </summary> | ||||
|     public const string Relation_SYS_USER_HAS_ROLE = "SYS_USER_HAS_ROLE"; | ||||
|     #endregion 关系表 | ||||
|  | ||||
|     #endregion 关系表 | ||||
| } | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
| @@ -27,10 +29,8 @@ public static class ConfigConst | ||||
|     /// </summary> | ||||
|     public const string SYS_CONFIGOTHER = "SYS_CONFIGOTHER"; | ||||
|  | ||||
|  | ||||
|     #region config | ||||
|  | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 版权标识 | ||||
|     /// </summary> | ||||
| @@ -40,6 +40,7 @@ public static class ConfigConst | ||||
|     /// 版权跳转url | ||||
|     /// </summary> | ||||
|     public const string CONFIG_COPYRIGHT_URL = "CONFIG_COPYRIGHT_URL"; | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 是否启用PageTab | ||||
|     /// </summary> | ||||
| @@ -91,6 +92,4 @@ public static class ConfigConst | ||||
|     public const string CONFIG_SWAGGERLOGIN_OPEN = "CONFIG_SWAGGERLOGIN_OPEN"; | ||||
|  | ||||
|     #endregion | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
| @@ -41,7 +43,4 @@ public class EventSubscriberConst | ||||
|     /// OpenApi登出 | ||||
|     /// </summary> | ||||
|     public const string LogoutOpenApi = "OpenApi退出"; | ||||
|  | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
| @@ -29,7 +31,6 @@ public class LogConst | ||||
|     /// </summary> | ||||
|     public const string LOG_LOGOUT = "LOGOUT"; | ||||
|  | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 第三方登录 | ||||
|     /// </summary> | ||||
| @@ -60,10 +61,10 @@ public class LogConst | ||||
|     /// </summary> | ||||
|     public const string LOG_SUCCESS = "SUCCESS"; | ||||
|  | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 操作失败 | ||||
|     /// </summary> | ||||
|     public const string LOG_FAIL = "FAIL"; | ||||
|  | ||||
|     #endregion 日志表 | ||||
| } | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Core; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
| @@ -40,5 +42,4 @@ public class RoleConst | ||||
|     public const string Relation_SYS_USER_HAS_ROLE = "SYS_USER_HAS_ROLE"; | ||||
|  | ||||
|     #endregion 关系表 | ||||
|  | ||||
| } | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| global using Furion; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.Schedule; | ||||
| @@ -36,7 +38,6 @@ public class JobPersistence : IJobPersistence | ||||
|     /// <inheritdoc/> | ||||
|     public void OnChanged(PersistenceContext context) | ||||
|     { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /// <summary> | ||||
| @@ -52,7 +53,6 @@ public class JobPersistence : IJobPersistence | ||||
|     /// <inheritdoc/> | ||||
|     public void OnTriggerChanged(PersistenceTriggerContext context) | ||||
|     { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /// <summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.Schedule; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -31,6 +33,7 @@ public class OpenApiAuthEventSubscriber : IEventSubscriber, ISingleton | ||||
|         LoginOpenApiEvent loginEvent = (LoginOpenApiEvent)context.Source.Payload;//获取参数 | ||||
|         OpenApiUser openApiUser = loginEvent.OpenApiUser; | ||||
|         var db = DbContext.Db.CopyNew(); | ||||
|  | ||||
|         #region 重新赋值属性,设置本次登录信息为最新的信息 | ||||
|  | ||||
|         db.Tracking(openApiUser);//创建跟踪,只更新修改字段 | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using System.ComponentModel.DataAnnotations; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -25,6 +27,7 @@ public interface IOpenApiAuthService : ITransient | ||||
|     /// <param name="input">登录参数</param> | ||||
|     /// <returns>Token信息</returns> | ||||
|     Task<LoginOpenApiOutput> LoginOpenApiAsync(LoginOpenApiInput input); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 登出 | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DataEncryption; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using System.ComponentModel; | ||||
| @@ -25,6 +27,7 @@ public class OpenApiSessionPageInput : BasePageInput | ||||
|     /// </summary> | ||||
|     [Description("账号")] | ||||
|     public string Account { get; set; } | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 最新登录IP | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using System.ComponentModel; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -22,19 +24,14 @@ namespace ThingsGateway.Admin.Application; | ||||
| [Injection(Proxy = typeof(OperDispatchProxy))] | ||||
| public class OpenApiSessionService : DbRepository<OpenApiUser>, IOpenApiSessionService | ||||
| { | ||||
|  | ||||
|     private readonly IVerificatService _verificatService; | ||||
|  | ||||
|  | ||||
|  | ||||
|     /// <inheritdoc cref="IOpenApiSessionService"/> | ||||
|     public OpenApiSessionService(IVerificatService verificatService) | ||||
|     { | ||||
|         _verificatService = verificatService; | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
|     /// <inheritdoc/> | ||||
|     [OperDesc("强退OPENAPI会话")] | ||||
|     public async Task ExitSessionAsync(long input) | ||||
| @@ -83,7 +80,7 @@ public class OpenApiSessionService : DbRepository<OpenApiUser>, IOpenApiSessionS | ||||
|                 var verificatInfos = await _verificatService.GetVerificatIdAsync(it.Id); | ||||
|                 if (verificatInfos != null) | ||||
|                 { | ||||
|                     OpenApiSessionService.GetVerificatInfos(ref verificatInfos);//获取剩余时间 | ||||
|                     GetVerificatInfos(ref verificatInfos);//获取剩余时间 | ||||
|                     it.VerificatCount = verificatInfos.Count;//令牌数量 | ||||
|                     it.VerificatSignList = verificatInfos;//令牌列表 | ||||
|                 } | ||||
| @@ -91,7 +88,6 @@ public class OpenApiSessionService : DbRepository<OpenApiUser>, IOpenApiSessionS | ||||
|                 { | ||||
|                     it.VerificatSignList = new(); | ||||
|                 } | ||||
|  | ||||
|             }); | ||||
|         for (int i = input.SortField.Count - 1; i >= 0; i--) | ||||
|         { | ||||
| @@ -102,5 +98,4 @@ public class OpenApiSessionService : DbRepository<OpenApiUser>, IOpenApiSessionS | ||||
|         pageInfo.Records = pageInfo.Records.OrderByDescending(it => it.VerificatCount); | ||||
|         return pageInfo; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using SqlSugar; | ||||
| @@ -33,14 +35,17 @@ public class OpenApiPermissionTreeSelector | ||||
|     /// </summary> | ||||
|     [Description("Api路径")] | ||||
|     public string ApiRoute { get; set; } | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 子节点 | ||||
|     /// </summary> | ||||
|     public List<OpenApiPermissionTreeSelector> Children { get; set; } = new(); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// ID | ||||
|     /// </summary> | ||||
|     public long Id { get; set; } | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 父ID | ||||
|     /// </summary> | ||||
| @@ -68,7 +73,6 @@ public class OpenApiPermissionTreeSelector | ||||
|         } | ||||
|         return list; | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
| /// <summary> | ||||
| @@ -81,6 +85,7 @@ public class OpenApiUserAddInput : OpenApiUser | ||||
|     /// </summary> | ||||
|     [Required(ErrorMessage = "账号不能为空"), MinLength(3, ErrorMessage = "账号不能少于4个字符")] | ||||
|     public override string Account { get; set; } | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 密码 | ||||
|     /// </summary> | ||||
| @@ -91,8 +96,6 @@ public class OpenApiUserAddInput : OpenApiUser | ||||
|     /// <inheritdoc/> | ||||
|     /// </summary> | ||||
|     public override bool UserEnable { get; set; } = true; | ||||
|  | ||||
|  | ||||
| } | ||||
|  | ||||
| /// <summary> | ||||
| @@ -111,6 +114,7 @@ public class OpenApiUserEditInput : OpenApiUser | ||||
|     /// </summary> | ||||
|     [MinValue(1, ErrorMessage = "Id不能为空")] | ||||
|     public override long Id { get; set; } | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 密码 | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -53,7 +55,6 @@ public interface IOpenApiUserService : ITransient | ||||
|     /// <returns></returns> | ||||
|     Task EditAsync(OpenApiUserEditInput input); | ||||
|  | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 启用用户 | ||||
|     /// </summary> | ||||
| @@ -74,6 +75,7 @@ public interface IOpenApiUserService : ITransient | ||||
|     /// <param name="account">用户名</param> | ||||
|     /// <returns>用户信息</returns> | ||||
|     Task<OpenApiUser> GetUserByAccountAsync(string account); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 根据ID获取用户信息 | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DataEncryption; | ||||
| @@ -58,7 +60,6 @@ public class OpenApiUserService : DbRepository<OpenApiUser>, IOpenApiUserService | ||||
|     [OperDesc("删除用户")] | ||||
|     public async Task DeleteAsync(params long[] ids) | ||||
|     { | ||||
|  | ||||
|         //获取所有ID | ||||
|         if (ids.Length > 0) | ||||
|         { | ||||
| @@ -75,7 +76,6 @@ public class OpenApiUserService : DbRepository<OpenApiUser>, IOpenApiUserService | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     public void DeleteUserFromCache(params long[] ids) | ||||
|     { | ||||
| @@ -140,7 +140,6 @@ public class OpenApiUserService : DbRepository<OpenApiUser>, IOpenApiUserService | ||||
|         //编辑操作可能会修改用户密码等信息,认证时需要实时获取用户并验证 | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /// <inheritdoc/> | ||||
|     [OperDesc("启用用户")] | ||||
|     public async Task EnableUserAsync(long input) | ||||
| @@ -249,7 +248,6 @@ public class OpenApiUserService : DbRepository<OpenApiUser>, IOpenApiUserService | ||||
|         query = query.OrderBy(it => it.SortCode);//排序 | ||||
|         query = query.OrderBy(u => u.Id);//排序 | ||||
|  | ||||
|  | ||||
|         var pageInfo = await query.ToPagedListAsync(input.Current, input.Size);//分页 | ||||
|         return pageInfo; | ||||
|     } | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.InstantMessaging; | ||||
| @@ -34,12 +36,14 @@ public class SysHub : Hub<ISysHub> | ||||
|  | ||||
|     private readonly ILogger<ISysHub> _logger; | ||||
|     private readonly IServiceScope _serviceScope; | ||||
|  | ||||
|     /// <inheritdoc cref="ISysHub"/> | ||||
|     public SysHub(IServiceScopeFactory scopeFactory, ILogger<ISysHub> logger) | ||||
|     { | ||||
|         _serviceScope = scopeFactory.CreateScope(); | ||||
|         _logger = logger; | ||||
|     } | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 连接 | ||||
|     /// </summary> | ||||
| @@ -53,6 +57,7 @@ public class SysHub : Hub<ISysHub> | ||||
|         await UpdateVerificatAsync(userIdentifier, verificat: VerificatId);//更新cache | ||||
|         await base.OnConnectedAsync(); | ||||
|     } | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 断开连接 | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Microsoft.AspNetCore.Http.Connections.Features; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Microsoft.Extensions.DependencyInjection; | ||||
| @@ -25,7 +27,6 @@ public class Startup : AppStartup | ||||
|     /// </summary> | ||||
|     public void ConfigureServices(IServiceCollection services) | ||||
|     { | ||||
|  | ||||
|         // 任务调度 | ||||
|         services.AddSchedule(options => | ||||
|         { | ||||
| @@ -34,6 +35,5 @@ public class Startup : AppStartup | ||||
|  | ||||
|         //事件总线 | ||||
|         services.AddEventBus(); | ||||
|  | ||||
|     } | ||||
| } | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -23,6 +25,7 @@ namespace ThingsGateway.Admin.Application; | ||||
| public class UserEventSubscriber : IEventSubscriber, ISingleton | ||||
| { | ||||
|     private readonly IServiceProvider _services; | ||||
|  | ||||
|     /// <summary> | ||||
|     /// <inheritdoc cref="UserEventSubscriber"/> | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DataEncryption; | ||||
| @@ -36,6 +38,7 @@ public class AuthService : IAuthService | ||||
|     private readonly IServiceScope _serviceScope; | ||||
|     private readonly ISysUserService _userService; | ||||
|     private readonly IVerificatService _verificatService; | ||||
|  | ||||
|     /// <inheritdoc cref="IAuthService"/> | ||||
|     public AuthService( | ||||
|                        IEventPublisher eventPublisher, | ||||
| @@ -175,7 +178,6 @@ public class AuthService : IAuthService | ||||
|         return new LoginOutput { VerificatId = sessionid, Account = sysUser.Account }; | ||||
|     } | ||||
|  | ||||
|  | ||||
|     private async Task RemoveVerificatAsync(LoginEvent loginEvent) | ||||
|     { | ||||
|         //获取verificat列表 | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using System.ComponentModel; | ||||
| @@ -38,6 +40,7 @@ public class LoginInput : ValidCodeInput | ||||
|     [Required(ErrorMessage = "密码不能为空"), MinLength(3, ErrorMessage = "密码不能少于3个字符")] | ||||
|     public string Password { get; set; } | ||||
| } | ||||
|  | ||||
| /// <summary> | ||||
| /// 验证码输入 | ||||
| /// </summary> | ||||
| @@ -53,6 +56,7 @@ public class ValidCodeInput | ||||
|     /// </summary> | ||||
|     public long ValidCodeReqNo { get; set; } | ||||
| } | ||||
|  | ||||
| /// <summary> | ||||
| /// 登录设备类型枚举 | ||||
| /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
| @@ -21,6 +23,7 @@ public class BaseLoginOutput | ||||
|     /// 账号 | ||||
|     /// </summary> | ||||
|     public string Account { get; set; } | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 验证ID | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -157,7 +159,5 @@ public class ButtonService : DbRepository<SysResource>, IButtonService | ||||
|         sysResource.Category = ResourceCategoryEnum.BUTTON;//设置分类为按钮 | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
|     #endregion 方法 | ||||
| } | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using System.ComponentModel.DataAnnotations; | ||||
| @@ -37,6 +39,7 @@ public class ButtonAddInput : SysResource | ||||
|     [Required(ErrorMessage = "Title不能为空")] | ||||
|     public override string Title { get; set; } | ||||
| } | ||||
|  | ||||
| /// <summary> | ||||
| /// 按钮分页 | ||||
| /// </summary> | ||||
| @@ -48,6 +51,7 @@ public class ButtonPageInput : BasePageInput | ||||
|     [Required(ErrorMessage = "ParentId不能为空")] | ||||
|     public long? ParentId { get; set; } | ||||
| } | ||||
|  | ||||
| /// <summary> | ||||
| /// 按钮编辑 | ||||
| /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -19,8 +21,6 @@ namespace ThingsGateway.Admin.Application; | ||||
| /// </summary> | ||||
| public interface IButtonService : ITransient | ||||
| { | ||||
|  | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 添加按钮 | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -24,10 +26,12 @@ namespace ThingsGateway.Admin.Application; | ||||
| public class ConfigService : DbRepository<SysConfig>, IConfigService | ||||
| { | ||||
|     private readonly IServiceScope _serviceScope; | ||||
|  | ||||
|     public ConfigService(IServiceScopeFactory serviceScopeFactory) | ||||
|     { | ||||
|         _serviceScope = serviceScopeFactory.CreateScope(); | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc/> | ||||
|     [OperDesc("编辑网关系统配置")] | ||||
|     public async Task EditBatchAsync(List<SysConfig> sysConfigs) | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using System.ComponentModel; | ||||
| @@ -62,4 +64,3 @@ public class ConfigPageInput : BasePageInput | ||||
|     [Description("分类")] | ||||
|     public string Category { get; set; } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -25,6 +27,7 @@ public interface IConfigService : ITransient | ||||
|     /// <param name="configs">配置列表</param> | ||||
|     /// <returns></returns> | ||||
|     Task EditBatchAsync(List<SysConfig> configs); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 新增自定义配置 | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.FriendlyException; | ||||
| @@ -21,18 +23,13 @@ namespace ThingsGateway.Admin.Application; | ||||
| /// </summary> | ||||
| public class FileService : IFileService | ||||
| { | ||||
|  | ||||
|     /// <inheritdoc/> | ||||
|     public void ImportVerification(IBrowserFile file, int maxSzie = 300, string[] allowTypes = null) | ||||
|     { | ||||
|  | ||||
|         if (file == null) throw Oops.Bah("文件不能为空"); | ||||
|         if (file.Size > maxSzie * 1024 * 1024) throw Oops.Bah($"文件大小不允许超过{maxSzie}M"); | ||||
|         var fileSuffix = Path.GetExtension(file.Name).ToLower().Split(".")[1]; // 文件后缀 | ||||
|         string[] allowTypeS = allowTypes ?? new string[] { "xlsx" };//允许上传的文件类型 | ||||
|         if (!allowTypeS.Contains(fileSuffix)) throw Oops.Bah(errorMessage: "文件格式错误"); | ||||
|  | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -21,7 +23,6 @@ namespace ThingsGateway.Admin.Application; | ||||
| /// </summary> | ||||
| public interface IFileService : ITransient | ||||
| { | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 验证上传文件 | ||||
|     /// </summary> | ||||
| @@ -29,7 +30,4 @@ public interface IFileService : ITransient | ||||
|     /// <param name="maxSzie">最大体积(M)</param> | ||||
|     /// <param name="allowTypes">允许上传类型</param> | ||||
|     void ImportVerification(IBrowserFile file, int maxSzie = 30, string[] allowTypes = null); | ||||
|  | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using System.ComponentModel.DataAnnotations; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -28,6 +30,7 @@ public class MenuService : DbRepository<SysResource>, IMenuService | ||||
|     private readonly IRelationService _relationService; | ||||
|     private readonly IResourceService _resourceService; | ||||
|     private readonly IRoleService _roleService; | ||||
|  | ||||
|     /// <inheritdoc cref="IMenuService"/> | ||||
|     public MenuService(IResourceService resourceService, IRelationService relationService, IRoleService roleService) | ||||
|     { | ||||
| @@ -47,7 +50,6 @@ public class MenuService : DbRepository<SysResource>, IMenuService | ||||
|             _resourceService.RefreshCache(ResourceCategoryEnum.MENU);//刷新菜单缓存 | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [OperDesc("删除菜单")] | ||||
|     public async Task DeleteAsync(params long[] input) | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Microsoft.AspNetCore.SignalR; | ||||
| @@ -21,10 +23,12 @@ namespace ThingsGateway.Admin.Application; | ||||
| public class NoticeService : INoticeService | ||||
| { | ||||
|     private readonly IServiceScope _serviceScope; | ||||
|  | ||||
|     public NoticeService(IServiceScopeFactory serviceScopeFactory) | ||||
|     { | ||||
|         _serviceScope = serviceScopeFactory.CreateScope(); | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc/> | ||||
|     public async Task LogoutAsync(long userId, List<VerificatInfo> verificatInfos, string message) | ||||
|     { | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
| @@ -18,10 +20,10 @@ namespace ThingsGateway.Admin.Application; | ||||
| public class OperateLogPageInput : VisitLogPageInput | ||||
| { | ||||
| } | ||||
|  | ||||
| /// <summary> | ||||
| /// 操作日志分页输入 | ||||
| /// </summary> | ||||
| public class OperateLogInput : VisitLogInput | ||||
| { | ||||
|  | ||||
| } | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -25,12 +27,14 @@ public interface IOperateLogService : ITransient | ||||
|     /// <param name="category">分类名称</param> | ||||
|     /// <returns></returns> | ||||
|     Task DeleteAsync(params string[] category); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 导出后台日志 | ||||
|     /// </summary> | ||||
|     /// <param name="input"></param> | ||||
|     /// <returns></returns> | ||||
|     Task<MemoryStream> ExportFileAsync(List<SysOperateLog> input = null); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 导出后台日志 | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -32,6 +34,7 @@ public class OperateLogService : DbRepository<SysOperateLog>, IOperateLogService | ||||
|     { | ||||
|         await AsDeleteable().Where(it => category.Contains(it.Category)).ExecuteCommandAsync(); | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc/> | ||||
|     [OperDesc("导出操作日志", IsRecordPar = false)] | ||||
|     public async Task<MemoryStream> ExportFileAsync(List<SysOperateLog> input = null) | ||||
| @@ -44,6 +47,7 @@ public class OperateLogService : DbRepository<SysOperateLog>, IOperateLogService | ||||
|         foreach (var devData in input) | ||||
|         { | ||||
|             #region sheet | ||||
|  | ||||
|             //变量页 | ||||
|             var data = devData.GetType().GetProperties(); | ||||
|             Dictionary<string, object> devExport = new(); | ||||
| @@ -76,6 +80,7 @@ public class OperateLogService : DbRepository<SysOperateLog>, IOperateLogService | ||||
|         var data = await query.ToListAsync(); | ||||
|         return await ExportFileAsync(data); | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     public async Task<ISqlSugarPagedList<SysOperateLog>> PageAsync(OperateLogPageInput input) | ||||
|     { | ||||
| @@ -94,7 +99,6 @@ public class OperateLogService : DbRepository<SysOperateLog>, IOperateLogService | ||||
|                            .WhereIF(!string.IsNullOrEmpty(input.ExeStatus), it => it.ExeStatus == input.ExeStatus)//根据结果查询 | ||||
|                            .WhereIF(!string.IsNullOrEmpty(input.SearchKey), it => it.Name.Contains(input.SearchKey) || it.OpIp.Contains(input.SearchKey));//根据关键字查询 | ||||
|  | ||||
|  | ||||
|         for (int i = input.SortField.Count - 1; i >= 0; i--) | ||||
|         { | ||||
|             query = query.OrderByIF(!string.IsNullOrEmpty(input.SortField[i]), $"{input.SortField[i]} {(input.SortDesc[i] ? "desc" : "asc")}"); | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.FriendlyException; | ||||
| @@ -20,10 +22,12 @@ namespace ThingsGateway.Admin.Application; | ||||
| public class RelationService : DbRepository<SysRelation>, IRelationService | ||||
| { | ||||
|     private readonly IServiceScope _serviceScope; | ||||
|  | ||||
|     public RelationService(IServiceScopeFactory serviceScopeFactory) | ||||
|     { | ||||
|         _serviceScope = serviceScopeFactory.CreateScope(); | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc/> | ||||
|     public async Task<List<SysRelation>> GetRelationByCategoryAsync(string category) | ||||
|     { | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,11 +9,11 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
|  | ||||
|  | ||||
| /// <summary> | ||||
| /// 角色按钮资源 | ||||
| /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -24,6 +26,7 @@ public interface IResourceService : ITransient | ||||
|     /// </summary> | ||||
|     /// <returns>所有的菜单和模块以及单页面列表</returns> | ||||
|     Task<List<SysResource>> GetaMenuAndSpaListAsync(); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 获取子资源 | ||||
|     /// </summary> | ||||
| @@ -54,6 +57,7 @@ public interface IResourceService : ITransient | ||||
|     /// <param name="categorys">资源分类列表</param> | ||||
|     /// <returns></returns> | ||||
|     Task<List<SysResource>> GetListByCategorysAsync(List<ResourceCategoryEnum> categorys = null); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 获取资源所有下级 | ||||
|     /// </summary> | ||||
| @@ -89,10 +93,10 @@ public interface IResourceService : ITransient | ||||
|     /// <returns>菜单形结构</returns> | ||||
|     /// <inheritdoc/> | ||||
|     List<SysResource> ResourceListToTree(List<SysResource> resourceList, long parentId = 0); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 多个树转列表 | ||||
|     /// </summary> | ||||
|     /// <param name="data"></param> | ||||
|     List<SysResource> ResourceTreeToList(List<SysResource> data); | ||||
|  | ||||
| } | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Mapster; | ||||
| @@ -16,15 +18,16 @@ using Microsoft.Extensions.DependencyInjection; | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
|  | ||||
|  | ||||
| /// <inheritdoc cref="IResourceService"/> | ||||
| public class ResourceService : DbRepository<SysResource>, IResourceService | ||||
| { | ||||
|     private readonly IServiceScope _serviceScope; | ||||
|  | ||||
|     public ResourceService(IServiceScopeFactory serviceScopeFactory) | ||||
|     { | ||||
|         _serviceScope = serviceScopeFactory.CreateScope(); | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc/> | ||||
|     public async Task<List<SysResource>> GetaMenuAndSpaListAsync() | ||||
|     { | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using System.ComponentModel.DataAnnotations; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -67,6 +69,7 @@ public interface IRoleService : ITransient | ||||
|     /// <param name="input">授权信息</param> | ||||
|     /// <returns></returns> | ||||
|     Task GrantUserAsync(GrantUserInput input); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 角色拥有资源 | ||||
|     /// </summary> | ||||
| @@ -98,6 +101,7 @@ public interface IRoleService : ITransient | ||||
|     /// 角色刷新资源 | ||||
|     /// </summary> | ||||
|     Task RefreshResourceAsync(long? menuId = null); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 角色选择器 | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -82,7 +84,6 @@ namespace ThingsGateway.Admin.Application | ||||
|                     await Context.Deleteable<SysRelation>().Where(it => ids.Contains(it.ObjectId) && delRelations.Contains(it.Category)).ExecuteCommandAsync(); | ||||
|                     //删除关系表角色与用户关系 | ||||
|                     await Context.Deleteable<SysRelation>().Where(it => targetIds.Contains(it.TargetId) && it.Category == CateGoryConst.Relation_SYS_USER_HAS_ROLE).ExecuteCommandAsync(); | ||||
|  | ||||
|                 }); | ||||
|                 if (result.IsSuccess)//如果成功了 | ||||
|                 { | ||||
| @@ -288,7 +289,6 @@ namespace ThingsGateway.Admin.Application | ||||
|                 //删除老的 | ||||
|                 await Context.Deleteable<SysRelation>().Where(it => it.TargetId == input.Id.ToString() && it.Category == CateGoryConst.Relation_SYS_USER_HAS_ROLE).ExecuteCommandAsync(); | ||||
|                 await Context.Insertable(sysRelations).ExecuteCommandAsync();//添加新的 | ||||
|  | ||||
|             }); | ||||
|             if (result.IsSuccess)//如果成功了 | ||||
|             { | ||||
| @@ -361,8 +361,6 @@ namespace ThingsGateway.Admin.Application | ||||
|                     await GrantResourceAsync(new GrantResourceInput() { Id = item.Id, GrantInfoList = r1.GrantInfoList }); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|  | ||||
|         } | ||||
|  | ||||
|         /// <inheritdoc /> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using System.ComponentModel; | ||||
| @@ -25,6 +27,7 @@ public class SessionPageInput : BasePageInput | ||||
|     /// </summary> | ||||
|     [Description("账号")] | ||||
|     public string Account { get; set; } | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 最新登录IP | ||||
|     /// </summary> | ||||
| @@ -48,6 +51,7 @@ public class ExitVerificatInput : BaseIdInput | ||||
|     /// </summary> | ||||
|     [Required(ErrorMessage = "VerificatIds不能为空")] | ||||
|     public List<long> VerificatIds { get; set; } | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 用户Id | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using System.ComponentModel; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -73,7 +75,7 @@ public class SessionService : DbRepository<SysUser>, ISessionService | ||||
|                   var verificatInfos = await _verificatService.GetVerificatIdAsync(it.Id); | ||||
|                   if (verificatInfos != null) | ||||
|                   { | ||||
|                       SessionService.GetVerificatInfos(ref verificatInfos);//获取剩余时间 | ||||
|                       GetVerificatInfos(ref verificatInfos);//获取剩余时间 | ||||
|                       it.VerificatCount = verificatInfos.Count;//令牌数量 | ||||
|                       it.VerificatSignList = verificatInfos;//令牌列表 | ||||
|  | ||||
| @@ -84,14 +86,12 @@ public class SessionService : DbRepository<SysUser>, ISessionService | ||||
|                   { | ||||
|                       it.VerificatSignList = new(); | ||||
|                   } | ||||
|  | ||||
|               }); | ||||
|         for (int i = input.SortField.Count - 1; i >= 0; i--) | ||||
|         { | ||||
|             query = query.OrderByIF(!string.IsNullOrEmpty(input.SortField[i]), $"{input.SortField[i]} {(input.SortDesc[i] ? "desc" : "asc")}"); | ||||
|         } | ||||
|  | ||||
|  | ||||
|         var pageInfo = await query.ToPagedListAsync(input.Current, input.Size);//分页 | ||||
|         return pageInfo; | ||||
|     } | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using System.ComponentModel.DataAnnotations; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using SqlSugar; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
| @@ -32,4 +34,3 @@ public class UserSelectorOutput | ||||
|     /// </summary> | ||||
|     public string Name { get; set; } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -39,7 +41,6 @@ public interface ISysUserService : ITransient | ||||
|     /// <param name="ids">用户ID列表</param> | ||||
|     void DeleteUserFromCache(params long[] ids); | ||||
|  | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 禁用用户 | ||||
|     /// </summary> | ||||
| @@ -81,6 +82,7 @@ public interface ISysUserService : ITransient | ||||
|     /// <param name="account">用户名</param> | ||||
|     /// <returns>用户信息</returns> | ||||
|     Task<SysUser> GetUserByAccountAsync(string account); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 根据ID获取用户信息 | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DataEncryption; | ||||
| @@ -34,6 +36,7 @@ public class SysUserService : DbRepository<SysUser>, ISysUserService | ||||
|     private readonly IRoleService _roleService; | ||||
|     private readonly IVerificatService _verificatService; | ||||
|     private readonly IServiceScope _serviceScope; | ||||
|  | ||||
|     /// <inheritdoc cref="ISysUserService"/> | ||||
|     public SysUserService( | ||||
|                        IRelationService relationService, | ||||
| @@ -383,7 +386,6 @@ public class SysUserService : DbRepository<SysUser>, ISysUserService | ||||
|             if (!sysUser.Phone.MatchPhoneNumber())//验证手机格式 | ||||
|                 throw Oops.Bah($"手机号码:{sysUser.Phone} 格式错误"); | ||||
|             sysUser.Phone = DESCEncryption.Encrypt(sysUser.Phone, DESCKeyConst.DESCKey); | ||||
|  | ||||
|         } | ||||
|         //如果邮箱不是空 | ||||
|         if (!string.IsNullOrEmpty(sysUser.Email)) | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using System.ComponentModel; | ||||
| @@ -26,6 +28,7 @@ public class UpdateInfoInput : SysUser | ||||
|     [MinValue(1, ErrorMessage = "Id不能为空")] | ||||
|     public override long Id { get; set; } | ||||
| } | ||||
|  | ||||
| /// <summary> | ||||
| /// 修改密码 | ||||
| /// </summary> | ||||
| @@ -37,12 +40,14 @@ public class PasswordInfoInput : BaseIdInput, IValidatableObject | ||||
|     [Description("旧密码")] | ||||
|     [Required(ErrorMessage = "不能为空")] | ||||
|     public string OldPassword { get; set; } | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 新密码 | ||||
|     /// </summary> | ||||
|     [Description("新密码")] | ||||
|     [Required(ErrorMessage = "不能为空")] | ||||
|     public string NewPassword { get; set; } | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 确认密码 | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -25,6 +27,7 @@ public interface IUserCenterService : ITransient | ||||
|     /// <param name="input"></param> | ||||
|     /// <returns></returns> | ||||
|     Task EditPasswordAsync(PasswordInfoInput input); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 获取个人主页 | ||||
|     /// </summary> | ||||
| @@ -58,6 +61,7 @@ public interface IUserCenterService : ITransient | ||||
|     /// <param name="input">信息参数</param> | ||||
|     /// <returns></returns> | ||||
|     Task UpdateUserInfoAsync(UpdateInfoInput input); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 编辑个人工作台 | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DataEncryption; | ||||
| @@ -20,7 +22,6 @@ using ThingsGateway.Foundation.Extension.String; | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
|  | ||||
|  | ||||
| /// <inheritdoc cref="IUserCenterService"/> | ||||
| [Injection(Proxy = typeof(OperDispatchProxy))] | ||||
| public class UserCenterService : DbRepository<SysUser>, IUserCenterService | ||||
| @@ -86,6 +87,7 @@ public class UserCenterService : DbRepository<SysUser>, IUserCenterService | ||||
|         else | ||||
|             return 0; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     public async Task UpdateUserDefaultRazorAsync(long userId, long defaultRazor) | ||||
|     { | ||||
| @@ -148,6 +150,7 @@ public class UserCenterService : DbRepository<SysUser>, IUserCenterService | ||||
|         } | ||||
|         return result; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [OperDesc("用户更新个人信息")] | ||||
|     public async Task UpdateUserInfoAsync(UpdateInfoInput input) | ||||
| @@ -186,8 +189,8 @@ public class UserCenterService : DbRepository<SysUser>, IUserCenterService | ||||
|         //关系表保存个人工作台 | ||||
|         await _relationService.SaveRelationAsync(CateGoryConst.Relation_SYS_USER_WORKBENCH_DATA, UserManager.UserId, null, input.ToJsonString(), true); | ||||
|     } | ||||
|     #region 方法 | ||||
|  | ||||
|     #region 方法 | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 获取父菜单集合,已过滤掉同时存在的父节点 | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -32,6 +34,7 @@ public interface IVerificatService : ITransient | ||||
|     /// <param name="userId"></param> | ||||
|     /// <returns></returns> | ||||
|     Task<List<VerificatInfo>> GetVerificatIdAsync(long userId); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 设置验证ID | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Microsoft.Extensions.DependencyInjection; | ||||
| @@ -18,10 +20,12 @@ namespace ThingsGateway.Admin.Application; | ||||
| public class VerificatService : DbRepository<SysVerificat>, IVerificatService | ||||
| { | ||||
|     private readonly IServiceScope _serviceScope; | ||||
|  | ||||
|     public VerificatService(IServiceScopeFactory serviceScopeFactory) | ||||
|     { | ||||
|         _serviceScope = serviceScopeFactory.CreateScope(); | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc/> | ||||
|     public async Task<List<VerificatInfo>> GetOpenApiVerificatIdAsync(long userId) | ||||
|     { | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using System.ComponentModel; | ||||
| @@ -23,10 +25,12 @@ public class VisitLogPageInput : BasePageInput | ||||
|     /// 开始时间 | ||||
|     /// </summary> | ||||
|     public DateTime? StartTime { get; set; } = DateTime.UtcNow.AddDays(-1); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 结束时间 | ||||
|     /// </summary> | ||||
|     public DateTime? EndTime { get; set; } = DateTime.UtcNow.AddDays(1); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 账号 | ||||
|     /// </summary> | ||||
| @@ -55,6 +59,7 @@ public class VisitLogInput | ||||
|     /// 开始时间 | ||||
|     /// </summary> | ||||
|     public DateTime? StartTime { get; set; } = DateTime.UtcNow.AddDays(-1); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 结束时间 | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -26,12 +28,14 @@ public interface IVisitLogService : ITransient | ||||
|     /// <param name="category">分类名称</param> | ||||
|     /// <returns></returns> | ||||
|     Task DeleteAsync(params string[] category); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 导出访问日志 | ||||
|     /// </summary> | ||||
|     /// <param name="input"></param> | ||||
|     /// <returns></returns> | ||||
|     Task<MemoryStream> ExportFileAsync(VisitLogInput input); | ||||
|  | ||||
|     /// <summary> | ||||
|     /// 导出访问日志 | ||||
|     /// </summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Furion.DependencyInjection; | ||||
| @@ -72,6 +74,7 @@ public class VisitLogService : DbRepository<SysVisitLog>, IVisitLogService | ||||
|         foreach (var devData in input) | ||||
|         { | ||||
|             #region sheet | ||||
|  | ||||
|             //变量页 | ||||
|             var data = devData.GetType().GetProperties(); | ||||
|             Dictionary<string, object> devExport = new(); | ||||
| @@ -104,5 +107,4 @@ public class VisitLogService : DbRepository<SysVisitLog>, IVisitLogService | ||||
|         var data = await query.ToListAsync(); | ||||
|         return await ExportFileAsync(data); | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Microsoft.AspNetCore.Authorization; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,8 +9,11 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using System.Text.RegularExpressions; | ||||
|  | ||||
| using ThingsGateway.Foundation.Extension.String; | ||||
|  | ||||
| namespace ThingsGateway.Admin.Application; | ||||
| @@ -34,11 +38,11 @@ public class SeedDataUtil | ||||
|         if (!string.IsNullOrEmpty(dataString))//如果有内容 | ||||
|         { | ||||
|             //字段没有数据的替换成null | ||||
|             dataString = dataString.Replace("\"\"", "null"); | ||||
|             dataString = Regex.Replace(dataString, "\\\"[^\"]+?\\\": \\\"\\\"", match => match.Value.Replace("\"\"", "null")); | ||||
|             //dataString = dataString.Replace("\"\"", "null"); | ||||
|             //将json字符串转为实体,这里extjson可以正常转换为字符串 | ||||
|             var seedDataRecord = Newtonsoft.Json.JsonConvert.DeserializeObject<SeedDataRecords<T>>(dataString); | ||||
|  | ||||
|  | ||||
|             //遍历seedDataRecord | ||||
|             for (int i = 0; i < seedDataRecord.Records.Count; i++) | ||||
|             { | ||||
| @@ -88,7 +92,6 @@ public class SeedDataUtil | ||||
|  | ||||
|         return seedData; | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
| /// <summary> | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,9 +9,11 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| namespace ThingsGateway.Admin.Blazor; | ||||
|  | ||||
| /// <summary> | ||||
| /// NavItemExtensions | ||||
| /// </summary> | ||||
| @@ -69,6 +72,4 @@ public static class NavItemExtensions | ||||
|         Href = menu.Component, | ||||
|         Target = menu.TargetType == TargetTypeEnum.SELF ? "_self" : "_blank", | ||||
|     }; | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| global using BlazorComponent; | ||||
|   | ||||
| @@ -1,4 +1,5 @@ | ||||
| #region copyright | ||||
|  | ||||
| //------------------------------------------------------------------------------ | ||||
| //  此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 | ||||
| //  此代码版权(除特别声明外的代码)归作者本人Diego所有 | ||||
| @@ -8,6 +9,7 @@ | ||||
| //  使用文档:https://diego2098.gitee.io/thingsgateway-docs/ | ||||
| //  QQ群:605534569 | ||||
| //------------------------------------------------------------------------------ | ||||
|  | ||||
| #endregion | ||||
|  | ||||
| using Microsoft.Extensions.DependencyInjection; | ||||
| @@ -23,9 +25,12 @@ namespace ThingsGateway.Admin.Blazor | ||||
|         { | ||||
|             _serviceScope = _serviceScopeFactory.CreateScope(); | ||||
|         } | ||||
|  | ||||
|         [Inject] | ||||
|         private IServiceScopeFactory _serviceScopeFactory { get; set; } | ||||
|  | ||||
|         protected IServiceScope _serviceScope { get; set; } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// <inheritdoc/> | ||||
|         /// </summary> | ||||
| @@ -37,7 +42,7 @@ namespace ThingsGateway.Admin.Blazor | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|                     var data = await _serviceScope.ServiceProvider.GetService<UserCenterService>().GetLoginDefaultRazorAsync(UserManager.UserId); | ||||
|                     var data = await _serviceScope.ServiceProvider.GetService<IUserCenterService>().GetLoginDefaultRazorAsync(UserManager.UserId); | ||||
|                     var sameLevelMenus = await _serviceScope.ServiceProvider.GetService<IResourceService>().GetaMenuAndSpaListAsync(); | ||||
|                     if (NavigationManager.ToAbsoluteUri(NavigationManager.Uri).AbsolutePath == "/Login" || NavigationManager.ToAbsoluteUri(NavigationManager.Uri).AbsolutePath == "/") | ||||
|                         NavigationManager.NavigateTo(sameLevelMenus.FirstOrDefault(a => a.Id == data)?.Component ?? "index", true); | ||||
| @@ -51,8 +56,6 @@ namespace ThingsGateway.Admin.Blazor | ||||
|             } | ||||
|  | ||||
|             await base.OnAfterRenderAsync(firstRender); | ||||
|  | ||||
|         } | ||||
|  | ||||
|     } | ||||
| } | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user