|
@@ -6,10 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.zanxiang.erp.security.util.SecurityUtil;
|
|
|
import com.zanxiang.game.back.base.pojo.enums.OrderStatusEnum;
|
|
|
import com.zanxiang.game.module.manage.constant.RedisKeyConstant;
|
|
|
-import com.zanxiang.game.module.manage.enums.KfRoomMsgOwnerEnum;
|
|
|
-import com.zanxiang.game.module.manage.enums.KfRoomMsgTypeEnum;
|
|
|
-import com.zanxiang.game.module.manage.enums.KfWebSocketMsgEnum;
|
|
|
-import com.zanxiang.game.module.manage.enums.OrderStateEnum;
|
|
|
+import com.zanxiang.game.module.manage.enums.*;
|
|
|
import com.zanxiang.game.module.manage.pojo.dto.KfAppletMsgDTO;
|
|
|
import com.zanxiang.game.module.manage.pojo.dto.KfWebSocketMsgDTO;
|
|
|
import com.zanxiang.game.module.manage.pojo.dto.PayApplicationDTO;
|
|
@@ -110,6 +107,9 @@ public class KfAppletMsgServiceImpl implements IKfAppletMsgService {
|
|
|
@Autowired
|
|
|
private IDistributedLockComponent distributedLockComponent;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IKfAppletReplyService kfAppletReplyService;
|
|
|
+
|
|
|
@Override
|
|
|
public void appletMsg(String postData) {
|
|
|
log.error("接收到客服消息 : {}", postData);
|
|
@@ -156,6 +156,8 @@ public class KfAppletMsgServiceImpl implements IKfAppletMsgService {
|
|
|
}
|
|
|
//客服休息时间, 发送自动回复
|
|
|
this.systemReplyHandle(gameApplet.getGameId(), kfAppletMsgDTO.getFromUserName(), kfRoom);
|
|
|
+ //小程序自动回复
|
|
|
+ this.appletReplyHandle(gameApplet.getGameId(), kfAppletMsgDTO.getFromUserName(), kfRoom, kfAppletMsgDTO.getSessionFrom());
|
|
|
//消息报警监测
|
|
|
this.monitorWordHandle(gameApplet, kfAppletMsgDTO);
|
|
|
//保存房间消息
|
|
@@ -174,6 +176,52 @@ public class KfAppletMsgServiceImpl implements IKfAppletMsgService {
|
|
|
this.pushMessage(this.transform(kfRoom, gameApplet.getGameId(), kfAppletMsgDTO.getFromUserName(), kfRoomMsg, msgContent));
|
|
|
}
|
|
|
|
|
|
+ private void appletReplyHandle(Long gameId, String openId, KfRoom kfRoom, String sessionFrom) {
|
|
|
+ //来源类型
|
|
|
+ KfSessionFromEnum kfSessionFrom = KfSessionFromEnum.getKfSessionFrom(sessionFrom);
|
|
|
+ if (kfSessionFrom == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //获取自动回复配置
|
|
|
+ KfAppletReply kfAppletReply = kfAppletReplyService.getById(gameId);
|
|
|
+ if (kfAppletReply == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //判断是否来源与平台
|
|
|
+ if (Objects.equals(sessionFrom, KfSessionFromEnum.KF_SESSION_FROM_PLATFORM.getValue())) {
|
|
|
+ //回复默认消息
|
|
|
+ if (Strings.isNotBlank(kfAppletReply.getReplyDefault())) {
|
|
|
+ this.sysMsgSend(gameId, openId, kfAppletReply.getReplyDefault(), kfRoom);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //判断是否来源于广告
|
|
|
+ if (Objects.equals(sessionFrom, KfSessionFromEnum.KF_SESSION_FROM_AD.getValue())) {
|
|
|
+ //存在图片发送
|
|
|
+ if (Strings.isNotBlank(kfAppletReply.getReplyImg())) {
|
|
|
+ this.sysImgMsgSend(gameId, openId, kfAppletReply.getReplyImg(), kfRoom);
|
|
|
+ }
|
|
|
+ //存在链接发送
|
|
|
+ if (Strings.isNotBlank(kfAppletReply.getReplyLink())) {
|
|
|
+ this.sysLinkMsgSend(gameId, openId, kfRoom, kfAppletReply.getReplyLink());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void sysLinkMsgSend(Long gameId, String openId, KfRoom kfRoom, String linkJson) {
|
|
|
+ //发送消息
|
|
|
+ Map<String, Object> msgParamMap = new HashMap<>(3);
|
|
|
+ msgParamMap.put("touser", openId);
|
|
|
+ msgParamMap.put("link", JsonUtil.toMap(linkJson, Map.class, Object.class));
|
|
|
+ msgParamMap.put("msgtype", KfRoomMsgTypeEnum.KF_MSG_TYPE_LINK.getValue());
|
|
|
+ Tuple2<Long, String> tuple2 = kfWxApiService.sendCustomMessageApi(gameId, msgParamMap);
|
|
|
+ //发送失败
|
|
|
+ if (!Objects.equals(tuple2.getT1(), 0L)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //保存发送的支付链接消息
|
|
|
+ kfRoomMsgService.save(this.transform(openId, gameId, kfRoom, KfRoomMsgTypeEnum.KF_MSG_TYPE_LINK, JsonUtil.toString(msgParamMap)));
|
|
|
+ }
|
|
|
+
|
|
|
private void monitorWordHandle(GameApplet gameApplet, KfAppletMsgDTO kfAppletMsgDTO) {
|
|
|
//非文本消息
|
|
|
if (!Objects.equals(kfAppletMsgDTO.getMsgType(), KfRoomMsgTypeEnum.KF_MSG_TYPE_TEXT.getValue())) {
|