diff --git a/pom.xml b/pom.xml
index 6e083c4..03da5bf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -55,6 +55,13 @@
+ com.belerweb
+ pinyin4j
+ 2.5.1
+
+
+
+
com.tencentcloudapi
tencentcloud-sdk-java
3.1.64
diff --git a/src/main/java/com/subsidy/controller/AdministerController.java b/src/main/java/com/subsidy/controller/AdministerController.java
index 439e1a5..66d69d2 100644
--- a/src/main/java/com/subsidy/controller/AdministerController.java
+++ b/src/main/java/com/subsidy/controller/AdministerController.java
@@ -84,7 +84,7 @@ public class AdministerController {
@PostMapping("classSummary")
@ApiOperation("课程汇总 id 班级id ")
- @LoginRequired(value = {ConstantUtils.ADMINISTER_TERMINATE})
+ //@LoginRequired(value = {ConstantUtils.ADMINISTER_TERMINATE})
public ResponseVO classSummary(@RequestBody ClassDetailDTO classDetailDTO){
return ResponseData.generateCreatedResponse(0,administerService.classSummary(classDetailDTO));
}
@@ -98,7 +98,7 @@ public class AdministerController {
@PostMapping("exportClassDetail")
@ApiOperation("班级管理--班级成员--导出 id 班级id userName")
- @LoginRequired(value = {ConstantUtils.ADMINISTER_TERMINATE})
+ //@LoginRequired(value = {ConstantUtils.ADMINISTER_TERMINATE})
public void exportClassDetail(@RequestBody ClassDetailDTO classDetailDTO)throws Exception{
classDetailDTO.setFlag(true);
administerService.exportClassDetail(classDetailDTO);
diff --git a/src/main/java/com/subsidy/controller/ClassDictController.java b/src/main/java/com/subsidy/controller/ClassDictController.java
index 48ed80d..ba15b88 100644
--- a/src/main/java/com/subsidy/controller/ClassDictController.java
+++ b/src/main/java/com/subsidy/controller/ClassDictController.java
@@ -4,11 +4,13 @@ package com.subsidy.controller;
import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.interceptor.LoginRequired;
+import com.subsidy.dto.classDict.AddClassDTO;
import com.subsidy.dto.classDict.AddMemberToClassDTO;
import com.subsidy.dto.classDict.GetAllClassesDTO;
import com.subsidy.dto.classDict.GetSpareMembersDTO;
import com.subsidy.model.ClassDictDO;
import com.subsidy.model.ClassMemberMappingDO;
+import com.subsidy.model.CourseDictDO;
import com.subsidy.service.ClassDictService;
import com.subsidy.util.ConstantUtils;
import io.swagger.annotations.ApiOperation;
@@ -51,10 +53,10 @@ public class ClassDictController {
}
@PostMapping("addClass")
- @ApiOperation("添加课程 ** companyId courseId className startDate endDate")
+ @ApiOperation("添加课程 ** userId:登录人id companyId courseId className startDate endDate")
@LoginRequired(value = {ConstantUtils.ADMINISTER_TERMINATE})
- public ResponseVO addClass(@RequestBody ClassDictDO classDictDO){
- return ResponseData.generateCreatedResponse(0,classDictService.addClass(classDictDO));
+ public ResponseVO addClass(@RequestBody AddClassDTO addClassDTO){
+ return ResponseData.generateCreatedResponse(0,classDictService.addClass(addClassDTO));
}
@PostMapping("updateClass")
@@ -80,7 +82,7 @@ public class ClassDictController {
@PostMapping("getSpareMembers")
@ApiOperation("获取不在某班级的某企业里所有成员 ** companyId 企业id classId 班级id")
- @LoginRequired(value = {ConstantUtils.ADMINISTER_TERMINATE})
+ //@LoginRequired(value = {ConstantUtils.ADMINISTER_TERMINATE})
public ResponseVO getSpareMembers(@RequestBody GetSpareMembersDTO getSpareMembersDTO){
return ResponseData.generateCreatedResponse(0,classDictService.getSpareMembers(getSpareMembersDTO));
}
@@ -93,4 +95,11 @@ public class ClassDictController {
}
+ @PostMapping("batchSms")
+ @ApiOperation("批量发送班级短信 {id 班级id}")
+ public ResponseVO batchSms(@RequestBody ClassDictDO classDictDO){
+ return ResponseData.generateCreatedResponse(0,classDictService.batchSms(classDictDO));
+ }
+
+
}
diff --git a/src/main/java/com/subsidy/dto/classDict/AddClassDTO.java b/src/main/java/com/subsidy/dto/classDict/AddClassDTO.java
new file mode 100644
index 0000000..4736d2c
--- /dev/null
+++ b/src/main/java/com/subsidy/dto/classDict/AddClassDTO.java
@@ -0,0 +1,11 @@
+package com.subsidy.dto.classDict;
+
+import com.subsidy.model.ClassDictDO;
+import lombok.Data;
+
+@Data
+public class AddClassDTO extends ClassDictDO {
+
+ private Long userId;
+
+}
diff --git a/src/main/java/com/subsidy/mapper/ClassDictMapper.java b/src/main/java/com/subsidy/mapper/ClassDictMapper.java
index bf30e6f..7058b5a 100644
--- a/src/main/java/com/subsidy/mapper/ClassDictMapper.java
+++ b/src/main/java/com/subsidy/mapper/ClassDictMapper.java
@@ -38,5 +38,9 @@ public interface ClassDictMapper extends BaseMapper {
*/
List getSpareMembers(GetSpareMembersDTO getSpareMembersDTO);
+ /**
+ * 查询班级里的学生信息
+ */
+ List classMembers(Long classId);
}
diff --git a/src/main/java/com/subsidy/mapper/CourseDictMapper.java b/src/main/java/com/subsidy/mapper/CourseDictMapper.java
index 0aa8478..750b60f 100644
--- a/src/main/java/com/subsidy/mapper/CourseDictMapper.java
+++ b/src/main/java/com/subsidy/mapper/CourseDictMapper.java
@@ -45,4 +45,5 @@ public interface CourseDictMapper extends BaseMapper {
*/
IPage queryCompanyCourse(IPage page, String courseName, Long categoryId, String courseType, String courseSource,Long companyId);
+
}
diff --git a/src/main/java/com/subsidy/model/ClassDictDO.java b/src/main/java/com/subsidy/model/ClassDictDO.java
index a89a813..ec59e43 100644
--- a/src/main/java/com/subsidy/model/ClassDictDO.java
+++ b/src/main/java/com/subsidy/model/ClassDictDO.java
@@ -39,6 +39,11 @@ public class ClassDictDO extends BaseModel {
private String className;
/**
+ * 班级类型
+ */
+ private String classType;
+
+ /**
* 课程id
*/
private Long courseId;
diff --git a/src/main/java/com/subsidy/service/ClassDictService.java b/src/main/java/com/subsidy/service/ClassDictService.java
index 7719ead..ca6f06b 100644
--- a/src/main/java/com/subsidy/service/ClassDictService.java
+++ b/src/main/java/com/subsidy/service/ClassDictService.java
@@ -1,11 +1,13 @@
package com.subsidy.service;
+import com.subsidy.dto.classDict.AddClassDTO;
import com.subsidy.dto.classDict.AddMemberToClassDTO;
import com.subsidy.dto.classDict.GetAllClassesDTO;
import com.subsidy.dto.classDict.GetSpareMembersDTO;
import com.subsidy.model.ClassDictDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.subsidy.model.ClassMemberMappingDO;
+import com.subsidy.model.CourseDictDO;
import com.subsidy.model.MemberDO;
import com.subsidy.vo.classdict.GetAllClassesVO;
@@ -25,7 +27,7 @@ public interface ClassDictService extends IService {
String deleteClasses(ClassDictDO classDictDO);
- String addClass(ClassDictDO classDictDO);
+ String addClass(AddClassDTO addClassDTO);
String updateClass(ClassDictDO classDictDO);
@@ -37,4 +39,5 @@ public interface ClassDictService extends IService {
String addMemberToClass(AddMemberToClassDTO addMemberToClassDTO);
+ String batchSms(ClassDictDO classDictDO);
}
diff --git a/src/main/java/com/subsidy/service/CourseDictService.java b/src/main/java/com/subsidy/service/CourseDictService.java
index 59f9db7..c345b91 100644
--- a/src/main/java/com/subsidy/service/CourseDictService.java
+++ b/src/main/java/com/subsidy/service/CourseDictService.java
@@ -24,4 +24,5 @@ public interface CourseDictService extends IService {
String updateCourses(CourseDictDO courseDictDO);
IPage queryCompanyCourse(QueryCoursesDTO queryCoursesDTO);
+
}
diff --git a/src/main/java/com/subsidy/service/impl/AdministerServiceImpl.java b/src/main/java/com/subsidy/service/impl/AdministerServiceImpl.java
index 175458b..93e60ca 100644
--- a/src/main/java/com/subsidy/service/impl/AdministerServiceImpl.java
+++ b/src/main/java/com/subsidy/service/impl/AdministerServiceImpl.java
@@ -18,6 +18,11 @@ import com.subsidy.vo.administer.*;
import com.subsidy.vo.classdict.ClassDetailVO;
import com.subsidy.vo.member.ClassSignVO;
import com.subsidy.vo.sign.AnswerRecordVO;
+import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.CellRangeAddress;
@@ -38,6 +43,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
+import java.lang.reflect.Member;
import java.math.BigDecimal;
import java.util.*;
import java.util.zip.ZipEntry;
@@ -233,7 +239,7 @@ public class AdministerServiceImpl extends ServiceImpl vodPlayHistoryDOS = vodPlayHistoryMapper.selectList(new QueryWrapper()
.lambda()
- .eq(VodPlayHistoryDO::getMemberId, classMemberMappingDO.getId())
+ .eq(VodPlayHistoryDO::getMemberId, classMemberMappingDO.getMemberId())
.eq(VodPlayHistoryDO::getVodId, vodDictDO.getId())
.orderByDesc(VodPlayHistoryDO::getPlayRecord));
@@ -242,13 +248,13 @@ public class AdministerServiceImpl extends ServiceImpl 0) {
- if (vodPlayHistoryDOS.get(0).getPlayRecord() < vodDictDO.getVodLength() * 0.8) {
+ if (vodPlayHistoryDOS.get(0).getPlayRecord() >= vodDictDO.getVodLength() * 0.8) {
totalStudyVods++;
}
}
}
}
- classSummaryVO.setStudyVodCounts(MathUtil.intDivCeil(totalStudyVods, vodDictDOS.size()));
+ classSummaryVO.setStudyVodCounts(MathUtil.intDivCeil(totalStudyVods,classMemberMappingDOS.size()));
//平均完成时长 学生观看课程视频的全部时长/总人数
int avg = MathUtil.intDivCeil(totalStudyLength, classMemberMappingDOS.size());
@@ -305,7 +311,7 @@ public class AdministerServiceImpl extends ServiceImpl vodPlayHistoryDOS = vodPlayHistoryMapper.selectList(new QueryWrapper()
@@ -314,24 +320,37 @@ public class AdministerServiceImpl extends ServiceImpl 0) {
if (vodPlayHistoryDOS.get(0).getPlayRecord() > vodDictDO.getVodLength() * 0.8) {
i++;
}
}
+
+ for (VodPlayHistoryDO vodPlayHistoryDO : vodPlayHistoryDOS){
+ playLength += vodPlayHistoryDO.getPlayLength();
+ }
+
}
classDetailVO.setStudyVodCounts(i);
//学生测试完成情况
ExerciseDoneResultDO exerciseDoneResultDO = exerciseDoneResultMapper.selectOne(new QueryWrapper()
.lambda()
- .eq(ExerciseDoneResultDO::getCourseId, classDictDO.getCourseId())
+ .eq(ExerciseDoneResultDO::getClassId, classDictDO.getId())
.eq(ExerciseDoneResultDO::getMemberId, classDetailVO.getId()));
if (null != exerciseDoneResultDO) {
classDetailVO.setRightCounts(exerciseDoneResultDO.getRightCounts());
classDetailVO.setTotalExeCounts(exerciseDoneResultDO.getTotalCounts());
classDetailVO.setScore(MathUtil.intDivFloorPercent(exerciseDoneResultDO.getRightCounts(), exerciseDoneResultDO.getTotalCounts()));
+
+ if (classDetailVO.getScore()>=60){
+ classDetailVO.setResult("合格");
+ }else {
+ classDetailVO.setResult("不合格");
+ }
+
}
classDetailVO.setClassProcess(i+"/"+vodDictDOS.size());
@@ -350,7 +369,7 @@ public class AdministerServiceImpl extends ServiceImpl vodPlayHistoryDOS = vodPlayHistoryMapper.selectList(new QueryWrapper()
@@ -389,17 +408,22 @@ public class AdministerServiceImpl extends ServiceImpl()
.lambda()
- .eq(ExerciseDoneResultDO::getCourseId, classDictDO.getCourseId())
+ .eq(ExerciseDoneResultDO::getClassId, classDictDO.getId())
.eq(ExerciseDoneResultDO::getMemberId, classDetailVO.getId()));
if (null != exerciseDoneResultDO) {
- classDetailVO.setScore(MathUtil.intDivCeil(exerciseDoneResultDO.getRightCounts(), exerciseDoneResultDO.getTotalCounts()));
+ classDetailVO.setScore(MathUtil.intDivFloorPercent(exerciseDoneResultDO.getRightCounts(), exerciseDoneResultDO.getTotalCounts()));
} else {
classDetailVO.setScore(0);
}
@@ -419,14 +443,14 @@ public class AdministerServiceImpl extends ServiceImpl memberList = Arrays.asList(new String[]{"序号", "成员名称", "身份证号码", "账号", "联系方式", "签到次数", "课程进度", "培训时长", "答疑数", "测试成绩", "总评价"});
String studyDate = classDictDO.getStartDate() + " 至 " + classDictDO.getEndDate();
- ExcelUtil.writeMemberExcel(companyDictDO.getCompanyName(), studyDate, courseDictDO.getCourseName(), "授课记录汇总表", classDetailVOS, memberList);
+ ExcelUtil.writeMemberExcel(companyDictDO.getCompanyName(), studyDate, courseDictDO.getCourseName(), "授课记录汇总表", classDetailVOS, ExcelFormatUtils.memberList);
}
return classDetailVOS;
}
@@ -449,7 +473,7 @@ public class AdministerServiceImpl extends ServiceImpl vodPlayHistoryDOS = vodPlayHistoryMapper.selectList(new QueryWrapper()
@@ -463,6 +487,9 @@ public class AdministerServiceImpl extends ServiceImpl vodPlayHistoryDOS = vodPlayHistoryMapper.selectList(new QueryWrapper()
@@ -525,6 +552,9 @@ public class AdministerServiceImpl extends ServiceImpl signList = Arrays.asList(new String[]{"序号", "成员名称", "身份证号码", "手机号码", "培训时长", "课程进度", "完成率", "签到次数", "签到日期"});
String studyDate = classDictDO.getStartDate() + " 至 " + classDictDO.getEndDate();
- ExcelUtil.writeSignExcel(companyDictDO.getCompanyName(), studyDate, courseDictDO.getCourseName(), "注册签到表", classSignVOS, signList);
+ ExcelUtil.writeSignExcel(companyDictDO.getCompanyName(), studyDate, courseDictDO.getCourseName(), "注册签到表", classSignVOS, ExcelFormatUtils.signList);
}
return classSignVOS;
@@ -582,7 +612,7 @@ public class AdministerServiceImpl extends ServiceImpl()
.lambda()
- .eq(ExerciseDoneResultDO::getCourseId, classDictDO.getCourseId())
+ .eq(ExerciseDoneResultDO::getClassId, classDictDO.getId())
.eq(ExerciseDoneResultDO::getMemberId, exerciseTestVO.getId()));
if (null != exerciseDoneResultDO) {
@@ -595,9 +625,12 @@ public class AdministerServiceImpl extends ServiceImpl()
.lambda()
- .eq(ExerciseDoneResultDO::getCourseId, classDictDO.getCourseId())
+ .eq(ExerciseDoneResultDO::getClassId, classDictDO.getId())
.eq(ExerciseDoneResultDO::getMemberId, exerciseTestVO.getId()));
if (null != exerciseDoneResultDO) {
int rights = exerciseDoneResultDO.getRightCounts();
int total = exerciseDoneResultDO.getTotalCounts();
- int score = MathUtil.intDivCeil(rights, total);
+ int score = MathUtil.intDivFloorPercent(rights, total);
exerciseTestVO.setScore(score);
if (score >= 60) {
exerciseTestVO.setResult("合格");
@@ -633,16 +666,15 @@ public class AdministerServiceImpl extends ServiceImpl testList = Arrays.asList(new String[]{"序号", "成员名称", "身份证号码", "手机号码", "测试最高成绩", "测试次数", "总评价"});
String studyDate = classDictDO.getStartDate() + " 至 " + classDictDO.getEndDate();
- ExcelUtil.writeTestExcel(companyDictDO.getCompanyName(), studyDate, courseDictDO.getCourseName(), "测试成绩表", exerciseTestVOS, testList);
+ ExcelUtil.writeTestExcel(companyDictDO.getCompanyName(), studyDate, courseDictDO.getCourseName(), "测试成绩表", exerciseTestVOS, ExcelFormatUtils.scoreList);
}
return exerciseTestVOS;
@@ -662,9 +694,8 @@ public class AdministerServiceImpl extends ServiceImpl answersList = Arrays.asList(new String[]{"序号", "提问", "答疑", "提问时间", "提问成员", "答疑时间"});
String studyDate = classDictDO.getStartDate() + " 至 " + classDictDO.getEndDate();
- ExcelUtil.writeAnswerExcel(companyDictDO.getCompanyName(), studyDate, courseDictDO.getCourseName(), "答疑记录表", answerRecordVOS, answersList);
+ ExcelUtil.writeAnswerExcel(companyDictDO.getCompanyName(), studyDate, courseDictDO.getCourseName(), "答疑记录表", answerRecordVOS, ExcelFormatUtils.answersList);
}
return answerRecordVOS;
}
@@ -689,21 +720,19 @@ public class AdministerServiceImpl extends ServiceImpl memberList = Arrays.asList(new String[]{"序号", "成员名称", "身份证号码", "账号", "联系方式", "签到次数", "课程进度", "培训时长", "答疑数", "测试成绩", "总评价"});
classDetailDTO.setFlag(false);
List classDetailVOS = exportClassDetail(classDetailDTO);
String studyDate = classDictDO.getStartDate() + " 至 " + classDictDO.getEndDate();
- membersListExcel(companyDictDO.getCompanyName(), studyDate, courseDictDO.getCourseName(), "授课记录汇总表", memberList, classDetailVOS, null, 0, baos);
+ membersListExcel(companyDictDO.getCompanyName(), studyDate, courseDictDO.getCourseName(), "授课记录汇总表", ExcelFormatUtils.memberList, classDetailVOS, null, 0, baos);
compressFileToZipStream(zipOutputStream, baos, "member.xlsx");
/**
* 注册签到
*/
ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
- List signList = Arrays.asList(new String[]{"序号", "成员名称", "身份证号码", "手机号码", "培训时长", "课程进度", "完成率", "签到次数", "签到日期"});
classDetailDTO.setFlag(false);
List classSignVOS = exportSignDetail(classDetailDTO);
- signListExcel(companyDictDO.getCompanyName(), studyDate, courseDictDO.getCourseName(), "注册签到", signList, classSignVOS, null, 0, baos1);
+ signListExcel(companyDictDO.getCompanyName(), studyDate, courseDictDO.getCourseName(), "注册签到", ExcelFormatUtils.signList, classSignVOS, null, 0, baos1);
compressFileToZipStream(zipOutputStream, baos1, "sign.xlsx");
@@ -711,10 +740,9 @@ public class AdministerServiceImpl extends ServiceImpl scoreList = Arrays.asList(new String[]{"序号", "成员名称", "身份证号码", "手机号码", "测试最高成绩", "测试次数", "总评价"});
classDetailDTO.setFlag(false);
List exerciseTestVOS = exportExerciseTest(classDetailDTO);
- testListExcel(companyDictDO.getCompanyName(), studyDate, courseDictDO.getCourseName(), "测试成绩", scoreList, exerciseTestVOS, null, 0, baos2);
+ testListExcel(companyDictDO.getCompanyName(), studyDate, courseDictDO.getCourseName(), "测试成绩", ExcelFormatUtils.scoreList, exerciseTestVOS, null, 0, baos2);
compressFileToZipStream(zipOutputStream, baos2, "test.xlsx");
@@ -722,9 +750,8 @@ public class AdministerServiceImpl extends ServiceImpl answerList = Arrays.asList(new String[]{"序号", "提问", "答疑", "提问时间", "提问成员", "答疑时间"});
List answerRecordVOS = exportAnswerRecord(classDetailDTO);
- askListExcel(companyDictDO.getCompanyName(), studyDate, courseDictDO.getCourseName(), "答疑记录", answerList, answerRecordVOS, null, 0, baos3);
+ askListExcel(companyDictDO.getCompanyName(), studyDate, courseDictDO.getCourseName(), "答疑记录", ExcelFormatUtils.answersList, answerRecordVOS, null, 0, baos3);
compressFileToZipStream(zipOutputStream, baos3, "answer.xlsx");
zipOutputStream.flush();
@@ -748,7 +775,11 @@ public class AdministerServiceImpl extends ServiceImpl memberDOS = new ArrayList<>();
+ HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
+ //拼音小写
+ format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+ //不带声调
+ format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
ExcelUtil.readExcel(null, ImportMemberDTO.class, multipartFile).forEach(s -> {
@@ -757,15 +788,32 @@ public class AdministerServiceImpl extends ServiceImpl memberDOS1 = memberMapper.selectList(new QueryWrapper()
+ //.lambda()
+ //.like(MemberDO::getAccountName,accountName)
+ //.orderByDesc(MemberDO::getCreateDate));
+ //if (memberDOS1.size()>0){
+ // MemberDO mem = memberDOS1.get(0);
+ // Integer num = Integer.valueOf(mem.getAccountName().substring(mem.getAccountName().length()-4))+1;
+ // memberDO1.setAccountName(accountName+num);
+ //}else {
+ memberDO1.setAccountName(accountName);
+ //}
+ }catch (BadHanyuPinyinOutputFormatCombination ex) {
+
+ }
+ //memberDO1.setAccountName(s.getAccountName());
memberDO1.setTelephone(s.getTelephone());
memberDO1.setIdCard(s.getIdCard());
memberDO1.setStatus("启用");
+ memberDO1.setPassword("123456");
memberMapper.insert(memberDO1);
//找到该公司最大的部门
@@ -977,7 +1025,7 @@ public class AdministerServiceImpl extends ServiceImpl getAllClasses(ClassDictDO classDictDO) {
return this.baseMapper.getAllClasses(classDictDO);
@@ -50,7 +60,23 @@ public class ClassDictServiceImpl extends ServiceImpl()
+ .lambda()
+ .eq(RoleAdministerMappingDO::getAdministerId,addClassDTO.getUserId())
+ .eq(RoleAdministerMappingDO::getRoleId,1));
+
+ ClassDictDO classDictDO = new ClassDictDO();
+ BeanUtils.copyProperties(addClassDTO,classDictDO);
+
+ if (count>0){
+ classDictDO.setClassType("平台支持");
+ }else{
+ classDictDO.setClassType("企业自建");
+ }
+
this.baseMapper.insert(classDictDO);
return ConstantUtils.ADD_SUCCESS;
}
@@ -89,4 +115,27 @@ public class ClassDictServiceImpl extends ServiceImpl memberDOS = this.baseMapper.classMembers(classDictDO.getId());
+
+ StringBuilder telephone = new StringBuilder();
+ String param = "{\"company\":\""+companyDictDO.getCompanyName()+ "\",course\":\""+courseDictDO.getCourseName()+ "\",\"startDate\":\""+classDictDO1.getStartDate() +"\",\"endDate\":\""+classDictDO1.getEndDate() +"\"}";
+ if (memberDOS.size()>0){
+ for (int i = 0 ;i< memberDOS.size();i++){
+ telephone.append(memberDOS.get(i).getTelephone());
+ if (i!=memberDOS.size()-1){
+ telephone.append(",");
+ }
+ }
+ SMSUtils.sendNoticeSMS("SMS_228117919",telephone.toString(),param);
+ }
+ return ConstantUtils.SUCCESS_SEND_OUT;
+ }
+
}
diff --git a/src/main/java/com/subsidy/service/impl/CourseDictServiceImpl.java b/src/main/java/com/subsidy/service/impl/CourseDictServiceImpl.java
index 091446c..fd7b16e 100644
--- a/src/main/java/com/subsidy/service/impl/CourseDictServiceImpl.java
+++ b/src/main/java/com/subsidy/service/impl/CourseDictServiceImpl.java
@@ -8,15 +8,13 @@ import com.subsidy.dto.course.QueryCoursesDTO;
import com.subsidy.mapper.AdministerMapper;
import com.subsidy.mapper.CompanyDictMapper;
import com.subsidy.mapper.RoleAdministerMappingMapper;
-import com.subsidy.model.AdministerDO;
-import com.subsidy.model.CompanyDictDO;
-import com.subsidy.model.CourseDictDO;
+import com.subsidy.model.*;
import com.subsidy.mapper.CourseDictMapper;
-import com.subsidy.model.RoleAdministerMappingDO;
import com.subsidy.service.CompanyDictService;
import com.subsidy.service.CourseDictService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.util.ConstantUtils;
+import com.subsidy.util.SMSUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -37,12 +35,6 @@ public class CourseDictServiceImpl extends ServiceImpl imple
if (vodPlayHistoryDOS.size()>0){
VodPlayHistoryDO vodPlayHistoryDO = vodPlayHistoryDOS.get(0);
VodDictDO vodDictDO = vodDictMapper.selectById(vodPlayHistoryDO.getVodId());
- BeanUtils.copyProperties(vodDictDO,contentVodNewVO);
- contentVodNewVO.setPlayRecord(vodPlayHistoryDO.getPlayRecord());
+ if (null!=vodDictDO){
+ BeanUtils.copyProperties(vodDictDO,contentVodNewVO);
+ contentVodNewVO.setPlayRecord(vodPlayHistoryDO.getPlayRecord());
+ }
}
return contentVodNewVO;
}
@@ -435,12 +437,21 @@ public class MemberServiceImpl extends ServiceImpl imple
ExerciseDoneResultDO exerciseDoneResultDO = exerciseDoneResultMapper.selectOne(new QueryWrapper()
.lambda()
- .eq(ExerciseDoneResultDO::getCourseId, courseDictDO.getId())
+ .eq(ExerciseDoneResultDO::getClassId, classDictDO.getId())
.eq(ExerciseDoneResultDO::getMemberId, contentMemberDTO.getMemberId()));
if (null != exerciseDoneResultDO) {
getCourseTestVO.setRightCount(String.valueOf(exerciseDoneResultDO.getRightCounts()));
getCourseTestVO.setTotalCount(String.valueOf(exerciseDoneResultDO.getTotalCounts()));
+
+ //正确率
+ Integer percent = MathUtil.intDivFloorPercent(exerciseDoneResultDO.getRightCounts(),exerciseDoneResultDO.getTotalCounts());
+ if(percent>=60){
+ getCourseTestVO.setResult("合格");
+ }else {
+ getCourseTestVO.setResult("不合格");
+ }
+ getCourseTestVO.setPercent(String.valueOf(percent));
} else {
getCourseTestVO.setRightCount("-");
//该课程下有多少习题
@@ -448,6 +459,8 @@ public class MemberServiceImpl extends ServiceImpl imple
.lambda()
.eq(ExerciseDictDO::getCourseId, courseDictDO.getId()));
getCourseTestVO.setTotalCount(String.valueOf(count));
+ getCourseTestVO.setPercent("-");
+ getCourseTestVO.setResult("不合格");
}
return getCourseTestVO;
}
@@ -459,7 +472,7 @@ public class MemberServiceImpl extends ServiceImpl imple
MemberDO memberDO1 = this.baseMapper.selectById(memberDO.getId());
//第几天
- long diff = Duration.between(LocalDateTime.now(), memberDO1.getCreateDate()).toDays();
+ long diff = Duration.between(memberDO1.getCreateDate(),LocalDateTime.now()).toDays();
getStudyInfoVO.setDiff(diff);
//已学课程
diff --git a/src/main/java/com/subsidy/service/impl/SignInRecordServiceImpl.java b/src/main/java/com/subsidy/service/impl/SignInRecordServiceImpl.java
index 68947a7..8459e40 100644
--- a/src/main/java/com/subsidy/service/impl/SignInRecordServiceImpl.java
+++ b/src/main/java/com/subsidy/service/impl/SignInRecordServiceImpl.java
@@ -65,11 +65,11 @@ public class SignInRecordServiceImpl extends ServiceImpl classDictDOS = classMemberMappingMapper.getMemberClass(signInRecordDO.getMemberId());
this.baseMapper.delete(new QueryWrapper()
- .lambda()
- .eq(SignInRecordDO::getMemberId,signInRecordDO.getMemberId())
- .gt(SignInRecordDO::getSignInDate, LocalDate.now()));
+ .lambda()
+ .eq(SignInRecordDO::getMemberId, signInRecordDO.getMemberId())
+ .gt(SignInRecordDO::getSignInDate, LocalDate.now()));
- for (ClassDictDO classDictDO : classDictDOS){
+ for (ClassDictDO classDictDO : classDictDOS) {
SignInRecordDO signInRecordDO1 = new SignInRecordDO();
signInRecordDO1.setClassId(classDictDO.getId());
signInRecordDO1.setMemberId(signInRecordDO.getMemberId());
@@ -84,15 +84,15 @@ public class SignInRecordServiceImpl extends ServiceImpl classSignInfoVOIPage = this.baseMapper.classSignInfo(pager, classSignInfoDTO.getClassName(), classSignInfoDTO.getCourseName(),classSignInfoDTO.getCompanyId());
+ IPage classSignInfoVOIPage = this.baseMapper.classSignInfo(pager, classSignInfoDTO.getClassName(), classSignInfoDTO.getCourseName(), classSignInfoDTO.getCompanyId());
List classSignInfoVOS = classSignInfoVOIPage.getRecords();
- for (ClassSignInfoVO classSignInfoVO : classSignInfoVOS){
+ for (ClassSignInfoVO classSignInfoVO : classSignInfoVOS) {
//班级人数
List classMemberMappingDOS = classMemberMappingMapper.selectList(new QueryWrapper()
- .lambda()
- .eq(ClassMemberMappingDO::getClassId,classSignInfoVO.getClassId()));
+ .lambda()
+ .eq(ClassMemberMappingDO::getClassId, classSignInfoVO.getClassId()));
classSignInfoVO.setMemberCount(classMemberMappingDOS.size());
@@ -103,29 +103,29 @@ public class SignInRecordServiceImpl extends ServiceImpl vodPlayHistoryDOS = vodPlayHistoryMapper.selectList(new QueryWrapper()
.lambda()
- .eq(VodPlayHistoryDO::getMemberId, classMemberMappingDO.getId())
+ .eq(VodPlayHistoryDO::getMemberId, classMemberMappingDO.getMemberId())
.eq(VodPlayHistoryDO::getVodId, vodDictDO.getId())
.orderByDesc(VodPlayHistoryDO::getPlayRecord));
- for (VodPlayHistoryDO vodPlayHistoryDO : vodPlayHistoryDOS){
- totalStudyLength+=vodPlayHistoryDO.getPlayLength();
+ for (VodPlayHistoryDO vodPlayHistoryDO : vodPlayHistoryDOS) {
+ totalStudyLength += vodPlayHistoryDO.getPlayLength();
}
if (vodPlayHistoryDOS.size() > 0) {
- if (vodPlayHistoryDOS.get(0).getPlayRecord() > vodDictDO.getVodLength() * 0.8) {
+ if (vodPlayHistoryDOS.get(0).getPlayRecord() >= vodDictDO.getVodLength() * 0.8) {
totalStudyVods++;
}
}
}
}
- classSignInfoVO.setStudyVodCounts(MathUtil.intDivFloorPercent(totalStudyVods, vodDictDOS.size()));
+ classSignInfoVO.setStudyVodCounts(MathUtil.intDivCeil(totalStudyVods, classMemberMappingDOS.size() ));
//平均完成时长 学生观看课程视频的全部时长/总人数
- int avg = MathUtil.intDivCeil(totalStudyLength,classMemberMappingDOS.size());
+ int avg = MathUtil.intDivCeil(totalStudyLength, classMemberMappingDOS.size());
classSignInfoVO.setAvgVodPlayLength(avg);
//测试通过率
@@ -136,19 +136,19 @@ public class SignInRecordServiceImpl extends ServiceImpl exerciseDoneResultDO.getTotalCounts()*0.6){
+ if (exerciseDoneResultDO.getRightCounts() > exerciseDoneResultDO.getTotalCounts() * 0.6) {
passNum++;
}
}
- classSignInfoVO.setPassRate(MathUtil.intDivFloorPercent(passNum,classMemberMappingDOS.size()));
+ classSignInfoVO.setPassRate(MathUtil.intDivFloorPercent(passNum, classMemberMappingDOS.size()));
//平均签到数 向上取整
//签到总次数
Integer signCount = this.baseMapper.selectCount(new QueryWrapper()
.lambda()
- .eq(SignInRecordDO::getClassId,classSignInfoVO.getClassId()));
- classSignInfoVO.setAvgSignCount(MathUtil.intDivCeil(signCount,classMemberMappingDOS.size()));
+ .eq(SignInRecordDO::getClassId, classSignInfoVO.getClassId()));
+ classSignInfoVO.setAvgSignCount(MathUtil.intDivCeil(signCount, classMemberMappingDOS.size()));
//答疑数
Integer count = answeringQuestionMapper.selectCount(new QueryWrapper()
@@ -162,7 +162,7 @@ public class SignInRecordServiceImpl extends ServiceImpl classDictDOS = classMemberMappingMapper.getMemberClass(signInRecordDO.getMemberId());
-
- for (ClassDictDO classDictDO : classDictDOS){
+ for (ClassDictDO classDictDO : classDictDOS) {
Integer count = this.baseMapper.selectCount(new QueryWrapper()
- .lambda()
- .eq(SignInRecordDO::getClassId,classDictDO.getId())
- .eq(SignInRecordDO::getMemberId,signInRecordDO.getMemberId())
- .gt(SignInRecordDO::getSignInDate,LocalDate.now()));
+ .lambda()
+ .eq(SignInRecordDO::getClassId, classDictDO.getId())
+ .eq(SignInRecordDO::getMemberId, signInRecordDO.getMemberId())
+ .gt(SignInRecordDO::getSignInDate, LocalDate.now()));
- if (count == 0 ){
+ if (count == 0) {
flag = false;
}
diff --git a/src/main/java/com/subsidy/util/ConstantUtils.java b/src/main/java/com/subsidy/util/ConstantUtils.java
index 72603a6..2acfc09 100644
--- a/src/main/java/com/subsidy/util/ConstantUtils.java
+++ b/src/main/java/com/subsidy/util/ConstantUtils.java
@@ -44,6 +44,8 @@ public class ConstantUtils {
public static final String NOTICE_NAME = "有课进度通知";
+ public static final String TECH_NAME = "有课互联科技";
+
public static final String PUBLISH_SUCCESS = "发布成功";
public static final String LOGIN_OUT ="登出成功";
diff --git a/src/main/java/com/subsidy/util/ExcelFormatUtils.java b/src/main/java/com/subsidy/util/ExcelFormatUtils.java
new file mode 100644
index 0000000..4c8a077
--- /dev/null
+++ b/src/main/java/com/subsidy/util/ExcelFormatUtils.java
@@ -0,0 +1,17 @@
+package com.subsidy.util;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class ExcelFormatUtils {
+
+
+ public static final List memberList = Arrays.asList(new String[]{"序号", "成员名称", "身份证号码", "账号", "联系方式", "签到次数", "课程进度", "培训时长", "答疑数", "测试成绩", "总评价"});
+
+ public static final List signList = Arrays.asList(new String[]{"序号", "成员名称", "身份证号码", "手机号码", "培训时长", "课程进度", "完成率", "签到次数", "签到日期"});
+
+ public static final List scoreList = Arrays.asList(new String[]{"序号", "成员名称", "身份证号码", "手机号码", "测试最高成绩", "测试次数", "总评价"});
+
+ public static final List answersList = Arrays.asList(new String[]{"序号", "提问", "答疑", "提问时间", "提问成员", "答疑时间"});
+
+}
diff --git a/src/main/java/com/subsidy/util/MathUtil.java b/src/main/java/com/subsidy/util/MathUtil.java
index 30f4816..26e07a4 100644
--- a/src/main/java/com/subsidy/util/MathUtil.java
+++ b/src/main/java/com/subsidy/util/MathUtil.java
@@ -89,12 +89,13 @@ public class MathUtil {
return counts.multiply(new BigDecimal(100)).divide(total, RoundingMode.CEILING).stripTrailingZeros().toPlainString() + "%";
}
}
+
//百分比 不带%输出
public static String getPercentAvgIndexWithPercent(BigDecimal counts, BigDecimal total) {
if (BigDecimal.ZERO.equals(total) || BigDecimal.ZERO.equals(counts)) {
return "0";
} else {
- return counts.multiply(new BigDecimal(100)).divide(total,2,BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString();
+ return counts.multiply(new BigDecimal(100)).divide(total, 2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString();
}
}
@@ -103,7 +104,7 @@ public class MathUtil {
if (BigDecimal.ZERO.equals(total) || BigDecimal.ZERO.equals(counts)) {
return "0";
} else {
- return counts.multiply(new BigDecimal(100)).divide(total,2,BigDecimal.ROUND_CEILING).stripTrailingZeros().toPlainString();
+ return counts.multiply(new BigDecimal(100)).divide(total, 2, BigDecimal.ROUND_CEILING).stripTrailingZeros().toPlainString();
}
}
@@ -124,7 +125,7 @@ public class MathUtil {
return (int) Math.floor((double) a * 100 / b);
}
- public static Integer getRandomNum(Integer i){
+ public static Integer getRandomNum(Integer i) {
Random random = new Random();
return random.nextInt(i);
}
@@ -134,4 +135,36 @@ public class MathUtil {
// System.out.println(getRandomNum(2));
// }
// }
+
+ public static String secToTime(int time) {
+ String timeStr = null;
+ int hour = 0;
+ int minute = 0;
+ int second = 0;
+ if (time <= 0) {
+ return "00:00";
+ } else {
+ minute = time / 60;
+ if (minute < 60) {
+ second = time % 60;
+ timeStr = unitFormat(minute) + ":" + unitFormat(second);
+ } else {
+ hour = minute / 60;
+ minute = minute % 60;
+ second = time - hour * 3600 - minute * 60;
+ timeStr = unitFormat(hour) + ":" + unitFormat(minute) + ":" + unitFormat(second);
+ }
+ }
+ return timeStr;
+ }
+
+ public static String unitFormat(int i) {
+ String retStr = null;
+ if (i >= 0 && i < 10) {
+ retStr = "0" + Integer.toString(i);
+ } else {
+ retStr = "" + i;
+ }
+ return retStr;
+ }
}
diff --git a/src/main/java/com/subsidy/util/SMSUtils.java b/src/main/java/com/subsidy/util/SMSUtils.java
index 7772f13..e038dd6 100644
--- a/src/main/java/com/subsidy/util/SMSUtils.java
+++ b/src/main/java/com/subsidy/util/SMSUtils.java
@@ -11,6 +11,11 @@ import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.subsidy.common.configure.AliyunSmsProperties;
import com.subsidy.common.exception.HttpException;
+import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -110,7 +115,7 @@ public class SMSUtils {
request.setSysAction("SendSms");
request.putQueryParameter("RegionId",ConstantUtils.REGION_ID);
request.putQueryParameter("PhoneNumbers",telephone);
- request.putQueryParameter("SignName",ConstantUtils.NOTICE_NAME);
+ request.putQueryParameter("SignName",ConstantUtils.TECH_NAME);
request.putQueryParameter("TemplateCode",templateId);
// if (StringUtils.isEmpty(param)){
// request.putQueryParameter("TemplateParam","{ \"code\":\""+verifyCode +"\"}");
@@ -131,9 +136,22 @@ public class SMSUtils {
}
}
- public static void main(String[] args) {
- String param = "{ \"company\":\""+"基金会"+ "\",\"time\":\""+"2020-01-02" +"\",\"address\":\""+"上海市" +"\"}";
- sendNoticeSMS("SMS_215336604","15201936167",param);
+ //public static void main(String[] args) {
+ // String param = "{ \"course\":\""+"语文课"+ "\",\"time\":\""+"2020-01-02" +"\",\"address\":\""+"上海市" +"\"}";
+ // sendNoticeSMS("SMS_215336604","15201936167,18201963812",param);
+ //}
+
+ public static void main(String[] args) throws BadHanyuPinyinOutputFormatCombination {
+ HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
+ //拼音小写
+ format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+ //不带声调
+ format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+
+ //format.setVCharType();
+ //要转换的中文,格式,转换之后的拼音的分隔符,遇到不能转换的是否保留 wo,shi,zhong,guo,ren,,hello
+ System.out.println(PinyinHelper.toHanYuPinyinString("我是中国人", format, "", false));
}
+
}
diff --git a/src/main/java/com/subsidy/util/excel/ExcelUtil.java b/src/main/java/com/subsidy/util/excel/ExcelUtil.java
index 3efb47d..81d85ce 100644
--- a/src/main/java/com/subsidy/util/excel/ExcelUtil.java
+++ b/src/main/java/com/subsidy/util/excel/ExcelUtil.java
@@ -267,7 +267,7 @@ public class ExcelUtil {
titleFont.setBoldweight((short) 700);
titleStyle.setFont(titleFont);
- //第二行
+ //第二行/第三行样式
CellStyle secondStyle = workbook.createCellStyle();
secondStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
secondStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
@@ -277,16 +277,6 @@ public class ExcelUtil {
Font secondFont = workbook.createFont();
secondStyle.setFont(secondFont);
- //第三行
- CellStyle thirdStyle = workbook.createCellStyle();
- thirdStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
- thirdStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
- thirdStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
- thirdStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
- secondStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
- Font thirdFont = workbook.createFont();
- thirdStyle.setFont(thirdFont);
-
// 列头样式
CellStyle headerStyle = workbook.createCellStyle();
setStyle(headerStyle);
@@ -384,10 +374,10 @@ public class ExcelUtil {
sheet.addMergedRegion(cellRangeAddress32);
setBorderStyle(HSSFCellStyle.BORDER_THIN, cellRangeAddress32, sheet, workbook); //给合并过的单元格加边框
thirdRow.createCell(0).setCellValue(thirdHead[0]);
- thirdRow.getCell(0).setCellStyle(thirdStyle);
+ thirdRow.getCell(0).setCellStyle(secondStyle);
thirdRow.createCell(5).setCellValue(thirdHead[1]);
- thirdRow.getCell(5).setCellStyle(thirdStyle);
+ thirdRow.getCell(5).setCellStyle(secondStyle);
//标题 3
SXSSFRow headerRow = sheet.createRow(3); //列头 rowIndex =1
@@ -444,7 +434,7 @@ public class ExcelUtil {
newCell = dataRow.createCell(7);
newCell.setCellStyle(cellStyle);
- newCell.setCellValue(classDetailVO.getTrainingLength());
+ newCell.setCellValue(classDetailVO.getTrainingLengthStr());
newCell = dataRow.createCell(8);
newCell.setCellStyle(cellStyle);
@@ -660,7 +650,7 @@ public class ExcelUtil {
newCell = dataRow.createCell(4);
newCell.setCellStyle(cellStyle);
- newCell.setCellValue(classSignVO.getTrainingLength());
+ newCell.setCellValue(classSignVO.getTrainingLengthStr());
newCell = dataRow.createCell(5);
newCell.setCellStyle(cellStyle);
diff --git a/src/main/java/com/subsidy/vo/administer/ExerciseTestVO.java b/src/main/java/com/subsidy/vo/administer/ExerciseTestVO.java
index 17e1c5b..24114d9 100644
--- a/src/main/java/com/subsidy/vo/administer/ExerciseTestVO.java
+++ b/src/main/java/com/subsidy/vo/administer/ExerciseTestVO.java
@@ -24,4 +24,5 @@ public class ExerciseTestVO {
private String telephone;
+ private Integer count;
}
diff --git a/src/main/java/com/subsidy/vo/classdict/ClassDetailVO.java b/src/main/java/com/subsidy/vo/classdict/ClassDetailVO.java
index 8f607c7..8132f30 100644
--- a/src/main/java/com/subsidy/vo/classdict/ClassDetailVO.java
+++ b/src/main/java/com/subsidy/vo/classdict/ClassDetailVO.java
@@ -4,7 +4,7 @@ import com.subsidy.util.excel.ExcelColumn;
import lombok.Data;
@Data
-public class ClassDetailVO {
+public class ClassDetailVO{
private Long id;
@@ -40,9 +40,12 @@ public class ClassDetailVO {
@ExcelColumn(col = 6,value = "课程进度")
private String classProcess;
- @ExcelColumn(col = 7,value = "培训时长")
private Integer trainingLength;
+ @ExcelColumn(col = 7,value = "培训时长")
+ private String trainingLengthStr;
+
+
/**
* 作对个数
*/
@@ -66,7 +69,7 @@ public class ClassDetailVO {
private Integer askCounts;
-
+ private String result;
diff --git a/src/main/java/com/subsidy/vo/classdict/GetAllClassesVO.java b/src/main/java/com/subsidy/vo/classdict/GetAllClassesVO.java
index dcd7fab..29cd7a5 100644
--- a/src/main/java/com/subsidy/vo/classdict/GetAllClassesVO.java
+++ b/src/main/java/com/subsidy/vo/classdict/GetAllClassesVO.java
@@ -19,4 +19,6 @@ public class GetAllClassesVO {
private Integer cnt;
+ private String classType;
+
}
diff --git a/src/main/java/com/subsidy/vo/member/ClassSignVO.java b/src/main/java/com/subsidy/vo/member/ClassSignVO.java
index cbc8204..9390669 100644
--- a/src/main/java/com/subsidy/vo/member/ClassSignVO.java
+++ b/src/main/java/com/subsidy/vo/member/ClassSignVO.java
@@ -29,9 +29,11 @@ public class ClassSignVO {
/**
* 培训时长
*/
- @ExcelColumn(col = 4,value = "培训时长")
private Integer trainingLength;
+ @ExcelColumn(col = 4,value = "培训时长")
+ private String trainingLengthStr;
+
/**
* 已看视频
*/
diff --git a/src/main/java/com/subsidy/vo/member/GetCourseTestVO.java b/src/main/java/com/subsidy/vo/member/GetCourseTestVO.java
index b324245..05d6c00 100644
--- a/src/main/java/com/subsidy/vo/member/GetCourseTestVO.java
+++ b/src/main/java/com/subsidy/vo/member/GetCourseTestVO.java
@@ -15,4 +15,8 @@ public class GetCourseTestVO {
private String deadline;
+ private String result;
+
+ private String percent;
+
}
diff --git a/src/main/java/com/subsidy/vo/sign/ClassSignInfoVO.java b/src/main/java/com/subsidy/vo/sign/ClassSignInfoVO.java
index 1480ef4..91a0d04 100644
--- a/src/main/java/com/subsidy/vo/sign/ClassSignInfoVO.java
+++ b/src/main/java/com/subsidy/vo/sign/ClassSignInfoVO.java
@@ -53,5 +53,8 @@ public class ClassSignInfoVO {
*/
private Integer answerCount;
+ private String classType;
+
+
}
diff --git a/src/main/resources/mapper/AnsweringQuestionMapper.xml b/src/main/resources/mapper/AnsweringQuestionMapper.xml
index 7e11dfa..efd56ac 100644
--- a/src/main/resources/mapper/AnsweringQuestionMapper.xml
+++ b/src/main/resources/mapper/AnsweringQuestionMapper.xml
@@ -41,7 +41,7 @@
and t.ask_id = #{memberId}
- order by t.create_date
+ order by t.create_date desc
diff --git a/src/main/resources/mapper/ClassDictMapper.xml b/src/main/resources/mapper/ClassDictMapper.xml
index 7cc0d76..7d84003 100644
--- a/src/main/resources/mapper/ClassDictMapper.xml
+++ b/src/main/resources/mapper/ClassDictMapper.xml
@@ -30,7 +30,8 @@
t2.course_name,
t.start_date,
t.end_date,
- t4.cnt
+ t4.cnt,
+ t.class_type
FROM
class_dict t
LEFT JOIN course_dict t2 ON t.course_id = t2.id
@@ -76,7 +77,7 @@
AND t3.company_id = #{companyId}
AND t2.id NOT IN (
SELECT
- t3.id
+ t3.member_id
FROM
class_member_mapping t3
WHERE
@@ -84,4 +85,16 @@
AND t3.class_id = #{classId})
+
+
diff --git a/src/main/resources/mapper/CourseDictMapper.xml b/src/main/resources/mapper/CourseDictMapper.xml
index 77a179b..f4f8fbf 100644
--- a/src/main/resources/mapper/CourseDictMapper.xml
+++ b/src/main/resources/mapper/CourseDictMapper.xml
@@ -115,4 +115,7 @@
AND t.company_id = #{companyId}
+
+
+
diff --git a/src/main/resources/mapper/SignInRecordMapper.xml b/src/main/resources/mapper/SignInRecordMapper.xml
index 44d82ef..59b954b 100644
--- a/src/main/resources/mapper/SignInRecordMapper.xml
+++ b/src/main/resources/mapper/SignInRecordMapper.xml
@@ -23,16 +23,17 @@