Commit 2c46e099 by 裴大威

1002279非关键词回复增加后台配置

parent eda95919
package com.pcloud.book.keywords.biz;
import com.pcloud.book.keywords.entity.NotKeywordTemplate;
import com.pcloud.common.page.PageBeanNew;
public interface NotKeywordBiz {
void createNotKeywordTemplate(NotKeywordTemplate notKeywordTemplate);
void deleteNotKeywordTemplate(Long id);
PageBeanNew<NotKeywordTemplate> getNotKeywordTemplateList(Integer currentPage, Integer numPerPage);
NotKeywordTemplate getNotKeywordTemplate(Long id);
}
......@@ -171,6 +171,10 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
private SelfRobotKeywordReplyDao selfRobotKeywordReplyDao;
@Autowired
private ReadingActivityBiz readingActivityBiz;
@Autowired
private NotKeywordTemplateDao notKeywordTemplateDao;
@Autowired
private NotKeywordItemDao notKeywordItemDao;
/**
* 字符串切割长度
*/
......@@ -597,12 +601,53 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
BookGroup bookGroup = bookGroupDao.getByShortBookName(content);
Boolean isActivityKeyword = readingActivityBiz.isKeyWord(sendTextDTO);
if (bookGroup == null && !isActivityKeyword) {
sendText(sendTextDTO, "抱歉呀!小睿不太明白你在说什么。嘿嘿!你的语言太高级了,待小睿深度解析一下,我还在不断学习呢!或者你看看,是不是关键词输错了呢?麻烦你再输一遍正确的关键词?比如回复我背单词。");
sendNotKeywords(sendTextDTO);
}
}
}
}
@ParamLog("发送非关键词回复模板")
private void sendNotKeywords(SendTextDTO sendTextDTO) {
NotKeywordTemplate template=notKeywordTemplateDao.getRandomTemplate();
if (template==null){
return;
}
List<NotKeywordItem> list = notKeywordItemDao.getListByTemplateIds(Arrays.asList(template.getId()));
if (ListUtils.isEmpty(list)){
return;
}
String userWxId = sendTextDTO.getWechatUserId();
String ip = sendTextDTO.getIp();
Integer code = sendTextDTO.getCode();
String robotId = sendTextDTO.getWxId();
for (NotKeywordItem notKeywordItem:list){
Integer type = notKeywordItem.getType();
if (ReplyTypeEnum.TEXT.value.equals(type)) {
SendTextMessageVO sendTextMessageVO = new SendTextMessageVO();
sendTextMessageVO.setContent(notKeywordItem.getContent());
sendTextMessageVO.setAltId(robotId);
sendTextMessageVO.setWxGroupId(userWxId);
sendTextMessageVO.setIp(ip);
sendTextMessageVO.setCode(code);
WxGroupSDK.sendTextMessage(sendTextMessageVO);
}
if (ReplyTypeEnum.RESOURCE.value.equals(type)) {
SendFileVO sendFileVO = new SendFileVO();
Map<Long, ResourceDTO> map = resourceConsr.mapByIds(Arrays.asList(notKeywordItem.getResourceId()));
ResourceDTO resourceDTO = map.get(notKeywordItem.getResourceId());
if (resourceDTO != null) {
sendFileVO.setFileUrl(resourceDTO.getFileUrl());
sendFileVO.setFileName(resourceDTO.getResourceName());
}
sendFileVO.setIp(ip);
sendFileVO.setAltId(robotId);
sendFileVO.setWxId(userWxId);
WxGroupSDK.sendFile(sendFileVO);
}
}
}
@ParamLog("推送新版关键词回复消息")
private void sendSelfKeyword(SelfRobotKeyword selfRobotKeyword, SendTextDTO sendTextDTO) {
String userWxId = sendTextDTO.getWechatUserId();
......
package com.pcloud.book.keywords.biz.impl;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.consumer.content.ResourceConsr;
import com.pcloud.book.keywords.biz.NotKeywordBiz;
import com.pcloud.book.keywords.dao.NotKeywordItemDao;
import com.pcloud.book.keywords.dao.NotKeywordTemplateDao;
import com.pcloud.book.keywords.entity.NotKeywordItem;
import com.pcloud.book.keywords.entity.NotKeywordTemplate;
import com.pcloud.book.keywords.enums.ReplyTypeEnum;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.contentcenter.resource.dto.ResourceDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Component("notKeywordBiz")
public class NotKeywordBizImpl implements NotKeywordBiz {
@Autowired
private NotKeywordTemplateDao notKeywordTemplateDao;
@Autowired
private NotKeywordItemDao notKeywordItemDao;
@Autowired
private ResourceConsr resourceConsr;
@ParamLog("新增非关键词回复模板")
@Transactional(rollbackFor = Exception.class)
@Override
public void createNotKeywordTemplate(NotKeywordTemplate notKeywordTemplate) {
if (notKeywordTemplate==null|| ListUtils.isEmpty(notKeywordTemplate.getNotKeywordItems())){
throw new BookBizException(BookBizException.PARAM_IS_NULL,"参数为空!");
}
for (NotKeywordItem notKeywordItem:notKeywordTemplate.getNotKeywordItems()){
if (notKeywordItem.getType()==null){
throw new BookBizException(BookBizException.PARAM_IS_NULL,"类型不能为空!");
}
if (ReplyTypeEnum.TEXT.value.equals(notKeywordItem.getType())&& StringUtil.isEmpty(notKeywordItem.getContent())){
throw new BookBizException(BookBizException.PARAM_IS_NULL,"内容不能为空!");
}
if (ReplyTypeEnum.RESOURCE.value.equals(notKeywordItem.getType())&& notKeywordItem.getResourceId()==null){
throw new BookBizException(BookBizException.PARAM_IS_NULL,"内容不能为空!");
}
}
notKeywordTemplateDao.insert(notKeywordTemplate);
for (NotKeywordItem notKeywordItem:notKeywordTemplate.getNotKeywordItems()){
notKeywordItem.setTemplateId(notKeywordTemplate.getId());
}
notKeywordItemDao.batchInsert(notKeywordTemplate.getNotKeywordItems());
}
@ParamLog("删除非关键词回复模板")
@Transactional(rollbackFor = Exception.class)
@Override
public void deleteNotKeywordTemplate(Long id) {
notKeywordTemplateDao.deleteById(id);
notKeywordItemDao.deleteByTemplateId(id);
}
@ParamLog("获取非关键词回复模板列表")
@Override
public PageBeanNew<NotKeywordTemplate> getNotKeywordTemplateList(Integer currentPage, Integer numPerPage) {
if (currentPage==null||currentPage<0||numPerPage==null||numPerPage<=0){
throw new BookBizException(BookBizException.PARAM_IS_NULL,"分页参数有误!");
}
PageBeanNew<NotKeywordTemplate> page = notKeywordTemplateDao.listPageNew(new PageParam(currentPage, numPerPage), new HashMap<>(), "getNotKeywordTemplateList");
if (ListUtils.isEmpty(page.getRecordList())){
return page;
}
List<NotKeywordTemplate> list=page.getRecordList();
List<Long> templateIds=list.stream().filter(s->s.getId()!=null).map(NotKeywordTemplate::getId).collect(Collectors.toList());
List<NotKeywordItem> notKeywordItems=notKeywordItemDao.getListByTemplateIds(templateIds);
Map<Long,List<NotKeywordItem>> map=new HashMap<>();
if (!ListUtils.isEmpty(notKeywordItems)){
fillResource(notKeywordItems);
map=notKeywordItems.stream().collect(Collectors.groupingBy(NotKeywordItem::getTemplateId));
for (NotKeywordTemplate notKeywordTemplate:list){
notKeywordTemplate.setNotKeywordItems(map.get(notKeywordTemplate.getId()));
}
}
return page;
}
@ParamLog("获取非关键词回复模板")
@Override
public NotKeywordTemplate getNotKeywordTemplate(Long id) {
NotKeywordTemplate notKeywordTemplate = notKeywordTemplateDao.getById(id);
List<NotKeywordItem> list = notKeywordItemDao.getListByTemplateIds(Arrays.asList(notKeywordTemplate.getId()));
if (!ListUtils.isEmpty(list)){
fillResource(list);
}
notKeywordTemplate.setNotKeywordItems(list);
return notKeywordTemplate;
}
@ParamLog("填充资源项")
private void fillResource(List<NotKeywordItem> list) {
if (ListUtils.isEmpty(list)){
return;
}
List<Long> resourceIds=list.stream().filter(s->s.getResourceId()!=null).map(NotKeywordItem::getResourceId).collect(Collectors.toList());
Map<Long, ResourceDTO> resourceDTOMap=new HashMap<>();
if (!ListUtils.isEmpty(resourceIds)){
resourceDTOMap = resourceConsr.mapByIds(resourceIds);
}
for (NotKeywordItem notKeywordItem:list){
if (ReplyTypeEnum.RESOURCE.value.equals(notKeywordItem.getType())){
ResourceDTO resourceDTO = resourceDTOMap.get(notKeywordItem.getResourceId());
if (resourceDTO!=null){
notKeywordItem.setResourceName(resourceDTO.getResourceName());
notKeywordItem.setResourceUrl(resourceDTO.getFileUrl());
notKeywordItem.setResourceTypeCode(resourceDTO.getTypeCode());
notKeywordItem.setResourceTypeName(resourceDTO.getTypeName());
notKeywordItem.setFileType(resourceDTO.getFileType());
notKeywordItem.setResourcePdfItems(resourceDTO.getResourcePdfItems());
notKeywordItem.setResourceOfficeItemDTOs(resourceDTO.getResourceOfficeItemDTOs());
}
}
}
}
}
package com.pcloud.book.keywords.dao;
import com.pcloud.book.keywords.entity.NotKeywordItem;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
public interface NotKeywordItemDao extends BaseDao<NotKeywordItem> {
Integer batchInsert(List<NotKeywordItem> list);
void deleteByTemplateId(Long templateId);
List<NotKeywordItem> getListByTemplateIds(List<Long> templateIds);
}
package com.pcloud.book.keywords.dao;
import com.pcloud.book.keywords.entity.NotKeywordTemplate;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
public interface NotKeywordTemplateDao extends BaseDao<NotKeywordTemplate> {
Integer batchInsert(List<NotKeywordTemplate> list);
NotKeywordTemplate getRandomTemplate();
}
package com.pcloud.book.keywords.dao.impl;
import com.pcloud.book.keywords.dao.NotKeywordItemDao;
import com.pcloud.book.keywords.entity.NotKeywordItem;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component("notKeywordItemDao")
public class NotKeywordItemDaoImpl extends BaseDaoImpl<NotKeywordItem> implements NotKeywordItemDao {
@Override
public Integer batchInsert(List<NotKeywordItem> list) {
return this.getSqlSession().insert(this.getStatement("batchInsert"), list);
}
@Override
public void deleteByTemplateId(Long templateId) {
this.getSqlSession().delete(this.getStatement("deleteByTemplateId"), templateId);
}
@Override
public List<NotKeywordItem> getListByTemplateIds(List<Long> templateIds) {
Map<String,Object> map=new HashMap<>();
map.put("templateIds",templateIds);
return this.getSqlSession().selectList(this.getStatement("getListByTemplateIds"), map);
}
}
package com.pcloud.book.keywords.dao.impl;
import com.pcloud.book.keywords.dao.NotKeywordTemplateDao;
import com.pcloud.book.keywords.entity.NotKeywordTemplate;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.List;
@Component("notKeywordTemplateDao")
public class NotKeywordTemplateDaoImpl extends BaseDaoImpl<NotKeywordTemplate> implements NotKeywordTemplateDao {
@Override
public Integer batchInsert(List<NotKeywordTemplate> list) {
return this.getSqlSession().insert(this.getStatement("batchInsert"), list);
}
@Override
public NotKeywordTemplate getRandomTemplate() {
return this.getSqlSession().selectOne(this.getStatement("getRandomTemplate"));
}
}
package com.pcloud.book.keywords.entity;
import com.pcloud.common.entity.BaseEntity;
import com.pcloud.contentcenter.resource.dto.ResourceOfficeItemDTO;
import com.pcloud.contentcenter.resource.dto.ResourcePdfItemDTO;
import java.util.List;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("非关键词回复项")
public class NotKeywordItem extends BaseEntity {
@ApiModelProperty("模板id")
private Long templateId;
@ApiModelProperty("类型 1 文字 5素材")
private Integer type;
@ApiModelProperty("回复内容")
private String content;
@ApiModelProperty("资源id")
private Long resourceId;
@ApiModelProperty("资源链接")
private String resourceUrl;
@ApiModelProperty("资源名称")
private String resourceName;
@ApiModelProperty("资源类型编码")
private String resourceTypeCode;
@ApiModelProperty("资源类型名称")
private String resourceTypeName;
@ApiModelProperty("文件类型")
private String fileType;
@ApiModelProperty("pdf转码后的单张图片集合")
private List<ResourcePdfItemDTO> resourcePdfItems;
@ApiModelProperty("文件转码后的单张图片集合")
private List<ResourceOfficeItemDTO> resourceOfficeItemDTOs;
}
package com.pcloud.book.keywords.entity;
import com.pcloud.common.entity.BaseEntity;
import java.util.List;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("非关键词回复模板")
public class NotKeywordTemplate extends BaseEntity {
@ApiModelProperty("模板名称")
private String name;
@ApiModelProperty("非关键词回复项集合")
List<NotKeywordItem> notKeywordItems;
}
package com.pcloud.book.keywords.facade;
import com.pcloud.book.keywords.entity.NotKeywordTemplate;
import com.pcloud.book.keywords.entity.SelfRobotKeyword;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.permission.PermissionException;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@Api("个人号非关键词关键词")
public interface NotKeywordFacade {
@ApiOperation("新增非关键词回复模板")
@PostMapping("createNotKeywordTemplate")
ResponseDto<?> createNotKeywordTemplate(
@RequestHeader("token") String token,
@RequestBody @ApiParam("非关键词回复模板") NotKeywordTemplate notKeywordTemplate
) throws BizException, PermissionException;
@ApiOperation("删除非关键词回复模板")
@GetMapping("deleteNotKeywordTemplate")
ResponseDto<?> deleteNotKeywordTemplate(
@RequestHeader("token") String token,
@RequestParam @ApiParam("非关键词回复模板id") Long id
) throws BizException, PermissionException;
@ApiOperation("获取非关键词回复模板列表")
@GetMapping("getNotKeywordTemplateList")
ResponseDto<?> getNotKeywordTemplateList(
@RequestHeader("token") String token,
@RequestParam("currentPage") Integer currentPage,
@RequestParam("numPerPage") Integer numPerPage
) throws BizException, PermissionException;
@ApiOperation("获取非关键词回复模板")
@GetMapping("getNotKeywordTemplate")
ResponseDto<?> getNotKeywordTemplate(
@RequestHeader("token") String token,
@RequestParam @ApiParam("非关键词回复模板id") Long id
) throws BizException, PermissionException;
}
package com.pcloud.book.keywords.facade.impl;
import com.pcloud.book.keywords.biz.NotKeywordBiz;
import com.pcloud.book.keywords.entity.NotKeywordTemplate;
import com.pcloud.book.keywords.facade.NotKeywordFacade;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.SessionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@RestController("notKeywordFacade")
@RequestMapping("notKeyword")
public class NotKeywordFacadeImpl implements NotKeywordFacade {
@Autowired
private NotKeywordBiz notKeywordBiz;
@ApiOperation("新增非关键词回复模板")
@PostMapping("createNotKeywordTemplate")
@Override
public ResponseDto<?> createNotKeywordTemplate(
@RequestHeader("token") String token,
@RequestBody @ApiParam("非关键词回复模板") NotKeywordTemplate notKeywordTemplate
) throws BizException, PermissionException {
SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
notKeywordBiz.createNotKeywordTemplate(notKeywordTemplate);
return new ResponseDto<>();
}
@ApiOperation("删除非关键词回复模板")
@GetMapping("deleteNotKeywordTemplate")
@Override
public ResponseDto<?> deleteNotKeywordTemplate(
@RequestHeader("token") String token,
@RequestParam @ApiParam("非关键词回复模板id") Long id
) throws BizException, PermissionException {
SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
notKeywordBiz.deleteNotKeywordTemplate(id);
return new ResponseDto<>();
}
@ApiOperation("获取非关键词回复模板列表")
@GetMapping("getNotKeywordTemplateList")
@Override
public ResponseDto<?> getNotKeywordTemplateList(
@RequestHeader("token") String token,
@RequestParam("currentPage") Integer currentPage,
@RequestParam("numPerPage") Integer numPerPage
) throws BizException, PermissionException {
SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
return new ResponseDto<>(notKeywordBiz.getNotKeywordTemplateList(currentPage,numPerPage));
}
@ApiOperation("获取非关键词回复模板")
@GetMapping("getNotKeywordTemplate")
@Override
public ResponseDto<?> getNotKeywordTemplate(
@RequestHeader("token") String token,
@RequestParam @ApiParam("非关键词回复模板id") Long id
) throws BizException, PermissionException {
SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
return new ResponseDto<>(notKeywordBiz.getNotKeywordTemplate(id));
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.keywords.dao.impl.NotKeywordItemDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.keywords.entity.NotKeywordItem">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="template_id" property="templateId" jdbcType="BIGINT"/>
<result column="type" property="type" jdbcType="INTEGER"/>
<result column="content" property="content" jdbcType="VARCHAR"/>
<result column="resource_id" property="resourceId" jdbcType="BIGINT"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id, template_id, type, content, resource_id, create_time
</sql>
<insert id="insert" parameterType="com.pcloud.book.keywords.entity.NotKeywordItem" useGeneratedKeys="true"
keyProperty="id">
insert into not_keyword_item
<trim prefix="(" suffix=")" suffixOverrides=",">
template_id,
type,
content,
resource_id,
create_time
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{templateId,jdbcType=BIGINT},
#{type,jdbcType=INTEGER},
#{content,jdbcType=VARCHAR},
#{resourceId,jdbcType=BIGINT},
NOW()
</trim>
</insert>
<!--批量插入-->
<insert id="batchInsert" parameterType="com.pcloud.book.keywords.entity.NotKeywordItem" useGeneratedKeys="true" keyProperty="id">
insert into not_keyword_item (
template_id,
type,
content,
resource_id,
create_time
) values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.templateId,jdbcType=BIGINT},
#{item.type,jdbcType=INTEGER},
#{item.content,jdbcType=VARCHAR},
#{item.resourceId,jdbcType=BIGINT},
NOW()
)
</foreach>
</insert>
<delete id="deleteByTemplateId" parameterType="long">
delete from not_keyword_item where template_id=#{templateId}
</delete>
<select id="getListByTemplateIds" parameterType="map" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
from not_keyword_item
where template_id in
<foreach collection="templateIds" item="item" open="(" separator="," close=")">
${item}
</foreach>
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.keywords.dao.impl.NotKeywordTemplateDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.keywords.entity.NotKeywordTemplate">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id, name, create_time
</sql>
<insert id="insert" parameterType="com.pcloud.book.keywords.entity.NotKeywordTemplate" useGeneratedKeys="true"
keyProperty="id">
insert into not_keyword_template
<trim prefix="(" suffix=")" suffixOverrides=",">
name,
create_time
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{name,jdbcType=VARCHAR},
NOW()
</trim>
</insert>
<!--批量插入-->
<insert id="batchInsert" parameterType="com.pcloud.book.keywords.entity.NotKeywordTemplate" useGeneratedKeys="true" keyProperty="id">
insert into not_keyword_template (
name,
create_time
) values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.name,jdbcType=VARCHAR},
NOW()
)
</foreach>
</insert>
<delete id="deleteById" parameterType="long">
delete from not_keyword_template where id=#{id}
</delete>
<select id="getById" parameterType="long" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
from not_keyword_template where id=#{id}
</select>
<select id="getRandomTemplate" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/> from not_keyword_template order by rand() LIMIT 1
</select>
<select id="getNotKeywordTemplateList" parameterType="map" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
from not_keyword_template
</select>
</mapper>
\ No newline at end of file
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