From 53b0b8613081cfe0ba339fc45d1b0650910c1b58 Mon Sep 17 00:00:00 2001 From: "wei.peng" Date: Fri, 23 Nov 2018 14:27:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BB=A3=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/api/iservice/busi/ISysUserService.java | 38 +++++++- .../controller/busi/SysUserController.java | 12 +-- .../serviceimpl/busi/SysUserService.java | 105 ++++++++++++++++++++- .../src/main/resources/init/permission.xlsx | Bin 40838 -> 40942 bytes 4 files changed, 143 insertions(+), 12 deletions(-) diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java index 581380e..a1e5cb9 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java @@ -126,6 +126,20 @@ public interface ISysUserService { SysUser getSysUserByLoginName(String loginName); /** + * 根据手机号查询账号 + * @param email + * @return + */ + SysUser getSysUserByEmail(String email); + + /** + * 根据手机号查询账号 + * @param phone + * @return + */ + SysUser getSysUserByPhone(String phone); + + /** * 查出用户角色关系 * @param userId * @return @@ -138,5 +152,27 @@ public interface ISysUserService { * @param id * @return */ - boolean checkLoginName(String userLoginName,long id); + boolean checkSysUserLoginName(String userLoginName, long id); + + /** + * 判断邮箱是否存在 + * @param email + * @param id + * @return + */ + boolean checkSysUserEmail(String email,long id); + + /** + * 判断手机是否存在 + * @param phone + * @param id + * @return + */ + boolean checkSysUserPhone(String phone,long id); + + /** + * 用户唯一教研 + * @param user + */ + void checkSysUserOnly(SysUser user); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java index fbfd4ca..eb6915d 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java @@ -72,6 +72,9 @@ public class SysUserController extends CoreBaseController{ .build(); } + // 用户唯一校验 + sysUserService.checkSysUserOnly(sysUser); + SysUserInfo userInfo = sysUserInfoService.getSysUserInfoById(sysUser.getUserInfoId()); if(userInfo == null){ throw ImppExceptionBuilder.newInstance() @@ -126,13 +129,8 @@ public class SysUserController extends CoreBaseController{ .build(); } - if (sysUserService.checkLoginName(sysUser.getUserLoginName(), sysUser.getId())) { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) - .setErrorDetail("用户名已存在") - .build(); - } + // 用户唯一校验 + sysUserService.checkSysUserOnly(sysUser); // 用户信息封装 SysUserInfo userInfo = sysUserService.getSysUserInfoById(sysUser.getUserInfoId()); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index a6dafe0..7fb2785 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -17,6 +17,7 @@ import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; +import io.swagger.annotations.ApiOperation; import org.apache.shiro.authc.AuthenticationException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -24,7 +25,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; /** @@ -73,6 +73,7 @@ public class SysUserService implements ISysUserService { private SysPositionRepository sysPositionRDao; @Override + @ApiOperation(value = "用户登录", notes = "用户登录功能实现") public SessionUser queryUserLogin(String loginName, String password, String languageCode) throws AuthenticationException { LOGGER.debug("平台用户 SYS_USER loginName:{} \t password:{} \t languageCode:{}", loginName, password, languageCode); @@ -96,6 +97,7 @@ public class SysUserService implements ISysUserService { } @Override + @ApiOperation(value = "修改账号", notes = "修改账号状态") public void updateSysUserStatus(Long id, int status, SessionUser user) { LOGGER.debug("平台用户 SYS_USER id:{} status:{} modifyUser:{}", id, status, user.getUserName()); SysUser sysUser = sysUserRDao.getById(id); @@ -105,6 +107,7 @@ public class SysUserService implements ISysUserService { } @Override + @ApiOperation(value = "修改账号", notes = "批量修改账号状态") public void updateBatchSysUserStatus(Long[] ids, int status, SessionUser user) { LOGGER.debug("平台用户 SYS_USER DELETE By ids :{} status:{}, SessionUser :{}", ids,status,user); @@ -121,12 +124,14 @@ public class SysUserService implements ISysUserService { } @Override + @ApiOperation(value = "修改账号", notes = "修改账号信息") public void updateSysUser(SysUser sysUser) throws Exception{ LOGGER.debug("平台用户 SYS_USER SysUser :{}", sysUser); sysUserRDao.save(sysUser); } @Override + @ApiOperation(value = "修改账号", notes = "修改账号登录密码") public void updateSysUserPassword(Long userId, String password, String newPwd) throws Exception { LOGGER.debug("平台用户 SYS_USER Override:{} password:{} newPwd:{}", userId,password,newPwd); SysUser user = sysUserRDao.getById(userId); @@ -154,6 +159,7 @@ public class SysUserService implements ISysUserService { } @Override + @ApiOperation(value = "刷新账号", notes = "刷新账号登录信息") public void refreshUserLoginInformation(Long userId) { SysUser user = sysUserRDao.getById(userId); SysUserInfo userInfo = sysUserInfoRDao.getById(user.getUserInfoId()); @@ -168,6 +174,7 @@ public class SysUserService implements ISysUserService { } @Override + @ApiOperation(value = "新增账号", notes = "新增账号信息") public SysUser insertSysUser(SysUser sysUser)throws Exception { LOGGER.debug("平台用户 SYS_USER SysUser:{}", sysUser); @@ -188,6 +195,7 @@ public class SysUserService implements ISysUserService { } @Override + @ApiOperation(value = "新增账号", notes = "新增账号信息") public void refreshSysRefUserRole(SysUser sysUser, Long[] roleIds, String userName) { LOGGER.debug("平台用户 SYS_USER SysUser:{}", sysUser); LOGGER.debug("平台用户 SYS_USER String[] :{}", roleIds); @@ -230,6 +238,7 @@ public class SysUserService implements ISysUserService { } @Override + @ApiOperation(value = "删除账号", notes = "删除账号信息,逻辑删除,账号关系业务物理删除") public void deleteSysUserById(Long id) { LOGGER.debug("平台用户 SYS_USER DELETE By id :{}", id); sysUserRDao.updateByProperties("id", id, "isValid", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); @@ -241,6 +250,7 @@ public class SysUserService implements ISysUserService { } @Override + @ApiOperation(value = "删除账号", notes = "批量删除账号信息,逻辑删除,账号关系业务物理删除") public void deleteBatchSysUserById(Long[] ids,SessionUser user) { LOGGER.debug("平台用户 SYS_USER DELETE By ids :{}", ids); @@ -258,12 +268,14 @@ public class SysUserService implements ISysUserService { } @Override + @ApiOperation(value = "账号查询", notes = "查询所有账号信息") public List list() { LOGGER.debug("平台用户 SYS_USER find All"); return sysUserRDao.findByProperty("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); } @Override + @ApiOperation(value = "账号分页查询", notes = "组合查询") public ListPager querySysUserByPager(SysUser user, Pager pager) { LOGGER.debug("系统用户 SysUser find user :{} page :{}", user, pager); @@ -274,17 +286,20 @@ public class SysUserService implements ISysUserService { } @Override + @ApiOperation(value = "账号查询", notes = "根据ID 查询账号信息") public SysUser getSysUserById(Long id) { LOGGER.debug("平台用户 SYS_USER get By id :{}", id); return sysUserRDao.getById(id); } @Override + @ApiOperation(value = "用户查询", notes = "根据ID 查询用户信息") public SysUserInfo getSysUserInfoById(Long id) { return sysUserInfoRDao.getByProperty("id",id); } @Override + @ApiOperation(value = "账号查询", notes = "根据登录名查询用户信息") public SysUser getSysUserByLoginName(String loginName) { LOGGER.debug("平台用户 SYS_USER find By Login Name :{}", loginName); return sysUserRDao.getByProperty(new String[]{"userLoginName", "isValid"}, @@ -292,12 +307,28 @@ public class SysUserService implements ISysUserService { } @Override + @ApiOperation(value = "账号查询", notes = "根据邮箱查询用户信息") + public SysUser getSysUserByEmail(String email) { + return sysUserRDao.getByProperty(new String[]{"userEmail", "isValid"}, + new Object[]{email, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()}); + } + + @Override + @ApiOperation(value = "账号查询", notes = "根据手机号查询用户信息") + public SysUser getSysUserByPhone(String phone) { + return sysUserRDao.getByProperty(new String[]{"userPhone", "isValid"}, + new Object[]{phone, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()}); + } + + @Override + @ApiOperation(value = "账号角色", notes = "根据账号ID查询账号角色关系") public List findSysRefUserRoleByUserId(Long userId) { return refUserRoleRDao.findByProperty("userId",userId); } @Override - public boolean checkLoginName(String userLoginName, long id) { + @ApiOperation(value = "检查-账号登录名", notes = "判断账号是否存在") + public boolean checkSysUserLoginName(String userLoginName, long id) { int count; if(id > 0){ StringBuffer sw = new StringBuffer(); @@ -311,6 +342,74 @@ public class SysUserService implements ISysUserService { return count <= 0 ; } + @Override + @ApiOperation(value = "检查-账号邮箱", notes = "判断邮箱是否存在") + public boolean checkSysUserEmail(String email, long id) { + int count; + if(id > 0){ + StringBuffer sw = new StringBuffer(); + HqlPack.getStringEqualPackOr(email,"userEmail",sw); + HqlPack.getNumNOEqualPack(id,"id",sw); + count = sysUserRDao.findByHqlWhereCount(sw.toString()); + + }else{ + count = sysUserRDao.findByPropertyCount("userEmail",email); + } + return count <= 0 ; + } + + @Override + @ApiOperation(value = "检查-账号手机", notes = "判断手机是否存在") + public boolean checkSysUserPhone(String phone, long id) { + int count; + if(id > 0){ + StringBuffer sw = new StringBuffer(); + HqlPack.getStringEqualPackOr(phone,"userPhone",sw); + HqlPack.getNumNOEqualPack(id,"id",sw); + count = sysUserRDao.findByHqlWhereCount(sw.toString()); + + }else{ + count = sysUserRDao.findByPropertyCount("userPhone",phone); + } + return count <= 0 ; + } + + @Override + @ApiOperation(value = "检查-账号唯一", notes = "账号唯一性校验") + public void checkSysUserOnly(SysUser user) { + if(user != null){ + // 登录名唯一教研 + if(checkSysUserLoginName(user.getUserLoginName(),user.getId())){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) + .setErrorDetail("用户名已存在") + .setErrorSolution("请重新输入用户名") + .build(); + } + + // 登录名唯一教研 + if(checkSysUserEmail(user.getUserEmail(),user.getId())){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) + .setErrorDetail("邮箱已存在") + .setErrorSolution("请重新输入邮箱") + .build(); + } + + // 登录名唯一教研 + if(checkSysUserPhone(user.getUserPhone(),user.getId())){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) + .setErrorDetail("手机号已存在") + .setErrorSolution("请重新输入手机号") + .build(); + } + } + } + /** * 封装用户登陆信息 * @@ -456,6 +555,4 @@ public class SysUserService implements ISysUserService { } } - - } diff --git a/modules/i3plus-core-apiservice/src/main/resources/init/permission.xlsx b/modules/i3plus-core-apiservice/src/main/resources/init/permission.xlsx index de22f2584ed6bb8e1d1f93fde164e7fc984128c1..19fd927027c639c3ac8091acd336c6513890dd32 100644 GIT binary patch delta 22518 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 e?pS`wRR<6VK%xPAK9i!~X@vR2Ccn delta 22422 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