refactor(character): 移除冗余Bean拷贝并统一返回VO类型

This commit is contained in:
2025-12-04 16:53:23 +08:00
parent dd7cd517f6
commit 155ed398a2
5 changed files with 37 additions and 10 deletions

View File

@@ -42,8 +42,7 @@ public class CharacterController {
@GetMapping("/list")
@Operation(summary = "人设列表", description = "人设列表接口按 rank 排名")
public BaseResponse<List<KeyboardCharacterRespVO>> list() {
List<KeyboardCharacter> 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<List<KeyboardCharacterRespVO>> listByTag(@RequestParam("tagId") Long tagId) {
List<KeyboardCharacter> list = characterService.selectListByTag(tagId);
return ResultUtils.success(BeanUtil.copyToList(list, KeyboardCharacterRespVO.class));
return ResultUtils.success(characterService.selectListByTag(tagId));
}
@GetMapping("/listByUser")

View File

@@ -39,4 +39,6 @@ public class KeyboardCharacterRespVO {
@Schema(description="排名顺序")
private Integer rank;
@Schema(description = "是否添加")
private Boolean added;
}

View File

@@ -28,4 +28,6 @@ public class KeyboardUserCharacterVO {
@Schema(description = "emoji")
private String emoji;
}

View File

@@ -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<KeyboardCharacter>{
List<KeyboardCharacter> selectListWithRank();
List<KeyboardCharacterRespVO> selectListWithRank();
List<KeyboardCharacter> selectListByTag(Long tagId);
List<KeyboardCharacterRespVO> selectListByTag(Long tagId);
List<KeyboardUserCharacterVO> selectListByUserId();

View File

@@ -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<KeyboardCharacterM
private KeyboardUserSortMapper keyboardUserSortMapper;
@Override
public List<KeyboardCharacter> selectListWithRank() {
return keyboardCharacterMapper.selectList(new LambdaQueryWrapper<KeyboardCharacter>()
public List<KeyboardCharacterRespVO> selectListWithRank() {
long userId = StpUtil.getLoginIdAsLong();
List<KeyboardCharacter> keyboardCharacters = keyboardCharacterMapper.selectList(new LambdaQueryWrapper<KeyboardCharacter>()
.eq(KeyboardCharacter::getDeleted, false)
.orderByAsc(KeyboardCharacter::getRank));
List<KeyboardUserCharacterVO> userCharacterVOList = keyboardUserCharacterMapper.selectByUserId(userId);
List<KeyboardCharacterRespVO> 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<KeyboardCharacter> selectListByTag(Long tagId) {
return keyboardCharacterMapper.selectList(new LambdaQueryWrapper<KeyboardCharacter>()
public List<KeyboardCharacterRespVO> selectListByTag(Long tagId) {
List<KeyboardCharacter> keyboardCharacters = keyboardCharacterMapper.selectList(new LambdaQueryWrapper<KeyboardCharacter>()
.eq(KeyboardCharacter::getDeleted, false)
.eq(KeyboardCharacter::getTag, tagId)
.orderByDesc(KeyboardCharacter::getRank));
long userId = StpUtil.getLoginIdAsLong();
List<KeyboardUserCharacterVO> userCharacterVOList = keyboardUserCharacterMapper.selectByUserId(userId);
List<KeyboardCharacterRespVO> keyboardCharacterRespVOS = BeanUtil.copyToList(keyboardCharacters, KeyboardCharacterRespVO.class);
keyboardCharacterRespVOS.forEach(character -> {
character.setAdded(userCharacterVOList.stream().anyMatch(userCharacter ->
userCharacter.getId().equals(character.getId())));
});
return keyboardCharacterRespVOS;
}
@Override