功能调整

sale
tianea 3 years ago
parent f6c867a0c0
commit 662561f4c8

@ -0,0 +1,19 @@
package com.tz.platform.feign.exam;
import com.tz.platform.feign.exam.vo.QuestionVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@FeignClient(value = "tz-exam-service")
public interface IFeignQuestion {
@PostMapping(value = "/feign/exam/question/getByOuterId")
QuestionVo getByOuterId(@RequestBody Integer outerId);
@PostMapping(value = "/feign/exam/question/addAll")
void addAll(@RequestBody List<QuestionVo> questionVoList);
}

@ -13,7 +13,7 @@ import java.util.Date;
import java.util.List;
@Entity
@Table(name = "question_sale",indexes = {@Index(columnList = "stem"),@Index(columnList = "type"),@Index(columnList = "courseId,questionType,levelId"),@Index(columnList = "userNo")})
@Table(name = "question_sale",indexes = {@Index(columnList = "outerId"),@Index(columnList = "stem"),@Index(columnList = "type"),@Index(columnList = "courseId,questionType,levelId"),@Index(columnList = "userNo")})
@Data
@TypeDef(name = "json", typeClass = JsonStringType.class)
public class Question {
@ -28,6 +28,7 @@ public class Question {
private String title;
private Long score;
private Integer type;
@Column(columnDefinition = "text")
private String stem;
@Column(columnDefinition = "text")
private String content;
@ -48,5 +49,6 @@ public class Question {
@Type(type = "json")
@Column(columnDefinition = "json")
private List<SubQuestionVO> children;
private Integer schoolId;
private Integer outerId;
}

@ -4,24 +4,36 @@ import com.tz.platform.common.core.base.BaseController;
import com.tz.platform.common.core.base.Result;
import com.tz.platform.exam.pc.biz.FeignQuestionBiz;
import com.tz.platform.exam.pc.dto.QuestionDTO;
import com.tz.platform.feign.exam.IFeignQuestion;
import com.tz.platform.feign.exam.vo.QuestionVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping(value = "/feign/question")
public class FeignQuestionController extends BaseController {
public class FeignQuestionController implements IFeignQuestion {
@Autowired
private FeignQuestionBiz pcQuestionBiz;
@GetMapping(value = "list/{pageNo}")
public Result<QuestionDTO> listQuestion(@PathVariable("pageNo") Integer pageNO){
return pcQuestionBiz.list(pageNO);
}
// @GetMapping(value = "list/{pageNo}")
// public Result<QuestionDTO> listQuestion(@PathVariable("pageNo") Integer pageNO){
// return pcQuestionBiz.list(pageNO);
// }
//
// @PostMapping(value = "add")
// public Result<String> addQuestion(@RequestBody QuestionVo questionVo){
// return pcQuestionBiz.add(questionVo);
// }
@PostMapping(value = "add")
public Result<String> addQuestion(@RequestBody QuestionVo questionVo){
return pcQuestionBiz.add(questionVo);
@Override
public QuestionVo getByOuterId(Integer outerId) {
return pcQuestionBiz.getByOuterId(outerId);
}
@Override
public void addAll(List<QuestionVo> questionVoList) {
pcQuestionBiz.addAll(questionVoList);
}
}

@ -1,6 +1,7 @@
package com.tz.platform.exam.pc.biz;
import com.tz.platform.common.core.base.Result;
import com.tz.platform.common.core.tools.BeanUtils;
import com.tz.platform.entity.Question;
import com.tz.platform.exam.pc.dto.QuestionDTO;
import com.tz.platform.feign.exam.vo.QuestionVo;
@ -41,4 +42,18 @@ public class FeignQuestionBiz {
}
return Result.success("success");
}
public QuestionVo getByOuterId(Integer outerId){
Question question = questionDao.getByOuterId(outerId);
return BeanUtils.copyProperties(question,QuestionVo.class);
}
public void addAll(List<QuestionVo> questionVoList){
try {
List<Question> question = BeanUtils.copyProperties(questionVoList, Question.class);
questionDao.saveAll(question);
}catch (Exception ex){
ex.printStackTrace();
}
}
}

@ -37,6 +37,8 @@ public interface QuestionDao extends JpaRepository<Question,Long> {
Question getByStem(String stem);
Question getByOuterId(Integer outerId);
@Transactional
@Modifying
@Query(value = "update question set status=:status where id in (:ids)",nativeQuery = true)

@ -24,7 +24,7 @@ public class ZhiyunJob {
/**
*
*/
private long ms = 3600000;
private long ms = 3600000*4;
/**
@ -33,13 +33,15 @@ public class ZhiyunJob {
@Scheduled(cron = "*/60 * * * * ?")
public void synStudent(){
String jobName = "zhiyunSynJob";
String jobName = "zhiyunSynJob2";
boolean lr = lock(jobName,ms);
if(lr){
try {
zhiyunAccountBiz.synSchool();
zhiyunAccountBiz.synGrade();
zhiyunAccountBiz.synAccountJob();
zhiyunAccountBiz.synAllCourse();
zhiyunAccountBiz.synQuestion();
}catch (Exception ex){
ex.printStackTrace();
log.error("大赛状态更新任务失败: {}",ex.getMessage());

@ -5,22 +5,27 @@ import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.tz.platform.common.core.api.ZhiYunApi;
import com.tz.platform.common.core.bo.Answer;
import com.tz.platform.common.core.config.SystemUtil;
import com.tz.platform.common.core.enmus.UserTypeEnum;
import com.tz.platform.common.core.tools.StrUtil;
import com.tz.platform.entity.User;
import com.tz.platform.feign.IFeignGrade;
import com.tz.platform.feign.IFeignSchool;
import com.tz.platform.feign.exam.IFeignCourse;
import com.tz.platform.feign.exam.IFeignQuestion;
import com.tz.platform.feign.exam.vo.CourseVO;
import com.tz.platform.feign.exam.vo.QuestionVo;
import com.tz.platform.feign.vo.GradeVo;
import com.tz.platform.feign.vo.SchoolVo;
import com.tz.platform.repository.UserDao;
import org.apache.commons.collections4.list.GrowthList;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.*;
@Component
public class ZhiyunAccountBiz {
@ -32,6 +37,14 @@ public class ZhiyunAccountBiz {
@Autowired
private IFeignGrade feignGrade ;
@Autowired
private IFeignCourse feignCourse;
@Autowired
private IFeignQuestion feignQuestion;
@Autowired
private UserDao userDao;
@ -58,19 +71,148 @@ public class ZhiyunAccountBiz {
if(!content.isEmpty()){
feignSchool.addSchool(content);
}
}
public void synQuestion(){
List<SchoolVo> schoolVoList = feignSchool.list();
schoolVoList.forEach(schoolVo -> {
String content = zhiYunApi.findAllQuestion();
String content = zhiYunApi.findAllQuestion(10,1);
JSONObject jsonObject = JSONUtil.parseObj(content);
Integer code = jsonObject.getInt("code");
if(code == 200){
JSONObject data = jsonObject.getJSONObject("data");
Integer totalPage = data.getInt("totalPages");
JSONArray contentObj = data.getJSONArray("content");
dealQuestion(contentObj);
if(totalPage>1){
for(int i = 2 ;i<=totalPage;i++){
dealQuestion(i);
}
}
}
}
private void dealQuestion(int pageIndex){
String content = zhiYunApi.findAllQuestion(10,pageIndex);
JSONObject jsonObject = JSONUtil.parseObj(content);
Integer code = jsonObject.getInt("code");
if(code == 200){
JSONObject data = jsonObject.getJSONObject("data");
JSONArray contentObj = data.getJSONArray("content");
dealQuestion(contentObj);
}
}
private void dealQuestion(JSONArray jsonArray){
if(jsonArray == null) {return;}
List<QuestionVo> questionVoList = new ArrayList<>();
jsonArray.forEach(object -> {
JSONObject qObject = (JSONObject) object;
Integer id = qObject.getInt("id");
Integer courseId = qObject.getInt("courseId");
String name = qObject.getStr("name");
Integer type = qObject.getInt("questionType");
String answer = qObject.getStr("answers");
Long score = qObject.getLong("score");
String desc = qObject.getStr("description");
QuestionVo questionVo = feignQuestion.getByOuterId(id);
if(questionVo == null){
questionVo = new QuestionVo();
CourseVO courseVO = feignCourse.getByOuterId(courseId);
questionVo.setCourseId(courseVO.getId());
questionVo.setCourseName(courseVO.getName());
}
questionVo.setOuterId(id);
questionVo.setAnalysis(desc);
questionVo.setStem(name);
questionVo.setLevelId(0);
questionVo.setLevelName("通用");
questionVo.setAnswerId(convertAnswerId(answer));
questionVo.setScore(score);
questionVo.setType(0);
questionVo.setQuestionType(convertQType(type));
JSONArray results =qObject.getJSONArray("results");
List<Answer> answerList = new ArrayList<>();
for(int i = 0;i<results.size();i++){
JSONObject rs=(JSONObject) results.get(i);
String title = rs.getStr("name");
Answer answer1 = new Answer();
answer1.setTitle(title);
answer1.setId(i+1);
answerList.add(answer1);
}
questionVo.setAnswerList(answerList);
questionVoList.add(questionVo);
});
feignQuestion.addAll(questionVoList);
}
private List<Integer> convertAnswerId(String answer){
List<Integer> rs = new ArrayList<>();
String[] a = answer.split(",");
List<String> answerList = Arrays.asList(a);
// answerList.sort(Comparator.comparingInt(m -> m.charAt(0)));
answerList.forEach(as->{
Integer id = as.toLowerCase().chars().boxed().findFirst().orElse(0)-96;
rs.add(id);
});
return rs;
}
private Integer convertQType(Integer outerType){
switch (outerType){
case 1:
return 1;
case 2:
return 2;
case 3:
return 3;
}
return 0;
}
public void synAllCourse(){
String courseStr = zhiYunApi.findAllCource();
JSONObject jsonObject = JSONUtil.parseObj(courseStr);
Integer code = jsonObject.getInt("code");
String imgServerUrl = "http://cloud.sztzjy.com";
if(code == 200){
JSONArray couresArray = jsonObject.getJSONArray("data");
if(couresArray == null) {
return;
}
List<CourseVO> courseVOList = new ArrayList<>();
couresArray.forEach(object -> {
JSONObject co = (JSONObject) object;
Integer id = co.getInt("id");
String name = co.getStr("name");
String img = co.getStr("courseImgUrl");
String coverUrl ="";
if(!StringUtils.isEmpty(img)&&img.startsWith("/")){
coverUrl = imgServerUrl+img;
}
Integer learnCount = co.getInt("learnersCount");
String desc = co.getStr("description");
CourseVO vo = feignCourse.getByOuterId(id);
if(vo== null){
vo = new CourseVO();
}
vo.setContent(desc);
vo.setLearningCount(learnCount);
vo.setName(name);
vo.setThumbnail(coverUrl);
vo.setOuterId(id);
courseVOList.add(vo);
});
if(courseVOList.size()>0){
feignCourse.addAll(courseVOList);
}
}
}
public void synCourse(Integer schoolId){
String content = zhiYunApi.findClassesBySchoolId(schoolId);
//图片baseUrl http://cloud.sztzjy.com/
}

Loading…
Cancel
Save