Kaynağa Gözat

Merge remote-tracking branch 'origin/package' into package

zhangxianyu 1 yıl önce
ebeveyn
işleme
e792ed0a43

+ 30 - 7
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/KfAppletMsgServiceImpl.java

@@ -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)));
     }
 

+ 15 - 0
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/KfSystemReply.java

@@ -41,6 +41,21 @@ public class KfSystemReply {
      */
     private String workSysReply;
 
+    /**
+     * 充值回复开关
+     */
+    private Boolean rechargeReplySwitch;
+
+    /**
+     * 充值回复金额限定
+     */
+    private Integer rechargeReplyAmount;
+
+    /**
+     * 充值回复内容
+     */
+    private String rechargeReplyContent;
+
     /**
      * 开始时间
      */