From 0380c538f5c79e7905926f04cda0ee4a0f1e9717 Mon Sep 17 00:00:00 2001 From: nili Date: Sat, 9 Sep 2023 14:59:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E4=B8=AA=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../awesome/group/game/dao/bean/GameApp.java | 7 +++ .../group/game/service/AppService.java | 45 +++++++++++++++++++ .../group/game/service/bo/AppInfo.java | 31 +++++++++++++ .../group/game/service/bo/InviteInfo.java | 5 +-- .../group/controller/AppController.java | 25 +++++++++++ .../group/interceptor/InterceptorConfig.java | 1 + 6 files changed, 110 insertions(+), 4 deletions(-) create mode 100644 game-service/src/main/java/awesome/group/game/service/AppService.java create mode 100644 game-service/src/main/java/awesome/group/game/service/bo/AppInfo.java create mode 100644 game-web/src/main/java/awesome/group/controller/AppController.java diff --git a/game-dao/src/main/java/awesome/group/game/dao/bean/GameApp.java b/game-dao/src/main/java/awesome/group/game/dao/bean/GameApp.java index f2b42d7..a946235 100644 --- a/game-dao/src/main/java/awesome/group/game/dao/bean/GameApp.java +++ b/game-dao/src/main/java/awesome/group/game/dao/bean/GameApp.java @@ -1,10 +1,17 @@ package awesome.group.game.dao.bean; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; @Data public class GameApp { + @TableId(value = "id", type = IdType.AUTO) + private Integer id; private String name; private String appId; private String appSecret; + private String icon; + private Integer inAudit; + private String recommend; } diff --git a/game-service/src/main/java/awesome/group/game/service/AppService.java b/game-service/src/main/java/awesome/group/game/service/AppService.java new file mode 100644 index 0000000..b2c1306 --- /dev/null +++ b/game-service/src/main/java/awesome/group/game/service/AppService.java @@ -0,0 +1,45 @@ +package awesome.group.game.service; + +import awesome.group.game.dao.bean.GameApp; +import awesome.group.game.dao.mapper.GameAppMapper; +import awesome.group.game.service.bo.AppInfo; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; +import org.springframework.util.StringUtils; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +public class AppService { + @Autowired + private GameAppMapper appMapper; + + public AppInfo get(String appId) { + GameApp app = appMapper.query(appId); + Assert.isTrue(app != null, "非法请求"); + AppInfo info = new AppInfo(app); + if (!StringUtils.hasText(app.getRecommend())) { + return info; + } + LambdaQueryWrapper query = Wrappers.lambdaQuery(); + Gson gson = new Gson(); + List recommend = gson.fromJson(app.getRecommend(), new TypeToken>() { + }.getType()); + query.in(GameApp::getId, recommend); + List list = appMapper.selectList(query); + Map map = list.stream().collect(Collectors.toMap(GameApp::getId, x -> x)); + for (Integer id : recommend) { + info.addRecommend(map.get(id)); + } + return info; + } +} diff --git a/game-service/src/main/java/awesome/group/game/service/bo/AppInfo.java b/game-service/src/main/java/awesome/group/game/service/bo/AppInfo.java new file mode 100644 index 0000000..1c09ad4 --- /dev/null +++ b/game-service/src/main/java/awesome/group/game/service/bo/AppInfo.java @@ -0,0 +1,31 @@ +package awesome.group.game.service.bo; + +import awesome.group.game.dao.bean.GameApp; + +import java.util.ArrayList; +import java.util.List; + +public class AppInfo { + public String name; + public String icon; + public String appId; + public Integer inAudit; + public List recommend = new ArrayList<>(); + + public AppInfo() { + } + + public AppInfo(GameApp app) { + this.name = app.getName(); + this.icon = app.getIcon(); + this.appId = app.getAppId(); + this.inAudit = app.getInAudit(); + } + + public void addRecommend(GameApp app) { + if (app == null) { + return; + } + this.recommend.add(new AppInfo(app)); + } +} diff --git a/game-service/src/main/java/awesome/group/game/service/bo/InviteInfo.java b/game-service/src/main/java/awesome/group/game/service/bo/InviteInfo.java index cd8372f..8a36698 100644 --- a/game-service/src/main/java/awesome/group/game/service/bo/InviteInfo.java +++ b/game-service/src/main/java/awesome/group/game/service/bo/InviteInfo.java @@ -8,12 +8,9 @@ import java.util.List; public class InviteInfo { public int inviteCnt; - public List list; + public List list = new ArrayList<>(); public void addInviteUser(WeGameUser user, InviteRecord r) { - if (list == null) { - list = new ArrayList<>(); - } list.add(new InviteUserInfo(user, r.getLastTime().getTime())); } diff --git a/game-web/src/main/java/awesome/group/controller/AppController.java b/game-web/src/main/java/awesome/group/controller/AppController.java new file mode 100644 index 0000000..25b1385 --- /dev/null +++ b/game-web/src/main/java/awesome/group/controller/AppController.java @@ -0,0 +1,25 @@ +package awesome.group.controller; + +import awesome.group.aop.RestApi; +import awesome.group.game.service.AppService; +import awesome.group.game.service.bo.AppInfo; +import awesome.group.game.service.common.response.R; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/game/app") +public class AppController { + + @Resource + private AppService appService; + + @GetMapping("/info") + @RestApi + public R getAppInfo(@RequestParam String appId) { + return new R<>(R.CODE_SUCCESS, "ok", appService.get(appId)); + } +} diff --git a/game-web/src/main/java/awesome/group/interceptor/InterceptorConfig.java b/game-web/src/main/java/awesome/group/interceptor/InterceptorConfig.java index 13db8ef..2e76500 100644 --- a/game-web/src/main/java/awesome/group/interceptor/InterceptorConfig.java +++ b/game-web/src/main/java/awesome/group/interceptor/InterceptorConfig.java @@ -20,6 +20,7 @@ public class InterceptorConfig implements WebMvcConfigurer { //拦截的路径 .addPathPatterns("/**") //不拦截的路径 + .excludePathPatterns("/api/game/app/info") .excludePathPatterns("/api/game/auth/login") .excludePathPatterns("/api/game/auth/loginV2") .excludePathPatterns("/api/game/auth/test");