diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/helper/MeetingNotifyHelper.java b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/helper/MeetingNotifyHelper.java index 2a22fcc..9d53670 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meeting/helper/MeetingNotifyHelper.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meeting/helper/MeetingNotifyHelper.java @@ -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.sms.constant.VoiceSmsTemplateConst; 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.enumeration.BizTypeEnum; import com.hz.pm.api.sys.service.INotifyService; @@ -51,7 +50,6 @@ public class MeetingNotifyHelper { private final IUserInfoService userInfoService; private final MsgCallHelper msgCallHelper; - private final INdWorkNoticeStagingService workNoticeStagingService; private final IDingEmployeeInfoService dingEmployeeInfoService; private final IDingOrganizationService dingOrganizationService; private final INotifyService notifyService; @@ -112,9 +110,6 @@ public class MeetingNotifyHelper { msgCallHelper.sendMsg(info.getMobile(), msgContent, BizTypeEnum.EXPERT_INVITE_STOP); // 发送工作通知 if (info.getAccountId() != null) { - WorkNoticeInfo swn = getSendWorkNoticeInfo(info.getAccountId()); - swn.setMsg(msgContent); - workNoticeStagingService.addByWorkNotice(swn, MsgTypeEnum.REVIEW_MEETING); Map map = new HashMap<>(2); map.put("meetingId", meetingId); Notify notify = getNotify(userId, msgContent, MsgTypeEnum.REVIEW_MEETING, map); @@ -163,7 +158,6 @@ public class MeetingNotifyHelper { } }); notifyService.saveBatch(notifies); - workNoticeStagingService.addByWorkNotice(workingNotices, MsgTypeEnum.EXPERT_REVIEW); } @@ -242,9 +236,6 @@ public class MeetingNotifyHelper { msgCallHelper.sendMsg(info.getMobile(), msgContent, BizTypeEnum.EXPERT_LEAVE); // 发送工作通知 if (info.getAccountId() != null) { - WorkNoticeInfo swn = getSendWorkNoticeInfo(info.getAccountId()); - swn.setMsg(msgContent); - workNoticeStagingService.addByWorkNotice(swn, MsgTypeEnum.REVIEW_MEETING); Map map = new HashMap<>(2); map.put("meetingId", meeting.getId()); Notify notify = getNotify(userId, msgContent, MsgTypeEnum.REVIEW_MEETING, map); diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/meta/helper/impl/TagsCacheImpl.java b/hz-pm-api/src/main/java/com/hz/pm/api/meta/helper/impl/TagsCacheImpl.java index 5a70d9c..1027a79 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/meta/helper/impl/TagsCacheImpl.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/meta/helper/impl/TagsCacheImpl.java @@ -32,9 +32,11 @@ public class TagsCacheImpl extends AbstractTagsCache { @Override public TagTreeDTO getTagTreeDTO(int level, String rootTagCode) { List 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"); diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/WorkNoticeFlowTask.java b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/WorkNoticeFlowTask.java deleted file mode 100644 index 051b62f..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/WorkNoticeFlowTask.java +++ /dev/null @@ -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 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); - } - } - } - } -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/model/CommonLog.java b/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/model/CommonLog.java deleted file mode 100644 index 74ead5f..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/model/CommonLog.java +++ /dev/null @@ -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; -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/staging/mapper/NdWorkNoticeStagingMapper.java b/hz-pm-api/src/main/java/com/hz/pm/api/staging/mapper/NdWorkNoticeStagingMapper.java deleted file mode 100644 index 98d85a3..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/staging/mapper/NdWorkNoticeStagingMapper.java +++ /dev/null @@ -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; - -/** - *

- * Mapper 接口 - *

- * - * @author CMM - * @since 2023-02-28 - */ -public interface NdWorkNoticeStagingMapper extends BaseMapper { - - Boolean addRetryTimes(@Param("id") Long id, @Param("retryTimes") Integer retryTimes, - @Param("nextRetryTime") LocalDateTime nextRetryTime, @Param("dead") Boolean dead); -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/staging/mapper/NdWorkNoticeStagingMapper.xml b/hz-pm-api/src/main/java/com/hz/pm/api/staging/mapper/NdWorkNoticeStagingMapper.xml deleted file mode 100644 index e54045b..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/staging/mapper/NdWorkNoticeStagingMapper.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - update nd_work_notice_staging - set retry_times = #{retryTimes}, - next_time = #{nextRetryTime}, - dead = #{dead} - where id = #{id} and retry_times = #{retryTimes} - 1 - - diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/staging/model/entity/WorkNoticeStaging.java b/hz-pm-api/src/main/java/com/hz/pm/api/staging/model/entity/WorkNoticeStaging.java deleted file mode 100644 index 25af33b..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/staging/model/entity/WorkNoticeStaging.java +++ /dev/null @@ -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; - -/** - *

- * - *

- * - * @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; -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/staging/service/INdWorkNoticeStagingService.java b/hz-pm-api/src/main/java/com/hz/pm/api/staging/service/INdWorkNoticeStagingService.java deleted file mode 100644 index 8d2301f..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/staging/service/INdWorkNoticeStagingService.java +++ /dev/null @@ -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; - -/** - *

- * 服务类 - *

- * - * @author CMM - * @since 2023-02-28 - */ -public interface INdWorkNoticeStagingService extends IService { - - Boolean addRetryTimes(WorkNoticeStaging workNoticeStaging); - - Boolean addByWorkNotice(WorkNoticeInfo workNoticeInfo, MsgTypeEnum msgType); - - /** - * 批量保存工作通知 - * - * @param workNoticeInfos 工作通知内容 - * @param msgType 通知类型 - */ - void addByWorkNotice(List workNoticeInfos, MsgTypeEnum msgType); - -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/staging/service/impl/NdWorkNoticeStagingServiceImpl.java b/hz-pm-api/src/main/java/com/hz/pm/api/staging/service/impl/NdWorkNoticeStagingServiceImpl.java deleted file mode 100644 index 33f7749..0000000 --- a/hz-pm-api/src/main/java/com/hz/pm/api/staging/service/impl/NdWorkNoticeStagingServiceImpl.java +++ /dev/null @@ -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; - -/** - *

- * 服务实现类 - *

- * - * @author CMM - * @since 2023-02-28 - */ -@Service -@Slf4j -@RequiredArgsConstructor -public class NdWorkNoticeStagingServiceImpl extends ServiceImpl 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 workNoticeInfos, MsgTypeEnum msgType) { - LocalDateTime now = LocalDateTime.now(); - List 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); - } - -} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/NoticeManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/NoticeManage.java index 360f398..592b005 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/NoticeManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/sys/manage/NoticeManage.java @@ -78,7 +78,7 @@ public class NoticeManage { @Transactional(rollbackFor = Exception.class) public IdVo saveOrModify(NoticeSaveReq req) { Notice notice = BeanUtil.copyProperties(req, Notice.class); - permissionsSave(notice, LoginUserUtil.userDetail()); + permissionsSave(notice, LoginUserUtil.userDetailNotNull()); noticeService.saveOrUpdate(notice); return IdVo.of(notice.getId()); } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/user/security/auth/constants/SessionTimeConst.java b/hz-pm-api/src/main/java/com/hz/pm/api/user/security/auth/constants/SessionTimeConst.java index 0b940b2..63fb427 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/user/security/auth/constants/SessionTimeConst.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/user/security/auth/constants/SessionTimeConst.java @@ -13,6 +13,8 @@ public class SessionTimeConst { public static final Integer SESSION_TIME_SECONDS = 24 * 60 * 60 * 10; 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"; } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/user/security/auth/credential/CredentialAuthProvider.java b/hz-pm-api/src/main/java/com/hz/pm/api/user/security/auth/credential/CredentialAuthProvider.java index b15c8ab..e0543cf 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/user/security/auth/credential/CredentialAuthProvider.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/user/security/auth/credential/CredentialAuthProvider.java @@ -1,5 +1,7 @@ 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.helper.VerifyCodeCheckHelper; 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.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; + /** *

* CredentialAuthProvider @@ -27,7 +32,7 @@ public class CredentialAuthProvider implements AuthenticationProvider { private UserDetailsService userDetailsService; private Boolean phoneVerifyCodeSkip; - + private EnvironmentUtil environmentUtil; private VerifyCodeCheckHelper verifyCodeCheckHelper; @@ -44,12 +49,10 @@ public class CredentialAuthProvider implements AuthenticationProvider { String credentials = (String) authenticationToken.getCredentials(); switch (loginType) { 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()); } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/user/security/auth/credential/CredentialAuthSecurityConfig.java b/hz-pm-api/src/main/java/com/hz/pm/api/user/security/auth/credential/CredentialAuthSecurityConfig.java index 845a0b3..0df5496 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/user/security/auth/credential/CredentialAuthSecurityConfig.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/user/security/auth/credential/CredentialAuthSecurityConfig.java @@ -1,5 +1,6 @@ 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.user.security.config.AuthProperties; import org.springframework.beans.factory.annotation.Autowired; @@ -42,6 +43,8 @@ public class CredentialAuthSecurityConfig extends SecurityConfigurerAdapter