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 lstOptions,String analysis,short correctionType) { if(correctionType==ExerciseCorrection.DEAL_STATUS_DONE){ //待推送用户id列表 List 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 submitorIdsLst) { Map extras = new HashMap(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 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); } }