Commit 62940cc7 authored by shiyu's avatar shiyu

ai会话

parent 4319e361
......@@ -11,6 +11,11 @@ public class AiDefaultQuestionRequestDto extends BaseRequestDto implements Entit
*/
private Long userId;
/**
* ai机器人code
*/
private String code;
/**
* 问题类型
*/
......
package com.wwdz.ch.wx.impl;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.IMUtil;
import com.wwdz.ch.core.util.RedisUtils;
import com.wwdz.ch.db.dao.AiAssistantDao;
import com.wwdz.ch.db.dao.AiDefaultQuestionDao;
......@@ -38,6 +39,9 @@ public class AiDefaultQuestionServiceImpl implements AiDefaultQuestionService {
@Autowired
AiAssistantDao aiAssistantDao;
@Autowired
IMUtil imUtil;
@Override
public Result findList(AiDefaultQuestionRequestDto dto) {
......@@ -46,12 +50,13 @@ public class AiDefaultQuestionServiceImpl implements AiDefaultQuestionService {
if (redisUtils.hasKey(key) && dto.getIsChangeList() == 0){
return Result.success();
}
//查询机器人信息
AiAssistant aiAssistant = aiAssistantDao.findByCode(imUtil.revertAppletUserId(dto.getCode()));
dto.setType(aiAssistant.getType());
List<AiDefaultQuestion> aiDefaultQuestionList = aiDefaultQuestionDao.findList(dto);
Map<String, Object> map = new HashMap<>();
map.put("data", aiDefaultQuestionList);
//查询ai机器人简介
AiAssistant aiAssistant = aiAssistantDao.findByType(dto.getType());
map.put("profile", aiAssistant.getProfile());
//一小时内打开会话不重复返回默认问题
redisUtils.set(key, null, 1, TimeUnit.HOURS);
......
package com.wwdz.ch.wx.impl;
import com.alibaba.fastjson.JSONObject;
import com.wwdz.ch.core.consts.IMEnum;
import com.wwdz.ch.core.consts.ResultCode;
import com.wwdz.ch.core.entity.im.SendChatMsgRequestDto;
import com.wwdz.ch.core.im.api.ChatUserApi;
import com.wwdz.ch.core.im.api.ConversationApi;
import com.wwdz.ch.core.notify.AliSmsSender;
import com.wwdz.ch.core.notify.NotifyService;
import com.wwdz.ch.core.notify.SmsResult;
......@@ -12,7 +15,9 @@ import com.wwdz.ch.core.util.CharUtil;
import com.wwdz.ch.core.util.RegexUtil;
import com.wwdz.ch.core.util.UUID;
import com.wwdz.ch.core.util.bcrypt.BCryptPasswordEncoder;
import com.wwdz.ch.db.dao.AiAssistantDao;
import com.wwdz.ch.db.dao.UserDao;
import com.wwdz.ch.db.domain.AiAssistant;
import com.wwdz.ch.db.domain.Switch;
import com.wwdz.ch.db.domain.User;
import com.wwdz.ch.db.dto.request.FollowFansRecordRequestDto;
......@@ -102,6 +107,12 @@ public class UserServiceImpl implements UserService {
@Autowired
ChatUserApi chatUserApi;
@Autowired
ConversationApi conversationApi;
@Autowired
AiAssistantDao aiAssistantDao;
@Override
public Result regCaptcha(UserRequestDto dto) {
......@@ -519,12 +530,23 @@ public class UserServiceImpl implements UserService {
user.setLastLoginTime(now);
user.setLastLoginIp(IpUtil.client(request));
user.setShareUserId(0L);
userDao.insert(user);
int userId = userDao.insert(user);
//把新增用户同步到IM
Result synUserResult = chatUserApi.importUser(user);
if (synUserResult.getSuccess()) {
logger.info("新增用户同步至IM成功");
//默认机器人给新增用户发送打招呼信息,为了新增会话
SendChatMsgRequestDto sendChatMsgRequestDto = new SendChatMsgRequestDto();
sendChatMsgRequestDto.setFromAccount(DEFAULT_AI_CODE);
sendChatMsgRequestDto.setToAccount(String.valueOf(userId));
sendChatMsgRequestDto.setMsgType(IMEnum.MsgTypeEnum.TIMTextElem.getCode());
AiAssistant aiAssistant = aiAssistantDao.findByCode(DEFAULT_AI_CODE);
sendChatMsgRequestDto.setMsgContent(aiAssistant.getProfile());
Result sendMsgResult = conversationApi.sendChatMsg(sendChatMsgRequestDto);
if (sendMsgResult.getSuccess()) {
logger.info("================= 向首次登录用户发送默认机器人消息成功 =================");
}
}
} else {
// 注册过的用户修改最后登录的时间以及绑定微信openid和支付宝user_id
......
......@@ -42,7 +42,7 @@ public class AiAssistantController {
@PostMapping("/findDefaultQuestions")
public Result findDefaultQuestions(@RequestBody AiDefaultQuestionRequestDto dto) {
logger.info("【请求开始】查询ai默认问题,请求参数:{}", JSON.toJSONString(dto));
if (dto.getType() == null) {
if (dto.getCode() == null) {
return Result.failed(ResultCode.PARAM_ERROR);
}
return aiDefaultQuestionService.findList(dto);
......
......@@ -98,6 +98,25 @@ public class ChatApiTest {
conversationApi.sendChatMsg(sendChatMsgRequestDto);
}
/**
* 给已经创建的用户发送默认机器人消息
*/
@Test
public void initDefaultAiChat() {
List<User> list = userDao.queryAll();
list.forEach(user -> {
SendChatMsgRequestDto sendChatMsgRequestDto = new SendChatMsgRequestDto();
sendChatMsgRequestDto.setToAccount(user.getId()+"");
sendChatMsgRequestDto.setFromAccount("ai10000");
sendChatMsgRequestDto.setMsgType(IMEnum.MsgTypeEnum.TIMTextElem.getCode());
long timestamp = System.currentTimeMillis();
String msgContent = timestamp + " >> ai测试消息的数据, 是否可以接收到";
sendChatMsgRequestDto.setMsgContent(msgContent);
conversationApi.sendChatMsg(sendChatMsgRequestDto);
});
}
/**
* 拉取会话列表
*/
......
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