diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/WebController.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/WebController.java index 0c888ee..a9a05ef 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/WebController.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/WebController.java @@ -11,9 +11,11 @@ import com.ruoyi.base.service.IBaseNationalService; import com.ruoyi.base.service.IBasePicService; import com.ruoyi.base.service.IBaseSiteInfoService; import com.ruoyi.busi.domain.BusiCategory; +import com.ruoyi.busi.domain.BusiChatMain; import com.ruoyi.busi.domain.BusiInquiryItem; import com.ruoyi.busi.domain.BusiProdNew; import com.ruoyi.busi.service.IBusiCategoryService; +import com.ruoyi.busi.service.IBusiChatMainService; import com.ruoyi.busi.service.IBusiInquiryItemService; import com.ruoyi.busi.service.IBusiProdNewService; import com.ruoyi.busi.utils.CommonUtils; @@ -68,6 +70,8 @@ public class WebController extends BaseController { private IBaseNationalService nationalService; @Autowired private IBusiInquiryItemService inquiryItemService; + @Autowired + private IBusiChatMainService busiChatMainService; /** * 导航栏接口--所有分类 @@ -318,6 +322,46 @@ public class WebController extends BaseController { return R.ok(baseInquiryService.getInquiry(tenantId)); } + /** + * 保存在线聊天内容 + * @author PQZ + * @date 15:24 2025/7/17 + * @param busiChatMain {@link BusiChatMain} + * @return com.ruoyi.common.core.domain.AjaxResult + **/ + @Log(title = "在线聊天", businessType = BusinessType.INSERT) + @PostMapping("/chatMain") + public AjaxResult saveChatMain(@RequestBody BusiChatMain busiChatMain, HttpServletRequest request) { + String ip = ""; + String nationalStr = ""; + try { + ip = CommonUtils.getIpAddr(request); + nationalStr = CommonUtils.getAddr(ip); + }catch (Exception e){ + logger.error("识别所属国家失败"); + } + ip = StringUtils.isNotEmpty(ip)?ip:"未知"; + BusiChatMain result = busiChatMainService.queryByIpAndCusCode(ip,busiChatMain.getCusCode()); + if (result != null){ + return success(result); + } else { + nationalStr = StringUtils.isNotEmpty(nationalStr)?nationalStr:"未知"; + String national = nationalStr.split("\\|")[0]; + System.out.println(ip+"-----"+nationalStr); + String oceania = "未知"; + Map nationalMap = nationalService.getNationalMap(); + if(nationalMap.containsKey(national)){ + oceania = nationalMap.get(national); + } + busiChatMain.setIp(ip); + busiChatMain.setNational(nationalStr); + busiChatMain.setOceania(oceania); + busiChatMain.setNums(0); + busiChatMainService.save(busiChatMain); + return success(busiChatMain); + } + } + /** * 提交在线询盘表单 * @author vinjor-M diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiChatMain.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiChatMain.java index 9026694..40961d7 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiChatMain.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/domain/BusiChatMain.java @@ -62,4 +62,7 @@ public class BusiChatMain extends DlBaseEntity @Excel(name = "站点唯一编码", readConverterExp = "租=户id") private String tenantId; + /** 聊天记录 */ + private String itemJson; + } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiChatMainService.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiChatMainService.java index e9458e0..270283b 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiChatMainService.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/IBusiChatMainService.java @@ -1,6 +1,7 @@ package com.ruoyi.busi.service; import java.util.List; + import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; @@ -9,11 +10,21 @@ import com.ruoyi.busi.vo.ChatMainVO; /** * 在线聊天Service接口 - * + * * @author vinjor-m * @date 2025-07-03 */ -public interface IBusiChatMainService extends IService -{ +public interface IBusiChatMainService extends IService { IPage queryListPage(ChatMainVO pageReqVO, Page page); + + /** + * 校验是否需要新增 + * + * @param ip ip + * @param cusCode 浏览器唯一编码 + * @return void + * @author PQZ + * @date 15:31 2025/7/17 + **/ + BusiChatMain queryByIpAndCusCode(String ip, String cusCode); } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiChatMainServiceImpl.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiChatMainServiceImpl.java index 58965bc..49141e9 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiChatMainServiceImpl.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/busi/service/impl/BusiChatMainServiceImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.busi.service.impl; import java.util.List; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.busi.vo.ChatMainVO; import com.ruoyi.common.utils.DateUtils; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -29,4 +30,22 @@ public class BusiChatMainServiceImpl extends ServiceImpl queryListPage(ChatMainVO pageReqVO, Page page) { return busiChatMainMapper.queryListPage(pageReqVO, page); } + + /** + * 校验是否需要新增 + * + * @param ip ip + * @param cusCode 浏览器唯一编码 + * @return void + * @author PQZ + * @date 15:31 2025/7/17 + **/ + @Override + public BusiChatMain queryByIpAndCusCode(String ip, String cusCode) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(BusiChatMain::getCusCode,cusCode) + .eq(BusiChatMain::getIp,ip); + BusiChatMain chatMain = getOne(lambdaQueryWrapper); + return chatMain; + } } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/webSocket/WebSocketServer.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/webSocket/WebSocketServer.java index aa07be7..5adc584 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/webSocket/WebSocketServer.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/webSocket/WebSocketServer.java @@ -3,6 +3,7 @@ package com.ruoyi.webSocket; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import javax.servlet.http.HttpServletRequest; import javax.websocket.OnClose; import javax.websocket.OnMessage; import javax.websocket.OnOpen;