评论sop
parent
02284d6976
commit
6d6ef8c424
@ -0,0 +1,33 @@
|
|||||||
|
package com.baiye.controller;
|
||||||
|
|
||||||
|
import com.baiye.core.base.api.Result;
|
||||||
|
import com.baiye.core.page.PageResult;
|
||||||
|
import com.baiye.dto.SopDto;
|
||||||
|
import com.baiye.query.SopQuery;
|
||||||
|
import com.baiye.service.TiktokSopService;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jt
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RequestMapping("/tiktok/sop")
|
||||||
|
public class TiktokSopController {
|
||||||
|
@Resource
|
||||||
|
private TiktokSopService tiktokSopService;
|
||||||
|
|
||||||
|
@PostMapping("add")
|
||||||
|
public Result<Object> addSop(@RequestBody SopDto sopDto) {
|
||||||
|
tiktokSopService.addSop(sopDto);
|
||||||
|
return Result.success();
|
||||||
|
}
|
||||||
|
@GetMapping("query")
|
||||||
|
public PageResult querySop(SopQuery sopQuery, Pageable pageable){
|
||||||
|
return tiktokSopService.querySop(sopQuery, pageable);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,88 @@
|
|||||||
|
package com.baiye.job;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.http.HttpStatus;
|
||||||
|
import cn.hutool.http.HttpUtil;
|
||||||
|
import cn.hutool.json.JSONArray;
|
||||||
|
import cn.hutool.json.JSONObject;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.baiye.core.base.api.Result;
|
||||||
|
import com.baiye.core.constant.TiktokRequestConstants;
|
||||||
|
import com.baiye.core.constant.TiktokResponse;
|
||||||
|
import com.baiye.core.util.StringUtils;
|
||||||
|
import com.baiye.dao.KeyWordMapper;
|
||||||
|
import com.baiye.dao.ReviewContentMapper;
|
||||||
|
import com.baiye.dao.SopMapper;
|
||||||
|
import com.baiye.dao.TiktokEquipmentMapper;
|
||||||
|
import com.baiye.entity.KeyWordEntity;
|
||||||
|
import com.baiye.entity.SopEntity;
|
||||||
|
import com.baiye.entity.TiktokEquipmentEntity;
|
||||||
|
import com.baiye.properties.TiktokProperties;
|
||||||
|
import com.baiye.service.TiktokEquipmentService;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jt
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class CommentSopJob {
|
||||||
|
|
||||||
|
private final SopMapper sopMapper;
|
||||||
|
private final ReviewContentMapper reviewContentMapper;
|
||||||
|
private final KeyWordMapper keyWordMapper;
|
||||||
|
private final TiktokEquipmentMapper tiktokEquipmentMapper;
|
||||||
|
private final TiktokProperties tiktokProperties;
|
||||||
|
|
||||||
|
@Scheduled(cron = "* * 0/1 * * ?")
|
||||||
|
public void commentSop() {
|
||||||
|
List<SopEntity> sopEntities = sopMapper.selectList(new QueryWrapper<>());
|
||||||
|
int hour = DateUtil.date().hour(true);
|
||||||
|
for (SopEntity sop : sopEntities) {
|
||||||
|
Integer executionStartTime = sop.getExecutionStartTime();
|
||||||
|
Integer executionEndTime = sop.getExecutionEndTime();
|
||||||
|
if (executionStartTime > hour || hour > executionEndTime) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//所有的抖音设备号
|
||||||
|
List<String> dyIds = tiktokEquipmentMapper.findVendorIdByOrganizeId(sop.getOrganizeId());
|
||||||
|
|
||||||
|
//所有的搜索关键词
|
||||||
|
QueryWrapper<KeyWordEntity> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("type", 0);
|
||||||
|
queryWrapper.eq("sop_id", sop.getSopId());
|
||||||
|
List<KeyWordEntity> keyWordEntityList = keyWordMapper.selectList(queryWrapper);
|
||||||
|
|
||||||
|
for (String dyId : dyIds) {
|
||||||
|
for (KeyWordEntity keyWord : keyWordEntityList) {
|
||||||
|
JSONObject childrenJson = new JSONObject();
|
||||||
|
childrenJson.putOpt("vendorId", dyId);
|
||||||
|
childrenJson.putOpt("keyWord", keyWord.getWord());
|
||||||
|
childrenJson.putOpt("offset", 0);
|
||||||
|
childrenJson.putOpt("checkLogin", false);
|
||||||
|
childrenJson.putOpt("checkProxyInfo", false);
|
||||||
|
|
||||||
|
JSONObject json = new JSONObject();
|
||||||
|
json.putOpt("sessionKey", tiktokProperties.getSessionKey());
|
||||||
|
json.putOpt("data", childrenJson);
|
||||||
|
String post = HttpUtil.post(tiktokProperties.getGatewayHost().concat(TiktokRequestConstants.SEARCH_VIDEO), JSONUtil.toJsonStr(json));
|
||||||
|
if (StringUtils.isNotBlank(post)) {
|
||||||
|
TiktokResponse tiktokResponse = JSONUtil.toBean(post, TiktokResponse.class);
|
||||||
|
if (tiktokResponse.getStatus() == HttpStatus.HTTP_OK) {
|
||||||
|
JSONObject value = JSONUtil.parseObj(tiktokResponse.getData()) ;
|
||||||
|
JSONArray awemeList = value.getJSONArray("aweme_list");
|
||||||
|
//todo 保存到泛资源库
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.baiye.dao;
|
||||||
|
|
||||||
|
import com.baiye.entity.KeyWordEntity;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jt
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface KeyWordMapper extends BaseMapper<KeyWordEntity> {
|
||||||
|
/**
|
||||||
|
* 批量添加关键词
|
||||||
|
*
|
||||||
|
* @param list
|
||||||
|
*/
|
||||||
|
void insertAll(@Param("list") List<KeyWordEntity> list);
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.baiye.dao;
|
||||||
|
|
||||||
|
import com.baiye.entity.ReviewContentEntity;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jt
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface ReviewContentMapper extends BaseMapper<ReviewContentEntity> {
|
||||||
|
/**
|
||||||
|
* 批量添加回评内容
|
||||||
|
* @param list
|
||||||
|
*/
|
||||||
|
void insertAll( @Param("list") List<ReviewContentEntity> list);
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.baiye.dao;
|
||||||
|
|
||||||
|
import com.baiye.entity.SopEntity;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jt
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface SopMapper extends BaseMapper<SopEntity> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,100 @@
|
|||||||
|
package com.baiye.dto;
|
||||||
|
|
||||||
|
import com.baiye.entity.KeyWordEntity;
|
||||||
|
import com.baiye.entity.ReviewContentEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jt
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class SopDto {
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
private Long sopId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sop名称
|
||||||
|
*/
|
||||||
|
private String sopName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行号组
|
||||||
|
*/
|
||||||
|
private Long organizeId;
|
||||||
|
/**
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
private String remake;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点赞数 0-不限制
|
||||||
|
*/
|
||||||
|
private Integer likeNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 评论天数 0-不限制
|
||||||
|
*/
|
||||||
|
private Integer commentDay;
|
||||||
|
/**
|
||||||
|
* 各号执行评论次数
|
||||||
|
*/
|
||||||
|
private Integer executionNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行开始时间
|
||||||
|
*/
|
||||||
|
private Date executionStartTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行结束时间
|
||||||
|
*/
|
||||||
|
private Date executionEndTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 搜索关键词
|
||||||
|
*/
|
||||||
|
private List<KeyWordEntity> searchKeyWords;
|
||||||
|
/**
|
||||||
|
* 过滤关键词
|
||||||
|
*/
|
||||||
|
private List<KeyWordEntity> filterKeyWords;
|
||||||
|
/**
|
||||||
|
* 匹配关键词
|
||||||
|
*/
|
||||||
|
private List<PreciseResource> matchKeyWords;
|
||||||
|
|
||||||
|
public static class PreciseResource {
|
||||||
|
private Long id;
|
||||||
|
private String matchKeyWord;
|
||||||
|
private List<ReviewContentEntity> reviewContents;
|
||||||
|
|
||||||
|
public String getMatchKeyWord() {
|
||||||
|
return matchKeyWord;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMatchKeyWord(String matchKeyWord) {
|
||||||
|
this.matchKeyWord = matchKeyWord;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ReviewContentEntity> getReviewContents() {
|
||||||
|
return reviewContents;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setReviewContents(List<ReviewContentEntity> reviewContents) {
|
||||||
|
this.reviewContents = reviewContents;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
package com.baiye.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jt
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@TableName("tb_key_word")
|
||||||
|
public class KeyWordEntity implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
@TableId(type = IdType.INPUT)
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 关键词
|
||||||
|
*/
|
||||||
|
private String word;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sopId
|
||||||
|
*/
|
||||||
|
private Long sopId;
|
||||||
|
/**
|
||||||
|
* 类型 0-搜索关键词 1-过滤关键词 2- 匹配关键词
|
||||||
|
*/
|
||||||
|
private Integer type;
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.baiye.entity;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jt
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@TableName("tb_review_content")
|
||||||
|
public class ReviewContentEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 回评内容
|
||||||
|
*/
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 关键词id
|
||||||
|
*/
|
||||||
|
private Long keyWordId;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,73 @@
|
|||||||
|
package com.baiye.entity;
|
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jt
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@TableName("tb_sop")
|
||||||
|
public class SopEntity implements Serializable {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
@TableId(type = IdType.INPUT)
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long sopId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sop名称
|
||||||
|
*/
|
||||||
|
private String sopName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行号组
|
||||||
|
*/
|
||||||
|
private Long organizeId;
|
||||||
|
/**
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
|
private String remake;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点赞数 0-不限制
|
||||||
|
*/
|
||||||
|
private Integer likeNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 评论天数 0-不限制
|
||||||
|
*/
|
||||||
|
private Integer commentDay;
|
||||||
|
/**
|
||||||
|
* 各号执行评论次数
|
||||||
|
*/
|
||||||
|
private Integer executionNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行开始时间
|
||||||
|
*/
|
||||||
|
private Integer executionStartTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 执行结束时间
|
||||||
|
*/
|
||||||
|
private Integer executionEndTime;
|
||||||
|
|
||||||
|
@TableField(value = "create_time", fill = FieldFill.INSERT)
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date createTime;
|
||||||
|
|
||||||
|
private Integer status;
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
package com.baiye.query;
|
||||||
|
|
||||||
|
import com.baiye.annotation.Query;
|
||||||
|
import com.baiye.annotation.type.SelectType;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jt
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class SopQuery {
|
||||||
|
|
||||||
|
@Query(type = SelectType.INNER_LIKE)
|
||||||
|
private String sopName;
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.baiye.service;
|
||||||
|
|
||||||
|
import com.baiye.core.page.PageResult;
|
||||||
|
import com.baiye.dto.SopDto;
|
||||||
|
import com.baiye.query.SopQuery;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jt
|
||||||
|
*/
|
||||||
|
public interface TiktokSopService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增sop
|
||||||
|
* @param dto
|
||||||
|
*/
|
||||||
|
void addSop(SopDto dto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询sop
|
||||||
|
* @param sopQuery
|
||||||
|
* @param pageable
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
PageResult querySop(SopQuery sopQuery, Pageable pageable);
|
||||||
|
}
|
@ -0,0 +1,162 @@
|
|||||||
|
package com.baiye.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.baiye.core.page.PageResult;
|
||||||
|
import com.baiye.core.util.BeanUtils;
|
||||||
|
import com.baiye.dao.KeyWordMapper;
|
||||||
|
import com.baiye.dao.ReviewContentMapper;
|
||||||
|
import com.baiye.dao.SopMapper;
|
||||||
|
import com.baiye.dto.SopDto;
|
||||||
|
import com.baiye.entity.KeyWordEntity;
|
||||||
|
import com.baiye.entity.ReviewContentEntity;
|
||||||
|
import com.baiye.entity.SopEntity;
|
||||||
|
import com.baiye.query.SopQuery;
|
||||||
|
import com.baiye.service.TiktokSopService;
|
||||||
|
import com.baiye.util.PageUtils;
|
||||||
|
import com.baiye.util.QueryHelpUtils;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jt
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class TiktokSopServiceImpl extends ServiceImpl<SopMapper, SopEntity> implements TiktokSopService {
|
||||||
|
@Resource
|
||||||
|
private SopMapper sopMapper;
|
||||||
|
@Resource
|
||||||
|
private ReviewContentMapper reviewContentMapper;
|
||||||
|
@Resource
|
||||||
|
private KeyWordMapper keyWordMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void addSop(SopDto dto) {
|
||||||
|
SopEntity sop;
|
||||||
|
Long id;
|
||||||
|
if (ObjectUtil.isNotEmpty(dto) && dto.getSopId() != null) {
|
||||||
|
//修改
|
||||||
|
sop = sopMapper.selectById(dto.getSopId());
|
||||||
|
id = dto.getSopId();
|
||||||
|
} else {
|
||||||
|
sop = new SopEntity();
|
||||||
|
id = IdUtil.getSnowflake(9, 9).nextId();
|
||||||
|
}
|
||||||
|
BeanUtils.copyProperties(dto, sop);
|
||||||
|
sop.setSopId(id);
|
||||||
|
|
||||||
|
List<KeyWordEntity> keyWordEntityList = new ArrayList<>();
|
||||||
|
//搜索关键词
|
||||||
|
List<KeyWordEntity> searchKeyWords = dto.getSearchKeyWords();
|
||||||
|
for (KeyWordEntity value : searchKeyWords) {
|
||||||
|
if (value.getId() != null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Long keyId = IdUtil.getSnowflake(9, 9).nextId();
|
||||||
|
value.setId(keyId);
|
||||||
|
value.setSopId(id);
|
||||||
|
value.setType(0);
|
||||||
|
keyWordEntityList.add(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
//过滤关键词
|
||||||
|
List<KeyWordEntity> filterKeyWords = dto.getFilterKeyWords();
|
||||||
|
for (KeyWordEntity value : filterKeyWords) {
|
||||||
|
if (value.getId() != null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Long keyId = IdUtil.getSnowflake(9, 9).nextId();
|
||||||
|
value.setId(keyId);
|
||||||
|
value.setSopId(id);
|
||||||
|
value.setType(1);
|
||||||
|
keyWordEntityList.add(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<SopDto.PreciseResource> matchKeyWords = dto.getMatchKeyWords();
|
||||||
|
List<ReviewContentEntity> contents = new ArrayList<>();
|
||||||
|
for (SopDto.PreciseResource resource : matchKeyWords) {
|
||||||
|
Long keyId = resource.getId();
|
||||||
|
if (resource.getId() == null) {
|
||||||
|
KeyWordEntity keyWord = new KeyWordEntity();
|
||||||
|
keyId = IdUtil.getSnowflake(9, 9).nextId();
|
||||||
|
keyWord.setId(keyId);
|
||||||
|
keyWord.setWord(resource.getMatchKeyWord());
|
||||||
|
keyWord.setSopId(id);
|
||||||
|
keyWord.setType(2);
|
||||||
|
keyWordEntityList.add(keyWord);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<ReviewContentEntity> reviewContents = resource.getReviewContents();
|
||||||
|
for (ReviewContentEntity content : reviewContents) {
|
||||||
|
if (content.getId() != null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ReviewContentEntity reviewContent = new ReviewContentEntity();
|
||||||
|
reviewContent.setContent(content.getContent());
|
||||||
|
reviewContent.setKeyWordId(keyId);
|
||||||
|
contents.add(reviewContent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sopMapper.insert(sop);
|
||||||
|
keyWordMapper.insertAll(keyWordEntityList);
|
||||||
|
reviewContentMapper.insertAll(contents);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult querySop(SopQuery sopQuery, Pageable pageable) {
|
||||||
|
Page<SopEntity> page = PageUtils.startPageAndSort(pageable);
|
||||||
|
QueryWrapper<SopEntity> queryWrapper = QueryHelpUtils.getWrapper(sopQuery, SopEntity.class);
|
||||||
|
Page<SopEntity> selectPage = sopMapper.selectPage(page, queryWrapper);
|
||||||
|
//当前在线情况
|
||||||
|
List<SopEntity> records = selectPage.getRecords();
|
||||||
|
List<SopDto> sopDtos = Convert.toList(SopDto.class, records);
|
||||||
|
for (SopDto sopDto : sopDtos) {
|
||||||
|
Long sopId = sopDto.getSopId();
|
||||||
|
//查寻关键词和回评
|
||||||
|
QueryWrapper<KeyWordEntity> wrapper = new QueryWrapper<>();
|
||||||
|
wrapper.eq("sop_id", sopId);
|
||||||
|
List<KeyWordEntity> keyWordEntityList = keyWordMapper.selectList(wrapper);
|
||||||
|
List<KeyWordEntity> keyWordBySearchKeys = new ArrayList<>();
|
||||||
|
List<KeyWordEntity> keyWordByFilterKeys = new ArrayList<>();
|
||||||
|
List<SopDto.PreciseResource> keyWordByMatchKeys = new ArrayList<>();
|
||||||
|
if (CollUtil.isNotEmpty(keyWordEntityList)) {
|
||||||
|
|
||||||
|
for (KeyWordEntity keyWord : keyWordEntityList) {
|
||||||
|
if (keyWord.getType() == 0) {
|
||||||
|
keyWordBySearchKeys.add(keyWord);
|
||||||
|
} else if (keyWord.getType() == 1) {
|
||||||
|
keyWordByFilterKeys.add(keyWord);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
SopDto.PreciseResource preciseResource = new SopDto.PreciseResource();
|
||||||
|
preciseResource.setId(keyWord.getId());
|
||||||
|
preciseResource.setMatchKeyWord(keyWord.getWord());
|
||||||
|
|
||||||
|
QueryWrapper<ReviewContentEntity> wrapperContent = new QueryWrapper<>();
|
||||||
|
wrapperContent.eq("key_word_id", keyWord.getId());
|
||||||
|
List<ReviewContentEntity> contentEntities = reviewContentMapper.selectList(wrapperContent);
|
||||||
|
preciseResource.setReviewContents(contentEntities);
|
||||||
|
|
||||||
|
keyWordByMatchKeys.add(preciseResource);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sopDto.setSearchKeyWords(keyWordBySearchKeys);
|
||||||
|
sopDto.setFilterKeyWords(keyWordByFilterKeys);
|
||||||
|
sopDto.setMatchKeyWords(keyWordByMatchKeys);
|
||||||
|
}
|
||||||
|
return PageResult.success(selectPage.getTotal(), selectPage.getPages(), sopDtos);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
<?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.baiye.dao.KeyWordMapper">
|
||||||
|
|
||||||
|
<!-- 通用查询映射结果 -->
|
||||||
|
<resultMap id="BaseResultMap" type="com.baiye.entity.KeyWordEntity">
|
||||||
|
<id column="id" property="id"/>
|
||||||
|
<result column="sop_id" property="sopId"/>
|
||||||
|
<result column="type" property="type"/>
|
||||||
|
<result column="word" property="word"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<insert id="insertAll">
|
||||||
|
insert into tb_key_word (id,word,sop_id,type)
|
||||||
|
values
|
||||||
|
<foreach collection="list" item="item" index="index" separator=",">
|
||||||
|
( #{item.id}, #{item.word},#{item.sopId},#{item.type})
|
||||||
|
</foreach>
|
||||||
|
</insert>
|
||||||
|
</mapper>
|
@ -0,0 +1,19 @@
|
|||||||
|
<?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.baiye.dao.ReviewContentMapper">
|
||||||
|
|
||||||
|
<!-- 通用查询映射结果 -->
|
||||||
|
<resultMap id="BaseResultMap" type="com.baiye.entity.ReviewContentEntity">
|
||||||
|
<id column="id" property="id"/>
|
||||||
|
<result column="content" property="content"/>
|
||||||
|
<result column="key_word_id" property="keyWordId"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<insert id="insertAll">
|
||||||
|
insert into tb_review_content (content,key_word_id)
|
||||||
|
values
|
||||||
|
<foreach collection="list" item="item" index="index" separator=",">
|
||||||
|
(#{item.content},#{item.keyWordId})
|
||||||
|
</foreach>
|
||||||
|
</insert>
|
||||||
|
</mapper>
|
Loading…
Reference in New Issue