From a42bf5ce1d6eacb6dbb135b9f1b62a0e7a7b2140 Mon Sep 17 00:00:00 2001 From: Owen <595466820@qq.com> Date: Sun, 15 Dec 2024 17:02:57 +0800 Subject: [PATCH] Feat: Code gen V2 ok --- .../V2_product/codegen-HaoKaProduct.zip | Bin 0 -> 28131 bytes .../V2_product/codegen-Product.zip | Bin 0 -> 28011 bytes .../V2_product/codegen-ProductChannel.zip | Bin 0 -> 16127 bytes .../V2_product/codegen-ProductLimit.zip | Bin 0 -> 24243 bytes .../V2_product/codegen-ProductLimitArea.zip | Bin 0 -> 17135 bytes .../V2_product/codegen-ProductLimitCard.zip | Bin 0 -> 16657 bytes .../V2_product/codegen-ProductType.zip | Bin 0 -> 15952 bytes .../codegen-SuperiorProductConfig.zip | Bin 0 -> 18378 bytes .../haoka/enums/ErrorCodeConstants.java | 3 + .../admin/product/ProductController.java | 139 ------------ .../admin/product/vo/ProductPageReqVO.java | 79 ------- .../admin/product/vo/ProductRespVO.java | 104 --------- .../admin/product/vo/ProductSaveReqVO.java | 81 ------- .../dataobject/product/ProductChannelDO.java | 4 +- .../dal/dataobject/product/ProductDO.java | 117 ---------- .../product/ProductLimitAreaDO.java | 4 +- .../product/ProductLimitCardDO.java | 4 +- .../dataobject/product/ProductLimitDO.java | 4 +- .../dal/dataobject/product/ProductTypeDO.java | 4 +- .../mysql/product/ProductLimitCardMapper.java | 5 +- .../dal/mysql/product/ProductMapper.java | 45 ---- .../haoka/service/product/ProductService.java | 97 --------- .../service/product/ProductServiceImpl.java | 127 ----------- ...oductMapper.xml => HaoKaProductMapper.xml} | 2 +- .../product/ProductServiceImplTest.java | 206 ------------------ .../V3.0.12__insert_product_menu.sql | 72 ++---- .../db/migration/V3.0.6__create_product.sql | 4 +- 27 files changed, 42 insertions(+), 1059 deletions(-) create mode 100644 code_gen_history/V2_product/codegen-HaoKaProduct.zip create mode 100644 code_gen_history/V2_product/codegen-Product.zip create mode 100644 code_gen_history/V2_product/codegen-ProductChannel.zip create mode 100644 code_gen_history/V2_product/codegen-ProductLimit.zip create mode 100644 code_gen_history/V2_product/codegen-ProductLimitArea.zip create mode 100644 code_gen_history/V2_product/codegen-ProductLimitCard.zip create mode 100644 code_gen_history/V2_product/codegen-ProductType.zip create mode 100644 code_gen_history/V2_product/codegen-SuperiorProductConfig.zip delete mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/product/ProductController.java delete mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/product/vo/ProductPageReqVO.java delete mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/product/vo/ProductRespVO.java delete mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/product/vo/ProductSaveReqVO.java delete mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductDO.java delete mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/mysql/product/ProductMapper.java delete mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/product/ProductService.java delete mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/product/ProductServiceImpl.java rename yudao-module-haoka/yudao-module-haoka-biz/src/main/resources/mapper/product/{ProductMapper.xml => HaoKaProductMapper.xml} (94%) delete mode 100644 yudao-module-haoka/yudao-module-haoka-biz/src/test/java/cn/iocoder/yudao/module/haoka/service/product/ProductServiceImplTest.java diff --git a/code_gen_history/V2_product/codegen-HaoKaProduct.zip b/code_gen_history/V2_product/codegen-HaoKaProduct.zip new file mode 100644 index 0000000000000000000000000000000000000000..6c9f373ad5e3f4944b5c0c4aa7db6de2edf68a8d GIT binary patch literal 28131 zcmc$_V~}Orwk@2Mwr$(CZQHiZO53)bS!vt0ZB^RN{A%xW--{FR-E-pJ7jfTP5hG&F zHRl}bPwTDq)_WiFQb54S0N~)@09hfi8UX+FiTd;1!^POZj>g8$*u~m}#@xWp%7E_w z{}YX&g(sbpqY<5rfrTxdrGcvfoslh_g`JU|v5Dh9o~QfA7IgpE!pP3n+0oA0`p;bh zW1Bzk*gO9D2P0=XS35d!13M`L`F~u?8kETJWL~_pY$SD3wh$V?4!@}Q6Iuyo(FYkr`kd>PMgbLb ziaPDT@5Ycn$$mB}TyktyQh1%!PWvBzjVGb&Ns z#OSwdhbwXu45L2x5(ZS0$_5+%NB;Secla{H`;u;{h@ZpRePmt6d&yoC z5w))CgxrC`8udl))55~i!WPcCc~HCZNJlx|hlesx)%A2nv0t7Xrr!tncOj!lHZOIy z!cI1Rg6tHrS6g zFVk*SAI}sI6>w4d7IuPZ6;Pu#@1>z^3DxOW2qmzm% zKgCYXDjQ){jT>syx+v9aX4dDxfoyU_6^^|jR9Ay7WjIT#_vogc9sgfhxbNAx%d^va zcSTOGfkI`MM0@9U)L7Gt&2%9hc0c5$z`(&IoU+n^008VD0089wC8dP_Kc^H$6DRxs z;FBeF9XTv9WFN78zNimi6;5FDHv;8y2>2yPnrecFIm~NV)8AX^mshJ05tJz5ppuFE zsNleg8I2NQng&tp@)7j z=!45wgAy%J7|NJfstwrv)gc9f6>J%05(~wbAc8|ELQ!Cus%pBbyP{7)nK%@DoPu&Gw=Gq*Ez*rT-d~a z%1)m2W#+ZE5TKT{OLo9fDM8_f&07hUQxFsZiTlEETF((DJFk@2U{+q*h;rs5 zfRJO>Q{NC6uFR5chj6hQ4eX{A0*%Tc(cpSG<2(LHdx>ObsC$do{)K(FZ%}ni5e4Jx z$%Bc7-3o9cQ-qa)gm&h0ovkZYF|q$U2@(3N&sYp)8!y!(KEA&XzEFaHu^Zmy2yM;r zDO|nXhts3akWpOfKvdc9yp{sYvKg*D1b0uFsgP(tMPt)nI4eC~c6JFwG!!gEpzbE} z)4rm$hwy6i-OEn}`DwgOo5Rf3H5TxBGtrszBgfPKgcab;;S*w*zJC}M#k*DFn^2=))#)`e7}!^ z#)_~uVi_aL2%<_NJ5?s?jYQju)q|&UyQF2O%lXzg^+Use_EBz>mn>7aOaa&O$X9jp zs#6m0{Oaw9@DTHZ?lpDpeU85L zK-e&iTX2oX^DlSfpN3VsbB8+oM5sNI%;lVulk?*#qr50ofHA`mdK_9aD|!`N><=d?|YNi~y`Y*H_IX~Uci*rID~nunQQire1nh*tc@_|Ime zMKm|>L+|b-5AO|efHjd2v^QzS^h)_4wrHpqn~okvnv>ghl9=!d?k|H`R_Y^3BZoNb zoz)-QI-4`8sBRZcZKhQM3@}xz32e$IUnm0@(hGZ`#anIjp5|?@3MZAV=r{tJWj}Pu z%DLC$ld4^C_@2De1*#NGgHqlvGKgttu9Z{1*)tP;Xm;xgEvBT9^F{|gC!Q%TZS=l? z{^CkM7oZ#$U;qFm#DB+?|L@Z;B?H%gO23*^ukEl{(7$xczXOxyfMD!wUdtgZw6uf= z%?U7$?lZaQ9`_sIa_Oov;>ys^$&*0WV`Q*QGMim~uA2%{k!Y;=k#=`{puITGiH{_7 z)FDtP-mUv?pZI*dH0jh*%9D=nr$I`s3h#UDfcoPYyhrVFz@zl0>`FooPm-^~9<3&u zt}3=t4u^(@gq9sZmcyg0zGIJ@FjaGgfViWxqd_90Y!1NIQS275h+(7q)rUZo5>vh` z`4OJvL9VJL;lQf$Q}(LpFJ1u*7jcvLJ03kwV{3=QOnRe)&2t#Ocy&t=qtt7~`g2Q7 zw5~?`CJB>q&W)wZmXjp_#;guD5W5(Wp6Vn)wb%tWNwq(9>6RC+$XC{ttD(h!c(H9j zRrV#fcXv5dxzyrReFj4wGUd8MPE8-`GT0}EOy0zur=mB-4fWp7zT@-$w7nu!4%cAd z3Zxxei+_DEh%1_uJB}f=P?VRrfQyDSB~Ooq;!)5}dwWUrHn6-SCp_tM(BP(Hdz#iV zVkl>iq_RLk7AOUwBeIMwHI9X~RJi=5+wdQ1Pl;(Nz|>ike&`DpRv>c2I6L zv1j@T!piLVBJbCgEOnA&Jl>lfD8v}?kyp;vJ%zK+#OdgL_-Mvi<;2;M!^d=;;9YU> z@D=;k7t(#3^#*Ofi8M$ZLxo`Ko|^F~tp1`)_d*EI{h~!ifkC;L$nNaFe zT|#%=Elz}vfrT>#6Ia1DgWvR}GG_5xK3P|6@uh2NGu9RLVLbO(zRB->`oq_w`bgtc zgEe~{3IEb!C!OVaVD0rnMcWVCx8bEnWiBwME22|rT2-X=Nvd;;?f2UW-Me$};TtiT zjTWY_#m~!QxRRaIqsLQy2J>wXivaFmF7XH@L3%)J2f+)a$xeUt$3?FsiUiMKU^O@A z%bZ`AK~~Q$Mk;nXm$)sw6yTwVL?R?rk|Q7GKGlI3RVy2jRG+T1k#kWnOolXD(al#T z{2$1~Ge6f^2D68DW8VW|6zD5WNS5FYoLDx$DAqg6==9Fr%n*yw9l+H-}xwhSX&27Ddr{!NR}k*P${g(;v=- zAtmvtFa_37BovmQGFAhP_8-$Qyb>Gtd-IvAg~Ng*RUCelt9Vh^n~O*;d||p0kbMd2 z&8(i^dUkef16xwWyA5BDaL;gEPa?rv1+pV+@VcfCS&!ek8Y6{lOvZ3WtUzqwuNwM} zrl0gt*KPcY1%h2rW%s)q97D3@(&rYA;!+3Re9S)2YCI!7z;aLgwa2p3!f@+@nlNj^ z>uc9-=NM=WkBjK@1c^eukD875yG4k5MHMvTQiVnGa&I_56Txl3Mw&Vj@`qLa4Vmz?w(?YiC*-$$p*w_5_=fdW5(&M82`ucSKal~R zdofBWi_-w;WK6Nai0yff$>G+AHJ~>|(nm;+l{HeXV%`+EXw=%lM**5nbaO7h{W$gQkUnBb_khvIM(Vbiite3&Wr99i2bWZz$nQOFqs{pB`2iJRz5% zbYk~$|4f7^AJG5+PlGO2vci#XGqzD{MD2{H%+oO>fyUz@kX;0VxE%FkOdlMw&|M92 zu9i0lo)#e8I0GK@F5~EVnaDE>&8&b_b_R~M>kt=&ri~!G5p!oZT-R@31pon$1y9ee zW`Hf<>@d_L8?~_2DT?rcGj7;Yl|`k6@=RcGpA%ol@YiXLqV7dB4K?rrv5`mw@I&o{B#fo3D& z6%m}+OHNT9v-&fHkGDa+lm~>hq{J}(&iAj1nu54Qj^ zM(^7MYI_mWfV%0cBu7IjS9*qq40yPAy?4G}$JzykVhFd0bKMl}fnEE(+#<9f_KvrN zA{7dO3H2=QpXYtrB2-9^orCm z?rmjrg~on+zdsnas3R$XRP4_zfU>jy^3;v%K1!p4XaF99e<&S3kS~c7Dd#sswQyuS zQ}s^INM_qb*m^hwr)j(5*v)ndEJgfWu7&Jj$@?=(-ksH48?S zl~`oQBQDgw;yzuyXL{$j0E``>PsA!MgYqkzw%f zQ>gd8MhoUIS~A+RFs}h*iBA@ZLu(j6_#S&)FJ#kSD7nm~X4c{lWpHlIBQ>HtG7^Zl z-r)Wc5`gMhym$}*fGx~_CnP`r$ArY#z?#n3z}djg(9+~j74Uym1OHh@g#S?k>{3fpW(02?1wbM5-qmr@&6{f#3rz}o0j4aci2=+_gJhNRyo`(d>+;!E~ z^O(t?p?dJOLs%!OcVcN9J2PVo7M5x3s9*($X?bnaTIZ>EHmtHl8Hv$?Lp7=51q@ZE zcAf;s5Fo-vlR0F>bF5yDi?cd?O6e zR59Jzw%O~fG8)AXvNh1B=W{25me5DZXb0|;Ta9jUJFmbh`wV!s&sVXm9|fx3HhC&| zw0MhMZaPqHTqRPzal!$NZur@MJ@ApmE_ya;Xem86?<(knS&ZB~9~A_q;~WhmH=~gf zgsbHdQ|}#y1$Xn$JBpJf6^V;Otpa0`VUOd#(q|wkP#MWV+6Ky`7BrxmRM|0{6k#mI zPuJQMQc#=TxbQL5u@mx%_rqYlk_fhNvIySXo-e*WShC=p(+Gd~>%~|M+SKFveBnC;@=*AzmM%=_w14`yR({Sp_!G#4l zC9TE!(nwBt#Wv;ukk0<9ilMahf=|{JoDce8x=7es*y>;P(ZEh!IR;`57X*TMf4ipcqR81Ch3q!Dh*)3n>9F7?xV$B6mvGoE0 zT(iuoWfy6Ca3sIy(2AsJL4e-JZSsx+Alq@d+1l1?m8is4y9d0D22 zvd+n@)AW5PH1=783~}w;6NK#9OtqDFzjg$iD%jEb6&|sUgB`c7pR}Y_{h7U2*FAs= zH_VkdJW=p|vMoQKMn>9PFED?DiM8E#uzVHK-t!plDp_PaNUS|Qz$KqIsawS?2fKAw z_iX)WNNqT<0X-S*Q7_zzv^r~9X?t{k%6|iFDuC_n((K3gBn!t2g=9%4LQCG@_PieZ z{Pyb_jhw* z*VMx7KUgYRSxXK{0NK}W{+oUe;;mN3orJV;5g1TW`h9!y3fAQGVv><5k~Ju3pQbWadgySgX^zzT<@V#CvDWrB0>KB!Jph-T)#~yzuv$ zI(kekk7yJJHRWn8L!g$C!8DQ-*0@u6kzhMw0JRMSuhaz5m@uONj+%IMn!U6FgCY@H zibrP{jGWT4(c&V(a8fP(gn>*%-ly1466}G&{`}?}=u%5VndAv>6aDF6P??(vuqSB_ zsyd-R-HJ0(tdzLJyDE(;aauf>RN3MLh$O-4V=TXpF&6 z(^x~%y3&&%VKb{(&Zf(}wk2N$D4a86!^SWf(UQI0K7a6SMYNfDj=W;@Ie!B19O5NF zjT`WmFH~JcV*`Eg;)Sv(m2Z8PRX^N|<+*4|Wd2JxIJ$zKT<#~f^XlPt zzi*5n!Iob5kd;ReIHu&iCw5gQqo2?CwIh%QJExfQ^F({*A_}vJ?Puqco=HFC@MR*S zs4E%zP+q8M1hqoya0}1Vqclei)hU$ON6bk>%&7&*Q^gLONjFu=OHgQnI|*A2Z3n1= zNgZ_v41x@$5u7-EX<`I@b79s_nQvF_yrlrmB#0J()H*Ior#f zYYfLKOp~Vm{!^w01ApPd94P?=03iIM{{Omc@Ap5d{5Bp=4%Yvv=*t+`{|U0cePeOT zge(>Va>#T19jq=X0;5+MrMS6>vZQ%f-bUiBgyC>%_y`b=3iax|42kYf9liX056$&% z5uS8^_A!7V40>0T3k2%8 zTtNbyGP6Yw0EcmXp%F=m16f!I*W!4OBE~Pksqz^Pxr@` z_h0Xqxs_N69mf6AoBo5cjRZY4J?xKPSLZbwmC~zKE3UYTg~sIW{H^uoqVV{)J#=z} zFJlFU47a4WOZ&{7q`3_W2+#D`{#2alD}E$wqI;&yQsys;+eV)AM5OOFrqYVspf-j{ zJ5DJL0?4{?3BmOjYv$7$aBxEwZqCN^q9$08uUcA0jXYq0l~ba;xW9ujrxsQMw7Z*?>O#FQ~JHuR3vL}lcPg&H*~`{*@iZMnBiU3>I> zMf)qJOomZ3O8>-^%D)w?u>XrO^`C0hKL?j$pDhvte3#g|-wi`}#aWj?86=NsDohJB<{dk)Ccq5(_~o`wQkD+xM9#67sMN z!~`(H)Ee=@+)AT)8YT<^cphPS^q|?Lh3NCt1Xy)4RXwS)^=BdmRAnGd;$+s@=(}1$ zlOhbvXd5jLUZ^ZMwKxIB)oc9yKp`>DcLDR%uGOLPT&FcxLyI10I!T@&QuO1a$F-sD zl{X#=J_hP|k_ z(Nco>B0Nu9geK8Ucqocj$u#iK{ZfR~F}v1x;JvH`6+rn4FDpcEBhqlBXd6rw3`Lop z@l~zIHPIf2wHw*_3*Rs=mQ}^C&S2!QCU8>+SKn+bPq>oCdn!Cl3soH8QVSn;j?UAt zo9;7fR<6?(hrV*_P`hwISN;MZYJ;=>#18;~A_%g~MTXQfy)2Nnq~!d=;d*=n_`k4(avWs{C9 z6Tmb_F|S7407gn$1iUlY#28lU31EUXPg~%g`8av*`~afLEcu~pPNCLPoo5e33(4Pr zthH2aEH6H27s(c!eDvDZEBGQn{zcpjD!t~=h#W?uO5`TQ4^J{S$(zix73@k$A+hI< zF5G4eK`S}G?(+j2E9Yc01EnH|GkS<5UWh;jvTC&`gd{WLd^7?T85!y~t4(A?y@g71 zzD1>lP#{+Qr*ue#H9yliFI!$>fyYpwoAG-N_Q4OkQ2&z?03Lr3g+n&ij|prF-Q8-O z#`mqB%^qCryc!|ptGMcXKI~|!%QJRkXJJh+{0DLb(9=U8N>+y>Fx#wr#nf@XBgpUc zm)h`-Yx^D%&n*WZEF8T(&CrC;-1k!@f9LM}SeJRr!fe_xHSz#w*;6WCjSOY&SkYd0 zd65p5n->FP(937Jk*SZ?`QD+GvgP4NK;Db|JG7kir*VMR_LFC?mzMzTY^FDa$_TwC ziSY54Apj4eojkPAbp#=SegtPG6q#X3g!3E7GL*GdM#D z1#2pxsjMO+;$$up$)vyvALj!6`(L!*fA{|j4Dz%O|6tDN5ApqL%mw_PVeY>$QsiXf z=xSkP@}Htn=^ytbZ0xQ7&Lyf(TgQ?3{fnpTq&;##;yi+ z&D_kmxXzaa+rs24=I0d^f_@fIq9}`q(}?^umV~EEbV;b}1Z?=`!@d3mL#3ga%X5-> z?_+kH#Sq^a`-VOWsvItjEWNj?3h&RUU=1_ygYX?(Gc86LLnzU)a`N|*WK+R!(tK$6 z_0SXvmBJpe_?T<>b~u_43Q}up!_`Nk^Z0N0OQLaj;Sd3ILrR8S)aEdmL|MXFgn8v5 zIPt;lyK40@I8$T{)P#n)uGOeU;z|Nc0&^ynKq?0NZc#=CbdrqW9zqedXnAUO!Xp9X zqFX#6W4AC5bMU(GQJBTsZ*40&2-7vv63YA^+gND{mjn11%7hi~s9aT{0)_szr2 z5hk{h93g(c{ECvX`}QOR7OTS0)FCm<^(63(fMT`Y3XqY6*xKdgR>L)=pV;VMlC&`? z*8D-W`>;iIa%Nz|$qI9JR#m*1Qaiy&&c?gPhbMAg==x$cF|LSLAojBtwd?L_m!1Ph z;BNU+??WVAc42BA#TK8UwE&Rt2pHpjw-m(Tk~H-LrBgAk(TpURN+29GDM=48k$b?& zxAzgZ7j7oGDJzSjdTp$RRD6GLp!b=mu*y#x%A=xtoS}J~p4OLFr;|sv>1VznynwyL ze%oyo8dC{~D*7YnwX=quQoWvREf~DKE-vI`LjP`MijS8^201FtQt|nwMfIf3{N{-o zh?Q3k+n;4qz!Nj70)3d%%6%KF6?eH!$M6;w+3zE0J6~y)KXYSBf8x;s*z59f_{EF& z#UkL|J>HgVkOOG}XUsEQAm(6mI1AU8dGRCG*1C%_LTUUI1wwBwDJI+sg&}VPDmbRI z(Y3kWY;9jyv(($zKE2$ues;~kYiaMYRU8RaB%^MydR3*PuG>|HI!of(zlAyIa;CjD zOLX8VuIl4^HGOH8FTmBu&X`KQE)3cI@zvbU-F6)-b&|?g8mpHhiz`i*7+EN0=GW84 z{VI*Fp&7=}!X}5X#}+H$yccn#{uuhF9oQm*c_hu2uU@G!={O`CB}f2g0qf-8OF`%X z9WX`$TAqqzbk_IiheUHxD|nj6cBDv!ZojV%)nF4#mfX3Gg5_Be9L*D`fZ z=Hb)Rsxmnt!_I&2oWUkBQ7Z3QTHz6B^xLO=`!(gkBQcT3&_e*-<1~HDut3+{#c0W+Z33<*ik~2 zf}|H4ZebTKGpgVee7?JDvfK$1CVa48Z@F0urrVcIBU4JXSewN5v9wtSa5;h3%0aAL z_{dSPdJc3gevH;^U4h=LMr-e!sy|pU3QR_Y3WcB-cpfPMzkpS`$iT9e+wLpzD)Dk; zydzS;pp_%=4}AF6Hy{SSTsKYKev2VAltY9BGM&6IGM@zU!G&ocP!!l_4)I*SM*I^p-pI^gjM1DpYhK=N#Fn#rAe;gC(8HXW zgHGa6FCV&yiKR~GvQ;i+ZR<(wQ>5$LDQ3b#)LZX|%Q>&c2{&#VNh{ycW}yW8sijnm$>{qlOg zcU`j*m^wddVw5@4xD57{=vyqW@@}%0Im&!0X!z~c{xhFOAp_L|n(ioZPUp45F z$ZAjNd_O30Uom06ti)##nBPe(EjnGNjksdNoGtrx9aFHM-d%{yNeLEfu^a+dU*~-3 zo!iS$oI`pDpCn-h96bW9XR%HB1EtvkTrwaLRN0GCMlk5mRM-VJveIw0`Cg@MS4F1AH?acnt))L?cQ%2>L*FW(g7f<;B9UM^SiebVK!sG@Vo~20L&};7kI7%HHrh6qpFlcH4 z-$z@uOH`|OHK?PNTJn#Zm>qAJ%pImDEl&X<=q5SmeF!c*#NkAj`c0i_5u2il6sU!0 zfFLMm?F?i|2NKhDnNa)Gt+MDrGJduPOe8W)>I*;>5^hmu&es~~8-8Wrbqce81RY?ed8V36u=mwI z(~cy1wzqR~@uRh_)|7if1Pzc~AB+C3S|=>y>9nk=TAxs>@Y}Ak`?ak5Ih4X7^`0+c zTKnVo&h}={gOAIJ?d2_rYhh_a;m+ej5`by~i+RS`bWDWGVp{O38Uk2KB>)U@5fy1z z3B7%MIpC?D9}($R4KwmdIf+P|e#xun4nf`~Fp|KnQw&)DsRzKXn0s{<0H@ysKnk7o zn@JX9jEqyt85F>sJvq4gdOfCm9kx4d+B#d1w!%pP_snKf*;7B({9X9`K%vRBhb=Uv z9EQ4(@?7GKlap*MG}lkAY;kAt?6+chI z8opY*>N%qbB%Y#Ntr#8HlanogKsedp>fx{2lTQVbB8wA4&aD&RzTurFH>@SR@3QTk zf=vNdBz@{;7z|x|b(xb4$nwEQ`H@gis-0SZfYGCYo(9y7LkbIZPQA=eeP(7`0Q@dw_$JCR@DZNXq{6Jt`p9zK30AMWNSTwZJRO-Dh z2F_A&yO`Sixk6R-vOIY_3^W{J%*VnX>)3UDcl=>OOwP8VnozT~4`rIF5>RVZjKDA^ zla#q4A)dDR(b~=2TcXojs4(OaeRt)vzTgyrm`PHYFnu#B(bLv~YX;e`S~>E54vh$S z=t%h$ji@h(n4VMwa)A)aA)*ph0=NhT`Hb^pLB#}ho3#>)jMe(%z!_rgB)kV%IiVRZ zuFKTB5jVfMIP2PYXzS76yl*U##@463p=#0Sewtiq**&MK!TzLDdKO)?z`-gj&wVIJ zMvAha{n21dQs07i@?qnG`8)gq>k$5Hm`TQh7y+}udWcLVinvM`{MOOX3+mN^!GUN9 z(ca5a7gjb)op|NmqI}Ld7o5aa!a`)Eh7w{vT!of5Te8TVq(4Lr55%LiO_($>M7TIj z4r-{vfiUZZL{A>Ivm#g8Cae*e2Hago#F3cLMoQ}Wku#Nei)|hoq6+acHh}@U1`Mgy zrV2)C*ru%uHy7S@y~{YGT%L?#w4*9rnsfuyhSJY!?OGXWjc*%#MBLu&{iWzPFDg@K zs1YaUOsaTr9?qVsQZZd`I_0NVXZd{3ns3E}h?ZQkw(y?vSTd?~a<_G6IU^}q7Nt+y zvXY5@&(oi$H*71QVWsI+L_vU+OtgXelri+1awvhGY)Zy^@!FJ3>;eAT3JbENpxAO8 zpYQ}>J{ziw%!}_gXxG-R(A)aU=DP#u9e>s9oWYGA1aCBN9|s8K7foM{*+N#Rr07M9 z|MAY$=84U=l7}SgYRC^%dVfvIEE3I$Sj8F1ViKiKOb6BAobM4OWV8@p$?PcJG3}4P zXA}xUp{ZrT002sf{#}9L=YKf^FtE4yZ=G2(v30R=q7!j+v~v{tbFS%6zt73pz}DGG z?>Id2D5C5*G5WA8>u>E}SWyGNb-Pt_Z?Ac@Sm}KBGVN0D`8*40CgWoR-Krj zVA8A7`}P(%SRm<=<7(!)T+Nf$$Vf=5$;`}E%t)-rj8DtWF3VJpE5ETG>MwOF1!^L1 zMMXJ6<2WfT;ygJ)NhLl`MyBH4X?-7yX^O?l$g$DAtt$Th%)!m$nQ@!(UZe-J{)`Nk z%584u-C?@4_A_MRvQcyOxBUYm%Ul` zZ9Ni@8l8wjFD;@tJ^|vE9}rsT*V$s^%^%kzRpun#nd>LsX%%E zM%{sl6&-t0TouUQy{LOEAZ_M9C8U`@>tC0U{>(Z8{M9e|vuOXUr34wf1$yk^>-aky z?}<3XWEcB9@bGXI!UF3+eTCZ0S9@H%g*M`^2~$78>)Go(cwY^KV)iQZVgnq zrowA}HWV4*tJn)JCeWPU8ht;$^Qj`w>e(#3$NqFJCWQRmsM@Uw^4r-3^o1oCU#le^ zDJmRrcfg-D!9TRt=C%8XlM$aKma01vVue5yc8*4AdJ~t}iLo|n(X6%kg!3aU6N1>^ zPkMgAOk^*JTsyZ)o5~8mhV;>OXQ8RKm)9-9p604M0*_jXG46$We3w{nCJOCda~|6{ z*`v&Tl?5p9uvs}fG+3KjJtiErc%X7#Fe{S>inoRv3XV-+ItzhYne?55dkW-akPpN z>0+lm#&VTMYFeFa%y*bwywcZ^ht&zU&(lW*;$po6$}MR4U$+Yo7*P{^9AJB}`_c^) z^>2Qo=1z%Mm#`#E^Z~#o=0gZVMwz**2eCqPfHT~Jndl76>lef`+pr=`bAXt6*_bSi z=DFJ#Uj%anBax=&rQe{JV1JnbBg2@sn?E2S1pRkF`QsG+28uc3UpT2&?z7zBhwsAr zfD5FP#sB3sBN4qaq};5e5%ShpRV-2O-sGrOne>24E<^5*3rK?uIYz*onvk`g@Zdzq z#_@>O?nqc1k8zz-={cas-0wD?GU@w;I>se#9sgiQh)K0Q zUyu;*Y$+ZQx3^{(If+nqQU#zK=sbZ8)g9Nq-vX5aoVF7<)LVlgM#|Em6@Y%BX4~e- zYWj&3c7f#>rN%$DuW9UyJ*}c1Qp`Xx3&4*!O-cwBp?tDt3ev`v6A_29tVObRf2=sm z+NInzE5uUdj9#w@IjSCe4?bPU*WVVu5no`TWv)ot zvZhQbXEiSpvUC0sV<0ip#$XBlp;V}0iC{@X&tG27D3}9+j&R=_ zw#-JssxZtR2u>26)(a?ytAG;&MT$4#Iel6}6<` z^?)-Xp4DE>de)}u#S$4iVlf*?@{8bG7qA`Yw1#!QtE;6m7EtCp;(l6*m8L_Cv5fT~ z)u}l10B=WMEn9WN5%eYsTAzRiIPz$ou*!MEMhLJ1%}g)h^YZO*q;KiT*QHIHGS%`` zXM^Wu$4v%5(d}9zaCPvZ_{@334Q}-g?=Mj9=2=(h{Bfwp|F)CP^1t=T#e(MVv#&I+ zE+$NWE0L>(iJQ}ZoRIxrBXAbB#wPBxe;&Eivav%JL;S*}_%^72Hdq-w7;2lKXzAz0 z#tKOO=`);4E;x#5>U9}!W_E09dif$x9G9TK4NDdW5BMW$zxN0>lN`cscr5q!VxsgN zN^OgWXMty-gKHI(LlGX`PR>Q;aY1EiNu}Z4TiHc=N-VIZyMX*X#AZS)<-5C*!x$h$ zS4pL~+qv*|A$xaj{CGI}?NTbDqP}!gnW|Z?l7Z=mL*j+fR1;HBF2gfh+{+G*YSoeZHAbc=csTyUhJP7J7c+-SV1K=ExxC@={yRqGzOg<0=K=&$cpz}k%JI_5cVp^6tQO9~f~)sH^NT_i zMU@x68mqG&1GNd}Yhel>VD2z@of@FBF&E#qmN%-_b&}nI5ZcuBq4g z)N;axrMhhO`>*}*Y}UrtiKE>_6anKEo-H`_rJ0t{klfVbxc}gQ&oMz{0_{tVYu_Yse9-&jH#TZVVw@`h0ie%u;`Q)(8M4)Q>y~V zOU2oM=$Sw~TTnJar2vJE3|z-}R%m)_m}=nIEAb)C3&pfk)n&XL+w5-YhH3-(LBV6$ zG_^^}%HUwjOUqNuKkjZQl<{<%r6QyUsh2@i!vIQUy||Vo_sh)5r?AbHv-JU7ws83w zZPzU%R{?i<^DbWVk>?OIIhe+jQ-T%)5w~2igZvc(Cmj489Nyt?%5&qqNWG204dl*#|1M$Uncdp6a();r%FYTaq-X%62>D*{N7SdeTGs)-Y!|9-ty(~WoA`zg=& z$l&0u?R4_ayRhQ5jNAV>PG!STf^?{uOFw|I1G#o;Z9&aR@Q_&rB`EaYYQ3#*DK{_#%M^2B;}2 zBK)4XYqh55=HiPLnNtce7miVlDO=Vyop8`$~q`+Q3BqpwxshEJ=22Pz$2a7A(50f%9KSe$Am9-Yy@X8 zZrbbwTgot#@Z#x~&4JXLOSFgOV@D!xSxRQicGztyK(0)36^kS<<(SMUCCI2$N6T_g+3;~^|C;|ZbH^RY9L zkl9%n$@M&T27Qdi0ZnFo>8086@tlIp;(FQS5!bSD3?Em*weC%A-mzVb1YQGxt1lnr z45gy@=@9Oc@V3n8texn~2`3#PiQZBLhf}Nf6+EGv5fD8u_U11kiTD`|C1%nuCzYO4 zE&?=5O($yupVrd3eYepzzv*#sa`pmp;4w!vmA6=}RHQDhqGAq_VGjFBPKkk{Di=9; zFB%Q{yZQ-^2z?3zyLJjb2%vNH$2jGWg}wSlFu=1_B^TE>y2#@rVfp)u;cg=IKqRt! z`zu-Ehi<4Q!mzyB1llb>#sxud2A_WvWr-*9F;OiGq}C@e_cPHSw@)hm3J-BGRnZV? zuB>oSVqvmV<+vEne8g!$Z|^K$8FpEJerdLOKjTfG{7R&}=)`KYaBu+--o9OD;NSnH z;Kgr<;))Ajw?{NYFxN4r?^-?_#x3c5mS~Mbwq|l6=(+WnSkl!RZ^v&_a=j zfr8p|$f4AZ`ZQm~ob*}Xoq`f_SSnm0`!Js(BXYf2VZ>VBF7cr}NPsJcqPj0eq6tON zq^W(%KFaIJycfCpX?Ld*bfv1%8|1d0@kondlvxM97gUPk(Qc}fD7i1=fxx44B z$4qYpuNv&c7LCnMr&`YgF&Q1!;)&~G*xoW<{^0JzGLSgl-b;(V+f@s4`n z5-}5GcMHkzRZ=F&C32y%e2^#z!__w9wnU0ldNR3ox&WPiF*!Gw5w+cm8je~{?Y>)y zlliiJ&tyl&Pf5+1qN1Hj;nIk^ctwZHii91#s@IS+l-t+D6Ld%e4iT9HwwT|y*s9P{ zjIf~|$DJfF9HKS!H{0lBvQANi{_W_3I1Li%MA-{!(!8gcl@6B8J4&p2E&lTXTQ?Cl z;X*kz-HMwHV)-GeMMnUtX&Xx3k0|W2&`@)?v!OF_@9^4qA04>(0KR!EfA8Cmcx z!qhV#EuORIRD_v&(XN_#<;s5VXFZghn0}E5RLZZP7ybgl=su@qjo%Q!t17px*R=A0 z>Zp7E6OUopLZX)onyC%Kb0J5SYwD*YuNogInf)>CBDDDv`Dd$lG zr!5HhlUVUr6E*zAc%t+m=sA0z1s(;#E;bPORnN@cD4QKzyQbY82go~JF2u(9iU83* z2kj6VgiGj3-)b`4F-USMjWeHen01=Dd*vaXoy4OKvcYM+f=@$-)>?fGBnLOWXkp9y z@^?E8x7OcP5*h&DmiON|X#W4ES^4MlI-+)tHh=pT4J|vQ5#0Z;xU-CkGuzTI5VRmb zA;B#`aCZpq?j!+%OK=Sm2!&f9Sa5d*HGe!Rz+3Sp>I6wG)0bcU~e%+GFvG; zG>K()GEJco_v#8vIfYD!nx^Q3!X1hRp}VrOy7~ACyli<)hBls~#=g7D`0qiUJ(x*~ z`-5HR@QFCzv9)N^1bvj95uzn)c%K4NDl$@`+-Uu+;&`~Z!tF%d}DTpna z%@RkUlTLjP=n7z9_>AnDgmd?th0D!`H98i1fLz~F(2M+~@CuR)OMM`CChG|j)N)mH z)8Zy2$;z>Ow}ZmW3{`ertCzxpOIATY2l6kQ6GTDe$OD$w%>4uPXME ztI4xJ>n5tbwR|~Kl8+w4{Mj@~5YIH3{EG9GO>5UIo`deHkWnw7hB6>O?$rw;YR(?9 z3U+sv*{ZDhdGiTm(72YRDT;YVOCBW#3!0H{b8(KCOEow4wt@q`{8mww`q5XxB*KOk zc&JquJBN6#(S@kf<%E>?MR{|RPq~|&3wx=+Q&uIu>Q*MZeV42AL?<_`tEcsqhX6qB z$ratX1%a2oA5H*)a!+(g8>Ugcc&N?`{~J+B6&gr51YL*Xv)SA-(umgB+0Gx6AO;yN z!al=+kIo5}I~3Tq$^-pr4jSTic7?4O`6Etv)vdxELH*xmzAXtU*q5&8?F}Iq-14MH zfcK~PIkpx`v6kyIhqN&ZxDKHN7K%%-{&}1HOy~-2DRBChW!bTNGRKY&;qa=Vd!U-Fia8O62 zVQ+e&j7)i^c_>UwaO>DBa zaLtjUadPcPVa;rOI9@Ajhp_Jzv70)^4HTMj>`o;@0(# ziJ(x*mLvJVB|lUJGwOPd&&a_Y$?fdf4kOp3R@wjjFpAB8Ne+`t>i!={R(dEPYOW+; zhMUXWpL81%Dv_oFFv0UHa9J>`8mG%+)+CI1o@I}<4oB_-zkW0`-5mdI&v9A_OcG&D zqU#+T$dQA0Ruu1kyrRB*kQ6`W1ZKxswn3Q~7up(n`)NMxHJ|7xS5q3D1se*=R*`l+ ze>LdxrdjXit!(3sSYw%VTfxqH51Z7%tp_OJbvJp~K15 z%6kWdg-HQ(%l53w&hq%`9r6^?J| zbLYu%ozCL!atEcqyG0`|S7|r4`1ex0US5($ucU2Uqg|@{+?QPIJSRz1pkwO-gcYmy%lrQSN3c9k8YO2&~z zWBMqSR-}0>YXB*HCd%QE_XoR|D)l$e1hNh~hvLP_^UdiS`>OIz_+CjmA!(h8en3nv zEp$>}t{fxbNN2*hw48%cSo)ZP@u3=EzB;;^w&oae;gGYwj9NG17%2oP=>WX*7h(lt z)JsojuWXd-lP+Sk(L;==a7te9AX__GLBOGVazZxP45{{1>$%*fDhBM*`T}g66q=IR zkMfO0FLME`wr>jZ*!I@AE~Q}p>alz<%(2W`Ja80B%Gx{}*DoPr#2DXGo8=ivsrVP! z4oySOc0^-X2z;(+e`ab(>!%cqFZX~OW0o?O5nk6GpjBE;mP-rKFR39zjJ=Bckam|l zuy2PZ7S=(9&AGZN6K8Jr-v&Q_Wf~{&5BP>DT;OS|{M5BGplGQyZa}!Zy)kPt-J$W; z2pIbbqSV&@#z7(UaE9D#}4#3t5|Pv-+SBup4qk0B*|w{sVg^spQ)64i(-4U87} zU1kDb!LhvcN1pH)gZ^&$0<)ujB#+~i3t=#(&~hHi9VF>i4-<}e z)0hbke%Xl-rowfbowlQl{Gd7U{ohg(^|ZM%oZR=H+wFLRqN95&KiC!l(A_ zP6n0UCuPV{MWZCBJOwN*BvK?rJ)klr-lr50Gs#^V*PC5Yfl`ef9O|)nuyU1tIQ1u7 zxvudLT3b(z8o;3t@_G(7p@y-gdmkd(uxg@?E^>;YK*en{;8BlPALHpo*o4CQ>I7EY zrs+mbA&?+qAwpqlwupKl9;L!j6NM9S)fQ_$ok@kfnXVc7VYBb*mD7LXX}xrAb7Zt; zTB^-r5V=lnI^M==4C1FZ8sHR8k>1TaF!fZ2IuO!Qp<=)R z2_lQ_zA=`QaDI+MX0qpDVRd!bo}R428d&ia@7L!3xYN77?qioNUig-G!G#{+vKR?%#k=+_=8XWoYM zr--48OezARZ^}Fd>f2R+G&WA`7zjv(XSPkEAqT`mYLxhI5aaPMn#IXnbRpo%cW3Ex zy{qkLI!^6xO94=;i{S)hlTDDs(J8WiV%lObT&B55Gt4Pmf|zJKHjI#f#FTtd2V0gd z4x!6lVJA@Lu8D_|e6BfQ5JpB~^|9{eh``D+(k!yXqKCZqxWNc63qW^Z%wB(~cGQ>N zX;$kea21;p()%%GPV8RFVUCq>~{MhQ( z*wxmF19yFhdIN_Y_Lx-(lTZhlrCH2tIN_MkeM=)n75{NH6 z5U@Vt-dCm)DgQbH4$fCnM_%eC_On)T6ckvKnV(S_kOOm^$#PkDQls`Bj_@;3VEz~Jd+D!xj)HfzuU(|)Z?wUgFx|ad^6FMr zM-W4{A*eWzLE{Im>Oe(lZrWTW3;RU28-WV5;6Mk{Ep_OV;ErI_GHxy+m=f68OVGgE}#{Pv00$ip7IAXK@bdNt(d_Aq;5pB&Rm0Z zKrP}pfjVRz_H3;YH_`++9;GZ1WqRPsVjb*oOsK)_>d~f>&|5-{Fs>3WC+2g@XV@qS zclVpaTagRQ^}u~1a1Z6LTu@|8?yFDlbA_3&{-^jx5Pv7;l&s3UE%_7gFISz~y|Ct*IbA^y2ugigSvim_a0@*500wcBXr4}j33;1|sTW^M(m z+MuPm^9==6L3VM?Pm`nN@^8u$ls@KI-p%_~U4N>&5I^c3p5MLHb>oHz2eA3$!Xa{# zzDqq*QED#yCKaA8a1$ZZl%?e3aX?KCz>wV1U@Si zI&82H;N=an$mfBP!(pDmX3J9^@8=R~{5@>`83r+A*ZyeZ|>&VDxrf(o>45i0^wo{U;BD{9|``urz@qn?(oWKU7d~&&nzVD z3+c}H5;bQTVSOZT#O7P)R&QwLm*)JX{b+?^VHUENh+p4KAl_d4QohNL40#P#tsC0> z9CtOl0Y?i=oHUqSdMOCRDddB#fs#Eb&<1N9tu)^x`h2j!ODR5E#M|pm4!)R~Kf(mv zjNSH+?G{emn$t6*@rgAdec{z;juZAiYmNw(*4D7t-W@j^&_Hwd2)$X#WGw=%`81Xj zGQqw@vrXb`;;ecKhTR5QrC~wcOOd!GO9iXbJ_Y7fQE(r~c^m~Kotk5WnfZI?!t+?i zF!oZtTb#m|&v(7%oOW><(Qq4Q;<686h*WHcHL&svT$pppC=3$B@0JB3}`Da zf~ekG;m~Dw4%Wl#f}ArVOK8=_tC(j0U~Ap#YJvs4yU|LWfqCt;(E@tLFHmDpn2<6DQALKGRQo<81 ziK=m15b#X?Gq%5qMFT`c$BU^-J#Q5uI!@*$5WdsNt85&pk zR2;}DzBl>bZ$ZCR`1(hxEW0&&UVpC5KF5+p=A8dsK;Ay5iYcef+c1!xc>NJ&B1DAN?DQ+w;6 z-v${o$X_7FPQlFJ4NME!o;9mq)b(;1uez4ingF{YL>sv~jdbGB&^2q5x_~bW)>y2? zC{8o&sS~>m1eTqm8TyQ8(@%8V5M*YhvIk{e=j;2fv-Xngvye45DN33c!S-w9uW>Jv10S`AV^?U`|136Lp9lzTQAw8^=Uce2S)f8vbuZBQif zey$!nd}VgS3UA?xn<;ySt4Mq>KXyL7$Ls>YfnM{Y^lTLo-if{b!EkFC+_>?M+Z9VM z2uXE8BC`n5ay_eGWuw_NHX50<#+PKwl6w_8?ef@MCVm-&SApKhJdg}RMT5S(CYje@ zBQa4S0NpiFq88>5) zz{Zf{9?e-PiToDy&n{Ae>H-m|!m0!0hp; zdavl)T~aOerx#N)93;Zi*tLGe=sZ5ntLb9kO?sjaMOZD$pF2`L^Z=}%pUqahtJ;}q zQ_4X%$NxY9w=tS9>>`{_Dtm;G4Opnev+5jf*7?CZwYO8LJry)|G#sI`3=UcYnib*u zI74DgmvO?;YlI3Z=Rh26V=|t<9Yyt*Y{n0StVcOnojg}NuDOQb9PRY%l5tvG*%N?7 z7C9^nB3GB!f>BgvbQEQeucMwKPd%pL*=_9re3A7o=o*G|f4&@7_*Bl*$~zGQLR;lx zRUIiM=to<%jzoZ*7m`t9oIkIPdfP4xtGd!VDy((rX-;12XnqHX_p}9#_x639>6qv? zhr=I=YsWm4g<++doIQ3v*B(P)lfR#_*UCLwvYB<^@Ba}B>~|joNo5RC?FEO=cEEb5 zqa+LoJ&~Z#uMBnP&T)cRV7S6_N#4pVi!V7G`dCTlH!!5Q@1%$nGjNjK-JJz>TZVEy z(vxvGNsQyz_P!APgByphHfmtNFkI2Jv2@}cll5s$II96S{;XuCp%HmV%$v*aOJo2n z>#8^rgF3g+^^JWpWGw53IN=|?yZD#9Ps2NplhEdPhx-Wb24th!$TocAr9r<*yFXBu zj1;6Hp)eqReJ|pn?R(JuyWscnzdsf6_kBI$G5JFi=AY(Kze4$5t@-zo zKQO6(jQ!B__4fk~x_93Hd$E7-7yX$0p~+z2uhG75bv*sc$seXFA34-M=6>iu=Kecw zRE$51`(JpDJ*56`tFgzl4-K7uKdlR}|6l04<*Py<@&$Eoa%4n{im!C#Zo^-(Z8aU_K&juSrX~TqOQlZ4>c%1B}u;`iv4#2rN<9G)Cv5QsQijX&WD1P$Im@1+4-p=_!TNV z{}`S>s3~~d#ltk1z^~uGZ$V1@u`V7iRR2hGJ?`z{9qG^1+OI%W{A0cSr-`=51P_n6 zzbDXr_5VxokDJ-Y1P`~?KabMCf=ugQ6a4FgwSqLv{gEBweuItyk$gWb>3@6C{}Gq2 z(HL5I&^b98(b*VS*wR@VxEjzI+0t3q8QB?|IR4{)x_=x&_m3lt>};JK?X0c8KQ%D6 z`TmZ*& z^{}c4CZ*pB$SF0M(jMA%Hk8#krTIJ*pUqXi$Vh zR3{j3omN-sMR5!hVi;YW>mMNV`r+3m+ zKAY(P+_cP4rzRSN8JaAT_C+zz8S8ioW}gl$kp+4Ro$PNev-&udpG_ECf`bOxZ#jM=hjF z@-uIXN-hIx)OW(&vTll{v8nM>?NSzP@C7P?!AgVQkj_yg{J@KXkAuH7(;#%e5V_NM z#w-Vn%kpy~4M(2>sw9WV;Ne_(MAHSI9>?9*5R9W^)`)et$I4fpcbMDS&kUE$%tnZS zS|-?T*~eNjVt#Nr=#KA99UcU`Yln><5gYK!O8EDYij%f2=$451I-J}^)TX}`?=%uo z>$;A~?J2BKpXWTz%`MDr;GCHUwkZ#_m*Ks;EAv!dO{N$5=E`CEzC(N!Fp6aHQfDb_ zW#PxmP7s?_e_?s?rfQXPxEXsJH{GvV$Ic%=B%?L4`;gKAH?; z#L@sQLnPAXnzX)2(_)-X#6&HKnOs|Naku{U@eZWFx@I4;bZEeXQ}69;;0uikxZQ-I zNnOB&V_BoZZi5LrCO?`rpM{8ahZ8t~yX(Dsi_1f&tm+*6ECN9|6(6~n$bqp?xCPHw zu|u=cMp#wjn%cBBQuT_N^(mk)iyTpfV`l)>)nG#z&eG~Fsu%Q0WEH&Y2xG*5rH>U2wY{pu7|~1h|A#W*RU6fE^?Nfc(FNl(7GCNKrI#vi}b} z8BnuR!V!4TCM5; z)&8@+$=c}`6jxi-leB&yO*BPd0bw)h&HnPR_z!l=CJ`m2`R$Tc<+YnD1}5=fGrvsn z*TAj_9(iAfx9ri(43WJqPXSJ=gHUt0d6C-z*gvU-*cbWa_0(uy9_VMTkx7I3x-jK_ z!07-yb28HORYg2>f0%YtEg0Q6Q$i-+>K9kQ>S?L94pZ*v2hJelzw!sRjn-?EJc<8a zXV2)cXV5SE|anre(4;RD7{l0U3Bk^g{Tm#zA zrQz~AlB71zS$7v5hO*_+`qoUfUdFED;dNk6r@Ry8V0OD9-O2J;1oNOk_3Ci{&*s>8 z?dE4!*Id#PdwyaJd_t)CMpA&D)Ih=LWTp1I(1Y4Tiq`4fi)Z30esSJ$I+M<5x54_~T31!b@&N05Woo=;Q zKChK>u0NJQ^-FvqyHahFwKigLsu5dd60~;J%Gnbs5pYu`Kwu2OoODd4`oe$%>fP3* zeN6(^4ngRaQU&wLORmP3wc{7;V{-ew@$0%)xX1z|3J(GjsriL|Lm+dro91Ef2iNpt zR6(cjhEy;HEWL%xv<0V~tS`2_<<@+*5iEs_iEl{#7Fh3%&perQUysCu`7$g!2r}eg z+0l`uO4^RM6-iYbt@h0%7UDA3&w)YoHDP7qrCQp~M(@mOoYaXaPnl5}RqB0~K$Xj? zZq!d;aXlK+Of!5>Z){^3G(N=wPW z^`9!OM%61jEEe=n-LkKMBspLhJDZm>C<`qu;eK-hjDx!jF1m-^dbk|A%JkS$^fU5A zu+?Z8ER&2TmtU)b0LOTMIC?eA#Mjx*vz@$Iz;6pFX2KAT70@6U}oHI(wC!@H?a zQp>`-?pt7fI0kQ#+Z^yHJ;~dWP=n*-%diK_Nv6w+EtG>HA;BS~dr)QYD9dlyqb5vM zoWY_UkWtqAU~4J1^I62O(S7TJAxnrUpBH=yk8+`w)e>=FRrx7UGfIrek}Y)G}fyV~?P+KtUEL0i`3dj43gWfwfe) z_^sQ0?{(5XA}bBea>3-Rq$FGOMv2(+^NqW{+oi-_9hdqio~Ro~!^N z#_;#tGPbS>oLwePN3Z<{GtNpU&h~6RrmJ|b^1b`dnAhImuA9u)ANK1={nXJ^2&O-C z5vyV|SAvu*k8{VXR$aw?8POs18LFY&G_rn~AACql=-!kK`HEoYm;Z~Rml zu{f1a(iNM3?p#=paYel!%{i2B^nIIr_i?W}&^Xp$&00mmzp&U!V|nUZc{x|n_Qm$8 zf9_V93CQjY?@*dl6=`{t>eygAeLbRka}L^nB_^}c!t}BDb#Vw+ymfr=aIDW@zUgk^ z&mF`i9dD1O#ZKn}x0#m$A_S30 zgrrh(=)KIlDgdK$X)S{4!*x1hCK86pkY*#Q>C%M%9hrFQ*D6bY*1&emTL6p#eT50h z0=$6}%laq9YDX!Z-kF;jViCFngc|5ws#NpxMMRa@gT4)0N7p>~Oh<32(dQbdBFVa( z-HxYJujrNzY6k>03ek=1+oEkt_Xb>;hgskn;Onm4UpV5}puHXaU0!8D|2rHB|9@Xz z{j*#X`roqdZ@o64CSx}*ip~oj_C>!6ok5v)e zTR4(S9c29>>nyY3gme$}$b>If)6t2{s?0$YbR^q{lIc0G$7o!|jd2W)kZBck!p zX+kJ$M6qp^-N-lZh<=N}#2BmTALJ?3obwd6m_K@AAvhd9Q3BWbT`xm zdlqfwsrrw|Z}>vC2%Yc^>nbJUdkEuM*hzmO13dL$lu#C>0?^5rVuKUg^Bj`HtqyAZ zSQkkfA~{snNWP4IRp6pgYiq-q2KzDGMj>Zii5tKrP1n66YrWg6CyrRBh?axs8rLu% zQ*;r$1&Kk01#&91ehPBM`)9s~=)|2)NIAcyu-aZ1`k_q8`|&g)UD}g!P?p!PxPZ2)c1olww5!R3r z!}vMhy(nr5;?59GN+H84rVH4NZ52R0&+N$YrSNCzqQ7QrHCizZ7ysG)&Fy6(#Qt-- z^9g&9Lx0cFvM+c1N<6S^eTZ1vJClssK=OAUE*Wpsu1$cpCov6}o4!g?6tr@MM@Vp= z`_Im|j<>5AyMPc3;bw8J>%txIE8piEgl5E^(dH1O0wHjr-i1RA5C~~u`OoL^8&GJ* z88&naa<>mE6j+V-?6aRtr7eimF~mYCV>dWGBDIV=8(CZ-F<)M9_r}fYNJ^mPyHj&u z?CifibYr^?QmG*8K?dOOO9uDki(^H~_{~r)92rkkz0%T?*tQWi?oR}s*4|wJSR73g z;>sC^)pe%rCR~zrya>Vu(W(xU7Pvofz}6|qI3XAt8OpLo=;c^RA(~J~HVx?ofED$H zI;9Kjv+8C1nDdHLM7OBc1x#v^(4)I(`>F<@qpYaL^jLrE*y`FId+9lf)Mj#{XO_n9 zo-7;bz%j6eAjgEaSraC3|3nhzt|}S(jz;XGpJPbVp;n!E*$0>RKTIXCfp1~ZOk@zLkXlqt zQrali0;ATWTL%X*$=fD^gqifYmtxb=brey7~Y!+ATl|wb>j0&rr!A+&YwMRPH)S^yaJFVKAI;E zsb+lVd+2sOmrZ-7(Tk0;)Eh5L(00IFi};y?iaHZcDkk^K6< zMkK}t)^x@O&IWddmL}f~zyHD?;=uBe`y|qDWBs!D&eyxE4m|l>`BP>Ib zLhLs40zWruj6yqpp`i4#MjYEKxGas^H8!iZ$O=Y5J}U!hV3-CXRebOU3N3w*jd5*F z8Hsiut!Zt(tY2%i9|szgtG};LACvn=@-itOMA{V?R&nh9-Fa}WP`pysKH|s64f?6r z#A~rG1xZKW(#0&4q%7!Qv=Mx}rKtG4rWX)yweF2x3Xm8fE|&BjHBo|nvz2!irK#-b zq8m=;USTR>J?+k6%4MXG>D%uDVW5|VD$@^)^!R1t{W-6bWP4@V`1xj}8jKR|6wu-t zY1pk_TQgY0S{rxCuFl>AzOB>T)(sV0RkxlW#g7)BU7Iae3yYm-?Z+8}0QkOdHzx~U z*gOkk?Gt?@ANDY`psw<+KYZEDbjC9YY@-a#OhLkb!Vnu!H1iX`LQ$N=<0mzUQ$Si1 zX7$mU$a|^FgcGDWiGsNGm{B4u2cvTtQMYJ_$`~`AvzsGFICxP}OFKfv;i2p#2MC5u zZ}1a=G_}Q2; z(Fb>YiC@4SGpoc;j4aQ8itfno@nok{?GN$kv$u)H-R6e77rvjXypan5WkC8lLua5Q zk{6gHCcAloQB5WFdARvdFE)?qcPz2=`5VcTwq6bIedwTqslfH}iwUdV zi6`x4VG9Uh@#(($?ugBjooFQ1L}Hg6LH=S;Zu;88qVb{joMrQo9}CqVVH|<1AJg<2 z!gyXmPpMdZo+GfVj0&r*4jLF^uxQiA!M5JH7ZQ$CRuYnF%Oa(eX+|JGV4apuPhNzq z2hiQKfV#`d#!ege%#+%kc{2>#ZfrA0D<$42eOdjmVE-D6>T~jL@zCF=!L=8HNRq)2 z>38u?Cz0YR8}vj0PqoK(wQgX33 zakQ{={0|S}yQnp_F#8WoN>bL6LlQvtv77y(-+_Fsk@-nN+At3Sq$vHiIerOia(q6{ z$P~dE7`RK5uZ>7g$k1;tY)GhLWJq(IlhSKD1f6T z9+he@t-zp2gqG~y5eg%xv}iOxPcWERLqBF96Q27a_KO6&um4Y8)Af%MOGBBYF>Vw6 z$sjP9>oM?0X%4Ddp>G@FgcK_|cK^0gqf(p}4<<#nC>}CVu<8)YxBYOb8w9IbE2=Sf z=6GGp&X-59)$2IMP_(w>C{WnUDu%Q1BDZzHM*$k=#MrPQR7SLTXS>%AVp9=qYL+9n z2z|zn03w@s0Z8K-qWKe5SJBu&AEIckw9{$X(l)oFAC;(tsu3g4StI_>1cf{)1ziR` za%k&0J@-(E!u7s)jn6(?^O~odR@C0)P{BimWkV4Lq3MxbDG4}9>_11KC*(#|8hs*};LC;XZrD1)tI%-LC@9di+dX~edZ zvvH3^KskJwh)C)RhF+9sY8pYU;9A^*v$ROfVMBEaW%eO+(qMCHLGl!_{U*|NRq|pK znxGEC7DL-UsvuHF9R?g|1|uZb%GP+=KZN-dyMBX0Zf+j;Qv_R1Bn_=Il@b+{rR()Teo;0KE%que+hAT;gTqQ8w7M^ zp;RDNS8Q(ja;tdJDb>g1SS9%7gzFq9OR?RKjv^i%D95|ax1NU@A4)atH%G=2*wj?z za;`^{21h45IWrAmSOuxl)L-BIcW{VjF3h1~AOHZuZ?6B>{dnL1t2}Sx?&M(opHjSx zf&F)q{jCyZX^r`Q^JOTaa5?6XJtrq zf9dGu?Ye8Oc8Tz$`LT}xTo|LyJiiZZUESP}Ab=1=#({)8;+O{q7efNe6q$zca{}T3 znc$a7@0I1oIo$NvE?GTbro^!(XZCVT_d5z``TPuGXT-k|%!mckl&mr@oMPs2y!4Jl zieu2bq?{vA$K?tX;FOszya(8i?F~8qnCC~%dwKpM=QtBzgWr2Y!=Q5N>+#3UHqgf- z4ZRHT0T**Os%8tZU@C?epcfc*@|Bm=dMZ|tcDnLygl(u3h2BxtkFOBBbJCeNtY0W! z5|4Oqd3(G&w7mO#yU3})if=dmBfaj|FWW%SUER(8@OgPwy;dQ;T)E_mt5{%6{*%9@ z&Ri58|E8Nxj_`RT-;m*k^k!j~xq~#PUIF2W9@~$KGi}M2giUnElv&FBS#i_IW0r{Y z&Bjz(ksHj$FmcN%xn2NSH#R<~?tI03QUeZdz{1Vhm|oNbE8;~<%cy||9H?SKlo$6j z2y=oldz*k)iW?RQ?obnjBgD4MGq+Mh)?)|yseVB<5X>S_=TJdyKoZvmSu@HFMsSG6 zEvB2ilIL@>|AGx!&gV}-SJNC|$~y0fQfZQQTP1KX4(Tlj3|>)oUwj={C)JSLG+vVA zeMeAxWNYSf03B4)a!6<;&3Y8+PwOqmok>dHm+JB)?M-rYDDEas2s4p;>f|EHcMUf+ z!7m7M!3FmcePzgch-#$~UP*cb2@>eM)zleHzu7Wxw~d!;k|Iq|qcIY7V{dM;r00@} zI_0n}r6GJTOWe{XtUbTzcb?S7F$tjtw9r!x?V+p!RB*2y!&LCG-qjX9{0nEez1;U6 zbJpfN+mw|DpO?Q0%VZEmqvSiMRG|J{PKEwI%&GsBtNuB;6nkxv7~ng_R(-D-!pcuN z1xlfKo}c`?ne>J|aBafF?!dn9$jjaB6V;jjLAp{{RO^Ki&GzQoB}#$a5W6Uk=Q>qv<4i zfJ)Ji4jW(deI54@~AMeN-SoWz_Q*&QVmoESSk?93fZ zAt@L@ONXrujz6q~>xto24-U=M)1~MQ4GfsduYJPE)Y)Q7AYh0!g~azuwxeiHbBT!- z84{F>Sq*wpZ=xj!@r8RFHw%rUneb2)Et6^BpZO*WsbhAoZozw63o3x|6rw zz@-%2ZylVaVmIDpR4-knDGq$*)S`CcfGzz6>ZtY3`eT3q07>7D!oLP}!~e4YbTo0Y zb8$2>arz$P_zRu?9dQ4&u~vzbu|pI6joM=`HLTmwN$oCmr!SjQMt>h@=XHBX)6o_are>UamH$|wfZHK$N( zuFACsriJ3KN7h=XGL{$bw~Js4N;-IH?GbzyApaz80+U{GXh04nQ6+K{;)f?08Rt#n z*$8r_q>$M8i7wn~3`r|FyXp-Hft7u z%4!o4UT2}wlxI<4ArydB_aPlzZq3hh#>LDn$A=w7b#cOO>@2Jaj(<;%0Cv0&Ov&nS0B)O^ zriQpK0o_w zXED7ZRD|m_N`#F*A1(o6W_?YvOyh@)+S$L*yj_1r*8kM2cT#z>KTD)Ja{Ba;H*0E} zUy>%ho5C50&tFjiOJNlm5+`#ROCkkPcs~>1-~FWh`rFvgH^|lA|BgBDZ{YjaG3Wn( z7IXiFSs^DAM^_6Ylm9dtmHzRWgpIxR-?c=Q>V_?r2y$2RzFX>;4RRD-4|Wv&u9=$|7uVUMU~8y+`RuHsLg24_N)%-gaT<|d#**-K2`=#!9YFP8e7IM? zVW>1Tb9jz2?!3(oGa2GKVqVdQ!IZ3(Eh;ue-ySmAz)O?$3kQpFUQ@roe)|F99Lz z4zHIZD>r#>d8$>FpbGCaoc#;o7FU+G@tAegvD6aV8?!Pn_JWv;402NYK)eo2pzj*c zToGR>Pk{(}pyR5TKZFOS{DvtgYM@3hdYi;j6;&V&ych8h3*d~yU!X>?i;yLlcaP2= zt6aB_JM|nm0=CN*dhR3WvIUNjiw~QRRZ9C zkdky06aDl*`tmy9_QcH~H)Ul}RIiEAkc#`$6X10sDy;I$hVr2B4rgE%r@Q6(#p&pQ zZSsk40MCCX;g9X63XQ1*WF`H3lghno%jLH@jfe0S7FlmYXj`AD6~A(#OMcpPXQOL#wcgS;w_>Tcwt0N9ZvEt%j@R7QX{$ICph!ktZ}p-|M_s$E41JQw zwR;1z*Xc}qWtQN;Q&ic@_hS0oB%hC~kDWe|a#aw#4fxsA#@%`qBXyL*R}!O_EsHBn zmJm@OX6D=7%KajZuAv#q(aa`?u)`K3;k*-mp#Bi@ZT>ZXPc2BZ<*8R_j5`jmp-G3okLVio!HP zn<;$NDJ?42Z`@)W{0rzWGUjo>F|qh2VsylR2aG=dlfd{lC^jZe#mw>}4^2t^`Jx|6 zO1%Zo4esY@nK2H_IQMSCS@vsE3ZWQ8hr?!W8QhRz)i8R*FU9I4$7PNPeVwv~&V1Cf zUzN=ZqF{#4h@ED;8anDcdDE1y>V*O-FVoLQgi$yMs}jgZ7p`|H#O7BFki?k*Q;joJ zuvO6@$QUuLF+dpQM`6u1WU8cU73^0JNE9dnbg2{w4#VKl(Uu}1Ef8LMp_u<+9W0Ur zCXpi?!1=`>{#X$j5=?O^;E0#(pHh{DlCWR{tsq@0KI%T!l79|WG5kH9L|ds)Jk1{i zS#^^P6A&{@sFI)fY{M<=qGd)El#I`JdqtKrX2OII{`)m2bIx@0qH$%;7U1=l?xv^5?0TFuGyE-nyoXyi`8i5jZ+nn6(iqdSg1hg#~jZCCD12`N+%h3 z=3?tz1zrVSwv1PJGWZYWaQr=QzST9zzE9V6Q@2wwg!(eb-~gthXGZ3u06w@-4FrmO z`-}metG5W?zF=}B3iks1KDVjvcC#(Towa1vUNi#+uih2>OwwzaDU1=CBWKNvo3)rS zc6Wpm0B?Gj6LYX}JnF@L7csGv$sD$dg{<`wW^MU_W)x+3E$B&$PINaPVgk+2P0+2J zqob~NbeAocq<_u&&IjHFg$*&phC|H>l4%aro;@6v+l-)gGh|8^ERn>acD zS4NTli{*v#_i=w`(}CtcTnVvVzQ|i+qPD{OB1)V7fd+K~bc2LPm?$^0nxCCUu4WSE zfx@)J7D(}>Fbe6#HnZ#UB(w@^f%3DT7>lfOAJADVI#&}+tSRS8al2!eX?9&shuTYJ z{H-7*2(c~_1B|M%1T^YU{fZb=$-#vfp;GdUaSYX?;^pY~<+L-;MtuYv(B3Q~Wtq;$MjDRIjn-8Bmhy%GoMOCydG}u72S|%^&jtIXIxs6v2cdgv#|fJV}wdq1W8{bCftZ zO!i2EV$jq8y$!c$7pqonYfwiiHRl~RGCN)~nLA95TOI>J(v5S@dJ~+xi^GX7{4sT= zMQn^LRG=230fwZUwlk0=?Mq10WkT&$x5}gkP5;&AKbF8St}g&xK)6AfF)cQHL=5d*B{s zsz-{s1bc7I6YWrfM_U^w7e89da&?&pWMCiJ)uHHV?yE`P86gH3abF z3IG`5LMqbGVtV_yGN5BUUn0_tYG&l4G7^zk{o)soErQ&25F~*cr)cm$$L;{XqwmyJ z0Gv(@+HJR5wRJY2Y=sm3@0iUdvL*mm{9O2a z!G4fw4_atSISh0n<+{WgCnefiXs#Yz+URbzDYiGGYGV$(Itw3E3bO60E5>IqO9w62 zMhUJdf2aRavcJ^y%@Kq2AbFXxbNBP?kldqhyUNyb-BuMNpZ9~4%ZbTDZ?X52h|7n? z#R%AzX_|JRi!|gDewhI?=4=4;Jf|Tnt(xh<4hOWQsrtkvge4n$9wiy36&l<&X#&bY zuI(Q}YM}>^P-XoO_ESYTh*xv9LT`f&T_1y8PTjBOBMWUo zeIfYyu)fl2B{Xx_pbNx9V_{-9D7|^Ez;72;Y-%g*DHj(PEeaiXI9>P!P*g({qnWSk z2->+=kw5l}W#Ocw`65-A?sLDkAp6VIDJvA;;rS$=DP>e; z%68J>L8|&3?K}q#I-8v)Qf?%*JGxlF$whb%!|+(6ff8DW#=0V89(V)%?UsoK1$~XQ z-G)&e=Y7vI>>fW?N;f^B)tiAIo7^7pXcqLe4Ws&IFT2~DE!Fha-0araaIe0usX^pF zysJKMDYmxt@DWMJ!G=S#K=WM2hb@(v!1T1fOzoZw9#W1TCiE__@&Z6~y~h+%{6VmM zV$jfrQ>b@388}NI?4oP(W(ri*OLOJ%Fwk&>F&_#5SFvk*Z}~%on4E1zHKC_#?n^aQ zC7@R-89`u7#wl||f<0{WqO_a1H$*2lP+`c!dvD98eIO_TFcYOPVS1-jq9&~cR}8XV zw6f)W9U2hu(2?@W8&IDSF+HdV@mHan`o-(AJ^9dR<#0jjT?3LD!(s{W7`KvU^HVgZ)LN^d!1s zfrC|AmUEwQz_y>xi~wjN=0-%X_OzH9c8oKD?a7-B3g1u+QK`^BT1;zNnO?% zWsIa`nUvnGi%KT?-H+dQui2LWfR(0K5d{TNGSLR^RmRY7%%%i>v?(6#!E04Au?P6; zC@iSr{36Rye8MAy*(~TzGEcr!u+EKbq1V;t^*0C3TmH(I8G~y*NZu&kUJg*oPnzCp zv$@O=NzwCWzr(GG^&^{2C3i{Iw$4s^hhY&1;iZQOQTv^le{=ubk{ZN~+l|`Kw(19qrH&_0(@yp7kCWggGOjkg zNu7Hy)v+-OCcR3%FE4?;Ig(B}t|p#~VZBs3-?$97iREoJU6}Da40K$W+{0EpH>yjWJm1**3a2l|^44*|@npQ*KjU z^Yq}>9}z)PIZaKxTTB-gUyouiPI{GVPhMATWL%ip=jxztfWnU-*`g4;2eV6RH9^2Z zWbMg(S?i@=)r;x+zN zg1VL*f9NpLNl(ei^Oj$X#jfTWnX)G}@(L}YtVQh2e_6$r_`9FFs<|CeVM2X? zGBq$a2C7^WVb#Ct3yttq>;>oJY0hqpz8>EARFS9kZ06o#ez_JALY+3Kc4>m1I=g^9 zv*h4wHOC=Eh5>E&`LV|Ph1A%*bRBRq;;#f)=TvG_S>accKDchpHP-a-y2abmTy}-yQA;t#K2wiw6YEVy zqTOlEVml|fm;PL40S?%2QqBqq(xz6A4nr;KtC$rz*7dJ%%|PR$g38Y&|JA4(AF|QX zn&2XmH98*!=2<7C##i$Y+9+t>I@s^Cp_V-h>V3T9a=EkM>S=|HOw$~!}g0#-aEUOLeos8X;%sQlq z0F~M(TKSN4ky9>XnaTq-txgu^8_YId$;;6F@|fGl@q+?!k=`EV#t-=4H*=5}kz;%u z;5)Fp()D9?ufD_PP6?M6up~_M{vami0|-J!89B>)F+wvyQ`~|X=nTxO=fqQ+up&$| zK$y8%m@EzEIhz=t1T*j{y5-t?Do`Q7X*-5Pz0n_Rq%0j$ z4&)nRwrP&6rk_Az7f^;#Vhp%>MPpy&VHJ6wYzBsz4{^Y0QcN%p?VUN5pE|0XfH;t8 zEt0tnxa2Hrmwel#5JQnO%AT81`nhnliDB)x1#1&iR8#Nt-vhY~wl`kwR0Cfy7K3gCz)1sX)UL!IFlazpRW= zFdGyd;jSlik&S{?VURrlf+Q-n2S^TA0Vf)o6mQ65^0=5PuADwWiFC!X5r9FfPif)h zFs;iLGzYZu9%o2Av#pBtq*c|EB_d|XVmg52H^G-KP#ey1HS26=XLCmkkjz*3-J}vL zO}iLlDeGQ}Q&Gkq-j=>vmg<@#*mdL&eF7ekh=WIn9fr`pBVt38Zu|PP+3@aD3|9_f;eeOx3Gi!sj}CvkC35+WZT=H zQg?D+?XD?lUr=l=OhXuiOOV&*-YA*k_;@&(J7PS4R9Ik8!Gp2$l#6$bSxt_i{z6i7 z83y>#NjIkGeIvU!6w(`U5cR$yA3`$0)(Yj z-V{Ba_lM7NI4eh9r}0$8iMBit>Fw7Xae05mk1=LyX65S*%y3be2N3ZrCTCxd((56e zxI_cdp2T>VWo!~WN@iaTYg$@xwk~q$gMOa{_|rNrQu8aCm(0C;gj#A4K4M*c?9ghFAN;I{^va zpmA}G0f!Vhei{q=J#ZyL@{oWp91{GhjR*3F40K|-LuBfQF*SF+wjDm$+FWx#o$4LF zesF2o6(@76_BmQ^$f3}kJLgX1RD+tOfX3-eIm78|IDu_z8j#MF7iApVshbjPjihV= zChOlg?%gnfMHH#d9NH65-2ov%U0CR2ZdHT2(J|^5t9XiL+1qp$zl0p&F#ooLE&jpV zS`|h)UyuuWrU$mQ1#>A}3{ud-~f~>!ctqF;{5f|QgtdM%Fu&B3b_q_>hqE(O^ z8Z=%-U!AI=3k|(+YH_UDj2aMhq%rMntPJBz^~)&o_77_Ld_fJ1-j|t?O=qhIY0E8; zZo#5k%C=c>PF_s;?@xy+50F+-6Q6`Q*?6hwUt~&UxKKWWL(wtO($P3y&sX5lcq?2S zT~~8@4gkmn-fu^PFHRby^txHAKuDpj9Z`_ik`K9%k$BH%)mtE#OIHSFE=L;I6Be$w zununK!b>{)?iqI(-~V2xI9EKTZG3T6B~(6Oj4i!8v!a?O+}|khzPqQ`RJ!l(34`>w zVPq|SpzJM5qP+3Jjl>aM+W6X;g8dC~va+j2Jyy_(#=6X8v0D=cwHpRi4QnX}q`DeZ zt{XAur}2&r&aI72F!y*yAooBq*QO22n+Q99g+lCzf)gkZsFP6%XWw>25wwwXYqC-Mlnmm4z(#=8)i<;g4x~ z5f7BgMysf#qQkwZfFP|n8-gu11r+AA$~5x?bCR_EUlD3WVmp>R?_PTo^{)>{QEO=V zN4cI0T`<7l)yvM^~#|{k^e!L}Fsz?}9eRc#eG3f7?FD4F;+^H<3 z1SLRiX2Rm?RnpNcU9BUT#}!2+ZmXYdt&im@J1Z+#71ITr0nUigFq1|3y(>D%uht3? zbVqo9Ao6wHJ&l6<`fm+%8C_rxO}aT?hbgfu+r zEHmXA{)02D7?-ZCKn*cII#?$MsZ8IVIBHTT}aJAf4T`8A3?LE}TOH289cfIuZF*69% zi~y;!3v#maGE(|bBoxddqn-M(bp-v=2^?B#0$fhrldA#?*4k@RU}_XW+!P2GbUg~H zFBq+_{AZUH`$%-tuFRTK9Z$r1I3(Y5lg(>z0)9Gcak0$v-k9cuivZ0^D{3;^N`$Od zt99K;!0hGriG5+rx>k)^TQky%$YK-NL2WVm1grek6fKoS?z3{sb%3#njHK+gTT`BV z?%?c=UlvX-t4~IoE01$LQPgj8irbL*%o^U6U&}za@|SxYbmm%Aq4YDzt7EY|O&% zTY3~Ip%o8ONp5#(!O|S#9OXLr_#u~ImEd!;%taW-HRQ3z`c6QJ9IoqdI#bm}jH&ST zy&GjsOgReX1mXv*OwvmuJdX5hs*r&8XKd=B$!eWV_3ngKr-hp36m)P2)n>?}lr$g! z&R`az=mxovy4#%e00Q#wZLtjLCNU@BPXauKG#u0w{*L+gm-3p5ap$88w~D>oC7XH; zOuQHZB!Sb9=(Tysl*zRpsF%&QJf~d~%|9J>9a#C5Qt33|e0IC?xbkE%l1HCLQMMjc z=%sJv3Z2!x6tGc_-~=6TMR}W)0!beqEJlR}`Sv0jhr$ZsP>SI}R23MNFEhghaKWmz zt`AlA+KawAU)nwmXNJ8s4#KVB=y1=gxp@#<1xGH5?&9Z23WYa7VM1B_;*DFseX z2q7%IKHN7erxJz-O;CmA@l)unQw9o}R2Yh(B;4@1%7YO7K29rMyOV46ykF{E9vK}% z*|V=k5mRwT^Lw-skPS1&$xVd7)r97{B@CB?jB7(FQs~L(?zBPL17otm+$-sNnN*zg z-Ppe#B-r{&cdhj}lRj@nx{(J=XU!A`8Y>hXTegu|9u}4ZhOE?A z@JHCO57X{cnRd}X{`ABJWU?osLl$8igzGqfkrcJQ(m|%0DZ9Pld1R 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 literal 0 HcmV?d00001 diff --git a/code_gen_history/V2_product/codegen-ProductChannel.zip b/code_gen_history/V2_product/codegen-ProductChannel.zip new file mode 100644 index 0000000000000000000000000000000000000000..5e7e7f0df7750c008b6555ec1f455b5f8c1cec4c GIT binary patch literal 16127 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 literal 0 HcmV?d00001 diff --git a/code_gen_history/V2_product/codegen-ProductLimitCard.zip b/code_gen_history/V2_product/codegen-ProductLimitCard.zip new file mode 100644 index 0000000000000000000000000000000000000000..f43b84a2eb81650662db6982db2951437aafb063 GIT binary patch literal 16657 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 Vc`1|)6e!m67@3%0vvvqc~v$lTw z)bNAN+cox%Zz~u(Gq~C@DExk^;$d&1U}$EdWa6MEPyh3tkxKGbs6uFMm=AbC={fs4 zycpTpQlSPlL<5bl?*Zyw`+Kd^dS2jQEQcTiB0u-f>uQ z(*n*6L&IkyXJcLr0hN$d28M&Ea7-wv1iQ$D>R3BU=kx}M?jgl9lw{dR#iTna!+6xTxB%$P$dWlW27FV9H$yAt>u7 zl{9F>t4|wt>H#Q_MP47|s7R&jgPWx^Qw7J5$qtj#WGF0ny{f~tK7EbbQLXHhkJlg| z`2nH)`y z$6ZTD)RaEn>(uyukZ_6&KLGk{`N$=yES1Zhe2UG*pe(#F%90&Ad#F=yM6fjLa%N|c zcqWOd>(5liwE+Ffh-wR$*Kojeu^h%qY|o8#+ev14{Y*0A|J;!_(PMG|Jn?Zb&;BlI zqmuJs-;omq+d4CKfE-^Frp@$<;M3-|kAu(6^YPKhLK4-;;pWrOI}Msznzo~lw)dLz ziDpZ*(?-57dM{uK(vVO!Ow}N#z(7Fmpg=$h|B$93|7n^knK;@17f17B$9{6O@9fhP zqKI7Gbg(LKpntF^luF4#)Z@_ck?Zhqvx93a`x`~W6sA80BtuKi6hyI11y72Y|hUqX3ny3|^Lqwhk~W&kYMz#7K{- zhGX0|ZBeVB+M0*V#;W#_nKH*&1?hzw*FwNTTY`flgE3S-jp^8}U`dsYdaUHF;O!>r zB&5`(tClBn(pzwz%gy$=^_e%ZV^m?z3jFjvKD#NudYoAlcvds##Uc%d6i2Y!b6zA1 zRH|{&r6K)dG~SykTgGz-MyxEfce|@;;Ld~JH=&ImeXb|zD(-1yYM?Lt=_Gq!X?Js* z)Ri53&L}uJ{9=wCguB>8e#tdaM5<*Mg0DO;8oNejIdk=VwqJ3=)J%kzo>KIQo~T&d zO)C<8<6uJ2NbJM=%!$3bW2Gh2FMV8B8stq=8^OPlVkUs zRl-9>h^oVB`1W&Yy*A&ii>M~|W7vPlpNs60PJF$UfsPXS7|l?0yM&z?2K z=CG?gGfsCHxw`1OqKp3_Bsy2kh*~2MW+JzmNhaoIaZtuvuD`v-5j||hEb{W&n9Exi zZVk;&!a7E_SE8p0b7vuG)Bg3atLVttqPR>-wdXlmxp zv(qE&M!;o1$ogHU>EP)Vkyh(nKMr?Gf&D&cgW_cxjP! zEW1rUCq&amw#JiY^U)(ZM4fK=BnBntQO$|6WNZ#a#tZ;+kt(73-D0Tn#sS;N^qj;d z2adMatT^SerrVa8M@tnvCW8U1!Z>F8(?l-C+J0#4B6}Qk8sk*sLlKMi1c(fWUh-0x zN#&i>hnniHk(0y8?vz2$3FZ6T6pwmbnF9sJCw|V?k~Nyw<}y@MT!<|0#VhZ*^G;fq zsi|j$5?V87ivpn@?Ny`B^S}E@0S!iY2MkF}Y&l>~YXq$t+v90FWp(T0Yb*`CCXn^1 zH!VIdv%^jmh>}FDQW8nSva1!VgRBC5bTo_OcE-9gv3OUBXhX7>4>9umEwSrzPTGv%0z}JhY zqz!(iGEtz{g!uLVr{hA;Fyk0a1pcD-V4hYuf$d1s@>KGLJD#OwpzB5BB@gywdsNTL z+;Yt-NQl*&bS6b+!oE~(NOYrGnV@vmUc(KRpCxKk<}>D`$K`fKTwkAEq}-k(_t&)a zzVXA^XzgaC+|kWU{nw|Z4_~e-Zp|}m zDwQONR6l*Vg*6Afl=cM#j~VKKFvv_ILD;z4WyQmKi{~$IGUW%MEP$1eA7V2oUp z3k@0=uv8$-6|3(f&rG4;opoGw2ne)*f**$9$B1^%o<9Tl>o3KdAh8mj4`SVGJ3{8I z%8B}YkxhDAbz0@32f=1W-BYL+_DKWSIL>^{N^_N9=6&tSookq4z|%)}RXyxqSC0z) z+MHy?_j;i((`Wi z0Nx;TIe2bj%)Fhl;r0A21-GCZxaenSTE^pZUSin&E??v!R`l zrO8`e^0)fr7mq3WdsUL4wDy+qA^9S1`)OQG?;3*ozza`hjE~Q&!~!aR{2-q@UeURg zU<(;nQLGh*ExrSV-VA{ExACDVewB4<*d6feXi2BCQ3k_2wcSl?SV%cb`#4Ts%p&S@ z3<4euy*!HmeEcbws|y}P)*r8PBo}I4JAxV)3N?>9Q!Zcm8|FuakN`6gRI{t3evAcj z4Vt8}PlGpD^uT1x#9^wD00L+3A^hm@uDilRSjMtc+sir&(I;+RhwKZv3^5rYt{2-fpB=YIcw|M+ZR+GGO8y zo*Gt|i)Zb?+F!+`gBl>+tLgUKXrskmP*?q7)k@m@>GZ=gA53t|{#4Dx!NT_X{$>y0 z-0IcajN|D$Ȋ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 literal 0 HcmV?d00001 diff --git a/code_gen_history/V2_product/codegen-SuperiorProductConfig.zip b/code_gen_history/V2_product/codegen-SuperiorProductConfig.zip new file mode 100644 index 0000000000000000000000000000000000000000..ebffbd9dd9edbb2436aca835a10b222a5ef08433 GIT binary patch literal 18378 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 literal 0 HcmV?d00001 diff --git a/yudao-module-haoka/yudao-module-haoka-api/src/main/java/cn/iocoder/yudao/module/haoka/enums/ErrorCodeConstants.java b/yudao-module-haoka/yudao-module-haoka-api/src/main/java/cn/iocoder/yudao/module/haoka/enums/ErrorCodeConstants.java index d6444f2b03..2a994a7610 100644 --- a/yudao-module-haoka/yudao-module-haoka-api/src/main/java/cn/iocoder/yudao/module/haoka/enums/ErrorCodeConstants.java +++ b/yudao-module-haoka/yudao-module-haoka-api/src/main/java/cn/iocoder/yudao/module/haoka/enums/ErrorCodeConstants.java @@ -23,4 +23,7 @@ public interface ErrorCodeConstants { ErrorCode PRODUCT_LIMIT_NOT_EXISTS = new ErrorCode(1_801_001_005, "产品限制条件不存在"); ErrorCode PRODUCT_LIMIT_AREA_NOT_EXISTS = new ErrorCode(1_801_001_005, "产品区域配置不存在"); ErrorCode PRODUCT_TYPE_NOT_EXISTS = new ErrorCode(1_801_001_005, "产品类型不存在"); + + + ErrorCode HAO_KA_PRODUCT_NOT_EXISTS = new ErrorCode(1_801_001_005, "产品/渠道不存在"); } diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/product/ProductController.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/product/ProductController.java deleted file mode 100644 index b24c1c030e..0000000000 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/product/ProductController.java +++ /dev/null @@ -1,139 +0,0 @@ -package cn.iocoder.yudao.module.haoka.controller.admin.product; - -import org.springframework.web.bind.annotation.*; -import jakarta.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import jakarta.validation.constraints.*; -import jakarta.validation.*; -import jakarta.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; - -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; - -import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; -import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; - -import cn.iocoder.yudao.module.haoka.controller.admin.product.vo.*; -import cn.iocoder.yudao.module.haoka.dal.dataobject.product.ProductDO; -import cn.iocoder.yudao.module.haoka.dal.dataobject.superiorproductconfig.SuperiorProductConfigDO; -import cn.iocoder.yudao.module.haoka.service.product.ProductService; - -@Tag(name = "管理后台 - 产品/渠道") -@RestController -@RequestMapping("/haoka/product") -@Validated -public class ProductController { - - @Resource - private ProductService productService; - - @PostMapping("/create") - @Operation(summary = "创建产品/渠道") - @PreAuthorize("@ss.hasPermission('haoka:product:create')") - public CommonResult createProduct(@Valid @RequestBody ProductSaveReqVO createReqVO) { - return success(productService.createProduct(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新产品/渠道") - @PreAuthorize("@ss.hasPermission('haoka:product:update')") - public CommonResult updateProduct(@Valid @RequestBody ProductSaveReqVO updateReqVO) { - productService.updateProduct(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除产品/渠道") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('haoka:product:delete')") - public CommonResult deleteProduct(@RequestParam("id") Long id) { - productService.deleteProduct(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得产品/渠道") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('haoka:product:query')") - public CommonResult getProduct(@RequestParam("id") Long id) { - ProductDO product = productService.getProduct(id); - return success(BeanUtils.toBean(product, ProductRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得产品/渠道分页") - @PreAuthorize("@ss.hasPermission('haoka:product:query')") - public CommonResult> getProductPage(@Valid ProductPageReqVO pageReqVO) { - PageResult pageResult = productService.getProductPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, ProductRespVO.class)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出产品/渠道 Excel") - @PreAuthorize("@ss.hasPermission('haoka:product:export')") - @ApiAccessLog(operateType = EXPORT) - public void exportProductExcel(@Valid ProductPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = productService.getProductPage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "产品/渠道.xls", "数据", ProductRespVO.class, - BeanUtils.toBean(list, ProductRespVO.class)); - } - - // ==================== 子表(产品对接上游配置) ==================== - - @GetMapping("/superior-product-config/page") - @Operation(summary = "获得产品对接上游配置分页") - @Parameter(name = "haokaProductId", description = "产品ID") - @PreAuthorize("@ss.hasPermission('haoka:product:query')") - public CommonResult> getSuperiorProductConfigPage(PageParam pageReqVO, - @RequestParam("haokaProductId") Long haokaProductId) { - return success(productService.getSuperiorProductConfigPage(pageReqVO, haokaProductId)); - } - - @PostMapping("/superior-product-config/create") - @Operation(summary = "创建产品对接上游配置") - @PreAuthorize("@ss.hasPermission('haoka:product:create')") - public CommonResult createSuperiorProductConfig(@Valid @RequestBody SuperiorProductConfigDO superiorProductConfig) { - return success(productService.createSuperiorProductConfig(superiorProductConfig)); - } - - @PutMapping("/superior-product-config/update") - @Operation(summary = "更新产品对接上游配置") - @PreAuthorize("@ss.hasPermission('haoka:product:update')") - public CommonResult updateSuperiorProductConfig(@Valid @RequestBody SuperiorProductConfigDO superiorProductConfig) { - productService.updateSuperiorProductConfig(superiorProductConfig); - return success(true); - } - - @DeleteMapping("/superior-product-config/delete") - @Parameter(name = "id", description = "编号", required = true) - @Operation(summary = "删除产品对接上游配置") - @PreAuthorize("@ss.hasPermission('haoka:product:delete')") - public CommonResult deleteSuperiorProductConfig(@RequestParam("id") Long id) { - productService.deleteSuperiorProductConfig(id); - return success(true); - } - - @GetMapping("/superior-product-config/get") - @Operation(summary = "获得产品对接上游配置") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('haoka:product:query')") - public CommonResult getSuperiorProductConfig(@RequestParam("id") Long id) { - return success(productService.getSuperiorProductConfig(id)); - } - -} \ No newline at end of file diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/product/vo/ProductPageReqVO.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/product/vo/ProductPageReqVO.java deleted file mode 100644 index 43a9d3f8e9..0000000000 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/product/vo/ProductPageReqVO.java +++ /dev/null @@ -1,79 +0,0 @@ -package cn.iocoder.yudao.module.haoka.controller.admin.product.vo; - -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 产品/渠道分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ProductPageReqVO extends PageParam { - - @Schema(description = "运营商") - private Integer operator; - - @Schema(description = "产品编码") - private String sku; - - @Schema(description = "产品名称", example = "赵六") - private String name; - - @Schema(description = "产品类型", example = "21014") - private Long haokaProductTypeId; - - @Schema(description = "归属地") - private Integer belongAreaCode; - - @Schema(description = "产品渠道", example = "6850") - private Long haokaProductChannelId; - - @Schema(description = "产品限制", example = "31322") - private Long haokaProductLimitId; - - @Schema(description = "身份证号码验证") - private Integer idCardNumVerify; - - @Schema(description = "身份证图片验证") - private Integer idCardImgVerify; - - @Schema(description = "生产地址") - private String produceAddress; - - @Schema(description = "黑名单过滤") - private Boolean needBlacklistFilter; - - @Schema(description = "是否启用库存限制") - private Boolean enableStockLimit; - - @Schema(description = "库存数量") - private Integer stockNum; - - @Schema(description = "库存报警数量") - private Integer stockWarnNum; - - @Schema(description = "生产备注") - private String produceRemarks; - - @Schema(description = "结算规则") - private String settlementRules; - - @Schema(description = "预估收益") - private String estimatedRevenue; - - @Schema(description = "上架") - private Boolean onSale; - - @Schema(description = "是否顶置") - private Boolean isTop; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime[] createTime; - -} \ No newline at end of file diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/product/vo/ProductRespVO.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/product/vo/ProductRespVO.java deleted file mode 100644 index ca3b4e3ae5..0000000000 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/product/vo/ProductRespVO.java +++ /dev/null @@ -1,104 +0,0 @@ -package cn.iocoder.yudao.module.haoka.controller.admin.product.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; - -@Schema(description = "管理后台 - 产品/渠道 Response VO") -@Data -@ExcelIgnoreUnannotated -public class ProductRespVO { - - @Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3973") - @ExcelProperty("产品ID") - private Long id; - - @Schema(description = "运营商", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty(value = "运营商", converter = DictConvert.class) - @DictFormat("haoka_operator") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Integer operator; - - @Schema(description = "产品编码", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("产品编码") - private String sku; - - @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") - @ExcelProperty("产品名称") - private String name; - - @Schema(description = "产品类型", example = "21014") - @ExcelProperty("产品类型") - private Long haokaProductTypeId; - - @Schema(description = "归属地", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("归属地") - private Integer belongAreaCode; - - @Schema(description = "产品渠道", example = "6850") - @ExcelProperty("产品渠道") - private Long haokaProductChannelId; - - @Schema(description = "产品限制", requiredMode = Schema.RequiredMode.REQUIRED, example = "31322") - @ExcelProperty("产品限制") - private Long haokaProductLimitId; - - @Schema(description = "身份证号码验证", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty(value = "身份证号码验证", converter = DictConvert.class) - @DictFormat("id_card_num_verify") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Integer idCardNumVerify; - - @Schema(description = "身份证图片验证", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty(value = "身份证图片验证", converter = DictConvert.class) - @DictFormat("id_card_img_verify") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 - private Integer idCardImgVerify; - - @Schema(description = "生产地址") - @ExcelProperty("生产地址") - private String produceAddress; - - @Schema(description = "黑名单过滤", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("黑名单过滤") - private Boolean needBlacklistFilter; - - @Schema(description = "是否启用库存限制") - @ExcelProperty("是否启用库存限制") - private Boolean enableStockLimit; - - @Schema(description = "库存数量") - @ExcelProperty("库存数量") - private Integer stockNum; - - @Schema(description = "库存报警数量") - @ExcelProperty("库存报警数量") - private Integer stockWarnNum; - - @Schema(description = "生产备注") - @ExcelProperty("生产备注") - private String produceRemarks; - - @Schema(description = "结算规则") - @ExcelProperty("结算规则") - private String settlementRules; - - @Schema(description = "预估收益") - @ExcelProperty("预估收益") - private String estimatedRevenue; - - @Schema(description = "上架") - @ExcelProperty("上架") - private Boolean onSale; - - @Schema(description = "是否顶置") - @ExcelProperty("是否顶置") - private Boolean isTop; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} \ No newline at end of file diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/product/vo/ProductSaveReqVO.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/product/vo/ProductSaveReqVO.java deleted file mode 100644 index 687236b44b..0000000000 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/controller/admin/product/vo/ProductSaveReqVO.java +++ /dev/null @@ -1,81 +0,0 @@ -package cn.iocoder.yudao.module.haoka.controller.admin.product.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import jakarta.validation.constraints.*; -import cn.iocoder.yudao.module.haoka.dal.dataobject.superiorproductconfig.SuperiorProductConfigDO; - -@Schema(description = "管理后台 - 产品/渠道新增/修改 Request VO") -@Data -public class ProductSaveReqVO { - - @Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3973") - private Long id; - - @Schema(description = "运营商", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "运营商不能为空") - private Integer operator; - - @Schema(description = "产品编码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "产品编码不能为空") - private String sku; - - @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") - @NotEmpty(message = "产品名称不能为空") - private String name; - - @Schema(description = "产品类型", example = "21014") - private Long haokaProductTypeId; - - @Schema(description = "归属地", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "归属地不能为空") - private Integer belongAreaCode; - - @Schema(description = "产品渠道", example = "6850") - private Long haokaProductChannelId; - - @Schema(description = "产品限制", requiredMode = Schema.RequiredMode.REQUIRED, example = "31322") - @NotNull(message = "产品限制不能为空") - private Long haokaProductLimitId; - - @Schema(description = "身份证号码验证", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "身份证号码验证不能为空") - private Integer idCardNumVerify; - - @Schema(description = "身份证图片验证", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "身份证图片验证不能为空") - private Integer idCardImgVerify; - - @Schema(description = "生产地址") - private String produceAddress; - - @Schema(description = "黑名单过滤", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "黑名单过滤不能为空") - private Boolean needBlacklistFilter; - - @Schema(description = "是否启用库存限制") - private Boolean enableStockLimit; - - @Schema(description = "库存数量") - private Integer stockNum; - - @Schema(description = "库存报警数量") - private Integer stockWarnNum; - - @Schema(description = "生产备注") - private String produceRemarks; - - @Schema(description = "结算规则") - private String settlementRules; - - @Schema(description = "预估收益") - private String estimatedRevenue; - - @Schema(description = "上架") - private Boolean onSale; - - @Schema(description = "是否顶置") - private Boolean isTop; - -} \ No newline at end of file diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductChannelDO.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductChannelDO.java index 824cbd098b..106321acf0 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductChannelDO.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductChannelDO.java @@ -25,7 +25,7 @@ public class ProductChannelDO extends BaseDO { /** * 产品类型ID */ - @TableId + @TableId(type = IdType.ASSIGN_ID) private Long id; /** * 产品类型名称 @@ -36,4 +36,4 @@ public class ProductChannelDO extends BaseDO { */ private Long deptId; -} \ No newline at end of file +} diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductDO.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductDO.java deleted file mode 100644 index 97ad20c8ec..0000000000 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductDO.java +++ /dev/null @@ -1,117 +0,0 @@ -package cn.iocoder.yudao.module.haoka.dal.dataobject.product; - -import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; - -/** - * 产品/渠道 DO - * - * @author 芋道源码 - */ -@TableName("haoka_product") -@KeySequence("haoka_product_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ProductDO extends BaseDO { - - /** - * 产品ID - */ - @TableId - private Long id; - /** - * 运营商 - * - * 枚举 {@link TODO haoka_operator 对应的类} - */ - private Integer operator; - /** - * 产品编码 - */ - private String sku; - /** - * 产品名称 - */ - private String name; - /** - * 产品类型 - */ - private Long haokaProductTypeId; - /** - * 归属地 - */ - private Integer belongAreaCode; - /** - * 产品渠道 - */ - private Long haokaProductChannelId; - /** - * 产品限制 - */ - private Long haokaProductLimitId; - /** - * 身份证号码验证 - * - * 枚举 {@link TODO id_card_num_verify 对应的类} - */ - private Integer idCardNumVerify; - /** - * 身份证图片验证 - * - * 枚举 {@link TODO id_card_img_verify 对应的类} - */ - private Integer idCardImgVerify; - /** - * 生产地址 - */ - private String produceAddress; - /** - * 黑名单过滤 - */ - private Boolean needBlacklistFilter; - /** - * 是否启用库存限制 - */ - private Boolean enableStockLimit; - /** - * 库存数量 - */ - private Integer stockNum; - /** - * 库存报警数量 - */ - private Integer stockWarnNum; - /** - * 生产备注 - */ - private String produceRemarks; - /** - * 结算规则 - */ - private String settlementRules; - /** - * 预估收益 - */ - private String estimatedRevenue; - /** - * 上架 - */ - private Boolean onSale; - /** - * 是否顶置 - */ - private Boolean isTop; - /** - * 部门ID - */ - private Long deptId; - -} \ No newline at end of file diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductLimitAreaDO.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductLimitAreaDO.java index 2a82a32ea4..8b76a93f41 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductLimitAreaDO.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductLimitAreaDO.java @@ -25,7 +25,7 @@ public class ProductLimitAreaDO extends BaseDO { /** * ID */ - @TableId + @TableId(type = IdType.ASSIGN_ID) private Long id; /** * 产品限制ID @@ -48,4 +48,4 @@ public class ProductLimitAreaDO extends BaseDO { */ private Long deptId; -} \ No newline at end of file +} diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductLimitCardDO.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductLimitCardDO.java index cee77d2c09..b091c717a7 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductLimitCardDO.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductLimitCardDO.java @@ -25,7 +25,7 @@ public class ProductLimitCardDO extends BaseDO { /** * ID */ - @TableId + @TableId(type = IdType.ASSIGN_ID) private Long id; /** * 产品限制ID @@ -40,4 +40,4 @@ public class ProductLimitCardDO extends BaseDO { */ private Long deptId; -} \ No newline at end of file +} diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductLimitDO.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductLimitDO.java index 4a47102af2..1bc6e84eb8 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductLimitDO.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductLimitDO.java @@ -25,7 +25,7 @@ public class ProductLimitDO extends BaseDO { /** * 产品类型ID */ - @TableId + @TableId(type = IdType.ASSIGN_ID) private Long id; /** * 产品类型名称 @@ -64,4 +64,4 @@ public class ProductLimitDO extends BaseDO { */ private Long deptId; -} \ No newline at end of file +} diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductTypeDO.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductTypeDO.java index a539a8c568..cf035b36df 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductTypeDO.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/dataobject/product/ProductTypeDO.java @@ -25,7 +25,7 @@ public class ProductTypeDO extends BaseDO { /** * 产品类型ID */ - @TableId + @TableId(type = IdType.ASSIGN_ID) private Long id; /** * 产品类型名称 @@ -36,4 +36,4 @@ public class ProductTypeDO extends BaseDO { */ private Long deptId; -} \ No newline at end of file +} diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/mysql/product/ProductLimitCardMapper.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/mysql/product/ProductLimitCardMapper.java index 40f8de97d1..63e4035716 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/mysql/product/ProductLimitCardMapper.java +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/mysql/product/ProductLimitCardMapper.java @@ -1,11 +1,10 @@ package cn.iocoder.yudao.module.haoka.dal.mysql.product; -import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.haoka.controller.admin.product.vo.ProductLimitCardPageReqVO; -import cn.iocoder.yudao.module.haoka.dal.dataobject.product.ProductLimitAreaDO; import cn.iocoder.yudao.module.haoka.dal.dataobject.product.ProductLimitCardDO; import org.apache.ibatis.annotations.Mapper; diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/mysql/product/ProductMapper.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/mysql/product/ProductMapper.java deleted file mode 100644 index d70cdac509..0000000000 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/dal/mysql/product/ProductMapper.java +++ /dev/null @@ -1,45 +0,0 @@ -package cn.iocoder.yudao.module.haoka.dal.mysql.product; - -import java.util.*; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.haoka.dal.dataobject.product.ProductDO; -import org.apache.ibatis.annotations.Mapper; -import cn.iocoder.yudao.module.haoka.controller.admin.product.vo.*; - -/** - * 产品/渠道 Mapper - * - * @author 芋道源码 - */ -@Mapper -public interface ProductMapper extends BaseMapperX { - - default PageResult selectPage(ProductPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(ProductDO::getOperator, reqVO.getOperator()) - .likeIfPresent(ProductDO::getSku, reqVO.getSku()) - .likeIfPresent(ProductDO::getName, reqVO.getName()) - .eqIfPresent(ProductDO::getHaokaProductTypeId, reqVO.getHaokaProductTypeId()) - .eqIfPresent(ProductDO::getBelongAreaCode, reqVO.getBelongAreaCode()) - .eqIfPresent(ProductDO::getHaokaProductChannelId, reqVO.getHaokaProductChannelId()) - .eqIfPresent(ProductDO::getHaokaProductLimitId, reqVO.getHaokaProductLimitId()) - .eqIfPresent(ProductDO::getIdCardNumVerify, reqVO.getIdCardNumVerify()) - .eqIfPresent(ProductDO::getIdCardImgVerify, reqVO.getIdCardImgVerify()) - .eqIfPresent(ProductDO::getProduceAddress, reqVO.getProduceAddress()) - .eqIfPresent(ProductDO::getNeedBlacklistFilter, reqVO.getNeedBlacklistFilter()) - .eqIfPresent(ProductDO::getEnableStockLimit, reqVO.getEnableStockLimit()) - .eqIfPresent(ProductDO::getStockNum, reqVO.getStockNum()) - .eqIfPresent(ProductDO::getStockWarnNum, reqVO.getStockWarnNum()) - .eqIfPresent(ProductDO::getProduceRemarks, reqVO.getProduceRemarks()) - .eqIfPresent(ProductDO::getSettlementRules, reqVO.getSettlementRules()) - .eqIfPresent(ProductDO::getEstimatedRevenue, reqVO.getEstimatedRevenue()) - .eqIfPresent(ProductDO::getOnSale, reqVO.getOnSale()) - .eqIfPresent(ProductDO::getIsTop, reqVO.getIsTop()) - .betweenIfPresent(ProductDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(ProductDO::getId)); - } - -} \ No newline at end of file diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/product/ProductService.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/product/ProductService.java deleted file mode 100644 index eb73abaca4..0000000000 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/product/ProductService.java +++ /dev/null @@ -1,97 +0,0 @@ -package cn.iocoder.yudao.module.haoka.service.product; - -import java.util.*; -import jakarta.validation.*; -import cn.iocoder.yudao.module.haoka.controller.admin.product.vo.*; -import cn.iocoder.yudao.module.haoka.dal.dataobject.product.ProductDO; -import cn.iocoder.yudao.module.haoka.dal.dataobject.superiorproductconfig.SuperiorProductConfigDO; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; - -/** - * 产品/渠道 Service 接口 - * - * @author 芋道源码 - */ -public interface ProductService { - - /** - * 创建产品/渠道 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createProduct(@Valid ProductSaveReqVO createReqVO); - - /** - * 更新产品/渠道 - * - * @param updateReqVO 更新信息 - */ - void updateProduct(@Valid ProductSaveReqVO updateReqVO); - - /** - * 删除产品/渠道 - * - * @param id 编号 - */ - void deleteProduct(Long id); - - /** - * 获得产品/渠道 - * - * @param id 编号 - * @return 产品/渠道 - */ - ProductDO getProduct(Long id); - - /** - * 获得产品/渠道分页 - * - * @param pageReqVO 分页查询 - * @return 产品/渠道分页 - */ - PageResult getProductPage(ProductPageReqVO pageReqVO); - - // ==================== 子表(产品对接上游配置) ==================== - - /** - * 获得产品对接上游配置分页 - * - * @param pageReqVO 分页查询 - * @param haokaProductId 产品ID - * @return 产品对接上游配置分页 - */ - PageResult getSuperiorProductConfigPage(PageParam pageReqVO, Long haokaProductId); - - /** - * 创建产品对接上游配置 - * - * @param superiorProductConfig 创建信息 - * @return 编号 - */ - Long createSuperiorProductConfig(@Valid SuperiorProductConfigDO superiorProductConfig); - - /** - * 更新产品对接上游配置 - * - * @param superiorProductConfig 更新信息 - */ - void updateSuperiorProductConfig(@Valid SuperiorProductConfigDO superiorProductConfig); - - /** - * 删除产品对接上游配置 - * - * @param id 编号 - */ - void deleteSuperiorProductConfig(Long id); - - /** - * 获得产品对接上游配置 - * - * @param id 编号 - * @return 产品对接上游配置 - */ - SuperiorProductConfigDO getSuperiorProductConfig(Long id); - -} \ No newline at end of file diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/product/ProductServiceImpl.java b/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/product/ProductServiceImpl.java deleted file mode 100644 index aa0e6c21ea..0000000000 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/java/cn/iocoder/yudao/module/haoka/service/product/ProductServiceImpl.java +++ /dev/null @@ -1,127 +0,0 @@ -package cn.iocoder.yudao.module.haoka.service.product; - -import org.springframework.stereotype.Service; -import jakarta.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import cn.iocoder.yudao.module.haoka.controller.admin.product.vo.*; -import cn.iocoder.yudao.module.haoka.dal.dataobject.product.ProductDO; -import cn.iocoder.yudao.module.haoka.dal.dataobject.superiorproductconfig.SuperiorProductConfigDO; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; - -import cn.iocoder.yudao.module.haoka.dal.mysql.product.ProductMapper; -import cn.iocoder.yudao.module.haoka.dal.mysql.superiorproductconfig.SuperiorProductConfigMapper; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.haoka.enums.ErrorCodeConstants.*; - -/** - * 产品/渠道 Service 实现类 - * - * @author 芋道源码 - */ -@Service -@Validated -public class ProductServiceImpl implements ProductService { - - @Resource - private ProductMapper productMapper; - @Resource - private SuperiorProductConfigMapper superiorProductConfigMapper; - - @Override - public Long createProduct(ProductSaveReqVO createReqVO) { - // 插入 - ProductDO product = BeanUtils.toBean(createReqVO, ProductDO.class); - productMapper.insert(product); - // 返回 - return product.getId(); - } - - @Override - public void updateProduct(ProductSaveReqVO updateReqVO) { - // 校验存在 - validateProductExists(updateReqVO.getId()); - // 更新 - ProductDO updateObj = BeanUtils.toBean(updateReqVO, ProductDO.class); - productMapper.updateById(updateObj); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteProduct(Long id) { - // 校验存在 - validateProductExists(id); - // 删除 - productMapper.deleteById(id); - - // 删除子表 - deleteSuperiorProductConfigByHaokaProductId(id); - } - - private void validateProductExists(Long id) { - if (productMapper.selectById(id) == null) { - throw exception(PRODUCT_NOT_EXISTS); - } - } - - @Override - public ProductDO getProduct(Long id) { - return productMapper.selectById(id); - } - - @Override - public PageResult getProductPage(ProductPageReqVO pageReqVO) { - return productMapper.selectPage(pageReqVO); - } - - // ==================== 子表(产品对接上游配置) ==================== - - @Override - public PageResult getSuperiorProductConfigPage(PageParam pageReqVO, Long haokaProductId) { - return superiorProductConfigMapper.selectPageByHaokaProductId(pageReqVO, haokaProductId); - } - - @Override - public Long createSuperiorProductConfig(SuperiorProductConfigDO superiorProductConfig) { - superiorProductConfigMapper.insert(superiorProductConfig); - return superiorProductConfig.getId(); - } - - @Override - public void updateSuperiorProductConfig(SuperiorProductConfigDO superiorProductConfig) { - // 校验存在 - validateSuperiorProductConfigExists(superiorProductConfig.getId()); - // 更新 - superiorProductConfig.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新 - superiorProductConfigMapper.updateById(superiorProductConfig); - } - - @Override - public void deleteSuperiorProductConfig(Long id) { - // 校验存在 - validateSuperiorProductConfigExists(id); - // 删除 - superiorProductConfigMapper.deleteById(id); - } - - @Override - public SuperiorProductConfigDO getSuperiorProductConfig(Long id) { - return superiorProductConfigMapper.selectById(id); - } - - private void validateSuperiorProductConfigExists(Long id) { - if (superiorProductConfigMapper.selectById(id) == null) { - throw exception(SUPERIOR_PRODUCT_CONFIG_NOT_EXISTS); - } - } - - private void deleteSuperiorProductConfigByHaokaProductId(Long haokaProductId) { - superiorProductConfigMapper.deleteByHaokaProductId(haokaProductId); - } - -} diff --git a/yudao-module-haoka/yudao-module-haoka-biz/src/main/resources/mapper/product/ProductMapper.xml b/yudao-module-haoka/yudao-module-haoka-biz/src/main/resources/mapper/product/HaoKaProductMapper.xml similarity index 94% rename from yudao-module-haoka/yudao-module-haoka-biz/src/main/resources/mapper/product/ProductMapper.xml rename to yudao-module-haoka/yudao-module-haoka-biz/src/main/resources/mapper/product/HaoKaProductMapper.xml index d24447b470..e4950d5d28 100644 --- a/yudao-module-haoka/yudao-module-haoka-biz/src/main/resources/mapper/product/ProductMapper.xml +++ b/yudao-module-haoka/yudao-module-haoka-biz/src/main/resources/mapper/product/HaoKaProductMapper.xml @@ -1,6 +1,6 @@ - +