feat(ai): 添加学习记录排行榜功能
- 新增 ApiCompanyStudyRecordDto 请求参数类
- 新增 ApiCompanyStudyRecordVo 响应结果类
- 在 AiMemberAnswerMapper 中添加 getStudyRecordList 查询方法
- 在 AiMemberAnswerService 中添加 getStudyRecordList 服务接口
- 在 AiMemberServiceImpl 中实现 studyRecordList 业务逻辑
- 在 ApiMemberController 中添加 /studyRecordList 接口
- 配置 MyBatis XML 映射文件实现学习记录查询功能
- 添加 Swagger API 文档注解支持
7 files modified
2 files added
| | |
| | | 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) |
| | |
| | | |
| | | 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; |
| | |
| | | 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); |
| | | } |
| New file |
| | |
| | | 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; |
| | | } |
| New file |
| | |
| | | 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; |
| | | } |
| | |
| | | |
| | | 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; |
| | |
| | | Page<ApiMemberAnswerPageVo> getAnswerPage(Page<ApiMemberAnswerPageVo> page, ApiMemberAnswerPageDto dto); |
| | | |
| | | IPage<ApiCompanyStudyVo> selectListPage(ApiCompanyStudyDto dto, Page<ApiCompanyStudyVo> page); |
| | | |
| | | IPage<ApiCompanyStudyRecordVo> getStudyRecordList(Page<ApiCompanyStudyRecordVo> page, ApiCompanyStudyRecordDto dto); |
| | | } |
| | |
| | | FebsResponse studyPercentList(ApiCompanyStudyPercentDto dto); |
| | | |
| | | FebsResponse studyInfoList(ApiCompanyStudyInfoDto dto); |
| | | |
| | | FebsResponse studyRecordList(ApiCompanyStudyRecordDto dto); |
| | | } |
| | |
| | | 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.*; |
| | |
| | | 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); |
| | | } |
| | | } |
| | |
| | | } |
| | | 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); |
| | | } |
| | | } |
| | |
| | | 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> |