Merge branch 'company_server' of https://gitee.com/doc_wei01/skyeye into company_server

This commit is contained in:
lqy 2024-12-04 21:34:09 +08:00
commit 5b8da4931f
41 changed files with 580 additions and 211 deletions

View file

@ -376,8 +376,25 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
list.add(userMation);
}
}
return list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(p -> String.valueOf(p.get("id"))))), ArrayList::new));
// 使用 Stream API 进行过滤排序并最终收集到 ArrayList
List<Map<String, Object>> resultList = list.stream()
.filter(Objects::nonNull) // 确保 item 不是 null
.map(item -> item.entrySet().stream()
.filter(entry -> entry != null && entry.getKey() != null &&
entry.getValue() != null && !"".equals(entry.getValue()))
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(existing, replacement) -> existing, // 解决重复键的问题
LinkedHashMap::new)) // 保持插入顺序
)
.filter(Objects::nonNull) // 确保转换后的 map 不是 null
.sorted(Comparator.comparing(p -> String.valueOf(p.get("id")), Comparator.nullsLast(Comparator.naturalOrder())))
.collect(Collectors.collectingAndThen(
Collectors.toCollection(ArrayList::new),
ArrayList::new
));
return resultList;
}
/**

View file

@ -13,6 +13,7 @@ import com.skyeye.annotation.api.ApiModelProperty;
import com.skyeye.annotation.api.Property;
import com.skyeye.common.entity.features.OperatorUserInfo;
import com.skyeye.dsform.entity.DsFormPage;
import com.skyeye.operate.classenum.MenuPageType;
import lombok.Data;
import java.util.Map;
@ -43,7 +44,7 @@ public class OperateOpenPage extends OperatorUserInfo {
private String name;
@TableField("`type`")
@ApiModelProperty(value = "页面类型,参考#MenuPageType", required = "required")
@ApiModelProperty(value = "页面类型", required = "required", enumClass = MenuPageType.class)
private Integer type;
@TableField("page_url")

View file

@ -4,6 +4,7 @@
package com.skyeye.eve.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSON;
import com.skyeye.common.client.ExecuteFeignClient;
import com.skyeye.common.constans.QuartzConstants;
@ -62,7 +63,11 @@ public class SysQuartzServiceImpl implements SysQuartzService {
private XxlJobInfo getXxlJobInfo(String objectId, String groupId, String delayedTime, String jobDesc, String taskType, String userId) {
XxlJobInfo xxlJobInfo = new XxlJobInfo();
Map<String, Object> user = iAuthUserService.queryDataMationById(userId);
xxlJobInfo.setAuthor(user.get("name").toString());
String author = "商城用户";
if (CollectionUtil.isNotEmpty(user)) {
author = user.get("name").toString();
}
xxlJobInfo.setAuthor(author);
xxlJobInfo.setJobGroup(Integer.parseInt(groupId));
xxlJobInfo.setJobDesc(QuartzConstants.QuartzMateMationJobType.getRemarkPrefixByTaskType(taskType, jobDesc));
xxlJobInfo.setScheduleType("CRON");

View file

@ -7,7 +7,9 @@
a.code_id id,
IFNULL(a.parent_code_id, '0') pId,
a.`name`,
false lay_is_open
false lay_is_open,
a.level,
a.code_id codeId
FROM
t_area a
<where>

View file

@ -22,6 +22,8 @@ public interface QuestionService extends SkyeyeBusinessService<Question> {
void copyQuestionListMation(Question question);
List<Question> queryQuestionMationCopyById(String surveyCopyId);
// String saveQuestion(Question question, String id, String userId);
}

View file

@ -4,9 +4,11 @@
package com.skyeye.eve.Examquestion.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.skyeye.annotation.service.SkyeyeService;
import com.skyeye.base.business.service.impl.SkyeyeBusinessServiceImpl;
import com.skyeye.common.constans.CommonNumConstants;
import com.skyeye.common.entity.search.CommonPageInfo;
import com.skyeye.common.object.InputObject;
import com.skyeye.common.util.DateUtil;
@ -16,22 +18,18 @@ import com.skyeye.common.util.question.QuType;
import com.skyeye.eve.Examquestion.dao.QuestionDao;
import com.skyeye.eve.Examquestion.entity.Question;
import com.skyeye.eve.Examquestion.service.QuestionService;
import com.skyeye.exam.examquchckbox.dao.ExamQuCheckboxDao;
import com.skyeye.exam.examquchckbox.entity.ExamQuCheckbox;
import com.skyeye.exam.examquchckbox.service.ExamQuCheckboxService;
import com.skyeye.exam.examquchencolumn.dao.ExamQuChenColumnDao;
import com.skyeye.exam.examquchencolumn.entity.ExamQuChenColumn;
import com.skyeye.exam.examquchencolumn.service.ExamQuChenColumnService;
import com.skyeye.exam.examquchenrow.dao.ExamQuChenRowDao;
import com.skyeye.exam.examquchenrow.entity.ExamQuChenRow;
import com.skyeye.exam.examquchenrow.service.ExamQuChenRowService;
import com.skyeye.exam.examquestionlogic.entity.ExamQuestionLogic;
import com.skyeye.exam.examquestionlogic.service.ExamQuestionLogicService;
import com.skyeye.exam.examqumultfillblank.dao.ExamQuMultiFillblankDao;
import com.skyeye.exam.examqumultfillblank.entity.ExamQuMultiFillblank;
import com.skyeye.exam.examqumultfillblank.service.ExamQuMultiFillblankService;
import com.skyeye.exam.examquorderby.entity.ExamQuOrderby;
import com.skyeye.exam.examquorderby.service.ExamQuOrderbyService;
import com.skyeye.exam.examquradio.dao.ExamQuRadioDao;
import com.skyeye.exam.examquradio.entity.ExamQuRadio;
import com.skyeye.exam.examquradio.service.ExamQuRadioService;
import com.skyeye.exam.examquscore.entity.ExamQuScore;
@ -40,7 +38,6 @@ import com.skyeye.exception.CustomException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
/**
@ -73,9 +70,15 @@ public class QuestionServiceImpl extends SkyeyeBusinessServiceImpl<QuestionDao,
@Autowired
private ExamQuChenColumnService examQuChenColumnService;
@Autowired
private ExamQuChenRowService examQuChenRowService;
@Autowired
private ExamQuestionLogicService examQuestionLogicService;
@Autowired
private ExamQuScoreService examQuScoreService;
@Override
public void createPostpose(Question entity, String userId) {
entity.setQuTag(1);
@ -192,67 +195,90 @@ public class QuestionServiceImpl extends SkyeyeBusinessServiceImpl<QuestionDao,
return questionList;
}
@Autowired
private ExamQuRadioDao examQuRadioDao;
@Autowired
private ExamQuCheckboxDao examQuCheckboxDao;
@Autowired
private ExamQuMultiFillblankDao examQuMultiFillblankDao;
@Autowired
private ExamQuChenRowDao examQuChenRowDao;
@Autowired
private ExamQuChenColumnDao examQuChenColumnDao;
@Override
public void copyQuestionListMation(Question question) {
String quType = QuType.getActionName(Integer.parseInt(question.getQuType().toString()));
if (quType.equals(QuType.RADIO.getActionName()) || quType.equals(QuType.COMPRADIO.getActionName())) {
ExamQuRadio examQuRadio = examQuRadioService.selectById(question.getCopyFromId());
List<ExamQuRadio> examQuRadioList = examQuRadioService.selectQuRadio(question.getCopyFromId());
for (ExamQuRadio examQuRadio : examQuRadioList) {
examQuRadio.setId(ToolUtil.getSurFaceId());
examQuRadio.setCreateTime(DateUtil.getTimeAndToString());
examQuRadio.setQuId(question.getId());
if (examQuRadio != null) {
examQuRadioDao.insert(examQuRadio);
}
if (!examQuRadioList.isEmpty()) {
examQuRadioService.createEntity(examQuRadioList, StrUtil.EMPTY);
}
else if (quType.equals(QuType.CHECKBOX.getActionName()) || quType.equals(QuType.COMPCHECKBOX.getActionName())){
ExamQuCheckbox examQuCheckbox = examQuCheckboxDao.selectById(question.getCopyFromId());
} else if (quType.equals(QuType.CHECKBOX.getActionName()) || quType.equals(QuType.COMPCHECKBOX.getActionName())) {
List<ExamQuCheckbox> examQuCheckboxList = examQuCheckboxService.selectQuChenbox(question.getCopyFromId());
for (ExamQuCheckbox examQuCheckbox : examQuCheckboxList) {
examQuCheckbox.setId(ToolUtil.getSurFaceId());
examQuCheckbox.setCreateTime(DateUtil.getTimeAndToString());
examQuCheckbox.setQuId(question.getId());
if (examQuCheckbox != null) {
examQuCheckboxDao.insert(examQuCheckbox);
}
if (!examQuCheckboxList.isEmpty()) {
examQuCheckboxService.createEntity(examQuCheckboxList, StrUtil.EMPTY);
}
else if (quType.equals(QuType.MULTIFILLBLANK.getActionName())){
ExamQuMultiFillblank examQuMultiFillblank = examQuMultiFillblankDao.selectById(question.getCopyFromId());
} else if (quType.equals(QuType.MULTIFILLBLANK.getActionName())) {
List<ExamQuMultiFillblank> multiFillblanksList = examQuMultiFillblankService.selectQuMultiFillblank(question.getCopyFromId());
for (ExamQuMultiFillblank examQuMultiFillblank : multiFillblanksList) {
examQuMultiFillblank.setId(ToolUtil.getSurFaceId());
examQuMultiFillblank.setCreateTime(DateUtil.getTimeAndToString());
examQuMultiFillblank.setQuId(question.getId());
if (examQuMultiFillblank != null) {
examQuMultiFillblankDao.insert(examQuMultiFillblank);
}
if (!multiFillblanksList.isEmpty()) {
examQuMultiFillblankService.createEntity(multiFillblanksList, StrUtil.EMPTY);
}
else if (quType.equals(QuType.BIGQU.getActionName())){
}
else if (quType.equals(QuType.CHENRADIO.getActionName()) || quType.equals(QuType.CHENCHECKBOX.getActionName()) || quType.equals(QuType.CHENSCORE.getActionName())
} else if (quType.equals(QuType.BIGQU.getActionName())) {
} else if (quType.equals(QuType.CHENRADIO.getActionName()) || quType.equals(QuType.CHENCHECKBOX.getActionName()) || quType.equals(QuType.CHENSCORE.getActionName())
|| quType.equals(QuType.CHENFBK.getActionName()) || quType.equals(QuType.COMPCHENRADIO.getActionName())) {
ExamQuChenRow examQuChenRow = examQuChenRowDao.selectById(question.getCopyFromId());
ExamQuChenColumn examQuChenColumn = examQuChenColumnDao.selectById(question.getCopyFromId());
List<ExamQuChenRow> examQuChenRowList = examQuChenRowService.selectQuChenRow(question.getCopyFromId());
List<ExamQuChenColumn> examQuChenColumnList = examQuChenColumnService.selectQuChenColumn(question.getCopyFromId());
for (ExamQuChenRow examQuChenRow : examQuChenRowList) {
examQuChenRow.setId(ToolUtil.getSurFaceId());
examQuChenRow.setCreateTime(DateUtil.getTimeAndToString());
examQuChenRow.setQuId(question.getId());
}
if (!examQuChenRowList.isEmpty()) {
examQuChenRowService.createEntity(examQuChenRowList, StrUtil.EMPTY);
}
for (ExamQuChenColumn examQuChenColumn : examQuChenColumnList) {
examQuChenColumn.setId(ToolUtil.getSurFaceId());
examQuChenColumn.setCreateTime(DateUtil.getTimeAndToString());
examQuChenColumn.setQuId(question.getId());
if (examQuChenRow != null) {
examQuChenRowDao.insert(examQuChenRow);
}
if (examQuChenColumn != null) {
examQuChenColumnDao.insert(examQuChenColumn);
if (!examQuChenColumnList.isEmpty()) {
examQuChenColumnService.createEntity(examQuChenColumnList, StrUtil.EMPTY);
}
} else if (quType.equals(QuType.SCORE.getActionName())) {
List<ExamQuScore> examQuScoreList = examQuScoreService.selectQuScore(question.getCopyFromId());
for (ExamQuScore examQuScore : examQuScoreList) {
examQuScore.setId(ToolUtil.getSurFaceId());
examQuScore.setCreateTime(DateUtil.getTimeAndToString());
examQuScore.setQuId(question.getId());
}
if (!examQuScoreList.isEmpty()) {
examQuScoreService.createEntity(examQuScoreList, StrUtil.EMPTY);
}
} else if (quType.equals(QuType.ORDERQU.getActionName())) {
List<ExamQuOrderby> examQuOrderbyList = examQuOrderbyService.selectQuOrderby(question.getCopyFromId());
for (ExamQuOrderby examQuOrderby : examQuOrderbyList) {
examQuOrderby.setId(ToolUtil.getSurFaceId());
examQuOrderby.setCreateTime(DateUtil.getTimeAndToString());
examQuOrderby.setQuId(question.getId());
}
if (!examQuOrderbyList.isEmpty()) {
examQuOrderbyService.createEntity(examQuOrderbyList, StrUtil.EMPTY);
}
}
}
@Override
public List<Question> queryQuestionMationCopyById(String surveyCopyId) {
QueryWrapper<Question> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(MybatisPlusUtil.toColumns(Question::getBelongId), surveyCopyId);
queryWrapper.eq(MybatisPlusUtil.toColumns(Question::getTag), CommonNumConstants.NUM_TWO);
queryWrapper.ne(MybatisPlusUtil.toColumns(Question::getQuTag), CommonNumConstants.NUM_TWO);
queryWrapper.eq(MybatisPlusUtil.toColumns(Question::getVisibility), CommonNumConstants.NUM_ONE);
return list(queryWrapper);
}
}

View file

@ -130,6 +130,7 @@ public class ExamServiceImpl implements ExamService {
}
}
*/
/**
* 获取试卷题目信息
*
@ -1018,7 +1019,6 @@ public class ExamServiceImpl implements ExamService {
getQuestionOptionListMation(question);
getQuestionOptionReportListMation(question);
}
outputObject.setBean(surveyMation);
outputObject.setBeans(questions);
outputObject.settotal(1);
@ -2484,7 +2484,7 @@ public class ExamServiceImpl implements ExamService {
}
}
for (Map<String, Object> question : questions) {
question.put("pageNo", pageNo);
question.put("F", pageNo);
getQuestionOptionListMation(question);
// 知识点数量回显
String knowledgeIds = question.containsKey("knowledgeIds") ? question.get("knowledgeIds").toString() : ",";

View file

@ -14,5 +14,7 @@ public interface ExamQuCheckboxService extends SkyeyeBusinessService<ExamQuCheck
void removeByQuId(String quId);
List<ExamQuCheckbox> selectQuChenbox(String copyFromId);
// void queryExamQuCheckboxListById(InputObject inputObject, OutputObject outputObject);
}

View file

@ -103,4 +103,12 @@ public class ExamQuCheckboxServiceImpl extends SkyeyeBusinessServiceImpl<ExamQuC
updateWrapper.eq(MybatisPlusUtil.toColumns(ExamQuCheckbox::getQuId),quId);
remove(updateWrapper);
}
@Override
public List<ExamQuCheckbox> selectQuChenbox(String copyFromId) {
QueryWrapper<ExamQuCheckbox> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamQuCheckbox::getQuId),copyFromId);
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamQuCheckbox::getVisibility),CommonNumConstants.NUM_ONE);
return list(queryWrapper);
}
}

View file

@ -15,4 +15,6 @@ public interface ExamQuChenColumnService extends SkyeyeBusinessService<ExamQuChe
void changeVisibility(InputObject inputObject, OutputObject outputObject);
void removeByQuId(String quId);
List<ExamQuChenColumn> selectQuChenColumn(String copyFromId);
}

View file

@ -129,4 +129,12 @@ public class ExamQuChenColumnServiceImpl extends SkyeyeBusinessServiceImpl<ExamQ
updateWrapper.eq(MybatisPlusUtil.toColumns(ExamQuChenColumn::getQuId), quId);
update(updateWrapper);
}
@Override
public List<ExamQuChenColumn> selectQuChenColumn(String copyFromId) {
QueryWrapper<ExamQuChenColumn> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamQuChenColumn::getQuId), copyFromId);
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamQuChenColumn::getVisibility), CommonNumConstants.NUM_ONE);
return list(queryWrapper);
}
}

View file

@ -19,4 +19,6 @@ public interface ExamQuChenRowService extends SkyeyeBusinessService<ExamQuChenRo
void changeVisibility(String quId, String createId);
void removeByQuId(String quId);
List<ExamQuChenRow> selectQuChenRow(String copyFromId);
}

View file

@ -9,7 +9,6 @@ import com.skyeye.common.util.mybatisplus.MybatisPlusUtil;
import com.skyeye.exam.examquchenrow.dao.ExamQuChenRowDao;
import com.skyeye.exam.examquchenrow.entity.ExamQuChenRow;
import com.skyeye.exam.examquchenrow.service.ExamQuChenRowService;
import org.apache.ibatis.annotations.Update;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -21,6 +20,7 @@ public class ExamQuChenRowServiceImpl extends SkyeyeBusinessServiceImpl<ExamQuCh
@Autowired
private ExamQuChenRowService examQuChenRowService;
@Override
public void saveRowEntity(List<ExamQuChenRow> quRow, String userId) {
createEntity(quRow, userId);
@ -63,4 +63,12 @@ public class ExamQuChenRowServiceImpl extends SkyeyeBusinessServiceImpl<ExamQuCh
updateWrapper.eq(MybatisPlusUtil.toColumns(ExamQuChenRow::getQuId), quId);
remove(updateWrapper);
}
@Override
public List<ExamQuChenRow> selectQuChenRow(String copyFromId) {
QueryWrapper<ExamQuChenRow> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamQuChenRow::getQuId), copyFromId);
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamQuChenRow::getVisibility), CommonNumConstants.NUM_ONE);
return list(queryWrapper);
}
}

View file

@ -14,4 +14,6 @@ public interface ExamQuMultiFillblankService extends SkyeyeBusinessService<ExamQ
void changeVisibility(InputObject inputObject, OutputObject outputObject);
void removeByQuId(String quId);
List<ExamQuMultiFillblank> selectQuMultiFillblank(String copyFromId);
}

View file

@ -89,4 +89,12 @@ public class ExamQuMultiFillblankControllerImpl extends SkyeyeBusinessServiceImp
updateWrapper.eq(MybatisPlusUtil.toColumns(ExamQuMultiFillblank::getQuId),quId);
remove(updateWrapper);
}
@Override
public List<ExamQuMultiFillblank> selectQuMultiFillblank(String copyFromId) {
QueryWrapper<ExamQuMultiFillblank> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamQuMultiFillblank::getQuId),copyFromId);
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamQuMultiFillblank::getVisibility),CommonNumConstants.NUM_ONE);
return list(queryWrapper);
}
}

View file

@ -14,4 +14,6 @@ public interface ExamQuOrderbyService extends SkyeyeBusinessService<ExamQuOrderb
void changeVisibility(InputObject inputObject, OutputObject outputObject);
void removeByQuId(String quId);
List<ExamQuOrderby> selectQuOrderby(String copyFromId);
}

View file

@ -89,4 +89,12 @@ public class ExamQuOrderbyServiceImpl extends SkyeyeBusinessServiceImpl<ExamQuOr
updateWrapper.eq(MybatisPlusUtil.toColumns(ExamQuOrderby::getQuId), quId);
remove(updateWrapper);
}
@Override
public List<ExamQuOrderby> selectQuOrderby(String copyFromId) {
QueryWrapper<ExamQuOrderby> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamQuOrderby::getQuId), copyFromId);
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamQuOrderby::getVisibility), CommonNumConstants.NUM_ONE);
return list(queryWrapper);
}
}

View file

@ -21,4 +21,6 @@ public interface ExamQuRadioService extends SkyeyeBusinessService<ExamQuRadio> {
void changeVisibility(InputObject inputObject, OutputObject outputObject);
void removeByQuId(String quId);
List<ExamQuRadio> selectQuRadio(String copyFromId);
}

View file

@ -106,5 +106,14 @@ public class ExamQuRadioServiceImpl extends SkyeyeBusinessServiceImpl<ExamQuRadi
remove(updateWrapper);
}
@Override
public List<ExamQuRadio> selectQuRadio(String copyFromId) {
QueryWrapper<ExamQuRadio> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamQuRadio::getQuId),copyFromId);
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamQuRadio::getVisibility),CommonNumConstants.NUM_ONE);
List<ExamQuRadio> examQuRadioList = list(queryWrapper);
return examQuRadioList;
}
}

View file

@ -19,5 +19,7 @@ public interface ExamQuScoreService extends SkyeyeBusinessService<ExamQuScore> {
void saveList(List<ExamQuScore> list, String quId, String userId);
void changeVisibility(InputObject inputObject, OutputObject outputObject);
List<ExamQuScore> selectQuScore(String copyFromId);
}

View file

@ -91,4 +91,12 @@ public class ExamQuScoreServiceImpl extends SkyeyeBusinessServiceImpl<ExamQuScor
update(updateWrapper);
}
@Override
public List<ExamQuScore> selectQuScore(String copyFromId) {
QueryWrapper<ExamQuScore> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamQuScore::getQuId), copyFromId);
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamQuScore::getVisibility), CommonNumConstants.NUM_ONE);
return list(queryWrapper);
}
}

View file

@ -5,6 +5,8 @@ import com.skyeye.common.object.InputObject;
import com.skyeye.common.object.OutputObject;
import com.skyeye.exam.examsurveyanswer.entity.ExamSurveyAnswer;
import java.util.List;
/**
* @ClassName: ExamSurveyAnswerService
* @Description: 试卷回答信息表管理服务接口层
@ -17,4 +19,6 @@ public interface ExamSurveyAnswerService extends SkyeyeBusinessService<ExamSurve
void queryMySurveyAnswerList(InputObject inputObject, OutputObject outputObject);
ExamSurveyAnswer queryWhetherExamIngByStuId(String userId, String id);
List<ExamSurveyAnswer> querySurveyAnswer(String surveyId, String answerId, String userId);
}

View file

@ -9,7 +9,6 @@ import com.skyeye.common.util.mybatisplus.MybatisPlusUtil;
import com.skyeye.exam.examsurveyanswer.dao.ExamSurveyAnswerDao;
import com.skyeye.exam.examsurveyanswer.entity.ExamSurveyAnswer;
import com.skyeye.exam.examsurveyanswer.service.ExamSurveyAnswerService;
import com.skyeye.exception.CustomException;
import org.springframework.stereotype.Service;
import java.util.List;
@ -45,4 +44,13 @@ public class ExamSurveyAnswerServiceImpl extends SkyeyeBusinessServiceImpl<ExamS
ExamSurveyAnswer answer = getOne(queryWrapper);
return answer;
}
@Override
public List<ExamSurveyAnswer> querySurveyAnswer(String surveyId, String answerId, String userId) {
QueryWrapper<ExamSurveyAnswer> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamSurveyAnswer::getSurveyId), surveyId);
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamSurveyAnswer::getId), answerId);
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamSurveyAnswer::getCreateId), userId);
return list(queryWrapper);
}
}

View file

@ -121,4 +121,19 @@ public class ExamSurveyDirectoryController {
public void takeExam(InputObject inputObject, OutputObject outputObject) {
examSurveyDirectoryService.takeExam(inputObject, outputObject);
}
/**
* 手动结束试卷
*
* @param inputObject 入参以及用户信息等获取对象
* @param outputObject 出参以及提示信息的返回值对象
*/
@ApiOperation(id = "updateExamMationEndById", value = "手动结束试卷", method = "POST", allUse = "1")
@ApiImplicitParams({
@ApiImplicitParam(id = "id", name = "id", value = "试卷id",required = "required")})
@RequestMapping("/post/ExamSurveyDirectoryController/updateExamMationEndById")
public void updateExamMationEndById(InputObject inputObject, OutputObject outputObject) {
examSurveyDirectoryService.updateExamMationEndById(inputObject, outputObject);
}
}

View file

@ -5,6 +5,8 @@ import com.skyeye.common.object.InputObject;
import com.skyeye.common.object.OutputObject;
import com.skyeye.exam.examsurveydirectory.entity.ExamSurveyDirectory;
import java.util.List;
/**
* @ClassName: ExamSurveyDirectoryService
* @Description: 试卷管理服务接口层
@ -22,4 +24,6 @@ public interface ExamSurveyDirectoryService extends SkyeyeBusinessService<ExamSu
ExamSurveyDirectory takeExam(InputObject inputObject, OutputObject outputObject);
void copyExamDirectory(InputObject inputObject, OutputObject outputObject);
void updateExamMationEndById(InputObject inputObject, OutputObject outputObject);
}

View file

@ -1,6 +1,7 @@
package com.skyeye.exam.examsurveydirectory.service.impl;
import cn.hutool.core.io.unit.DataUnit;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.skyeye.annotation.service.SkyeyeService;
@ -12,6 +13,7 @@ import com.skyeye.common.object.OutputObject;
import com.skyeye.common.util.DateUtil;
import com.skyeye.common.util.ToolUtil;
import com.skyeye.common.util.mybatisplus.MybatisPlusUtil;
import com.skyeye.common.util.question.QuType;
import com.skyeye.eve.Examquestion.dao.QuestionDao;
import com.skyeye.eve.Examquestion.entity.Question;
import com.skyeye.eve.Examquestion.service.QuestionService;
@ -27,7 +29,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@ -141,7 +142,7 @@ public class ExamSurveyDirectoryServiceImpl extends SkyeyeBusinessServiceImpl<Ex
public void copyExamDirectory(InputObject inputObject, OutputObject outputObject) {
ExamSurveyDirectory examSurveyDirectories = new ExamSurveyDirectory();
Map<String, Object> map = inputObject.getParams();
String quId = map.get("id").toString();//试卷id
String examDirectoryId = map.get("id").toString();//试卷id
String userId = InputObject.getLogParamsStatic().get("id").toString();
String surveyId = ToolUtil.getSurFaceId();
examSurveyDirectories.setId(surveyId);
@ -149,17 +150,15 @@ public class ExamSurveyDirectoryServiceImpl extends SkyeyeBusinessServiceImpl<Ex
examSurveyDirectories.setSurveyModel(1);
examSurveyDirectories.setCreateId(userId);
examSurveyDirectories.setCreateTime(DateUtil.getTimeAndToString());
List<Question> questionList = Collections.singletonList(questionDao.selectById(quId));
List<Question> questionList = questionService.queryQuestionMationCopyById(examDirectoryId);
for (Question question : questionList) {
question.setCopyFromId(quId);
question.setCopyFromId(question.getId());
question.setId(ToolUtil.getSurFaceId());
question.setCreateTime(DateUtil.getTimeAndToString());
question.setBelongId(surveyId);
questionService.copyQuestionListMation(question);
}
// questionService.createEntity(questions, userId);
questionService.createEntity(questionList, StrUtil.EMPTY);
}
@Override
@ -190,4 +189,26 @@ public class ExamSurveyDirectoryServiceImpl extends SkyeyeBusinessServiceImpl<Ex
update(updateWrapper);
}
@Override
public void updateExamMationEndById(InputObject inputObject, OutputObject outputObject) {
Map<String, Object> map = inputObject.getParams();
String examSurveyDirectoryId = map.get("id").toString();
QueryWrapper<ExamSurveyDirectory> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(MybatisPlusUtil.toColumns(ExamSurveyDirectory::getId), examSurveyDirectoryId);
ExamSurveyDirectory examSurveyDirectory = getOne(queryWrapper);
if (examSurveyDirectory != null && ObjUtil.isNotEmpty(examSurveyDirectory)) {
if (examSurveyDirectory.getSurveyState().equals(CommonNumConstants.NUM_ONE)) {
String realEndTime = DateUtil.getTimeAndToString();
UpdateWrapper<ExamSurveyDirectory> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq(MybatisPlusUtil.toColumns(ExamSurveyDirectory::getId), examSurveyDirectoryId);
updateWrapper.set(MybatisPlusUtil.toColumns(ExamSurveyDirectory::getRealEndTime), realEndTime);
updateWrapper.set(MybatisPlusUtil.toColumns(ExamSurveyDirectory::getSurveyState), CommonNumConstants.NUM_TWO);
updateWrapper.set(MybatisPlusUtil.toColumns(ExamSurveyDirectory::getEndType), CommonNumConstants.NUM_ONE);
update(updateWrapper);
}
}
else {
throw new CustomException("该试卷信息不存在!");
}
}
}

View file

@ -12,6 +12,11 @@ import com.skyeye.annotation.api.Property;
import com.skyeye.annotation.cache.RedisCacheField;
import com.skyeye.common.constans.RedisConstants;
import com.skyeye.common.entity.features.BaseGeneralInfo;
import com.skyeye.common.enumeration.EnableEnum;
import com.skyeye.coupon.enums.CouponTakeType;
import com.skyeye.coupon.enums.CouponValidityType;
import com.skyeye.coupon.enums.PromotionDiscountType;
import com.skyeye.coupon.enums.PromotionMaterialScope;
import lombok.Data;
import java.util.List;
@ -39,7 +44,7 @@ public class Coupon extends BaseGeneralInfo {
private String templateId;
@TableField(value = "enabled")
@ApiModelProperty(value = "状态,参考#EnableEnum", required = "required,num")
@ApiModelProperty(value = "状态", required = "required,num", enumClass = EnableEnum.class)
private Integer enabled;
@TableField(value = "total_count")
@ -51,7 +56,7 @@ public class Coupon extends BaseGeneralInfo {
private Integer takeLimitCount;
@TableField(value = "take_type")
@ApiModelProperty(value = "领取方式,参考#CouponTakeType", required = "required,num")
@ApiModelProperty(value = "领取方式", required = "required,num",enumClass = CouponTakeType.class)
private Integer takeType;
@TableField(value = "use_price")
@ -59,11 +64,11 @@ public class Coupon extends BaseGeneralInfo {
private String usePrice;
@TableField(value = "product_scope")
@ApiModelProperty(value = "商品范围,参考#PromotionMaterialScope", required = "required,num")
@ApiModelProperty(value = "商品范围", required = "required,num", enumClass = PromotionMaterialScope.class)
private Integer productScope;
@TableField(value = "validity_type")
@ApiModelProperty(value = "生效日期类型,参考#CouponValidityType", required = "required,num")
@ApiModelProperty(value = "生效日期类型", required = "required,num",enumClass = CouponValidityType.class)
private Integer validityType;
@TableField(value = "valid_start_time")
@ -83,7 +88,7 @@ public class Coupon extends BaseGeneralInfo {
private Integer fixedEndTerm;
@TableField(value = "discount_type")
@ApiModelProperty(value = "折扣类型,参考#PromotionDiscountType", required = "required,num")
@ApiModelProperty(value = "折扣类型", required = "required,num",enumClass = PromotionDiscountType.class)
private Integer discountType;
@TableField(value = "discount_percent")

View file

@ -11,6 +11,10 @@ import com.skyeye.annotation.api.ApiModel;
import com.skyeye.annotation.api.ApiModelProperty;
import com.skyeye.annotation.api.Property;
import com.skyeye.common.entity.features.OperatorUserInfo;
import com.skyeye.coupon.enums.CouponTakeType;
import com.skyeye.coupon.enums.CouponUseState;
import com.skyeye.coupon.enums.PromotionDiscountType;
import com.skyeye.coupon.enums.PromotionMaterialScope;
import lombok.Data;
import java.util.List;
@ -42,11 +46,11 @@ public class CouponUse extends OperatorUserInfo {
private Map<String, Object> couponMation;
@TableField(value = "state")
@Property(value = "状态,参考#CouponUseState")
@Property(value = "状态", enumClass = CouponUseState.class)
private Integer state;
@TableField(value = "task_type")
@ApiModelProperty(value = "领取类型", required = "required")
@ApiModelProperty(value = "领取类型", required = "required", enumClass = CouponTakeType.class)
private Integer taskType;
@TableField(value = "use_price")
@ -54,7 +58,7 @@ public class CouponUse extends OperatorUserInfo {
private String usePrice;
@TableField(value = "product_scope")
@Property(value = "商品范围")
@Property(value = "商品范围", enumClass = PromotionMaterialScope.class)
private Integer productScope;
@TableField(value = "valid_start_time")
@ -66,7 +70,7 @@ public class CouponUse extends OperatorUserInfo {
private String validEndTime;
@TableField(value = "discount_type")
@Property(value = "折扣类型")
@Property(value = "折扣类型", enumClass = PromotionDiscountType.class)
private Integer discountType;
@TableField(value = "discount_percent")

View file

@ -12,6 +12,7 @@ import com.skyeye.annotation.api.ApiModelProperty;
import com.skyeye.annotation.api.Property;
import com.skyeye.annotation.cache.RedisCacheField;
import com.skyeye.common.entity.features.AreaInfo;
import com.skyeye.order.enums.*;
import lombok.Data;
import java.util.List;
@ -40,11 +41,11 @@ public class Order extends AreaInfo {
private String oddNumber;
@TableField("type")
@ApiModelProperty(value = "订单类型,参考#ShopOrderType", required = "required")
@ApiModelProperty(value = "订单类型", required = "required",enumClass = ShopOrderType.class)
private Integer type;
@TableField("terminal")
@ApiModelProperty(value = "订单来源,参考#ShopOrderTerminal", required = "required")
@ApiModelProperty(value = "订单来源", required = "required", enumClass = ShopOrderTerminal.class)
private Integer terminal;
@TableField("user_ip")
@ -52,7 +53,7 @@ public class Order extends AreaInfo {
private String userIp;
@TableField("state")
@Property(value = "状态, 参考#ShopOrderState")
@Property(value = "状态",enumClass = ShopOrderState.class)
private Integer state;
@TableField("count")
@ -68,11 +69,11 @@ public class Order extends AreaInfo {
private String cancelTime;
@TableField("cancel_type")
@Property(value = "取消类型,参考#ShopOrderCancelType")
@Property(value = "取消类型",enumClass = ShopOrderCancelType.class)
private Integer cancelType;
@TableField("comment_state")
@Property(value = "是否评价,参考#ShopOrderCommentState")
@Property(value = "是否评价", enumClass = ShopOrderCommentState.class)
private Integer commentState;
@TableField("brokerage_user_id")
@ -88,7 +89,7 @@ public class Order extends AreaInfo {
private String payType;
@TableField("total_price")
@Property(value = "商品总价,单位:分")
@ApiModelProperty(value = "商品总价,单位:分",required = "required")
private String totalPrice;
@TableField("discount_price")

View file

@ -15,6 +15,7 @@ import com.skyeye.common.enumeration.WhetherEnum;
import com.skyeye.order.enums.OrderCommentType;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
@ -85,4 +86,12 @@ public class OrderComment extends OperatorUserInfo {
@TableField(value = "context")
@ApiModelProperty(value = "评价内容", required = "required")
private String context;
@TableField(exist = false)
@Property(value = "客户追评")
private Map<String,Object> additionalReview;
@TableField(exist = false)
@Property(value = "商家回复")
private List<Map<String, Object>> merchantReply;
}

View file

@ -11,6 +11,7 @@ import com.skyeye.annotation.api.ApiModel;
import com.skyeye.annotation.api.ApiModelProperty;
import com.skyeye.annotation.api.Property;
import com.skyeye.common.entity.features.OperatorUserInfo;
import com.skyeye.common.enumeration.WhetherEnum;
import lombok.Data;
import java.util.Map;
@ -73,7 +74,7 @@ public class OrderItem extends OperatorUserInfo {
private Integer count;
@TableField("comment_state")
@Property(value = "是否评价")
@Property(value = "是否评价",enumClass = WhetherEnum.class)
private Integer commentState;
@TableField("price")

View file

@ -28,4 +28,6 @@ public interface OrderItemService extends SkyeyeBusinessService<OrderItem> {
Map<String, List<OrderItem>> queryListByParentId(List<String> idList);
void setValueAndCreateEntity(Order order, String userId);
void updateCommentStateById(String id);
}

View file

@ -35,4 +35,6 @@ public interface OrderService extends SkyeyeBusinessService<Order> {
void changeOrderAdjustPrice(InputObject inputObject, OutputObject outputObject);
void updateOrderToPayState(InputObject inputObject, OutputObject outputObject);
void setOrderCancle(String orderId);
}

View file

@ -15,6 +15,7 @@ import com.github.pagehelper.PageHelper;
import com.skyeye.annotation.service.SkyeyeService;
import com.skyeye.base.business.service.impl.SkyeyeBusinessServiceImpl;
import com.skyeye.common.constans.CommonConstants;
import com.skyeye.common.constans.CommonNumConstants;
import com.skyeye.common.entity.search.CommonPageInfo;
import com.skyeye.common.enumeration.WhetherEnum;
import com.skyeye.common.object.InputObject;
@ -36,8 +37,10 @@ import com.skyeye.store.service.ShopStoreService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @ClassName: OrderCommentServiceImpl
@ -71,33 +74,66 @@ public class OrderCommentServiceImpl extends SkyeyeBusinessServiceImpl<OrderComm
@Override
public void validatorEntity(OrderComment orderComment) {
if (orderComment.getType() == OrderCommentType.MERCHANT.getKey() ||
orderComment.getType() == OrderCommentType.CUSTOMERLATER.getKey()) {
Integer commentType = orderComment.getType();
if (commentType != OrderCommentType.MERCHANT.getKey()
&& commentType != OrderCommentType.CUSTOMERLATER.getKey()
&& commentType != OrderCommentType.CUSTOMERFiRST.getKey()) {
throw new CustomException("type值非法");
}
if (commentType == OrderCommentType.MERCHANT.getKey() ||
commentType == OrderCommentType.CUSTOMERLATER.getKey()) {
if (StrUtil.isEmpty(orderComment.getParentId())) {
throw new CustomException("商家回复评价和客户追评父级评价id不能为空.");
}
}
if (orderComment.getType() == OrderCommentType.CUSTOMERFiRST.getKey()) {
if (commentType == OrderCommentType.CUSTOMERFiRST.getKey()) {
if (StrUtil.isNotEmpty(orderComment.getParentId())) {
throw new CustomException("客户的评价无需父级id");
}
}
Integer start = orderComment.getStart();
if (ObjectUtil.isNotEmpty(start)) {
if (start < 0 || start > 5) {
throw new CustomException("评价星级为1-5");
}
}
}
@Override
public void createPrepose(OrderComment entity) {
OrderItem orderItem = orderItemService.selectById(entity.getOrderItemId());
// 客户评价判断
if (orderItem.getCommentState() == WhetherEnum.DISABLE_USING.getKey()) {// 子订单未评价
if (entity.getType() == OrderCommentType.CUSTOMERLATER.getKey()) {
throw new CustomException("客户追评,需先进行首评。");
}
if (entity.getType() == OrderCommentType.CUSTOMERFiRST.getKey()) {// 客户首评
Integer start = entity.getStart();
if (ObjectUtil.isEmpty(entity.getStart())) {
throw new CustomException("首评的星级不能为空");
}
if (start < 0 || start > 5) {
throw new CustomException("评价星级为1-5");
}
}
} else if (orderItem.getCommentState() == WhetherEnum.ENABLE_USING.getKey()) {// 子订单已评价
if (entity.getType() == OrderCommentType.CUSTOMERFiRST.getKey()) {// 再次进行首评
throw new CustomException("首评只能评价一次。");
}
if (entity.getType() == OrderCommentType.CUSTOMERLATER.getKey()) {// 追评
QueryWrapper<OrderComment> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(MybatisPlusUtil.toColumns(OrderComment::getOrderItemId), entity.getOrderItemId())
.eq(MybatisPlusUtil.toColumns(OrderComment::getCreateId), InputObject.getLogParamsStatic().get("id").toString())
.and(wrap -> {
String parentId = MybatisPlusUtil.toColumns(OrderComment::getParentId);
wrap.isNotNull(parentId).ne(parentId, StrUtil.EMPTY);
});
OrderComment one = getOne(queryWrapper);
if (ObjectUtil.isNotEmpty(one)) {// 客户已追评
throw new CustomException("追评只能追评一次");
}
entity.setStart(null);
}
}
entity.setStoreId(ObjectUtil.isEmpty(orderItem) ? "" : orderItem.getStoreId());// 设置门店id
if (entity.getType() == OrderCommentType.CUSTOMERFiRST.getKey() ||
entity.getType() == OrderCommentType.CUSTOMERLATER.getKey()) {
entity.getType() == OrderCommentType.CUSTOMERLATER.getKey()) {// 顾客新增的评价商家均未回复
entity.setIsComment(WhetherEnum.DISABLE_USING.getKey());
}
OrderItem orderItem = orderItemService.selectById(entity.getOrderItemId());
entity.setStoreId(ObjectUtil.isEmpty(orderItem) ? "" : orderItem.getStoreId());// 设置门店id
}
@Override
@ -108,6 +144,7 @@ public class OrderCommentServiceImpl extends SkyeyeBusinessServiceImpl<OrderComm
} else {
orderService.updateCommonState(orderComment.getOrderId(), ShopOrderCommentState.FINISHED.getKey());
}
orderItemService.updateCommentStateById(orderComment.getOrderItemId());
if (orderComment.getType() == OrderCommentType.MERCHANT.getKey()) {// 商家回复时修改客户评价状态为已评价
UpdateWrapper<OrderComment> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq(CommonConstants.ID, orderComment.getParentId());
@ -152,23 +189,53 @@ public class OrderCommentServiceImpl extends SkyeyeBusinessServiceImpl<OrderComm
return queryWrapper;
}
@Override
public void queryOrderCommentPageList(InputObject inputObject, OutputObject outputObject) {
CommonPageInfo commonPageInfo = inputObject.getParams(CommonPageInfo.class);
String typeId = commonPageInfo.getTypeId();
Page pages = PageHelper.startPage(commonPageInfo.getPage(), commonPageInfo.getLimit());
private List<OrderComment> getOrderCommentListByType(String typeId, Integer type) {
QueryWrapper<OrderComment> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(MybatisPlusUtil.toColumns(OrderComment::getCreateId), typeId)// 创建人id
queryWrapper.eq(MybatisPlusUtil.toColumns(OrderComment::getType), type)
.and(wrap -> {
wrap.eq(MybatisPlusUtil.toColumns(OrderComment::getCreateId), typeId)// 创建人id
.or().eq(MybatisPlusUtil.toColumns(OrderComment::getMaterialId), typeId) // 商品id
.or().eq(MybatisPlusUtil.toColumns(OrderComment::getOrderItemId), typeId)// 订单子单id
.or().eq(MybatisPlusUtil.toColumns(OrderComment::getOrderId), typeId);// 订单id
});
List<OrderComment> list = list(queryWrapper);
iMaterialService.setDataMation(list, OrderComment::getMaterialId);
iMaterialNormsService.setDataMation(list, OrderComment::getNormsId);
memberService.setDataMation(list, OrderComment::getCreateId);
shopStoreService.setDataMation(list, OrderComment::getStoreId);
List<Map<String, Object>> mapList = JSONUtil.toList(JSONUtil.toJsonStr(list), null);
return list;
}
@Override
public void queryOrderCommentPageList(InputObject inputObject, OutputObject outputObject) {
CommonPageInfo commonPageInfo = inputObject.getParams(CommonPageInfo.class);
String typeId = commonPageInfo.getTypeId();
Page pages = PageHelper.startPage(commonPageInfo.getPage(), commonPageInfo.getLimit());
List<OrderComment> customerFirst = getOrderCommentListByType(typeId, OrderCommentType.CUSTOMERFiRST.getKey());
List<OrderComment> customerLater = getOrderCommentListByType(typeId, OrderCommentType.CUSTOMERLATER.getKey());
List<OrderComment> merchantReply = getOrderCommentListByType(typeId, OrderCommentType.MERCHANT.getKey());
if (CollectionUtil.isEmpty(customerFirst)) {
return;
}
List<OrderComment> beans = setAdditionalReviewAndMerchantReply(customerFirst, customerLater, merchantReply);// 区分客户追评和商家回复
List<Map<String, Object>> mapList = JSONUtil.toList(JSONUtil.toJsonStr(beans), null);
outputObject.setBeans(mapList);
outputObject.settotal(pages.getTotal());
}
private List<OrderComment> setAdditionalReviewAndMerchantReply(List<OrderComment> customerFirst, List<OrderComment> customerLater, List<OrderComment> merchantReply) {
Map<String, OrderComment> customerTowMap = customerLater.stream()
.filter(ObjectUtil::isEmpty).collect(Collectors.toMap(OrderComment::getParentId, o -> o));// 客户追评
Map<String, List<OrderComment>> merchantReplyMapList = merchantReply.stream()
.filter(ObjectUtil::isEmpty).collect(Collectors.groupingBy(OrderComment::getParentId));// 商家回复
for (OrderComment item : customerFirst) {
if (customerTowMap.containsKey(item.getId())) {
item.setAdditionalReview(JSONUtil.toBean(JSONUtil.toJsonStr(customerTowMap.get(item.getId())), null));
}
if (merchantReplyMapList.containsKey(item.getId())) {
item.setMerchantReply(JSONUtil.toBean(JSONUtil.toJsonStr(merchantReplyMapList.get(item.getId())), null));
}
}
return customerFirst;
}
}

View file

@ -7,8 +7,10 @@ package com.skyeye.order.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.skyeye.annotation.service.SkyeyeService;
import com.skyeye.base.business.service.impl.SkyeyeBusinessServiceImpl;
import com.skyeye.common.constans.CommonConstants;
import com.skyeye.common.enumeration.WhetherEnum;
import com.skyeye.common.util.mybatisplus.MybatisPlusUtil;
import com.skyeye.erp.service.IMaterialNormsService;
@ -112,4 +114,12 @@ public class OrderItemServiceImpl extends SkyeyeBusinessServiceImpl<OrderItemDao
}
super.createEntity(order.getOrderItemList(), userId);
}
@Override
public void updateCommentStateById(String id){
UpdateWrapper<OrderItem> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq(CommonConstants.ID, id)
.set(MybatisPlusUtil.toColumns(OrderItem::getCommentState), WhetherEnum.ENABLE_USING.getKey());
update(updateWrapper);
}
}

View file

@ -17,6 +17,7 @@ import com.skyeye.annotation.service.SkyeyeService;
import com.skyeye.base.business.service.impl.SkyeyeBusinessServiceImpl;
import com.skyeye.common.constans.CommonConstants;
import com.skyeye.common.constans.CommonNumConstants;
import com.skyeye.common.constans.QuartzConstants;
import com.skyeye.common.entity.search.CommonPageInfo;
import com.skyeye.common.object.InputObject;
import com.skyeye.common.object.OutputObject;
@ -31,12 +32,15 @@ import com.skyeye.coupon.service.CouponUseMaterialService;
import com.skyeye.coupon.service.CouponUseService;
import com.skyeye.erp.service.IMaterialNormsService;
import com.skyeye.erp.service.IMaterialService;
import com.skyeye.eve.rest.quartz.SysQuartzMation;
import com.skyeye.eve.service.IAreaService;
import com.skyeye.eve.service.IQuartzService;
import com.skyeye.exception.CustomException;
import com.skyeye.order.config.PayProperties;
import com.skyeye.order.dao.OrderDao;
import com.skyeye.order.entity.Order;
import com.skyeye.order.entity.OrderItem;
import com.skyeye.order.enums.ShopOrderCancelType;
import com.skyeye.order.enums.ShopOrderCommentState;
import com.skyeye.order.enums.ShopOrderState;
import com.skyeye.order.service.OrderItemService;
@ -49,6 +53,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@ -91,6 +97,9 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
@Autowired
private CouponUseMaterialService couponUseMaterialService;
@Autowired
private IQuartzService iQuartzService;
@Override
public void createPrepose(Order order) {
// 订单编号
@ -131,7 +140,6 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
// 设置商品信息商品规格信息和优惠券信息
iMaterialNormsService.setDataMation(orderItemList, OrderItem::getNormsId);
iMaterialService.setDataMation(orderItemList, OrderItem::getMaterialId);
// couponUseService.setDataMation(orderItemList, OrderItem::getCouponUseId);
for (OrderItem orderItem : orderItemList) {
// 获取子单单价 ->
String salePrice = CalculationUtil.multiply(orderItem.getNormsMation().get("salePrice").toString(), "100");
@ -140,8 +148,8 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
if (StrUtil.isEmpty(orderItem.getCouponUseId())) {// 没有优惠券
orderItem.setPayPrice(orderItem.getPrice());
orderItem.setDiscountPrice("0");
setLastValue(order, orderItem);
return;
setLastValue(order, orderItem);// 总单商品数量子单状态总单原价总单应付金额
continue;
}
// 获取优惠券使用条件即满多少金额可使用
String usePrice = orderItem.getCouponUseMation().get("usePrice").toString();
@ -179,14 +187,14 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
orderItem.setCouponPrice(discountLimitPrice);
}
}
setLastValue(order, orderItem);
setLastValue(order, orderItem);// 总单商品数量子单状态总单原价总单应付金额
}
}
public void setLastValue(Order order, OrderItem orderItem) {
order.setCount(order.getCount() + orderItem.getCount());
orderItem.setCommentState(ShopOrderCommentState.UNFINISHED.getKey());
order.setTotalPrice(CalculationUtil.add(order.getTotalPrice(), orderItem.getPayPrice(), CommonNumConstants.NUM_SIX));
order.setTotalPrice(CalculationUtil.add(order.getTotalPrice(), orderItem.getPrice(), CommonNumConstants.NUM_SIX));
order.setPayPrice(CalculationUtil.add(order.getPayPrice(), orderItem.getPayPrice(), CommonNumConstants.NUM_SIX));
}
@ -205,20 +213,33 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
}
private void checkCouponUseMaterial(Order order) {
String couponUseId = order.getCouponUseId();
if (StrUtil.isEmpty(couponUseId)) {
String couponUseId = order.getCouponUseId();//优惠券id
double totalPrice = Integer.parseInt(order.getTotalPrice());//总单原价
if (StrUtil.isEmpty(couponUseId)) {//没有使用优惠券
return;
}
List<OrderItem> orderItemList = order.getOrderItemList();
CouponUse couponUse = couponUseService.selectById(couponUseId);
OrderItem orderItem = null;
List<OrderItem> orderItemList = order.getOrderItemList();//子单列表
CouponUse couponUse = couponUseService.selectById(couponUseId);//优惠券信息
OrderItem orderItem = null;//优惠券使用商品
if (Objects.equals(couponUse.getProductScope(), PromotionMaterialScope.ALL.getKey())) {// 全部商品
if (Objects.equals(couponUse.getDiscountType(), PromotionDiscountType.PERCENT.getKey())) {// 百分比折扣
orderItem = orderItemList.stream().max(Comparator.comparing(OrderItem::getPrice)).orElse(null);// 获取优惠券使用商品列表中价格最高的商品
} else {// 满减 将优惠券使用到第一个商品
orderItemList.get(0).setCouponUseId(couponUseId);
orderItemList.get(0).setCouponUseMation(JSONUtil.toBean(JSONUtil.toJsonStr(couponUse), null));// 设置mation方便后续计算价格
//卢雨佳
double usePrice = Integer.parseInt(couponUse.getUsePrice());//优惠券使用金额
if (totalPrice>= usePrice) {//商品价格大于等于优惠券使用金额
Optional<OrderItem> maxPriceItem = orderItemList.stream()
.max(Comparator.comparing(OrderItem::getPrice));//获取优惠券使用商品列表中价格最高的商品
int index = maxPriceItem
.map(item -> orderItemList.indexOf(item))
.orElse(-1);//获取最高价格商品在子单列表中的索引
orderItemList.get(index).setCouponUseId(couponUseId);
orderItemList.get(index).setCouponUseMation(JSONUtil.toBean(JSONUtil.toJsonStr(couponUse), null));// 设置mation方便后续计算价格
return;
}else {
throw new CustomException("商品价格不足以使用优惠券");
}
}
} else if (Objects.equals(couponUse.getProductScope(), PromotionMaterialScope.SPU.getKey())) {// 指定商品
List<String> couponUseMaterialIds = couponUseMaterialService.queryListByCouponIds(Collections.singletonList(couponUseId))
@ -246,6 +267,22 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
public void createPostpose(Order order, String userId) {
orderItemService.setValueAndCreateEntity(order, userId);
couponUseService.updateState(order.getCouponUseId());// 更新用户领取的优惠券状态
// startUpTaskQuartz(order.getId(), order.getOddNumber(), DateUtil.getTimeAndToString());
}
private void startUpTaskQuartz(String name, String title, String delayedTime) {
/// 处理日期 此处delayedTime为当前日期
Date stringToDate = DateUtil.getPointTime(delayedTime, DateUtil.YYYY_MM_DD_HH_MM_SS);
Date afterOneDay = DateUtil.getAfDate(stringToDate, 1, "d");
DateFormat df = new SimpleDateFormat(DateUtil.YYYY_MM_DD_HH_MM_SS);
String lastTime = df.format(afterOneDay);
// 正式准备启动定时任务
SysQuartzMation sysQuartzMation = new SysQuartzMation();
sysQuartzMation.setName(name);
sysQuartzMation.setTitle(title);
sysQuartzMation.setDelayedTime(lastTime);
sysQuartzMation.setGroupId(QuartzConstants.QuartzMateMationJobType.SHOP_ORDER_CREATE.getTaskType());
iQuartzService.startUpTaskQuartz(sysQuartzMation);
}
@Override
@ -299,6 +336,7 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
Map<String, List<OrderItem>> mapByIds = orderItemService.queryListByParentId(idList);
for (Order order : list) {
order.setOrderItemList(mapByIds.containsKey(order.getId()) ? mapByIds.get(order.getId()) : new ArrayList<>());
pennyToYuan(order);// ->
}
iAreaService.setDataMation(list, Order::getProvinceId);
iAreaService.setDataMation(list, Order::getCityId);
@ -361,6 +399,7 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
Map<String, List<OrderItem>> mapByIds = orderItemService.queryListByParentId(idList);
for (Order order : list) {
order.setOrderItemList(mapByIds.containsKey(order.getId()) ? mapByIds.get(order.getId()) : new ArrayList<>());
pennyToYuan(order);// ->
}
iAreaService.setDataMation(list, Order::getProvinceId);
iAreaService.setDataMation(list, Order::getCityId);
@ -412,9 +451,34 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
iAreaService.setDataMation(order, Order::getAreaId);
iAreaService.setDataMation(order, Order::getTownshipId);
shopAddressService.setDataMation(order, Order::getAddressId);
pennyToYuan(order);// ->
return order;
}
private void pennyToYuan(Order order) {// ->
if (ObjectUtil.isEmpty(order)) {
return;
}
order.setTotalPrice(StrUtil.isEmpty(order.getTotalPrice()) ? "0" : CalculationUtil.divide(order.getTotalPrice(), "100", CommonNumConstants.NUM_SIX));
order.setDiscountPrice(StrUtil.isEmpty(order.getDiscountPrice()) ? "0" : CalculationUtil.divide(order.getDiscountPrice(), "100", CommonNumConstants.NUM_SIX));
order.setDeliveryPrice(StrUtil.isEmpty(order.getDeliveryPrice()) ? "0" : CalculationUtil.divide(order.getDeliveryPrice(), "100", CommonNumConstants.NUM_SIX));
order.setAdjustPrice(StrUtil.isEmpty(order.getAdjustPrice()) ? "0" : CalculationUtil.divide(order.getAdjustPrice(), "100", CommonNumConstants.NUM_SIX));
order.setPayPrice(StrUtil.isEmpty(order.getPayPrice()) ? "0" : CalculationUtil.divide(order.getPayPrice(), "100", CommonNumConstants.NUM_SIX));
order.setCouponPrice(StrUtil.isEmpty(order.getCouponPrice()) ? "0" : CalculationUtil.divide(order.getCouponPrice(), "100", CommonNumConstants.NUM_SIX));
order.setPointPrice(StrUtil.isEmpty(order.getPointPrice()) ? "0" : CalculationUtil.divide(order.getPointPrice(), "100", CommonNumConstants.NUM_SIX));
order.setVipPrice(StrUtil.isEmpty(order.getVipPrice()) ? "0" : CalculationUtil.divide(order.getVipPrice(), "100", CommonNumConstants.NUM_SIX));
for (OrderItem orderItem : order.getOrderItemList()) {
orderItem.setPrice(StrUtil.isEmpty(orderItem.getPrice()) ? "0" : CalculationUtil.divide(orderItem.getPrice(), "100", CommonNumConstants.NUM_SIX));
orderItem.setDiscountPrice(StrUtil.isEmpty(orderItem.getDiscountPrice()) ? "0" : CalculationUtil.divide(orderItem.getDiscountPrice(), "100", CommonNumConstants.NUM_SIX));
orderItem.setDeliveryPrice(StrUtil.isEmpty(orderItem.getDeliveryPrice()) ? "0" : CalculationUtil.divide(orderItem.getDeliveryPrice(), "100", CommonNumConstants.NUM_SIX));
orderItem.setAdjustPrice(StrUtil.isEmpty(orderItem.getAdjustPrice()) ? "0" : CalculationUtil.divide(orderItem.getAdjustPrice(), "100", CommonNumConstants.NUM_SIX));
orderItem.setPayPrice(StrUtil.isEmpty(orderItem.getPayPrice()) ? "0" : CalculationUtil.divide(orderItem.getPayPrice(), "100", CommonNumConstants.NUM_SIX));
orderItem.setCouponPrice(StrUtil.isEmpty(orderItem.getCouponPrice()) ? "0" : CalculationUtil.divide(orderItem.getCouponPrice(), "100", CommonNumConstants.NUM_SIX));
orderItem.setPointPrice(StrUtil.isEmpty(orderItem.getPointPrice()) ? "0" : CalculationUtil.divide(orderItem.getPointPrice(), "100", CommonNumConstants.NUM_SIX));
orderItem.setVipPrice(StrUtil.isEmpty(orderItem.getVipPrice()) ? "0" : CalculationUtil.divide(order.getVipPrice(), "100", CommonNumConstants.NUM_SIX));
}
}
@Override
public void cancelOrder(InputObject inputObject, OutputObject outputObject) {
Map<String, Object> params = inputObject.getParams();
@ -488,6 +552,7 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
updateWrapper.set(MybatisPlusUtil.toColumns(Order::getExtensionNo), payOrderRespDTO.get("no").toString());
update(updateWrapper);
refreshCache(id);
iQuartzService.stopAndDeleteTaskQuartz(id);// 删除定时任务
}
@Override
@ -533,4 +598,15 @@ public class OrderServiceImpl extends SkyeyeBusinessServiceImpl<OrderDao, Order>
outputObject.setBean(qrCodeResult);
outputObject.settotal(CommonNumConstants.NUM_ONE);
}
@Override
public void setOrderCancle(String orderId) {
UpdateWrapper<Order> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq(CommonConstants.ID, orderId);
updateWrapper.set(MybatisPlusUtil.toColumns(Order::getState), ShopOrderState.CANCELED.getKey())
.set(MybatisPlusUtil.toColumns(Order::getCancelType), ShopOrderCancelType.PAY_TIMEOUT.getKey())
.set(MybatisPlusUtil.toColumns(Order::getCancelTime), DateUtil.getTimeAndToString());
update(updateWrapper);
refreshCache(orderId);
}
}

View file

@ -13,6 +13,7 @@ import com.skyeye.annotation.api.Property;
import com.skyeye.annotation.cache.RedisCacheField;
import com.skyeye.common.constans.RedisConstants;
import com.skyeye.common.entity.features.AreaInfo;
import com.skyeye.common.enumeration.WhetherEnum;
import lombok.Data;
import java.util.Map;
@ -52,6 +53,6 @@ public class ShopAddress extends AreaInfo {
private Map<String, Object> labelMation;
@TableField("is_default")
@ApiModelProperty(value = "是否是默认地址,参考#WhetherEnum", required = "required,num")
@ApiModelProperty(value = "是否是默认地址", required = "required,num", enumClass = WhetherEnum.class)
private Integer isDefault;
}

View file

@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.skyeye.annotation.api.ApiModel;
import com.skyeye.annotation.api.ApiModelProperty;
import com.skyeye.common.entity.features.OperatorUserInfo;
import com.skyeye.common.enumeration.WhetherEnum;
import lombok.Data;
import java.util.Map;
@ -64,6 +65,6 @@ public class ShopTradeCart extends OperatorUserInfo {
private Integer count;
@TableField("selected")
@ApiModelProperty(value = "是否选中,参考#WhetherEnum", required = "required,num")
@ApiModelProperty(value = "是否选中", required = "required,num",enumClass = WhetherEnum.class)
private Integer selected;
}

View file

@ -10,6 +10,7 @@ import com.skyeye.annotation.api.ApiModel;
import com.skyeye.annotation.api.ApiModelProperty;
import com.skyeye.annotation.api.Property;
import com.skyeye.common.entity.features.BaseGeneralInfo;
import com.skyeye.common.enumeration.WhetherEnum;
import lombok.Data;
import java.util.Map;
@ -36,7 +37,7 @@ public class StoreType extends BaseGeneralInfo {
private Integer orderBy;
@TableField("enabled")
@ApiModelProperty(value = "启用状态1是0否,参考#WhetherEnum", required = "required")
@ApiModelProperty(value = "启用状态1是0否", required = "required", enumClass = WhetherEnum.class)
private Integer enabled;
@TableField(value = "store_id")

View file

@ -8,6 +8,7 @@ import cn.hutool.json.JSONUtil;
import com.skyeye.coupon.service.CouponService;
import com.skyeye.coupon.service.CouponUseService;
import com.skyeye.eve.service.IQuartzService;
import com.skyeye.order.service.OrderService;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.beans.factory.annotation.Autowired;
@ -32,6 +33,9 @@ public class ShopXxlJob {
@Autowired
private CouponUseService couponUseService;
@Autowired
private OrderService orderService;
@Autowired
private IQuartzService iQuartzService;
@ -54,4 +58,13 @@ public class ShopXxlJob {
couponUseService.setCouponUseStateByTerm(userId, couponUseId);// 修改领取的优惠券的状态
iQuartzService.stopAndDeleteTaskQuartz(couponUseId);// 删除任务
}
@XxlJob("createOrderNotPay")
public void createOrderNotPay() {
String param = XxlJobHelper.getJobParam();
Map<String, String> paramMap = JSONUtil.toBean(param, null);
String orderId = paramMap.get("objectId");// 订单的主键id
orderService.setOrderCancle(orderId);// 修改订单的状态为取消
iQuartzService.stopAndDeleteTaskQuartz(orderId);// 删除任务
}
}