From 98a4374954b8c47d73094b72f675dfc69cbab000 Mon Sep 17 00:00:00 2001 From: nili Date: Fri, 8 Sep 2023 16:34:03 +0800 Subject: [PATCH] =?UTF-8?q?=E9=82=80=E8=AF=B7fx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../group/game/dao/bean/InviteRecord.java | 3 ++ .../group/game/dao/bean/WeGameUser.java | 1 + .../game/dao/mapper/InviteRecordMapper.java | 4 +- .../game/dao/mapper/WeGameUserMapper.java | 11 +++-- .../awesome/group/game/service/WxService.java | 43 +++++++++++++------ .../group/game/service/bo/InviteInfo.java | 28 ++++++++++++ .../group/controller/LoginController.java | 6 +-- 7 files changed, 73 insertions(+), 23 deletions(-) create mode 100644 game-service/src/main/java/awesome/group/game/service/bo/InviteInfo.java diff --git a/game-dao/src/main/java/awesome/group/game/dao/bean/InviteRecord.java b/game-dao/src/main/java/awesome/group/game/dao/bean/InviteRecord.java index cdee517..91d88ca 100644 --- a/game-dao/src/main/java/awesome/group/game/dao/bean/InviteRecord.java +++ b/game-dao/src/main/java/awesome/group/game/dao/bean/InviteRecord.java @@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; +import java.sql.Timestamp; + @Data public class InviteRecord { @TableId(value = "id", type = IdType.AUTO) public Integer id; public Integer userId; public Integer invitedUserId; + public Timestamp lastTime; } diff --git a/game-dao/src/main/java/awesome/group/game/dao/bean/WeGameUser.java b/game-dao/src/main/java/awesome/group/game/dao/bean/WeGameUser.java index 9be4170..a863419 100644 --- a/game-dao/src/main/java/awesome/group/game/dao/bean/WeGameUser.java +++ b/game-dao/src/main/java/awesome/group/game/dao/bean/WeGameUser.java @@ -21,6 +21,7 @@ public class WeGameUser { private String sessionKey; private Integer score; private String inviteCode; + private Integer inviteCnt; public String getNickname() { if (StringUtils.hasText(nickname)) { diff --git a/game-dao/src/main/java/awesome/group/game/dao/mapper/InviteRecordMapper.java b/game-dao/src/main/java/awesome/group/game/dao/mapper/InviteRecordMapper.java index 4a872ef..4e38c6b 100644 --- a/game-dao/src/main/java/awesome/group/game/dao/mapper/InviteRecordMapper.java +++ b/game-dao/src/main/java/awesome/group/game/dao/mapper/InviteRecordMapper.java @@ -8,6 +8,6 @@ import org.apache.ibatis.annotations.Select; import java.util.List; public interface InviteRecordMapper extends BaseMapper { - @Select("select invited_user_id from invite_record where user_id = #{userId}") - List query(@Param("userId") Integer userId); + @Select("select * from invite_record where user_id = #{userId}") + List query(@Param("userId") Integer userId); } diff --git a/game-dao/src/main/java/awesome/group/game/dao/mapper/WeGameUserMapper.java b/game-dao/src/main/java/awesome/group/game/dao/mapper/WeGameUserMapper.java index ebeeacb..8e35c84 100644 --- a/game-dao/src/main/java/awesome/group/game/dao/mapper/WeGameUserMapper.java +++ b/game-dao/src/main/java/awesome/group/game/dao/mapper/WeGameUserMapper.java @@ -10,14 +10,17 @@ import java.util.List; public interface WeGameUserMapper extends BaseMapper { @Select("select * from we_game_user where app_id = #{appId} and open_id = #{openId}") - WeGameUser query(@Param("appId")String appId, @Param("openId")String openId); + WeGameUser query(@Param("appId") String appId, @Param("openId") String openId); @Update("update we_game_user set session_key = #{sessionKey} where id = #{id}") - int updateSessionKey(@Param("sessionKey")String sessionKey, @Param("id")Integer id); + int updateSessionKey(@Param("sessionKey") String sessionKey, @Param("id") Integer id); @Update("update we_game_user set score = #{score} where id = #{id}") - int updateScore(@Param("score")Integer score, @Param("id")Integer id); + int updateScore(@Param("score") Integer score, @Param("id") Integer id); @Select("select * from we_game_user where app_id = #{appId} and score > 0 order by score desc limit #{size}") - List queryTop(@Param("appId")String appId, @Param("size")Integer size); + List queryTop(@Param("appId") String appId, @Param("size") Integer size); + + @Update("update we_game_user set invite_cnt = invite_cnt + 1 where id = #{userId}") + int addInviteCnt(@Param("userId") Integer userId); } diff --git a/game-service/src/main/java/awesome/group/game/service/WxService.java b/game-service/src/main/java/awesome/group/game/service/WxService.java index 29d247e..7a3e8fc 100644 --- a/game-service/src/main/java/awesome/group/game/service/WxService.java +++ b/game-service/src/main/java/awesome/group/game/service/WxService.java @@ -3,12 +3,11 @@ package awesome.group.game.service; import awesome.group.game.dao.bean.GameApp; import awesome.group.game.dao.bean.InviteRecord; -import awesome.group.game.dao.mapper.InviteRecordMapper; -import awesome.group.game.service.bo.*; import awesome.group.game.dao.bean.WeGameUser; -import awesome.group.game.service.bo.WxUserInfo; import awesome.group.game.dao.mapper.GameAppMapper; +import awesome.group.game.dao.mapper.InviteRecordMapper; import awesome.group.game.dao.mapper.WeGameUserMapper; +import awesome.group.game.service.bo.*; import awesome.group.game.service.common.exception.PaganiException; import awesome.group.game.service.common.exception.PaganiExceptionCode; import awesome.group.game.service.util.EncryptUtil; @@ -24,10 +23,12 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import java.sql.Timestamp; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Service public class WxService { @@ -58,15 +59,23 @@ public class WxService { inviteRecordMapper.insert(record); } - public List myInviteRecord(Integer userId) { - List list = inviteRecordMapper.query(userId); + public InviteInfo myInviteRecord(Integer userId) { + List list = inviteRecordMapper.query(userId); + WeGameUser u = weGameUserMapper.selectById(userId); + InviteInfo info = new InviteInfo(); + info.inviteCnt = u.getInviteCnt(); if (CollectionUtils.isEmpty(list)) { - return new ArrayList<>(); + return info; } + List uids = list.stream().map(InviteRecord::getInvitedUserId).toList(); LambdaQueryWrapper query = Wrappers.lambdaQuery(); - query.in(WeGameUser::getId, list); + query.in(WeGameUser::getId, uids); List data = weGameUserMapper.selectList(query); - return data.stream().map(UserInfo::new).toList(); + Map map = data.stream().collect(Collectors.toMap(WeGameUser::getId, x -> x)); + for (InviteRecord x : list) { + info.addInviteUser(map.get(x.invitedUserId),x); + } + return info; } public WeGameUser login(String code, String appId) { @@ -111,13 +120,21 @@ public class WxService { LambdaQueryWrapper inviteQuery = Wrappers.lambdaQuery(); inviteQuery.eq(InviteRecord::getInvitedUserId, u.getId()); - if (inviteRecordMapper.selectOne(inviteQuery) != null) { + InviteRecord record = inviteRecordMapper.selectOne(inviteQuery); + if (record != null && record.lastTime.getTime() + 3600_000 < System.currentTimeMillis()) { return res; } - InviteRecord record = new InviteRecord(); - record.userId = user.getId(); - record.invitedUserId = u.getId(); - inviteRecordMapper.insert(record); + if (record == null) { + record = new InviteRecord(); + record.userId = user.getId(); + record.invitedUserId = u.getId(); + record.lastTime = new Timestamp(System.currentTimeMillis()); + inviteRecordMapper.insert(record); + } else { + record.lastTime = new Timestamp(System.currentTimeMillis()); + inviteRecordMapper.updateById(record); + } + weGameUserMapper.addInviteCnt(user.getId()); return res; } 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 new file mode 100644 index 0000000..7fc725b --- /dev/null +++ b/game-service/src/main/java/awesome/group/game/service/bo/InviteInfo.java @@ -0,0 +1,28 @@ +package awesome.group.game.service.bo; + +import awesome.group.game.dao.bean.InviteRecord; +import awesome.group.game.dao.bean.WeGameUser; + +import java.util.ArrayList; +import java.util.List; + +public class InviteInfo { + public int inviteCnt; + public List list; + + public void addInviteUser(WeGameUser user, InviteRecord r) { + if (list == null) { + list = new ArrayList<>(); + } + list.add(new InviteUserInfo(user, r.getLastTime().getTime())); + } + + public static class InviteUserInfo extends UserInfo { + public Long lastTime; + + public InviteUserInfo(WeGameUser user, Long lastTime) { + super(user); + this.lastTime = lastTime; + } + } +} diff --git a/game-web/src/main/java/awesome/group/controller/LoginController.java b/game-web/src/main/java/awesome/group/controller/LoginController.java index 8e796b3..c83ba5a 100644 --- a/game-web/src/main/java/awesome/group/controller/LoginController.java +++ b/game-web/src/main/java/awesome/group/controller/LoginController.java @@ -4,15 +4,13 @@ import awesome.group.RequestContext; import awesome.group.aop.RestApi; import awesome.group.game.service.WxService; import awesome.group.game.service.bo.CurrentUser; +import awesome.group.game.service.bo.InviteInfo; import awesome.group.game.service.bo.LoginBo; import awesome.group.game.service.bo.RankList; -import awesome.group.game.service.bo.UserInfo; import awesome.group.game.service.common.response.R; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.*; -import java.util.List; - @RestController @RequestMapping("/api/game/auth") public class LoginController { @@ -54,7 +52,7 @@ public class LoginController { @GetMapping("/myInviteRecord") @RestApi - public R> myInviteRecord() { + public R myInviteRecord() { Integer userId = RequestContext.getUid(); return new R<>(R.CODE_SUCCESS, "", wxService.myInviteRecord(userId)); }