From a89b72fca1a979f1c3fce89d19c5307df8b77c3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=BA=9A=E9=B9=8F?= <13666640+zhao-yapengaaa@user.noreply.gitee.com> Date: Fri, 21 Nov 2025 10:05:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E8=87=B4=E6=9D=83=E9=99=90=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E5=AE=8C=E6=88=90=EF=BC=8C=E6=96=B0=E5=A2=9E=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stusystem/controller/LoginController.java | 23 +++++++-- .../controller/RolePermissionController.java | 22 +-------- .../java/cn/zyp/stusystem/entity/Role.java | 13 ++++-- .../impl/RolePermissionServiceImpl.java | 20 ++++---- .../service/impl/UserServiceImpl.java | 44 +++++++++++++++++- src/main/java/cn/zyp/stusystem/vo/UserVO.java | 6 +-- .../controller/LoginController.class | Bin 3197 -> 3574 bytes .../cn/zyp/stusystem/entity/User.class | Bin 4946 -> 5552 bytes .../zyp/stusystem/service/UserService.class | Bin 431 -> 582 bytes .../service/impl/UserServiceImpl.class | Bin 2815 -> 3982 bytes .../classes/cn/zyp/stusystem/vo/UserVO.class | Bin 4016 -> 4484 bytes 11 files changed, 88 insertions(+), 40 deletions(-) diff --git a/src/main/java/cn/zyp/stusystem/controller/LoginController.java b/src/main/java/cn/zyp/stusystem/controller/LoginController.java index bfb116a..a916bd7 100644 --- a/src/main/java/cn/zyp/stusystem/controller/LoginController.java +++ b/src/main/java/cn/zyp/stusystem/controller/LoginController.java @@ -2,9 +2,9 @@ package cn.zyp.stusystem.controller; import cn.dev33.satoken.stp.StpUtil; import cn.zyp.stusystem.common.Result; -import cn.zyp.stusystem.constant.PermissionConstants; import cn.zyp.stusystem.dto.LoginDTO; import cn.zyp.stusystem.entity.User; +import cn.zyp.stusystem.service.RoleService; import cn.zyp.stusystem.service.UserService; import cn.zyp.stusystem.vo.LoginResult; import cn.zyp.stusystem.vo.UserVO; @@ -23,6 +23,9 @@ public class LoginController { @Autowired private UserService userService; + @Autowired + private RoleService roleService; + @PostMapping("/login") public Result login(@RequestBody LoginDTO loginDTO) { // 1. 根据用户名查询用户信息 @@ -36,16 +39,28 @@ public class LoginController { // 3. SaToken登录(自动生成token) StpUtil.login(user.getId()); - // 4. 在Session中存储角色和权限 + // 4. 获取用户权限(从数据库获取,而不是从常量) + List permissions = userService.getUserPermissions(user.getId()); + + // 5. 获取角色ID(如果user中没有roleId,则根据role查找) + Long roleId = user.getRoleId(); + if (roleId == null && user.getRole() != null) { + roleId = roleService.getRoleIdByRoleCode(user.getRole()); + } + + // 6. 在Session中存储角色和权限 StpUtil.getSession().set("role", user.getRole()); - List permissions = PermissionConstants.ROLE_PERMISSIONS.get(user.getRole()); StpUtil.getSession().set("permissions", permissions); + if (roleId != null) { + StpUtil.getSession().set("roleId", roleId); + } - // 5. 构建返回数据 + // 7. 构建返回数据 UserVO userVO = new UserVO(); userVO.setId(user.getId()); userVO.setUsername(user.getUsername()); userVO.setRole(user.getRole()); + userVO.setRoleId(roleId != null ? roleId.toString() : null); // 转换为字符串,前端需要 userVO.setName(user.getName()); userVO.setPermissions(permissions); diff --git a/src/main/java/cn/zyp/stusystem/controller/RolePermissionController.java b/src/main/java/cn/zyp/stusystem/controller/RolePermissionController.java index 60583ee..95706be 100644 --- a/src/main/java/cn/zyp/stusystem/controller/RolePermissionController.java +++ b/src/main/java/cn/zyp/stusystem/controller/RolePermissionController.java @@ -14,24 +14,6 @@ public class RolePermissionController { @Autowired private RolePermissionService rolePermissionService; - - /** - * 获取角色的权限列表 - */ - @GetMapping("/{roleId}/permissions") - public Result> getRolePermissions(@PathVariable Long roleId) { - List permissionCodes = rolePermissionService.getPermissionCodesByRoleId(roleId); - return Result.success(permissionCodes); - } - - /** - * 保存角色的权限配置 - */ - @PostMapping("/{roleId}/permissions") - public Result saveRolePermissions( - @PathVariable Long roleId, - @RequestBody SaveRolePermissionsDTO dto) { - rolePermissionService.saveRolePermissions(roleId, dto.getPermissions()); - return Result.success(true); - } + + } \ No newline at end of file diff --git a/src/main/java/cn/zyp/stusystem/entity/Role.java b/src/main/java/cn/zyp/stusystem/entity/Role.java index 016e338..ab42e03 100644 --- a/src/main/java/cn/zyp/stusystem/entity/Role.java +++ b/src/main/java/cn/zyp/stusystem/entity/Role.java @@ -3,6 +3,7 @@ package cn.zyp.stusystem.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import java.time.LocalDateTime; @@ -13,9 +14,15 @@ public class Role { @TableId(type = IdType.AUTO) private Long id; - private String roleCode; // 角色代码,如 admin - private String roleName; // 角色名称,如 管理员 - private Integer status; // 状态:1-启用,0-禁用 + private String roleCode; + private String roleName; + private Integer status; + private String remark; + + // 前端期望字段名是 createTime + @JsonProperty("createTime") private LocalDateTime createdAt; + + @JsonProperty("updateTime") private LocalDateTime updatedAt; } \ No newline at end of file diff --git a/src/main/java/cn/zyp/stusystem/service/impl/RolePermissionServiceImpl.java b/src/main/java/cn/zyp/stusystem/service/impl/RolePermissionServiceImpl.java index cffadc9..b9c6933 100644 --- a/src/main/java/cn/zyp/stusystem/service/impl/RolePermissionServiceImpl.java +++ b/src/main/java/cn/zyp/stusystem/service/impl/RolePermissionServiceImpl.java @@ -5,6 +5,7 @@ import cn.zyp.stusystem.mapper.RolePermissionMapper; import cn.zyp.stusystem.service.RolePermissionService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -15,7 +16,11 @@ import java.util.stream.Collectors; @Service public class RolePermissionServiceImpl extends ServiceImpl implements RolePermissionService { - + + + @Autowired + private RolePermissionMapper rolePermissionMapper; + @Override public List getPermissionCodesByRoleId(Long roleId) { if (roleId == null) { @@ -52,11 +57,11 @@ public class RolePermissionServiceImpl extends ServiceImpl permissionCodes) { - // 1. 删除该角色的所有现有权限(使用MyBatis-Plus的remove方法) - remove(new LambdaQueryWrapper() - .eq(RolePermission::getRoleId, roleId) - ); - + // 1. 删除该角色的所有权限 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(RolePermission::getRoleId, roleId); + rolePermissionMapper.delete(wrapper); + // 2. 批量插入新权限 if (permissionCodes != null && !permissionCodes.isEmpty()) { List rolePermissions = permissionCodes.stream() @@ -68,8 +73,7 @@ public class RolePermissionServiceImpl extends ServiceImpl implements UserService { + + @Autowired + private RolePermissionService rolePermissionService; + + @Autowired + private RoleService roleService; + @Override public User getByUsername(String username) { - return lambdaQuery().eq(User::getUsername,username).one(); + return lambdaQuery().eq(User::getUsername, username).one(); + } + + @Override + public List getUserPermissions(Long userId) { + // 1. 查询用户信息 + User user = getById(userId); + if (user == null) { + return List.of(); + } + + // 2. 获取角色ID(优先使用roleId,如果没有则根据role查找) + Long roleId = user.getRoleId(); + if (roleId == null && user.getRole() != null) { + roleId = roleService.getRoleIdByRoleCode(user.getRole()); + // 如果找到了roleId,更新到user表(优化后续查询) + if (roleId != null) { + user.setRoleId(roleId); + updateById(user); + } + } + + // 3. 如果还是没有roleId,返回空列表 + if (roleId == null) { + return List.of(); + } + + // 4. 查询该角色的所有权限 + return rolePermissionService.getPermissionCodesByRoleId(roleId); } -} +} \ No newline at end of file diff --git a/src/main/java/cn/zyp/stusystem/vo/UserVO.java b/src/main/java/cn/zyp/stusystem/vo/UserVO.java index 7d8b50d..05833f4 100644 --- a/src/main/java/cn/zyp/stusystem/vo/UserVO.java +++ b/src/main/java/cn/zyp/stusystem/vo/UserVO.java @@ -1,14 +1,14 @@ package cn.zyp.stusystem.vo; import lombok.Data; - import java.util.List; @Data public class UserVO { private Long id; private String username; - private String role; + private String role; // 角色代码,如 admin + private String roleId; // 角色ID(字符串类型,前端需要) private String name; - private List permissions; + private List permissions; // 权限列表 } \ No newline at end of file diff --git a/target/classes/cn/zyp/stusystem/controller/LoginController.class b/target/classes/cn/zyp/stusystem/controller/LoginController.class index d2e96c71ffea994ffb2474f935087278b4559dd3..c7ed7d4f00f8d919d707522cb3e505297a3f5e93 100644 GIT binary patch delta 1312 zcmZvbTW}Lq7{`An-OX+{ONNO>U37+y7N=FA9i$c$EOHa7wbqtPAqqqqYG|5Zl2)+Q zh!;>)Dz5iC-cXB32PcAzKGqq=SA1}EeDO)&eX`c?B)#C}VbA$4|L=dk^FQBCUirsW z&V|3e{ua2E@p0$(KruuOD_m|Ns)+O@3!C%FTxT*jkjm#%*-Tz>O?~^`#89F!oyhbx zwr4Yav4%=uu#ieOwx{xin8QL=x`!$ykWn*_WEE zxu)Ic@}MrRo-VG4nRhA7h}n@Ckk;c2xjZy;%uMWnYw$3`e%@>_9#Jgv$Bi0)sU2!{ z7}0Gn<1v?mnrWWMxhdP9%xp=d2Ze8hCtRM?e72li&gkGFm%}{mPnyevM_iuexic-n zF*SewzXrqq#Tu)z_+aLCvjcMGi2Z|V4iF%Oi{g2izo6_#We@0K_)kn>mJy@=LFe+D zUYN$i0*;BTIS|B)__8aSc}cucAq!K5C9&W93rW{U9$puD*YPpic|+P8 zmHB&aR2}S delta 989 zcmZXSTTC2P7{`BSnY|CF1dWR!ToMcza44mUAZRbpqQG(~i`dpO;DF0z7k35}XuB=c zOY5~AudVl|rhQRKRtGavbt9E?Q}M?e>-I> z9vn*cb{!w+8tUsA9_~r@4=Wz%oiUe8W6?>^8GYtLdz?P{!z6VE7*rJhry5lhNsEfd z-J7axYKuB&W~Png#EdoRw1<%`OaA5brfny}h$6o5Pd|2;QAPRxT3^Z6>o~3%Dyzt{r1OTyjmQ~?v$Iyl11;;UuRyge8(#AT0#@R>~*q2dA%)|2yT)qu$TxYv;uE>;fWum0gZL? z(9J^y!H*;eF9yoI`w&=R@hk712K8V-e_rwBkv(1-mFPS29ro zcc==-OUl#j@6w zRw*v;HkTNW*B>Q&pqe6 z-`;!fIp<#KkNAr8EUI}QXV$&1{~osmhI-*r#f~+VeCkZHSl3|;&A~_8koXSh0GPltI;v#BNH*G z?;6>S`wditGwTRpTSh)$;Egge$B`HO1&a1f2HuRf1lo(?lE(TtqeTh&tp*;1rBEP; z>`vhH-F^7b?E*h#Fgil``Ox#Cf181~i(U(-BD#kR%tpF%bhhZu8kobw3Ps{(V{Ys& zI_}66Y6jkcchZroc6)W!U7^DnZnZLlbiu$mJgTsF-ClEM-R83GJy!P!YH}Z&9{2G_ zahLmkjQKTO)BmX1o+a{aK-^nRd{4u7E0`BL%!_sBa=l$&YB)2^rppbha|sH^=9k^| z%98D_*H_$5Wqosrmi9)Y)2`TETxHSbxY|mUG4E||&^LL!V_Qy?a{DV-nE70&>#a&H)WnzLQV?}t z%Ey?@eM(J z2n|7J#5eR6#b8`qRis0g*B0!JForVcFVq&!(m^$;&Q812;F&VyuU;FEma2_M>&lJy zmXI6o%{Jp>>CW+BE`{;?mRUSxaxsIB=(*%#3SJ1J6chfb>rhIg&W{GV;`G;!J*zN>I( zi?@=Tpy7M0LAQr8wgQjg01uxOj}7_c9R&*K*(K$=$+ld7bcE z-Xi>#R|mi4jlpkuAz(X33f_}A?h<I^d z;4Zy%`stUF>38pxUg|=ZUON5s%gMgqyHk28H(h#j3;jy+?C;zuy;QL-y>$9#@8E+; zTYJ||>7_V!>F?P>e+8>a^aplIFEzJIf8Q2*eoG4IQ_nG`cd?|-O-=q7ne>gR-$8#7 znV}m~uRvcoI(ZX^{4Rxwb4U4MrH}mq1vC9BMz6y-W~OiAScEukWe7QLWzCFWvah0i z9Yr%^W@DfemPXJCOE)zE=^;on^%&@+l_Th+l{a$&%7>twnU8_0R)L_ZWtas486k*L z3^Z*O37WQs&7y#YLr~Eij)7*Z5rSr{k~t!vQV1F`OEJ(HYm}ffR@odCP&ovRn&k+T zzQIZ`6gz-|lkAni!%^K(bExAgw`WW}fHj_ODSl%n zPg5G^0Xv5eQ5sQMemC8uR8og{4|s;ssG7n)e3()hAK|)|uus$fjbRP?YuKY9#eZGB zhC2c=_kR$hQdb`c*tGmq5az>!bet6Gj6|yVJAU8?{toJNbaRk9#2Q!8O^3Asb|v4R zNyB@|&_T8ZlK!JqJ(WJ~2mSt1b(JBnm!_^mJ9ZO~JSqC)R$2^ZI<)AL2!ZK@mGMo? z0e_HgW+Kx`E9;xGT@y1S7*(}2-^8Q{M`@91+R}ZK-Ze2*f>AS8&Nnej!cn=%bjHg2 zrhM1L+~KJG$w9gitUCq~Upn?q@0K_z8c7`5dJjeviHQJf*w@mHGurx2Q;K(3N5!L8)7O zL9d?@#TYUXAi|{kRUs@JgY}Su+7PVugM0V{LpVg=GNd;u*%l7u4}ZY|iI4yL>rKn= zg30D^c>Z>E5t0;MpQOjL4Tw|&2jLgGx5M+?XSuQ;mbBq>l24V-G@s*qX84@o zbLM5t1A~{f_@)1F!lgfrFZ#*;tpBB?z&Cw~&vR{j8DF76Uj00uZ?X!4!No6%coE-+ F`Cld3@y!4L literal 4946 zcmbtY+jARN8UL-U)vlzKE!%NYH73NV3b7qmq!36~iJ^6Kak0}7rw(oDWi4-Q#nP^; zUAeei%KcIjwuDXTFbV4`+8mG63w~o*Bg~5>8<8S`H+D! z9_E~DmUH3Nw$)HDaWcUgCagOBoPa-S;3TFMs2jGw$SjPVoK8T4JV@$i4V)6rj4gzo zL_T7mf{!W4GIAxF{6tT5JbghwYT)Degn~TLlJqc_hkEc)HU<7k1D}fFSEGcA|1krm z_%+g8V@}0)&Y(ad-xa1+e4jS(89c6_K-@wiVV&hAQ{Rzsile* z$Edwa1}ZQ{*>ZP|YB`*eS`KHBFDJiB_uX(uxqub7-KyCa>#~}xZ2u!tiWQV1#jOs|TV<){ zHY;nE+pMp zl2&#~+Hh~h>h9Tjh4+N9=m>S{s8T_98950RM?k@SKt7mLO;>)zC^qn2M~?+6OHUk z#M^WL(V>2#;=V+@f(H;C=_eZ9mxwPF1Bf2%CmP$Ah%W#Gh>rCWjqgkJIb6d~pd*un zqRY(8>|4+V3+Zr(h=e2}69p?+VVugli*oH%*L6HIh`w-8dN~*!dg=7iuMVakJt)1L zw+_8@dg*TrrayF0dO5}&dg=7ie||9ik%Q7pb?DGbrnYo}ja)QOXO*h(NRwpsHCQsA>+E3IZCA zK!wt90yJ-q5HxQVOCtg*Mxc>WF$SgY@DvUuYIa!s?}W*V&#W?q7w{r8KcN_Si5EhO zzo_ovW%`CNgMY%JmBuCf4QsSi#{CsFS{XF(7S?HLXyG@oY3cYWeu7tMW$`n-i49sg z+{G3)Y31=pqUy8^{2do@lU4!$;IEf0TEo1wrpWmsMwASWqDiX=hikZj2Q>X(7}lWQ z!(rZ&{L__t^af`3e>LMW^+KQ6((;=!((+@>j8s8YR3-^cUV>pl!y+h&k=v9|rcn|a z6~UMK*cJKtMH=4Kso%5BG332s^<4UVAlS)bb(3<{i?g?(&E3TlFN=T9Ov^wi9gXNB z;&AA+sRl#TZxE!H)OhHOnF)q6ogu0^j5=#-!4L%GBbpC;bNPaQ7MF1Y02W>rg%hZ58;>aXr(dF_fnshif1XCHmwZ% z%h;i%;T9gnYqWIy8b|O&T3Hc^vVq|b=tyhO6-C~q6y*cbcKa!DOhAnRF(%#XieQ-p ztc&dTMqsTM+{F(Vh(h!|A>F9KV^JXg(-SU`_~c)(-n9H9Xz*|pp8GH3-EY4if+T&H z%5LXXXo;I6@0}+^#(YlmIm72HpDLd@KJ)MJ*rWfgB>7T$A`(mT>Pq8v@}}@5e3@;Y g-|`hcU-j??zD9@6&e!>T7vE8PAv*ZEy~R-F3!x)D`sR+((uVjEKAhS zNz6;v_sP#ox7LIRl$K=X==)?Amsm40u$2O}d8RNja0X|l=Ovbu7Ns&Wm=V-zgJg7Y z342i{&~!WNiJzuBGO;i+urqKl08IqCkCl;ui-7?s#Ld9NzyuTG1lsEGaEYot(!wU5$~2k%66ogMpEO6R3uj Tk%0?HF)?t1Ngf7XFwF-5sgDeI diff --git a/target/classes/cn/zyp/stusystem/service/impl/UserServiceImpl.class b/target/classes/cn/zyp/stusystem/service/impl/UserServiceImpl.class index 49061b722d6b3647bbabc4d038613cd5a81cb938..fff0bf8d93268968ad31f3bbac52c8bb4eef75aa 100644 GIT binary patch literal 3982 zcmb_fX?Gh}8Gf$3j4V&QD2YoNQ|#7FY{mA3l(qpShS(&;jpD>{>W~%+W9i18cr>HT zjGQR!TUiTXC#+>HP?i*mOUpUXPw6>);0N$eIHz!U?#xIUSBl98e2!-B-22{ldEV!~ z_x0cZ^U7ZV9L1k9NTEYRr;aXk3*?J#*;p~%vQ=`cM!B|P29{s3tG*$x1=8^?*D-wQ zZCFKVSmlasEJYvl91Ceu{0mbdD8 zoLaZ&>b1@CO37TTO0OnxW_+S>7p@gur(^|m(l@TCjYgrVWNyv0oC}^=sYoxMW%PYI z`Y|BT#VMOM^4r-cx}G!w*R|KJ!0@Y;it7c&(ut~5ROa#-WU*7jE*-luByj5g=&L|V zUJ*DvUbt*-n1*dStHzm?%d!~cTW2O(r<7}N(y<5kGB2(p1$Hse7F`;K1%_LaB%Qzt zYKBUWO6Yw$-hvSUZB+)dwfT}jF80fE6&Ebiwyv8iw#>IN(Tn@>fQB(04`QD{U+6$w=_jzS&;kR)4>_;&#d7&xybTX)ctppeI4m%BH=6`@HUgNf zDQ$CZi5`w6vl}~@M6eOuJ9Ol6ggE$39Cju*hmz6ho6+%3yh|Wct(43_M)}&E6pnc` z@q_|nR>vIPEwEdGaaMX|%U9>U0n5SdVQJYxfKK2&8cyn%$72H1+XB?GUEp3q)tpv9 z`4MI+`S&N|h=Ptto#agcr!_3-IHUM5+T^_DY`E*PL0DOe>V&``O{!XUS_W%wX~8VZ z3>I-t!;+5kcwAthsU%91Kzhye*P=AC?#-uhfrO$Sb!MDc!$loWs8n>zD^=6>GbrGF zI^M4|ZZ&zza!P9T13EsaoZd@C^(tf9^G+bWOJ-5d*{1KOu_Ey39ZSvjB`bpxE@~k6 z5+Ox=Q1(}KtSS2=?d>=5NuyuMuj{at{Da%cFIlUO8B{%)hQni)%wU~~t%XTxujsg< zwCmKa(i4Y2tkwb@Rkb!0uSKpUOigRJM!qx?H*ec=)wGX!tJN~=+wp5fSy5Fyjq3vU z%{v<`Vx^Jj{uv?Z>SayIWN;N9R+r^Rcu#Z9r(&Xhv3Ir~%H?y(9I93hZtClBAd4bM| zjr|47kqg!GiuBH_n#_t>aEqqBY_d-CJD%(e)-2jH?tHw%n?B*VN&(I6AmX#NI?V+R zwZo%TYvM|wl5{mbCd#{Jj$$~;&M2Q}O$7njPfxS7tE@I_11Gzc9#t3y5?aE#Ks?kM zQ~SSs=~k6b>DaLpn8o$eW+jA3!#C=;RpX{%1#VDG;E`nHZHv*7gjaEFGmL)cSd(8e zDnesC(@AxAs8#JQSfUWIR^Wkzy*p_TcDn^W8lpyXf;{!-qn0Byb;^{WIi)@@Uosup6v4ZQa zS1ZZpEha>3%A$?u>3jak#A=&j8GATq+V+wa$ov4D{x1AVwNAg*aRJi<_)U01TQ1>b zK9Vg*Y@~yoa+i95<#*n3q!$)n>1%j_<-U1hV-MQJs^O13ecOwYyAd!LWiOJVwU6?d zQY{I`AE*6pzCXctO7(1SnCs*>|AFE2law&{7JPT*UV?Zb-0~?t)iT)gf0|D{62NEh zG`|Esi_cN9+I$Kf90B*_Hle+O9l(K248Dr&ChmC^dv9?mg{Hbap}L`HORSEY@p*iK zYQIS7F2N6F<4bsqx|NN8QoNJz#T<3NnOaXzz6R~j7`-*QiTw*xuVFt22X12|_aY26 zd>Id=urPHSeUnq0czcd>M=ww=+(e;cQ!nFq3d*~V(7Qtn5p33bFv1u{G03KS2>UqN zPkbiu5OO$-1DL@<%o5QPcsPtC7dh65WD(Ec%XGd6C-D{BpyNaAK)=el4t$Lk`qA+^ z1~u$`9g`ZquGK?+hHKyCFNJRnWbkc#hdNZ~|KL7FryGR#R3UYg0GxfE-^2U~yW@6& z@4*Avr#QZxEr;V# zj@_&mj(2nHXE(xePng_- delta 905 zcmZ8fOH30{6g{u)blT}uVZz78IzY>3S}0Zg0AfW!RHTSnKtKhjFqT3o&=&mLt!@m- zTd{Me#*J)Bf{DhBCN5mMW#!U^apl6#ok|pG^4>Z3o^$WJ?@b?9{VJC}{M>jAAcFjw z6tcKfREemTQ3D_UW^3bLER}8vwWt$OFQWk(Zxia{K?YaC$PHzUOj@5aOhc255Skh6 z#^REm$}*H|(HVVN52y5WB0LbEF(z{zfiVdx_RBZ`jiHoU^v*4$`i@QPLEbvHJEdo{4tUM_vod;3t>V9tV#!2W&n;yP2Ye!;{Hwizo#!6W@9)C} z83HcuxMnPuNv0DWfngCbJ|PD9rnt!;IrFMJmeVI^`}KuEJ)SZcoPS$0JdM&F{X8T+ z=MP0M|0H$pnw5~koQSlHc`R_h>up8XZUI>ddy$h7gs%k43@sX;b*Oxg+-$qcP{+qz zb#@W=8C0Sw=du#LMBmm5Mzh*!AEYQu$OwhtI@lT!3x;SnWkA9(?eZT3E@OluhEa@> zYmj@~TK=EcUG!Fv0#t5!O?CxWspcAG1x5i%B#dK%Qs(I&X&NixO0a-^QA?z;0RIb$ zy|h@$`YuXX+NcByXk3M0jd)Fwe&e*v0rO^1M#W*r6Z8c(-!8$jgbJQO*^)a|3SReQc_5)rK zwM;7ePX8JKlO$O%1*3>JkRUXlbDA(otAzLr`4*AE5^mxaZc|pG>>b?019*M|k|nIp diff --git a/target/classes/cn/zyp/stusystem/vo/UserVO.class b/target/classes/cn/zyp/stusystem/vo/UserVO.class index 182317bb49b11d8e1831c04a4ed799abfd65b641..a3688d0217d93ba7ee548bff9b985cf0eedaf43f 100644 GIT binary patch literal 4484 zcmbtY-*X#R75-M*)vlzKW4m!uB_{NT)A~nT1p|Tg!LxB=i8}_Y+_crYCB{w9<3qsoqnbkMb*@{w-N=dS$|Hm_! zYC6{mF|)DiZhCgu?QqgF@q79a7Y@GnVx3Zomw2SEt|lv+ITKj??h=+`wh@CC~FiJB*b#*=+ke>;87_1;=wbcIdPi z@>H+*hs{?DVzoVTAk%YeRP~AzZuzYnc8Apuoet+(X23vXLvl{?CV@IpqAlhyu|(41 z6&+DMw1(8vdw+kvb)h-d97@{$ZZC09C)4f2Gs__qia)&llRd|M=7(EOhm(>T%t$ve zB2Q#iBIlrijKxC(M==6On@~`S2jhowe?V4j4u<40j*9nZ5*0s;M^Qr^Wg-q8@>Nzt zdt-aW-c9tQ-MHCUxy(g2q-Qxnx6PKCk5*8e8BA82iRY$AcbSMb6TjD-8R9oWKQ1B{ zwd!{}8_pG1R#=vbuU&sex-C`lyzhrW*s*tGc?3ra*el^%__mIH+0$=uy9^q$>+Sj5 zPAw*mxA_%&BlJ7_3f@V}E&;}*S8cD=c7mCv?{9Z^>j!sR$}<#riz>;0zmmfD`fkdV zP%PW+_Np5?bpvlIxD+pY)@>~*XCCY2Q*6m+@7{<;C7d!xXPzSGWsRnS$&*7K=dB; z-*7O80g-Vi5zn;@qRJ>y@lYb3co{?!qeP`ciFizA5FH&QDj!P3lQo0r_$ZNiC=rii z$s6cUwK%1(RH6*9){_^l1)GHu=KKB`tb-?O!T33}{Jn)g!dN*oe;=o!M;cFDJHro4UHmi3RrNzm+=aPV zRqx}e9%9bY2${1ARZTF34>5Tcm8w=Pq(F<7PSB!dRCNIv2}rLRDbQJ~NYGiUR4odq zlz@uWQVMj=Did_hGOJ|)nF)wi3UuD85Om%et5yUwmVheNu^vdhmznN&;=J^C(gVDV zuQIt)_$O|&%jVcu|AtrS%VQpY#jCVbqTk2YXldNFzsA>T70|{{@C{lzI`|P@qh;Wy z*oIB3h@Zj1I;|4!vnOoOD&zNf4lP~_z1^z z_NqE(Y@Y3)~_=nV_20p5DX0Jd literal 4016 zcma)8YjYdb8Geqmt6fR!#4)*`Bv4vRu;my9dI6+3Z7>PAm6H$$(?Tz-<;C7u-Zk2l z!F=mXr_-Td;1f)LK=UP?X$MGW7={5p(3$=Len9&(xIOQlm9&xt&Wz>rp7%WObIyA^ zXaD>4haUr2z+MSCx~PHj~*`d)%0PQNRy4_#u9zU~YKv5*?YEnaw~GS0r}R z4jvNDf+vKLSU&7v2D3a7EhQG(!J|X=sfz-ib8uGR7U9?FrRW}UQ0wWg&{5Gn>fkZ_ zSm6+H*RsC$PnPvIho3t586Ky%n{KqZ7_KwO%;3@#^ZulRIvNTmw%sjnF$`L6{DL17 z6hyHb#Ejp~Y+Mp&GtQ@nzkAK#VA&X^Gz!HPe^!=p~Fo- z@UC>X*SyXRcdeb&QP^_Zt8T}ad8#zxO`lGkZhm*UlJnH{ZV>z1-cqpZM?S4D20<9R zv9748W;@(o3%6>|c!Ae(V{e@%XL?CJ=)7j6tLUD6ah+XdwJv+{X1IRM?J(D|*Wp>q zG#C`mP?@H26GMwAsTnOvrLaDz8>)}qp8Yd6#PoP`C{TMlyn@)hvN%0Bk2$TkH>dS(&h!wg9fvw2 zJnc%@?X07<}h}?fn@l#=pm08s7l>kIqd@!x zYHFM*j%M}WQ2$CGKj;5KqO|Y}%8mx$BA()GFjB021LaJiTKov zA(|K^Dji6~M`#Sukx`=Zfkb?{#tiBY17F+@6Nmqvnq8PBAI zb)GOM38~I~0Bd~uj%!4kK1r?Ai^8+CGuhuPlHr^#;g{p+C+?PB%CJu_lVSQ_ji*0y zxAaooeR`P;(>KS{AH7?8X_`L0Oor)~aRo+_%w{(BCxkwqsd(Kw`(v+r@hZ`}tqT0? zTNrFu;f6Zt*G4wx=b6rm`h*)#kl>5C>fd1+x92{E{WqBT+jF15UOrpBgHy?r!Vj*T z<-fWy{~weq#^*S43(kDSxPu3Kh%};oHj;nRF88bW3p|JG zjN37Mh812+{Dj4OxItYWRr~|bQ!>~mZ()^^iDkTr7bx+$!WMo_$wCJnenZK|+qjGu zDHZV!yYMASCEVfV_FGD2e1uc@9VG|9=h-e|%Cf)2Aq)0bIBp@wKU;l;d$m|RSnRdl zb0gJd$aj6(dQZ|f>1!&_hdpQBCEzfLyJ z8w*LHoStlKvP|sBxm&R2@8Bmdi~daAkcEnouGmsMdZ}7BlO@(oVq{m$-qL)%kSrDY zOROesb*^qDODv?+%1V|_k59WKhsR8P%;PWk174<&CjJbUQjUrGBi8759uHy@ElSd! z%UGvmGQE#6$&&UMC-4d-D@o%2Q2K@n!-B0869=WfA;n;x6U8x@JwOj*469ODAp;vA zN3|)~8U_#WV-`{qd!Na`YWx}vM=p?!{(JT`10!$#NlCmUnZGK3^ZcFr5KjQ3Z&UU| i;AEPN?7f(0=%qw`+~jDJeT%