From a12b838f8e8555671d0752cd85e8e2ce9d208429 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 13 Jan 2026 09:59:12 +0800
Subject: [PATCH] feat(ai): 添加学习记录排行榜功能
---
src/main/java/cc/mrbird/febs/ai/req/member/ApiCompanyStudyRecordDto.java | 27 +++++++++++++
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java | 12 ++++++
src/main/java/cc/mrbird/febs/ai/service/AiMemberAnswerService.java | 4 ++
src/main/java/cc/mrbird/febs/ai/service/AiMemberService.java | 2 +
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java | 7 +++
src/main/java/cc/mrbird/febs/ai/controller/member/ApiMemberController.java | 10 +++++
src/main/java/cc/mrbird/febs/ai/mapper/AiMemberAnswerMapper.java | 4 ++
src/main/resources/mapper/modules/AiMemberAnswerMapper.xml | 15 +++++++
src/main/java/cc/mrbird/febs/ai/res/member/ApiCompanyStudyRecordVo.java | 19 +++++++++
9 files changed, 100 insertions(+), 0 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/ai/controller/member/ApiMemberController.java b/src/main/java/cc/mrbird/febs/ai/controller/member/ApiMemberController.java
index 269307d..29f22e9 100644
--- a/src/main/java/cc/mrbird/febs/ai/controller/member/ApiMemberController.java
+++ b/src/main/java/cc/mrbird/febs/ai/controller/member/ApiMemberController.java
@@ -99,6 +99,16 @@
return aiMemberService.studyList(dto);
}
+ @ApiOperation(value = "学习成果-排行版", notes = "学习成果-排行版")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "success", response = ApiCompanyStudyRecordVo.class)
+ })
+ @PostMapping(value = "/studyRecordList")
+ public FebsResponse studyRecordList(@RequestBody @Validated ApiCompanyStudyRecordDto dto) {
+
+ return aiMemberService.studyRecordList(dto);
+ }
+
@ApiOperation(value = "学习成果-题目正确率", notes = "学习成果-题目正确率")
@ApiResponses({
@ApiResponse(code = 200, message = "success", response = ApiCompanyStudyPercentVo.class)
diff --git a/src/main/java/cc/mrbird/febs/ai/mapper/AiMemberAnswerMapper.java b/src/main/java/cc/mrbird/febs/ai/mapper/AiMemberAnswerMapper.java
index 44449ee..5f88713 100644
--- a/src/main/java/cc/mrbird/febs/ai/mapper/AiMemberAnswerMapper.java
+++ b/src/main/java/cc/mrbird/febs/ai/mapper/AiMemberAnswerMapper.java
@@ -2,8 +2,10 @@
import cc.mrbird.febs.ai.entity.AiMemberAnswer;
import cc.mrbird.febs.ai.req.member.ApiCompanyStudyDto;
+import cc.mrbird.febs.ai.req.member.ApiCompanyStudyRecordDto;
import cc.mrbird.febs.ai.req.member.ApiMemberAnswerPageDto;
import cc.mrbird.febs.ai.req.memberAnswer.ApiMemberProductWorkPageDto;
+import cc.mrbird.febs.ai.res.member.ApiCompanyStudyRecordVo;
import cc.mrbird.febs.ai.res.member.ApiCompanyStudyVo;
import cc.mrbird.febs.ai.res.member.ApiMemberAnswerPageVo;
import cc.mrbird.febs.ai.res.memberAnswer.ApiMemberProductWorkVo;
@@ -25,4 +27,6 @@
Page<ApiMemberAnswerPageVo> getAnswerPage(Page<ApiMemberAnswerPageVo> page, @Param("record")ApiMemberAnswerPageDto dto);
IPage<ApiCompanyStudyVo> selectProductListPage(Page<ApiCompanyStudyVo> page, @Param("record")ApiCompanyStudyDto dto);
+
+ IPage<ApiCompanyStudyRecordVo> getStudyRecordList(Page<ApiCompanyStudyRecordVo> page, @Param("record")ApiCompanyStudyRecordDto dto);
}
diff --git a/src/main/java/cc/mrbird/febs/ai/req/member/ApiCompanyStudyRecordDto.java b/src/main/java/cc/mrbird/febs/ai/req/member/ApiCompanyStudyRecordDto.java
new file mode 100644
index 0000000..18f711c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/ai/req/member/ApiCompanyStudyRecordDto.java
@@ -0,0 +1,27 @@
+package cc.mrbird.febs.ai.req.member;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+@Data
+@ApiModel(value = "ApiCompanyStudyRecordDto", description = "参数")
+public class ApiCompanyStudyRecordDto {
+
+ @NotNull(message = "页码不能为空")
+ @ApiModelProperty(value = "页码", example = "1")
+ private Integer pageNow;
+
+ @NotNull(message = "每页数量不能为空")
+ @ApiModelProperty(value = "每页数量", example = "10")
+ private Integer pageSize;
+
+ @NotBlank(message = "产品ID不能为空")
+ @ApiModelProperty(value = "产品ID")
+ private String productId;
+
+ @ApiModelProperty(value = "公司ID")
+ private String companyId;
+}
diff --git a/src/main/java/cc/mrbird/febs/ai/res/member/ApiCompanyStudyRecordVo.java b/src/main/java/cc/mrbird/febs/ai/res/member/ApiCompanyStudyRecordVo.java
new file mode 100644
index 0000000..f57e62c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/ai/res/member/ApiCompanyStudyRecordVo.java
@@ -0,0 +1,19 @@
+package cc.mrbird.febs.ai.res.member;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiCompanyStudyRecordVo", description = "参数")
+public class ApiCompanyStudyRecordVo {
+
+ @ApiModelProperty(value = "微信名")
+ private String nickName;
+
+ @ApiModelProperty(value = "用户姓名")
+ private String memberName;
+
+ @ApiModelProperty(value = "评分")
+ private Integer score;
+}
diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiMemberAnswerService.java b/src/main/java/cc/mrbird/febs/ai/service/AiMemberAnswerService.java
index 7b0c798..ef4df96 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/AiMemberAnswerService.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/AiMemberAnswerService.java
@@ -2,8 +2,10 @@
import cc.mrbird.febs.ai.entity.AiMemberAnswer;
import cc.mrbird.febs.ai.req.member.ApiCompanyStudyDto;
+import cc.mrbird.febs.ai.req.member.ApiCompanyStudyRecordDto;
import cc.mrbird.febs.ai.req.member.ApiMemberAnswerPageDto;
import cc.mrbird.febs.ai.req.memberAnswer.*;
+import cc.mrbird.febs.ai.res.member.ApiCompanyStudyRecordVo;
import cc.mrbird.febs.ai.res.member.ApiCompanyStudyVo;
import cc.mrbird.febs.ai.res.member.ApiMemberAnswerPageVo;
import cc.mrbird.febs.common.entity.FebsResponse;
@@ -50,4 +52,6 @@
Page<ApiMemberAnswerPageVo> getAnswerPage(Page<ApiMemberAnswerPageVo> page, ApiMemberAnswerPageDto dto);
IPage<ApiCompanyStudyVo> selectListPage(ApiCompanyStudyDto dto, Page<ApiCompanyStudyVo> page);
+
+ IPage<ApiCompanyStudyRecordVo> getStudyRecordList(Page<ApiCompanyStudyRecordVo> page, ApiCompanyStudyRecordDto dto);
}
diff --git a/src/main/java/cc/mrbird/febs/ai/service/AiMemberService.java b/src/main/java/cc/mrbird/febs/ai/service/AiMemberService.java
index 33e932b..8d1d15a 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/AiMemberService.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/AiMemberService.java
@@ -26,4 +26,6 @@
FebsResponse studyPercentList(ApiCompanyStudyPercentDto dto);
FebsResponse studyInfoList(ApiCompanyStudyInfoDto dto);
+
+ FebsResponse studyRecordList(ApiCompanyStudyRecordDto dto);
}
diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java
index d4fed26..15da33c 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberAnswerServiceImpl.java
@@ -4,8 +4,10 @@
import cc.mrbird.febs.ai.enumerates.AiTypeEnum;
import cc.mrbird.febs.ai.mapper.AiMemberAnswerMapper;
import cc.mrbird.febs.ai.req.member.ApiCompanyStudyDto;
+import cc.mrbird.febs.ai.req.member.ApiCompanyStudyRecordDto;
import cc.mrbird.febs.ai.req.member.ApiMemberAnswerPageDto;
import cc.mrbird.febs.ai.req.memberAnswer.*;
+import cc.mrbird.febs.ai.res.member.ApiCompanyStudyRecordVo;
import cc.mrbird.febs.ai.res.member.ApiCompanyStudyVo;
import cc.mrbird.febs.ai.res.member.ApiMemberAnswerPageVo;
import cc.mrbird.febs.ai.res.memberAnswer.*;
@@ -463,4 +465,9 @@
public IPage<ApiCompanyStudyVo> selectListPage(ApiCompanyStudyDto dto, Page<ApiCompanyStudyVo> page) {
return aiMemberAnswerMapper.selectProductListPage(page,dto);
}
+
+ @Override
+ public IPage<ApiCompanyStudyRecordVo> getStudyRecordList(Page<ApiCompanyStudyRecordVo> page, ApiCompanyStudyRecordDto dto) {
+ return aiMemberAnswerMapper.getStudyRecordList(page,dto);
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java
index b0eb286..7fadea8 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberServiceImpl.java
@@ -504,4 +504,16 @@
}
return new FebsResponse().success().data(objects);
}
+
+ @Override
+ public FebsResponse studyRecordList(ApiCompanyStudyRecordDto dto) {
+
+ String companyId = LoginUserUtil.getLoginUser().getCompanyId();
+ dto.setCompanyId( companyId);
+
+ // 创建分页对象,传入当前页和每页大小
+ Page<ApiCompanyStudyRecordVo> page = new Page<>(dto.getPageNow(), dto.getPageSize());
+ IPage<ApiCompanyStudyRecordVo> result = aiMemberAnswerService.getStudyRecordList(page,dto);
+ return new FebsResponse().success().data(result);
+ }
}
diff --git a/src/main/resources/mapper/modules/AiMemberAnswerMapper.xml b/src/main/resources/mapper/modules/AiMemberAnswerMapper.xml
index 492dab3..992df16 100644
--- a/src/main/resources/mapper/modules/AiMemberAnswerMapper.xml
+++ b/src/main/resources/mapper/modules/AiMemberAnswerMapper.xml
@@ -59,4 +59,19 @@
order by b.CREATED_TIME desc
</select>
+
+
+
+ <select id="getStudyRecordList" resultType="cc.mrbird.febs.ai.res.member.ApiCompanyStudyRecordVo">
+ select
+ a.name as nickName,
+ a.real_name as memberName,
+ b.score as score
+ from ai_member_answer b
+ left join mall_member a on b.member_id = a.member_uuid
+ where b.product_id = #{record.productId}
+ and b.company_id = #{record.companyId}
+ order by a.score desc
+
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.9.1