shenhao vor 3 Jahren
Ursprung
Commit
d2889fa7db

+ 2 - 0
src/main/java/com/aijia/core/filter/CorsFilter.java

@@ -7,6 +7,8 @@ import javax.servlet.annotation.WebFilter;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 
+@Component
+@WebFilter(urlPatterns = "/*", filterName = "corsFilter")  //这里的“/*” 表示的是需要拦截的请求路径
 public class CorsFilter implements Filter {
 
     @Override

+ 8 - 2
src/main/java/com/aijia/kmt/controller/KmtExerciseController.java

@@ -1,6 +1,7 @@
 package com.aijia.kmt.controller;
 
 
+import com.aijia.basic.utils.StringUtils;
 import com.aijia.core.security.exception.CommonException;
 import com.aijia.core.web.BaseController;
 import com.aijia.core.web.ResponseConstant;
@@ -129,8 +130,13 @@ public class KmtExerciseController extends BaseController {
         ResponseEntity responseEntity = new ResponseEntity();
         try {
             Map<String, Object> data = new HashMap<>();
-            String userId = tokenManager.getUserId(accessToken);
-            data.put("units", kmtExerciseMapperService.findExerciseBookDetail(request, userId));
+            String  userId = tokenManager.getUserId(accessToken);
+            //是管理员
+            int type = 1;
+            if(!request.getUserId().equals(userId)){
+               type = 2;
+            }
+            data.put("units", kmtExerciseMapperService.findExerciseBookDetail(request, userId,type));
             responseEntity.success(data, "成功");
         } catch (Exception e) {
             logger.error("练习册筛选条件异常", e);

+ 19 - 1
src/main/java/com/aijia/kmt/controller/KmtExerciseQuestionListController.java

@@ -38,7 +38,25 @@ public class KmtExerciseQuestionListController extends BaseController {
         ResponseEntity responseEntity = new ResponseEntity();
         try {
             String userId = tokenManager.getUserId(accessToken);
-            responseEntity = kmtExerciseQuestionListService.findQuestionList(userId, request);
+            responseEntity = kmtExerciseQuestionListService.findQuestionList(userId, request,1);
+        } catch (Exception e) {
+            logger.error("入参={}", request);
+            logger.error("待加工/待审核题目", e);
+            responseEntity.failure(ResponseConstant.CODE_500, "查询失败");
+        }
+        logger.info(accessToken + ":" + (System.currentTimeMillis() - start));
+        return responseEntity;
+    }
+
+    @RequestMapping(value = "/getSelectHandlingQuestions", method = RequestMethod.POST)
+    @ApiOperation(value = "挑选待加工/待审核题目", httpMethod = "POST",  notes = "挑选待加工/待审核题目")
+    public ResponseEntity getSelectHandlingQuestions(@RequestParam(name = "accessToken") String accessToken,
+                                               @RequestBody ExerciseQuestionsRequest request) {
+        long start = System.currentTimeMillis();
+        ResponseEntity responseEntity = new ResponseEntity();
+        try {
+            String userId = tokenManager.getUserId(accessToken);
+            responseEntity = kmtExerciseQuestionListService.findQuestionList(userId, request,2);
         } catch (Exception e) {
             logger.error("入参={}", request);
             logger.error("待加工/待审核题目", e);

+ 2 - 2
src/main/java/com/aijia/kmt/mapper/KmtExerciseMapper.java

@@ -72,7 +72,7 @@ public interface KmtExerciseMapper {
     List<ExerciseQuetionDto> findQuestionByBookCourseIdAndUserIdNew(
             @Param("req") ExerciseQuestionsRequest req,
             @Param("userId") String userId,
-            Page page,@Param("type") int type);
+            Page page,@Param("type") int type,@Param("searchType") int searchType);
 
     List<ExerciseQuetionDto> findAllQuestionByGradeDetail(@Param("req") Map<String, Object> req,  Page page);
 
@@ -358,7 +358,7 @@ public interface KmtExerciseMapper {
     List<ExerciseUnitBookcourseDto> findAllExerciseBookCourseByExerciseBookIdNew(
     		@Param("bookId") String bookId,
     		@Param("exerciseBookId") String exerciseBookId,
-    		@Param("isDiff") Integer isDiff);
+    		@Param("isDiff") Integer isDiff,@Param("type") Integer type);
 
     /**
      * 查询未加工/审核的题目数量

+ 1 - 1
src/main/java/com/aijia/kmt/service/KmtExerciseMapperService.java

@@ -119,7 +119,7 @@ public interface KmtExerciseMapperService {
      * @param request
      * @return
      */
-    List<ExerciseBookUnitDto> findExerciseBookDetail(ExerciseBookIdDealTypeRequest request, String userId);
+    List<ExerciseBookUnitDto> findExerciseBookDetail(ExerciseBookIdDealTypeRequest request, String userId,int type);
 
     /**
      * 查询kmt的题目 kmt_exercise_questions

+ 1 - 1
src/main/java/com/aijia/kmt/service/KmtExerciseQuestionListService.java

@@ -4,5 +4,5 @@ import com.aijia.core.web.ResponseEntity;
 import com.aijia.kmt.vo.ExerciseQuestionsRequest;
 
 public interface KmtExerciseQuestionListService {
-    ResponseEntity findQuestionList (String userId, ExerciseQuestionsRequest request);
+    ResponseEntity findQuestionList (String userId, ExerciseQuestionsRequest request,int type);
 }

+ 5 - 5
src/main/java/com/aijia/kmt/service/impl/KmtExerciseMapperServiceImpl.java

@@ -102,7 +102,7 @@ public class KmtExerciseMapperServiceImpl implements KmtExerciseMapperService {
     public List<ExerciseQuetionDto> findQuestionByBookCourseIdAndUserId(ExerciseQuestionsRequest request, Page page, String userId) {
 //        return kmtExerciseMapper.findQuestionByBookCourseIdAndUserId(request.getPeriodId(), request.getDealType(), userId, request.getRollbackType(), 
 //    	request.getExerciseBookId(), page);
-    	return kmtExerciseMapper.findQuestionByBookCourseIdAndUserIdNew(request, userId, page,0);
+    	return kmtExerciseMapper.findQuestionByBookCourseIdAndUserIdNew(request, userId, page,0,1);
     }
 
     @Override
@@ -614,7 +614,7 @@ public class KmtExerciseMapperServiceImpl implements KmtExerciseMapperService {
     }
 
     @Override
-    public List<ExerciseBookUnitDto> findExerciseBookDetail(ExerciseBookIdDealTypeRequest request, String userId) {
+    public List<ExerciseBookUnitDto> findExerciseBookDetail(ExerciseBookIdDealTypeRequest request, String userId,int type) {
         List<ExerciseUnitBookcourseDto> list = null;
         List<ExerciseBookUnitDto> result = new ArrayList<>();
         TrTrainPartUser user = userServiceMapper.selectById(userId);
@@ -635,12 +635,12 @@ public class KmtExerciseMapperServiceImpl implements KmtExerciseMapperService {
                     if (book != null) {
                         if (book.getBookType() == 1 || book.getBookType() == 2){
                             //上半或下半
-                            list = kmtExerciseMapper.findAllExerciseBookCourseByExerciseBookIdNew(null,book.getId(),null);
+                            list = kmtExerciseMapper.findAllExerciseBookCourseByExerciseBookIdNew(null,book.getId(),null,type);
                         } else {
                             if (request.getBookPartType() == 2){
-                                list = kmtExerciseMapper.findAllExerciseBookCourseByExerciseBookIdNew(null,book.getId(),1);//查询差异题目的单元
+                                list = kmtExerciseMapper.findAllExerciseBookCourseByExerciseBookIdNew(null,book.getId(),1,type);//查询差异题目的单元
                             } else {
-                                list = kmtExerciseMapper.findAllExerciseBookCourseByExerciseBookIdNew(book.getParentBookId(),null,null);//查询差异题目的单元
+                                list = kmtExerciseMapper.findAllExerciseBookCourseByExerciseBookIdNew(book.getParentBookId(),null,null,type);//查询差异题目的单元
                             }
                         }
                     }

+ 2 - 2
src/main/java/com/aijia/kmt/service/impl/KmtExerciseQuestionListServiceImpl.java

@@ -46,7 +46,7 @@ public class KmtExerciseQuestionListServiceImpl implements KmtExerciseQuestionLi
     private TrainUserServiceMapper userServiceMapper;
 
     @Override
-    public ResponseEntity findQuestionList (String userId, ExerciseQuestionsRequest request) {
+    public ResponseEntity findQuestionList (String userId, ExerciseQuestionsRequest request,int type) {
         TrTrainPartUser user = userServiceMapper.selectById(userId);
         String paramUserId = user.getManagerType()==1?request.getUserId():userId;
         ResponseEntity responseEntity = new ResponseEntity();
@@ -59,7 +59,7 @@ public class KmtExerciseQuestionListServiceImpl implements KmtExerciseQuestionLi
                //questions = kmtExerciseMapper.findExerciseQuestionByQuestionIdAndBookId(request.getQuestionId().trim(), request.getExerciseBookId());
                 page = new Page(1, 10, 1);
             }
-            questions = kmtExerciseMapper.findQuestionByBookCourseIdAndUserIdNew(request, paramUserId, page,user.getManagerType());
+            questions = kmtExerciseMapper.findQuestionByBookCourseIdAndUserIdNew(request, paramUserId, page,user.getManagerType(), type);
 //        } else if (request.getExerciseBookId().startsWith("book_")) {
 //            //选择全部
 //            String[] param = request.getExerciseBookId().split("_");

+ 24 - 3
src/main/java/com/aijia/kmt/service/impl/KmtExerciseSubmitServiceImpl.java

@@ -28,8 +28,10 @@ import com.aijia.kmt.vo.QuestionPublishRequest;
 import com.aijia.kmt.vo.QuestionUpdateRequest;
 import com.aijia.questioninfo.service.KmtExerciseQuestionInfoService;
 import com.aijia.train.bean.TrTrainPartUser;
+import com.aijia.train.bean.TrTrainQuestionCheck;
 import com.aijia.train.bean.TrTrainUserExercise;
 import com.aijia.train.bean.TrTrainUserQuestionKnow;
+import com.aijia.train.mapper.TrainCheckQuestion;
 import com.aijia.train.mapper.TrainUserExerciseMapper;
 import com.aijia.train.mapper.TrainUserQuestionKnowMapper;
 import com.aijia.train.mapper.TrainUserServiceMapper;
@@ -92,11 +94,15 @@ public class KmtExerciseSubmitServiceImpl implements KmtExerciseSubmitService {
     @Autowired
     private KmtExerciseQuestionMapper kmtExerciseQuestionMapper;
 
+    @Autowired
+    private TrainCheckQuestion checkQuestionMapper;
+
 
     @Override
     @Transactional(propagation = Propagation.NOT_SUPPORTED)
     public ResponseEntity submit2Auditing(AuditingV1Request request, String userId) {
         ResponseEntity responseEntity = new ResponseEntity();
+        TrTrainPartUser user = userServiceMapper.selectById(userId);
         Map<String,Object> data = new HashMap<>(8);
         if (CollectionUtils.isNotEmpty(request.getQuestions())) {
 //            logger.error("2");
@@ -186,11 +192,11 @@ public class KmtExerciseSubmitServiceImpl implements KmtExerciseSubmitService {
             int count = userExerciseMapper.selectCount(new QueryWrapper<TrTrainUserExercise>()
                     .eq("user_id",userId).eq("exercise_id",questions.get(0).getBookId()).eq("status",1));
             //查询总题目数
-            int qCount = kmtExerciseQuestionMapper.selectCount(new QueryWrapper<KmtExerciseQuestion>()
-                    .eq("book_id",questions.get(0).getBookId()));
+            int qCount = checkQuestionMapper.selectCount(new QueryWrapper<TrTrainQuestionCheck>()
+                    .eq("role_type",user.getRoleType()).eq("subject",user.getSubject()).eq("status",1));
             data.put("commitAll",1);
             if(count == qCount){
-                TrTrainPartUser user = userServiceMapper.selectById(userId);
+//                TrTrainPartUser user = userServiceMapper.selectById(userId);
                 user.setStudyStatus(4);
                 userServiceMapper.updateById(user);
                 data.put("commitAll",2);
@@ -286,6 +292,7 @@ public class KmtExerciseSubmitServiceImpl implements KmtExerciseSubmitService {
     @Override
     public ResponseEntity publishQuestion(QuestionPublishRequest request, String userId) {
         ResponseEntity responseEntity = new ResponseEntity();
+        TrTrainPartUser user = userServiceMapper.selectById(userId);
         //查询用户是否有提交数据
         if (CollectionUtils.isNotEmpty(request.getQuestionIds())) {
             List<KmtExerciseQuestion> questions = kmtExerciseMapper.findKmtExerciseQuestionsByIdIn(request.getQuestionIds());
@@ -322,6 +329,20 @@ public class KmtExerciseSubmitServiceImpl implements KmtExerciseSubmitService {
                     userExerciseMapper.updateById(questionInfo);
                 }
             });
+
+
+            //查询发布题目是否等于
+            //查询提交题目数
+            int count = userExerciseMapper.selectCount(new QueryWrapper<TrTrainUserExercise>()
+                    .eq("user_id",userId).eq("exercise_id",questions.get(0).getBookId()).eq("status",1));
+            //查询总题目数
+            int qCount = checkQuestionMapper.selectCount(new QueryWrapper<TrTrainQuestionCheck>()
+                    .eq("role_type",user.getRoleType()).eq("subject",user.getSubject()).eq("status",1));
+            if(count == qCount){
+//                TrTrainPartUser user = userServiceMapper.selectById(userId);
+                user.setStudyStatus(4);
+                userServiceMapper.updateById(user);
+            }
             responseEntity.success("发布成功");
         }else{
             responseEntity.failure("未查到题目信息");

+ 11 - 0
src/main/java/com/aijia/kmt/vo/ExerciseBookIdDealTypeRequest.java

@@ -34,6 +34,9 @@ public class ExerciseBookIdDealTypeRequest extends BaseRequest {
     @ApiModelProperty(name = "questionId", value = "题目id", required = false)
     private String questionId;
 
+    @ApiModelProperty(name = "userId", value = "用户id", required = false)
+    private String userId;
+
 
     public String getId() {
         return id;
@@ -90,4 +93,12 @@ public class ExerciseBookIdDealTypeRequest extends BaseRequest {
     public void setBookPartType(int bookPartType) {
         this.bookPartType = bookPartType;
     }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
 }

+ 83 - 0
src/main/java/com/aijia/train/bean/TrTrainQuestionCheck.java

@@ -0,0 +1,83 @@
+package com.aijia.train.bean;
+
+import com.aijia.kmt.po.base.BaseEntity;
+
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import java.util.Date;
+
+/**
+ * @author sh
+ * @className TrTrainQuestionCheck
+ * @description wokeyi
+ * @date 2021/9/22
+ */
+@Entity(name = "tr_train_question_check")
+@Table(name="tr_train_question_check")
+public class TrTrainQuestionCheck extends BaseEntity {
+
+    /**
+     * 题目id
+     */
+    private String questionId;
+
+    /**
+     * 角色
+     */
+    private int roleType;
+
+    /**
+     * 科目
+     */
+    private String subject;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 状态 1有效 2失效
+     */
+    private int status;
+
+    public String getQuestionId() {
+        return questionId;
+    }
+
+    public void setQuestionId(String questionId) {
+        this.questionId = questionId;
+    }
+
+    public int getRoleType() {
+        return roleType;
+    }
+
+    public void setRoleType(int roleType) {
+        this.roleType = roleType;
+    }
+
+    public String getSubject() {
+        return subject;
+    }
+
+    public void setSubject(String subject) {
+        this.subject = subject;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public int getStatus() {
+        return status;
+    }
+
+    public void setStatus(int status) {
+        this.status = status;
+    }
+}

+ 15 - 2
src/main/java/com/aijia/train/controller/ApiTrainController.java

@@ -401,8 +401,7 @@ public class ApiTrainController extends BaseController {
             if (StringUtils.isNotBlank(req.getMiddleDir())){
                 preffix  = "/" + req.getMiddleDir();
             }
-            stsMap.put("uploadImgPath", preffix + DateHelper.formatDateByFormat(new Date(), "yyyy/MM/dd")+"/"+
-                    IdWorker.generateId()+req.getFileExt());
+            stsMap.put("uploadImgPath", preffix + "/"+ IdWorker.generateId()+req.getFileExt());
 
 
             stsMap.put("bucket",PropertiesUtil.getValue("bucketName"));
@@ -417,4 +416,18 @@ public class ApiTrainController extends BaseController {
         }
         return responseEntity;
     }
+
+    @ApiOperation(value = "保存挑选", httpMethod = "POST")
+    @RequestMapping(value = "/saveCheckQuestion", method = RequestMethod.POST)
+    public ResponseEntity saveCheckQuestion(@RequestParam(name = "accessToken") String accessToken , @RequestBody QuestionIdVo req) {
+        ResponseEntity responseEntity  =new  ResponseEntity();
+        try {
+            TrTrainPartUser user = userServiceMapper.selectById(tokenManager.getUserId(accessToken));
+            responseEntity  = trainService.saveCheckQuestion(req.getQuestionIds(),user);
+        } catch (Exception e) {
+            log.error("保存挑选题目失败", e);
+            responseEntity.failure(ResponseConstant.CODE_500, "暂未加载到数据,请稍后重试");
+        }
+        return responseEntity;
+    }
 }

+ 20 - 0
src/main/java/com/aijia/train/mapper/TrainCheckQuestion.java

@@ -0,0 +1,20 @@
+package com.aijia.train.mapper;
+
+import com.aijia.train.bean.TrTrainQuestionCheck;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+/**
+ * @author sh
+ * @className TrainCheckQuestion
+ * @description check
+ * @date 2021/9/22
+ */
+@Mapper
+public interface TrainCheckQuestion extends BaseMapper<TrTrainQuestionCheck> {
+
+    @Select("update tr_train_question_check set status = 2 where subject=#{subject} and role_type=#{roleType} and status = 1")
+    void updateCheckQuestion(@Param("subject")String subject,@Param("roleType") Integer roleType);
+}

+ 3 - 0
src/main/java/com/aijia/train/mapper/TrainUserExerciseMapper.java

@@ -16,4 +16,7 @@ import org.apache.ibatis.annotations.Select;
 public interface TrainUserExerciseMapper extends BaseMapper<TrTrainUserExercise> {
     @Select("delete from  tr_train_user_exercise  where user_id = #{userId}")
     void updateByUserId(@Param("userId") String userId);
+
+    @Select("delete from  tr_train_user_question_know  where user_id = #{userId}")
+    void deleteKnowData(@Param("userId")  String userId);
 }

+ 2 - 0
src/main/java/com/aijia/train/service/ITrainService.java

@@ -96,4 +96,6 @@ public interface ITrainService {
      * @return
      */
     ResponseEntity teacherInfoEdit(String userId, String name, Integer roleType, String subject);
+
+    ResponseEntity saveCheckQuestion(List<String> questionIds, TrTrainPartUser user);
 }

+ 31 - 9
src/main/java/com/aijia/train/service/impl/TrainServiceImpl.java

@@ -6,6 +6,7 @@ import com.aijia.kmt.utils.AliyunSmsUtil;
 import com.aijia.kmt.utils.SystemResourceLocator;
 import com.aijia.train.bean.TrTrainFiles;
 import com.aijia.train.bean.TrTrainPartUser;
+import com.aijia.train.bean.TrTrainQuestionCheck;
 import com.aijia.train.bean.TrTrainUserInfo;
 import com.aijia.train.mapper.*;
 import com.aijia.train.service.ITrainService;
@@ -48,6 +49,9 @@ public class TrainServiceImpl implements ITrainService {
     @Autowired
     private TrainUserExerciseMapper userExerciseMapper;
 
+    @Autowired
+    private TrainCheckQuestion checkQuestionMapper;
+
     @Override
     public TrTrainPartUser getTrainUserByMobile(String loginName, int type,String password) {
         TrTrainPartUser user = userServiceMapper.getTrainUserByMobile(loginName);
@@ -196,6 +200,8 @@ public class TrainServiceImpl implements ITrainService {
         }else{
             userInfoServiceMapper.updateByUserId(userId);
             userExerciseMapper.updateByUserId(userId);
+            //知识点删除
+            userExerciseMapper.deleteKnowData(userId);
             //审核不通过
             if(user.getCheckTimes() == 1){
                 //两次不通过
@@ -225,15 +231,7 @@ public class TrainServiceImpl implements ITrainService {
             //考核中
             return  responseEntity.failure("当前处于考核阶段资料料不不可更更改");
         }
-        //判断角色等是否发生更改
-        if(StringUtils.isBlank(user.getSubject())){
-            //新用户完善资料
-            user.setSubject(subject);
-            user.setRoleType(roleType);
-            user.setName(name);
-            userServiceMapper.updateById(user);
-            return responseEntity.success("完善信息成功!");
-        }
+
         //老用户判断是否有修改资料
         if(!subject.equals(user.getSubject()) || !roleType.equals(user.getRoleType())){
             //清空学习状态,重新学习
@@ -248,9 +246,33 @@ public class TrainServiceImpl implements ITrainService {
             //插入重新学习记录
             this.startStudy(user.getRoleType(),user.getSubject(),user.getId());
         }
+        //新用户完善资料
+        user.setSubject(subject);
+        user.setRoleType(roleType);
+        user.setName(name);
+        userServiceMapper.updateById(user);
         return responseEntity.success("完善信息成功!");
     }
 
+    @Override
+    public ResponseEntity saveCheckQuestion(List<String> questionIds, TrTrainPartUser user) {
+        ResponseEntity responseEntity = new ResponseEntity();
+        //先失效再保存
+        String subject = user.getSubject();
+        int roleType = user.getRoleType();
+        checkQuestionMapper.updateCheckQuestion(subject,roleType);
+        questionIds.forEach(s->{
+            TrTrainQuestionCheck check = new TrTrainQuestionCheck();
+            check.setQuestionId(s);
+            check.setCreateTime(new Date());
+            check.setRoleType(roleType);
+            check.setSubject(subject);
+            check.setStatus(1);
+            checkQuestionMapper.insert(check);
+        });
+        return responseEntity.success("保存成功!");
+    }
+
     private void saveUserInfoData(String id,int roleType,String subject,String userId){
         TrTrainUserInfo info = userInfoServiceMapper.selectOne(
                 new QueryWrapper<TrTrainUserInfo>().eq("user_id",userId)

+ 21 - 0
src/main/java/com/aijia/train/vo/QuestionIdVo.java

@@ -0,0 +1,21 @@
+package com.aijia.train.vo;
+
+import java.util.List;
+
+/**
+ * @author sh
+ * @className QuestionIdVo
+ * @description
+ * @date 2021/9/22
+ */
+public class QuestionIdVo {
+    private List<String> questionIds;
+
+    public List<String> getQuestionIds() {
+        return questionIds;
+    }
+
+    public void setQuestionIds(List<String> questionIds) {
+        this.questionIds = questionIds;
+    }
+}

+ 10 - 5
src/main/resources/mybatis/mapper/KmtExerciseMapper.xml

@@ -2220,6 +2220,9 @@
     <if test="req.publishStatus==3">
         LEFT JOIN  q_question_info qi on t.question_id=qi.id
     </if>
+    <if test="searchType==1">
+        inner JOIN  tr_train_question_check tk on tk.question_id=t.question_id and tk.status = 1
+    </if>
 	WHERE eq.deal_status != 6
     and t.sub_book_id=#{req.exerciseBookId}
     <if test="req.periodId !=null and req.periodId !=''">
@@ -2335,9 +2338,9 @@
         WHEN @parent_code = t.course_name COLLATE utf8mb4_0900_ai_ci THEN
         @group_row + 1 ELSE 1
         END AS groupRow,
+
         @group_row2 :=
         CASE
-
         WHEN @parent_code = t.course_name COLLATE utf8mb4_0900_ai_ci
         AND eb.id IS NOT NULL THEN
         @group_row2 + 1 ELSE 1
@@ -2346,7 +2349,8 @@
         FROM
         q_question_workbook t
         INNER JOIN kmt_exercise_questions eq ON t.question_id = eq.id
-        LEFT JOIN tr_train_user_exercise eb ON eq.id = eb.question_id and eb.user_id =#{userId}
+        INNER JOIN tr_train_question_check ec ON t.question_id = ec.question_id and ec.status = 1
+        LEFT JOIN tr_train_user_exercise eb ON eq.id = eb.question_id and eb.user_id ='a919d6d3-1e99-11ec-aea2-00163e02e90a'
         LEFT JOIN ( SELECT @group_row := 1, @group_row2 := 1, @parent_code := '' ) AS b ON 1 = 1
         WHERE
         eq.exercise_book_id =#{bookId}
@@ -2356,9 +2360,7 @@
         ORDER BY
         t.number
         ) t
-        WHERE
-        t.groupRow  <![CDATA[ <> ]]> t.groupRow2
-
+        where  t.groupRow <![CDATA[ <> ]]> t.groupRow2
         ) a,(select @i:=0) num
     </select>
     
@@ -2396,6 +2398,9 @@
 				t.course_name as book_course
 			FROM
 				q_question_workbook t
+				<if test="type == 2">
+                    INNER JOIN tr_train_question_check ec ON t.question_id = ec.question_id and ec.status = 1
+                </if>
 			WHERE
 				1=1
 			<if test="exerciseBookId != null and exerciseBookId != ''">