# 春松客服小程序版 **Repository Path**: zjfzwx/cskefu-wxapp ## Basic Information - **Project Name**: 春松客服小程序版 - **Description**: 🌲春松客服小程序对接页面 - **Primary Language**: 微信 - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 15 - **Created**: 2021-10-28 - **Last Updated**: 2024-03-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 春松客服小程序版 原生微信小程序客服对接页面 原生page版 webview版 ## 用法 1. 实现接口 - 找到后台项目中接口IMController接口`/text/{appid}`,位于`contact-center/app/src/main/java/com/chatopera/cc/controller/apps/IMController.java` 983行左右,将`RequestMapping`改为`GetMapping`; - 复制此接口放其后,将`GetMapping`改为`PostMapping`,在其上添加`@ResponseBody`注解,将`ModelAndView`替换为`Map`,修改接口第一行内容为`Map params = new HashMap<>();` ,将`view.addObject`全部替换为`params.put`,最后一行改为`return params;` 即将原来传入模板引擎的参数全部放入map返回给前端如下所示
查看示例接口代码 ```java @ResponseBody @PostMapping("/text/{appid}") @Menu(type = "im", subtype = "index", access = true) public Map postText( HttpServletRequest request, @PathVariable String appid, @Valid String traceid, @Valid String aiid, @Valid String exchange, @Valid String title, @Valid String url, @Valid String skill, @Valid String id, @Valid String userid, @Valid String agent, @Valid String name, @Valid String email, @Valid String phone, @Valid String ai, @Valid String orgi, @Valid String product, @Valid String description, @Valid String imgurl, @Valid String pid, @Valid String purl) throws Exception { Map params = new HashMap<>(); CousultInvite invite = OnlineUserProxy.consult( appid, StringUtils.isBlank(orgi) ? Constants.SYSTEM_ORGI : orgi); params.put("hostname", request.getServerName()); params.put("port", request.getServerPort()); params.put("schema", request.getScheme()); params.put("appid", appid); params.put("channelVisitorSeparate", channelWebIMVisitorSeparate); params.put("ip", MainUtils.md5(request.getRemoteAddr())); if (invite.isSkill() && invite.isConsult_skill_fixed()) { // 添加技能组ID // 忽略前端传入的技能组ID params.put("skill", invite.getConsult_skill_fixed_id()); } else if (StringUtils.isNotBlank(skill)) { params.put("skill", skill); } if (StringUtils.isNotBlank(agent)) { params.put("agent", agent); } params.put("client", MainUtils.getUUID()); params.put("sessionid", request.getSession().getId()); params.put("id", id); if (StringUtils.isNotBlank(ai)) { params.put("ai", ai); } if (StringUtils.isNotBlank(exchange)) { params.put("exchange", exchange); } params.put("name", name); params.put("email", email); params.put("phone", phone); params.put("userid", userid); params.put("product", product); params.put("description", description); params.put("imgurl", imgurl); params.put("pid", pid); params.put("purl", purl); if (StringUtils.isNotBlank(traceid)) { params.put("traceid", traceid); } if (StringUtils.isNotBlank(title)) { params.put("title", title); } if (StringUtils.isNotBlank(traceid)) { params.put("url", url); } if (invite != null) { params.put("inviteData", invite); params.put("orgi", invite.getOrgi()); params.put("appid", appid); if (StringUtils.isNotBlank(aiid)) { params.put("aiid", aiid); } else if (StringUtils.isNotBlank(invite.getAiid())) { params.put("aiid", invite.getAiid()); } } return params; } ```
2. 升级`netty-socketio`版本,因低版本会导致`weapp.socket.io`无法连接 ```xml com.corundumstudio.socketio netty-socketio 1.7.19 ``` 3. 配置index页面js文件中参数 配置部署项目的协议、域名、端口等。 ## 鸣谢 - [春松客服](https://gitee.com/chatopera/cskefu) - [ColorUI](https://www.color-ui.com) - [weapp.socket.io](https://github.com/weapp-socketio/weapp.socket.io) - [Day.js](https://dayjs.gitee.io/zh-CN/)