From 8f6dfbc2ca4a55a1ce0a4bb62094c4bf5c671b4d Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 27 十月 2025 10:57:10 +0800
Subject: [PATCH] 会议室问题修改
---
server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java | 167 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 151 insertions(+), 16 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 b4adca4..b47b93f 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
@@ -5,6 +5,9 @@
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.jwt.JwtTokenUtil;
import com.doumee.core.exception.BusinessException;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.system.dto.LoginCabinetDTO;
+import com.doumee.dao.system.dto.LoginH5DTO;
import com.doumee.service.business.third.TmsService;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.core.constants.ResponseStatus;
@@ -154,7 +157,59 @@
throw e;
}
}
- LoginUserInfo user = dealLoginByPwdNewBiz(dto.getUsername(),dto.getPassword(),null,dto.getOpenid(),request);
+ try {
+ LoginUserInfo user = dealLoginByPwdNewBiz(dto.getUsername(),dto.getPassword(),null,dto.getOpenid(),dto.getDdUnionId(),request);
+ systemLoginLogService.create(loginLog);
+ return user;
+ }catch (BusinessException e){
+ loginLog.setSuccess(Boolean.FALSE);
+ systemLoginLogService.create(loginLog);
+ throw e;
+
+ }catch (Exception e){
+ loginLog.setSuccess(Boolean.FALSE);
+ systemLoginLogService.create(loginLog);
+ throw e;
+ }
+ }
+
+ @Override
+ public LoginUserInfo loginByPasswordForCabinet(LoginCabinetDTO dto, ServerHttpRequest request) {
+ SystemLoginLog loginLog = getInitLoginlog(dto.getUsername(),request);
+ try {
+ LoginUserInfo user = dealLoginByPwdNewBiz(dto.getUsername(),dto.getPassword(),null,null,null,request);
+ systemLoginLogService.create(loginLog);
+ return user;
+ }catch (BusinessException e){
+ loginLog.setSuccess(Boolean.FALSE);
+ systemLoginLogService.create(loginLog);
+ throw e;
+
+ }catch (Exception e){
+ loginLog.setSuccess(Boolean.FALSE);
+ systemLoginLogService.create(loginLog);
+ throw e;
+ }
+ }
+
+
+ @Override
+ public LoginUserInfo loginH5 (LoginH5DTO dto, ServerHttpRequest request) {
+ SystemLoginLog loginLog = getInitLoginlog(dto.getUsername(),request);
+
+ if((isDebug == null || !isDebug) && (Objects.isNull(dto.getCheckCode()) || dto.getCheckCode()) ){
+ // 鏍¢獙楠岃瘉鐮�
+ try {
+ captchaService.check(dto.getUuid(), dto.getCode());
+ } catch (Exception e) {
+ log.error(e.getMessage(), e);
+ loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage());
+ loginLog.setSuccess(Boolean.FALSE);
+ systemLoginLogService.create(loginLog);
+ throw e;
+ }
+ }
+ LoginUserInfo user = dealLoginByPwdNewBiz(dto.getUsername(),dto.getPassword(),null,dto.getOpenid(),dto.getDdUnionId(),request);
systemLoginLogService.create(loginLog);
return user;
}
@@ -170,6 +225,7 @@
loginLog.setPlatform(Utils.User_Client.getPlatform(request));
loginLog.setClientInfo(Utils.User_Client.getBrowser(request));
loginLog.setOsInfo(Utils.User_Client.getOS(request));
+ loginLog.setSuccess(Boolean.TRUE);
}
loginLog.setServerIp(Utils.Server.getIP());
return loginLog;
@@ -179,11 +235,22 @@
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;
+ try{
+ LoginUserInfo userInfo = dealLoginByPwdNewBiz(null,null,dto.getPhone(),dto.getOpenid(),dto.getDdUnionId(), request );
+ systemLoginLogService.create(loginLog);
+ return userInfo;
+ }catch (BusinessException e){
+ loginLog.setSuccess(Boolean.FALSE);
+ systemLoginLogService.create(loginLog);
+ throw e;
+
+ }catch (Exception e){
+ loginLog.setSuccess(Boolean.FALSE);
+ systemLoginLogService.create(loginLog);
+ throw e;
+ }
}
- private LoginUserInfo dealLoginByPwdNewBiz(String username,String pwd, String phone, String openid, ServerHttpRequest request) {
+ private LoginUserInfo dealLoginByPwdNewBiz(String username,String pwd, String phone, String openid, String ddUnionId, ServerHttpRequest request) {
// 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞�
SystemUser queryDto = new SystemUser();
queryDto.setMobile(phone);
@@ -204,7 +271,12 @@
throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
}
}
- dealOpenIdBiz(user,openid);
+ if(StringUtils.isNotBlank(openid)){
+ dealOpenIdBiz(user,openid);
+ }
+ if(StringUtils.isNotBlank(ddUnionId)){
+ dealDDUnionIdBiz(user,ddUnionId);
+ }
Company company = new Company();
if(Objects.nonNull(user.getCompanyId())){
company = companyMapper.selectById(user.getCompanyId());
@@ -219,6 +291,55 @@
LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions,company,null);
return userInfo;
}
+
+
+ public void checkPassword(SystemUser user,String pwd){
+ String pppp = Utils.Secure.encryptPassword(new String(pwd), user.getSalt());
+ // 姣旇緝瀵嗙爜
+ if( !StringUtils.equals(pppp, user.getPassword())){
+ //鏄惁寮�鍚瘑鐮侀敊璇姝㈢櫥褰曪細0=鍚︼紱1=鏄紱
+ SystemDictData prohibitLoginData = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROHIBIT_LOGIN_OPEN);
+ if(Objects.nonNull(prohibitLoginData)&&"1".equals(prohibitLoginData.getCode())){
+ SystemDictData prohibitErrTimesData = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ERR_TIMES);
+ if(Objects.nonNull(prohibitErrTimesData)){
+
+ }
+ throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
+ }else{
+ throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
+ }
+ }
+
+ }
+
+ public void updErrTimes(SystemUser systemUser){
+ //鏈�澶ч敊璇鏁� 杩涜鐧诲綍闄愬埗
+ SystemDictData prohibitErrTimesData = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ERR_TIMES);
+ //鏄惁寮�鍚瘑鐮侀敊璇姝㈢櫥褰曪細0=鍚︼紱1=鏄紱
+ SystemDictData prohibitLoginData = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROHIBIT_LOGIN_OPEN);
+ //瀵嗙爜閿欒绂佹鐧诲綍闄愬埗鏃堕棿锛堝垎閽燂級
+ SystemDictData prohibitTimeData = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROHIBIT_TIME);
+ if(Objects.isNull(prohibitTimeData)||Objects.isNull(prohibitLoginData)||Objects.isNull(prohibitTimeData)){
+ return;
+ }
+ systemUserMapper.update(null,new UpdateWrapper<SystemUser>().lambda()
+ .setSql( " PROHIBIT_STATUS = CASE WHEN "+prohibitLoginData+" = 1 and ( IFNULL(ERR_TIMES,0) + 1 ) > "+prohibitErrTimesData.getCode()+" then 1 else 0 end ")
+ .setSql(" PROHIBIT_TIME = CASE WHEN PROHIBIT_STATUS = 1 then DATE_ADD(NOW(), INTERVAL "+prohibitTimeData.getCode()+" MINUTE) else null end , ")
+ .setSql(" ERR_TIMES = (ifnull(ERR_TIMES,0) + 1) ")
+ .eq(SystemUser::getId,systemUser.getId())
+ );
+ }
+
+ public void prohibitLogin(SystemUser systemUser){
+ if(Constants.equalsInteger(systemUser.getProhibitStatus(),Constants.ZERO)){
+ Long betweenMin = DateUtil.getBetweenMin(systemUser.getProhibitTime(),new Date());
+ if(betweenMin <= 0L){
+ betweenMin = 0L;
+ }
+ throw new BusinessException( ResponseStatus.NOT_ALLOWED.getCode(),"瀵嗙爜閿欒娆℃暟杩囧锛岃鍚�"+ betweenMin +"鍒嗛挓鍚庨噸璇�");
+ }
+ }
+
@Override
public LoginUserInfo loginByPasswordForPda(LoginDTO dto, ServerHttpRequest request) {
@@ -265,11 +386,29 @@
.set(SystemUser::getOpenidHkDate,null)
.set(SystemUser::getOpenidHkInfo,null)
.set(SystemUser::getOpenidHkStatus,Constants.ZERO)
+ .ne(SystemUser::getType,Constants.memberType.gkuser)
.eq(SystemUser::getOpenid,openid)
-// .eq(SystemUser::getType,user.getType())
);
systemUserMapper.update(null,new UpdateWrapper<SystemUser>().lambda()
.set(SystemUser::getOpenid,openid)
+ .set(SystemUser::getOpenidHkStatus,Constants.ZERO)
+ .set(SystemUser::getOpenidHkDate,null)
+ .set(SystemUser::getOpenidHkInfo,null)
+ .eq(SystemUser::getId,user.getId()));
+ }
+ }
+
+ private void dealDDUnionIdBiz(SystemUser user, String ddUnionId) {
+ if(StringUtils.isNotBlank(ddUnionId)){
+ //濡傛灉openId涓嶄负绌�,缁戝畾璇ョ敤鎴穙penid
+ systemUserMapper.update(null,new UpdateWrapper<SystemUser>().lambda()
+ .set(SystemUser::getDdUnionId,null)
+ .set(SystemUser::getOpenidHkStatus,Constants.ZERO)
+ .ne(SystemUser::getType,Constants.memberType.gkuser)
+ .eq(SystemUser::getDdUnionId,ddUnionId)
+ );
+ systemUserMapper.update(null,new UpdateWrapper<SystemUser>().lambda()
+ .set(SystemUser::getDdUnionId,ddUnionId)
.set(SystemUser::getOpenidHkStatus,Constants.ZERO)
.set(SystemUser::getOpenidHkDate,null)
.set(SystemUser::getOpenidHkInfo,null)
@@ -356,7 +495,7 @@
@Override
- public LoginUserInfo driverLogin(LoginDTO dto, ServerHttpRequest request) {
+ public LoginUserInfo driverLogin(LoginH5DTO dto, ServerHttpRequest request) {
SystemLoginLog loginLog =getInitLoginlog(dto.getUsername(),request);
LoginUserInfo userInfo = dealLoginDriverBiz(dto.getUsername(),dto.getPassword(),null,dto.getOpenid());
systemLoginLogService.create(loginLog);
@@ -387,15 +526,15 @@
&& Objects.nonNull(user.getMemberId())){
if(Constants.equalsInteger(user.getType(),Constants.TWO)){
if(Objects.isNull(user.getCompanyId())){
- throw new BusinessException(ResponseStatus.NO_ALLOW_LOGIN);
+ throw new BusinessException(ResponseStatus.NO_ALLOW_LOGIN.getCode(),"瀵逛笉璧凤紝璇ヨ处鍙蜂笉鑳界櫥褰曞徃鏈虹鍝");
}
- Company company = companyMapper.selectById(user.getCompanyId());
+ /* Company company = companyMapper.selectById(user.getCompanyId());
if(Objects.isNull(company) || Constants.equalsInteger(company.getType(),Constants.ONE)){
throw new BusinessException(ResponseStatus.NO_ALLOW_LOGIN);
- }
+ }*/
}
}else{
- throw new BusinessException(ResponseStatus.NO_ALLOW_LOGIN);
+ throw new BusinessException(ResponseStatus.NO_ALLOW_LOGIN.getCode(),"瀵逛笉璧凤紝璇ヨ处鍙蜂笉鑳界櫥褰曞徃鏈虹鍝︼紒");
}
if(StringUtils.isNotBlank(password)){
String pwd = Utils.Secure.encryptPassword(new String(password), user.getSalt());
@@ -521,10 +660,6 @@
if (systemUser == null) {
//鏂板绠℃帶浜哄憳鏁版嵁
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(),"瀵逛笉璧凤紝璇蜂娇鐢ㄦ纭殑绠℃帶浜哄憳鎵嬫満鍙风櫥闄嗭紒");
- }
}
dealOpenIdBizForGk(systemUser,param.getOpenid());
LoginUserInfo userInfo = LoginUserInfo.from(systemUser, null, null,null,null);
--
Gitblit v1.9.3