package com.qxueyou.scc.exercise.service.impl;
|
|
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import com.qxueyou.scc.base.model.Result;
|
import com.qxueyou.scc.base.service.impl.CommonAppService;
|
import com.qxueyou.scc.base.util.ClientUtils;
|
import com.qxueyou.scc.base.util.CollectionUtils;
|
import com.qxueyou.scc.base.util.TraceUtils;
|
import com.qxueyou.scc.exercise.model.ExerciseCorrection;
|
import com.qxueyou.scc.exercise.model.ExerciseGroupItemRe;
|
import com.qxueyou.scc.exercise.model.ExerciseItem;
|
import com.qxueyou.scc.exercise.model.ExerciseItemOption;
|
import com.qxueyou.scc.exercise.service.IExerciseCorrectionService;
|
import com.qxueyou.scc.exercise.service.IExerciseService;
|
import com.qxueyou.scc.sys.model.SysDictionary;
|
|
|
/**
|
* 练习 实现service
|
* @author
|
*
|
*/
|
@Service
|
public class ExerciseCorrectionService extends CommonAppService implements IExerciseCorrectionService {
|
|
@Autowired
|
private IExerciseService exerciseService;
|
|
// @Autowired
|
// IScoreChangeService scoreChangeService;
|
|
/**
|
* app接口调用插入数据
|
* @param groupId
|
* @param groupName
|
* @param exerciseNum
|
* @param exerciseId
|
* @param correctids
|
* @param content
|
* @return
|
*/
|
public Result insertExerciseCorrection(String groupId,String groupName,String exerciseNum,String exerciseId,String correctids,String content){
|
//赋值
|
ExerciseCorrection exerCorrection=new ExerciseCorrection();
|
exerCorrection.setDeleteFlag(false);
|
TraceUtils.setCreateTrace(exerCorrection);
|
exerCorrection.setExerciseGroupId(groupId);
|
exerCorrection.setExerciseGroupName(groupName);
|
|
// 修改为从数据库取,如果数据库中有值
|
String hql = " from ExerciseGroupItemRe r where r.exerciseGroupId = ? and r.exerciseItemId = ? and r.deleteFlag is false ";
|
ExerciseGroupItemRe re = this.findUnique(hql, CollectionUtils.newList(groupId,exerciseId), ExerciseGroupItemRe.class);
|
if(null != re && re.getItemOrder() != null ){
|
exerCorrection.setExerciseItemOrder(String.valueOf(re.getItemOrder()));
|
}else{
|
exerCorrection.setExerciseItemOrder(exerciseNum);
|
}
|
|
exerCorrection.setExerciseItemId(exerciseId);
|
exerCorrection.setRemark(content);
|
//字典字段的赋值
|
initDicForExerciseCorrection(correctids,exerCorrection);
|
|
//提交人,提交人id 以及其他信息赋值通过查找ClientUtils
|
String classId = ClientUtils.getClassId();
|
exerCorrection.setClassId(classId);
|
exerCorrection.setSubmitUserId(ClientUtils.getUserId());
|
exerCorrection.setSubmitUserName(ClientUtils.getUserName());
|
exerCorrection.setSubmitTime(new Date(System.currentTimeMillis()));
|
exerCorrection.setDealStatus(ExerciseCorrection.DEAL_STATUS_TODO);
|
|
this.save(exerCorrection);
|
|
//纠错增加积分
|
// scoreChangeService.doExerCor(ClientUtils.getUserId(), exerciseId);
|
|
return new Result(true);
|
}
|
|
/**
|
* 字典字段赋值
|
* @param correctids
|
* @param exerCorrection
|
*/
|
private void initDicForExerciseCorrection(String correctids,ExerciseCorrection exerCorrection){
|
String[] arrCorrectId = correctids.split(",");
|
|
SysDictionary sysDic ;
|
String errorTypeId = "";
|
String errorTypeName = "";
|
for(String strId: arrCorrectId){
|
sysDic = this.read(SysDictionary.class, strId);
|
errorTypeId = errorTypeId.concat(sysDic.getDictionaryId()).concat(",");
|
errorTypeName = errorTypeName.concat(sysDic.getValue()).concat(",");
|
}
|
//去掉多余","
|
if(StringUtils.isNotBlank(errorTypeId) && errorTypeId.indexOf(',') != -1){
|
errorTypeId = errorTypeId.substring(0, errorTypeId.length()-1);
|
errorTypeName = errorTypeName.substring(0, errorTypeName.length()-1);
|
}
|
|
exerCorrection.setErrorTypeId(errorTypeId);
|
exerCorrection.setErrorTypeName(errorTypeName);
|
}
|
|
/**
|
* 更新练习
|
* @param item
|
* @param lstOptions
|
* @param analysis
|
* @param correctionType
|
* @return
|
*/
|
public Result updateExerciseItemCorrection(ExerciseItem item, List<ExerciseItemOption> lstOptions,String analysis,short correctionType) {
|
|
if(correctionType==ExerciseCorrection.DEAL_STATUS_DONE){
|
|
//待推送用户id列表
|
List<String> submitorIdsLst = querySubmitorIdsByExerItemId(item.getExerciseId());
|
|
String hql = "update ExerciseCorrection set dealStatus = " + ExerciseCorrection.DEAL_STATUS_DONE + " where exerciseItemId = ? " ;
|
|
bulkUpdateInLoop(hql, new String[]{item.getExerciseId()});
|
|
//推送消息给习题纠错学员
|
pushNotification(item,submitorIdsLst);
|
|
//纠错被处理增加积分
|
// scoreChangeService.doExerCorDeal(null, item.getExerciseId());
|
|
}
|
return exerciseService.updateExerciseItem(item, lstOptions,analysis);
|
}
|
|
/**
|
* 推送通知给用户
|
* @param item
|
*/
|
private void pushNotification(ExerciseItem item,List<String> submitorIdsLst) {
|
|
Map<String,String> extras = new HashMap<String,String>(1);
|
extras.put("senderId", "sys_msg");
|
extras.put("type", "SYS_MSG");
|
|
//jpushService.doJpushByUserIds(submitorIdsLst, extras, "习题纠错", "纠错已处理:"+item.getTitle(), "纠错已处理:"+item.getTitle());
|
//pushService.pushToAccountList("exerciseCorrect", "习题纠错", "纠错已处理:"+item.getTitle(), submitorIdsLst,"sys_msg","SYS_MSG");
|
}
|
|
/*
|
* (non-Javadoc)
|
* @see com.iqtogether.qxueyou.exercise.service.IExerciseCorrectionService#getSubmitorLstByExerciseItemId(java.lang.String)
|
*/
|
@Override
|
public List<String> querySubmitorIdsByExerItemId(String exerciseItemId) {
|
|
String hql = "select c.submitUserId from ExerciseCorrection c where c.exerciseItemId=? and c.dealStatus=? and c.deleteFlag is false ";
|
|
return find(hql, CollectionUtils.newList(exerciseItemId,ExerciseCorrection.DEAL_STATUS_TODO),
|
String.class);
|
}
|
|
}
|