From 67e8a1c12ccb42b82704d989c71607d0cbe33356 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期一, 06 一月 2025 11:45:00 +0800 Subject: [PATCH] 最新版本541200007 --- server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java | 307 +++++++++++++++++++++++--------------------------- 1 files changed, 140 insertions(+), 167 deletions(-) diff --git a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java index 506b502..b4adca4 100644 --- a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java +++ b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java @@ -140,19 +140,9 @@ @Override public LoginUserInfo loginByPasswordNew(LoginDTO dto, ServerHttpRequest request) { - SystemLoginLog loginLog = new SystemLoginLog(); - loginLog.setLoginUsername(dto.getUsername()); - loginLog.setLoginTime(new Date()); - loginLog.setSystemVersion(systemVersion); -// loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp())); - if(request!=null&&request.getHeaders()!=null && request.getHeaders().size()>0){ - loginLog.setIp(Utils.User_Client.getIP(request)); - loginLog.setPlatform(Utils.User_Client.getPlatform(request)); - loginLog.setClientInfo(Utils.User_Client.getBrowser(request)); - loginLog.setOsInfo(Utils.User_Client.getOS(request)); - } - loginLog.setServerIp(Utils.Server.getIP()); -// if(isDebug == null || !isDebug && dto.getCheckCode()){ + SystemLoginLog loginLog = getInitLoginlog(dto.getUsername(),request); + + if((isDebug == null || !isDebug) && (Objects.isNull(dto.getCheckCode()) || dto.getCheckCode()) ){ // 鏍¢獙楠岃瘉鐮� try { captchaService.check(dto.getUuid(), dto.getCode()); @@ -161,49 +151,17 @@ loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); loginLog.setSuccess(Boolean.FALSE); systemLoginLogService.create(loginLog); - throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT.getCode(),"瀵逛笉璧凤紝楠岃瘉鐮佷笉姝g‘锛�"); + throw e; } -// } - // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞� - SystemUser queryDto = new SystemUser(); - queryDto.setUsername(dto.getUsername()); - queryDto.setDeleted(Boolean.FALSE); - SystemUser user = systemUserService.findOne(queryDto); - if (user == null) { - throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); } - if(!Constants.equalsInteger(user.getSource(),Constants.ZERO)){ - throw new BusinessException(ResponseStatus.NO_ALLOW_LOGIN); - } - String pwd = Utils.Secure.encryptPassword(new String(dto.getPassword()), user.getSalt()); - // 姣旇緝瀵嗙爜 - if( !StringUtils.equals(pwd, user.getPassword())){ - throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); - } - dealOpenIdBiz(user,dto.getOpenid()); - Company company = new Company(); - if(Objects.nonNull(user.getCompanyId())){ - company = companyMapper.selectById(user.getCompanyId()); - } - // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅 - List<SystemRole> roles = systemRoleService.findByUserId(user.getId()); - List<SystemPermission> permissions = systemPermissionService.findByUserId(user.getId()); - - SystemRole rt = new SystemRole(); - rt.setDeleted(Boolean.FALSE); - //鏁版嵁閮ㄩ棬鏉冮檺闆嗗悎 - user.setCompanyIdList(systemDataPermissionService.selectHighRole(new SystemDataPermission(),rt,user)); - - LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions,company,null); - return userInfo; + LoginUserInfo user = dealLoginByPwdNewBiz(dto.getUsername(),dto.getPassword(),null,dto.getOpenid(),request); + systemLoginLogService.create(loginLog); + return user; } - - - @Override - public LoginUserInfo loginByPasswordForPda(LoginDTO dto, ServerHttpRequest request) { + private SystemLoginLog getInitLoginlog(String username, ServerHttpRequest request) { SystemLoginLog loginLog = new SystemLoginLog(); - loginLog.setLoginUsername(dto.getUsername()); + loginLog.setLoginUsername( username); loginLog.setLoginTime(new Date()); loginLog.setSystemVersion(systemVersion); // loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp())); @@ -214,6 +172,57 @@ loginLog.setOsInfo(Utils.User_Client.getOS(request)); } loginLog.setServerIp(Utils.Server.getIP()); + return loginLog; + } + + @Override + public LoginUserInfo loginH5ByPhone(LoginPhoneDTO dto, ServerHttpRequest request) { + isCaptcheValide(dto.getPhone(),dto.getCode());//妫�鏌ラ獙璇佺爜 + SystemLoginLog loginLog = getInitLoginlog(dto.getPhone(),request); + LoginUserInfo userInfo = dealLoginByPwdNewBiz(null,null,dto.getPhone(),dto.getOpenid(), request ); + systemLoginLogService.create(loginLog); + return userInfo; + } + private LoginUserInfo dealLoginByPwdNewBiz(String username,String pwd, String phone, String openid, ServerHttpRequest request) { + // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞� + SystemUser queryDto = new SystemUser(); + queryDto.setMobile(phone); + queryDto.setUsername(username); + queryDto.setType(Constants.memberType.internal); + queryDto.setDeleted(Boolean.FALSE); + SystemUser user = systemUserService.findOne(queryDto); + if (user == null) { + throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); + } + if(!Constants.equalsInteger(user.getSource(),Constants.ZERO)){ + throw new BusinessException(ResponseStatus.NO_ALLOW_LOGIN); + } + if(StringUtils.isNotBlank( pwd)){ + String pppp = Utils.Secure.encryptPassword(new String(pwd), user.getSalt()); + // 姣旇緝瀵嗙爜 + if( !StringUtils.equals(pppp, user.getPassword())){ + throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); + } + } + dealOpenIdBiz(user,openid); + Company company = new Company(); + if(Objects.nonNull(user.getCompanyId())){ + company = companyMapper.selectById(user.getCompanyId()); + } + // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅 + List<SystemRole> roles = systemRoleService.findByUserId(user.getId()); + List<SystemPermission> permissions = systemPermissionService.findByUserId(user.getId()); + SystemRole rt = new SystemRole(); + rt.setDeleted(Boolean.FALSE); + //鏁版嵁閮ㄩ棬鏉冮檺闆嗗悎 + user.setCompanyIdList(systemDataPermissionService.selectHighRole(new SystemDataPermission(),rt,user)); + LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions,company,null); + return userInfo; + } + + @Override + public LoginUserInfo loginByPasswordForPda(LoginDTO dto, ServerHttpRequest request) { + SystemLoginLog loginLog =getInitLoginlog(dto.getUsername(),request); // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞� SystemUser queryDto = new SystemUser(); queryDto.setUsername(dto.getUsername()); @@ -290,20 +299,7 @@ @Override public LoginUserInfo loginByPhone(LoginPhoneDTO dto, ServerHttpRequest request) { - SystemLoginLog loginLog = new SystemLoginLog(); - loginLog.setLoginUsername(dto.getPhone()); - loginLog.setLoginTime(new Date()); - loginLog.setSystemVersion(systemVersion); -// loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp())); - if(request!=null&&request.getHeaders()!=null && request.getHeaders().size()>0){ - loginLog.setIp(Utils.User_Client.getIP(request)); - loginLog.setPlatform(Utils.User_Client.getPlatform(request)); - loginLog.setClientInfo(Utils.User_Client.getBrowser(request)); - loginLog.setOsInfo(Utils.User_Client.getOS(request)); - } - loginLog.setServerIp(Utils.Server.getIP()); - - + SystemLoginLog loginLog =getInitLoginlog(dto.getPhone(),request); // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞� SystemUser queryDto = new SystemUser(); queryDto.setMobile(dto.getPhone()); @@ -349,42 +345,46 @@ // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅 List<SystemRole> roles = systemRoleService.findByUserId(user.getId()); List<SystemPermission> permissions = systemPermissionService.findByUserId(user.getId()); - SystemRole rt = new SystemRole(); rt.setDeleted(Boolean.FALSE); //鏁版嵁閮ㄩ棬鏉冮檺闆嗗悎 user.setCompanyIdList(systemDataPermissionService.selectHighRole(new SystemDataPermission(),rt,user)); - LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions,company,null); + systemLoginLogService.create(loginLog); return userInfo; } @Override public LoginUserInfo driverLogin(LoginDTO dto, ServerHttpRequest request) { - SystemLoginLog loginLog = new SystemLoginLog(); - loginLog.setLoginUsername(dto.getUsername()); - loginLog.setLoginTime(new Date()); - loginLog.setReason("銆愬叕浼楀彿銆戝徃鏈虹鐧婚檰锛歰penid="+dto.getOpenid()); - loginLog.setSystemVersion(systemVersion); -// loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp())); - if(request!=null&&request.getHeaders()!=null && request.getHeaders().size()>0){ - loginLog.setIp(Utils.User_Client.getIP(request)); - loginLog.setPlatform(Utils.User_Client.getPlatform(request)); - loginLog.setClientInfo(Utils.User_Client.getBrowser(request)); - loginLog.setOsInfo(Utils.User_Client.getOS(request)); - } - loginLog.setServerIp(Utils.Server.getIP()); + SystemLoginLog loginLog =getInitLoginlog(dto.getUsername(),request); + LoginUserInfo userInfo = dealLoginDriverBiz(dto.getUsername(),dto.getPassword(),null,dto.getOpenid()); + systemLoginLogService.create(loginLog); + return userInfo; + } + @Override + public LoginUserInfo loginDriverByPhone(LoginPhoneDTO dto, ServerHttpRequest request){ + isCaptcheValide(dto.getPhone(),dto.getCode());//楠岃瘉鐮佹牎楠� + SystemLoginLog loginLog =getInitLoginlog(dto.getPhone(),request); + LoginUserInfo userInfo = dealLoginDriverBiz(null,null,dto.getPhone(),dto.getOpenid()); + systemLoginLogService.create(loginLog); + return userInfo; + } + + private LoginUserInfo dealLoginDriverBiz(String username,String password, String phone, String openid) { // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞� SystemUser queryDto = new SystemUser(); - queryDto.setUsername(dto.getUsername()); + queryDto.setUsername(username); + queryDto.setMobile(phone); queryDto.setDeleted(Boolean.FALSE); SystemUser user = systemUserService.findOne(queryDto); if (user == null) { throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); } - //娉ㄥ唽鍙告満/鍔冲姟浜哄憳 - if((Constants.equalsInteger(user.getType(),Constants.ZERO)||Constants.equalsInteger(user.getType(),Constants.TWO)) && Objects.nonNull(user.getMemberId())){ + //娉ㄥ唽鍙告満 + if((Constants.equalsInteger(user.getType(),Constants.ZERO) + ||Constants.equalsInteger(user.getType(),Constants.TWO)) + && Objects.nonNull(user.getMemberId())){ if(Constants.equalsInteger(user.getType(),Constants.TWO)){ if(Objects.isNull(user.getCompanyId())){ throw new BusinessException(ResponseStatus.NO_ALLOW_LOGIN); @@ -397,19 +397,22 @@ }else{ throw new BusinessException(ResponseStatus.NO_ALLOW_LOGIN); } - String pwd = Utils.Secure.encryptPassword(new String(dto.getPassword()), user.getSalt()); - // 姣旇緝瀵嗙爜 - if( !StringUtils.equals(pwd, user.getPassword())){ - throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); + if(StringUtils.isNotBlank(password)){ + String pwd = Utils.Secure.encryptPassword(new String(password), user.getSalt()); + // 姣旇緝瀵嗙爜 + if( !StringUtils.equals(pwd, user.getPassword())){ + throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); + } } - dealOpenIdBiz(user,dto.getOpenid()); + dealOpenIdBiz(user,openid); Company company = new Company(); if(Objects.nonNull(user.getCompanyId())){ company = companyMapper.selectById(user.getCompanyId()); } LoginUserInfo userInfo = LoginUserInfo.from(user, null, null,company,null); - return userInfo; + return userInfo; } + public void isCaptcheValide( String phone, String captche) { SmsEmail model = smsEmailMapper.selectOne(new QueryWrapper<SmsEmail>().lambda() .eq(SmsEmail::getType, Constants.ZERO) @@ -439,19 +442,7 @@ @Transactional public LoginUserInfo loginDriverWithCode(LoginPhoneDTO param, ServerHttpRequest request) { isCaptcheValide(param.getPhone(),param.getCode());//妫�鏌ラ獙璇佺爜 - - SystemLoginLog loginLog = new SystemLoginLog(); - loginLog.setLoginUsername(param.getPhone()); - loginLog.setLoginTime(new Date()); - loginLog.setReason("銆愬叕浼楀彿銆戝徃鏈虹楠岃瘉鐮佺櫥闄嗭細openid="+param.getOpenid()); - loginLog.setSystemVersion(systemVersion); -// loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp())); - if(request!=null&&request.getHeaders()!=null && request.getHeaders().size()>0){ - loginLog.setIp(Utils.User_Client.getIP(request)); - loginLog.setPlatform(Utils.User_Client.getPlatform(request)); - loginLog.setClientInfo(Utils.User_Client.getBrowser(request)); - loginLog.setOsInfo(Utils.User_Client.getOS(request)); - } + SystemLoginLog loginLog =getInitLoginlog(param.getPhone(),request); loginLog.setServerIp(Utils.Server.getIP()); // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞� SystemUser queryDto = new SystemUser(); @@ -459,32 +450,7 @@ queryDto.setDeleted(Boolean.FALSE); SystemUser systemUser = systemUserService.findOne(queryDto); if (systemUser == null) { - String salt = RandomStringUtils.randomAlphabetic(6); - Member member = new Member(); - member.setCreateDate(new Date()); - member.setIsdeleted(Constants.ZERO); - member.setType(Constants.memberType.driver); - member.setPhone(param.getPhone()); - member.setStatus(Constants.ZERO); - member.setOpenid(param.getOpenid()); - member.setPassward(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(), salt)); - memberMapper.insert(member); - - systemUser = new SystemUser(); - systemUser.setCreateTime(new Date()); - systemUser.setCreateUser(1); - systemUser.setDeleted(Boolean.FALSE); - systemUser.setUsername(param.getPhone()); - systemUser.setRealname(null); - systemUser.setMemberId(member.getId()); - systemUser.setMobile(param.getPhone()); - systemUser.setSalt(salt); - systemUser.setPassword(member.getPassward()); - systemUser.setStatus(Constants.ZERO); - systemUser.setType(Constants.memberType.driver); - systemUser.setSource(Constants.TWO); - systemUser.setOpenid(param.getOpenid()); - systemUserMapper.insert(systemUser); + systemUser = autoRegisterUser(Constants.memberType.driver,param.getPhone(),param.getOpenid(),true); }else{ if(!Constants.equalsInteger(systemUser.getType(),Constants.memberType.driver)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇蜂娇鐢ㄦ纭殑鍙告満璐﹀彿鐧婚檰锛�"); @@ -496,25 +462,56 @@ company = companyMapper.selectById(systemUser.getCompanyId()); } LoginUserInfo userInfo = LoginUserInfo.from(systemUser, null, null,company,null); + systemLoginLogService.create(loginLog); return userInfo; } + + private SystemUser autoRegisterUser(int type, String phone,String openid,boolean needMember) { + String salt = RandomStringUtils.randomAlphabetic(6); + String pwd =Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(), salt); + Integer memberId = null; + if(needMember){ + Member member = new Member(); + member.setCreateDate(new Date()); + member.setIsdeleted(Constants.ZERO); + member.setType(Constants.memberType.driver); + member.setPhone(phone); + member.setStatus(Constants.ZERO); + member.setOpenid(openid); + member.setPassward(pwd); + memberMapper.insert(member); + memberId = member.getId(); + } + + SystemUser systemUser = new SystemUser(); + systemUser.setCreateTime(new Date()); + systemUser.setCreateUser(1); + systemUser.setDeleted(Boolean.FALSE); + systemUser.setUsername(phone); + systemUser.setRealname(null); + systemUser.setMemberId(memberId); + systemUser.setMobile(phone); + systemUser.setSalt(salt); + systemUser.setPassword(pwd); + systemUser.setStatus(Constants.ZERO); + systemUser.setType(type); + systemUser.setSource(Constants.TWO); + systemUser.setOpenid(openid); + systemUserMapper.insert(systemUser); + return systemUser; + } + @Override @Transactional public LoginUserInfo loginGkUserWithCode(LoginPhoneDTO param, ServerHttpRequest request) { isCaptcheValide(param.getPhone(),param.getCode());//妫�鏌ラ獙璇佺爜 - SystemLoginLog loginLog = new SystemLoginLog(); - loginLog.setLoginUsername(param.getPhone()); - loginLog.setLoginTime(new Date()); - loginLog.setReason("銆愬叕浼楀彿銆戣繍鍗曟煡璇㈢鎺т汉鍛橀獙璇佺爜鐧婚檰锛歰penid="+param.getOpenid()); - loginLog.setSystemVersion(systemVersion); -// loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp())); - if(request!=null&&request.getHeaders()!=null && request.getHeaders().size()>0){ - loginLog.setIp(Utils.User_Client.getIP(request)); - loginLog.setPlatform(Utils.User_Client.getPlatform(request)); - loginLog.setClientInfo(Utils.User_Client.getBrowser(request)); - loginLog.setOsInfo(Utils.User_Client.getOS(request)); + TmsEmployeeListRequest tp = new TmsEmployeeListRequest(); + tp.setTel(param.getPhone()); + TmsEmployeeListResponse response = tmsService.getEmployeeList(tp); + if(response == null || response.getTel()==null){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝鎮ㄨ緭鍏ョ殑鎵嬫満鍙蜂笉姝g‘锛�"); } - loginLog.setServerIp(Utils.Server.getIP()); + SystemLoginLog loginLog = getInitLoginlog(param.getPhone(),request); // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞� SystemUser queryDto = new SystemUser(); queryDto.setUsername(param.getPhone()); @@ -522,32 +519,8 @@ queryDto.setDeleted(Boolean.FALSE); SystemUser systemUser = systemUserService.findOne(queryDto); if (systemUser == null) { - String salt = RandomStringUtils.randomAlphabetic(6); - Member member = new Member(); - member.setCreateDate(new Date()); - member.setIsdeleted(Constants.ZERO); - member.setType(Constants.memberType.driver); - member.setPhone(param.getPhone()); - member.setStatus(Constants.ZERO); - member.setOpenid(param.getOpenid()); - member.setPassward(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(), salt)); - memberMapper.insert(member); - - systemUser = new SystemUser(); - systemUser.setCreateTime(new Date()); - systemUser.setCreateUser(1); - systemUser.setDeleted(Boolean.FALSE); - systemUser.setUsername(param.getPhone()); - systemUser.setRealname(null); - systemUser.setMemberId(member.getId()); - systemUser.setMobile(param.getPhone()); - systemUser.setSalt(salt); - systemUser.setPassword(member.getPassward()); - systemUser.setStatus(Constants.ZERO); - systemUser.setType(Constants.memberType.driver); - systemUser.setSource(Constants.TWO); - systemUser.setOpenid(param.getOpenid()); - systemUserMapper.insert(systemUser); + //鏂板绠℃帶浜哄憳鏁版嵁 + systemUser = systemUser = autoRegisterUser(Constants.memberType.gkuser,param.getPhone(),param.getOpenid(),false); }else{ if(!Constants.equalsInteger(systemUser.getType(),Constants.memberType.gkuser)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇蜂娇鐢ㄦ纭殑绠℃帶浜哄憳鎵嬫満鍙风櫥闄嗭紒"); @@ -555,6 +528,7 @@ } dealOpenIdBizForGk(systemUser,param.getOpenid()); LoginUserInfo userInfo = LoginUserInfo.from(systemUser, null, null,null,null); + systemLoginLogService.create(loginLog); return userInfo; } @@ -591,7 +565,6 @@ LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions,company,null); String token = jwtTokenUtil.generateToken(userInfo); - return token; } -- Gitblit v1.9.3