فهرست منبع

fix : 头条投放虚拟游戏小程序改版

bilingfeng 11 ماه پیش
والد
کامیت
d9a18ba3e2

+ 1 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/ManageApplication.java

@@ -23,7 +23,7 @@ public class ManageApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(ManageApplication.class, args);
-        System.out.println("赞象Manage服务启动成功 < (角色指派相关功能上线´・・)ノ(._.`) \n" +
+        System.out.println("赞象Manage服务启动成功 < (头条投放虚拟游戏小程序改版´・・)ノ(._.`) \n" +
                 "___  ___  ___   _   _   ___  _____  _____ \n" +
                 "|  \\/  | / _ \\ | \\ | | / _ \\|  __ \\|  ___|\n" +
                 "| .  . |/ /_\\ \\|  \\| |/ /_\\ \\ |  \\/| |__  \n" +

+ 3 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/controller/api/AppletServerApi.java

@@ -15,6 +15,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Map;
+
 /**
  * @author : lingfeng
  * @time : 2024-04-29
@@ -32,7 +34,7 @@ public class AppletServerApi {
     @ApiOperation(value = "小程序登录信息提交")
     @PostMapping(value = "/user/submit")
     @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = Boolean.class)})
-    public ResultVO<Boolean> userAppletSubmit(@Validated @RequestBody UserAppletSubmitParam param) {
+    public ResultVO<Map<String, String>> userAppletSubmit(@Validated @RequestBody UserAppletSubmitParam param) {
         return ResultVO.ok(userAppletService.userAppletSubmit(param));
     }
 }

+ 3 - 1
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/IUserAppletService.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.zanxiang.game.module.manage.pojo.params.UserAppletSubmitParam;
 import com.zanxiang.game.module.mybatis.entity.UserApplet;
 
+import java.util.Map;
+
 /**
  * @author : lingfeng
  * @time : 2024-04-29
@@ -17,5 +19,5 @@ public interface IUserAppletService extends IService<UserApplet> {
      * @param param : 提交参数
      * @return : 返回结果
      */
-    boolean userAppletSubmit(UserAppletSubmitParam param);
+    Map<String, String> userAppletSubmit(UserAppletSubmitParam param);
 }

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

@@ -187,46 +187,46 @@ public class KfAppletMsgServiceImpl implements IKfAppletMsgService {
         if (kfSessionFrom == null) {
             return;
         }
+        //查询玩家访问信息
+        UserApplet userApplet = userAppletService.getOne(new LambdaQueryWrapper<UserApplet>()
+                .eq(UserApplet::getAppId, appId)
+                .eq(UserApplet::getOpenId, openId)
+                .orderByDesc(UserApplet::getCreateTime)
+                .last("limit 1"));
+        //不存在访问信息, 不处理
+        if (userApplet == null) {
+            return;
+        }
+        Map<String, String> channelMap = JsonUtil.toMap(userApplet.getChannel(), Map.class, String.class);
+        String pageSign = channelMap.get(KfAppletReply.PAGE_SIGN);
         //获取自动回复配置
-        KfAppletReply kfAppletReply = kfAppletReplyService.getById(gameId);
+        KfAppletReply kfAppletReply = kfAppletReplyService.getOne(new LambdaQueryWrapper<KfAppletReply>()
+                .eq(KfAppletReply::getGameId, gameId)
+                .eq(KfAppletReply::getAppId, appId)
+                .eq(Strings.isNotBlank(pageSign), KfAppletReply::getPageSign, pageSign)
+                .orderByDesc(KfAppletReply::getCreateTime)
+                .last("limit 1"));
         if (kfAppletReply == null) {
             return;
         }
-        //判断是否来源与平台
-        if (Objects.equals(kfSessionFrom, KfSessionFromEnum.KF_SESSION_FROM_PLATFORM)) {
-            //回复默认消息
-            if (Strings.isNotBlank(kfAppletReply.getReplyDefault())) {
-                this.sysMsgSend(gameId, openId, kfAppletReply.getReplyDefault(), kfRoom);
-            }
-        }
-        //判断是否来源于广告
-        if (Objects.equals(kfSessionFrom, KfSessionFromEnum.KF_SESSION_FROM_AD)) {
-            //存在文本消息发送
-            if (Strings.isNotBlank(kfAppletReply.getReplyText())) {
-                this.sysMsgSend(gameId, openId, kfAppletReply.getReplyText(), kfRoom);
-            }
-            //存在图片发送
-            if (Strings.isNotBlank(kfAppletReply.getReplyImg())) {
-                this.sysImgMsgSend(gameId, openId, kfAppletReply.getReplyImg(), kfRoom);
-            }
-            //存在链接发送
-            if (Strings.isNotBlank(kfAppletReply.getReplyLink())) {
-                //链接消息参数转换
-                Map<String, String> linkMap = JsonUtil.toMap(kfAppletReply.getReplyLink(), Map.class, String.class);
-                String url = linkMap.get("url");
-                //链接拼接短链id
-                if (Strings.isNotBlank(url)) {
-                    UserApplet userApplet = userAppletService.getOne(new LambdaQueryWrapper<UserApplet>()
-                            .eq(UserApplet::getAppId, appId)
-                            .eq(UserApplet::getOpenId, openId)
-                            .orderByDesc(UserApplet::getCreateTime)
-                            .last("limit 1"));
-                    if (userApplet != null) {
-                        linkMap.put("url", url + "?customer_channel=" + userApplet.getId());
-                    }
-                }
-                this.sysLinkMsgSend(gameId, openId, kfRoom, linkMap);
+        //存在文本消息发送
+        if (Strings.isNotBlank(kfAppletReply.getReplyText())) {
+            this.sysMsgSend(gameId, openId, kfAppletReply.getReplyText(), kfRoom);
+        }
+        //存在图片发送
+        if (Strings.isNotBlank(kfAppletReply.getReplyImg())) {
+            this.sysImgMsgSend(gameId, openId, kfAppletReply.getReplyImg(), kfRoom);
+        }
+        //存在链接发送
+        if (Strings.isNotBlank(kfAppletReply.getReplyLink())) {
+            //链接消息参数转换
+            Map<String, String> linkMap = JsonUtil.toMap(kfAppletReply.getReplyLink(), Map.class, String.class);
+            String url = linkMap.get("url");
+            //链接拼接短链id
+            if (Strings.isNotBlank(url)) {
+                linkMap.put("url", url + "?customer_channel=" + userApplet.getId());
             }
+            this.sysLinkMsgSend(gameId, openId, kfRoom, linkMap);
         }
     }
 

+ 17 - 2
game-module/game-module-manage/src/main/java/com/zanxiang/game/module/manage/service/impl/UserAppletServiceImpl.java

@@ -6,10 +6,12 @@ import com.zanxiang.game.module.base.pojo.enums.DeleteEnum;
 import com.zanxiang.game.module.manage.pojo.params.UserAppletSubmitParam;
 import com.zanxiang.game.module.manage.service.IGameAppletService;
 import com.zanxiang.game.module.manage.service.IGameExtService;
+import com.zanxiang.game.module.manage.service.IKfAppletReplyService;
 import com.zanxiang.game.module.manage.service.IUserAppletService;
 import com.zanxiang.game.module.manage.utils.SignUtil;
 import com.zanxiang.game.module.mybatis.entity.GameApplet;
 import com.zanxiang.game.module.mybatis.entity.GameExt;
+import com.zanxiang.game.module.mybatis.entity.KfAppletReply;
 import com.zanxiang.game.module.mybatis.entity.UserApplet;
 import com.zanxiang.game.module.mybatis.mapper.UserAppletMapper;
 import com.zanxiang.module.util.JsonUtil;
@@ -22,6 +24,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 
 import java.time.LocalDateTime;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
@@ -44,8 +47,11 @@ public class UserAppletServiceImpl extends ServiceImpl<UserAppletMapper, UserApp
     @Autowired
     private RestTemplate restTemplate;
 
+    @Autowired
+    private IKfAppletReplyService kfAppletReplyService;
+
     @Override
-    public boolean userAppletSubmit(UserAppletSubmitParam param) {
+    public Map<String, String> userAppletSubmit(UserAppletSubmitParam param) {
         GameApplet gameApplet = gameAppletService.getOne(new LambdaQueryWrapper<GameApplet>()
                 .eq(GameApplet::getAppId, param.getAppId())
                 .last("limit 1"));
@@ -58,7 +64,16 @@ public class UserAppletServiceImpl extends ServiceImpl<UserAppletMapper, UserApp
         //获取用户小程序 openId
         String openId = this.getAppletOpenId(param.getCode(), param.getAppId(), gameApplet.getAppSecret());
         //数据保存且返回结果
-        return super.save(this.transform(param, openId));
+        super.save(this.transform(param, openId));
+        //参数转换
+        Map<String, String> channelMap = JsonUtil.toMap(param.getChannel(), Map.class, String.class);
+        if (!channelMap.containsKey(KfAppletReply.PAGE_SIGN)) {
+            return Collections.emptyMap();
+        }
+        KfAppletReply kfAppletReply = kfAppletReplyService.getOne(new LambdaQueryWrapper<KfAppletReply>()
+                .eq(KfAppletReply::getAppId, param.getAppId())
+                .eq(KfAppletReply::getPageSign, channelMap.get(KfAppletReply.PAGE_SIGN)));
+        return JsonUtil.toMap(kfAppletReply.getPageConfig(), Map.class, String.class);
     }
 
     private UserApplet transform(UserAppletSubmitParam param, String openId) {

+ 9 - 5
game-module/game-module-mybatis/src/main/java/com/zanxiang/game/module/mybatis/entity/KfAppletReply.java

@@ -1,7 +1,5 @@
 package com.zanxiang.game.module.mybatis.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.*;
 
@@ -23,10 +21,11 @@ public class KfAppletReply implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    public static final String PAGE_SIGN = "pageSign";
+
     /**
      * 游戏
      */
-    @TableId(value = "game_id", type = IdType.INPUT)
     private Long gameId;
 
     /**
@@ -35,9 +34,14 @@ public class KfAppletReply implements Serializable {
     private String appId;
 
     /**
-     * 默认回复
+     * 落地页标识
+     */
+    private String pageSign;
+
+    /**
+     * 落地页配置
      */
-    private String replyDefault;
+    private String pageConfig;
 
     /**
      * 文本回复