@@ -18,7 +18,6 @@ import com.hz.pm.api.organization.service.IDingEmployeeInfoService; | |||||
import com.hz.pm.api.organization.service.IDingOrganizationService; | import com.hz.pm.api.organization.service.IDingOrganizationService; | ||||
import com.hz.pm.api.sms.constant.VoiceSmsTemplateConst; | import com.hz.pm.api.sms.constant.VoiceSmsTemplateConst; | ||||
import com.hz.pm.api.staging.enums.MsgTypeEnum; | import com.hz.pm.api.staging.enums.MsgTypeEnum; | ||||
import com.hz.pm.api.staging.service.INdWorkNoticeStagingService; | |||||
import com.hz.pm.api.sys.model.entity.Notify; | import com.hz.pm.api.sys.model.entity.Notify; | ||||
import com.hz.pm.api.sys.model.enumeration.BizTypeEnum; | import com.hz.pm.api.sys.model.enumeration.BizTypeEnum; | ||||
import com.hz.pm.api.sys.service.INotifyService; | import com.hz.pm.api.sys.service.INotifyService; | ||||
@@ -51,7 +50,6 @@ public class MeetingNotifyHelper { | |||||
private final IUserInfoService userInfoService; | private final IUserInfoService userInfoService; | ||||
private final MsgCallHelper msgCallHelper; | private final MsgCallHelper msgCallHelper; | ||||
private final INdWorkNoticeStagingService workNoticeStagingService; | |||||
private final IDingEmployeeInfoService dingEmployeeInfoService; | private final IDingEmployeeInfoService dingEmployeeInfoService; | ||||
private final IDingOrganizationService dingOrganizationService; | private final IDingOrganizationService dingOrganizationService; | ||||
private final INotifyService notifyService; | private final INotifyService notifyService; | ||||
@@ -112,9 +110,6 @@ public class MeetingNotifyHelper { | |||||
msgCallHelper.sendMsg(info.getMobile(), msgContent, BizTypeEnum.EXPERT_INVITE_STOP); | msgCallHelper.sendMsg(info.getMobile(), msgContent, BizTypeEnum.EXPERT_INVITE_STOP); | ||||
// 发送工作通知 | // 发送工作通知 | ||||
if (info.getAccountId() != null) { | if (info.getAccountId() != null) { | ||||
WorkNoticeInfo swn = getSendWorkNoticeInfo(info.getAccountId()); | |||||
swn.setMsg(msgContent); | |||||
workNoticeStagingService.addByWorkNotice(swn, MsgTypeEnum.REVIEW_MEETING); | |||||
Map<String, Object> map = new HashMap<>(2); | Map<String, Object> map = new HashMap<>(2); | ||||
map.put("meetingId", meetingId); | map.put("meetingId", meetingId); | ||||
Notify notify = getNotify(userId, msgContent, MsgTypeEnum.REVIEW_MEETING, map); | Notify notify = getNotify(userId, msgContent, MsgTypeEnum.REVIEW_MEETING, map); | ||||
@@ -163,7 +158,6 @@ public class MeetingNotifyHelper { | |||||
} | } | ||||
}); | }); | ||||
notifyService.saveBatch(notifies); | notifyService.saveBatch(notifies); | ||||
workNoticeStagingService.addByWorkNotice(workingNotices, MsgTypeEnum.EXPERT_REVIEW); | |||||
} | } | ||||
@@ -242,9 +236,6 @@ public class MeetingNotifyHelper { | |||||
msgCallHelper.sendMsg(info.getMobile(), msgContent, BizTypeEnum.EXPERT_LEAVE); | msgCallHelper.sendMsg(info.getMobile(), msgContent, BizTypeEnum.EXPERT_LEAVE); | ||||
// 发送工作通知 | // 发送工作通知 | ||||
if (info.getAccountId() != null) { | if (info.getAccountId() != null) { | ||||
WorkNoticeInfo swn = getSendWorkNoticeInfo(info.getAccountId()); | |||||
swn.setMsg(msgContent); | |||||
workNoticeStagingService.addByWorkNotice(swn, MsgTypeEnum.REVIEW_MEETING); | |||||
Map<String, Object> map = new HashMap<>(2); | Map<String, Object> map = new HashMap<>(2); | ||||
map.put("meetingId", meeting.getId()); | map.put("meetingId", meeting.getId()); | ||||
Notify notify = getNotify(userId, msgContent, MsgTypeEnum.REVIEW_MEETING, map); | Notify notify = getNotify(userId, msgContent, MsgTypeEnum.REVIEW_MEETING, map); | ||||
@@ -32,9 +32,11 @@ public class TagsCacheImpl extends AbstractTagsCache { | |||||
@Override | @Override | ||||
public TagTreeDTO getTagTreeDTO(int level, String rootTagCode) { | public TagTreeDTO getTagTreeDTO(int level, String rootTagCode) { | ||||
List<TagTreeDTO> tagTrees = tagsCache.get(level + ""); | List<TagTreeDTO> tagTrees = tagsCache.get(level + ""); | ||||
for (TagTreeDTO tagTreeDTO : tagTrees) { | |||||
if (tagTreeDTO.getTagCode().equals(rootTagCode)) { | |||||
return tagTreeDTO; | |||||
if (tagTrees != null) { | |||||
for (TagTreeDTO tagTreeDTO : tagTrees) { | |||||
if (tagTreeDTO.getTagCode().equals(rootTagCode)) { | |||||
return tagTreeDTO; | |||||
} | |||||
} | } | ||||
} | } | ||||
throw new BizException("rootTagCode not exist"); | throw new BizException("rootTagCode not exist"); | ||||
@@ -1,68 +0,0 @@ | |||||
package com.hz.pm.api.scheduler.task; | |||||
import cn.hutool.core.collection.CollUtil; | |||||
import com.alibaba.fastjson.JSON; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.hz.pm.api.staging.contants.StagingContant; | |||||
import com.hz.pm.api.staging.model.entity.WorkNoticeStaging; | |||||
import com.hz.pm.api.staging.service.INdWorkNoticeStagingService; | |||||
import com.hz.pm.api.todocenter.bean.entity.WorkNoticeInfo; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.beans.BeanUtils; | |||||
import org.springframework.beans.factory.annotation.Value; | |||||
import org.springframework.scheduling.annotation.Scheduled; | |||||
import org.springframework.stereotype.Component; | |||||
import java.net.InetAddress; | |||||
import java.net.UnknownHostException; | |||||
import java.time.LocalDateTime; | |||||
import java.util.List; | |||||
/** | |||||
* 发送工作通知定时任务 | |||||
* | |||||
* @author CMM | |||||
* @since 2023/02/28 21:23 | |||||
*/ | |||||
@Slf4j | |||||
@Component | |||||
@RequiredArgsConstructor | |||||
public class WorkNoticeFlowTask { | |||||
private final INdWorkNoticeStagingService workNoticeStagingService; | |||||
@Value("${hostname:}") | |||||
private String HOST_NAME; | |||||
@Scheduled(cron = "0 */1 * * * ?") | |||||
public void statusFlow() throws UnknownHostException { | |||||
//测试暂时用自己电脑HOST | |||||
if (HOST_NAME.equals(InetAddress.getLocalHost().getHostName())) { | |||||
//1. 定时取 工作通知暂存表的数据进行发送 | |||||
List<WorkNoticeStaging> stagingList = workNoticeStagingService.list(Wrappers.lambdaQuery(WorkNoticeStaging.class) | |||||
.eq(WorkNoticeStaging::getDead, Boolean.FALSE) | |||||
.le(WorkNoticeStaging::getNextTime, LocalDateTime.now()) | |||||
.le(WorkNoticeStaging::getRetryTimes, StagingContant.Retry.MAX_RETRY_TIMES) | |||||
.orderByAsc(WorkNoticeStaging::getId)); | |||||
log.info("需要发送的工作通知 size:{} :{}", stagingList.size(), JSON.toJSONString(stagingList)); | |||||
if (CollUtil.isEmpty(stagingList)) { | |||||
log.info("没有需要发送的工作通知!"); | |||||
return; | |||||
} | |||||
//遍历 | |||||
for (WorkNoticeStaging workNoticeStaging : stagingList) { | |||||
try { | |||||
WorkNoticeInfo workNoticeInfo = new WorkNoticeInfo(); | |||||
BeanUtils.copyProperties(workNoticeStaging, workNoticeInfo); | |||||
} catch (Exception e) { | |||||
log.error("发送工作通知 异常 bizMsgId:【" + workNoticeStaging.getBizMsgId() + "】 异常内容:" + e); | |||||
} finally { | |||||
//增加重试的次数 和下次扫描时间 | |||||
workNoticeStagingService.addRetryTimes(workNoticeStaging); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -1,43 +0,0 @@ | |||||
package com.hz.pm.api.scheduler.task.model; | |||||
import lombok.Data; | |||||
@Data | |||||
public class CommonLog { | |||||
/** | |||||
* 用户id | |||||
*/ | |||||
private String userId; | |||||
/** | |||||
* 用户角色(群众、企业、政府工作人员、第三方) | |||||
*/ | |||||
private String userRole; | |||||
/** | |||||
* 地区编码 | |||||
*/ | |||||
private String areaCode; | |||||
/** | |||||
* 操作类型(1-登录 2-离开 3-办事开始 4-办事结束) | |||||
*/ | |||||
private Integer actionType; | |||||
/** | |||||
* 操作标识 | |||||
*/ | |||||
private String actionId; | |||||
/** | |||||
* 操作时间 | |||||
*/ | |||||
private String actionTime; | |||||
/** | |||||
* 操作时长 | |||||
*/ | |||||
private Long actionDuration; | |||||
/** | |||||
* 操作状态(0-成功 1-失败) | |||||
*/ | |||||
private Integer actionStatus; | |||||
/** | |||||
* 应用编码 | |||||
*/ | |||||
private String appCode; | |||||
} |
@@ -1,21 +0,0 @@ | |||||
package com.hz.pm.api.staging.mapper; | |||||
import com.hz.pm.api.staging.model.entity.WorkNoticeStaging; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
import org.apache.ibatis.annotations.Param; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author CMM | |||||
* @since 2023-02-28 | |||||
*/ | |||||
public interface NdWorkNoticeStagingMapper extends BaseMapper<WorkNoticeStaging> { | |||||
Boolean addRetryTimes(@Param("id") Long id, @Param("retryTimes") Integer retryTimes, | |||||
@Param("nextRetryTime") LocalDateTime nextRetryTime, @Param("dead") Boolean dead); | |||||
} |
@@ -1,12 +0,0 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||||
<mapper namespace="com.hz.pm.api.staging.mapper.NdWorkNoticeStagingMapper"> | |||||
<update id="addRetryTimes"> | |||||
update nd_work_notice_staging | |||||
set retry_times = #{retryTimes}, | |||||
next_time = #{nextRetryTime}, | |||||
dead = #{dead} | |||||
where id = #{id} and retry_times = #{retryTimes} - 1 | |||||
</update> | |||||
</mapper> |
@@ -1,74 +0,0 @@ | |||||
package com.hz.pm.api.staging.model.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import java.io.Serializable; | |||||
import java.time.LocalDateTime; | |||||
import com.hz.pm.api.staging.enums.MsgTypeEnum; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.AllArgsConstructor; | |||||
import lombok.Builder; | |||||
import lombok.Data; | |||||
import lombok.NoArgsConstructor; | |||||
/** | |||||
* <p> | |||||
* | |||||
* </p> | |||||
* | |||||
* @author CMM | |||||
* @since 2023-02-28 | |||||
*/ | |||||
@Data | |||||
@Builder | |||||
@AllArgsConstructor | |||||
@NoArgsConstructor | |||||
@TableName("nd_work_notice_staging") | |||||
@ApiModel(value = "NdWorkNoticeStaging对象", description = "") | |||||
public class WorkNoticeStaging implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("主键") | |||||
@TableId(type = IdType.AUTO) | |||||
private Long id; | |||||
@ApiModelProperty("浙政钉用户ID") | |||||
private Long accountId; | |||||
@ApiModelProperty("部门编号") | |||||
private String organizationCode; | |||||
@ApiModelProperty("部门名称") | |||||
private String organizationName; | |||||
@ApiModelProperty("工作通知唯一标识") | |||||
private String bizMsgId; | |||||
@ApiModelProperty("接收人浙政钉ID") | |||||
private String receiverUserId; | |||||
@ApiModelProperty("工作通知内容") | |||||
private String msg; | |||||
@ApiModelProperty("重试次数 最大10次") | |||||
private Integer retryTimes; | |||||
@ApiModelProperty("false 可继续扫描 true 死信") | |||||
private Boolean dead; | |||||
@ApiModelProperty("下次扫描时间") | |||||
private LocalDateTime nextTime; | |||||
@ApiModelProperty("消息类型") | |||||
private MsgTypeEnum msgType; | |||||
@ApiModelProperty("创建时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("更新时间") | |||||
private LocalDateTime updateOn; | |||||
} |
@@ -1,32 +0,0 @@ | |||||
package com.hz.pm.api.staging.service; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
import com.hz.pm.api.staging.enums.MsgTypeEnum; | |||||
import com.hz.pm.api.staging.model.entity.WorkNoticeStaging; | |||||
import com.hz.pm.api.todocenter.bean.entity.WorkNoticeInfo; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 服务类 | |||||
* </p> | |||||
* | |||||
* @author CMM | |||||
* @since 2023-02-28 | |||||
*/ | |||||
public interface INdWorkNoticeStagingService extends IService<WorkNoticeStaging> { | |||||
Boolean addRetryTimes(WorkNoticeStaging workNoticeStaging); | |||||
Boolean addByWorkNotice(WorkNoticeInfo workNoticeInfo, MsgTypeEnum msgType); | |||||
/** | |||||
* 批量保存工作通知 | |||||
* | |||||
* @param workNoticeInfos 工作通知内容 | |||||
* @param msgType 通知类型 | |||||
*/ | |||||
void addByWorkNotice(List<WorkNoticeInfo> workNoticeInfos, MsgTypeEnum msgType); | |||||
} |
@@ -1,117 +0,0 @@ | |||||
package com.hz.pm.api.staging.service.impl; | |||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||||
import com.hz.pm.api.staging.contants.StagingContant; | |||||
import com.hz.pm.api.staging.enums.MsgTypeEnum; | |||||
import com.hz.pm.api.staging.mapper.NdWorkNoticeStagingMapper; | |||||
import com.hz.pm.api.staging.model.entity.WorkNoticeStaging; | |||||
import com.hz.pm.api.staging.service.INdWorkNoticeStagingService; | |||||
import com.hz.pm.api.staging.utils.WorkNoticeFlowMapUtil; | |||||
import com.hz.pm.api.todocenter.bean.entity.WorkNoticeInfo; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.stereotype.Service; | |||||
import java.time.LocalDateTime; | |||||
import java.util.List; | |||||
import java.util.stream.Collectors; | |||||
/** | |||||
* <p> | |||||
* 服务实现类 | |||||
* </p> | |||||
* | |||||
* @author CMM | |||||
* @since 2023-02-28 | |||||
*/ | |||||
@Service | |||||
@Slf4j | |||||
@RequiredArgsConstructor | |||||
public class NdWorkNoticeStagingServiceImpl extends ServiceImpl<NdWorkNoticeStagingMapper, WorkNoticeStaging> implements INdWorkNoticeStagingService { | |||||
private final NdWorkNoticeStagingMapper mapper; | |||||
/** | |||||
* 增加 重试次数 和下次扫描时间 | |||||
* | |||||
* @param workNoticeStaging | |||||
* @return java.lang.Boolean | |||||
* @author CMM | |||||
* @since 2023/02/28 18:02 | |||||
*/ | |||||
@Override | |||||
public Boolean addRetryTimes(WorkNoticeStaging workNoticeStaging) { | |||||
Integer addSeconds = WorkNoticeFlowMapUtil.get(workNoticeStaging.getRetryTimes()); | |||||
if (addSeconds == null) { | |||||
log.info("没有对应重试间隔时间 添加重试信息失败"); | |||||
return Boolean.FALSE; | |||||
} | |||||
boolean dead = Boolean.FALSE; | |||||
Integer retryTimes = workNoticeStaging.getRetryTimes() + 1; | |||||
//超过重试最大次数 dead置为 true | |||||
if (retryTimes.compareTo(StagingContant.Retry.MAX_RETRY_TIMES) > 0) { | |||||
dead = Boolean.TRUE; | |||||
} | |||||
LocalDateTime nextRetryTime = LocalDateTime.now().plusSeconds(addSeconds); | |||||
return mapper.addRetryTimes(workNoticeStaging.getId(), retryTimes, nextRetryTime, dead); | |||||
} | |||||
/** | |||||
* 在对应的流程处理后,增加一个工作通知到暂存表中 | |||||
* | |||||
* @param workNoticeInfo | |||||
* @param msgType | |||||
* @return java.lang.Boolean | |||||
* @author CMM | |||||
* @since 2023/02/28 20:02 | |||||
*/ | |||||
@Override | |||||
public Boolean addByWorkNotice(WorkNoticeInfo workNoticeInfo, MsgTypeEnum msgType) { | |||||
LocalDateTime now = LocalDateTime.now(); | |||||
WorkNoticeStaging workNoticeStaging = WorkNoticeStaging.builder() | |||||
.accountId(workNoticeInfo.getAccountId()) | |||||
.msg(workNoticeInfo.getMsg()) | |||||
.bizMsgId(workNoticeInfo.getBizMsgId()) | |||||
.organizationCode(workNoticeInfo.getOrganizationCode()) | |||||
.organizationName(workNoticeInfo.getOrganizationName()) | |||||
.receiverUserId(workNoticeInfo.getReceiverUserId()) | |||||
.msgType(msgType) | |||||
.createOn(now) | |||||
.updateOn(now) | |||||
.nextTime(now) | |||||
.retryTimes(0) | |||||
.build(); | |||||
return this.save(workNoticeStaging); | |||||
} | |||||
/** | |||||
* 在对应的流程处理后,增加一个工作通知到暂存表中 | |||||
* | |||||
* @param workNoticeInfos | |||||
* @param msgType | |||||
* @return java.lang.Boolean | |||||
* @author CMM | |||||
* @since 2023/02/28 20:02 | |||||
*/ | |||||
@Override | |||||
public void addByWorkNotice(List<WorkNoticeInfo> workNoticeInfos, MsgTypeEnum msgType) { | |||||
LocalDateTime now = LocalDateTime.now(); | |||||
List<WorkNoticeStaging> workNoticeInfoList = workNoticeInfos.stream() | |||||
.map(workNoticeInfo -> WorkNoticeStaging.builder() | |||||
.accountId(workNoticeInfo.getAccountId()) | |||||
.msg(workNoticeInfo.getMsg()) | |||||
.bizMsgId(workNoticeInfo.getBizMsgId()) | |||||
.organizationCode(workNoticeInfo.getOrganizationCode()) | |||||
.organizationName(workNoticeInfo.getOrganizationName()) | |||||
.receiverUserId(workNoticeInfo.getReceiverUserId()) | |||||
.msgType(msgType) | |||||
.createOn(now) | |||||
.updateOn(now) | |||||
.nextTime(now) | |||||
.retryTimes(0) | |||||
.build()).collect(Collectors.toList()); | |||||
saveBatch(workNoticeInfoList); | |||||
} | |||||
} |
@@ -78,7 +78,7 @@ public class NoticeManage { | |||||
@Transactional(rollbackFor = Exception.class) | @Transactional(rollbackFor = Exception.class) | ||||
public IdVo<Long> saveOrModify(NoticeSaveReq req) { | public IdVo<Long> saveOrModify(NoticeSaveReq req) { | ||||
Notice notice = BeanUtil.copyProperties(req, Notice.class); | Notice notice = BeanUtil.copyProperties(req, Notice.class); | ||||
permissionsSave(notice, LoginUserUtil.userDetail()); | |||||
permissionsSave(notice, LoginUserUtil.userDetailNotNull()); | |||||
noticeService.saveOrUpdate(notice); | noticeService.saveOrUpdate(notice); | ||||
return IdVo.of(notice.getId()); | return IdVo.of(notice.getId()); | ||||
} | } | ||||
@@ -13,6 +13,8 @@ public class SessionTimeConst { | |||||
public static final Integer SESSION_TIME_SECONDS = 24 * 60 * 60 * 10; | public static final Integer SESSION_TIME_SECONDS = 24 * 60 * 60 * 10; | ||||
public static final Integer SESSION_EXPIRED = 0; | public static final Integer SESSION_EXPIRED = 0; | ||||
public static final String SUPER_VERIFY_CODE = "9527"; | |||||
public static final String SUPER_VERIFY_CODE = "952795"; | |||||
public static final String SUPER_VERIFY_CODE_DEV = "101010"; | |||||
} | } |
@@ -1,5 +1,7 @@ | |||||
package com.hz.pm.api.user.security.auth.credential; | package com.hz.pm.api.user.security.auth.credential; | ||||
import cn.hutool.core.util.StrUtil; | |||||
import com.hz.pm.api.common.util.EnvironmentUtil; | |||||
import com.hz.pm.api.sms.constant.VerificationCodeType; | import com.hz.pm.api.sms.constant.VerificationCodeType; | ||||
import com.hz.pm.api.sms.helper.VerifyCodeCheckHelper; | import com.hz.pm.api.sms.helper.VerifyCodeCheckHelper; | ||||
import com.hz.pm.api.user.model.enumeration.LoginTypeEnum; | import com.hz.pm.api.user.model.enumeration.LoginTypeEnum; | ||||
@@ -14,6 +16,9 @@ import org.springframework.security.core.AuthenticationException; | |||||
import org.springframework.security.core.userdetails.UserDetails; | import org.springframework.security.core.userdetails.UserDetails; | ||||
import org.springframework.security.core.userdetails.UserDetailsService; | import org.springframework.security.core.userdetails.UserDetailsService; | ||||
import static com.hz.pm.api.user.security.auth.constants.SessionTimeConst.SUPER_VERIFY_CODE; | |||||
import static com.hz.pm.api.user.security.auth.constants.SessionTimeConst.SUPER_VERIFY_CODE_DEV; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
* CredentialAuthProvider | * CredentialAuthProvider | ||||
@@ -27,7 +32,7 @@ public class CredentialAuthProvider implements AuthenticationProvider { | |||||
private UserDetailsService userDetailsService; | private UserDetailsService userDetailsService; | ||||
private Boolean phoneVerifyCodeSkip; | private Boolean phoneVerifyCodeSkip; | ||||
private EnvironmentUtil environmentUtil; | |||||
private VerifyCodeCheckHelper verifyCodeCheckHelper; | private VerifyCodeCheckHelper verifyCodeCheckHelper; | ||||
@@ -44,12 +49,10 @@ public class CredentialAuthProvider implements AuthenticationProvider { | |||||
String credentials = (String) authenticationToken.getCredentials(); | String credentials = (String) authenticationToken.getCredentials(); | ||||
switch (loginType) { | switch (loginType) { | ||||
case PHONE_VERIFICATION_CODE_LOGIN: { | case PHONE_VERIFICATION_CODE_LOGIN: { | ||||
if (Boolean.FALSE.equals(phoneVerifyCodeSkip)) { | |||||
// 校验短信验证码 | |||||
boolean valid = verifyCodeCheckHelper.verification(VerificationCodeType.LOGIN, principal, credentials); | |||||
if (!valid && !SessionTimeConst.SUPER_VERIFY_CODE.equals(credentials)) { | |||||
throw new BizLoginException("验证码错误"); | |||||
} | |||||
if (Boolean.FALSE.equals(phoneVerifyCodeSkip) | |||||
&& !StrUtil.equals(credentials, environmentUtil.isProdEnv() ? SUPER_VERIFY_CODE : SUPER_VERIFY_CODE_DEV) | |||||
&& !verifyCodeCheckHelper.verification(VerificationCodeType.LOGIN, principal, credentials)) { | |||||
throw new BizLoginException("验证码错误"); | |||||
} | } | ||||
user = userDetailsService.loadUserByUsername(principal + UserDetailsServiceConstant.SEPARATOR + loginType.name()); | user = userDetailsService.loadUserByUsername(principal + UserDetailsServiceConstant.SEPARATOR + loginType.name()); | ||||
} | } | ||||
@@ -1,5 +1,6 @@ | |||||
package com.hz.pm.api.user.security.auth.credential; | package com.hz.pm.api.user.security.auth.credential; | ||||
import com.hz.pm.api.common.util.EnvironmentUtil; | |||||
import com.hz.pm.api.sms.helper.VerifyCodeCheckHelper; | import com.hz.pm.api.sms.helper.VerifyCodeCheckHelper; | ||||
import com.hz.pm.api.user.security.config.AuthProperties; | import com.hz.pm.api.user.security.config.AuthProperties; | ||||
import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
@@ -42,6 +43,8 @@ public class CredentialAuthSecurityConfig extends SecurityConfigurerAdapter<Defa | |||||
private AuthProperties authProperties; | private AuthProperties authProperties; | ||||
@Autowired | @Autowired | ||||
private VerifyCodeCheckHelper verifyCodeCheckHelper; | private VerifyCodeCheckHelper verifyCodeCheckHelper; | ||||
@Autowired | |||||
private EnvironmentUtil environmentUtil; | |||||
@Override | @Override | ||||
public void configure(HttpSecurity http) { | public void configure(HttpSecurity http) { | ||||
@@ -53,6 +56,7 @@ public class CredentialAuthSecurityConfig extends SecurityConfigurerAdapter<Defa | |||||
credentialAuthFilter.setAuthenticationFailureHandler(defaultLoginFailureHandler); | credentialAuthFilter.setAuthenticationFailureHandler(defaultLoginFailureHandler); | ||||
CredentialAuthProvider authProvider = new CredentialAuthProvider(); | CredentialAuthProvider authProvider = new CredentialAuthProvider(); | ||||
authProvider.setEnvironmentUtil(environmentUtil); | |||||
authProvider.setPhoneVerifyCodeSkip(skipLoginVerifyCodeCheck); | authProvider.setPhoneVerifyCodeSkip(skipLoginVerifyCodeCheck); | ||||
authProvider.setUserDetailsService(credentialLoginUserDetailService); | authProvider.setUserDetailsService(credentialLoginUserDetailService); | ||||
authProvider.setVerifyCodeCheckHelper(verifyCodeCheckHelper); | authProvider.setVerifyCodeCheckHelper(verifyCodeCheckHelper); | ||||
@@ -156,7 +156,7 @@ sa-token: | |||||
login: | login: | ||||
phone-verify-code: | phone-verify-code: | ||||
skip: true | |||||
skip: false | |||||
sync-mh-expert: | sync-mh-expert: | ||||
open: false | open: false | ||||
sync-mh-unit: | sync-mh-unit: | ||||