Compare commits

..

38 Commits

Author SHA1 Message Date
Wangxxz
6532cf75e3 修改方法名称 2024-12-13 14:33:25 +08:00
Wangxxz
ad357a61b7 修改方法名称 2024-12-13 14:17:48 +08:00
Wangxxz
ffe232eeb9 注释同步在线课评分 2024-12-12 11:25:28 +08:00
Wangxxz
f273e9df4a 加bean字段 2024-12-03 10:22:43 +08:00
Wangxxz
aab82de81b 加bean字段 2024-12-03 10:01:31 +08:00
Wangxxz
af6efd3151 统一讲师查询 还原 2024-11-26 13:22:17 +08:00
Wangxxz
c724080a3c 统一讲师查询 2024-11-26 11:24:17 +08:00
Wangxxz
aa63a6618f 统一讲师查询 2024-11-26 11:20:50 +08:00
Wangxxz
d3fcbaeab6 统一案例接口 2024-11-26 09:26:44 +08:00
Wangxxz
82bf84bbaa 未开课在线课同步 2024-11-22 11:30:14 +08:00
Wangxxz
3f59552c2e 提交 2024-11-16 10:21:12 +08:00
Wangxxz
e0d731e296 更改在线课状态 2024-11-09 16:52:07 +08:00
Wangxxz
f5c26d02d1 更改在线课状态 2024-11-09 16:51:34 +08:00
Wangxxz
0e74f11615 同步授课记录评分 2024-11-03 17:07:14 +08:00
Wangxxz
3559553484 同步授课记录评分 2024-11-03 16:55:53 +08:00
Wangxxz
9faa8307ee 删除时同步授课记录学员数 2024-11-03 16:08:53 +08:00
Wangxxz
1a6c8f8af9 在线课同步授课记录 2024-11-01 15:05:55 +08:00
Wangxxz
f1b96c8af9 创建在线课授课记录 2024-11-01 11:51:06 +08:00
nisen
5b691c5bb8 Merge branch 'master' into yx-master 2024-11-01 10:46:34 +08:00
yang
b0f01c6300 取消定时任务 2024-10-27 18:08:39 +08:00
nisen
e51d4dd8cb 视频请求头解析时间对比注释 2024-10-24 19:29:42 +08:00
zhaolongfei
ea1cda25bd 删除报名信息添加日志 2024-10-24 16:22:51 +08:00
zhaolongfei
3d3e660e68 在线课多目录重复学习记录问题修复 2024-10-22 16:49:23 +08:00
zhaolongfei
b509b783a1 视频解析添加日志 2024-10-21 14:04:52 +08:00
Wangxxz
bbda82b8f5 还原-讲师管理-查询讲师时加启用条件判断 2024-10-20 14:25:48 +08:00
Wangxxz
fec28f5baf 讲师管理-查询讲师时加启用条件判断 2024-10-20 14:24:04 +08:00
nisen
469145d25c Merge remote-tracking branch 'yx/master-0930' 2024-10-09 18:53:40 +08:00
yang
25d8594a2b 案例,bug 2024-10-09 18:52:23 +08:00
nisen
3001c25590 Merge remote-tracking branch '104/master' 2024-10-09 17:48:11 +08:00
nisen
95b63155cd Merge branch 'zcwy0927-yang-random' 2024-10-09 17:46:52 +08:00
nisen
0e897b5f14 Merge remote-tracking branch 'yx/master-0930' into 104-master 2024-10-08 20:18:33 +08:00
yang
39e336d044 案例bug修复 2024-10-08 20:17:08 +08:00
nisen
4ef1b5b1e9 Merge branch 'zcwy0912-llf' into 104-master 2024-09-30 12:02:11 +08:00
Wangxxz
33df8b0831 加判断 2024-09-30 11:57:55 +08:00
nisen
b61923233a Merge branch 'zcwy0912-llf' 2024-09-30 11:52:29 +08:00
Wangxxz
effb45c6d0 加判断 2024-09-30 11:51:47 +08:00
nisen
95aa5f7abe Merge branch 'zcwy0912-llf' 2024-09-30 10:43:13 +08:00
zhaolongfei
3af3c2eedf 考试随机试题功能修改 2024-09-29 11:17:00 +08:00
21 changed files with 256 additions and 64 deletions

View File

@@ -5,6 +5,8 @@ import cn.hutool.core.lang.Opt;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.xboe.api.vo.*; import com.xboe.api.vo.*;
import com.xboe.module.course.dto.CourseParam;
import com.xboe.module.course.dto.ScoreParam;
import com.xboe.module.course.vo.StudyCourseVo; import com.xboe.module.course.vo.StudyCourseVo;
import com.xboe.module.course.vo.TeacherInfoVo; import com.xboe.module.course.vo.TeacherInfoVo;
import com.xboe.module.course.vo.TeacherVo; import com.xboe.module.course.vo.TeacherVo;
@@ -72,6 +74,16 @@ public class ThirdApi {
@Value("${userBasic.getUserBasicInfo}") @Value("${userBasic.getUserBasicInfo}")
private String getUserBasicInfo; private String getUserBasicInfo;
@Value("${coursesuilt.updateOrSaveCourse}")
private String updateOrSaveCourse;
@Value("${coursesuilt.syncCourseStudent}")
private String syncCourseStudent;
@Value("${coursesuilt.syncOnLineScore}")
private String syncOnLineScore;
@Value("${coursesuilt.updateOnLineStatus}")
private String updateOnLineStatus;
//获取例外人员的id //获取例外人员的id
public List<String> getUserId(){ public List<String> getUserId(){
String responseBody = Optional.ofNullable(HttpRequest.get(infarasApiUrl+"?pid=316&type=1").execute() //prod 316 String responseBody = Optional.ofNullable(HttpRequest.get(infarasApiUrl+"?pid=316&type=1").execute() //prod 316
@@ -302,4 +314,31 @@ public class ThirdApi {
return basicInfos; return basicInfos;
} }
public void updateOrSaveCourse(CourseParam param, String token){
log.info("---------------准备同步在线课到讲师管理完毕 ------- param " + param);
String resp = Optional.ofNullable(
HttpRequest.post(updateOrSaveCourse).body(JSONUtil.toJsonStr(param)).header("token", token).execute()
.body()).orElseThrow(() -> new RuntimeException("token校验失败"));
log.info("updateOrSaveCourse = " + resp);
}
public void syncCourseStudent(Long courseId, String token){
String resp = Optional.ofNullable(
HttpRequest.post(syncCourseStudent).body(JSONUtil.toJsonStr(courseId)).header("token", token).execute()
.body()).orElseThrow(() -> new RuntimeException("token校验失败"));
log.info("syncCourseStudent = " + resp);
}
public void syncOnLineScore(ScoreParam param, String token) {
String resp = Optional.ofNullable(
HttpRequest.post(syncOnLineScore).body(JSONUtil.toJsonStr(param)).header("token", token).execute()
.body()).orElseThrow(() -> new RuntimeException("token校验失败"));
log.info("syncOnLineScore = " + resp);
}
public void updateOnLineStatus(CourseParam param, String token){
String resp = Optional.ofNullable(
HttpRequest.post(updateOnLineStatus).body(JSONUtil.toJsonStr(param)).header("token", token).execute()
.body()).orElseThrow(() -> new RuntimeException("token校验失败"));
log.info("updateOrSaveCourse = " + resp);
}
} }

View File

@@ -15,7 +15,7 @@ public class CaseScheduledTasks {
/** /**
* 每月的第一天的1:00执行 * 每月的第一天的1:00执行
*/ */
@Scheduled(cron = "0 0 1 1 * ?") // @Scheduled(cron = "0 0 1 1 * ?")
public void refreshViewsRankOfMajor() { public void refreshViewsRankOfMajor() {
casesService.refreshViewsRankOfMajor(); casesService.refreshViewsRankOfMajor();
} }

View File

@@ -44,6 +44,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Array; import java.lang.reflect.Array;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.YearMonth;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters; import java.time.temporal.TemporalAdjusters;
import java.util.*; import java.util.*;
@@ -1203,15 +1204,15 @@ public class CasesServiceImpl implements ICasesService {
} }
//获取案例当月排名 //获取案例当月排名
// String sql =
// "SELECT bc.id,bcmt.major_id,bc.views - COALESCE(bc.last_month_views, 0) AS increment\n" +
// "FROM boe_cases bc\n" +
// "JOIN boe_cases_major_type bcmt ON bcmt.case_id = bc.id and bc.deleted=0 and file_path is not null and file_path!='' and bc.views - COALESCE(bc.last_month_views, 0)!=0";
String sql = String sql =
"SELECT bc.id,bcmt.major_id,bc.views AS increment\n" + "SELECT bc.id,bcmt.major_id,bc.views - COALESCE(bc.last_month_views, 0) AS increment\n" +
"FROM boe_cases bc\n" + "FROM boe_cases bc\n" +
"JOIN boe_cases_major_type bcmt ON bcmt.case_id = bc.id and bc.deleted=0 and file_path is not null and file_path!='' and bc.views !=0 and bc.views is not null"; "JOIN boe_cases_major_type bcmt ON bcmt.case_id = bc.id and bc.deleted=0 and file_path is not null and file_path!='' and bc.views - COALESCE(bc.last_month_views, 0)!=0";
// String sql =
// "SELECT bc.id,bcmt.major_id,bc.views AS increment\n" +
// "FROM boe_cases bc\n" +
// "JOIN boe_cases_major_type bcmt ON bcmt.case_id = bc.id and bc.deleted=0 and file_path is not null and file_path!='' and bc.views !=0 and bc.views is not null";
List<Object> caseListOfObject = casesDao.sqlFindList(sql); List<Object> caseListOfObject = casesDao.sqlFindList(sql);
@@ -1299,8 +1300,8 @@ public class CasesServiceImpl implements ICasesService {
pageSize = 10; pageSize = 10;
} }
LocalDateTime startTime = month.withDayOfMonth(1); LocalDateTime startTime = month.withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0);
LocalDateTime endTime = month.plusMonths(1).withDayOfMonth(1).withMinute(0); LocalDateTime endTime = YearMonth.from(month).atEndOfMonth().atTime(23, 59, 59);
List<HashMap<String, Object>> popularityOfMajor = casesRankDao.findPopularityOfMajor(pageSize, startTime, endTime, majorId); List<HashMap<String, Object>> popularityOfMajor = casesRankDao.findPopularityOfMajor(pageSize, startTime, endTime, majorId);
List<String> caseIdList = popularityOfMajor.stream().map(map -> map.get("caseId").toString()).collect(Collectors.toList()); List<String> caseIdList = popularityOfMajor.stream().map(map -> map.get("caseId").toString()).collect(Collectors.toList());

View File

@@ -5,7 +5,10 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import com.xboe.api.ThirdApi;
import com.xboe.module.course.dto.CourseParam;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@@ -55,6 +58,9 @@ public class CourseAuditApi extends ApiBaseController{
@Resource @Resource
private ICourseContentService ccontentService; private ICourseContentService ccontentService;
@Resource
private ThirdApi thirdApi;
/** /**
* 教师需要审核的课程 * 教师需要审核的课程
@@ -315,7 +321,7 @@ public class CourseAuditApi extends ApiBaseController{
* @return * @return
*/ */
@PostMapping("/hrbp-submit-audit") @PostMapping("/hrbp-submit-audit")
public JsonResponse<Boolean> hrbpAudit(String auditId,String courseId,String title,Boolean pass,String remark){ public JsonResponse<Boolean> hrbpAudit(String auditId,String courseId,String title,Boolean pass,String remark, HttpServletRequest request){
if(StringUtils.isBlank(auditId)){ if(StringUtils.isBlank(auditId)){
return badRequest("参数错误"); return badRequest("参数错误");
} }
@@ -347,6 +353,14 @@ public class CourseAuditApi extends ApiBaseController{
try { try {
CurrentUser cu=getCurrent(); CurrentUser cu=getCurrent();
service.hrbpSubmitAudit(auditId, courseId,open, pass,cu.getAccountId(),cu.getName(), remark); service.hrbpSubmitAudit(auditId, courseId,open, pass,cu.getAccountId(),cu.getName(), remark);
if (pass){
//修改在线课开课状态=已开课
String token = request.getHeader("Xboe-Access-Token");
CourseParam param = new CourseParam();
param.setId(courseId);
thirdApi.updateOnLineStatus(param,token);
}
return success(true); return success(true);
} catch (Exception e) { } catch (Exception e) {
log.error("HRBP审核提交处理错误",e); log.error("HRBP审核提交处理错误",e);
@@ -378,7 +392,8 @@ public class CourseAuditApi extends ApiBaseController{
*/ */
@PostMapping("/submit-publish") @PostMapping("/submit-publish")
@AutoLog(module = "课程",action = "默认管理员提交发布",info = "") @AutoLog(module = "课程",action = "默认管理员提交发布",info = "")
public JsonResponse<Boolean> submitAndPublish(@RequestBody CourseFullDto dto){ public JsonResponse<Boolean> submitAndPublish(@RequestBody CourseFullDto dto, HttpServletRequest request){
log.info("---------------提交并直接发布,用于默认管理直接操作 -------");
if(dto.getCourse()==null){ if(dto.getCourse()==null){
return badRequest("无课程信息"); return badRequest("无课程信息");
} }
@@ -402,12 +417,22 @@ public class CourseAuditApi extends ApiBaseController{
if(StringUtils.isBlank(dto.getCourse().getOrgId())) { if(StringUtils.isBlank(dto.getCourse().getOrgId())) {
return badRequest("请选择资源归属"); return badRequest("请选择资源归属");
} }
String token = request.getHeader("Xboe-Access-Token");
CurrentUser cuser=getCurrent(); CurrentUser cuser=getCurrent();
dto.getCourse().setStatus(Course.STATUS_AUDIT_FINISH);//设置为审核通过状态 dto.getCourse().setStatus(Course.STATUS_AUDIT_FINISH);//设置为审核通过状态
dto.getCourse().setEnabled(true);//设置启用状态问题 dto.getCourse().setEnabled(true);//设置启用状态问题
dto.getCourse().setPublished(false);//重新提交审核设置为未发布状态 dto.getCourse().setPublished(false);//重新提交审核设置为未发布状态
try { try {
courseService.submitAndPublish(dto,cuser.getAccountId(),cuser.getName()); courseService.submitAndPublish(dto,cuser.getAccountId(),cuser.getName());
log.info("---------------在线课开始同步到讲师管理 ------- token = " + token);
CourseParam param = new CourseParam();
param.setId(dto.getCourse().getId());
param.setOrgId(dto.getCourse().getOrgId());
param.setOrgName(dto.getCourse().getOrgName());
thirdApi.updateOrSaveCourse(param,token);
log.info("---------------在线课同步到讲师管理完毕 -------");
return success(true); return success(true);
} catch (Exception e) { } catch (Exception e) {
log.error("默认管理员提交直接发布处理失败",e); log.error("默认管理员提交直接发布处理失败",e);

View File

@@ -7,6 +7,8 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.xboe.api.ThirdApi;
import com.xboe.module.course.dto.*;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@@ -26,11 +28,6 @@ import com.xboe.data.dto.UserOrgIds;
import com.xboe.data.outside.IOutSideDataService; import com.xboe.data.outside.IOutSideDataService;
import com.xboe.data.service.IDataUserSyncService; import com.xboe.data.service.IDataUserSyncService;
import com.xboe.module.assistance.service.IEmailService; import com.xboe.module.assistance.service.IEmailService;
import com.xboe.module.course.dto.CourseExportDto;
import com.xboe.module.course.dto.CourseFullDto;
import com.xboe.module.course.dto.CourseQueryDto;
import com.xboe.module.course.dto.CourseTeacherAndCourse;
import com.xboe.module.course.dto.CourseTeacherExportDto;
import com.xboe.module.course.entity.Course; import com.xboe.module.course.entity.Course;
import com.xboe.module.course.entity.CourseContent; import com.xboe.module.course.entity.CourseContent;
import com.xboe.module.course.entity.CourseCrowd; import com.xboe.module.course.entity.CourseCrowd;
@@ -100,7 +97,8 @@ public class CourseManageApi extends ApiBaseController{
@Autowired @Autowired
IDataUserSyncService userSyncService; IDataUserSyncService userSyncService;
@Resource
private ThirdApi thirdApi;
// @PostMapping("/test") // @PostMapping("/test")
// public JsonResponse<PageList<Course>> findTest(Pagination pager,CourseQueryDto dto){ // public JsonResponse<PageList<Course>> findTest(Pagination pager,CourseQueryDto dto){
@@ -271,7 +269,7 @@ public class CourseManageApi extends ApiBaseController{
*/ */
@PostMapping("/save") @PostMapping("/save")
@AutoLog(module = "课程",action = "保存课程基本信息",info = "") @AutoLog(module = "课程",action = "保存课程基本信息",info = "")
public JsonResponse<CourseFullDto> saveCourseFull(@RequestBody CourseFullDto dto){ public JsonResponse<CourseFullDto> saveCourseFull(@RequestBody CourseFullDto dto, HttpServletRequest request){
if(dto.getCourse()==null){ if(dto.getCourse()==null){
return badRequest("无课程信息"); return badRequest("无课程信息");
} }
@@ -302,7 +300,14 @@ public class CourseManageApi extends ApiBaseController{
dto.getCourse().setStatus(Course.STATUS_NONE); dto.getCourse().setStatus(Course.STATUS_NONE);
courseService.update(dto); courseService.update(dto);
} }
String token = request.getHeader("Xboe-Access-Token");
log.info("---------------在线课开始同步到讲师管理 ------- token = " + token);
CourseParam param = new CourseParam();
param.setId(dto.getCourse().getId());
param.setOrgId(dto.getCourse().getOrgId());
param.setOrgName(dto.getCourse().getOrgName());
thirdApi.updateOrSaveCourse(param,token);
log.info("---------------在线课同步到讲师管理完毕 -------");
return success(dto); return success(dto);
} catch (Exception e) { } catch (Exception e) {
log.error("整体保存课程信息错误",e); log.error("整体保存课程信息错误",e);

View File

@@ -9,6 +9,7 @@ import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@@ -28,6 +29,7 @@ import com.xboe.module.course.service.ICourseFileService;
*/ */
@RestController @RestController
@RequestMapping(value = "/xboe/m/course/cware") @RequestMapping(value = "/xboe/m/course/cware")
@Slf4j
public class CourseWareApi extends ApiBaseController { public class CourseWareApi extends ApiBaseController {
private String cookieName = "PLAYSIGN_TIME"; private String cookieName = "PLAYSIGN_TIME";
@@ -131,16 +133,22 @@ public class CourseWareApi extends ApiBaseController {
// 第一个/前端是时间 // 第一个/前端是时间
int index = signStr.indexOf("/"); int index = signStr.indexOf("/");
if (index <= 0) { if (index <= 0) {
log.info("解密后的字符串:"+signStr);
log.info("解密后的字符串的时间拼接:"+index);
return badRequest("验证错误"); return badRequest("验证错误");
} }
String time = signStr.substring(0, signStr.indexOf("/"));// 时间字符中long String time = signStr.substring(0, signStr.indexOf("/"));// 时间字符中long
String cfid = signStr.substring(index+1);// 文件路径 String cfid = signStr.substring(index+1);// 文件路径
if (!time.equals(cookieTime)) { // if (!time.equals(cookieTime)) {
return badRequest("验证错误"); // log.info("请求头时间和解析后的时间对比:"+"解析时间:"+time+" 请求头时间:"+cookieTime);
} // log.info("解密后的字符串的时间拼接:"+signStr);
// return badRequest("验证错误");
// }
if(StringUtils.isBlank(cfid) || cfid.length()<10) { if(StringUtils.isBlank(cfid) || cfid.length()<10) {
log.info("查看时间文件路径:"+cfid);
log.info("解密后的字符串的时间拼接:"+signStr);
return badRequest("验证错误"); return badRequest("验证错误");
} }

View File

@@ -0,0 +1,10 @@
package com.xboe.module.course.dto;
import lombok.Data;
@Data
public class CourseParam {
private String id;
private String orgId;
private String orgName;
}

View File

@@ -0,0 +1,9 @@
package com.xboe.module.course.dto;
import lombok.Data;
@Data
public class ScoreParam {
private Long courseId;
private Float score;
}

View File

@@ -354,6 +354,7 @@ public class AloneExamApi extends ApiBaseController {
if(StringUtils.isBlank(paperJson)) { if(StringUtils.isBlank(paperJson)) {
return badRequest("此考试无试卷内容,考试已经过期或试卷已被删除"); return badRequest("此考试无试卷内容,考试已经过期或试卷已被删除");
} }
}
try { try {
List<TestQuestionVo> qlist=this.randomQuestion(examTest, paperJson); List<TestQuestionVo> qlist=this.randomQuestion(examTest, paperJson);
ObjectMapper objectMapper = new ObjectMapper(); ObjectMapper objectMapper = new ObjectMapper();
@@ -365,7 +366,6 @@ public class AloneExamApi extends ApiBaseController {
log.error("生成试卷解析生成json错误",e); log.error("生成试卷解析生成json错误",e);
return error("生成考试试卷解析错误",e.getMessage(),map); return error("生成考试试卷解析错误",e.getMessage(),map);
} }
}
map.put("paper", paperJson); map.put("paper", paperJson);
long end=System.currentTimeMillis(); long end=System.currentTimeMillis();
log.info("开始考试用时="+(end-start)+" ms"); log.info("开始考试用时="+(end-start)+" ms");

View File

@@ -312,6 +312,10 @@ public class ExamQuestionApi extends ApiBaseController {
if(row1.getCell(1).getStringCellValue().equals("多选题")){ if(row1.getCell(1).getStringCellValue().equals("多选题")){
examQuestion.setType(2); examQuestion.setType(2);
} }
log.debug("row1.getCell(2) = " + row1.getCell(2));
if (row1.getCell(2)==null ||row1.getCell(2).getStringCellValue() == null || row1.getCell(2).getStringCellValue().equals("")){
examQuestion.setDifficulty(null);
}else{
if( row1.getCell(2).getStringCellValue().equals("")){ if( row1.getCell(2).getStringCellValue().equals("")){
examQuestion.setDifficulty(2f); examQuestion.setDifficulty(2f);
}else if(row1.getCell(2).getStringCellValue().equals("")){ }else if(row1.getCell(2).getStringCellValue().equals("")){
@@ -321,6 +325,7 @@ public class ExamQuestionApi extends ApiBaseController {
}else if(row1.getCell(2).getStringCellValue().equals("")){ }else if(row1.getCell(2).getStringCellValue().equals("")){
examQuestion.setDifficulty(null); examQuestion.setDifficulty(null);
} }
}
Cell cell = row1.getCell(3); Cell cell = row1.getCell(3);
cell.setCellType(CellType.STRING); cell.setCellType(CellType.STRING);

View File

@@ -1,7 +1,10 @@
package com.xboe.module.interaction.api; package com.xboe.module.interaction.api;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import com.xboe.api.ThirdApi;
import com.xboe.module.course.dto.ScoreParam;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@@ -25,18 +28,27 @@ public class CourseGradeApi extends ApiBaseController {
@Resource @Resource
private ICourseGradeService service; private ICourseGradeService service;
@Resource
private ThirdApi thirdApi;
/** /**
* 评分 * 评分
* */ * */
@PostMapping("/grade") @PostMapping("/grade")
@AutoLog(module = "评分",action = "评分") @AutoLog(module = "评分",action = "评分")
public JsonResponse<Float> grade(String courseId,Float score,String studyId){ public JsonResponse<Float> grade(String courseId,Float score,String studyId, HttpServletRequest request){
CourseGrade courseGrade = new CourseGrade(); CourseGrade courseGrade = new CourseGrade();
courseGrade.setCourseId(courseId); courseGrade.setCourseId(courseId);
courseGrade.setScores(score); courseGrade.setScores(score);
courseGrade.setStudyId(studyId); courseGrade.setStudyId(studyId);
try { try {
Float aFloat = service.save(courseGrade); Float aFloat = service.save(courseGrade);
String token = request.getHeader("Xboe-Access-Token");
ScoreParam param = new ScoreParam();
param.setCourseId(Long.parseLong(courseId));
param.setScore(score);
// 同步在线课评分
// thirdApi.syncOnLineScore(param,token);
return success(aFloat); return success(aFloat);
}catch(Exception e) { }catch(Exception e) {
log.error("评分保存错误",e); log.error("评分保存错误",e);

View File

@@ -1,6 +1,8 @@
package com.xboe.module.teacher.entity; package com.xboe.module.teacher.entity;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
@@ -206,4 +208,56 @@ public class Teacher extends BaseEntity {
@Column(name = "expertise") @Column(name = "expertise")
private String expertise; private String expertise;
@Column(name = "user_no",length = 1)
private String userNo;
// @ApiModelProperty(value = "讲师类型 1 内部讲师 2外部讲师")
@Column(name = "teacher_type")
private Integer teacherType;
// @ApiModelProperty(value = "默认授课时长(分钟)")
@Column(name = "default_teaching_time")
private Integer defaultTeachingTime;
// @ApiModelProperty(value = "认证人")
@Column(name = "certify_by")
private String certifyBy;
// @ApiModelProperty(value = "认证时间")
@Column(name = "certify_at")
private LocalDateTime certifyAt;
// @ApiModelProperty(value = "认证资料路径")
@Column(name = "certification")
private String certification;
// @ApiModelProperty(value = "认证资料路径名称")
@Column(name = "certification_name")
private String certificationName;
// @ApiModelProperty(value = "供应商")
@Column(name = "supplier")
private String supplier;
// @ApiModelProperty(value = "教师专长名称 逗号分割")
@Column(name = "expertise_names")
private String expertiseNames;
// @ApiModelProperty(value = "标识 0自动录入/1手动录入")
@Column(name = "create_from")
private Integer createFrom;
// @ApiModelProperty(value = "组织id")
@Column(name = "org_id")
private Long orgId;
// @ApiModelProperty(value = "组织名称")
@Column(name = "org_name")
private String orgName;
// @ApiModelProperty(value = "旧系统kid字段")
@Column(name = "kid")
private String kid;
} }

View File

@@ -102,9 +102,12 @@ public class TeacherServiceImpl implements ITeacherService {
public List<Teacher> findByName(String name) { public List<Teacher> findByName(String name) {
String hql="Select t.id,t.name,u.userNo from "+Teacher.class.getSimpleName()+" t,"+User.class.getSimpleName()+" u "; String hql="Select t.id,t.name,u.userNo from "+Teacher.class.getSimpleName()+" t,"+User.class.getSimpleName()+" u ";
hql+=" where t.id=u.id and (t.name like '%"+name+"%' or u.userNo=?1)"; hql+=" where t.id=u.id and (t.name like '%"+name+"%' or u.userNo=?1)";
// String hql="Select t.id,t.name,t.userNo from "+Teacher.class.getSimpleName()+" t";
// hql+=" where t.deleted =0 and t.status =1 and (t.name like '%"+name+"%' or t.userNo like '%"+name+"%' )";
List<Teacher> teachers=new ArrayList<Teacher>(); List<Teacher> teachers=new ArrayList<Teacher>();
try { try {
List<Object[]> list =dao.findListFields(hql,name); List<Object[]> list =dao.findListFields(hql);
for(Object[] objs :list) { for(Object[] objs :list) {
Teacher t=new Teacher(); Teacher t=new Teacher();
t.setId((String)objs[0]); t.setId((String)objs[0]);

View File

@@ -750,18 +750,26 @@ public class StudyCourseApi extends ApiBaseController{
* @param courseId 课程id 用于删除课程报名信息和修改课程学习人数 * @param courseId 课程id 用于删除课程报名信息和修改课程学习人数
* */ * */
@PostMapping("/delete-signup") @PostMapping("/delete-signup")
public JsonResponse<Boolean> deleteSignUp(String id,String courseId,String studentId){ public JsonResponse<Boolean> deleteSignUp(String id,String courseId,String studentId, HttpServletRequest request){
if(StringUtils.isBlank(id)){ if(StringUtils.isBlank(id)){
return badRequest("参数异常"); return badRequest("参数异常");
} }
//String aid = this.getCurrent().getAccountId(); //String aid = this.getCurrent().getAccountId();
try { try {
service.deleteSignUp(id,courseId,studentId); service.deleteSignUp(id,courseId,studentId);
return success(true);
} catch (Exception e) { } catch (Exception e) {
log.error("删除报名信息失败",e.getMessage()); log.error("删除报名信息失败",e.getMessage());
return error("删除失败",e.getMessage()); return error("删除失败",e.getMessage());
} }
try {
String token = request.getHeader("Xboe-Access-Token");
thirdApi.syncCourseStudent(Long.parseLong(courseId),token);
} catch (Exception e) {
e.printStackTrace();
}
return success(true);
} }
/** /**

View File

@@ -116,4 +116,8 @@ public class StudyCourseDao extends BaseDao<StudyCourse> {
this.update(update.builder()); this.update(update.builder());
} }
public StudyCourse findByCourseIdAndAid(String aid, String courseId) {
return this.findOne(FieldFilters.eq("aid",aid),FieldFilters.eq("courseId",courseId));
}
} }

View File

@@ -265,6 +265,7 @@ public class StudyCourseServiceImpl implements IStudyCourseService{
} }
@Override @Override
public void deleteSignUp(String id,String courseId,String aid) { public void deleteSignUp(String id,String courseId,String aid) {
log.info("参数id"+id+"参数课程id"+courseId+"参数用户id"+aid);
//删除课程学习记录主表 //删除课程学习记录主表
studyCourseDao.deleteById(id); studyCourseDao.deleteById(id);
//删除学习课程的评估测试结果 //删除学习课程的评估测试结果

View File

@@ -61,7 +61,10 @@ public class StudySignupServiceImpl implements IStudySignupService{
@Override @Override
public void selfSignup(StudySignup signup) { public void selfSignup(StudySignup signup) {
signup.setSignType(StudySignup.SIGNTYPE_SELF); signup.setSignType(StudySignup.SIGNTYPE_SELF);
StudyCourse sc=studyCourseDao.findByCourseIdAndAid(signup.getAid(), signup.getCourseId());
if (sc == null){
this.addSignup(signup); this.addSignup(signup);
}
//更新课程学习人数 //更新课程学习人数
courseDao.updateMultiFieldById(signup.getCourseId(),UpdateBuilder.create("studys", "studys+1",FieldUpdateType.EXPRESSION)); courseDao.updateMultiFieldById(signup.getCourseId(),UpdateBuilder.create("studys", "studys+1",FieldUpdateType.EXPRESSION));
} }

View File

@@ -26,7 +26,7 @@ logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
# 设置logback.xml位置 # 设置logback.xml位置
logging.config=classpath:log/logback-dev.xml logging.config=classpath:log/logback-@profileActive@.xml
## 静态文件目录默认是在static下面以后独立到nginx下面配置 ## 静态文件目录默认是在static下面以后独立到nginx下面配置
spring.web.resources.static-locations=file:E:/Projects/BOE/10/static spring.web.resources.static-locations=file:E:/Projects/BOE/10/static

View File

@@ -23,7 +23,7 @@ logging.level.org.hibernate.SQL=ERROR
#logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE #logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
# 设置logback.xml位置 # 设置logback.xml位置
logging.config=classpath:log/logback-dev.xml logging.config=classpath:log/logback-@profileActive@.xml
## 静态文件目录默认是在static下面以后独立到nginx下面配置 ## 静态文件目录默认是在static下面以后独立到nginx下面配置
spring.web.resources.static-locations=file:E:/Projects/BOE/java/static spring.web.resources.static-locations=file:E:/Projects/BOE/java/static

View File

@@ -34,7 +34,7 @@ logging.level.org.hibernate.SQL=ERROR
# logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE # logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
# 设置logback.xml位置 # 设置logback.xml位置
logging.config=classpath:log/logback-dev.xml logging.config=classpath:log/logback-@profileActive@.xml
## ???????????static????????nginx???? ## ???????????static????????nginx????
spring.web.resources.static-locations=file:E:/Projects/BOE/java/static spring.web.resources.static-locations=file:E:/Projects/BOE/java/static

View File

@@ -76,3 +76,8 @@ manageApi.editExam=${boe.domain}/manageApi/admin/project/editExam
userBasic.getTeacherIds=${boe.domain}/userbasic/user/getTeacherInfo userBasic.getTeacherIds=${boe.domain}/userbasic/user/getTeacherInfo
coursesuilt.getStudyStatus=${boe.domain}/manageApi/stu/project/completeStatus coursesuilt.getStudyStatus=${boe.domain}/manageApi/stu/project/completeStatus
userBasic.getUserBasicInfo=${boe.domain}/userbasic/user/getUserBasicInfo userBasic.getUserBasicInfo=${boe.domain}/userbasic/user/getUserBasicInfo
#讲师管理创建或修改在线课授课记录
coursesuilt.updateOrSaveCourse=${boe.domain}/manageApi/admin/teacherRecord/updateOrSaveCourse
coursesuilt.syncCourseStudent=${boe.domain}/manageApi/admin/teacherRecord/syncCourseStudent
coursesuilt.syncOnLineScore=${boe.domain}/manageApi/admin/teacherRecord/syncOnLineScore
coursesuilt.updateOnLineStatus=${boe.domain}/manageApi/admin/teacherRecord/updateOnLineStatus