Commit 62940cc7 authored by shiyu's avatar shiyu

ai会话

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