Commit dc33b5a0 authored by xingyuji's avatar xingyuji

1.根据节Id查询该节已完成实验的学生代码信息(增加筛选条件is_complete)---BChapterRepository.java;

2.增加上传license文件接口,主要逻辑操作(jwt前置过滤器判断url名取消拦截,先删除旧license,写入新license,调用验证license方法更新redis状态)---JwtAuthenTokenFilter.java,BFileController.java,BFileServiceImpl.java,BFileService.java;
parent 0b028667
......@@ -280,7 +280,7 @@ public interface BChapterRepository extends BaseMapper<BChapter> {
"LEFT JOIN b_r_student_chapter bsc on bc.business_id = bsc.chapter_id\n" +
"LEFT JOIN b_student bs on bsc.student_id = bs.business_id\n" +
"LEFT JOIN s_user su on su.login_name = bs.`code` \n" +
"where bc.business_id = #{chapterId} and bsc.score = '-1'</script>")
"where bc.business_id = #{chapterId} and bsc.score = '-1' and bsc.is_complete = '1'</script>")
@ResultMap(value = "BaseResultMap" )
List<BChapter> queryBchapterStudentById(String chapterId);
......
......@@ -10,8 +10,10 @@ import org.rcisoft.common.component.Global;
import org.rcisoft.common.controller.PaginationController;
import org.rcisoft.common.model.GridModel;
import org.rcisoft.core.constant.MessageConstant;
import org.rcisoft.core.exception.ServiceException;
import org.rcisoft.core.model.PersistModel;
import org.rcisoft.core.result.Result;
import org.rcisoft.core.result.ResultServiceEnums;
import org.rcisoft.core.util.UserUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
......@@ -122,6 +124,30 @@ public class BFileController extends PaginationController<BFile> {
videoUrl);
}
@ApiOperation(value="上传license", notes="上传license证书文件")
@ApiImplicitParams({
@ApiImplicitParam(name = "file", value = "license文件", required = true, dataType = "MultipartFile")})
@PostMapping(value = "/uploadLicenseWithoutAuth")
public Result uploadLicense(HttpServletRequest request) {
List<MultipartFile> list = ((MultipartHttpServletRequest)request).getFiles("file");
try {
if(list.size()>0){
bFileService.uploadLicense(list.get(0));
}else{
throw new ServiceException(ResultServiceEnums.UPLOAD_ERROR);
}
} catch (IOException e) {
e.printStackTrace();
throw new ServiceException(ResultServiceEnums.UPLOAD_ERROR);
}
return Result.builder(new PersistModel(1),
"license上传成功",
MessageConstant.MESSAGE_ALERT_ERROR,
"");
}
/**
* 下载文件
* @param chapterId
......
......@@ -5,6 +5,7 @@ import org.rcisoft.core.aop.PageUtil;
import org.rcisoft.core.model.PersistModel;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
/**
......@@ -50,4 +51,10 @@ public interface BFileService {
public String uploadVideoToServer(List<MultipartFile> list, BFile bFile, String token);
public BFile queryFileUrlByChapterId(String chapterId);
/**
* 将license证书文件输出到指定路径下
* @param file
*/
public void uploadLicense(MultipartFile file) throws IOException;
}
......@@ -8,6 +8,8 @@ import org.rcisoft.business.bfile.service.BFileService;
import org.rcisoft.business.bsl.task.SlTask;
import org.rcisoft.common.component.Global;
import org.rcisoft.core.aop.PageUtil;
import org.rcisoft.core.bean.RcLkConfigBean;
import org.rcisoft.core.component.RcVerify;
import org.rcisoft.core.constant.DelStatus;
import org.rcisoft.core.exception.ServiceException;
import org.rcisoft.core.model.PersistModel;
......@@ -42,6 +44,11 @@ public class BFileServiceImpl implements BFileService {
private SlTask slTask;
@Autowired
private Global global;
@Autowired
private RcVerify rcVerify;
@Autowired
private RcLkConfigBean rcLkConfigBean;
@Override
public BFile selectOne(String businessId){
......@@ -282,6 +289,32 @@ public class BFileServiceImpl implements BFileService {
return bFileRepository.queryFileUrlByChapterId(chapterId);
}
@Override
public void uploadLicense(MultipartFile file) {
try {
BufferedOutputStream stream = null;
String path = global.getBASE_UPLOAD_SERVER_LOCATION() + rcLkConfigBean.getLicPath();
File oldFile = new File(path);
if(oldFile.exists()){
FileUtils.forceDelete(oldFile);
}
File newFile = new File(path);
stream = new BufferedOutputStream(new FileOutputStream(newFile));
byte[] bytes = file.getBytes();
stream.write(bytes,0,bytes.length);
stream.flush();
stream.close();
rcVerify.verify();
} catch (Exception e) {
e.printStackTrace();
throw new ServiceException(ResultServiceEnums.UPLOAD_ERROR);
}
return;
}
public String uploadFileToServer(MultipartFile file, BFile bFile) throws Exception{
String fileUrl = "";
......@@ -304,4 +337,7 @@ public class BFileServiceImpl implements BFileService {
}
return fileUrl;
}
}
......@@ -46,14 +46,19 @@ public class JwtAuthenTokenFilter extends OncePerRequestFilter {
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE,PUT");
response.setHeader("Access-Control-Allow-Headers","Authorization,Origin,X-Requested-With,X-File-Name,Content-Type, Accept");
log.info("*********************************过滤器被使用**************************");
String reqUrl = request.getRequestURL().toString();
int permitRes = reqUrl.indexOf("/BVideo/uploadLicense");
/**/
String lk = rcRedisServiceImpl.get("lk");
if(StringUtils.isBlank(lk) || !"1".equals(lk)){
Result result = new Result();
result.setCode(202);
ResponseUtil.responseResult(response, result);
return;
if(permitRes==-1) {
Result result = new Result();
result.setCode(202);
ResponseUtil.responseResult(response, result);
return;
}
}
// 取得header
String authHeader = request.getHeader(this.tokenHeader);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment