Compare commits

...

26 Commits

Author SHA1 Message Date
Caojr
55dac06e5f szx-1277 hrbp审核接口修改course服务调用接口;增加事务注解 2025-10-30 09:13:13 +08:00
Caojr
a72a042636 szx-1277 增加事务注解 2025-10-29 15:13:47 +08:00
Caojr
4110d0632f 增加事务 2025-10-29 15:06:00 +08:00
Caojr
6fe6f7c6e5 临时注释多余的completeStatus接口调用 2025-10-10 10:15:11 +08:00
670788339
249a8d81a6 JsonFormat 2025-08-28 10:32:53 +08:00
670788339
7abb00772b 显示考试成绩 2025-08-26 14:39:37 +08:00
670788339
04e11f2e71 还原 2025-08-22 14:18:35 +08:00
670788339
2feb149e92 在线课程管理不显示考试成绩 2025-08-22 14:11:34 +08:00
670788339
16fa9cb028 在线课程管理不显示考试成绩 2025-08-22 10:36:14 +08:00
670788339
cac466ba73 修复无考试在线进度 2025-08-19 16:15:34 +08:00
670788339
30d2a0cde2 Merge branch 'master-0720-lyc' into release-20250328-master 2025-07-23 17:04:29 +08:00
670788339
541e542d9b 仅内网只可看 调整 2025-07-23 16:08:59 +08:00
670788339
aa04e16209 仅内网只可看 调整 2025-07-23 16:03:03 +08:00
670788339
57e22492e5 仅内网只可PC看 2025-07-23 15:42:47 +08:00
670788339
1917647a99 仅内网只可PC看 2025-07-21 17:43:18 +08:00
670788339
f5f7ab3bc5 字典调整 2025-07-21 13:27:35 +08:00
670788339
413a2ebc33 字典调整 2025-07-21 09:57:33 +08:00
670788339
22db916abf 仅内网可见-学员端 2025-07-21 09:37:25 +08:00
670788339
8ce284ea7e 仅内网可见-学员端 2025-07-21 09:27:12 +08:00
670788339
c485757061 仅内网可见-学员端 2025-07-21 09:21:58 +08:00
670788339
9a00b41cde 仅内网可见-学员端 2025-07-21 09:17:13 +08:00
670788339
59beaa5b74 仅内网可见-学员端 2025-07-21 09:07:58 +08:00
670788339
9b9e97a8d4 仅内网可见-学员端 2025-07-21 08:44:16 +08:00
670788339
200ec38038 仅内网可见 2025-07-20 17:13:29 +08:00
670788339
7613f30ca7 仅内网可见 2025-07-20 15:22:36 +08:00
670788339
248e0799bd 仅内网可见 2025-07-20 13:48:21 +08:00
10 changed files with 275 additions and 193 deletions

View File

@@ -45,10 +45,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import java.util.*;
import java.util.concurrent.ForkJoinPool;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@@ -407,4 +404,20 @@ public class ThirdApi {
.body()).orElseThrow(() -> new RuntimeException("token校验失败"));
log.info("-------delOnLineById = " + resp);
}
//获取字典信息
public List<Dict> getDictItems(CommonSearchVo searcher) {
try {
List<Dict> dictList = dictRemoteClient.getList(searcher);
if(!Objects.isNull(dictList) && dictList.size() > 0){
// List<String> dicts = dictList.stream().map(Dict::getValue).collect(Collectors.toList());
return dictList;
}else {
return null;
}
} catch (Exception e) {
log.error("-------获取字典信息 = " + e.getMessage());
}
return null;
}
}

View File

@@ -10,6 +10,7 @@ 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.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -321,6 +322,7 @@ public class CourseAuditApi extends ApiBaseController{
* @return
*/
@PostMapping("/hrbp-submit-audit")
@Transactional(rollbackFor = Exception.class)
public JsonResponse<Boolean> hrbpAudit(String auditId,String courseId,String title,Boolean pass,String remark, HttpServletRequest request){
if(StringUtils.isBlank(auditId)){
return badRequest("参数错误");
@@ -350,22 +352,19 @@ public class CourseAuditApi extends ApiBaseController{
}
}
try {
CurrentUser cu=getCurrent();
service.hrbpSubmitAudit(auditId, courseId,open, pass,cu.getAccountId(),cu.getName(), remark);
CurrentUser cu=getCurrent();
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.updateOnLineStatua(param,token);
}
return success(true);
} catch (Exception e) {
log.error("HRBP审核提交处理错误",e);
return error("审核处理失败",e.getMessage(),false);
}
if (pass){
//修改在线课开课状态=已开课
String token = request.getHeader("Xboe-Access-Token");
CourseParam param = new CourseParam();
param.setId(courseId);
param.setOrgId(c.getOrgId());
param.setOrgName(c.getOrgName());
thirdApi.updateOrSaveCourse(param,token);
}
return success(true);
}
@PostMapping("/last-audit-list")
@@ -390,6 +389,7 @@ public class CourseAuditApi extends ApiBaseController{
* @param dto
* @return
*/
@Transactional(rollbackFor = Exception.class)
@PostMapping("/submit-publish")
@AutoLog(module = "课程",action = "默认管理员提交发布",info = "")
public JsonResponse<Boolean> submitAndPublish(@RequestBody CourseFullDto dto, HttpServletRequest request){
@@ -423,23 +423,16 @@ public class CourseAuditApi extends ApiBaseController{
dto.getCourse().setStatus(Course.STATUS_AUDIT_FINISH);//设置为审核通过状态
dto.getCourse().setEnabled(true);//设置启用状态问题
dto.getCourse().setPublished(false);//重新提交审核设置为未发布状态
try {
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);
} catch (Exception e) {
log.error("默认管理员提交直接发布处理失败",e);
e.printStackTrace();
return error("发布课程失败",e.getMessage());
}
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);
}

View File

@@ -2,15 +2,19 @@
import java.io.OutputStream;
import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.boe.feign.api.infrastructure.entity.CommonSearchVo;
import com.boe.feign.api.infrastructure.entity.Dict;
import com.xboe.api.ThirdApi;
import com.xboe.module.course.dto.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -170,17 +174,46 @@ public class CourseManageApi extends ApiBaseController{
List<CourseTeacher> teachers=courseService.findTeachersByCourseId(id);
List<CourseCrowd> crowds=courseService.findCrowdByCourseId(id);
//
CommonSearchVo searcher = new CommonSearchVo();
searcher.setPid(637L);
searcher.setType(1);
List<Dict> dictList = thirdApi.getDictItems(searcher);
boolean isPermission = false;
if(dictList != null && dictList.size() > 0){
List<String> dicts = dictList.stream().map(Dict::getValue).collect(Collectors.toList());
isPermission = dicts.contains(course.getOrgId());
rs.put("dicts",dicts);
}
log.error("-------是否仅内网查看 = " + isPermission);
rs.put("course",course);
rs.put("contents",cclist);
rs.put("sections",sectionlist);
rs.put("teachers",teachers);
rs.put("crowds",crowds);
rs.put("isPermission",isPermission);
return success(rs);
}
@GetMapping("/getDictIds")
public JsonResponse<Map<String,Object>> getDictIds(Long pid,Integer type){
CommonSearchVo searcher = new CommonSearchVo();
if(pid==null || type ==null){
return badRequest("参数错误");
}
Map<String,Object> rs=new HashMap<String,Object>();
searcher.setPid(pid);
searcher.setType(type);
List<Dict> dictList = thirdApi.getDictItems(searcher);
rs.put("dicts",null);
if(dictList != null && dictList.size() > 0){
List<String> dicts = dictList.stream().map(Dict::getValue).collect(Collectors.toList());
rs.put("dicts",dicts);
}
return success(rs);
}
/**
* 管理员审核列表教师的审核不在这里此审核也应该移动CourseAuditApi中去
@@ -268,6 +301,7 @@ public class CourseManageApi extends ApiBaseController{
* @return
*/
@PostMapping("/save")
@Transactional(rollbackFor = Exception.class)
@AutoLog(module = "课程",action = "保存课程基本信息",info = "")
public JsonResponse<CourseFullDto> saveCourseFull(@RequestBody CourseFullDto dto, HttpServletRequest request){
if(dto.getCourse()==null){
@@ -289,30 +323,25 @@ public class CourseManageApi extends ApiBaseController{
}
//填充必要的信息
try {
if(StringUtils.isBlank(dto.getCourse().getId())) {
//只有在第一次添加保存时才会这样
fillCourseData(dto.getCourse());
courseService.save(dto);
}else {
//修改后重置,重新提交审核,重新发布
dto.getCourse().setPublished(false);
dto.getCourse().setStatus(Course.STATUS_NONE);
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);
} catch (Exception e) {
log.error("整体保存课程信息错误",e);
return error("保存失败",e.getMessage());
}
if(StringUtils.isBlank(dto.getCourse().getId())) {
//只有在第一次添加保存时才会这样
fillCourseData(dto.getCourse());
courseService.save(dto);
}else {
//修改后重置,重新提交审核,重新发布
dto.getCourse().setPublished(false);
dto.getCourse().setStatus(Course.STATUS_NONE);
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);
}
/***
@@ -411,6 +440,7 @@ public class CourseManageApi extends ApiBaseController{
@PostMapping("/submit")
@Transactional(rollbackFor = Exception.class)
@AutoLog(module = "课程",action = "提交课程",info = "")
public JsonResponse<CourseFullDto> submitCourseFull(@RequestBody CourseFullDto dto){
if(dto.getCourse()==null){
@@ -488,68 +518,63 @@ public class CourseManageApi extends ApiBaseController{
//检查课程内容的完整性
//填充必要的信息
//fillCourseData(dto.getCourse());
try {
CourseHRBPAudit hrbpAudit = hrbpAuditService.hasAuditing(dto.getCourse().getId());
if(hrbpAudit!=null) {
return badRequest("此课程中已有审核,不能再提交审核,如修改请先撤回");
}
if(!isLocalDevelopment()) {
if(StringUtils.isBlank(dto.getAuditUser().getAid())) {
CourseHRBPAudit hrbpAudit = hrbpAuditService.hasAuditing(dto.getCourse().getId());
if(hrbpAudit!=null) {
return badRequest("此课程中已有审核,不能再提交审核,如修改请先撤回");
}
if(!isLocalDevelopment()) {
if(StringUtils.isBlank(dto.getAuditUser().getAid())) {
// if(StringUtils.isBlank(dto.getAuditUser().getKid())) {
// return badRequest("HRBP审核信息人员错误");
// }
//转化用户id
User u = userService.getByUserNo(dto.getAuditUser().getCode());
if(u==null) { //本地没有,需要同步、
//20230815 直接返回错误,这个时候传的用户,在新系统中没有,需要用户登录一下,或着用户中心推送
return badRequest("无关联HRBP审核人员请先同步用户");
//Organization org = orgService.getBySysId(dto.getAuditUser().getOrgkid());
//转化用户id
User u = userService.getByUserNo(dto.getAuditUser().getCode());
if(u==null) { //本地没有,需要同步、
//20230815 直接返回错误,这个时候传的用户,在新系统中没有,需要用户登录一下,或着用户中心推送
return badRequest("无关联HRBP审核人员请先同步用户");
//Organization org = orgService.getBySysId(dto.getAuditUser().getOrgkid());
// UserVo fwUser = fwUserService.getById(dto.getAuditUser().getKid());
// Account a =userService.syncAccountUser(fwUser);
// dto.getAuditUser().setAid(a.getId());
}else {
dto.getAuditUser().setAid(u.getId());
}
}else {
log.info("已获取过hrbp审核人id【"+dto.getAuditUser().getAid()+"】,不需要再转化");
}
}else {
dto.getAuditUser().setAid(u.getId());
}
}else {
log.info("已获取过hrbp审核人id【"+dto.getAuditUser().getAid()+"】,不需要再转化");
}
}else {
//弄成固定值,用于测试
dto.getAuditUser().setAid(getCurrent().getAccountId());
}
if(StringUtils.isBlank(dto.getAuditUser().getAid())) {
return badRequest("查询组织HRBP审核人员失败");
}
}else {
//弄成固定值,用于测试
dto.getAuditUser().setAid(getCurrent().getAccountId());
}
if(StringUtils.isBlank(dto.getAuditUser().getAid())) {
return badRequest("查询组织HRBP审核人员失败");
}
//设置为提交状态
dto.getCourse().setStatus(Course.STATUS_SUBMIT);
dto.getCourse().setEnabled(true);//设置启用状态问题
dto.getCourse().setPublished(false);//重新提交审核设置为未发布状态
courseService.submit(dto);
//提交成功发邮件提醒
try {
String htmlEmail=createEmailHtml(dto.getAuditUser().getName(),dto.getCourse().getOrgId(),
dto.getCourse().getOrgName(),
dto.getCourse().getSysCreateBy(),dto.getCourse().getName());
//邮件发送
String email=dto.getAuditUser().getEmail();
if(!isLocalDevelopment()) {
//只是非开发模式下才可以发送
service.sendMail(email,""+dto.getCourse().getName()+"》课程审核提醒", htmlEmail,"数字化学习平台");
}else {
//service.sendMail("daihaixing@bjxask.com","课程审核提醒", htmlEmail,"数字化学习平台");
}
//设置为提交状态
dto.getCourse().setStatus(Course.STATUS_SUBMIT);
dto.getCourse().setEnabled(true);//设置启用状态问题
dto.getCourse().setPublished(false);//重新提交审核设置为未发布状态
courseService.submit(dto);
//提交成功发邮件提醒
try {
String htmlEmail=createEmailHtml(dto.getAuditUser().getName(),dto.getCourse().getOrgId(),
dto.getCourse().getOrgName(),
dto.getCourse().getSysCreateBy(),dto.getCourse().getName());
//邮件发送
String email=dto.getAuditUser().getEmail();
if(!isLocalDevelopment()) {
//只是非开发模式下才可以发送
service.sendMail(email,""+dto.getCourse().getName()+"》课程审核提醒", htmlEmail,"数字化学习平台");
}else {
//service.sendMail("daihaixing@bjxask.com","课程审核提醒", htmlEmail,"数字化学习平台");
}
} catch (Exception ex) {
log.error("邮件发送失败",ex);
return error("课程已提交,但邮件发送失败",ex.getMessage());
}
return success(dto);
} catch (Exception e) {
log.error("提交保存课程信息错误",e);
return error("提交课程处理失败",e.getMessage());
}
} catch (Exception ex) {
log.error("邮件发送失败",ex);
return error("课程已提交,但邮件发送失败",ex.getMessage());
}
return success(dto);
}
private String createEmailHtml(String name,String orgId, String orgName,String createBy,String courseName) throws Exception {
@@ -583,6 +608,7 @@ public class CourseManageApi extends ApiBaseController{
}
@PostMapping("/sumbits")
@Transactional(rollbackFor = Exception.class)
public JsonResponse<Boolean> sumbitId(HttpServletRequest request,CourseHRBPAudit audit,String ucode,String ukid,String email,String orgName){
if(StringUtils.isBlank(audit.getCourseId())){
return badRequest("参数错误");
@@ -605,24 +631,23 @@ public class CourseManageApi extends ApiBaseController{
return badRequest(error);
}
try {
CourseHRBPAudit hrbpAudit = hrbpAuditService.hasAuditing(audit.getCourseId());
if(hrbpAudit!=null) {
return badRequest("此课程中已有审核,不能再提交审核,如修改请先撤回");
}
CourseHRBPAudit hrbpAudit = hrbpAuditService.hasAuditing(audit.getCourseId());
if(hrbpAudit!=null) {
return badRequest("此课程中已有审核,不能再提交审核,如修改请先撤回");
}
if(!isLocalDevelopment()) {
if(StringUtils.isBlank(audit.getAid())) {
if(!isLocalDevelopment()) {
if(StringUtils.isBlank(audit.getAid())) {
// if(StringUtils.isBlank(ukid)){
// return badRequest("未关联HRBP审核人员");
// }
//转化用户id
User u = userService.getByUserNo(ucode);
if(u==null) { //本地没有,需要同步
return badRequest("无关联HRBP审核人员请先同步用户");
//Organization org = orgService.getBySysId(dto.getAuditUser().getOrgkid());
//20230815 已经不再使用直接查老系统,采用接口同步的方式
//转化用户id
User u = userService.getByUserNo(ucode);
if(u==null) { //本地没有,需要同步
return badRequest("无关联HRBP审核人员请先同步用户");
//Organization org = orgService.getBySysId(dto.getAuditUser().getOrgkid());
//20230815 已经不再使用直接查老系统,采用接口同步的方式
// UserVo fwUser = fwUserService.getById(ukid);
// Account a =userService.syncAccountUser(fwUser);
// audit.setAid(a.getId());
@@ -638,43 +663,39 @@ public class CourseManageApi extends ApiBaseController{
// }catch(Exception exp) {
// log.error("登录同步用户错误",exp);
// }
}else {
audit.setAid(u.getId());
}
}else {
log.info("已获取过hrbp审核人id【"+audit.getAid()+"】,不需要再转化");
}
}else {
audit.setAid(u.getId());
}
}else {
log.info("已获取过hrbp审核人id【"+audit.getAid()+"】,不需要再转化");
}
}else {
//弄成固定值,用于测试
audit.setAid(getCurrent().getAccountId());
}
}else {
//弄成固定值,用于测试
audit.setAid(getCurrent().getAccountId());
}
if(StringUtils.isBlank(audit.getAid())) {
return badRequest("查询组织HRBP审核人员失败");
}
if(StringUtils.isBlank(audit.getAid())) {
return badRequest("查询组织HRBP审核人员失败");
}
courseService.submit(audit);
courseService.submit(audit);
//提交成功发邮件提醒
try {
String htmlEmail=createEmailHtml(audit.getAuditUser(),course.getOrgId(), orgName,audit.getCourseUser(),audit.getCourseName());
//邮件发送
if(!isLocalDevelopment()) {
//只是非高度环境上才会发送
service.sendMail(email,""+course.getName()+"》课程审核提醒",htmlEmail,"数字化学习平台");
}
//提交成功发邮件提醒
try {
String htmlEmail=createEmailHtml(audit.getAuditUser(),course.getOrgId(), orgName,audit.getCourseUser(),audit.getCourseName());
//邮件发送
if(!isLocalDevelopment()) {
//只是非高度环境上才会发送
service.sendMail(email,""+course.getName()+"》课程审核提醒",htmlEmail,"数字化学习平台");
}
} catch (Exception ex) {
log.error("邮件发送失败",ex);
return error("课程已提交,但邮件发送失败",ex.getMessage());
}
} catch (Exception ex) {
log.error("邮件发送失败",ex);
return error("课程已提交,但邮件发送失败",ex.getMessage());
}
return success(true);
}catch(Exception e) {
log.error("提交保存课程信息错误",e);
return error("提交课程处理失败",e.getMessage());
}
return success(true);
}
@PostMapping("/revoke")

View File

@@ -34,6 +34,9 @@ public class Course extends BaseEntity {
/**所有的设备*/
public static int DEVICE_ALL=3;
/**仅内网*/
public static int DEVICE_INTERNAL=4;
/**未提交,草稿*/
public static final int STATUS_NONE=1;

View File

@@ -161,14 +161,14 @@ public interface ICourseService {
* 课程信息的整体更新,用于对课程的编辑处理
* @param full
*/
void update(CourseFullDto full)throws Exception;
void update(CourseFullDto full);
/**
* 提交课程,提交进入课程审核,独立的方法处理
* @param full
* @throws Exception
*/
void submit(CourseFullDto full)throws Exception;
void submit(CourseFullDto full);
/**
* 用于默认管理员,直接提交发布,不走审核流程
@@ -177,14 +177,14 @@ public interface ICourseService {
* @param aname 姓名
* @throws Exception
*/
void submitAndPublish(CourseFullDto full,String aid,String aname)throws Exception;
void submitAndPublish(CourseFullDto full,String aid,String aname);
/**
* 提交一个课程
* @param audit
* @throws Exception
*/
void submit(CourseHRBPAudit audit) throws Exception;
void submit(CourseHRBPAudit audit);
/**
* update 传一个id直接改值

View File

@@ -183,6 +183,8 @@ public class CourseServiceImpl implements ICourseService {
filters.add(FieldFilters.in("device", Course.DEVICE_MOBILE, Course.DEVICE_ALL));
} else if (dto.getDevice() == Course.DEVICE_ALL) {
filters.add(FieldFilters.eq("device", Course.DEVICE_ALL));
}else if (dto.getDevice() == Course.DEVICE_INTERNAL) {
filters.add(FieldFilters.eq("device", Course.DEVICE_INTERNAL));
}
}
@@ -974,7 +976,7 @@ public class CourseServiceImpl implements ICourseService {
}
@Override
public void update(CourseFullDto full) throws Exception {
public void update(CourseFullDto full) {
Course c = full.getCourse();//当前的课程信息
Course nowCourse = courseDao.get(c.getId());//修改之前的课程信息
@@ -1026,7 +1028,7 @@ public class CourseServiceImpl implements ICourseService {
}
@Override
public void submit(CourseFullDto full) throws Exception {
public void submit(CourseFullDto full) {
Course c = full.getCourse();//当前的课程信息
if (c.getVisible() == null) {
@@ -1082,7 +1084,7 @@ public class CourseServiceImpl implements ICourseService {
}
@Override
public void submitAndPublish(CourseFullDto full, String aid, String aname) throws Exception {
public void submitAndPublish(CourseFullDto full, String aid, String aname) {
Course c = full.getCourse();//当前的课程信息
c.setPublished(true);
@@ -1129,7 +1131,7 @@ public class CourseServiceImpl implements ICourseService {
}
@Override
public void submit(CourseHRBPAudit hrbpAudit) throws Exception {
public void submit(CourseHRBPAudit hrbpAudit) {
courseDao.updateMultiFieldById(hrbpAudit.getCourseId(), UpdateBuilder.create("status", Course.STATUS_SUBMIT),
UpdateBuilder.create("published", false), UpdateBuilder.create("publishTime", LocalDateTime.now()));

View File

@@ -1,5 +1,6 @@
package com.xboe.module.popup.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xboe.core.SysConstant;
import com.xboe.core.orm.IdEntity;
import lombok.Data;
@@ -24,12 +25,14 @@ public class Popup extends IdEntity {
* 开始时间
* */
@Column(name = "start_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
/**
* 结束时间
* */
@Column(name = "end_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;

View File

@@ -10,6 +10,8 @@ import java.util.stream.Collectors;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.nacos.shaded.com.google.common.util.concurrent.RateLimiter;
import com.boe.feign.api.infrastructure.entity.CommonSearchVo;
import com.boe.feign.api.infrastructure.entity.Dict;
import com.xboe.api.ThirdApi;
import com.xboe.constants.CacheName;
import com.xboe.module.course.vo.TeacherVo;
@@ -233,6 +235,29 @@ public class StudyCourseApi extends ApiBaseController{
rs.put("contents",cclist);
rs.put("sections",sectionlist);
rs.put("teachers",teachers);
// 未选择仅内网时isPermission = false不用区分内外网
boolean isPermission = false;
if(course.getDevice() ==4){
CommonSearchVo searcher = new CommonSearchVo();
searcher.setPid(637L);
searcher.setType(1);
List<Dict> dictList = thirdApi.getDictItems(searcher);
if(dictList != null && dictList.size() > 0){
List<String> dicts = dictList.stream().map(Dict::getValue).collect(Collectors.toList());
// 选择仅内网 并且字典中配置了此课程资源归属,那么只能内网观看 返回 truw
isPermission = dicts.contains(course.getOrgId());
}
}
rs.put("isPermission",isPermission);
CommonSearchVo warn = new CommonSearchVo();
warn.setCode("course_warn");
warn.setType(1);
List<Dict> warns = thirdApi.getDictItems(warn);
if(warns != null && warns.size() > 0){
rs.put("warn",warns.get(0).getValue());
rs.put("warnTitle",warns.get(0).getName());
}
//检查是否已报名
StudyCourse sc=service.findByCourseIdAndAid(cid, aid);
@@ -567,8 +592,8 @@ public class StudyCourseApi extends ApiBaseController{
}
try {
studyService.finishVideoStudyItem(itemId, studyId,courseId,cnum,token);
List<StudyCourse> allUserList = thirdApi.getStudyCourseList(studyId ,courseId, token);
log.info("在线课学习记录"+allUserList);
// List<StudyCourse> allUserList = thirdApi.getStudyCourseList(studyId ,courseId, token);
// log.info("在线课学习记录"+allUserList);
return success(true);
}catch(Exception e) {
log.error("记录内容学习完成错误",e);

View File

@@ -10,6 +10,7 @@ import com.xboe.module.course.entity.CourseExam;
import com.xboe.school.study.dao.StudyCourseDao;
import com.xboe.school.study.dao.StudyCourseItemDao;
import com.xboe.school.study.dao.StudyExamDao;
import com.xboe.school.study.entity.StudyCourse;
import com.xboe.school.study.entity.StudyCourseItem;
import com.xboe.school.study.entity.StudyExam;
import com.xboe.school.study.service.IStudyExamService;
@@ -170,15 +171,32 @@ public class StudyExamServiceImpl implements IStudyExamService{
}
builder.addGroupBy("studyId");
List<StudyExam> list1 = dao.findList(builder.builder());
log.info("------------QueryBuilder list1.size = " + list1.size() + ",0 = " + list1.get(0));
for(StudyExam item : list1){
log.info("-----------------CourseId = " + item.getCourseId() + " , StudyId = " + item.getStudyId() + " , StudentId = " + item.getStudentId());
int totalContent = courseContentDao.getCount(item.getCourseId());
log.info("----------准备判断进度-------totalContent = " + totalContent);
scDao.finishCheck1(item.getStudyId(),item.getCourseId(),totalContent);
log.info("----------判断进度完毕----------------------");
if(list1 != null && list1.size() > 0){
log.info("----------StudyExam--QueryBuilder list1.size = " + list1.size() + ",0 = " + list1.get(0));
for(StudyExam item : list1){
log.info("--------------StudyExam---CourseId = " + item.getCourseId() + " , StudyId = " + item.getStudyId() + " , StudentId = " + item.getStudentId());
int totalContent = courseContentDao.getCount(item.getCourseId());
log.info("--------StudyExam--准备判断进度-------totalContent = " + totalContent);
scDao.finishCheck1(item.getStudyId(),item.getCourseId(),totalContent);
log.info("--------StudyExam--判断进度完毕----------------------");
}
}else{
QueryBuilder builder1 = QueryBuilder.from(StudyCourse.class);
if (StringUtils.isEmpty(courseId)){
return;
}
builder1.addFilter(FieldFilters.eq("courseId", courseId));
List<StudyCourse> list2 = scDao.findList(builder1.builder());
log.info("------------StudyCourse list2.size = " + list2.size() + ",0 = " + list2.get(0));
for(StudyCourse item : list2){
log.info("-------------StudyCourse----CourseId = " + item.getCourseId() + " , StudyId = " + item.getId() + " , StudentId = " + item.getAid());
int totalContent = courseContentDao.getCount(item.getCourseId());
log.info("--------StudyCourse--准备判断进度-------totalContent = " + totalContent);
scDao.finishCheck1(item.getId(),item.getCourseId(),totalContent);
log.info("--------StudyCourse--判断进度完毕----------------------");
}
}
} catch (Exception exception) {
exception.printStackTrace();
log.info("------异常----------------------" +exception.getMessage());

View File

@@ -282,11 +282,12 @@ public class StudyServiceImpl implements IStudyService{
return pageList;
}
}
String sql = "select a.id, a.course_id, a.course_name, a.aname, " +
"IFNULL(b.finish_time, '0') as finish_time, IFNULL(b.progress, 0) as progress, IFNULL(b.status, 1) as status " +
"IFNULL(b.finish_time, '0') as finish_time, IFNULL(b.progress, 0) as progress, IFNULL(b.status, 1) as status,b.score " +
"from (select id, course_id, course_name, aname, 0, 1 from boe_study_course where course_id = '" + courseId + "' and aname like '%"+name+"%') a " +
"left join " +
"(select bsc.id, bsc.course_id, bsc.course_name, bsc.aname, item.finish_time, item.progress, item.status " +
"(select bsc.id, bsc.course_id, bsc.course_name, bsc.aname, item.finish_time, item.progress, item.status,MAX(item.score) score " +
"from boe_study_course bsc left join boe_study_course_item item on item.course_id = bsc.course_id and item.study_id = bsc.id " +
"where bsc.course_id = '" + courseId + "' and item.content_id = '" + contentId + "' and item.aname like '%"+name+"%' group by bsc.id) b " +
"on a.course_id = b.course_id and a.id = b.id " +
@@ -315,6 +316,9 @@ public class StudyServiceImpl implements IStudyService{
sc.setProgress(Integer.valueOf(objs[5].toString()));
sc.setStatus(Integer.valueOf(objs[6].toString()));
sc.setAname(objs[3].toString());
if(objs[7] != null){
sc.setScore(Float.valueOf(objs[7].toString()));
}
item.add(sc);
}
log.info("资源完成情况人员"+item);