From 155ed398a2239686eed933262231d1829be1154f Mon Sep 17 00:00:00 2001 From: ziin Date: Thu, 4 Dec 2025 16:53:23 +0800 Subject: [PATCH] =?UTF-8?q?refactor(character):=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E5=86=97=E4=BD=99Bean=E6=8B=B7=E8=B4=9D=E5=B9=B6=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E8=BF=94=E5=9B=9EVO=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CharacterController.java | 6 ++-- .../vo/character/KeyboardCharacterRespVO.java | 2 ++ .../vo/character/KeyboardUserCharacterVO.java | 2 ++ .../service/KeyboardCharacterService.java | 5 +-- .../impl/KeyboardCharacterServiceImpl.java | 32 ++++++++++++++++--- 5 files changed, 37 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/yolo/keyborad/controller/CharacterController.java b/src/main/java/com/yolo/keyborad/controller/CharacterController.java index e6c6fff..c27e491 100644 --- a/src/main/java/com/yolo/keyborad/controller/CharacterController.java +++ b/src/main/java/com/yolo/keyborad/controller/CharacterController.java @@ -42,8 +42,7 @@ public class CharacterController { @GetMapping("/list") @Operation(summary = "人设列表", description = "人设列表接口按 rank 排名") public BaseResponse> list() { - List list = characterService.selectListWithRank(); - return ResultUtils.success(BeanUtil.copyToList(list, KeyboardCharacterRespVO.class)); + return ResultUtils.success(characterService.selectListWithRank()); } @GetMapping("/detail") @@ -56,8 +55,7 @@ public class CharacterController { @GetMapping("/listByTag") @Operation(summary = "按标签查询人设列表", description = "按标签查询人设列表接口") public BaseResponse> listByTag(@RequestParam("tagId") Long tagId) { - List list = characterService.selectListByTag(tagId); - return ResultUtils.success(BeanUtil.copyToList(list, KeyboardCharacterRespVO.class)); + return ResultUtils.success(characterService.selectListByTag(tagId)); } @GetMapping("/listByUser") diff --git a/src/main/java/com/yolo/keyborad/model/vo/character/KeyboardCharacterRespVO.java b/src/main/java/com/yolo/keyborad/model/vo/character/KeyboardCharacterRespVO.java index 74eaba3..7cb8acf 100644 --- a/src/main/java/com/yolo/keyborad/model/vo/character/KeyboardCharacterRespVO.java +++ b/src/main/java/com/yolo/keyborad/model/vo/character/KeyboardCharacterRespVO.java @@ -39,4 +39,6 @@ public class KeyboardCharacterRespVO { @Schema(description="排名顺序") private Integer rank; + @Schema(description = "是否添加") + private Boolean added; } \ No newline at end of file diff --git a/src/main/java/com/yolo/keyborad/model/vo/character/KeyboardUserCharacterVO.java b/src/main/java/com/yolo/keyborad/model/vo/character/KeyboardUserCharacterVO.java index aa8db8c..5b0af17 100644 --- a/src/main/java/com/yolo/keyborad/model/vo/character/KeyboardUserCharacterVO.java +++ b/src/main/java/com/yolo/keyborad/model/vo/character/KeyboardUserCharacterVO.java @@ -28,4 +28,6 @@ public class KeyboardUserCharacterVO { @Schema(description = "emoji") private String emoji; + + } \ No newline at end of file diff --git a/src/main/java/com/yolo/keyborad/service/KeyboardCharacterService.java b/src/main/java/com/yolo/keyborad/service/KeyboardCharacterService.java index 1e1c226..dc02163 100644 --- a/src/main/java/com/yolo/keyborad/service/KeyboardCharacterService.java +++ b/src/main/java/com/yolo/keyborad/service/KeyboardCharacterService.java @@ -6,6 +6,7 @@ import com.yolo.keyborad.model.entity.KeyboardCharacter; import com.baomidou.mybatisplus.extension.service.IService; import com.yolo.keyborad.model.entity.KeyboardTag; import com.yolo.keyborad.model.entity.KeyboardUserCharacter; +import com.yolo.keyborad.model.vo.character.KeyboardCharacterRespVO; import com.yolo.keyborad.model.vo.character.KeyboardUserCharacterVO; import java.util.List; @@ -17,9 +18,9 @@ import java.util.List; public interface KeyboardCharacterService extends IService{ - List selectListWithRank(); + List selectListWithRank(); - List selectListByTag(Long tagId); + List selectListByTag(Long tagId); List selectListByUserId(); diff --git a/src/main/java/com/yolo/keyborad/service/impl/KeyboardCharacterServiceImpl.java b/src/main/java/com/yolo/keyborad/service/impl/KeyboardCharacterServiceImpl.java index dbbee76..ed6341d 100644 --- a/src/main/java/com/yolo/keyborad/service/impl/KeyboardCharacterServiceImpl.java +++ b/src/main/java/com/yolo/keyborad/service/impl/KeyboardCharacterServiceImpl.java @@ -2,6 +2,7 @@ package com.yolo.keyborad.service.impl; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; @@ -14,6 +15,7 @@ import com.yolo.keyborad.model.dto.userCharacter.KeyboardUserCharacterAddDTO; import com.yolo.keyborad.model.dto.userCharacter.KeyboardUserCharacterSortUpdateDTO; import com.yolo.keyborad.model.entity.KeyboardUser; import com.yolo.keyborad.model.entity.KeyboardUserCharacter; +import com.yolo.keyborad.model.vo.character.KeyboardCharacterRespVO; import com.yolo.keyborad.model.vo.character.KeyboardUserCharacterVO; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; @@ -24,6 +26,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; +import java.util.Set; /* * @author: ziin * @date: 2025/12/3 14:18 @@ -42,18 +45,39 @@ public class KeyboardCharacterServiceImpl extends ServiceImpl selectListWithRank() { - return keyboardCharacterMapper.selectList(new LambdaQueryWrapper() + public List selectListWithRank() { + long userId = StpUtil.getLoginIdAsLong(); + List keyboardCharacters = keyboardCharacterMapper.selectList(new LambdaQueryWrapper() .eq(KeyboardCharacter::getDeleted, false) .orderByAsc(KeyboardCharacter::getRank)); + + List userCharacterVOList = keyboardUserCharacterMapper.selectByUserId(userId); + List keyboardCharacterRespVOS = BeanUtil.copyToList(keyboardCharacters, KeyboardCharacterRespVO.class); + keyboardCharacterRespVOS.forEach(character -> { + character.setAdded(userCharacterVOList.stream().anyMatch(userCharacter -> + userCharacter.getId().equals(character.getId()))); + }); + return keyboardCharacterRespVOS; + + + } @Override - public List selectListByTag(Long tagId) { - return keyboardCharacterMapper.selectList(new LambdaQueryWrapper() + public List selectListByTag(Long tagId) { + List keyboardCharacters = keyboardCharacterMapper.selectList(new LambdaQueryWrapper() .eq(KeyboardCharacter::getDeleted, false) .eq(KeyboardCharacter::getTag, tagId) .orderByDesc(KeyboardCharacter::getRank)); + + long userId = StpUtil.getLoginIdAsLong(); + List userCharacterVOList = keyboardUserCharacterMapper.selectByUserId(userId); + List keyboardCharacterRespVOS = BeanUtil.copyToList(keyboardCharacters, KeyboardCharacterRespVO.class); + keyboardCharacterRespVOS.forEach(character -> { + character.setAdded(userCharacterVOList.stream().anyMatch(userCharacter -> + userCharacter.getId().equals(character.getId()))); + }); + return keyboardCharacterRespVOS; } @Override