提交 4d32e6e5 作者: 925993793@qq.com

增加简化版的事件新增逻辑

上级 54dbc4e0
...@@ -3,21 +3,18 @@ package com.zzsn.event.controller; ...@@ -3,21 +3,18 @@ package com.zzsn.event.controller;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zzsn.event.constant.Constants; import com.zzsn.event.constant.Constants;
import com.zzsn.event.constant.Result; import com.zzsn.event.constant.Result;
import com.zzsn.event.entity.Event;
import com.zzsn.event.es.EsService; import com.zzsn.event.es.EsService;
import com.zzsn.event.service.EventSimpleService;
import com.zzsn.event.service.IEventService; import com.zzsn.event.service.IEventService;
import com.zzsn.event.vo.EventExcelVO; import com.zzsn.event.vo.*;
import com.zzsn.event.vo.EventFrontVO; import com.zzsn.event.xxljob.service.IXxlJobInfoService;
import com.zzsn.event.vo.StatisticsKeyWordVo;
import com.zzsn.event.vo.SubjectDataVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -38,6 +35,10 @@ public class EventDataController { ...@@ -38,6 +35,10 @@ public class EventDataController {
private IEventService eventService; private IEventService eventService;
@Autowired @Autowired
private EsService esService; private EsService esService;
@Autowired
private EventSimpleService eventSimpleService;
@Autowired
private IXxlJobInfoService iXxlJobInfoService;
/** /**
...@@ -70,6 +71,20 @@ public class EventDataController { ...@@ -70,6 +71,20 @@ public class EventDataController {
return Result.OK(pageList); return Result.OK(pageList);
} }
/**
* 新增事件(页面简化版)
*
* @param addEventVO 事件信息
* @author lkg
* @date 2024/7/22
*/
@PostMapping("/simpleSaveEvent")
public Result<?> addEvent(@RequestBody AddEventVO addEventVO){
Event event = eventSimpleService.simpleSave(addEventVO);
iXxlJobInfoService.subjectInsert(event);
return Result.OK();
}
/** /**
* 事件资讯分页列表 * 事件资讯分页列表
......
package com.zzsn.event.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* @Description: 关键词管理
* @Author: jeecg-boot
* @Date: 2021-11-26
* @Version: V1.0
*/
@Data
@TableName("key_words")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="key_words对象", description="关键词管理")
public class KeyWords implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private String id;
/**词组编码*/
@Excel(name = "词组编码", width = 15)
@ApiModelProperty(value = "词组编码")
private String wordsCode;
/**词组名称*/
@Excel(name = "词组名称", width = 15)
@ApiModelProperty(value = "词组名称")
private String wordsName;
/**关键词*/
@Excel(name = "关键词", width = 15)
@ApiModelProperty(value = "关键词")
private String keyWord;
/**排除词*/
@Excel(name = "排除词", width = 15)
@ApiModelProperty(value = "排除词")
private String exclusionWord;
/**状态*/
@Excel(name = "状态", width = 15, dicCode = "use_status")
@ApiModelProperty(value = "状态")
private String status;
/**创建人*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期")
private Date updateTime;
/**所属部门*/
@ApiModelProperty(value = "所属部门")
private String sysOrgCode;
/**所属客户*/
@ApiModelProperty(value = "所属客户")
private String customerId;
}
package com.zzsn.event.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* @Description: 关键词与类别关联关系
* @Author: jeecg-boot
* @Date: 2021-12-01
* @Version: V1.0
*/
@Data
@TableName("keywords_type_map")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="keywords_type_map对象", description="关键词与类别关联关系")
public class KeywordsTypeMap implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private String id;
/**关键词id*/
@Excel(name = "关键词id", width = 15)
@ApiModelProperty(value = "关键词id")
private String keywordsId;
/**类别id*/
@Excel(name = "类别id", width = 15)
@ApiModelProperty(value = "类别id")
private String typeId;
/**创建人*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期")
private Date updateTime;
/**所属部门*/
@ApiModelProperty(value = "所属部门")
private String sysOrgCode;
}
package com.zzsn.event.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
/**
* @Description: 专题与搜索引擎关联表
* @Author: jeecg-boot
* @Date: 2022-06-21
* @Version: V1.0
*/
@Data
@TableName("subject_search_engines_map")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="subject_search_engines_map对象", description="专题与搜索引擎关联表")
public class SubjectSearchEnginesMap implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private String id;
/**专题id*/
@Excel(name = "专题id", width = 15)
@ApiModelProperty(value = "专题id")
private String subjectId;
/**搜索引擎id*/
@Excel(name = "搜索引擎id", width = 15)
@ApiModelProperty(value = "搜索引擎id")
private String searchEngineId;
}
...@@ -2,7 +2,7 @@ package com.zzsn.event.mapper; ...@@ -2,7 +2,7 @@ package com.zzsn.event.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zzsn.event.vo.KeyWordsPage; import com.zzsn.event.vo.KeyWordsPage;
import com.zzsn.event.xxljob.entity.KeyWords; import com.zzsn.event.entity.KeyWords;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
......
package com.zzsn.event.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zzsn.event.entity.KeywordsTypeMap;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Description: 关键词与类别关联关系
* @Author: jeecg-boot
* @Date: 2021-12-01
* @Version: V1.0
*/
@Mapper
public interface KeywordsTypeMapMapper extends BaseMapper<KeywordsTypeMap> {
}
package com.zzsn.event.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zzsn.event.entity.SubjectSearchEnginesMap;
import org.apache.ibatis.annotations.Mapper;
/**
* @Description: 专题与搜索引擎关联表
* @Author: jeecg-boot
* @Date: 2022-06-21
* @Version: V1.0
*/
@Mapper
public interface SubjectSearchEnginesMapMapper extends BaseMapper<SubjectSearchEnginesMap> {
}
<?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.zzsn.event.mapper.KeywordsTypeMapMapper">
</mapper>
\ No newline at end of file
package com.zzsn.event.service;
import com.cronutils.model.Cron;
import com.zzsn.event.entity.*;
import com.zzsn.event.enums.CodePrefixEnum;
import com.zzsn.event.util.CodeGenerateUtil;
import com.zzsn.event.util.CronUtil;
import com.zzsn.event.util.DateUtil;
import com.zzsn.event.vo.AddEventVO;
import com.zzsn.event.vo.RegionVO;
import com.zzsn.event.vo.SubjectKeywordsMap;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 简化版事件新增逻辑
*
* @author lkg
* @date 2024/7/22
*/
@Service
public class EventSimpleService {
@Autowired
private CodeGenerateUtil codeGenerateUtil;
@Autowired
private IEventService eventService;
@Autowired
private ISubjectTypeMapService subjectTypeMapService;
@Autowired
private IProjectSubjectMapService projectSubjectMapService;
@Autowired
private ISubjectSearchEnginesMapService subjectSearchEnginesMapService;
@Autowired
private IKeyWordsService keyWordsService;
@Autowired
private IKeywordsTypeMapService keywordsTypeMapService;
@Autowired
private ISubjectKeywordsMapService subjectKeywordsMapService;
@Autowired
private IEventTagService eventTagService;
@Autowired
private EventRegionMapService eventRegionMapService;
//默认搜索引擎
private final static String[] SEARCH_ENGINES = new String[]{"1539145903551361026","1539146006513135617","1539146115049140225"};
/**
* 新增事件(页面简化版)
*
* @param addEventVO 事件信息
* @author lkg
* @date 2024/7/19
*/
@Transactional
public Event simpleSave(AddEventVO addEventVO) {
Event event = new Event();
BeanUtils.copyProperties(addEventVO, event);
event.setIncreAnaRule(20);
event.setTotalAnaRule(50);
event.setTimeAnaRule(5);
String subjectCode = codeGenerateUtil.geneCodeNo(CodePrefixEnum.SUBJECT_DEFAULT.getValue());
event.setEventCode(subjectCode);
//默认发布
event.setPublishStatus(1);
event.setPublishDate(DateUtil.dateToString(new Date()));
//调度周期,默认2小时
event.setUnit("2");
event.setSpace(2);
event.setCron(CronUtil.generateCron("2",2));
event.setCreateTime(new Date());
eventService.save(event);
String eventId = event.getId();
saveMapMain(eventId);
saveKeyword(event, addEventVO.getKeywords(), addEventVO.getExclusionWord());
//事件标签
eventTagService.save(EventTag.builder().eventId(eventId).build());
//地域关系绑定
List<RegionVO> regionList = addEventVO.getRegionList();
addRegionMap(eventId, regionList);
return event;
}
private void saveMapMain(String eventId) {
//专题和分类关系
SubjectTypeMap subjectTypeMap = new SubjectTypeMap();
subjectTypeMap.setSubjectId(eventId);
subjectTypeMap.setCreateTime(new Date());
//分类默认 研究中心
subjectTypeMap.setTypeId("1802619433932296193");
subjectTypeMapService.save(subjectTypeMap);
//专题和项目关系
ProjectSubjectMap projectSubjectMap = new ProjectSubjectMap();
//项目默认 研究中心
projectSubjectMap.setProjectId("1476527644425682945");
projectSubjectMap.setSubjectId(eventId);
projectSubjectMapService.save(projectSubjectMap);
//专题和搜索引擎关系
List<SubjectSearchEnginesMap> enginesMaps = new ArrayList<>();
for (String searchEngine : SEARCH_ENGINES) {
SubjectSearchEnginesMap subjectSearchEnginesMap = new SubjectSearchEnginesMap();
subjectSearchEnginesMap.setSearchEngineId(searchEngine);
subjectSearchEnginesMap.setSubjectId(eventId);
enginesMaps.add(subjectSearchEnginesMap);
}
subjectSearchEnginesMapService.saveBatch(enginesMaps);
}
private void saveKeyword(Event event, String keyword, String exclusionWord) {
if (StringUtils.isNotEmpty(keyword) || StringUtils.isNotEmpty(exclusionWord)) {
//关键词
KeyWords keyWords = new KeyWords();
String wordsCode = codeGenerateUtil.geneCodeNo(CodePrefixEnum.KEY_WORDS_DEFAULT.getValue());
keyWords.setWordsCode(wordsCode);
keyWords.setWordsName(event.getEventName());
keyWords.setKeyWord(keyword);
keyWords.setExclusionWord(exclusionWord);
keyWords.setStatus("1");
keyWords.setCreateTime(new Date());
keyWordsService.save(keyWords);
String keyWordsId = keyWords.getId();
//关键词和分类关系
KeywordsTypeMap keywordsTypeMap = new KeywordsTypeMap();
keywordsTypeMap.setKeywordsId(keyWordsId);
//分类默认 事件专题
keywordsTypeMap.setTypeId("1802634369064525826");
keywordsTypeMap.setCreateTime(new Date());
keywordsTypeMapService.save(keywordsTypeMap);
//专题和关键词关系
SubjectKeywordsMap subjectKeywordsMap = new SubjectKeywordsMap();
subjectKeywordsMap.setKeywordsId(keyWordsId);
subjectKeywordsMap.setSubjectId(event.getId());
subjectKeywordsMapService.save(subjectKeywordsMap);
}
}
private void addRegionMap(String eventId, List<RegionVO> regionList) {
if (CollectionUtils.isNotEmpty(regionList)) {
List<EventRegionMap> dataList = new ArrayList<>();
for (RegionVO regionVO : regionList) {
EventRegionMap eventRegionMap = new EventRegionMap();
eventRegionMap.setEventId(eventId);
eventRegionMap.setRegionId(regionVO.getId());
eventRegionMap.setTopRegionId(regionVO.getTopId());
eventRegionMap.setType(regionVO.getType());
eventRegionMap.setCreateTime(new Date());
dataList.add(eventRegionMap);
}
eventRegionMapService.saveBatch(dataList);
}
}
}
...@@ -2,7 +2,7 @@ package com.zzsn.event.service; ...@@ -2,7 +2,7 @@ package com.zzsn.event.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.zzsn.event.vo.KeyWordsPage; import com.zzsn.event.vo.KeyWordsPage;
import com.zzsn.event.xxljob.entity.KeyWords; import com.zzsn.event.entity.KeyWords;
import java.util.List; import java.util.List;
......
package com.zzsn.event.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zzsn.event.entity.KeywordsTypeMap;
/**
* @Description: 关键词与类别关联关系
* @Author: jeecg-boot
* @Date: 2021-12-01
* @Version: V1.0
*/
public interface IKeywordsTypeMapService extends IService<KeywordsTypeMap> {
}
package com.zzsn.event.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zzsn.event.entity.SubjectSearchEnginesMap;
/**
* @Description: 专题与搜索引擎关联表
* @Author: jeecg-boot
* @Date: 2022-06-21
* @Version: V1.0
*/
public interface ISubjectSearchEnginesMapService extends IService<SubjectSearchEnginesMap> {
}
...@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; ...@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.event.mapper.KeyWordsMapper; import com.zzsn.event.mapper.KeyWordsMapper;
import com.zzsn.event.service.IKeyWordsService; import com.zzsn.event.service.IKeyWordsService;
import com.zzsn.event.vo.KeyWordsPage; import com.zzsn.event.vo.KeyWordsPage;
import com.zzsn.event.xxljob.entity.KeyWords; import com.zzsn.event.entity.KeyWords;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
......
package com.zzsn.event.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.event.entity.KeywordsTypeMap;
import com.zzsn.event.mapper.KeywordsTypeMapMapper;
import com.zzsn.event.service.IKeywordsTypeMapService;
import org.springframework.stereotype.Service;
/**
* @Description: 关键词与类别关联关系
* @Author: jeecg-boot
* @Date: 2021-12-01
* @Version: V1.0
*/
@Service
public class KeywordsTypeMapServiceImpl extends ServiceImpl<KeywordsTypeMapMapper, KeywordsTypeMap> implements IKeywordsTypeMapService {
}
package com.zzsn.event.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.event.entity.SubjectSearchEnginesMap;
import com.zzsn.event.mapper.SubjectSearchEnginesMapMapper;
import com.zzsn.event.service.ISubjectSearchEnginesMapService;
import org.springframework.stereotype.Service;
/**
* @Description: 专题与搜索引擎关联表
* @Author: jeecg-boot
* @Date: 2022-06-21
* @Version: V1.0
*/
@Service
public class SubjectSearchEnginesMapServiceImpl extends ServiceImpl<SubjectSearchEnginesMapMapper, SubjectSearchEnginesMap> implements ISubjectSearchEnginesMapService {
}
package com.zzsn.event.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
*
*
* @author lkg
* @date 2024/7/19
*/
@Getter
@Setter
public class AddEventVO {
/**图标*/
private String eventIcon;
/**名称*/
private String eventName;
/**事件类型*/
private String eventType;
/**事件描述*/
private String eventDescribe;
/**开始时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date startTime;
/**结束时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date endTime;
/**标签*/
private String eventLabel;
/**是否公开*/
private Integer facePublic;
/**事件地域信息*/
List<RegionVO> regionList;
/**关键词*/
private String keywords;
/**屏蔽词*/
private String exclusionWord;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论