Jelajahi Sumber

feat:答题记录/我的答题记录添加用户模糊搜索和导出功能

caoliqin 1 Minggu lalu
induk
melakukan
9c665343cd

+ 5 - 5
fs-company/src/main/java/com/fs/course/controller/FsCourseAnswerLogsController.java

@@ -105,26 +105,26 @@ public class FsCourseAnswerLogsController extends BaseController
         }
         List<FsCourseAnswerLogsListVO> list = fsCourseAnswerLogsService.selectFsCourseAnswerLogsListVONew(param);
         ExcelUtil<FsCourseAnswerLogsListVO> util = new ExcelUtil<FsCourseAnswerLogsListVO>(FsCourseAnswerLogsListVO.class);
-        return util.exportExcel(list, "答题日志数据");
+        return util.exportExcel(list, "答题记录数据");
     }
 
     /**
-     * 导出答题日志列表
+     * 导出我的答题日志列表
      */
     @PreAuthorize("@ss.hasPermi('course:courseAnswerLog:myExport')")
-    @Log(title = "答题日志", businessType = BusinessType.EXPORT)
+    @Log(title = "我的答题日志", businessType = BusinessType.EXPORT)
     @GetMapping("/myExport")
     public AjaxResult myExport(FsCourseAnswerLogsParam param)
     {
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         param.setCompanyId( loginUser.getCompany().getCompanyId());
-
+        param.setCompanyUserId(loginUser.getUser().getUserId());
         if (param.getPhoneMk() != null && param.getPhoneMk() != "") {
             param.setPhone(param.getPhoneMk());
         }
         List<FsCourseAnswerLogsListVO> list = fsCourseAnswerLogsService.selectFsCourseAnswerLogsListVONew(param);
         ExcelUtil<FsCourseAnswerLogsListVO> util = new ExcelUtil<FsCourseAnswerLogsListVO>(FsCourseAnswerLogsListVO.class);
-        return util.exportExcel(list, "答题日志数据");
+        return util.exportExcel(list, "我的答题记录数据");
     }
 
 //    /**

+ 9 - 1
fs-service-system/src/main/java/com/fs/course/param/FsCourseAnswerLogsParam.java

@@ -5,7 +5,7 @@ import com.fs.common.core.domain.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import java.util.Date;
+import java.util.Set;
 
 @EqualsAndHashCode(callSuper = true)
 @Data
@@ -60,4 +60,12 @@ public class FsCourseAnswerLogsParam  extends BaseEntity  {
 
     private Long pageNum;
     private Long pageSize;
+    /**
+     * 用户(昵称_id组合)
+     */
+    private String userName;
+    /**
+     * 用户id
+     */
+    private Set<Long> userIds;
 }

+ 15 - 1
fs-service-system/src/main/java/com/fs/course/service/impl/FsCourseAnswerLogsServiceImpl.java

@@ -23,11 +23,12 @@ import com.fs.store.service.cache.IFsUserCacheService;
 import com.fs.store.service.cache.IFsUserCourseCacheService;
 import com.hc.openapi.tool.util.StringUtils;
 import lombok.RequiredArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * 答题日志Service业务层处理
@@ -50,6 +51,9 @@ public class FsCourseAnswerLogsServiceImpl implements IFsCourseAnswerLogsService
     private final ICompanyCacheService companyCacheService;
 
     private final ICompanyUserCacheService companyUserCacheService;
+
+    private final IFsUserService fsUserService;
+
     /**
      * 查询答题日志
      *
@@ -86,6 +90,16 @@ public class FsCourseAnswerLogsServiceImpl implements IFsCourseAnswerLogsService
 
     @Override
     public List<FsCourseAnswerLogsListVO> selectFsCourseAnswerLogsListVONew(FsCourseAnswerLogsParam param) {
+
+        if(StringUtils.isNotEmpty(param.getUserName())){
+            List<FsUser> fsUsers = fsUserService.selectFsUserListByJointUserNameKey(param.getUserName());
+            if(fsUsers.isEmpty()) {
+                return Collections.emptyList();
+            }
+            Set<Long> userIds = fsUsers.stream().map(FsUser::getUserId).collect(Collectors.toSet());
+            param.setUserIds(userIds);
+        }
+
         List<FsCourseAnswerLogsListVO> data = fsCourseAnswerLogsMapper.selectFsCourseAnswerLogsListVONew(param);
         for (FsCourseAnswerLogsListVO datum : data) {
             FsUserCourseVideo fsUserCourseVideo = fsUserCourseVideoCacheService.selectFsUserCourseVideoByVideoId(datum.getVideoId());

+ 3 - 2
fs-service-system/src/main/java/com/fs/course/vo/FsCourseAnswerLogsListVO.java

@@ -18,7 +18,7 @@ public class FsCourseAnswerLogsListVO {
     /**
     * 小程序用户名
     */
-    @Excel(name = "用户")
+    @Excel(name = "用户", sort = 1)
     private String userName;
     private String fsAvatar;
     /**
@@ -37,7 +37,7 @@ public class FsCourseAnswerLogsListVO {
     /**
     * 视频名称
     */
-    @Excel(name = "视频名称",width = 70)
+    @Excel(name = "小节名称",width = 70)
     private String videoName;
     /**
     * 是否全部正确 0否 1是
@@ -86,6 +86,7 @@ public class FsCourseAnswerLogsListVO {
     /**
      * 项目名称
      */
+    @Excel(name = "项目", sort = 2)
     private String projectName;
 
     private Date sTime;

+ 1 - 0
fs-service-system/src/main/java/com/fs/store/mapper/FsUserMapper.java

@@ -317,4 +317,5 @@ public interface FsUserMapper
 
     List<FsUserWatchCourseStatistics> selectFsUserDetail();
 
+    List<FsUser> selectFsUserListByJointUserNameKey(String userNameKey);
 }

+ 7 - 0
fs-service-system/src/main/java/com/fs/store/service/IFsUserService.java

@@ -253,4 +253,11 @@ public interface IFsUserService
      */
     void setRepeatFansTag(FsUserCourseBeMemberParam param);
 
+    /**
+     * 根据组合key(用户昵称+id)查询用户信息
+     * @param userNameKey (用户昵称+id)
+     * @return
+     */
+    List<FsUser> selectFsUserListByJointUserNameKey(String userNameKey);
+
 }

+ 5 - 0
fs-service-system/src/main/java/com/fs/store/service/impl/FsUserServiceImpl.java

@@ -999,6 +999,11 @@ public class FsUserServiceImpl implements IFsUserService
         }
     }
 
+    @Override
+    public List<FsUser> selectFsUserListByJointUserNameKey(String userNameKey) {
+        return fsUserMapper.selectFsUserListByJointUserNameKey(userNameKey);
+    }
+
     // 添加关系表数据
     private static FsUserCompanyUser getFsUserCompanyUser(FsUserCourseBeMemberParam param, FsUser fsUser) {
         FsUserCompanyUser fsUserCompanyUser = new FsUserCompanyUser();

+ 9 - 0
fs-service-system/src/main/resources/mapper/course/FsCourseAnswerLogsMapper.xml

@@ -55,6 +55,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="courseId != null">
                 cal_inner.course_id = #{courseId}
             </if>
+            <if test="videoId != null and videoId != '' ">
+                AND cal_inner.video_id = #{videoId}
+            </if>
             <if test="companyUserId != null">
                 AND cal_inner.company_user_id = #{companyUserId}
             </if>
@@ -70,6 +73,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="sTime != null and eTime != null">
                 AND cal_inner.create_time BETWEEN #{sTime} AND #{eTime}
             </if>
+            <if test="userIds != null and userIds.size() > 0">
+                and cal_inner.user_id in
+            <foreach collection="userIds"  open="(" close=")" separator="," item="userId" index="index">
+                #{userId}
+            </foreach>
+            </if>
         </where>
         ORDER BY cal_inner.log_id DESC
         LIMIT ${(pageNum-1)*pageSize}, ${pageSize}

+ 14 - 0
fs-service-system/src/main/resources/mapper/store/FsUserMapper.xml

@@ -1699,4 +1699,18 @@
         fs_user.company_user_id, date(fs_user.create_time)
     </select>
 
+
+    <select id="selectFsUserListByJointUserNameKey" parameterType="FsUser" resultMap="FsUserResult">
+        <include refid="selectFsUserVo"/>
+        <where>
+            <if test="userName != null  and userName != ''">
+                AND (
+                nickname like concat('%', #{userName}, '%')
+                or  user_id LIKE concat('%',#{userName},'%')
+                )
+            </if>
+        </where>
+        order by user_id desc
+    </select>
+
 </mapper>