AlgorithmicProblemController.java 5.8 KB
Newer Older
1 2 3 4 5 6 7 8
package com.kwan.springbootkwan.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kwan.springbootkwan.entity.AlgorithmicProblem;
import com.kwan.springbootkwan.entity.Result;
import com.kwan.springbootkwan.entity.dto.AlgorithmicProblemDTO;
9
import com.kwan.springbootkwan.entity.query.AlgorithmicProblemQuery;
10 11
import com.kwan.springbootkwan.service.AlgorithmicProblemService;
import org.apache.commons.lang3.StringUtils;
12
import org.springframework.beans.BeanUtils;
13
import org.springframework.web.bind.annotation.GetMapping;
14 15
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * 算法题(AlgorithmicProblem)表控制层
 *
 * @author makejava
 * @since 2023-10-07 09:15:45
 */
@RestController
@RequestMapping("algorithmicProblem")
public class AlgorithmicProblemController {

    @Resource
    private AlgorithmicProblemService algorithmicProblemService;

    /**
     * 获取面试题的种类的数量
     *
     * @return
     */
    @GetMapping("/questionType")
    public Result questionType() {
        return Result.ok(this.algorithmicProblemService.questionType());
    }

45 46 47 48 49 50 51 52 53 54
    /**
     * 获取面试题的种类的数量
     *
     * @return
     */
    @GetMapping("/allQuestionType")
    public Result allQuestionType() {
        return Result.ok(this.algorithmicProblemService.allQuestionType());
    }

55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
    /**
     * 分页查询所有数据
     *
     * @return 所有数据
     */
    @GetMapping("/page")
    public Result selectAll(@RequestParam Integer page
            , @RequestParam Integer pageSize
            , @RequestParam String questionName
            , @RequestParam Integer questionType) {
        Page<AlgorithmicProblem> pageParm = new Page<>();
        pageParm.setCurrent(page);
        pageParm.setSize(pageSize);
        QueryWrapper<AlgorithmicProblem> wrapper = new QueryWrapper<>();
        wrapper.orderByDesc("id");
        if (questionType != 0) {
            wrapper.eq("question_type", questionType);
        }
        wrapper.eq("is_delete", 0);
        if (StringUtils.isNotEmpty(questionName)) {
            wrapper.like("question_name", questionName);
        }
        return Result.ok(AlgorithmicProblemDTO.Converter.INSTANCE.from(this.algorithmicProblemService.page(pageParm, wrapper)));
    }

    /**
     * 随机一题
     */
    @GetMapping("/random")
    public Result random() {
        QueryWrapper<AlgorithmicProblem> wrapper = new QueryWrapper<>();
        wrapper.eq("is_delete", 0);
        wrapper.orderByAsc("rand()").last("limit 1");
        return Result.ok(AlgorithmicProblemDTO.Converter.INSTANCE.from(this.algorithmicProblemService.getOne(wrapper)));
    }
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165

    /**
     * 新增问题
     *
     * @return 所有数据
     */
    @PostMapping("/add")
    public Result add(@RequestBody AlgorithmicProblemQuery addInfo) {
        final Integer addType = addInfo.getAddType();
        final String questionName = addInfo.getQuestionName();
        if (StringUtils.isEmpty(questionName)) {
            return Result.error("问题不能为空");
        }
        //批量添加
        if (addType == 1) {
            final String[] split = questionName.split("\n");
            for (String str : split) {
                str = str.trim().replace("- ", "");
                if (StringUtils.isEmpty(str)) {
                    continue;
                }
                AlgorithmicProblem algorithmicProblem = new AlgorithmicProblem();
                QueryWrapper<AlgorithmicProblem> wrapper = new QueryWrapper<>();
                wrapper.eq("question_name", str);
                wrapper.eq("is_delete", 0);
                final AlgorithmicProblem one = this.algorithmicProblemService.getOne(wrapper);
                if (one == null) {
                    BeanUtils.copyProperties(addInfo, algorithmicProblem);
                    algorithmicProblem.setQuestionName(str);
                    this.algorithmicProblemService.save(algorithmicProblem);
                }
            }
        } else {
            AlgorithmicProblem algorithmicProblem = new AlgorithmicProblem();
            QueryWrapper<AlgorithmicProblem> wrapper = new QueryWrapper<>();
            wrapper.eq("question_name", questionName);
            wrapper.eq("is_delete", 0);
            final AlgorithmicProblem one = this.algorithmicProblemService.getOne(wrapper);
            if (one == null) {
                BeanUtils.copyProperties(addInfo, algorithmicProblem);
                this.algorithmicProblemService.save(algorithmicProblem);
                return Result.ok();
            } else {
                return Result.error("该面试问题已存在");
            }
        }
        return Result.ok();
    }

    /**
     * 更新面试题
     *
     * @param query
     * @return
     */
    @PostMapping("/update")
    public Result update(@RequestBody AlgorithmicProblemQuery query) {
        AlgorithmicProblem algorithmicProblem = new AlgorithmicProblem();
        BeanUtils.copyProperties(query, algorithmicProblem);
        return Result.ok(this.algorithmicProblemService.updateById(algorithmicProblem));
    }

    /**
     * 删除面试题
     *
     * @param id
     * @return
     */
    @GetMapping("/delete")
    public Result delete(@RequestParam("id") Integer id) {
        AlgorithmicProblem algorithmicProblem = new AlgorithmicProblem();
        algorithmicProblem.setIsDelete(1);
        QueryWrapper<AlgorithmicProblem> wrapper = new QueryWrapper<>();
        wrapper.eq("id", id);
        return Result.ok(this.algorithmicProblemService.update(algorithmicProblem, wrapper));
    }
166 167
}