Explorar el Código

修改

1、将conversationInner的功能整合进intentservice
undefined
10710 hace 1 año
padre
commit
abd3fc2c14
Se han modificado 7 ficheros con 264 adiciones y 198 borrados
  1. +1
    -2
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/manager/IDmRegularManager.java
  2. +2
    -3
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/manager/impl/DmRegularManager.java
  3. +3
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmIntentService.java
  4. +10
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmRegularService.java
  5. +230
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmIntentServiceImpl.java
  6. +1
    -193
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmNltServiceImpl.java
  7. +17
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmRegularServiceImpl.java

+ 1
- 2
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/manager/IDmRegularManager.java Ver fichero

@@ -1,11 +1,10 @@
package com.xueyi.nlt.nlt.manager;

import com.xueyi.common.web.entity.manager.IBaseManager;
import com.xueyi.nlt.api.nlt.domain.vo.DmIntentVo;
import com.xueyi.nlt.api.nlt.domain.vo.response.DmIntentResponse;
import com.xueyi.nlt.nlt.domain.dto.DmRegularDto;
import com.xueyi.nlt.nlt.domain.query.DmRegularQuery;

public interface IDmRegularManager extends IBaseManager<DmRegularQuery, DmRegularDto> {
public DmIntentResponse doRegularMatch(DmIntentVo intent);
public DmIntentResponse doRegularMatch(String content);
}

+ 2
- 3
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/manager/impl/DmRegularManager.java Ver fichero

@@ -2,7 +2,6 @@ package com.xueyi.nlt.nlt.manager.impl;


import com.xueyi.common.web.entity.manager.impl.BaseManagerImpl;
import com.xueyi.nlt.api.nlt.domain.vo.DmIntentVo;
import com.xueyi.nlt.api.nlt.domain.vo.response.DmIntentResponse;
import com.xueyi.nlt.nlt.domain.model.DmRegularConverter;
import com.xueyi.nlt.nlt.domain.po.DmRegularPo;
@@ -19,11 +18,11 @@ import java.util.regex.Pattern;
@Component
public class DmRegularManager extends BaseManagerImpl<DmRegularQuery, DmRegularDto, DmRegularPo, DmRegularMapper, DmRegularConverter> implements IDmRegularManager {
@Override
public DmIntentResponse doRegularMatch(DmIntentVo intent) {
public DmIntentResponse doRegularMatch(String content) {
DmIntentResponse response = new DmIntentResponse();
List<DmRegularPo> regularPos =baseMapper.selectList(null);
for (DmRegularPo regularPo : regularPos) {
if (isMatchRegular(intent.getContent(), regularPo.getExpression())) {
if (isMatchRegular(content, regularPo.getExpression())) {
response.setMsg(regularPo.getText());
response.setSkillCode(regularPo.getSkillCode());
response.setAction(regularPo.getAction());


+ 3
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmIntentService.java Ver fichero

@@ -1,8 +1,11 @@
package com.xueyi.nlt.nlt.service;

import com.xueyi.common.web.entity.service.IBaseService;
import com.xueyi.nlt.api.nlt.domain.vo.DmIntentVo;
import com.xueyi.nlt.api.nlt.domain.vo.response.DmIntentResponse;
import com.xueyi.nlt.nlt.domain.dto.DmIntentDto;
import com.xueyi.nlt.nlt.domain.query.DmIntentQuery;

public interface IDmIntentService extends IBaseService<DmIntentQuery, DmIntentDto> {
DmIntentResponse conversation(DmIntentVo intent);
}

+ 10
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmRegularService.java Ver fichero

@@ -0,0 +1,10 @@
package com.xueyi.nlt.nlt.service;

import com.xueyi.common.web.entity.service.IBaseService;
import com.xueyi.nlt.api.nlt.domain.vo.response.DmIntentResponse;
import com.xueyi.nlt.nlt.domain.dto.DmRegularDto;
import com.xueyi.nlt.nlt.domain.query.DmRegularQuery;

public interface IDmRegularService extends IBaseService<DmRegularQuery, DmRegularDto> {
DmIntentResponse doRegularMatch(String content);
}

+ 230
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmIntentServiceImpl.java Ver fichero

@@ -1,12 +1,242 @@
package com.xueyi.nlt.nlt.service.impl;

import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.xueyi.common.cache.utils.SourceUtil;
import com.xueyi.common.core.constant.basic.SecurityConstants;
import com.xueyi.common.core.constant.digitalman.MessageConstants;
import com.xueyi.common.core.constant.digitalman.SkillConstants;
import com.xueyi.common.core.utils.core.IdUtil;
import com.xueyi.common.core.web.result.R;
import com.xueyi.common.web.entity.service.impl.BaseServiceImpl;
import com.xueyi.nlt.api.nlt.domain.vo.DmIntentVo;
import com.xueyi.nlt.api.nlt.domain.vo.KnowledgeVo;
import com.xueyi.nlt.api.nlt.domain.vo.response.DmIntentResponse;
import com.xueyi.nlt.api.nlt.domain.vo.response.DmKnowledgeResponse;
import com.xueyi.nlt.api.nlt.feign.RemoteQAService;
import com.xueyi.nlt.nlt.domain.dto.DmIntentDto;
import com.xueyi.nlt.nlt.domain.query.DmIntentQuery;
import com.xueyi.nlt.nlt.domain.vo.MarkRecordVo;
import com.xueyi.nlt.nlt.manager.IDmIntentManager;
import com.xueyi.nlt.nlt.manager.impl.DmRegularManager;
import com.xueyi.nlt.nlt.service.IDmIntentService;
import com.xueyi.nlt.nlt.template.DeliveryOrderTemplate;
import com.xueyi.nlt.nlt.template.FlightMessageTemplate;
import com.xueyi.nlt.nlt.template.FreeChatTemplate;
import com.xueyi.nlt.nlt.template.MeetingOrderTemplate;
import com.xueyi.system.api.digitalmans.domain.dto.DmManDeviceDto;
import com.xueyi.system.api.digitalmans.domain.dto.DmSkillDto;
import com.xueyi.system.api.digitalmans.feign.RemoteManDeviceService;
import com.xueyi.system.api.digitalmans.feign.RemoteSkillService;
import com.xueyi.system.api.model.Source;
import com.xueyi.system.api.organize.domain.dto.SysEnterpriseDto;
import com.xueyi.system.api.organize.feign.RemoteEnterpriseService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@Service
public class DmIntentServiceImpl extends BaseServiceImpl<DmIntentQuery, DmIntentDto, IDmIntentManager> implements IDmIntentService {
private static final Logger log = LoggerFactory.getLogger(DmIntentServiceImpl.class);

@Autowired
RemoteEnterpriseService remoteEnterpriseService;

@Autowired
private DmRegularManager regularManager;


@Autowired
private RemoteManDeviceService manDeviceService;

@Autowired
private RemoteQAService remoteQAService;

@Autowired
private StringRedisTemplate redisTemplate;

@Autowired
private RedisTemplate<Object,Object> redisTemplate2;

@Autowired
private MeetingOrderTemplate meetingOrderTemplate;

@Autowired
private DeliveryOrderTemplate deliveryOrderTemplate;

@Autowired
private FreeChatTemplate freeChatTemplate;

@Autowired
private RemoteSkillService remoteskillService;

@Autowired
private FlightMessageTemplate flightMessageTemplate;

@Override
public DmIntentResponse conversation(DmIntentVo intent) {
MarkRecordVo recordVo = new MarkRecordVo();
recordVo.setDevId(intent.getDevId());
recordVo.setId(IdUtil.getSnowflakeNextId());
recordVo.setCreateTime(LocalDateTime.now());
recordVo.setQuestion(intent.getContent());
recordVo.setHit(1);

R<DmManDeviceDto> manDeviceDtoR = manDeviceService.manDeviceInfoInner(intent.getDevId());
String enterpriseId = manDeviceDtoR.getData().getTId().toString();
String enterpriseName = "";
R<SysEnterpriseDto> enterpriseDtoR = remoteEnterpriseService.getInfo(Long.valueOf(enterpriseId));
Source source = SourceUtil.getSourceCache(enterpriseDtoR.getData().getStrategyId());
if (enterpriseDtoR.isOk()) {
enterpriseName = enterpriseDtoR.getData().getName();
}

// 正则技能匹配
DmIntentResponse response = regularManager.doRegularMatch(intent.getContent());
if (response != null && StringUtils.isNotEmpty(response.getSkillCode())){
sendToDashboard(intent, enterpriseName);

// 判断是否有权限
R<List<DmSkillDto>> skilllistInner = remoteskillService.skilllistInner(intent.getDevId(),"1",Long.parseLong(enterpriseId), source.getMaster(), SecurityConstants.INNER);
if(skilllistInner.isOk()){
List<DmSkillDto> skilllist=skilllistInner.getData();
for (DmSkillDto dmSkillDto : skilllist) {
if (dmSkillDto.getSkillCode().equals(response.getSkillCode())) {
if(dmSkillDto.getStatus().equals("0")){
response.clear();
response.setMsg("操作无权限");
return response;
}
// 为技能设置motion
response.setMotion(dmSkillDto.getMotionName());
}
}
}
switch (response.getSkillCode()) {
case "1":
// 做会议室处理
response.setH5(meetingOrderTemplate.handle(intent.getDevId(), intent.getContent(), Long.valueOf(enterpriseId)));
break;
case "33":
// 做快递预约处理
response.setH5(deliveryOrderTemplate.handle(intent.getDevId(), intent.getContent(), Long.valueOf(enterpriseId)));
break;
case "34":
// 做查询航班信息处理
response.setH5(flightMessageTemplate.handle(intent.getDevId(), intent.getContent(), Long.valueOf(enterpriseId)));
break;
default:
break;
}
}
else if(response != null && StringUtils.isNotEmpty(response.getMsg())){
// 记录log
recordVo.setType(2);
List answers = new ArrayList();
answers.add(response.getMsg());
recordVo.setAnswers(answers);
return response;
}
else{
// 调用知识库问答
response.setSkillCode("30");
DmKnowledgeResponse qaAjax = null;
KnowledgeVo knowledgeVo = new KnowledgeVo();
knowledgeVo.setManCode(manDeviceDtoR.getData().getManCode());
knowledgeVo.setTenantId(manDeviceDtoR.getData().getTId());
knowledgeVo.setQuestion(intent.getContent());
R<DmKnowledgeResponse> dmKnowledgeResponseR = remoteQAService.query(knowledgeVo);
if (dmKnowledgeResponseR!= null && dmKnowledgeResponseR.getData() != null) {
qaAjax = dmKnowledgeResponseR.getData();
}

String content = "";
if (qaAjax != null) {
log.info("知识库问答返回结果:{}",qaAjax.toString());
if (qaAjax.getTarget() == 1) {
content = qaAjax.getResult().get(0).getKnowledgeLib();
pushIntoDashboardRedis(enterpriseName,content,"knowledge");
response.setH5(JSONObject.from(qaAjax));
// 记录log
recordVo.setType(2);
List answers = new ArrayList();
answers.add(response.getMsg());
recordVo.setAnswers(answers); // 航班查询
return response;
}
else {
// 知识库没有答案,返回空
response.clear();
response.setMsg("");
}
}
}

if(StringUtils.isEmpty(response.getSkillCode()) && intent.getMode().equals(MessageConstants.MODE_FREE_CHAT)) {
JSONObject joResult = freeChatTemplate.handle(intent.getDevId(),intent.getContent());
response.setH5(joResult);
}

return response;
}


private int pushIntoDashboardRedis(String name,String content,String type) {
try {
JSONObject object = new JSONObject();
object.put("tenantName", name);
object.put("content", content);
if (type.equals("skill")) {
redisTemplate2.opsForList().leftPush("dashboard:skill-consume", object.toJSONString());
} else if (type.equals("knowledge")) {
redisTemplate2.opsForList().leftPush("dashboard:knowledge-consume", object.toJSONString());
}
return 1;
} catch (Exception e) {
log.error("推送到仪表盘失败:{}",e.getMessage());
return 0;
}
}

private void sendToDashboard(DmIntentVo intent, String enterpriseName) {
if (SkillConstants.SkillType.BOOK_MEETING_ROOM.getCode().equals(intent.getSkillCode()) ) {
if (!redisTemplate2.hasKey("group:device" + ":" + intent.getDevId() + ":" +"session")) {
// 获取名称为"meeting-order"的BaseTemplate的实例
redisTemplate.opsForValue().increment("dashboard:meeting", 1);
pushIntoDashboardRedis(enterpriseName, "会议室预定", "skill");
}
} else if (SkillConstants.SkillType.CREATE_VISITOR_INFO.getCode().equals(intent.getSkillCode())) {
// 访客预定
redisTemplate.opsForValue().increment("dashboard:create_visitor_info", 1);
pushIntoDashboardRedis(enterpriseName,"访客邀约","skill");
} else if (SkillConstants.SkillType.REGISTER_VISITOR.getCode().equals(intent.getSkillCode())) {
// 访客登记
redisTemplate.opsForValue().increment("dashboard:register_visitor", 1);
pushIntoDashboardRedis(enterpriseName,"陌生人登记","skill");
} else if (SkillConstants.SkillType.BROADCAST_DISPLAY.getCode().equals(intent.getSkillCode())) {
// 播报展示
redisTemplate.opsForValue().increment("dashboard:broadcast_display", 1);
pushIntoDashboardRedis(enterpriseName,"播报展示","skill");
} else if (SkillConstants.SkillType.OPEN_DOOR.getCode().equals(intent.getSkillCode())) {
// 开门记录
redisTemplate.opsForValue().increment("dashboard:open_door", 1);
pushIntoDashboardRedis(enterpriseName,"开门","skill");
}else if (SkillConstants.SkillType.DELIVERY.getCode().equals(intent.getSkillCode()) ) {
if (!redisTemplate2.hasKey("group:device" + ":" + intent.getDevId() + ":" + "session")) {
// 获取名称为"meeting-order"的BaseTemplate的实例
redisTemplate.opsForValue().increment("dashboard:delivery", 1);
pushIntoDashboardRedis(enterpriseName, "寄快递", "skill");
}
}else if (SkillConstants.SkillType.FLIGHT.getCode().equals(intent.getSkillCode()) ) {
redisTemplate.opsForValue().increment("dashboard:flight", 1);
pushIntoDashboardRedis(enterpriseName, "查询航班信息", "skill");
}
}
}

+ 1
- 193
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmNltServiceImpl.java Ver fichero

@@ -41,200 +41,8 @@ import java.util.List;

@Service
public class DmNltServiceImpl implements IDmNltService {

private static final Logger log = LoggerFactory.getLogger(DmNltServiceImpl.class);

@Autowired
RemoteEnterpriseService remoteEnterpriseService;

@Autowired
private DmRegularManager regularManager;


@Autowired
private RemoteManDeviceService manDeviceService;

@Autowired
private RemoteQAService remoteQAService;

@Autowired
private StringRedisTemplate redisTemplate;

@Autowired
private RedisTemplate<Object,Object> redisTemplate2;

@Autowired
private MeetingOrderTemplate meetingOrderTemplate;

@Autowired
private DeliveryOrderTemplate deliveryOrderTemplate;

@Autowired
private FreeChatTemplate freeChatTemplate;

@Autowired
private RemoteSkillService remoteskillService;

@Autowired
private FlightMessageTemplate flightMessageTemplate;

@Override
public R<DmIntentResponse> conversation(DmIntentVo intent) {
MarkRecordVo recordVo = new MarkRecordVo();
recordVo.setDevId(intent.getDevId());
recordVo.setId(IdUtil.getSnowflakeNextId());
recordVo.setCreateTime(LocalDateTime.now());
recordVo.setQuestion(intent.getContent());
recordVo.setHit(1);

R<DmManDeviceDto> manDeviceDtoR = manDeviceService.manDeviceInfoInner(intent.getDevId());
String enterpriseId = manDeviceDtoR.getData().getTId().toString();
String enterpriseName = "";
R<SysEnterpriseDto> enterpriseDtoR = remoteEnterpriseService.getInfo(Long.valueOf(enterpriseId));
Source source = SourceUtil.getSourceCache(enterpriseDtoR.getData().getStrategyId());
if (enterpriseDtoR.isOk()) {
enterpriseName = enterpriseDtoR.getData().getName();
}

// 正则技能匹配
DmIntentResponse response = regularManager.doRegularMatch(intent);
if (response != null && StringUtils.isNotEmpty(response.getSkillCode())){
sendToDashboard(intent, enterpriseName);

// 判断是否有权限
R<List<DmSkillDto>> skilllistInner = remoteskillService.skilllistInner(intent.getDevId(),"1",Long.parseLong(enterpriseId), source.getMaster(), SecurityConstants.INNER);
if(skilllistInner.isOk()){
List<DmSkillDto> skilllist=skilllistInner.getData();
for (DmSkillDto dmSkillDto : skilllist) {
if (dmSkillDto.getSkillCode().equals(response.getSkillCode())) {
if(dmSkillDto.getStatus().equals("0")){
response.clear();
response.setMsg("操作无权限");
return R.ok(response);
}
// 为技能设置motion
response.setMotion(dmSkillDto.getMotionName());
}
}
}
switch (response.getSkillCode()) {
case "1":
// 做会议室处理
response.setH5(meetingOrderTemplate.handle(intent.getDevId(), intent.getContent(), Long.valueOf(enterpriseId)));
break;
case "33":
// 做快递预约处理
response.setH5(deliveryOrderTemplate.handle(intent.getDevId(), intent.getContent(), Long.valueOf(enterpriseId)));
break;
case "34":
// 做查询航班信息处理
response.setH5(flightMessageTemplate.handle(intent.getDevId(), intent.getContent(), Long.valueOf(enterpriseId)));
break;
default:
break;
}
}
else if(response != null && StringUtils.isNotEmpty(response.getMsg())){
// 记录log
recordVo.setType(2);
List answers = new ArrayList();
answers.add(response.getMsg());
recordVo.setAnswers(answers);
return R.ok(response);
}
else{
// 调用知识库问答
response.setSkillCode("30");
DmKnowledgeResponse qaAjax = null;
KnowledgeVo knowledgeVo = new KnowledgeVo();
knowledgeVo.setManCode(manDeviceDtoR.getData().getManCode());
knowledgeVo.setTenantId(manDeviceDtoR.getData().getTId());
knowledgeVo.setQuestion(intent.getContent());
R<DmKnowledgeResponse> dmKnowledgeResponseR = remoteQAService.query(knowledgeVo);
if (dmKnowledgeResponseR!= null && dmKnowledgeResponseR.getData() != null) {
qaAjax = dmKnowledgeResponseR.getData();
}

String content = "";
if (qaAjax != null) {
log.info("知识库问答返回结果:{}",qaAjax.toString());
if (qaAjax.getTarget() == 1) {
content = qaAjax.getResult().get(0).getKnowledgeLib();
pushIntoDashboardRedis(enterpriseName,content,"knowledge");
response.setH5(JSONObject.from(qaAjax));
// 记录log
recordVo.setType(2);
List answers = new ArrayList();
answers.add(response.getMsg());
recordVo.setAnswers(answers); // 航班查询
return R.ok(response);
}
else {
// 知识库没有答案,返回空
response.clear();
response.setMsg("");
}
}
}

if(StringUtils.isEmpty(response.getSkillCode()) && intent.getMode().equals(MessageConstants.MODE_FREE_CHAT)) {
JSONObject joResult = freeChatTemplate.handle(intent.getDevId(),intent.getContent());
response.setH5(joResult);
}

return R.ok(response);
}


private int pushIntoDashboardRedis(String name,String content,String type) {
try {
JSONObject object = new JSONObject();
object.put("tenantName", name);
object.put("content", content);
if (type.equals("skill")) {
redisTemplate2.opsForList().leftPush("dashboard:skill-consume", object.toJSONString());
} else if (type.equals("knowledge")) {
redisTemplate2.opsForList().leftPush("dashboard:knowledge-consume", object.toJSONString());
}
return 1;
} catch (Exception e) {
log.error("推送到仪表盘失败:{}",e.getMessage());
return 0;
}
}

private void sendToDashboard(DmIntentVo intent, String enterpriseName) {
if (SkillConstants.SkillType.BOOK_MEETING_ROOM.getCode().equals(intent.getSkillCode()) ) {
if (!redisTemplate2.hasKey("group:device" + ":" + intent.getDevId() + ":" +"session")) {
// 获取名称为"meeting-order"的BaseTemplate的实例
redisTemplate.opsForValue().increment("dashboard:meeting", 1);
pushIntoDashboardRedis(enterpriseName, "会议室预定", "skill");
}
} else if (SkillConstants.SkillType.CREATE_VISITOR_INFO.getCode().equals(intent.getSkillCode())) {
// 访客预定
redisTemplate.opsForValue().increment("dashboard:create_visitor_info", 1);
pushIntoDashboardRedis(enterpriseName,"访客邀约","skill");
} else if (SkillConstants.SkillType.REGISTER_VISITOR.getCode().equals(intent.getSkillCode())) {
// 访客登记
redisTemplate.opsForValue().increment("dashboard:register_visitor", 1);
pushIntoDashboardRedis(enterpriseName,"陌生人登记","skill");
} else if (SkillConstants.SkillType.BROADCAST_DISPLAY.getCode().equals(intent.getSkillCode())) {
// 播报展示
redisTemplate.opsForValue().increment("dashboard:broadcast_display", 1);
pushIntoDashboardRedis(enterpriseName,"播报展示","skill");
} else if (SkillConstants.SkillType.OPEN_DOOR.getCode().equals(intent.getSkillCode())) {
// 开门记录
redisTemplate.opsForValue().increment("dashboard:open_door", 1);
pushIntoDashboardRedis(enterpriseName,"开门","skill");
}else if (SkillConstants.SkillType.DELIVERY.getCode().equals(intent.getSkillCode()) ) {
if (!redisTemplate2.hasKey("group:device" + ":" + intent.getDevId() + ":" + "session")) {
// 获取名称为"meeting-order"的BaseTemplate的实例
redisTemplate.opsForValue().increment("dashboard:delivery", 1);
pushIntoDashboardRedis(enterpriseName, "寄快递", "skill");
}
}else if (SkillConstants.SkillType.FLIGHT.getCode().equals(intent.getSkillCode()) ) {
redisTemplate.opsForValue().increment("dashboard:flight", 1);
pushIntoDashboardRedis(enterpriseName, "查询航班信息", "skill");
}
return null;
}
}

+ 17
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmRegularServiceImpl.java Ver fichero

@@ -0,0 +1,17 @@
package com.xueyi.nlt.nlt.service.impl;

import com.xueyi.common.web.entity.service.impl.BaseServiceImpl;
import com.xueyi.nlt.api.nlt.domain.vo.DmIntentVo;
import com.xueyi.nlt.api.nlt.domain.vo.response.DmIntentResponse;
import com.xueyi.nlt.nlt.domain.query.DmRegularQuery;
import com.xueyi.nlt.nlt.domain.dto.DmRegularDto;
import com.xueyi.nlt.nlt.manager.IDmRegularManager;
import com.xueyi.nlt.nlt.service.IDmRegularService;

public class DmRegularServiceImpl extends BaseServiceImpl<DmRegularQuery, DmRegularDto, IDmRegularManager> implements IDmRegularService {

@Override
public DmIntentResponse doRegularMatch(String content) {
return baseManager.doRegularMatch(content);
}
}

Cargando…
Cancelar
Guardar