|
@@ -2,12 +2,14 @@ package com.zanxiang.game.module.manage.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+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.pojo.dto.KfAppletMsgDTO;
|
|
|
import com.zanxiang.game.module.manage.pojo.dto.KfWebSocketMsgDTO;
|
|
|
import com.zanxiang.game.module.manage.pojo.dto.PayApplicationDTO;
|
|
@@ -179,16 +181,32 @@ public class KfAppletMsgServiceImpl implements IKfAppletMsgService {
|
|
|
}
|
|
|
|
|
|
private void systemReplyHandle(Long gameId, String openId, KfRoom kfRoom) {
|
|
|
- //判断玩家是否已接入状态, 非带接入状态, 不发送
|
|
|
- KfSessionUser kfSessionUser = kfSessionUserService.getById(openId);
|
|
|
- if (Objects.equals(kfSessionUser.getIsWait(), Boolean.FALSE)) {
|
|
|
- return;
|
|
|
- }
|
|
|
//获取自动回复配置
|
|
|
KfSystemReply kfSystemReply = kfSystemReplyService.getById(gameId);
|
|
|
if (kfSystemReply == null) {
|
|
|
return;
|
|
|
}
|
|
|
+ //查询玩家信息
|
|
|
+ KfSessionUser kfSessionUser = kfSessionUserService.getById(openId);
|
|
|
+ //判断是否开启充值自动回复
|
|
|
+ if (Objects.equals(kfSystemReply.getRechargeReplySwitch(), Boolean.TRUE)) {
|
|
|
+ //查询订单
|
|
|
+ List<Order> orderList = orderService.list(new LambdaQueryWrapper<Order>()
|
|
|
+ .select(Order::getAmount)
|
|
|
+ .eq(Order::getUserId, kfSessionUser.getUserId())
|
|
|
+ .eq(Order::getGameId, gameId)
|
|
|
+ .eq(Order::getStatus, OrderStateEnum.SUCCESS_PAY.getCode()));
|
|
|
+ //玩家符合条件
|
|
|
+ if (CollectionUtils.isNotEmpty(orderList) && orderList.stream().map(Order::getAmount)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add).intValue() >= kfSystemReply.getRechargeReplyAmount()) {
|
|
|
+ //发送消息
|
|
|
+ this.sysMsgSend(gameId, openId, kfSystemReply.getRechargeReplyContent(), kfRoom);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //判断玩家是否已接入状态, 非带接入状态, 不发送
|
|
|
+ if (Objects.equals(kfSessionUser.getIsWait(), Boolean.FALSE)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
//判断当前时间是否在时间内
|
|
|
LocalTime nowTime = LocalTime.now();
|
|
|
LocalTime startTime = LocalTime.parse(kfSystemReply.getStartTime());
|
|
@@ -196,9 +214,14 @@ public class KfAppletMsgServiceImpl implements IKfAppletMsgService {
|
|
|
if (nowTime.isAfter(startTime) && nowTime.isBefore(endTime)) {
|
|
|
return;
|
|
|
}
|
|
|
+ //休息时间, 发送指定消息
|
|
|
+ this.sysMsgSend(gameId, openId, kfSystemReply.getSysReply(), kfRoom);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void sysMsgSend(Long gameId, String openId, String msgContent, KfRoom kfRoom) {
|
|
|
//休息时间, 发送指定消息
|
|
|
Map<String, Object> textMap = new HashMap<>(1);
|
|
|
- textMap.put("content", kfSystemReply.getSysReply());
|
|
|
+ textMap.put("content", msgContent);
|
|
|
Map<String, Object> msgParamMap = new HashMap<>(3);
|
|
|
msgParamMap.put("touser", openId);
|
|
|
msgParamMap.put("msgtype", KfRoomMsgTypeEnum.KF_MSG_TYPE_TEXT.getValue());
|
|
@@ -206,7 +229,7 @@ public class KfAppletMsgServiceImpl implements IKfAppletMsgService {
|
|
|
kfWxApiService.sendCustomMessageApi(gameId, msgParamMap);
|
|
|
//保存消息
|
|
|
Map<String, Object> kfRoomMsgMap = new HashMap<>(1);
|
|
|
- kfRoomMsgMap.put("text", kfSystemReply.getSysReply());
|
|
|
+ kfRoomMsgMap.put("text", msgContent);
|
|
|
kfRoomMsgService.save(this.transform(openId, gameId, kfRoom, KfRoomMsgTypeEnum.KF_MSG_TYPE_TEXT, JsonUtil.toString(kfRoomMsgMap)));
|
|
|
}
|
|
|
|