Commit 41d2b47c authored by Administrator's avatar Administrator

1

Signed-off-by: Administrator's avatarAdministrator <admin@example.com>
parent ebaebb99
......@@ -178,4 +178,17 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
int year = localDate.getYear();
return year;
}
/***
*@Description: 获取当前 小时
*@Param:
*@return: int
*@Author: Dgm
*@date: 2023/11/29 16:05
*/
public static int getHour() {
LocalTime localDate = LocalTime.now();
int year = localDate.getHour();
return year;
}
}
package com.dsk.monitor.controlelr;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.monitor.domain.vo.*;
import com.dsk.monitor.service.MonitorService;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @ClassName MonitorController
* @Description 监控企业相关
* @Author Dgm
* @Date 2023/12/8 10:19
* @Version 1.0.0
*/
@RestController
@RequestMapping("/monitor")
public class MonitorController {
@Resource
private MonitorService monitorService;
/***
*@Description: 同步推送数据入库
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@PostMapping(value = "push/insert")
public R insert(@RequestBody PushMonitorInfoVo pushMonitorInfoVo) {
return monitorService.insert(pushMonitorInfoVo);
}
/***
*@Description: 监控维度下拉选择
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@GetMapping(value = "push/rulesSelect")
public R rulesSelect() {
return monitorService.rulesSelect();
}
/***
*@Description: 同步推送数据入库
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@PostMapping(value = "push/insertRules")
public R insertRules(@RequestBody PushMonitorRulesVo rulesVo) {
return monitorService.insertRules(rulesVo);
}
/***
*@Description: 我的推送规则
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@GetMapping(value = "push/rulesDetail")
public R rulesDetail(@RequestBody PushMonitorRulesDetailVo detailVo) {
return monitorService.rulesDetail(detailVo);
}
/***
*@Description: 监控动态/监控报告详情 分页
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@GetMapping(value = "companyDynamicPage")
public TableDataInfo companyDynamicPage(@RequestBody PushMonitorDynamicPageVo pageVo) throws Exception{
return monitorService.companyDynamicPage(pageVo);
}
/***
*@Description: 监控动态详情
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@GetMapping(value = "companyDynamic/detail")
public R companyDynamicDetail(@RequestBody PushMonitorDynamicDetailVo detailVo) {
return monitorService.companyDynamicDetail(detailVo);
}
/***
*@Description: 监控报告 分页
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@GetMapping(value = "reportPage")
public TableDataInfo reportPage(@RequestBody PushMonitorReportPageVo pageVo) throws Exception{
return monitorService.reportPage(pageVo);
}
/***
*@Description: 企业监控列表 分页
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@GetMapping(value = "system/companyPage")
public TableDataInfo companyPage(@RequestBody PushMonitorCompanyPageVo pageVo) throws Exception{
return monitorService.companyPage(pageVo);
}
/***
*@Description: 添加监控
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@PostMapping(value = "system/add")
public R systemAdd(@RequestBody PushMonitorCompanyAddVo addVo) {
return monitorService.systemAdd(addVo);
}
/***
*@Description: 取消监控
*@Param:
*@return: com.dsk.common.core.domain.R
*@Author: Dgm
*@date: 2023/12/9 9:29
*/
@PostMapping(value = "system/cancel")
public R systemCancel(@RequestBody PushMonitorCompanyCancelVo cancelVo) throws Exception{
return monitorService.systemCancel(cancelVo);
}
}
package com.dsk.monitor.domain.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @ClassName PushMonitorInfoDto
* @Description 推送监控信息
* @Author Dgm
* @Date 2023/12/9 9:43
* @Version
*/
@Data
public class PushMonitorInfoDto implements Serializable {
private static final long serialVersionUID = 6732846953537725830L;
/**
* 对外开放的id
*/
private String id;
/**
* 源表id
*/
private String sourceId;
/**
* 源表名
*/
private String sourceTable;
/**
* 公司Id
*/
private Integer companyId;
/**
* 企业名称
*/
private String companyName;
/**
* 风险等级:正向,负向,中立,警示
*/
private String riskLevel;
/**
* 监控维度父级
*/
private String parentDimension;
/**
* 监控维度
*/
private String dimension;
/**
* 动态内容
*/
private String details;
/**
* 发布时间
*/
private Date publishTime;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 变更时间-暂时用于法人变更
*/
private Date changeDate;
/**
* 更新次数
*/
private Integer versionNum;
/**
* 是否发送 0否 1是
*/
private Integer isSend;
/**
* 数据来源(jsk,fy)
*/
private String source;
/**
* 系统类型 JSK/BRIS
*/
private String sysType;
}
package com.dsk.monitor.domain.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @ClassName PushMonitorRulesDto
* @Description 推送监控规则信息
* @Author Dgm
* @Date 2023/12/9 9:43
* @Version
*/
@Data
public class PushMonitorRulesDto implements Serializable {
private static final long serialVersionUID = -2226356282137776096L;
/**
* id
*/
private Integer id;
/**
* 创建人Id
*/
private String userId;
/**
* 风险类型,多个逗号隔开
*/
private String riskType;
/**
* 监控维度,多个逗号隔开
*/
private String dimension;
/**
* 推送频率 每小时:0 每天:1 工作日:2
*/
private Integer pushFrequency;
/**
* 推送时段-起
*/
private Integer timePeriodStart;
/**
* 推送时段-止
*/
private Integer timePeriodEnd;
/**
* 接收方式 手机:0 PC:1
*/
private String receiveMode;
/**
* 手机号码,多个逗号隔开
*/
private String phones;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 更新次数
*/
private Integer versionNum;
}
package com.dsk.monitor.domain.vo;
import lombok.Data;
/**
* @ClassName ConditionVo
* @Description 共用条件
* @Author Dgm
* @Date 2023/12/9 15:36
* @Version
*/
@Data
public class ConditionVo {
/**
* 用户id
*/
private Integer userId = 98;
/**
* 条件查询企业id
*/
private Integer companyOrstaffId;
/**
* 条件查询企业名称(模糊查询)
*/
private String companyName;
/**
* 条件查询风险等级:正向,负向,中立,警示
*/
private String riskLevel;
/**
* 条件查询监控维度子级名称
*/
private String dimensionId;
/**
* 条件查询监控维度父级名称
*/
private String parentId;
/**
* 条件查询开始时间
*/
private String beginTime;
/**
* 条件查询结束时间
*/
private String endTime;
/**
* 报告类型(1.日报,2.周报,3.月报)
*/
private Integer reportType;
}
package com.dsk.monitor.domain.vo;
import com.dsk.jsk.domain.BasePage;
import lombok.Data;
import java.util.List;
/**
* @ClassName PushMonitorRulesVo
* @Description 监控报告 分页
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class PushMonitorCompanyAddVo {
/**
* 用户id
*/
private Integer userId = 98;
/**
* 多个企业id数组
*/
private List<Integer> cid;
}
package com.dsk.monitor.domain.vo;
import lombok.Data;
import java.util.List;
/**
* @ClassName PushMonitorRulesVo
* @Description 监控报告 分页
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class PushMonitorCompanyCancelVo {
/**
* 用户id
*/
private Integer userId = 98;
/**
* 多个企业id数组
*/
private List<Integer> cid;
}
package com.dsk.monitor.domain.vo;
import com.dsk.jsk.domain.BasePage;
import lombok.Data;
/**
* @ClassName PushMonitorRulesVo
* @Description 监控报告 分页
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class PushMonitorCompanyPageVo extends BasePage {
/**
* 查询条件
*/
private ConditionVo condition;
}
package com.dsk.monitor.domain.vo;
import lombok.Data;
/**
* @ClassName PushMonitorRulesVo
* @Description 监控动态详情
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class PushMonitorDynamicDetailVo {
private String id;
}
package com.dsk.monitor.domain.vo;
import com.dsk.jsk.domain.BasePage;
import lombok.Data;
/**
* @ClassName PushMonitorRulesVo
* @Description 监控动态/监控报告详情 分页
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class PushMonitorDynamicPageVo extends BasePage {
private ConditionVo condition;
}
package com.dsk.monitor.domain.vo;
import com.dsk.monitor.domain.dto.PushMonitorInfoDto;
import lombok.Data;
/**
* @ClassName PushMonitorInfoDto
* @Description 推送监控信息
* @Author Dgm
* @Date 2023/12/9 9:43
* @Version
*/
@Data
public class PushMonitorInfoVo extends PushMonitorInfoDto {
}
package com.dsk.monitor.domain.vo;
import com.dsk.jsk.domain.BasePage;
import lombok.Data;
/**
* @ClassName PushMonitorRulesVo
* @Description 企业监控列表 分页
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class PushMonitorReportPageVo extends BasePage {
/**
* 查询条件
*/
private ConditionVo condition;
}
package com.dsk.monitor.domain.vo;
import lombok.Data;
/**
* @ClassName PushMonitorRulesVo
* @Description 我的推送规则
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
@Data
public class PushMonitorRulesDetailVo {
/**
* 创建人Id
*/
private String userId;
}
package com.dsk.monitor.domain.vo;
import com.dsk.monitor.domain.dto.PushMonitorRulesDto;
/**
* @ClassName PushMonitorRulesVo
* @Description
* @Author Dgm
* @Date 2023/12/9 11:05
* @Version
*/
public class PushMonitorRulesVo extends PushMonitorRulesDto {
}
package com.dsk.monitor.job;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsk.common.utils.DateUtils;
import com.dsk.monitor.domain.dto.PushMonitorRulesDto;
import com.dsk.monitor.mapper.PushMonitorInfoMapper;
import com.dsk.monitor.mapper.PushMonitorRulesMapper;
import com.dsk.monitor.util.SendMessageUtil;
import org.springframework.scheduling.annotation.Scheduled;
import javax.annotation.Resource;
/**
* @ClassName PushScheduling
* @Description 发送短信
* @Author Dgm
* @Date 2023/12/9 13:51
* @Version
*/
public class PushScheduling {
@Resource
private PushMonitorInfoMapper monitorInfoMapper;
@Resource
private PushMonitorRulesMapper rulesMapper;
@Scheduled(cron = "0 0 5 * * * ?")
public void receiveModePhone() {
// 获取当前整点时间
Integer concurrentHour = DateUtils.getHour();
QueryWrapper queryWrapper = new QueryWrapper();
PushMonitorRulesDto detail = rulesMapper.selectOne(queryWrapper);
// 推送时段-起
Integer timePeriodStart = detail.getTimePeriodStart();
// 推送时段-止
Integer timePeriodEnd = detail.getTimePeriodEnd();
if (concurrentHour > timePeriodStart && concurrentHour < timePeriodEnd) {
QueryWrapper monitorInfoWrapper = new QueryWrapper();
// 风险类型
monitorInfoWrapper.in("risk_type", detail.getRiskType());
// 监控维度
monitorInfoWrapper.in("dimension", detail.getDimension());
Long count = monitorInfoMapper.selectCount(monitorInfoWrapper);
if (count >0 ) {
SendMessageUtil.sendMessage(detail.getPhones(), count.toString());
}
}
}
}
package com.dsk.monitor.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.monitor.domain.vo.PushMonitorInfoVo;
/**
* @ClassName PushMonitorInfoMapper
* @Description 推送监控内容
* @Author Dgm
* @Date 2023/12/9 9:38
* @Version 1.0.0
*/
public interface PushMonitorInfoMapper extends BaseMapper<PushMonitorInfoVo> {
}
package com.dsk.monitor.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.monitor.domain.dto.PushMonitorRulesDto;
/**
* @ClassName PushMonitorInfoMapper
* @Description 推送监控规则信息
* @Author Dgm
* @Date 2023/12/9 9:38
* @Version 1.0.0
*/
public interface PushMonitorRulesMapper extends BaseMapper<PushMonitorRulesDto> {
}
package com.dsk.monitor.service;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.monitor.domain.vo.*;
/**
* @ClassName MonitorService
* @Description 监控service
* @Author Dgm
* @Date 2023/12/9 10:01
* @Version
*/
public interface MonitorService {
/***
*@Description: 保存监控信息
*@Param: pushMonitorInfoDto 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
R insert(PushMonitorInfoVo pushMonitorInfoDto);
/***
*@Description: 监控维度下拉选择
*@Param:
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
R rulesSelect();
/***
*@Description: 保存监控规则信息
*@Param: monitorRulesDto 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
R insertRules(PushMonitorRulesVo monitorRulesDto);
/***
*@Description: 我的推送规则
*@Param: detailVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
R rulesDetail(PushMonitorRulesDetailVo detailVo);
/***
*@Description: 监控动态/监控报告 分页
*@Param: pageVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
TableDataInfo companyDynamicPage(PushMonitorDynamicPageVo pageVo) throws Exception;
/***
*@Description: 监控动态详情
*@Param: detailVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
R companyDynamicDetail(PushMonitorDynamicDetailVo detailVo);
/***
*@Description: 监控报告
*@Param: pageVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
TableDataInfo reportPage(PushMonitorReportPageVo pageVo) throws Exception;
/***
*@Description: 企业监控列表 分页
*@Param: pageVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
TableDataInfo companyPage(PushMonitorCompanyPageVo pageVo) throws Exception;
/***
*@Description: 添加监控
*@Param: addVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
R systemAdd(PushMonitorCompanyAddVo addVo);
/***
*@Description: 取消监控
*@Param: cancelVo 信息
*@return: R
*@Author: Dgm
*@date: 2023/12/9 10:03
*/
R systemCancel(PushMonitorCompanyCancelVo cancelVo);
}
package com.dsk.monitor.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.monitor.domain.dto.PushMonitorRulesDto;
import com.dsk.monitor.domain.vo.*;
import com.dsk.monitor.mapper.PushMonitorInfoMapper;
import com.dsk.monitor.mapper.PushMonitorRulesMapper;
import com.dsk.monitor.service.MonitorService;
import com.dsk.system.utils.DskOpenApiUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @ClassName MonitorServiceImpl
* @Description
* @Author Dgm
* @Date 2023/12/9 10:04
* @Version
*/
@Service
public class MonitorServiceImpl implements MonitorService {
@Resource
private PushMonitorInfoMapper monitorInfoMapper;
@Resource
private PushMonitorRulesMapper rulesMapper;
@Resource
private DskOpenApiUtil dskOpenApiUtil;
@Override
public R insert(PushMonitorInfoVo pushMonitorInfoDto) {
monitorInfoMapper.insert(pushMonitorInfoDto);
return R.ok();
}
@Override
public R rulesSelect() {
// todo 20231209 产品出细致 具体全部类型
Map<String, Object> objectMap = new HashMap<>(2);
List<String> riskType = new ArrayList<>(2);
riskType.add("工商风险");
riskType.add("司法风险");
objectMap.put("riskType", riskType);
// 维度
List<String> dimension = new ArrayList<>(10);
riskType.add("法院公告");
riskType.add("裁判文书");
riskType.add("开庭公告");
riskType.add("股权冻结");
riskType.add("限制高消费");
riskType.add("被执行人");
riskType.add("失信被执行人");
riskType.add("限制高消费");
objectMap.put("dimension", dimension);
return R.ok(objectMap);
}
@Override
public R insertRules(PushMonitorRulesVo monitorRulesDto) {
rulesMapper.insert(monitorRulesDto);
return R.ok();
}
@Override
public R rulesDetail(PushMonitorRulesDetailVo detailVo) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("user_id", detailVo.getUserId());
PushMonitorRulesDto detail = rulesMapper.selectOne(queryWrapper);
return R.ok(detail);
}
@Override
public TableDataInfo companyDynamicPage(PushMonitorDynamicPageVo pageVo) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/company/info/companyDynamicList", BeanUtil.beanToMap(pageVo, false, false));
return dskOpenApiUtil.responsePage(map);
}
@Override
public R companyDynamicDetail(PushMonitorDynamicDetailVo detailVo) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("id", detailVo.getId());
PushMonitorInfoVo detail = monitorInfoMapper.selectOne(queryWrapper);
return R.ok(detail);
}
@Override
public TableDataInfo reportPage(PushMonitorReportPageVo pageVo) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/company/info/monitor/report", BeanUtil.beanToMap(pageVo, false, false));
return dskOpenApiUtil.responsePage(map);
}
@Override
public TableDataInfo companyPage(PushMonitorCompanyPageVo pageVo) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/monitor/company/supplier/system/paging", BeanUtil.beanToMap(pageVo, false, false));
return dskOpenApiUtil.responsePage(map);
}
@Override
public R systemAdd(PushMonitorCompanyAddVo addVo) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/monitor/company/supplier/system/add", BeanUtil.beanToMap(addVo, false, false));
return BeanUtil.toBean(map, R.class);
}
@Override
public R systemCancel(PushMonitorCompanyCancelVo cancelVo) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/monitor/company/supplier/system/cancel", BeanUtil.beanToMap(cancelVo, false, false));
return BeanUtil.toBean(map, R.class);
}
}
package com.dsk.monitor.util;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sms4j.api.SmsBlend;
import org.dromara.sms4j.api.entity.SmsResponse;
import org.dromara.sms4j.core.factory.SmsFactory;
import org.dromara.sms4j.provider.enumerate.SupplierType;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
/**
* @ClassName SendMessageUtil
* @Description 发送短息
* @Author Dgm
* @Date 2023/12/9 14:14
* @Version
*/
@Slf4j
public class SendMessageUtil {
public static void sendMessage(String phones, String message) {
String[] array = phones.split(",");
List<String> stringList = Arrays.asList(array);
for (String phone : stringList) {
LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
map.put("code", message);
SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
SmsResponse smsResponse = smsBlend.sendMessage(phone, "SMS_181860796", map);
if (!"OK".equals(smsResponse.getCode())) {
log.error("验证码短信发送异常 => {}", smsResponse);
}
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment