From 2aaba301d9f14569c1e7fd01e5c2c5bc4df2530f Mon Sep 17 00:00:00 2001
From: bunny <1319900154@qq.com>
Date: Wed, 24 Apr 2024 10:52:34 +0800
Subject: [PATCH] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20:rocket:=20?=
=?UTF-8?q?=E7=99=BB=E5=BD=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/misc.xml | 2 +-
common/common-util/pom.xml | 16 +++---
.../com/atguigu/common/utlis/JwtHelper.java | 51 ++++++++++++++++++
.../com/atguigu/common/result/Result.class | Bin 6157 -> 6151 bytes
.../common/result/ResultCodeEnum.class | Bin 1996 -> 2055 bytes
common/pom.xml | 7 ++-
.../java/com/atguigu/model/system/Login.java | 14 +++++
.../auth/controller/IndexController.java | 18 ++++---
.../atguigu/auth/service/SysUserService.java | 10 ++++
.../auth/service/impl/SysUserServiceImpl.java | 41 ++++++++++++++
10 files changed, 140 insertions(+), 19 deletions(-)
create mode 100644 common/common-util/src/main/java/com/atguigu/common/utlis/JwtHelper.java
create mode 100644 model/src/main/java/com/atguigu/model/system/Login.java
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 79f13d2..9134c12 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -9,5 +9,5 @@
-
+
\ No newline at end of file
diff --git a/common/common-util/pom.xml b/common/common-util/pom.xml
index 9d7061a..156fad3 100644
--- a/common/common-util/pom.xml
+++ b/common/common-util/pom.xml
@@ -19,12 +19,13 @@
- org.springframework.boot
- spring-boot-starter-web
+ com.atguigu
+ model
+ 1.0-SNAPSHOT
- io.jsonwebtoken
- jjwt
+ org.springframework.boot
+ spring-boot-starter-web
org.projectlombok
@@ -35,10 +36,9 @@
fastjson
- com.atguigu
- model
- 1.0-SNAPSHOT
- compile
+ javax.xml.bind
+ jaxb-api
+ 2.1
diff --git a/common/common-util/src/main/java/com/atguigu/common/utlis/JwtHelper.java b/common/common-util/src/main/java/com/atguigu/common/utlis/JwtHelper.java
new file mode 100644
index 0000000..7f3f888
--- /dev/null
+++ b/common/common-util/src/main/java/com/atguigu/common/utlis/JwtHelper.java
@@ -0,0 +1,51 @@
+package com.atguigu.common.utlis;
+
+import io.jsonwebtoken.*;
+import org.springframework.util.StringUtils;
+
+import java.util.Date;
+
+public class JwtHelper {
+ private static final long tokenExpiration = 365L * 24 * 60 * 60 * 1000;
+ private static final String tokenSignKey = "guigu-OA";
+
+ public static String createToken(Long userId, String userName) {
+ return Jwts.builder()
+ .setSubject("OA-USER")
+ .setExpiration(new Date(System.currentTimeMillis() + tokenExpiration))
+ .claim("userId", userId)
+ .claim("userName", userName)
+ .signWith(SignatureAlgorithm.HS256, tokenSignKey)
+ .compressWith(CompressionCodecs.GZIP)
+ .compact();
+ }
+
+ public static Long getUserId(String token) {
+ if (StringUtils.isEmpty(token)) return null;
+
+ Jws claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
+ Claims claims = claimsJws.getBody();
+ Integer userId = (Integer) claims.get("userId");
+ return userId.longValue();
+ // return 1L;
+ }
+
+ public static String getUserName(String token) {
+ if (StringUtils.isEmpty(token)) return "";
+
+ Jws claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
+ Claims claims = claimsJws.getBody();
+ return (String) claims.get("userName");
+ }
+
+ public static void removeToken(String token) {
+ // jwttoken无需删除,客户端扔掉即可。
+ }
+
+ public static void main(String[] args) {
+ String token = JwtHelper.createToken(7L, "admin");
+ System.out.println(token);
+ System.out.println(JwtHelper.getUserId(token));
+ System.out.println(JwtHelper.getUserName(token));
+ }
+}
\ No newline at end of file
diff --git a/common/common-util/target/classes/com/atguigu/common/result/Result.class b/common/common-util/target/classes/com/atguigu/common/result/Result.class
index c797a584a74059d165b3159bfb5e3dcc550fe267..0f9aaa39eefb94795c91c04ea91fafdab7ed2a86 100644
GIT binary patch
literal 6151
zcmcIoTX!2*75+xjXvWSYv7I=nasj8fSeER%w4rHy$^B9j%L%sQ(hD@QJhheDQX-Gi
zhEkxWG~B`+3Ow>aUh)7e;%3pcSnv{9{2m?)<=f|+k;bwdxh;4td(ND*&)(nO``h~*
z&p-e3=f40rj9)v5S?DR0mxuDfLbbS19pZSoTpFtQE7hf7Xi7cWVIkqcM$$rZv{)(z
z$1KFt{j;**dT2wt1!u(%&g6rh}
zc?(ZBlbmP;XQUk+=ycHKVHb8=NVnQ>x;*cnEmfBZa={PeO+fZXP>z=Zf5ER%vxPk#
z_Tmxkke1yOg&B&9M;+MbVLuL7Xs6ftl!C6ejOr%#`qp0l!X_YLEoTsB$CxI
zn5|Juv_J3RX^D2?+{y8YHWJ|(4@WV~iGpIxu88K41R^%-VGJw?XF1G&S47fa5Wy23
zPT~~x&8sqrN|{Uu{mytei*u~2LcVnNdNseaNkP3J!kz6H#}^!2@Gv2pI_mMzDp|0;
zC|MEdee&m`hfDY(;gYesUf0vL24x)69%gWvP!{tmi@Fq8_2Uknv#_^rNxOJTO4_fq
zV-^V)FIez&^I&z(`(rZwl7}zjD@2sPcFixb{0E~MttD#{#bnkju80b@m~}f1;wXRC
zK^k#UV9gEmm;{ZvV39flJ(35$ELgDmMSIc1RVijSC~E~0-Gqg<>Ec2uA5<&c7N40J
zVG4CLc1{#a{$zD|&acem=a#tKHBm0)muB;oqP&~Qr0%8`9&OD;mcn`!H?M_i`daQD
zCAedRw|zRu7hcWfuNeRxIX_q|&tJ+{^2>hUSJ((njm`{5Xli13EKLoqt30%mm@CiU
z6sp!5?9%3HTcVekN}K)&02Ur%uFj*dS|k3}*w*Uo2wm-EPj4m5$RFPXQ0vX1p~-Yh
zJ0BrXgjC!F(*M#-2>#he!O1Z)c4i<|n13TTX3OcEX
zKg&)~=43fo^eNLOGQC1>whuLDUOcr>>-XFBTJ2r$(_P-|(=U&;jQMCr>es$BHJ&?5
zFykB>n{IDSzul|V4M(HBImsj83R@)|&2DY8^aDz#n`dLAYDQ|hT&)!Rb4BTg+w>vu
zxD+D}@%S0%#WRkWoU9zh#mv(LXBv@k+tRf{?^;*C+LDv@JG`KB9_*I4QDTDAWib-%f1>xi%
zk#!Fa5ZhoQwj7btFEh*mq1CG>YC9(leGr3^_;$?%!cfHj%J16P9{6h#A2W<>Kbrrjyg4-IfiF-
zmqjYHO-_l+8#%RFKjBDY0eO+U+4vUQH&kQPWg{~IXDs<@&_vxxqq-eiRL6hmSlf;0jyJ07
z*pfQkncpTpeh4vYBjmb=BY&U|`cTsy)`>(pX}p$hC8vC}ZOEGVZ+h)f{@ZQICy{1G
zMz(6Cu{Sjs8B<31jf#jRK(jPv`tCg(->MOPKanC2d$RUKyp(c}ToXD>Px&?{`CqyA
z&6?q}joWW$GrxnKxSRbOtlz+n-_8CNR&Ic|nbYc(gY%O-ozD*^2LFz2sl)?x-hnrm
zO0418P$D;MQzSQ>OxYrne1NVy*q*Xe$%xS8utTBAVK?Q7kZXjTlp6{q?h=r`K1K8R
zk_KAK<88d7ZfD&*zi+7vNiT}{4(H;$AQbRjjuJReSHH)RjT}zk`y3@1h(q`RM-F%G
z$8C<>$Ti`%VT0EDLk37LURijK`vG?F>h*8zalr2l<1UAf=wVxQ7!v6n<~SkWO?0qv
zfuWZi+Y)7Qax=1qB`PpS5m2$CWmdc#4M^!Zpv0m2bw45m^Nq<6UP*OgdY=*
z%}+YlIf{|w7w{AM5$Bh~C-GB`5GUB*B1N7K6;khg491
zkI6(g>`)+-NvxkTV#$bDU9xeO!UWFGEjpU)ANme=_
zj*qT+J)V^LS2$k7Vq=%n-AH%b!zNhu<5^~O54Q1h`YAo(by}Aj^6t!gcr}w{hszAy
z!$@YZNr!M%uhSRf-9|fi)-Ei&&4oqgq-#Vk#v(7a_1ZGm%*9wbp){(K{MGIE7b>q(
amg~DZ0XFumwk>t_m{I&oyi5Br{OZ3vx{nM1
literal 6157
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
diff --git a/common/common-util/target/classes/com/atguigu/common/result/ResultCodeEnum.class b/common/common-util/target/classes/com/atguigu/common/result/ResultCodeEnum.class
index f4de3e5f7ee174819ec54e37bf421dc2ae3421f2..3ecfd459270a4529242ab55d60e408260fc0b988 100644
GIT binary patch
literal 2055
zcmb7FOK%%h6#i~JwkOj`V>?Ys+EPLZU^}Fykn(a!_FAg%MO&8STe=HJ{>v(eMTaaO~w;TiA*M);Wztr^z$3-Ol%>x4f}Nj
zB%Dg0P0lUF78lO3_5mG(5}r?FW|M}IOwTcVP{$(}Cc>lHSZXmrgvZYBow0_)IO4^y
zjz@7+z@0Bv$`-{6hEkWz%Vwl#mJ5;e@+B)@k7^jf<6a!o@dQSR{k8%Zj~HAwiw!IN
zzQD<#!#Z9xYqh8YFzQviT!=a&umkD;DIHHEDBzj2%XWQAV94pJW0?$PIrFfNF+4++
z&Qt#c1{@)h<+@d{s&llJ5qpJ`hzdk^+GJJqs-XNmTVLJ&^X^R*x{8>9
z-del5b>+s^cOPwSZmQ^4afZR`>#eI_cfo*)vjV-XwOfCz-ha6Isfs}rud!P5Mr-Z!
z))yZ?T)oCTQ#xib$D<=VR}&ZyhW^L!5WB9S!golZKV_G#xkhQ(sxFwzMM9=_sX=J(
z^U2MsgjGG-kU~w(|~k8cX|OGGFY>wksIQ
z3QRiM&-Y+*@70;2A=8XXqnfv7Y_9ge&V_cIXL$MqwR(j1Vej-X?>2xWttcsJGf7E%
zNJ?5fQqra&ivV9RDd`3QzC*lf=A5G!J9td
zEqcaCJwi{8o*ukS{LbS7ea}l=NWSjyU4+)9!gc`$WW07l?oK>`cku2m#^e7qKJag2
zpT;-0V|-es2ZVi|?;&!oCR|2NY0_U<&fTQ>$a$Ld=acg`;WKh-69WcE*x4TyOL(v2
zZ=+L=PwtbqzzLThKW^f=z>D|r@*TJ&IH~yY6N9fx&?~`HZol_;2B#&cN$|ACk6##!
zOR!IZ39lc&GB_hap9IgTe*DH@Qi21Uc>NBBxQlJ7M``Rp{Trmg2%`_Du%AZ52b=o&
Q0aR*8yDcV`W%cua1Je1=?*IS*
literal 1996
zcmb7F-)~b@9RJ+yw)eKX8*TRkhGUK~r0awVg1=VhO6j25t+RKVR?vCZUCSlyZPMQI
zXpAOCNl19{Vabdk(HBe%6p%&K@TkTIeb(1i`6rCu@3}2>xER*tobNfG^Zohxo^$)l
zKi~Zb;5b%%ka5b7BxV#u6rA>BAI|WU;*(c-dQHW!A8E|0nDf&pXdq(3`$sTr{FZ!!ATqwqq8|3b|HFX0>V*=seVRt~(XWF7WZ#
zQartwq=YBV?j&RHMWa|Vs}c@}$9H5XbJ-Ghr7hc>tCd#F%7U>{Bt#J&Gw(^53ja6L
z@tq_WN|*CSamlDy?7Hb+wv7^n3Cx<#`SR+#QK7A4R;UDT%(5+KO2Xtefm3a{v{-F}
znnaE-Q5&4|7J2iJnbg!VH(Iy5DOXl4+bBx#=~lruoLYr43Aac4f7eREbX?y0!{cqy
zTUHd6G-g|!?%SgDpx0_FUu;&|8Rm>*ZLatx#vY&KDY`p;yj6iM*pi)EV%-b!+2<${@ah?EoUT}>2?YIU-W<<@m+gPNa!
zfp)v5T8f(#e3(G9-4X`EsqL=8^ilc{?W511Z+ei40Z0-hLJ|!^Qt3ic#X?e*WD#Pb
zg(R+lz+P@0?Y;0}0#Ab;I_*YD^3Pv~^esB>q4PTJBpjjHE6!BXkK!402>s(E*}@-^
zBOCDCgUtFJTl9|-qPbc)#cw+P`(ZI
z2BEIg5D@?jP%^vGg*^yj5FB8HY`MtiM6s=MU5pEsMbMy(=L5hCG!BybAsR2z=)g;q
z-y~u*GYe6YT$Lws3(BJf^@@0IL7rwj2`^)68)NlR2JtI{{Q?{i;BF;|-x%B@
zz(E1-RfG7Q!6yVb6!88)@jL7Ehn17-2S9SU><4b?JSmM6*kF94ASy1BrhDs
4.0.0
@@ -21,6 +21,9 @@
-
+
+ io.jsonwebtoken
+ jjwt
+
diff --git a/model/src/main/java/com/atguigu/model/system/Login.java b/model/src/main/java/com/atguigu/model/system/Login.java
new file mode 100644
index 0000000..2c4a60c
--- /dev/null
+++ b/model/src/main/java/com/atguigu/model/system/Login.java
@@ -0,0 +1,14 @@
+package com.atguigu.model.system;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class Login {
+ private String token;
+}
diff --git a/service-oa/src/main/java/com/atguigu/auth/controller/IndexController.java b/service-oa/src/main/java/com/atguigu/auth/controller/IndexController.java
index 3384d05..8e3d720 100644
--- a/service-oa/src/main/java/com/atguigu/auth/controller/IndexController.java
+++ b/service-oa/src/main/java/com/atguigu/auth/controller/IndexController.java
@@ -1,12 +1,13 @@
package com.atguigu.auth.controller;
+import com.atguigu.auth.service.SysUserService;
import com.atguigu.common.result.Result;
+import com.atguigu.model.system.Login;
+import com.atguigu.vo.system.LoginVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
@@ -20,13 +21,14 @@ import java.util.Map;
@RestController
@RequestMapping("/admin/system/index")
public class IndexController {
+ @Autowired
+ private SysUserService sysUserService;
@Operation(summary = "登录", description = "登录")
@PostMapping("login")
- public Result