From 57cfcb5174709da7fe3fcf101c97b24571179d42 Mon Sep 17 00:00:00 2001 From: ahao Date: Fri, 11 Apr 2025 13:29:50 +0800 Subject: [PATCH] update --- .../controller/AnnouncementController.java | 45 ++++ .../controller/MemberController.java | 68 ++++++ .../controller/PlayerController.java | 68 ++++++ .../PlayerSkillProfileController.java | 52 +++++ .../domain/dto/MemberDetailDTO.java | 14 ++ .../simply_rugby/domain/dto/PageRequest.java | 9 + .../simply_rugby/domain/dto/PlayerDTO.java | 50 ++++ .../domain/dto/PlayerDetailDTO.java | 27 +++ .../domain/dto/PlayerPageDTO.java | 45 ++++ .../domain/entity/Announcement.java | 17 ++ .../simply_rugby/domain/entity/Function.java | 15 ++ .../simply_rugby/domain/entity/Member.java | 26 +++ .../domain/entity/MemberRole.java | 28 +++ .../simply_rugby/domain/entity/Player.java | 33 +++ .../domain/entity/PlayerSkillProfile.java | 38 ++++ .../sqa/simply_rugby/domain/entity/Role.java | 30 +++ .../domain/entity/RoleFunction.java | 14 ++ .../domain/entity/TeamMember.java | 14 ++ .../mapper/AnnouncementMapper.java | 9 + .../simply_rugby/mapper/FunctionMapper.java | 9 + .../sqa/simply_rugby/mapper/MemberMapper.java | 9 + .../simply_rugby/mapper/MemberRoleMapper.java | 12 + .../sqa/simply_rugby/mapper/PlayerMapper.java | 9 + .../mapper/PlayerSkillProfileMapper.java | 9 + .../mapper/RoleFunctionMapper.java | 9 + .../sqa/simply_rugby/mapper/RoleMapper.java | 12 + .../simply_rugby/mapper/TeamMemberMapper.java | 9 + .../service/AnnouncementService.java | 10 + .../service/MemberRoleService.java | 28 +++ .../simply_rugby/service/MemberService.java | 13 ++ .../simply_rugby/service/PlayerService.java | 18 ++ .../service/PlayerSkillProfileService.java | 10 + .../sqa/simply_rugby/service/RoleService.java | 26 +++ .../service/impl/AnnouncementServiceImpl.java | 25 ++ .../service/impl/MemberRoleServiceImpl.java | 27 +++ .../service/impl/MemberServiceImpl.java | 101 +++++++++ .../service/impl/PlayerServiceImpl.java | 213 ++++++++++++++++++ .../impl/PlayerSkillProfileServiceImpl.java | 41 ++++ .../service/impl/RoleServiceImpl.java | 28 +++ 39 files changed, 1220 insertions(+) create mode 100644 src/main/java/org/sqa/simply_rugby/controller/AnnouncementController.java create mode 100644 src/main/java/org/sqa/simply_rugby/controller/MemberController.java create mode 100644 src/main/java/org/sqa/simply_rugby/controller/PlayerController.java create mode 100644 src/main/java/org/sqa/simply_rugby/controller/PlayerSkillProfileController.java create mode 100644 src/main/java/org/sqa/simply_rugby/domain/dto/MemberDetailDTO.java create mode 100644 src/main/java/org/sqa/simply_rugby/domain/dto/PageRequest.java create mode 100644 src/main/java/org/sqa/simply_rugby/domain/dto/PlayerDTO.java create mode 100644 src/main/java/org/sqa/simply_rugby/domain/dto/PlayerDetailDTO.java create mode 100644 src/main/java/org/sqa/simply_rugby/domain/dto/PlayerPageDTO.java create mode 100644 src/main/java/org/sqa/simply_rugby/domain/entity/Announcement.java create mode 100644 src/main/java/org/sqa/simply_rugby/domain/entity/Function.java create mode 100644 src/main/java/org/sqa/simply_rugby/domain/entity/Member.java create mode 100644 src/main/java/org/sqa/simply_rugby/domain/entity/MemberRole.java create mode 100644 src/main/java/org/sqa/simply_rugby/domain/entity/Player.java create mode 100644 src/main/java/org/sqa/simply_rugby/domain/entity/PlayerSkillProfile.java create mode 100644 src/main/java/org/sqa/simply_rugby/domain/entity/Role.java create mode 100644 src/main/java/org/sqa/simply_rugby/domain/entity/RoleFunction.java create mode 100644 src/main/java/org/sqa/simply_rugby/domain/entity/TeamMember.java create mode 100644 src/main/java/org/sqa/simply_rugby/mapper/AnnouncementMapper.java create mode 100644 src/main/java/org/sqa/simply_rugby/mapper/FunctionMapper.java create mode 100644 src/main/java/org/sqa/simply_rugby/mapper/MemberMapper.java create mode 100644 src/main/java/org/sqa/simply_rugby/mapper/MemberRoleMapper.java create mode 100644 src/main/java/org/sqa/simply_rugby/mapper/PlayerMapper.java create mode 100644 src/main/java/org/sqa/simply_rugby/mapper/PlayerSkillProfileMapper.java create mode 100644 src/main/java/org/sqa/simply_rugby/mapper/RoleFunctionMapper.java create mode 100644 src/main/java/org/sqa/simply_rugby/mapper/RoleMapper.java create mode 100644 src/main/java/org/sqa/simply_rugby/mapper/TeamMemberMapper.java create mode 100644 src/main/java/org/sqa/simply_rugby/service/AnnouncementService.java create mode 100644 src/main/java/org/sqa/simply_rugby/service/MemberRoleService.java create mode 100644 src/main/java/org/sqa/simply_rugby/service/MemberService.java create mode 100644 src/main/java/org/sqa/simply_rugby/service/PlayerService.java create mode 100644 src/main/java/org/sqa/simply_rugby/service/PlayerSkillProfileService.java create mode 100644 src/main/java/org/sqa/simply_rugby/service/RoleService.java create mode 100644 src/main/java/org/sqa/simply_rugby/service/impl/AnnouncementServiceImpl.java create mode 100644 src/main/java/org/sqa/simply_rugby/service/impl/MemberRoleServiceImpl.java create mode 100644 src/main/java/org/sqa/simply_rugby/service/impl/MemberServiceImpl.java create mode 100644 src/main/java/org/sqa/simply_rugby/service/impl/PlayerServiceImpl.java create mode 100644 src/main/java/org/sqa/simply_rugby/service/impl/PlayerSkillProfileServiceImpl.java create mode 100644 src/main/java/org/sqa/simply_rugby/service/impl/RoleServiceImpl.java diff --git a/src/main/java/org/sqa/simply_rugby/controller/AnnouncementController.java b/src/main/java/org/sqa/simply_rugby/controller/AnnouncementController.java new file mode 100644 index 0000000..c3d9dba --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/controller/AnnouncementController.java @@ -0,0 +1,45 @@ +package org.sqa.simply_rugby.controller; + +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; +import org.sqa.simply_rugby.common.Result; +import org.sqa.simply_rugby.domain.entity.Announcement; +import org.sqa.simply_rugby.service.AnnouncementService; + +/** + * 公告管理控制器 + */ +@RestController +@RequestMapping("/api/announcements") +@RequiredArgsConstructor +public class AnnouncementController { + private final AnnouncementService announcementService; + + @PostMapping + public Result create(@RequestBody Announcement announcement) { + announcementService.save(announcement); + return Result.success(); + } + + @DeleteMapping("/{id}") + public Result delete(@PathVariable String id) { + announcementService.removeById(id); + return Result.success(); + } + + @PutMapping + public Result update(@RequestBody Announcement announcement) { + announcementService.updateById(announcement); + return Result.success(); + } + + @GetMapping("/{id}") + public Result get(@PathVariable String id) { + return Result.success(announcementService.getById(id)); + } + + @GetMapping("/latest") + public Result getLatest() { + return Result.success(announcementService.getLatest()); + } +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/controller/MemberController.java b/src/main/java/org/sqa/simply_rugby/controller/MemberController.java new file mode 100644 index 0000000..d6b80c7 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/controller/MemberController.java @@ -0,0 +1,68 @@ +package org.sqa.simply_rugby.controller; + +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; +import org.sqa.simply_rugby.common.Result; +import org.sqa.simply_rugby.domain.dto.MemberDetailDTO; +import org.sqa.simply_rugby.domain.entity.Member; +import org.sqa.simply_rugby.service.MemberService; + +import java.util.List; + +/** + * 成员管理控制器 + */ +@RestController +@RequestMapping("/api/members") +@RequiredArgsConstructor +public class MemberController { + private final MemberService memberService; + + @PostMapping + public Result create(@RequestBody Member member) { + memberService.save(member); + return Result.success(); + } + + @DeleteMapping("/{id}") + public Result delete(@PathVariable String id) { + memberService.removeById(id); + return Result.success(); + } + + @PutMapping + public Result update(@RequestBody Member member) { + memberService.updateById(member); + return Result.success(); + } + + @GetMapping("/{id}") + public Result get(@PathVariable String id) { + return Result.success(memberService.getById(id)); + } + + /** + * 分页查询成员 + * + * @param pageNum 页码 + * @param pageSize 每页大小 + * @return 成员列表 + */ + @GetMapping("/page") + public Result> page( + @RequestParam(defaultValue = "1") Integer pageNum, + @RequestParam(defaultValue = "10") Integer pageSize + ) { + return Result.success(memberService.page(pageNum, pageSize).getRecords()); + } + + /** + * 获取随机成员 + * + * @return 随机成员列表 + */ + @GetMapping("/random") + public Result> getRandomMembers() { + return Result.success(memberService.getRandomMembers(4)); + } +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/controller/PlayerController.java b/src/main/java/org/sqa/simply_rugby/controller/PlayerController.java new file mode 100644 index 0000000..110694b --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/controller/PlayerController.java @@ -0,0 +1,68 @@ +package org.sqa.simply_rugby.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; +import org.sqa.simply_rugby.common.Result; +import org.sqa.simply_rugby.domain.dto.PlayerDetailDTO; +import org.sqa.simply_rugby.domain.dto.PlayerDTO; +import org.sqa.simply_rugby.domain.dto.PlayerPageDTO; +import org.sqa.simply_rugby.domain.entity.Player; +import org.sqa.simply_rugby.service.PlayerService; + +import java.util.List; + +/** + * 球员管理控制器 + */ +@RestController +@RequestMapping("/api/players") +@RequiredArgsConstructor +public class PlayerController { + private final PlayerService playerService; + + @PostMapping + public Result create(@RequestBody Player player) { + playerService.save(player); + return Result.success(); + } + + @DeleteMapping("/{id}") + public Result delete(@PathVariable String id) { + playerService.removeById(id); + return Result.success(); + } + + @PutMapping + public Result update(@RequestBody Player player) { + playerService.updateById(player); + return Result.success(); + } + + @GetMapping("/{id}") + public Result get(@PathVariable String id) { + return Result.success(playerService.getPlayerWithInfo(id)); + } + + @GetMapping("/page") + public Result> page( + @RequestParam(defaultValue = "1") Integer pageNum, + @RequestParam(defaultValue = "10") Integer pageSize + ) { + return Result.success(playerService.pageWithInfo(pageNum, pageSize)); + } + + @GetMapping("/page/team/{teamId}") + public Result> pageByTeam( + @PathVariable String teamId, + @RequestParam(defaultValue = "1") Integer pageNum, + @RequestParam(defaultValue = "10") Integer pageSize + ) { + return Result.success(playerService.pageByTeam(teamId, pageNum, pageSize)); + } + + @GetMapping("/random") + public Result> getRandomPlayers() { + return Result.success(playerService.getRandomPlayers(3)); + } +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/controller/PlayerSkillProfileController.java b/src/main/java/org/sqa/simply_rugby/controller/PlayerSkillProfileController.java new file mode 100644 index 0000000..94c5087 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/controller/PlayerSkillProfileController.java @@ -0,0 +1,52 @@ +package org.sqa.simply_rugby.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; +import org.sqa.simply_rugby.common.Result; +import org.sqa.simply_rugby.domain.dto.PageRequest; +import org.sqa.simply_rugby.domain.entity.PlayerSkillProfile; +import org.sqa.simply_rugby.service.PlayerSkillProfileService; + +/** + * 球员技能配置控制器 + */ +@RestController +@RequestMapping("/api/player-skills") +@RequiredArgsConstructor +public class PlayerSkillProfileController { + private final PlayerSkillProfileService playerSkillProfileService; + + @PostMapping + public Result create(@RequestBody PlayerSkillProfile profile) { + playerSkillProfileService.save(profile); + return Result.success(); + } + + @DeleteMapping("/{id}") + public Result delete(@PathVariable String id) { + playerSkillProfileService.removeById(id); + return Result.success(); + } + + @PutMapping + public Result update(@RequestBody PlayerSkillProfile profile) { + playerSkillProfileService.updateById(profile); + return Result.success(); + } + + @GetMapping("/{id}") + public Result get(@PathVariable String id) { + return Result.success(playerSkillProfileService.getById(id)); + } + + @GetMapping("/player/{playerId}") + public Result getByPlayerId(@PathVariable String playerId) { + return Result.success(playerSkillProfileService.getByPlayerId(playerId)); + } + + @GetMapping("/page") + public Result> page(PageRequest request) { + return Result.success(playerSkillProfileService.page(request.getPageNum(), request.getPageSize())); + } +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/domain/dto/MemberDetailDTO.java b/src/main/java/org/sqa/simply_rugby/domain/dto/MemberDetailDTO.java new file mode 100644 index 0000000..be756ea --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/domain/dto/MemberDetailDTO.java @@ -0,0 +1,14 @@ +package org.sqa.simply_rugby.domain.dto; + +import lombok.Data; +import java.time.LocalDate; + +@Data +public class MemberDetailDTO { + private String avatar; + private String name; + private LocalDate dateOfBirth; + private String role; + private String sruNumber; + private String email; +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/domain/dto/PageRequest.java b/src/main/java/org/sqa/simply_rugby/domain/dto/PageRequest.java new file mode 100644 index 0000000..27febe6 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/domain/dto/PageRequest.java @@ -0,0 +1,9 @@ +package org.sqa.simply_rugby.domain.dto; + +import lombok.Data; + +@Data +public class PageRequest { + private Integer pageNum = 1; + private Integer pageSize = 10; +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/domain/dto/PlayerDTO.java b/src/main/java/org/sqa/simply_rugby/domain/dto/PlayerDTO.java new file mode 100644 index 0000000..69e5b02 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/domain/dto/PlayerDTO.java @@ -0,0 +1,50 @@ +package org.sqa.simply_rugby.domain.dto; + +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 球员详情DTO + */ +@Data +public class PlayerDTO { + // 球员基本信息 + private String id; + private String memberId; + private String teamId; + private String position; + private String teamNumber; // 队内编号 + private Integer height; // 身高(cm) + private Integer weight; // 体重(kg) + private LocalDateTime createTime; // 创建时间 + + // 监护人信息 + private String guardian1Name; + private String guardian1Relationship; + private String guardian1Address; + private String guardian1Tel; + private String guardian2Name; + private String guardian2Relationship; + private String guardian2Address; + private String guardian2Tel; + + // 医生信息 + private String doctorName; + private String doctorTel; + private String doctorAddress; + private String knownHealthIssues; + + // 成员信息 + private String name; + private String avatar; + private String sruNumber; + private LocalDate dateOfBirth; + private String email; + private String telNumber; + private String mobileNumber; + + // 队伍信息 + private String teamName; +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/domain/dto/PlayerDetailDTO.java b/src/main/java/org/sqa/simply_rugby/domain/dto/PlayerDetailDTO.java new file mode 100644 index 0000000..4f2d708 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/domain/dto/PlayerDetailDTO.java @@ -0,0 +1,27 @@ +package org.sqa.simply_rugby.domain.dto; + +import lombok.Data; + +@Data +public class PlayerDetailDTO { + // 基本信息 + private String name; + private String avatar; + private String teamName; + private String position; + + // 技能评分 + private Integer passingStandard; + private Integer passingSpin; + private Integer passingPop; + + private Integer tacklingFront; + private Integer tacklingRear; + private Integer tacklingSide; + private Integer tacklingScrabble; + + private Integer kickingDrop; + private Integer kickingPunt; + private Integer kickingGrubber; + private Integer kickingGoal; +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/domain/dto/PlayerPageDTO.java b/src/main/java/org/sqa/simply_rugby/domain/dto/PlayerPageDTO.java new file mode 100644 index 0000000..9a25e49 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/domain/dto/PlayerPageDTO.java @@ -0,0 +1,45 @@ +package org.sqa.simply_rugby.domain.dto; + +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 球员分页数据DTO + */ +@Data +public class PlayerPageDTO { + // 球员基本信息 + private String id; + private String position; + private String teamNumber; // 队内编号 + private Integer height; // 身高(cm) + private Integer weight; // 体重(kg) + private LocalDateTime createTime; // 创建时间 + + // 成员信息 + private String name; + private String avatar; + private String sruNumber; + private LocalDate dateOfBirth; + private String email; + private String telNumber; + private String mobileNumber; + + // 监护人信息 + private String guardian1Name; + private String guardian1Tel; + private String guardian2Name; + private String guardian2Tel; + + // 医生信息 + private String doctorName; + private String doctorTel; + + // 健康信息 + private String knownHealthIssues; + + // 队伍信息 + private String teamName; +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/domain/entity/Announcement.java b/src/main/java/org/sqa/simply_rugby/domain/entity/Announcement.java new file mode 100644 index 0000000..40bd2fd --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/domain/entity/Announcement.java @@ -0,0 +1,17 @@ +package org.sqa.simply_rugby.domain.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +@TableName("announcement") +public class Announcement { + @TableId + private String id; + private String title; + private String content; + private LocalDateTime time; +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/domain/entity/Function.java b/src/main/java/org/sqa/simply_rugby/domain/entity/Function.java new file mode 100644 index 0000000..1829aad --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/domain/entity/Function.java @@ -0,0 +1,15 @@ +package org.sqa.simply_rugby.domain.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +@Data +@TableName("function") +public class Function { + @TableId + private String id; + private String name; + private String parentId; + private String url; +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/domain/entity/Member.java b/src/main/java/org/sqa/simply_rugby/domain/entity/Member.java new file mode 100644 index 0000000..4208199 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/domain/entity/Member.java @@ -0,0 +1,26 @@ +package org.sqa.simply_rugby.domain.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.LocalDate; + +@Data +@TableName("member") +public class Member { + @TableId + private String id; + private String userName; + private String avatar; + private String password; + private String salt; + private String name; + private String address; + private String postcode; + private String sruNumber; + private LocalDate dateOfBirth; + private String telNumber; + private String mobileNumber; + private String email; +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/domain/entity/MemberRole.java b/src/main/java/org/sqa/simply_rugby/domain/entity/MemberRole.java new file mode 100644 index 0000000..043a097 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/domain/entity/MemberRole.java @@ -0,0 +1,28 @@ +package org.sqa.simply_rugby.domain.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * 成员角色实体类 + */ +@Data +@TableName("member_Role") +public class MemberRole { + /** + * 主键ID + */ + @TableId + private String id; + + /** + * 成员ID + */ + private String memberId; + + /** + * 角色ID + */ + private String roleId; +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/domain/entity/Player.java b/src/main/java/org/sqa/simply_rugby/domain/entity/Player.java new file mode 100644 index 0000000..981c0e4 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/domain/entity/Player.java @@ -0,0 +1,33 @@ +package org.sqa.simply_rugby.domain.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +@TableName("player") +public class Player { + @TableId + private String id; + private String memberId; + private String teamId; + private String position; + private String teamNumber; // 队内编号 + private Integer height; // 身高(cm) + private Integer weight; // 体重(kg) + private String guardian1Name; + private String guardian1Relationship; + private String guardian1Address; + private String guardian1Tel; + private String guardian2Name; + private String guardian2Relationship; + private String guardian2Address; + private String guardian2Tel; + private String doctorName; + private String doctorTel; + private String doctorAddress; + private String knownHealthIssues; + private LocalDateTime createTime; // 创建时间 +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/domain/entity/PlayerSkillProfile.java b/src/main/java/org/sqa/simply_rugby/domain/entity/PlayerSkillProfile.java new file mode 100644 index 0000000..4edbd3a --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/domain/entity/PlayerSkillProfile.java @@ -0,0 +1,38 @@ +package org.sqa.simply_rugby.domain.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +@Data +@TableName("player_skill_profile") +public class PlayerSkillProfile { + @TableId + private String id; + private String playerId; + + private Integer passingStandard; + private String passingStandardComment; + private Integer passingSpin; + private String passingSpinComment; + private Integer passingPop; + private String passingPopComment; + + private Integer tacklingFront; + private String tacklingFrontComment; + private Integer tacklingRear; + private String tacklingRearComment; + private Integer tacklingSide; + private String tacklingSideComment; + private Integer tacklingScrabble; + private String tacklingScrabbleComment; + + private Integer kickingDrop; + private String kickingDropComment; + private Integer kickingPunt; + private String kickingPuntComment; + private Integer kickingGrubber; + private String kickingGrubberComment; + private Integer kickingGoal; + private String kickingGoalComment; +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/domain/entity/Role.java b/src/main/java/org/sqa/simply_rugby/domain/entity/Role.java new file mode 100644 index 0000000..250a58b --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/domain/entity/Role.java @@ -0,0 +1,30 @@ +package org.sqa.simply_rugby.domain.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * 角色实体类 + */ +@Data +@TableName("role") +public class Role { + /** + * 主键ID + */ + @TableId + private String id; + + /** + * 角色名称 + */ + @TableField("role_name") + private String roleName; + + /** + * 角色描述 + */ + private String description; +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/domain/entity/RoleFunction.java b/src/main/java/org/sqa/simply_rugby/domain/entity/RoleFunction.java new file mode 100644 index 0000000..3855fae --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/domain/entity/RoleFunction.java @@ -0,0 +1,14 @@ +package org.sqa.simply_rugby.domain.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +@Data +@TableName("role_function") +public class RoleFunction { + @TableId + private String id; + private String roleId; + private String functionId; +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/domain/entity/TeamMember.java b/src/main/java/org/sqa/simply_rugby/domain/entity/TeamMember.java new file mode 100644 index 0000000..5662c08 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/domain/entity/TeamMember.java @@ -0,0 +1,14 @@ +package org.sqa.simply_rugby.domain.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +@Data +@TableName("team_member") +public class TeamMember { + @TableId + private String id; + private String teamId; + private String memberId; +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/mapper/AnnouncementMapper.java b/src/main/java/org/sqa/simply_rugby/mapper/AnnouncementMapper.java new file mode 100644 index 0000000..f82ba42 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/mapper/AnnouncementMapper.java @@ -0,0 +1,9 @@ +package org.sqa.simply_rugby.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.sqa.simply_rugby.domain.entity.Announcement; + +@Mapper +public interface AnnouncementMapper extends BaseMapper { +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/mapper/FunctionMapper.java b/src/main/java/org/sqa/simply_rugby/mapper/FunctionMapper.java new file mode 100644 index 0000000..827cd2f --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/mapper/FunctionMapper.java @@ -0,0 +1,9 @@ +package org.sqa.simply_rugby.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.sqa.simply_rugby.domain.entity.Function; + +@Mapper +public interface FunctionMapper extends BaseMapper { +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/mapper/MemberMapper.java b/src/main/java/org/sqa/simply_rugby/mapper/MemberMapper.java new file mode 100644 index 0000000..b83ce04 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/mapper/MemberMapper.java @@ -0,0 +1,9 @@ +package org.sqa.simply_rugby.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.sqa.simply_rugby.domain.entity.Member; + +@Mapper +public interface MemberMapper extends BaseMapper { +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/mapper/MemberRoleMapper.java b/src/main/java/org/sqa/simply_rugby/mapper/MemberRoleMapper.java new file mode 100644 index 0000000..960eca7 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/mapper/MemberRoleMapper.java @@ -0,0 +1,12 @@ +package org.sqa.simply_rugby.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.sqa.simply_rugby.domain.entity.MemberRole; + +/** + * 成员角色Mapper接口 + */ +@Mapper +public interface MemberRoleMapper extends BaseMapper { +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/mapper/PlayerMapper.java b/src/main/java/org/sqa/simply_rugby/mapper/PlayerMapper.java new file mode 100644 index 0000000..291ac58 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/mapper/PlayerMapper.java @@ -0,0 +1,9 @@ +package org.sqa.simply_rugby.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.sqa.simply_rugby.domain.entity.Player; + +@Mapper +public interface PlayerMapper extends BaseMapper { +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/mapper/PlayerSkillProfileMapper.java b/src/main/java/org/sqa/simply_rugby/mapper/PlayerSkillProfileMapper.java new file mode 100644 index 0000000..e83b959 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/mapper/PlayerSkillProfileMapper.java @@ -0,0 +1,9 @@ +package org.sqa.simply_rugby.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.sqa.simply_rugby.domain.entity.PlayerSkillProfile; + +@Mapper +public interface PlayerSkillProfileMapper extends BaseMapper { +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/mapper/RoleFunctionMapper.java b/src/main/java/org/sqa/simply_rugby/mapper/RoleFunctionMapper.java new file mode 100644 index 0000000..751c7ea --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/mapper/RoleFunctionMapper.java @@ -0,0 +1,9 @@ +package org.sqa.simply_rugby.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.sqa.simply_rugby.domain.entity.RoleFunction; + +@Mapper +public interface RoleFunctionMapper extends BaseMapper { +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/mapper/RoleMapper.java b/src/main/java/org/sqa/simply_rugby/mapper/RoleMapper.java new file mode 100644 index 0000000..b335c5f --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/mapper/RoleMapper.java @@ -0,0 +1,12 @@ +package org.sqa.simply_rugby.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.sqa.simply_rugby.domain.entity.Role; + +/** + * 角色Mapper接口 + */ +@Mapper +public interface RoleMapper extends BaseMapper { +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/mapper/TeamMemberMapper.java b/src/main/java/org/sqa/simply_rugby/mapper/TeamMemberMapper.java new file mode 100644 index 0000000..94de1ea --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/mapper/TeamMemberMapper.java @@ -0,0 +1,9 @@ +package org.sqa.simply_rugby.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.sqa.simply_rugby.domain.entity.TeamMember; + +@Mapper +public interface TeamMemberMapper extends BaseMapper { +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/service/AnnouncementService.java b/src/main/java/org/sqa/simply_rugby/service/AnnouncementService.java new file mode 100644 index 0000000..28b2a32 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/service/AnnouncementService.java @@ -0,0 +1,10 @@ +package org.sqa.simply_rugby.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import org.sqa.simply_rugby.domain.entity.Announcement; + +public interface AnnouncementService extends IService { + Page page(Integer pageNum, Integer pageSize); + Announcement getLatest(); +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/service/MemberRoleService.java b/src/main/java/org/sqa/simply_rugby/service/MemberRoleService.java new file mode 100644 index 0000000..1cc8e1e --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/service/MemberRoleService.java @@ -0,0 +1,28 @@ +package org.sqa.simply_rugby.service; + +import org.sqa.simply_rugby.domain.entity.MemberRole; + +import java.util.List; + +/** + * 成员角色服务接口 + */ +public interface MemberRoleService { + /** + * 根据成员ID获取角色列表 + * + * @param memberId 成员ID + * @return 角色列表 + */ + List listByMemberId(String memberId); + + /** + * 根据成员ID获取角色列表(别名方法) + * + * @param memberId 成员ID + * @return 角色列表 + */ + default List getByMemberId(String memberId) { + return listByMemberId(memberId); + } +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/service/MemberService.java b/src/main/java/org/sqa/simply_rugby/service/MemberService.java new file mode 100644 index 0000000..c777a27 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/service/MemberService.java @@ -0,0 +1,13 @@ +package org.sqa.simply_rugby.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import org.sqa.simply_rugby.domain.dto.MemberDetailDTO; +import org.sqa.simply_rugby.domain.entity.Member; + +import java.util.List; + +public interface MemberService extends IService { + Page page(Integer pageNum, Integer pageSize); + List getRandomMembers(int count); +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/service/PlayerService.java b/src/main/java/org/sqa/simply_rugby/service/PlayerService.java new file mode 100644 index 0000000..854dcd2 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/service/PlayerService.java @@ -0,0 +1,18 @@ +package org.sqa.simply_rugby.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import org.sqa.simply_rugby.domain.dto.PlayerDTO; +import org.sqa.simply_rugby.domain.dto.PlayerDetailDTO; +import org.sqa.simply_rugby.domain.dto.PlayerPageDTO; +import org.sqa.simply_rugby.domain.entity.Player; + +import java.util.List; + +public interface PlayerService extends IService { + Page page(Integer pageNum, Integer pageSize); + Page pageWithInfo(Integer pageNum, Integer pageSize); + Page pageByTeam(String teamId, Integer pageNum, Integer pageSize); + List getRandomPlayers(int count); + PlayerDTO getPlayerWithInfo(String id); +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/service/PlayerSkillProfileService.java b/src/main/java/org/sqa/simply_rugby/service/PlayerSkillProfileService.java new file mode 100644 index 0000000..e13d753 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/service/PlayerSkillProfileService.java @@ -0,0 +1,10 @@ +package org.sqa.simply_rugby.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import org.sqa.simply_rugby.domain.entity.PlayerSkillProfile; + +public interface PlayerSkillProfileService extends IService { + Page page(Integer pageNum, Integer pageSize); + PlayerSkillProfile getByPlayerId(String playerId); +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/service/RoleService.java b/src/main/java/org/sqa/simply_rugby/service/RoleService.java new file mode 100644 index 0000000..86f7de6 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/service/RoleService.java @@ -0,0 +1,26 @@ +package org.sqa.simply_rugby.service; + +import org.sqa.simply_rugby.domain.entity.Role; + +import java.util.List; + +/** + * 角色服务接口 + */ +public interface RoleService { + /** + * 根据ID获取角色 + * + * @param id 角色ID + * @return 角色信息 + */ + Role getById(String id); + + /** + * 根据ID列表批量获取角色 + * + * @param ids 角色ID列表 + * @return 角色列表 + */ + List listByIds(List ids); +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/service/impl/AnnouncementServiceImpl.java b/src/main/java/org/sqa/simply_rugby/service/impl/AnnouncementServiceImpl.java new file mode 100644 index 0000000..49899dc --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/service/impl/AnnouncementServiceImpl.java @@ -0,0 +1,25 @@ +package org.sqa.simply_rugby.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.sqa.simply_rugby.domain.entity.Announcement; +import org.sqa.simply_rugby.mapper.AnnouncementMapper; +import org.sqa.simply_rugby.service.AnnouncementService; + +@Service +public class AnnouncementServiceImpl extends ServiceImpl implements AnnouncementService { + @Override + public Page page(Integer pageNum, Integer pageSize) { + return page(new Page<>(pageNum, pageSize)); + } + + @Override + public Announcement getLatest() { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.orderByDesc(Announcement::getTime); + wrapper.last("LIMIT 1"); + return getOne(wrapper); + } +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/service/impl/MemberRoleServiceImpl.java b/src/main/java/org/sqa/simply_rugby/service/impl/MemberRoleServiceImpl.java new file mode 100644 index 0000000..e52783f --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/service/impl/MemberRoleServiceImpl.java @@ -0,0 +1,27 @@ +package org.sqa.simply_rugby.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.sqa.simply_rugby.domain.entity.MemberRole; +import org.sqa.simply_rugby.mapper.MemberRoleMapper; +import org.sqa.simply_rugby.service.MemberRoleService; + +import java.util.List; + +/** + * 成员角色服务实现类 + */ +@Service +@RequiredArgsConstructor +public class MemberRoleServiceImpl implements MemberRoleService { + private final MemberRoleMapper memberRoleMapper; + + @Override + public List listByMemberId(String memberId) { + return memberRoleMapper.selectList( + new LambdaQueryWrapper() + .eq(MemberRole::getMemberId, memberId) + ); + } +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/service/impl/MemberServiceImpl.java b/src/main/java/org/sqa/simply_rugby/service/impl/MemberServiceImpl.java new file mode 100644 index 0000000..d6ca1a4 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/service/impl/MemberServiceImpl.java @@ -0,0 +1,101 @@ +package org.sqa.simply_rugby.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.sqa.simply_rugby.domain.dto.MemberDetailDTO; +import org.sqa.simply_rugby.domain.entity.Member; +import org.sqa.simply_rugby.domain.entity.MemberRole; +import org.sqa.simply_rugby.domain.entity.Role; +import org.sqa.simply_rugby.mapper.MemberMapper; +import org.sqa.simply_rugby.service.MemberRoleService; +import org.sqa.simply_rugby.service.MemberService; +import org.sqa.simply_rugby.service.RoleService; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +@Slf4j +@Service +@RequiredArgsConstructor +public class MemberServiceImpl extends ServiceImpl implements MemberService { + private final MemberRoleService memberRoleService; + private final RoleService roleService; + + @Override + public Page page(Integer pageNum, Integer pageSize) { + return page(new Page<>(pageNum, pageSize)); + } + + @Override + public List getRandomMembers(int count) { + // 获取所有成员 + List allMembers = list(); + if (allMembers.isEmpty()) { + return new ArrayList<>(); + } + + // 随机选择指定数量的成员 + List selectedMembers = new ArrayList<>(); + Random random = new Random(); + int totalMembers = allMembers.size(); + count = Math.min(count, totalMembers); + + while (selectedMembers.size() < count) { + int index = random.nextInt(totalMembers); + Member member = allMembers.get(index); + if (!selectedMembers.contains(member)) { + selectedMembers.add(member); + } + } + + // 转换为DTO并填充相关信息 + List result = new ArrayList<>(); + for (Member member : selectedMembers) { + MemberDetailDTO dto = new MemberDetailDTO(); + dto.setAvatar(member.getAvatar()); + dto.setName(member.getName()); + dto.setDateOfBirth(member.getDateOfBirth()); + dto.setSruNumber(member.getSruNumber()); + dto.setEmail(member.getEmail()); + + try { + // 获取成员角色 + List memberRoles = memberRoleService.getByMemberId(member.getId()); + log.info("成员ID: {}, 查询到的角色数量: {}", member.getId(), memberRoles.size()); + + if (!memberRoles.isEmpty()) { + MemberRole memberRole = memberRoles.get(0); // 获取第一个角色 + log.info("成员ID: {}, 角色ID: {}", member.getId(), memberRole.getRoleId()); + + if (memberRole != null && memberRole.getRoleId() != null) { + try { + Role role = roleService.getById(memberRole.getRoleId()); + if (role != null) { + log.info("成员ID: {}, 角色名称: {}", member.getId(), role.getRoleName()); + dto.setRole(role.getRoleName()); + } else { + log.warn("未找到角色信息,roleId: {}", memberRole.getRoleId()); + } + } catch (Exception e) { + log.error("查询角色信息失败,roleId: {}, 错误: {}", memberRole.getRoleId(), e.getMessage()); + } + } else { + log.warn("角色ID为空,memberRole: {}", memberRole); + } + } else { + log.warn("未找到成员角色信息,memberId: {}", member.getId()); + } + } catch (Exception e) { + log.error("获取成员角色信息失败,memberId: {}, 错误: {}", member.getId(), e.getMessage()); + } + + result.add(dto); + } + + return result; + } +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/service/impl/PlayerServiceImpl.java b/src/main/java/org/sqa/simply_rugby/service/impl/PlayerServiceImpl.java new file mode 100644 index 0000000..f129d8e --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/service/impl/PlayerServiceImpl.java @@ -0,0 +1,213 @@ +package org.sqa.simply_rugby.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.sqa.simply_rugby.domain.dto.PlayerDTO; +import org.sqa.simply_rugby.domain.dto.PlayerDetailDTO; +import org.sqa.simply_rugby.domain.dto.PlayerPageDTO; +import org.sqa.simply_rugby.domain.entity.Member; +import org.sqa.simply_rugby.domain.entity.Player; +import org.sqa.simply_rugby.domain.entity.PlayerSkillProfile; +import org.sqa.simply_rugby.domain.entity.Team; +import org.sqa.simply_rugby.mapper.PlayerMapper; +import org.sqa.simply_rugby.service.*; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +@Slf4j +@Service +@RequiredArgsConstructor +public class PlayerServiceImpl extends ServiceImpl implements PlayerService { + private final MemberService memberService; + private final TeamService teamService; + private final PlayerSkillProfileService skillProfileService; + + @Override + public Page page(Integer pageNum, Integer pageSize) { + return page(new Page<>(pageNum, pageSize)); + } + + @Override + public Page pageWithInfo(Integer pageNum, Integer pageSize) { + // 获取球员分页数据 + Page playerPage = page(new Page<>(pageNum, pageSize)); + + // 创建返回结果 + Page result = new Page<>(pageNum, pageSize, playerPage.getTotal()); + List records = new ArrayList<>(); + + // 转换数据 + for (Player player : playerPage.getRecords()) { + PlayerPageDTO dto = new PlayerPageDTO(); + // 设置球员基本信息 + dto.setId(player.getId()); + dto.setPosition(player.getPosition()); + dto.setTeamNumber(player.getTeamNumber()); + dto.setHeight(player.getHeight()); + dto.setWeight(player.getWeight()); + dto.setCreateTime(player.getCreateTime()); + dto.setGuardian1Name(player.getGuardian1Name()); + dto.setGuardian1Tel(player.getGuardian1Tel()); + dto.setGuardian2Name(player.getGuardian2Name()); + dto.setGuardian2Tel(player.getGuardian2Tel()); + dto.setDoctorName(player.getDoctorName()); + dto.setDoctorTel(player.getDoctorTel()); + dto.setKnownHealthIssues(player.getKnownHealthIssues()); + + try { + // 获取成员信息 + Member member = memberService.getById(player.getMemberId()); + if (member != null) { + dto.setName(member.getName()); + dto.setAvatar(member.getAvatar()); + dto.setSruNumber(member.getSruNumber()); + dto.setDateOfBirth(member.getDateOfBirth()); + dto.setEmail(member.getEmail()); + dto.setTelNumber(member.getTelNumber()); + dto.setMobileNumber(member.getMobileNumber()); + } else { + log.warn("未找到成员信息,memberId: {}", player.getMemberId()); + } + + // 获取队伍信息 + Team team = teamService.getById(player.getTeamId()); + if (team != null) { + dto.setTeamName(team.getTeamName()); + } else { + log.warn("未找到队伍信息,teamId: {}", player.getTeamId()); + } + } catch (Exception e) { + log.error("获取球员关联信息失败,playerId: {}, 错误: {}", player.getId(), e.getMessage()); + } + + records.add(dto); + } + + result.setRecords(records); + return result; + } + + @Override + public Page pageByTeam(String teamId, Integer pageNum, Integer pageSize) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Player::getTeamId, teamId); + return page(new Page<>(pageNum, pageSize), wrapper); + } + + @Override + public List getRandomPlayers(int count) { + // 获取所有球员 + List allPlayers = list(); + if (allPlayers.isEmpty()) { + return new ArrayList<>(); + } + + // 随机选择指定数量的球员 + List selectedPlayers = new ArrayList<>(); + Random random = new Random(); + int totalPlayers = allPlayers.size(); + count = Math.min(count, totalPlayers); + + while (selectedPlayers.size() < count) { + int index = random.nextInt(totalPlayers); + Player player = allPlayers.get(index); + if (!selectedPlayers.contains(player)) { + selectedPlayers.add(player); + } + } + + // 转换为DTO并填充相关信息 + List result = new ArrayList<>(); + for (Player player : selectedPlayers) { + PlayerDetailDTO dto = new PlayerDetailDTO(); + + // 设置位置信息 + dto.setPosition(player.getPosition()); + + // 获取成员信息 + Member member = memberService.getById(player.getMemberId()); + if (member != null) { + dto.setName(member.getName()); + dto.setAvatar(member.getAvatar()); + } + + // 获取队伍信息 + Team team = teamService.getById(player.getTeamId()); + if (team != null) { + dto.setTeamName(team.getTeamName()); + } else { + dto.setTeamName("Unknown Team"); + } + + // 获取技能评价 + PlayerSkillProfile skillProfile = skillProfileService.getByPlayerId(player.getId()); + if (skillProfile != null) { + // 只复制技能评分字段 + dto.setPassingStandard(skillProfile.getPassingStandard()); + dto.setPassingSpin(skillProfile.getPassingSpin()); + dto.setPassingPop(skillProfile.getPassingPop()); + + dto.setTacklingFront(skillProfile.getTacklingFront()); + dto.setTacklingRear(skillProfile.getTacklingRear()); + dto.setTacklingSide(skillProfile.getTacklingSide()); + dto.setTacklingScrabble(skillProfile.getTacklingScrabble()); + + dto.setKickingDrop(skillProfile.getKickingDrop()); + dto.setKickingPunt(skillProfile.getKickingPunt()); + dto.setKickingGrubber(skillProfile.getKickingGrubber()); + dto.setKickingGoal(skillProfile.getKickingGoal()); + } + + result.add(dto); + } + + return result; + } + + @Override + public PlayerDTO getPlayerWithInfo(String id) { + // 获取球员信息 + Player player = this.getById(id); + if (player == null) { + return null; + } + + // 获取会员信息 + Member member = memberService.getById(player.getMemberId()); + if (member == null) { + return null; + } + + // 获取球队信息 + Team team = teamService.getById(player.getTeamId()); + + // 构建PlayerDTO对象 + PlayerDTO playerDTO = new PlayerDTO(); + + // 复制球员基本信息 + BeanUtils.copyProperties(player, playerDTO); + + // 设置会员信息 + playerDTO.setName(member.getName()); + playerDTO.setAvatar(member.getAvatar()); + playerDTO.setSruNumber(member.getSruNumber()); + playerDTO.setDateOfBirth(member.getDateOfBirth()); + playerDTO.setEmail(member.getEmail()); + playerDTO.setTelNumber(member.getTelNumber()); + playerDTO.setMobileNumber(member.getMobileNumber()); + + // 设置球队名称 + if (team != null) { + playerDTO.setTeamName(team.getTeamName()); + } + + return playerDTO; + } +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/service/impl/PlayerSkillProfileServiceImpl.java b/src/main/java/org/sqa/simply_rugby/service/impl/PlayerSkillProfileServiceImpl.java new file mode 100644 index 0000000..6242614 --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/service/impl/PlayerSkillProfileServiceImpl.java @@ -0,0 +1,41 @@ +package org.sqa.simply_rugby.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.sqa.simply_rugby.domain.entity.PlayerSkillProfile; +import org.sqa.simply_rugby.mapper.PlayerSkillProfileMapper; +import org.sqa.simply_rugby.service.PlayerSkillProfileService; + +@Service +public class PlayerSkillProfileServiceImpl extends ServiceImpl implements PlayerSkillProfileService { + @Override + public Page page(Integer pageNum, Integer pageSize) { + return page(new Page<>(pageNum, pageSize)); + } + + @Override + public PlayerSkillProfile getByPlayerId(String playerId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PlayerSkillProfile::getPlayerId, playerId); + PlayerSkillProfile profile = getOne(wrapper); + if (profile == null) { + // 如果找不到技能档案,返回一个空的档案(所有评分为0) + profile = new PlayerSkillProfile(); + profile.setPlayerId(playerId); + profile.setPassingStandard(0); + profile.setPassingSpin(0); + profile.setPassingPop(0); + profile.setTacklingFront(0); + profile.setTacklingRear(0); + profile.setTacklingSide(0); + profile.setTacklingScrabble(0); + profile.setKickingDrop(0); + profile.setKickingPunt(0); + profile.setKickingGrubber(0); + profile.setKickingGoal(0); + } + return profile; + } +} \ No newline at end of file diff --git a/src/main/java/org/sqa/simply_rugby/service/impl/RoleServiceImpl.java b/src/main/java/org/sqa/simply_rugby/service/impl/RoleServiceImpl.java new file mode 100644 index 0000000..6b2c8df --- /dev/null +++ b/src/main/java/org/sqa/simply_rugby/service/impl/RoleServiceImpl.java @@ -0,0 +1,28 @@ +package org.sqa.simply_rugby.service.impl; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.sqa.simply_rugby.domain.entity.Role; +import org.sqa.simply_rugby.mapper.RoleMapper; +import org.sqa.simply_rugby.service.RoleService; + +import java.util.List; + +/** + * 角色服务实现类 + */ +@Service +@RequiredArgsConstructor +public class RoleServiceImpl implements RoleService { + private final RoleMapper roleMapper; + + @Override + public Role getById(String id) { + return roleMapper.selectById(id); + } + + @Override + public List listByIds(List ids) { + return roleMapper.selectBatchIds(ids); + } +} \ No newline at end of file