山东大学软件学院项目实训-创新实训-网络安全靶场实验平台(十一)

目录

一、writeup分页、搜索

二、靶场完成度

三、解散班级


前言:本篇博客主要记录前期代码的细节补充与改进完善。

一、writeup分页、搜索

在之前的博客中,介绍了writeup的分页和搜索是通过mybatis的函数实现的,即:


    @GetMapping("/page")
    public Result findpage(@RequestParam(defaultValue = "1") Integer pageNum,
                           @RequestParam(defaultValue = "5")  Integer pageSize,
                           @RequestParam(defaultValue = "")  String search){
        Page<Forum> forumPage=forumMapper.selectPage(new Page<>(pageNum,pageSize), Wrappers.<Forum>lambdaQuery().like(Forum::getForumid,search));
        return Result.success(forumPage);
    }

但是这存在两个问题:一是不能按照时间倒序排序;二是无法加入某些查询条件,不利于后续审核之类的功能的实现。

因此,我自己手动写了分页代码,不再使用mybatis的selectPage函数。

前端的代码不变,主要是对后端springboot中的controller、mapper进行修改。改动如下:

    @GetMapping("/page")
    public Result findpage(@RequestParam(defaultValue = "1") Integer pageNum,
                           @RequestParam(defaultValue = "5")  Integer pageSize,
                           @RequestParam(defaultValue = "")  String search){
        Integer beginPage=(pageNum-1)*pageSize;
        List<Forum> forumPage=forumMapper.getpage(beginPage,pageSize,search,1);
        Integer totalpage=forumMapper.gettotalpage(search,1);

        com.sducsrp.csrp.entity.Page page=new Page(forumPage,totalpage);
        return Result.success(page);
    }
    @Select("select * from  forum where state=#{state} and content like \"%${search}%\" ORDER BY time DESC limit #{beginPage},#{pageSize}")
    List<Forum> getpage(Integer beginPage, Integer pageSize, String search, int state);

    @Select("select count(*) from  forum where state=#{state} and content like \"%${search}%\" ORDER BY time DESC")
    Integer gettotalpage(String search, int state);

 writeup外观如下图所示:

可以看到,writeup是根据发布时间递减顺序排列的。

e4d770e8eb9c4499b9ed8be7474daae4.png

二、靶场完成度

在课程管理界面中,除了学生的基本信息,还要显示每名学生的靶场完成度。

因此,要在学生提交正确的flag后,使其完成题目数加一。所以在user表里新加入一个属性finished,表示该用户完成的题目数。

具体操作为:

StuProblemController.java中:
    @GetMapping("/recordinfo")
    public Result save(@RequestParam() Integer userid, @RequestParam() String problemid){

        stuProblemMapper.insertinfo(userid,problemid);
        userMapper.updateFinished(userid);
        return Result.success("success");
    }
UserMapper.java中:
    @Update("update user set finished = finished+1 where userid = #{userid}")
    int updateFinished(Integer userid);

 效果如图所示:

外观改进:

              <el-table-column label="靶场完成度">
                <template #default="scope">
                  <el-progress v-if="scope.row.finished<1" style="margin-left: 10px" :percentage="scope.row.finished/12*100" status="warning"/>
                  <el-progress v-if="scope.row.finished>=1" style="margin-left: 10px" :percentage="scope.row.finished/12*100" status="success"/>
                </template>
              </el-table-column>

 

 

三、解散班级

教师可以通过解散班级按钮,删除某个班级的信息。

具体实现如下:

    loadcourse(){
      request.get("/course/getcourselist",{
        params:{
          teacherid:this.teacher.userid
        }
      }).then(res =>{
        console.log(res)
        this.courselist=res.data
        this.currentcourse=res.data[0].courseid
        this.currentcoursename=res.data[0].coursename
        this.getstuinfo(this.currentcourse)
      })

    },

    Dissolve(){
      request.get("/course/delete",{
        params:{
          courseid:this.currentcourse
        }
      }).then(res =>{
        console.log(res);
        if (res.code === '200'){
          alert(this.currentcoursename+"已解散");
          this.loadcourse()
        }else{
          alert(this.currentcoursename+"解散失败");
        }
      })
    },
    @GetMapping("/delete")
    public Result register(@RequestParam() String  courseid) {
        int a=courseMapper.deleteByid(courseid);
        int b=stuCourseMapper.deleteByid(courseid);
        if(a==1&&b==1)
            return Result.success();
        else
            return Result.error();
    }
    @Delete("delete from stucourse where courseid = #{courseid}")
    int deleteByid(String courseid);

    @Delete("delete from course where courseid = #{courseid}")
    int deleteByid(String  courseid);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值