package com.uas.demo.service.impl; import com.uas.demo.dao.ChatInfoDao; import com.uas.demo.dao.UserDao; import com.uas.demo.model.ChatInfo; import com.uas.demo.model.Enterprise; import com.uas.demo.model.UserInfo; import com.uas.demo.service.ChatInfoService; import com.uas.demo.service.EnterpriseService; import com.uas.demo.service.UserInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.util.Date; @Service public class ChatInfoServiceImpl implements ChatInfoService { private final UserDao userDao; private final UserInfoService userInfoService; private final EnterpriseService enterpriseService; private final ChatInfoDao chatInfoDao; @Autowired public ChatInfoServiceImpl(UserDao userDao, UserInfoService userInfoService, EnterpriseService enterpriseService , ChatInfoDao chatInfoDao) { this.userDao = userDao; this.userInfoService = userInfoService; this.enterpriseService = enterpriseService; this.chatInfoDao = chatInfoDao; } @Override public ChatInfo generateChatInfoWhenUserVisitListOrChat(String userPhone, Enterprise enterprise) { // 验证参数信息 if (StringUtils.isEmpty(userPhone) || enterprise == null || enterprise.getEnUU() == null) { return null; } // 获取用户缓存信息 UserInfo userInfo = userInfoService.cacheUserInfoWhenUserVisitSystem(userPhone); assert userInfo != null; ChatInfo chatInfo = chatInfoDao.findByUserIdAndEnUU(userInfo.getUserId(), enterprise.getEnUU()); if (chatInfo == null) { chatInfo = new ChatInfo(); chatInfo.setUserInfo(userInfo); chatInfo.setUserId(userInfo.getUserId()); chatInfo.setPhone(userInfo.getPhone()); // 获取用户缓存企业信息 enterprise = enterpriseService.cacheEnterpriseInfoWhenUserVisitSystem(enterprise); assert enterprise != null; chatInfo.setEnterprise(enterprise); chatInfo.setEnUU(enterprise.getEnUU()); } // 更新聊天信息版本信息,并持久化 chatInfo.setVersion(new Date().getTime()); chatInfo = chatInfoDao.save(chatInfo); return chatInfo; } @Override public ChatInfo queryChatInfoWhenUserVisitWebSite(String id) { if (StringUtils.isEmpty(id)) { return null; } return chatInfoDao.findOne(id); } }