瀏覽代碼

Merge branch 'fix-bug-search' into 'Release'

Fix bug search



See merge request !321

tangss 8 年之前
父節點
當前提交
86df02b695

+ 1 - 5
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/fromKibug/BugController.java

@@ -18,6 +18,7 @@ import cn.iselab.mooctest.site.web.ctrl.BaseController;
 import cn.iselab.mooctest.site.web.data.fromKibug.BugVO;
 import cn.iselab.mooctest.site.web.exception.IllegalOperationException;
 import cn.iselab.mooctest.site.web.logic.BugLogic;
+import cn.iselab.mooctest.site.web.logic.ReportLogic;
 import cn.iselab.mooctest.site.web.util.Converter;
 import net.sf.ehcache.transaction.xa.EhcacheXAException;
 import org.apache.shiro.SecurityUtils;
@@ -42,11 +43,6 @@ public class BugController extends BaseController{
 
     @RequestMapping(value= UrlConstants.API_KIBUG+"bug", method = RequestMethod.GET)
     public Map<String, Object> search(@RequestParam(name = "reportId", required = true) Long reportId) throws Exception {
-        User user=(User) SecurityUtils.getSubject().getSession().getAttribute("User");
-        String permissionStr=user.getId().toString()+ ":report:view:" +reportId.toString();
-        if(!SecurityUtils.getSubject().isPermitted(new ReportPermission(permissionStr))){
-            throw new UnauthorizedException("unauthorized");
-        }
 
         List<BugVO> bugVoList = bugLogic.getBugListByReportId(reportId);
 

+ 15 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/BugLogicImpl.java

@@ -7,6 +7,7 @@ import cn.iselab.mooctest.site.models.fromKibug.Bug;
 import cn.iselab.mooctest.site.models.fromKibug.CaseTake;
 import cn.iselab.mooctest.site.models.fromKibug.Report;
 import cn.iselab.mooctest.site.models.instancePermission.ReportPermission;
+import cn.iselab.mooctest.site.models.instancePermission.TaskPermission;
 import cn.iselab.mooctest.site.service.CaseService;
 import cn.iselab.mooctest.site.service.TaskService;
 import cn.iselab.mooctest.site.service.fromKibug.BugService;
@@ -15,6 +16,7 @@ import cn.iselab.mooctest.site.service.fromKibug.KibugTaskService;
 import cn.iselab.mooctest.site.service.fromKibug.ReportService;
 import cn.iselab.mooctest.site.web.data.fromKibug.BugVO;
 import cn.iselab.mooctest.site.web.data.wrapper.BugVOWrapper;
+import cn.iselab.mooctest.site.web.exception.HttpBadRequestException;
 import cn.iselab.mooctest.site.web.exception.IllegalOperationException;
 import cn.iselab.mooctest.site.web.logic.BugLogic;
 import cn.iselab.mooctest.site.web.logic.ReportLogic;
@@ -49,6 +51,19 @@ public class BugLogicImpl implements BugLogic{
 
     @Override
     public List<BugVO> getBugListByReportId(long reportId) throws Exception{
+        Report report=reportService.getReport(reportId);
+        if(report==null)
+            throw new HttpBadRequestException("report id not exist");
+        CaseTake caseTake=caseService.getCaseTakeById(report.getCaseTakeId());
+        User user=(User) SecurityUtils.getSubject().getSession().getAttribute("User");
+        String permissionStr=user.getId().toString()+ ":report:view:" +String.valueOf(reportId);
+        if(!SecurityUtils.getSubject().isPermitted(new ReportPermission(permissionStr))){
+            String permissionStr2=user.getId().toString()+":task:score:"+String.valueOf(caseTake.getTaskId());
+            if(!SecurityUtils.getSubject().isPermitted(new TaskPermission(permissionStr2))) {
+                throw new UnauthorizedException("unauthorized");
+            }
+        }
+
         List<Bug> bugList = bugService.getBugsByReportId(reportId);
 
         List<BugVO> bugVoList = new ArrayList<>();

+ 6 - 4
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/ReportLogicImpl.java

@@ -179,15 +179,17 @@ public class ReportLogicImpl implements ReportLogic {
 
     private Report updateReportInfo(Report report, ReportVO reportVO) {
 
-        report.setBugAmount(reportVO.getBugAmount());
         report.setDeviceBrand(reportVO.getDeviceBrand());
         report.setDeviceModel(reportVO.getDeviceModel());
         report.setDeviceOs(reportVO.getDeviceOs());
         report.setFromCloud(reportVO.getFromCloud());
-        report.setLogLocation(reportVO.getLogLocation());
+        if(reportVO.getLogLocation()!=null)
+            report.setLogLocation(reportVO.getLogLocation());
         report.setName(reportVO.getName());
-        report.setReportLocation(reportVO.getReportLocation());
-        report.setScriptLocation(reportVO.getScriptLocation());
+        if(reportVO.getReportLocation()!=null)
+            report.setReportLocation(reportVO.getReportLocation());
+        if(reportVO.getScriptLocation()!=null)
+            report.setScriptLocation(reportVO.getScriptLocation());
         if(reportVO.getReportCases()!=null) {
             JSONArray jsonArray = new JSONArray(reportVO.getReportCases());
             report.setDescription(jsonArray.toString());