From 20565599ebf84891a96f7254646d93e3d8aa052b Mon Sep 17 00:00:00 2001 From: YEJI RYOO Date: Mon, 18 Dec 2023 19:14:11 +0900 Subject: [PATCH 1/2] add:loan result, change --- .idea/modules.xml | 8 ++ .idea/modules/flexrate.iml | 8 ++ .../flexrate/controller/LoanController.class | Bin 3020 -> 2944 bytes .../domain/Change$ChangeBuilder.class | Bin 0 -> 2133 bytes .../com/sbb/flexrate/domain/Change.class | Bin 0 -> 3174 bytes .../member/Member$MemberBuilder.class | Bin 4905 -> 5243 bytes .../com/sbb/flexrate/member/Member.class | Bin 7686 -> 8221 bytes .../com/sbb/flexrate/member/SignService.class | Bin 7352 -> 7352 bytes .../repository/ChangeRepository.class | Bin 0 -> 497 bytes .../sbb/flexrate/service/LoanService.class | Bin 3571 -> 3975 bytes .../flexrate/controller/LoanController.java | 18 ++- .../java/com/sbb/flexrate/domain/Change.java | 43 +++++++ .../java/com/sbb/flexrate/member/Member.java | 110 +++++++++--------- .../com/sbb/flexrate/member/SignService.java | 5 +- .../flexrate/repository/ChangeRepository.java | 11 ++ .../com/sbb/flexrate/service/LoanService.java | 77 ++++++------ 16 files changed, 184 insertions(+), 96 deletions(-) create mode 100644 .idea/modules.xml create mode 100644 .idea/modules/flexrate.iml create mode 100644 out/production/classes/com/sbb/flexrate/domain/Change$ChangeBuilder.class create mode 100644 out/production/classes/com/sbb/flexrate/domain/Change.class create mode 100644 out/production/classes/com/sbb/flexrate/repository/ChangeRepository.class create mode 100644 src/main/java/com/sbb/flexrate/domain/Change.java create mode 100644 src/main/java/com/sbb/flexrate/repository/ChangeRepository.java diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..888a899 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/flexrate.iml b/.idea/modules/flexrate.iml new file mode 100644 index 0000000..8d43a41 --- /dev/null +++ b/.idea/modules/flexrate.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/out/production/classes/com/sbb/flexrate/controller/LoanController.class b/out/production/classes/com/sbb/flexrate/controller/LoanController.class index 548dc2f7cc1095afb09efb1aea3cad62048cbdc3..1426df15747126fb3a74bf4d731cd2c87970fe31 100644 GIT binary patch delta 894 zcmY+D+foxj5QhKW946T;V1W_{iV-|y6As}ZYCu#J!~+o#QN$BSL==b;qFz`PZ@saw z)@z@@vY=2vDSZI+C42+#EiC`pSX6njGhg>~_dh)|`y>1^T-f~c8H!ER5l%AnCl5WQm1axT`R3VFLG@MW5Z%fk}moh5MMY@Bq^m9%_1|X$G?v=8(1U z7*8zBBWGbjQ(n_kP0x^9`R%KgiojfUp)Z@Cn-rAxXT~Qp^Eu~*sxneBXG6uy|G9ed z(=%M^6m&RWRV?zqTi~0}0fL0ivQ5T$V)lr@c3KQOC{Rn&|B=i2y3NTOjCMx28u-M9|#QhFW!&rpIT<^UDg2_NHY$(1A^ ziXir(40T+o$1d#0UV7WPR>m*NHBW)=AOq@|NEwD4;H>E&4!LD(5rYi_aeDobVa3!0 z*+2stIhQi3iC^;=B!?tg=qoYkXe9{R+)&;mx!956N~Jas7+r%I9B4?a!dykj*);9K zk{hmDsN*vNl>=1XLB%TSMX4C0S`y7T%2BryEtcEfdCJ|dFt62ZQE#P#@4hJC&3zlp zGUIEgj3+)pmT4L8p|QIm8YOPo%3|1dS<}5AUMGch!ZEk`a#D(RC(9QPpbK|so3wlR JL*4cV{{pW^d|dzl delta 984 zcmYk5NmCO+6vzKPStc`SghC+;A|Vh>CZIwF1wLF<(TYnd zQJac(bjavb(1pvw=~m%Dj~l({lW|3biiCSL{BF~1{fowSx9tz}mf*OI364_S^4Ye%HB5%*;*a4ceuV+jv9mIWDtGFahwh({cc zvC6TAb&e;3o(g&R;j=YyZCmWE5@=ux^aM^5OkwN zHsVs8fE{Jzy&~UEYe;(s7Ol!b(#Y77)w{57Cf~xj3%NQ6*9RyPHc1K`#WDIMYzPn+ z6A7!pgM4`D#D^j(SWdfjbe4~-13^?!co7Ovi4YN0!%3W?RZtiaD{TlGqL5HUyH2n{ zndH^P5>Dd`tw$*8EIl=2Ua9@vPKd=|FG(m$De+HGM|R*&n9tQn zHkw0m4xXw_D?C6p2p8EhvH|L_oQ4PzRZw4*R4;@^>Q#&ru+qg3I*(iZGSbyr6N*+E zaelvi3ze5hrD{9yYSH&#TjWWjl*Ss5Y@U_2crWZAt!lj{dY_030h+Ag3yGS^zd-5t SE}#W7rN9v6#k}^E|f*C0^Sf2v=n5$-wKMYF_;w8Kp@5+WZI5&VY@?ir$pYw$It{r zf{72{LmAKPuClcaLX1Cl=IrcuzB%VR=j`_%hu;7^Kt7E$u6Lpn8NE#DC99Wd12bu) zaHF4aw+!4iaEBpbR~UMWTYQ&W4tF=LqI5TN45^x^m4wGIRxHb!<(Ep=>pFLZ#hBGNa$Xj`T9m#rF@Ql6T`)~_ z*p{lat_oQ&I1NTjurH2eN$CEU+2(cZd z@v5{X%8FqpKh|<55OVVRaX|TXBRx5h8QV_r^{d99Q>tL<{)47(Og`F5b!!MS(lc zimgP>z%z!)ri5C>M*Vv{4p-=>o~D0!5((Y^WF_S+q0S z+p`B?pUFsIh}Kka*o|Sb%@BYQT%b1^K3t?#JLd?Upxww$e?cPqiOgpAp%4-%+l z`qpk-YDLs`Vj`WOChEaxE289yiL^qRs1KK05w)L~NK34V#;72nM)^p~k*`R-&F+&- z`)H#lNl*I$jMk!snveX}d>mIJz6C0=F4)kYT!-iYj$<2&*piqC3N?vq!Jfi-+WV zYYDA(EkD4Ia(T|okjx|lQdsLg=AN_9zUS<7;h%s1`WwJQ=m}iM(*(Z8b^;0P@T$bC zZ+NxKt34jR?ZZC4i{X3TJd2al4?O(H!vPOJC6LCm7?c>w68e`96}={wnyOY64GD5V z*F|GlQ%qBs5<+TK!nNX&@gd5hCx{wgB*!Ml)dqwM_Ugk@W6)Q$PZe#5pP_mKeX z4MjgG8CyEj7!5doVyJp6e%wK{1E>IU-BoN%1nMj_IXny?C_qBOa7^+%iz z9qo{egRndGHAoIl1S+#f6*qk7EnQ^V=6-4T?OWoAm=4*2$xg0Z*EpS?vmFmmjh`%g z43b9>-9azD%a-jkZF@gopMy)69ij`Y_C*Ojlf2#Y;@WRece(s5J@<5Zc)oZ7C3cKv zqaxN+)^VS6r#Y@?@O!dK&z^Nc6ul z;*pFoRAmS($heE=GHO_q@g5Fks5pw@XBism5@s&y3Wuy;m@?M!rHnyj82&aR-(%28 zYOl+2sJ+@U-YOr7iX~zAA|HN1Bs~3pv2@qz^0rEHTX{QR$y@q!Nxdy(|q?er0Fw+&d@_s_zV%6qGyPmp?7m;_D{q^*!$gvoS|_PF&f9obpm}9 zI8C8%Qm|oyo*?j9I?Xx2m_wd+6ax40K85Ag2l$Wz4Lk7>px!Z#)Zmx#oj9N^sF>6{I8p2tFf zbF$NUB+&UYECx8II-SP?oj=DHuJa?hB4vUZR5*ej+Trr#&D3*jrf f`MIf!wBH~u)bX3xqD`1K3EZGn!d_j+0OJ1vyUX4T literal 0 HcmV?d00001 diff --git a/out/production/classes/com/sbb/flexrate/member/Member$MemberBuilder.class b/out/production/classes/com/sbb/flexrate/member/Member$MemberBuilder.class index 19d9c502345ef9a1e0d74efc656f92655cb8ad63..63f37af96d950a1c84fc1ae988b94b2de6d1ad88 100644 GIT binary patch literal 5243 zcmeHLZF3V<6h1dio3!1&5NH8WC=j4cp%D;K0tk&D)wI+Wi-2#NWNDXfcH{1*fN%Kz z`Uf0m^f%~?3=YibM`!#^j^lIg?xq{kCY$lAAMQPO@1Ap>b6?JLHu>wHhrbiiN&2pj z_R!T{+D)%>ca6L2+}%jf8%cVzk9z1WettVi@32&pRAgC7QkkWeq?;_4leEH8Ptq-x zt4T6gR=6{{v-)TkRTK0sOFISlwFKQx&>cZBy)0XG(Y1BCo@7;ZoZFU-)y7S= z0+jBeZo4a3>9S^)HCxcuklnOp8JY~bA5rO+sT#U_S5SX-#WFRsRw=SYw}y={5WEd- zC+%oJ7uTWXJ+G-o4L~Q_FQ=lh!|eH*yJFb@k}K*tt(&@gR#4aY#1g{JTV;3~D(I#* zCj+>m77fg#3RX!qmQ-8kXMZy8uIP@Sfm!K!x~3a)jmnH^YIfehW@val)x5KQD4t!q z!5q7MZalO}@~TX9>SBJp*`o1Ab?kC(bC>e!b?h)$X8j80I(9MIcq(_R!O0Z;Ev);F zaJ@T5pAMgsp9CE{8CZ1H((0^Q_3zZ41>~1r(Pqpw-O>53VO8f%({g2s;64o(469PK zREJk_^o)$EdXQRmF=_tI~Q^yp$_A0cG z_A8X80}36aL*U?bm%RV;mTqFFFWf0Zp)tzG910GGcRnF4Wf-)h}ZfkK=T7-zb zt;I1Jyd?j&y2oi!p=arkLeJ0%h2EzRa7s-j)xV71dGqFfh-5+KwwAS_9no+4Ub6OMWi!{DF8_HZAexY)4W|5^2q`tptnb0ZQXhRvp9%WO zPh3y<)puMkpAm=0ybmiL@n@5qkzX-9@{^N?LDKPaK>8^euR`>HS8rHB^>{Q2aH}Ui{A3gI^Yd6ywT-QH+a|l&DWqqC}CP zaXFsAdz2SBM%|DSML|jszLel{DZ$WEf_J3^r%DM%l@jz?_j{6tF^2+)nNt{LAq8Z2 z<^hRcq5iKum7P7vyZt18i!qU7WyZ{H@t|j1d z0*<{yy@*kUUZO4uu>i>sBa?s9z$5CpmP$OJU%jN?}(sFaMML%kY+IG zB{2%|GTJL>30@dKpeDA!?hCN{BV+TujEsGx1-24k4@Ac1T!@T4)dG7kz#fW>&G{D@ zJ4=O4&wDt)-Vzy`b3QWm(H7XL0DEg>Z04EB*vDGz`L+OiBr-O0TV(9xEwD!e?Cp`U znNK5Q&(gjDKjt$==*ve$WpXHH_qUxF4H`Erm7!lNb<-` z=2zNLK)3S;O8iDo6duv8Yj}*Ib)m)4y3u;k`q2i^hS0X4ZABYF+dlb#o@5@6Z$fr6 zevsW*rdL;jAiWt5lG!Lp;%^#G(5rY}phZ8_G7VrvbP7-%g$4Z`59ukQjcbfYwx|5q p;&cTVF?x-bq})X>K&CLW8-MVf1wnp6U(=VglN`(=QgYF1{{oWb(wG1M literal 4905 zcmd^BS#uLd5dKD%EZJTk2y6ohV8DPa8!HD#5(5D%=164YU}6H~U?mOq;?=IQyD~WU z{R{Gt7HH5D`ZRS%3~g8dS{upReg=m4Jc+sCtH(%^R*q!FDYg%jCD}(C3prZ2j|@=AD)$ z<7F>Yy%pP`IHu3>A)YZT!#gL?F*d$LyUN)m^46a>EIF^@yRH{ZT1n^aqHZqfj=}R_ zG48DxbV0py%JWRsFx3%gS1e09Ig`#x(&woyL-FlK8_X%D^JAeiRF^%zT^9>u%@&P0 zv2B<0Tf0=rvu%en;cW&fwrwZ9i=JLwozpA9l^nQ6*=v;L6>H6K4Zf=Nio9T1wx<%1 zu45o?+U0`1nw__;`KoEsfsa0Iw4ghb-JWzBEOX(2Yq`Dch!ZNUH*UF}veVmkHPo1t zwA0`eWDsfHceHZYb^wV2=e)q7v391@Nl;m*Jlnr$fn8*>L1}e{>0Y#}PElSoxafNP z%9vt3GM<;NciDD54JUC*!vTzFIEX_U4r7$KZNnR1>w;}qbb+%Ein7AgBXBg}wh_Y} zDeKOvER9&Ub=)H5kwVquWgfHls)i#tDsZgEcWrHsvHD@=#I~wqtU9WAv#stp>mKpB zwXJdn69SnK)3&vkR2CsNZfkK|1+N&pt?m?#YIq(mXvpF@4Qsehx774hm3>w~frWTDT{Rl!$$5sa_regW=k) zkr6!zeWN9LSFf7hXi&E4THe-;i9r4eTPwzHN55NsS6td$8UJ~u##bRnn=A!84=FXQ zZ0vb_sT-f*Q-SY-8udl+296n}vtn|@|3Tpq|9-FxN|1-O(&91K4NFxNJn%E#|5X2R z;AtpVd8!hT2cdt3vtnFexU8?roNX0#?}p*6(8%?4%X5W@|Nri)`8t#MjBDvjBBG7r zFswCuRc8Gg_s{O4Ui55dJ&CXBS1E7XtJR9Y_u&%^jQl#itXn1ihx0Y3n{h)c4Tk(m zZ=!xXr0L|B2qoA9y)66a#~5)*9*k4Jab|s0nl_W-1l6Y20VoxQB8I>enRFX&%0xzoZ3G|bs7mij=(e+ajf{u|)W+omYmidW>F+6QPSe9rlH$`VY)#PIU&09*`3(Cyjov_>ddB$yeF|qb^9zRa)b0Ke$zQQ2{{(w)(lkb` zgIb(gidr`{janbI0cvS#yQmFKJi;?fu<}CNPW=AioC@NKV}a0Pc$1Ev*h1kXrr?Mf~r6p<8o~5&WSh`cB6M?RD zHyxxS-Fwizk~R(rv`Kepnzrele@oln``w*~v6r?MB{5AgZb^h@U{_#zPz7?WxhbcQPeYOEiWiKZ5Ud9GNTp>T0u~go)*-ZJg;6*6B*T5N+eBVX-rV;Owq9P ztaer}=nENb+%QZ_wRF<}ProF;n8<1Qf?lvRBc&y#(_q@^b8u3FI@QwBXVpwm15v18 z@p|b}O?qgWzm${o)5oV~=cnh-2@0n2T3WXR4J1=$Hc?nuNGxWwi!3gYHnXa3Bqk*V z)NJ*!<&>e#oA|+2WYt_wOHaUxU{-oakdjghDK)JL+Tp`IX&*XPHIFBgf?6`BY6#lC zt~p7ZLt8Ml4BtYqaGAGSUF)MFVH1zw6 zFn5cSB-6$PpET)AX3Xq@xssSQjoD%*15Gn#a91U^L4s2SZtOe48v)6k3}r#?hz$c+rfJgAYthinP8+-&DW zV!UWAn|X+oo(?Q(Rtl#0dHe()Imr>28b3L8hErX$&e$q@hAVWA?Kz7pPMVx<9ZB8L zW~H(7DyofxVy4v0Sv9Zo+SzQemUUR~ll+dgcB#Y9EqqZf)G{gXwIk{FN^5))&Bp_5 za{EwPTU3h~YshhC_wb&|s|h+>wb_^kB<6yPR0klVs?5u7I%Hqi!8Y7G0EbT_bzE<+ zAsU(E34XGd++|Dcih{11o><^uabwTY^Ma{fK-Kk zs?g6A`nf{CQ0SKm{Yr?t{=a_l0k+CKTF>$q;Y%Mk`D~T>sajjfb3S)i2mYIf83DR7 zYIY&54x!9t77iT{bh8gaRtaHdVFG@uQ?H5^)i-Ar^C|6w&W~Bd2K)WostWRJP^Qqa z;-yCODji zbHjAn)D2+x)WwvRV_blbovv*_FAQYW{EC(yFic~g0pfv$qQ%=hXN%59=_nl&^b)tB zs>?IQT( zi7&)rR?DN(ltnW?rE|ZV&BJ5x=P3P!{vM@| z&?ETTTyuzSTrgL(L{g#{ie6n*Q=yqJdS@M5yn|UmXg-T^$O*TOA6(Sse<1SRD#HgP^b-Ix8Ku)$7nx8l9%QJyF_$ z(=#*&o_YA~^%$ElcE?9nNsPp=@#-mRZlcGq+f1*-&vuOL+WMJMPiR{b^?y^3Cq z75M2K>=1Mh=249H&MaoOW%p8;u^3#ebwF|>YS*dd+*JxZiajB9aZHIi9j^PRm0kxM zMI~1dTuL>UAe9yz>QU(6n+5r1A-+wMM?<^k7Qxajf=&$xN>SQRPHUrb>|zn5(W0N6 zaHDeUiW0O`idfQnugF@IY|pKCFD^T8bb{zwMzLc@XBjh{&Lhqoox3rz=Xyt;rMBx7 zJ=fiKmD-d z@^4tRQA2gNtGcIA)r>0*t2S$>?sZl7HL98ct6|kSx_{kR_q(b$HL9ACuwm8t8mez{ zRmU1t%@EtL>Ou{NZ+2C0X;d|1cf+c!8mhOts<$<&njeLRRTt?3h`Fv47#Upy@y98| z;OPa#ne6JS8KR4+egR*{8Q0j^xEJh=s{nxU6o>oHz@Y4zG8bS#g1%H?Av_B_En1A zzd^BYr+4`Hc2lL;TQ(^6oxWmYm0}NWQ0%*Wov@`+?BNZHeYdaJZIxn2Hz@W!zR52t z#opl~)=vKWko*tPd-4C5D17k(0@aRuz7fAl+hc*US3MSVm-3~JDeh9fezB0dlrK`O z)m_S0A{KU+61ig$cPY^{7Il{;gbT&@u2O4!-ztUUv6fYe#A5+874cYbmAc|FWtDp3 zvCt~@#bd3jv?(47uTm@?i>%U?cr3a~+v2e{w5g1fEuLnsOZwqq`;Mh1N!549^asL=ZqdcQ&+Q0THk4}1Q8P$B%acP^t9 zxBob8+lORd1v&k=2l}dhT!IJOfCre*18nC3hVuZcd4S0nWFt1#hKc>hZOHhjkvUW0 z7ijp&@5^m?Q22d`a+<}Tq#aJEyw6OxCuO5{s5+bY8{d&p>e@%*PtX7d+RJ@ha@$Vz zcI_XfkAXixAD8r>kY7O^;QS=kpTfxr{!sli7A;r=X$Z4!90&37y9*KhEB%B1Mlt#< R_W1?;9O~us^ac9j{{XvA@16hv literal 7686 zcmd^EX?qjb6@JHyMwaCT+qj6BV8BU0Kt$6L2&Pcm7~)nK2V7c`ZewX|21_%JG$PO~ zUDBp)y6+3!_dRLikU*QX?vgf5_n*@5ZQpZe#vaLIOMd#XJhtw3wtJTM9+?;aed9R* zhw#rf4C2#0oPV($kK#)@zMMb{uIczn0x?{Zbw`Be8IKCs} zcjNe;jNgyr2QvOJjvvYR<2ZgI<4@!GnT(Ie@q~;&PhbbGB{+LBfv2#j<7pk&HFTUd zi!)|vv|<(VW=TVG!nV!QSivZl&9a6jE3ctDd&#(LWD15om&rQz+^~k!*^2F2Mf1E> zwq^?Eh;2Kr;aZMOo_I~P+pEn8>lSJ{dE9<$d z>(W!x^wkALKXGDwa(ZI=f`(YGWaceb!(cY&6f@=h!vHGH0U{_oHO#KhV2o|W8R@}Rr5$TtD&Xf7`BF6*EA=~ zb86F#T+X3GHS{RSo~zHfB}+MbYm_>tP$>#;tYTXaR?KGRlcwPoKQ0sY<%r01XA4eo z#+lDdI`(9xP$2vES_Zj5RXF1d%!P-X5)+}tHj2D{>x@-$FH-fKX{)5^4OuP0CtQgJUjC2AZ#Mj6{8Jg1_3+OV(kymi)ebG%6u-AOs}!`V7Ma%%jnB&X?~ z^(^k)U1QVmp7Zq3m?H_&m9=bhQr&ghV0}nnot#lPZ&wI&kB{c@Z0+_@a$6@Sv3JPf?KGb&Wo?xZux;5l<} z9daMz5+q*sWnYj@VP_H}NE7l2SH4d;3w*+9;FHZ&QUa&YC5kcZ5^hwxgd4s~;+*;= z9Xo2-mU~RYzrxN|FJ8UeTJv1p-Yci@UH|8u;I<(_5nFzmhKQrQ;bL&+53L zJ}j*?ujYHu;L?%Uv-%*Nx}9bo{Ctk0tSIEG6+9{FZpEIzp8{Bc+mYRo?6*-i;4w z*tZdgPhtqSC9x0tlXxW#vR7JZHKjwDax9z3IesN)E=WPsy?(DWXq5+xMrq#65895s z-zM?kOvROLnTs*`B<{u`4R-_`OkJL1LcUA7oVujPg>*=DLUn0hEws0J-BMlR5sYd` zhkB>F9Ak1ZaU4qG4Y;7=cS-ynFEB>yN0^DU62vnzm&_a++s>6O z0n{iVRnH4M^i^7X0`JKQ>F_X()wrU=$HGAGGSDUP2mDb()m!eFNC=c~M=!FiWri`^ zG#p>MlD)zi4mV1(6+0&>ni=D_pi0p!vB>mUr!;OzhdJm&sj_4>so=qmRTr*>0py8$Pd*BQ3pyFP`&a;sp@+gPbdT`VeSjDIs>=1e5hn~u?s@1%He8OtSj6&g@ z<(k7f{=uSL<&dcRRKZe}7XRMZ!PMEouV6_u38H~G#nmRR?%=qa>pdpY*vk!KoqxQU zsn4i-c-a^lKTC3!=H7dtT zehmg@qU0nRmE%>2h8*&Yf_ULRj&iTQy)U5SCfYCbB(J06dAVh$NcCdo`7wOUzU5o? zNw+|&Ohv7Assd_**3Y%n(=2~=wry&mVQwAOU4iQEMpa93Hmv&MI;uAXs(Tt$EmhyJ zYHJEdbcC>f$;MPX(&C zHmX{XwPDrvI;w98R1Y+&S|Gb&)eaU&EOnjXDA?DUehP7cwlG|!6kK`0+Uggwh6hoK zU~a2r9*ATv!;N50)G}|6WUk<{pQ2&2J8PMDMKDLa%Y7d1Xm}`6Y4dGdVh?Um?7Jex z4%CW0yg{)KFSj7!ywz&O9*YngbR-(TaKDHDk2S@XUpf_EM1MNfwumk1RALcZ)2a4F45U*@c76hGEusFXM|t28?{>?b z!;;@0@y4pXmp)`kb@9?6E~&nvMa|@yZ&fpSbz^EKkD#t*@+QUAOrD4~H50^6sF?t0 zyP8RFn+)}oOZ@xI1b3u!IfVFs(2EWogF4=;<9#|F(eeJ!&j)ny$J=?7ZLIgtZ!JHl zx}GD5_tSKCJ^i#>1{y5`EtY}i%0OFXprJC*N)D<`x+lqr{0o{TIcQ`qRQxNFkHB{m z>;?Oil1J%haH}7Y@DtD*%E_b`k?tn>w(HAS?o;=spT>5HXPA3baeG~RxZnK47)h%;c<*D{7we$&-feuf)qZ(eR-We%YyhE IK94W_7vF>(rAoD zGznZB;O3MWF7a@SmjWt9d^|~_g7fpiTvqaa;pT-~V3?Ta3hmEQSRhmi5(u<<(WOI#CVa-S9#)%Bp;Hfk*2{uUu5{^kYA4YlXZS6%@gLa0P#LN_9IGA7>A5L^!1aT9?LxLIh znI*#8FKOO8*D`Qn6ci%>tD m(c_$7F6eW~fGeY8{V?SjrhtW_QL*I|)%dd=CfKn$2!aa diff --git a/out/production/classes/com/sbb/flexrate/repository/ChangeRepository.class b/out/production/classes/com/sbb/flexrate/repository/ChangeRepository.class new file mode 100644 index 0000000000000000000000000000000000000000..810061c285655b6aabda9b3994b8d4171153553a GIT binary patch literal 497 zcmbV}!AiqG5Qb-JZEV%z#a9poaZchP;z2=FQVRA7Cdp>qnCynlMlF3a4?choC2kwA zK@WNuvX5HFUUpwyJCG+jM-HxXX=v5SuV zG|olh!pK-jb!C;7ndMSE8~aEpJEpv1vZ6Aza>mZ-uHySI^{ZRQXvMj7AI(f-6LGBy zPqp8!wH|r0ybQwe4~)(Z-+K`D*7t0I5KjL^G(bS;`PlGp#6ChFHoY2n)q}uCn{B~x HRT+H(>QJ3M literal 0 HcmV?d00001 diff --git a/out/production/classes/com/sbb/flexrate/service/LoanService.class b/out/production/classes/com/sbb/flexrate/service/LoanService.class index 21ae297ad12a0ff6dd2c82811e20348f3ff7488a..d1d341a1e3f33fc0eaddbc147c9aad2588facdca 100644 GIT binary patch delta 1744 zcmZ`(?^9G&7=F%W_a63gcA;$r7FJmh5tiRYSwNr*StO*HVJ4!BY`6xyxVu=UxkW#a zq#t_vrDR1}P@hU;O>2t2G}+Yjq5gqBHfdASm&S3d_uLB%H8s0?&vW1RJsF5Y4YXmK0geY0+OANKLOT@d zRcNO|yA%p3)TcOhXQ3b69AN_ngvSI9 zBPCFZRUD5CJb_VxC-D@6Pi7mwMuDgCjKCO<2#n)dfuooZcn;4Cynq)4jwy6pA*s+y z3YDXR<7N4~-J_J}Sjq)n!K(tVVUiNXB^<8{G~<-O8+cRTElhE|E$|LbbG$3?9;W3X z`}U#^93gAE!b5%Gxc}1BhnG)I_%9tjeR*O=paV0qRBv{>_J;O{Y6qzuwVko(07HeW zF}!k@mUFgOcQL1HAe`)oCc^RL&SXS>&kLQd#L~!b+$U=?e`QsweWjM#rG0gc4EKkU z;q~#@km?GdXnQb>UFqEhz77t&6V=|RdUeS$Wx)Lkt z!ezj%x=+XrIv3_h9W*lx0aSv70PGr7W>WOWz{g;f=b>r1yE=`G6SzPT8%69I8f{*i z89S~*(*P4x^~Y4X_hg2Tg5& zPBeM**%g=}ng)_b<`dZ(8Wp;QNSTQm(FBbIUnKelYSV2L_0wpvwGf-d(MlXt6{NDY zlwL<=RnY$;*_?x}WRRncquu;cq#d{lABX2pxUL{abI@|PW4$^Ll8azUxm7^qKr7L% zCAZemLP2t?jka_L?Gz-(PBHi52I?0#P`|i=daAwC+(6lq4dhb9nrX>axdqjkU{{f< zQxX|Dc9)Vwi}lbH<&r0G4#k1WS=a(qvtWVhS-4e$HM7AwRa1>AFJRR#it?CO!OE-4 jpqZ8GI%LpigUQi}E*cGZ=>ibgNWYV2fRW)IoPgtRA!1)Z delta 1577 zcmYjQ-B(mq6#tz&cjnIAIWWioGQi+SXu~jkB?*FId?ZmYX_iD*I@Ew8Fk>*$7cpob znv#jfGOQkOxt8`uA6~Q8DxZ94wN^g&&_9s&(wnR0YVSLI$QsW5oqc|L-{1c2b5Csg zw>Y2mIDb=JGtFzh} z(X94rel_M87ismEV|KH5G?8IyUuq;R&>ZeR5}%GYjK@=>4gKlVXnT$NLn|xh)1FM4 z>brI(Q^`z+z))E262XN(eM;#O^|yX?OEtC_I4bcvCMBkjk*LB$2HudE#+wpv;cbD6 zRjoq?-jR40GZOD%Rw9cziDQh8GkPB%NPLKoBu?O@#K$-#ahlOQqfZ!}Ve~1^8d#7x z2W8;A#Aoj5 zB|7nyK()$h)hcKdf1fs_P~Aq<^pHKdDyq@DQ4P5AB4mO=(O7&UL9YncJmA>A%w&>0 zBf=CD)Uvz6mrvZj)Kp?Jb1;*fNT?;ZU;Xa>M-6%x^SKV2FA$(;5cEEF5rA^it#p zh}s*_G{ovGI2Lh|B05E!8rt-LZpRMs({&R@n=^U~B~c6RTkr*(Q7a3#1&;-jH}G1J zHpsJ(Zv&r&0vl|wP-p|cg(7}MzM(Vnq`tGGp_fTYr`W&V{$54X|YB7f>-KaX8LOsqC z`vRJWN*Fc;7Gwz}N9tt!Mm21aN9*3&W@5*w2W%fw6Q+^Be*Gd(4 zP%~{LqQjQjYzr)06WFvSuxU+T6CNWr3*2f8d{7@}=JfH|sy;Wwf5n18J1Y>nSqH=kCR>arIb2h|DYZuArrdE1rMo-Xv+-MN4qSQt4=)Xq?bU2|B}vLfS}DSw+M26!k~`@&ImrWb$_0Iq>(~^j zy#_rJy#~P-NV8SBh{#_A&pni*u2@({S@s9R1fTuMXq41#r}mI|z@+_ddiDbU0~D updateLoan(@PathVariable Long memberId, @RequestBody LoanCreateRequestDto loanDto) { + //put method +// @PutMapping("/result/{memberId}") +// public ResponseEntity updateLoan(@PathVariable Long memberId, @RequestBody LoanCreateRequestDto loanDto) { +// try { +// loanService.updateLoan(memberId, loanDto); +// LoanResponseDto responseDto = mapToResponseDto(loanDto); // Map LoanCreateRequestDto to LoanResponseDto +// return ResponseEntity.ok(responseDto); +// } catch (DataNotFoundException e) { +// return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage()); +// } +// } + @PutMapping("/result/{memberId}") + public ResponseEntity updateLoan(@PathVariable Long memberId, @RequestBody LoanCreateRequestDto loanDto) { try { loanService.updateLoan(memberId, loanDto); LoanResponseDto responseDto = mapToResponseDto(loanDto); // Map LoanCreateRequestDto to LoanResponseDto return ResponseEntity.ok(responseDto); } catch (DataNotFoundException e) { - return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage()); + return ResponseEntity.notFound().build(); } } diff --git a/src/main/java/com/sbb/flexrate/domain/Change.java b/src/main/java/com/sbb/flexrate/domain/Change.java new file mode 100644 index 0000000..3deb21e --- /dev/null +++ b/src/main/java/com/sbb/flexrate/domain/Change.java @@ -0,0 +1,43 @@ +package com.sbb.flexrate.domain; + +import com.sbb.flexrate.dto.LoanCreateRequestDto; +import com.sbb.flexrate.member.Member; +import com.sbb.flexrate.repository.ChangeRepository; +import lombok.*; + +import javax.persistence.*; + +@Getter +@Setter +@Entity +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table(name="change_log") +public class Change { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name="change_id") + private Long id; + + @ManyToOne + @JoinColumn(name = "member_id") + private Member member; + + @Column + private String change_insert_time; + + @Column + private Double change_loan_initial; + + public void updateFromLoan(Loan loan,ChangeRepository changeRepository) { + Change newChange=Change.builder() + .member(loan.getMember()) + .change_insert_time(loan.getInsert_time()) + .change_loan_initial(loan.getLoan_initial()) + .build(); + + changeRepository.save(newChange); + } +} diff --git a/src/main/java/com/sbb/flexrate/member/Member.java b/src/main/java/com/sbb/flexrate/member/Member.java index 12233ab..6c702e4 100644 --- a/src/main/java/com/sbb/flexrate/member/Member.java +++ b/src/main/java/com/sbb/flexrate/member/Member.java @@ -1,73 +1,75 @@ -package com.sbb.flexrate.member; + package com.sbb.flexrate.member; -import java.util.Date; -import java.util.List; + import java.util.List; -import com.sbb.flexrate.domain.Credit; -import com.sbb.flexrate.domain.Loan; -import lombok.*; -import org.springframework.web.bind.annotation.RequestParam; + import com.sbb.flexrate.domain.Change; + import com.sbb.flexrate.domain.Credit; + import com.sbb.flexrate.domain.Loan; + import lombok.*; -import javax.persistence.*; -import java.util.ArrayList; + import javax.persistence.*; + import java.util.ArrayList; -@Entity -@Setter -@Getter -@Builder -@AllArgsConstructor -@NoArgsConstructor -@Table(name = "member") -public class Member { + @Entity + @Setter + @Getter + @Builder + @AllArgsConstructor + @NoArgsConstructor + @Table(name = "member") + public class Member { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; - @OneToOne(mappedBy ="member",cascade = CascadeType.ALL) //변경사항 모두 반영 - private Credit credit; + @OneToOne(mappedBy ="member",cascade = CascadeType.ALL) //변경사항 모두 반영 + private Credit credit; - @OneToOne(mappedBy = "member",cascade = CascadeType.ALL) - private Loan loan; + @OneToOne(mappedBy = "member",cascade = CascadeType.ALL) + private Loan loan; - @NonNull - @Column(unique = true) - private String account; //토큰 Service 통해 자동 발급 + @OneToMany(mappedBy = "member",cascade = CascadeType.ALL, orphanRemoval = true) + private List change; - @NonNull - private String password; + @NonNull + @Column(unique = true) + private String account; //토큰 Service 통해 자동 발급 - @NonNull - private String name; + @NonNull + private String password; - @NonNull - private String birth; + @NonNull + private String name; - @NonNull - private Boolean gender; + @NonNull + private String birth; - @NonNull - private Boolean nationality; + @NonNull + private Boolean gender; - @NonNull - private String phonenumber; + @NonNull + private Boolean nationality; - @NonNull - private String email; + @NonNull + private String phonenumber; - //fetch_속성 데이터 어떻게 로드 할 지_즉시 로드 - //Lazy: 실제로 데이터에 접근할 때까지 로드하지 않음 - @OneToMany(mappedBy = "member",fetch = FetchType.EAGER,cascade = CascadeType.ALL) - @Builder.Default//빌더 패턴 생성 - private List roles=new ArrayList<>(); + @NonNull + private String email; - public void setRoles(List role){ - this.roles=role; - role.forEach(o -> o.setMember(this)); - //Authority 엔터티 순회하며 setMember 메서드 호출 + //fetch_속성 데이터 어떻게 로드 할 지_즉시 로드 + //Lazy: 실제로 데이터에 접근할 때까지 로드하지 않음 + @OneToMany(mappedBy = "member",fetch = FetchType.EAGER,cascade = CascadeType.ALL) + @Builder.Default//빌더 패턴 생성 + private List roles=new ArrayList<>(); + + public void setRoles(List role){ + this.roles=role; + role.forEach(o -> o.setMember(this)); + //Authority 엔터티 순회하며 setMember 메서드 호출 + } } -} -/* -사용자: 아이디, account, 비밀번호, 국적, 성별, 생일, 이름, 이메일, 번호, 권한(목록) - */ \ No newline at end of file + /* + 사용자: 아이디, account, 비밀번호, 국적, 성별, 생일, 이름, 이메일, 번호, 권한(목록) + */ \ No newline at end of file diff --git a/src/main/java/com/sbb/flexrate/member/SignService.java b/src/main/java/com/sbb/flexrate/member/SignService.java index 4e76c60..ffbb4f3 100644 --- a/src/main/java/com/sbb/flexrate/member/SignService.java +++ b/src/main/java/com/sbb/flexrate/member/SignService.java @@ -1,20 +1,17 @@ package com.sbb.flexrate.member; +import com.sbb.flexrate.domain.Change; import com.sbb.flexrate.domain.Credit; import com.sbb.flexrate.domain.Loan; -import com.sbb.flexrate.exception.CommonErrorResponse; import com.sbb.flexrate.exception.DuplicatedMemberNameException; import com.sbb.flexrate.exception.MissingRequestParameterException; import com.sbb.flexrate.security.JwtProvider; import lombok.RequiredArgsConstructor; -import org.springframework.http.HttpStatus; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; -import org.springframework.web.server.ResponseStatusException; -import javax.servlet.http.HttpServletResponse; import javax.transaction.Transactional; import java.util.Collections; import java.util.Optional; diff --git a/src/main/java/com/sbb/flexrate/repository/ChangeRepository.java b/src/main/java/com/sbb/flexrate/repository/ChangeRepository.java new file mode 100644 index 0000000..c9eddcf --- /dev/null +++ b/src/main/java/com/sbb/flexrate/repository/ChangeRepository.java @@ -0,0 +1,11 @@ +package com.sbb.flexrate.repository; + +import com.sbb.flexrate.domain.Change; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + +public interface ChangeRepository extends JpaRepository { + // 멤버 ID를 기반으로 Change 엔터티를 찾는 메서드 추가 + Optional findByMemberId(Long memberId); +} diff --git a/src/main/java/com/sbb/flexrate/service/LoanService.java b/src/main/java/com/sbb/flexrate/service/LoanService.java index a393690..d3a369e 100644 --- a/src/main/java/com/sbb/flexrate/service/LoanService.java +++ b/src/main/java/com/sbb/flexrate/service/LoanService.java @@ -1,5 +1,6 @@ package com.sbb.flexrate.service; +import com.sbb.flexrate.domain.Change; import com.sbb.flexrate.domain.Loan; import com.sbb.flexrate.dto.LoanCreateRequestDto; import com.sbb.flexrate.dto.LoanInfoDto; @@ -7,6 +8,7 @@ import com.sbb.flexrate.exception.DataNotFoundException; import com.sbb.flexrate.member.Member; import com.sbb.flexrate.member.MemberRepository; +import com.sbb.flexrate.repository.ChangeRepository; import com.sbb.flexrate.repository.LoanRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -14,41 +16,48 @@ import java.util.Optional; -@Service -@RequiredArgsConstructor -@Transactional -public class LoanService { - private final LoanRepository loanRepository; - private final MemberRepository memberRepository; + @Service + @RequiredArgsConstructor + @Transactional + public class LoanService { + private final LoanRepository loanRepository; + private final MemberRepository memberRepository; + private final ChangeRepository changeRepository; - public void updateLoan(Long memberId, LoanCreateRequestDto loanDto) { - Optional member = memberRepository.findById(memberId); - if (member.isPresent()) { - Optional optionalLoan = loanRepository.findByMemberId(memberId); - if (optionalLoan.isPresent()) { - Loan loan = optionalLoan.get(); + public void updateLoan(Long memberId, LoanCreateRequestDto loanDto) { + Optional member = memberRepository.findById(memberId); + if (member.isPresent()) { + Optional optionalLoan = loanRepository.findByMemberId(memberId); + if (optionalLoan.isPresent()) { + Loan loan = optionalLoan.get(); + loan.setInsert_time(loanDto.getInsert_time()); + loan.setLoan_limit(loanDto.getLoan_limit()); + loan.setLoan_initial(loanDto.getLoan_initial()); + loan.setLoan_range_min(loanDto.getLoan_range_min()); + loan.setLoan_range_max(loanDto.getLoan_range_max()); - // Check if loanDto and its member are not null before accessing properties - if (loanDto != null && loanDto.getMember() != null) { - loan.setName(loanDto.getMember().getName()); - } + Optional optionalChange=changeRepository.findByMemberId(memberId); + Change change; + if(optionalChange.isPresent()){ + change=optionalChange.get(); + change.updateFromLoan(loan,changeRepository); + }else{ + change = Change.builder().member(member.get()).build(); + change.updateFromLoan(loan, changeRepository); + + } - loan.setInsert_time(loanDto.getInsert_time()); - loan.setLoan_limit(loanDto.getLoan_limit()); - loan.setLoan_initial(loanDto.getLoan_initial()); - loan.setLoan_range_min(loanDto.getLoan_range_min()); - loan.setLoan_range_max(loanDto.getLoan_range_max()); + loanRepository.save(loan); + } else { + System.out.println(memberId); + throw new DataNotFoundException("해당 Member의 Loan 조회 실패"); + } - loanRepository.save(loan); } else { - System.out.println(memberId); - throw new DataNotFoundException("해당 Member의 Loan 조회 실패"); + throw new DataNotFoundException("Member 조회 실패"); } - } else { - throw new DataNotFoundException("Member 조회 실패"); } - } public void applyLoan(Long memberId, ApplyRequestDto applyDto) { Optional member = memberRepository.findById(memberId); @@ -62,11 +71,11 @@ public void applyLoan(Long memberId, ApplyRequestDto applyDto) { } - public LoanInfoDto getLoanInfo(Long memberId){ - Optional member=memberRepository.findById(memberId); - if(member.isPresent()){ - Loan loan=member.get().getLoan(); - return LoanInfoDto.from(loan); - }else throw new DataNotFoundException("Member 조회 실패"); - } +// public LoanInfoDto getLoanInfo(Long memberId){ +// Optional member=memberRepository.findById(memberId); +// if(member.isPresent()){ +// Loan loan=member.get().getLoan(); +// return LoanInfoDto.from(loan); +// }else throw new DataNotFoundException("Member 조회 실패"); +// } } \ No newline at end of file From 04f08b884fe98dfba6e57f1d329bb98ca505fd1d Mon Sep 17 00:00:00 2001 From: dongyun <0902hdy@gmail.com> Date: Mon, 18 Dec 2023 23:28:38 +0900 Subject: [PATCH 2/2] feat: api path --- .idea/modules.xml | 8 -------- .idea/modules/flexrate.iml | 8 -------- .../com/sbb/flexrate/controller/CreditController.java | 4 ++-- 3 files changed, 2 insertions(+), 18 deletions(-) delete mode 100644 .idea/modules.xml delete mode 100644 .idea/modules/flexrate.iml diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 888a899..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/modules/flexrate.iml b/.idea/modules/flexrate.iml deleted file mode 100644 index 8d43a41..0000000 --- a/.idea/modules/flexrate.iml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/sbb/flexrate/controller/CreditController.java b/src/main/java/com/sbb/flexrate/controller/CreditController.java index 483060d..54772c2 100644 --- a/src/main/java/com/sbb/flexrate/controller/CreditController.java +++ b/src/main/java/com/sbb/flexrate/controller/CreditController.java @@ -54,7 +54,7 @@ public ResponseEntity postCredit(){ */ - @GetMapping("/{memberId}") + @GetMapping("/get/{memberId}") public ResponseEntity getCreditInfo(@PathVariable("memberId") Long memberId){ try { CreditInfoDto creditInfoDto=creditService.getCreditInfo(memberId); @@ -64,7 +64,7 @@ public ResponseEntity getCreditInfo(@PathVariable("memberId") Lon } } - @PutMapping("/{memberId}") + @PutMapping("/put/{memberId}") public ResponseEntity updateCredit(@PathVariable Long memberId, @RequestBody CreditCreateRequestDto creditDto){ try { creditService.updateCredit(memberId,creditDto);