← back to devSlow__excel_tools_backend

Function bodies 46 total

All specs Real LLM only Function bodies
GlobalExceptionHandler class · java · L13-L39 (27 LOC)
src/main/java/com/slow/excel_tools_backend/common/GlobalExceptionHandler.java
public class GlobalExceptionHandler {

    @ExceptionHandler(IllegalArgumentException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public Result<Void> handleBizException(IllegalArgumentException e) {
        return Result.fail(e.getMessage());
    }

    @ExceptionHandler(MissingServletRequestParameterException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public Result<Void> handleMissingParam(MissingServletRequestParameterException e) {
        return Result.fail("缺少参数: " + e.getParameterName());
    }

    @ExceptionHandler(MethodArgumentTypeMismatchException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public Result<Void> handleTypeMismatch(MethodArgumentTypeMismatchException e) {
        return Result.fail("参数类型错误: " + e.getName());
    }

    @ExceptionHandler(Exception.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public Result<Void> handleException(Exception e) {
        log.error("系统异常", e);
        return Result.fail("系统异常,请稍后重试
handleBizException method · java · L17-L19 (3 LOC)
src/main/java/com/slow/excel_tools_backend/common/GlobalExceptionHandler.java
    public Result<Void> handleBizException(IllegalArgumentException e) {
        return Result.fail(e.getMessage());
    }
handleMissingParam method · java · L23-L25 (3 LOC)
src/main/java/com/slow/excel_tools_backend/common/GlobalExceptionHandler.java
    public Result<Void> handleMissingParam(MissingServletRequestParameterException e) {
        return Result.fail("缺少参数: " + e.getParameterName());
    }
handleTypeMismatch method · java · L29-L31 (3 LOC)
src/main/java/com/slow/excel_tools_backend/common/GlobalExceptionHandler.java
    public Result<Void> handleTypeMismatch(MethodArgumentTypeMismatchException e) {
        return Result.fail("参数类型错误: " + e.getName());
    }
handleException method · java · L35-L38 (4 LOC)
src/main/java/com/slow/excel_tools_backend/common/GlobalExceptionHandler.java
    public Result<Void> handleException(Exception e) {
        log.error("系统异常", e);
        return Result.fail("系统异常,请稍后重试");
    }
Result class · java · L6-L36 (31 LOC)
src/main/java/com/slow/excel_tools_backend/common/Result.java
public class Result<T> {

    private int code;
    private String msg;
    private T data;

    private Result() {}

    public static <T> Result<T> ok() {
        return ok(null);
    }

    public static <T> Result<T> ok(T data) {
        Result<T> r = new Result<>();
        r.setCode(0);
        r.setMsg("success");
        r.setData(data);
        return r;
    }

    public static <T> Result<T> fail(String msg) {
        return fail(1, msg);
    }

    public static <T> Result<T> fail(int code, String msg) {
        Result<T> r = new Result<>();
        r.setCode(code);
        r.setMsg(msg);
        return r;
    }
}
ok method · java · L14-L16 (3 LOC)
src/main/java/com/slow/excel_tools_backend/common/Result.java
    public static <T> Result<T> ok() {
        return ok(null);
    }
Repobility · code-quality intelligence platform · https://repobility.com
ok method · java · L18-L24 (7 LOC)
src/main/java/com/slow/excel_tools_backend/common/Result.java
    public static <T> Result<T> ok(T data) {
        Result<T> r = new Result<>();
        r.setCode(0);
        r.setMsg("success");
        r.setData(data);
        return r;
    }
fail method · java · L26-L28 (3 LOC)
src/main/java/com/slow/excel_tools_backend/common/Result.java
    public static <T> Result<T> fail(String msg) {
        return fail(1, msg);
    }
fail method · java · L30-L35 (6 LOC)
src/main/java/com/slow/excel_tools_backend/common/Result.java
    public static <T> Result<T> fail(int code, String msg) {
        Result<T> r = new Result<>();
        r.setCode(code);
        r.setMsg(msg);
        return r;
    }
MybatisPlusConfig class · java · L10-L18 (9 LOC)
src/main/java/com/slow/excel_tools_backend/config/MybatisPlusConfig.java
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}
mybatisPlusInterceptor method · java · L13-L17 (5 LOC)
src/main/java/com/slow/excel_tools_backend/config/MybatisPlusConfig.java
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
AuthController class · java · L18-L39 (22 LOC)
src/main/java/com/slow/excel_tools_backend/controller/AuthController.java
public class AuthController {

    private final UserService userService;

    @PostMapping("/login")
    public Result<Map<String, Object>> login(@RequestBody Map<String, String> body) {
        String code = body.get("code");
        if (code == null || code.isEmpty()) {
            return Result.fail("code不能为空");
        }

        // TODO: 调用微信 API 用 code 换取 openid,暂时用 code 作为 openid
        String openid = code;

        User user = userService.loginOrRegister(openid);

        Map<String, Object> data = new HashMap<>();
        data.put("userId", user.getId());
        data.put("openid", user.getOpenid());
        return Result.ok(data);
    }
}
login method · java · L23-L38 (16 LOC)
src/main/java/com/slow/excel_tools_backend/controller/AuthController.java
    public Result<Map<String, Object>> login(@RequestBody Map<String, String> body) {
        String code = body.get("code");
        if (code == null || code.isEmpty()) {
            return Result.fail("code不能为空");
        }

        // TODO: 调用微信 API 用 code 换取 openid,暂时用 code 作为 openid
        String openid = code;

        User user = userService.loginOrRegister(openid);

        Map<String, Object> data = new HashMap<>();
        data.put("userId", user.getId());
        data.put("openid", user.getOpenid());
        return Result.ok(data);
    }
HealthController class · java · L8-L14 (7 LOC)
src/main/java/com/slow/excel_tools_backend/controller/HealthController.java
public class HealthController {

    @GetMapping("/health")
    public Result<String> health() {
        return Result.ok("ok");
    }
}
Repobility — same analyzer, your code, free for public repos · /scan/
health method · java · L11-L13 (3 LOC)
src/main/java/com/slow/excel_tools_backend/controller/HealthController.java
    public Result<String> health() {
        return Result.ok("ok");
    }
ParseController class · java · L17-L27 (11 LOC)
src/main/java/com/slow/excel_tools_backend/controller/ParseController.java
public class ParseController {

    private final ParseService parseService;

    @PostMapping("/text")
    public Result<Task> parseText(@RequestBody Map<String, String> body) {
        String text = body.get("text");
        Task task = parseService.parseText(text);
        return Result.ok(task);
    }
}
parseText method · java · L22-L26 (5 LOC)
src/main/java/com/slow/excel_tools_backend/controller/ParseController.java
    public Result<Task> parseText(@RequestBody Map<String, String> body) {
        String text = body.get("text");
        Task task = parseService.parseText(text);
        return Result.ok(task);
    }
TaskController class · java · L17-L62 (46 LOC)
src/main/java/com/slow/excel_tools_backend/controller/TaskController.java
public class TaskController {

    private final TaskService taskService;

    // TODO: 从请求头 token 中解析 userId,暂时通过请求参数传递
    private Long getUserId() {
        return 1L;
    }

    @GetMapping
    public Result<List<Task>> list() {
        return Result.ok(taskService.listByUserId(getUserId()));
    }

    @PostMapping
    public Result<Task> create(@RequestBody Task task) {
        task.setUserId(getUserId());
        return Result.ok(taskService.create(task));
    }

    @GetMapping("/{id}")
    public Result<Task> detail(@PathVariable Long id) {
        return Result.ok(taskService.getById(id, getUserId()));
    }

    @PutMapping("/{id}")
    public Result<Task> update(@PathVariable Long id, @RequestBody Task task) {
        return Result.ok(taskService.update(id, getUserId(), task));
    }

    @DeleteMapping("/{id}")
    public Result<Void> delete(@PathVariable Long id) {
        taskService.delete(id, getUserId());
        return Result.ok();
    }

    @GetMapping("/{id}/stats
getUserId method · java · L22-L24 (3 LOC)
src/main/java/com/slow/excel_tools_backend/controller/TaskController.java
    private Long getUserId() {
        return 1L;
    }
list method · java · L27-L29 (3 LOC)
src/main/java/com/slow/excel_tools_backend/controller/TaskController.java
    public Result<List<Task>> list() {
        return Result.ok(taskService.listByUserId(getUserId()));
    }
create method · java · L32-L35 (4 LOC)
src/main/java/com/slow/excel_tools_backend/controller/TaskController.java
    public Result<Task> create(@RequestBody Task task) {
        task.setUserId(getUserId());
        return Result.ok(taskService.create(task));
    }
detail method · java · L38-L40 (3 LOC)
src/main/java/com/slow/excel_tools_backend/controller/TaskController.java
    public Result<Task> detail(@PathVariable Long id) {
        return Result.ok(taskService.getById(id, getUserId()));
    }
Repobility · MCP-ready · https://repobility.com
update method · java · L43-L45 (3 LOC)
src/main/java/com/slow/excel_tools_backend/controller/TaskController.java
    public Result<Task> update(@PathVariable Long id, @RequestBody Task task) {
        return Result.ok(taskService.update(id, getUserId(), task));
    }
delete method · java · L48-L51 (4 LOC)
src/main/java/com/slow/excel_tools_backend/controller/TaskController.java
    public Result<Void> delete(@PathVariable Long id) {
        taskService.delete(id, getUserId());
        return Result.ok();
    }
stats method · java · L54-L56 (3 LOC)
src/main/java/com/slow/excel_tools_backend/controller/TaskController.java
    public Result<Map<String, Object>> stats(@PathVariable Long id) {
        return Result.ok(taskService.stats(id, getUserId()));
    }
export method · java · L59-L61 (3 LOC)
src/main/java/com/slow/excel_tools_backend/controller/TaskController.java
    public void export(@PathVariable Long id, HttpServletResponse response) throws IOException {
        taskService.exportExcel(id, getUserId(), response);
    }
ColumnDefine class · java · L6-L9 (4 LOC)
src/main/java/com/slow/excel_tools_backend/entity/ColumnDefine.java
public class ColumnDefine {
    private String name;
    private String type;
}
Task class · java · L16-L34 (19 LOC)
src/main/java/com/slow/excel_tools_backend/entity/Task.java
public class Task {

    @TableId(type = IdType.AUTO)
    private Long id;

    private Long userId;

    private String title;

    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<ColumnDefine> columns;

    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<Map<String, Object>> rows;

    private LocalDateTime createdAt;

    private LocalDateTime updatedAt;
}
User class · java · L12-L26 (15 LOC)
src/main/java/com/slow/excel_tools_backend/entity/User.java
public class User {

    @TableId(type = IdType.AUTO)
    private Long id;

    private String openid;

    private String nickname;

    private String avatar;

    private LocalDateTime createdAt;

    private LocalDateTime updatedAt;
}
ExcelToolsBackendApplication class · java · L9-L15 (7 LOC)
src/main/java/com/slow/excel_tools_backend/ExcelToolsBackendApplication.java
public class ExcelToolsBackendApplication {

    public static void main(String[] args) {
        SpringApplication.run(ExcelToolsBackendApplication.class, args);
    }

}
Citation: Repobility (2026). State of AI-Generated Code. https://repobility.com/research/
main method · java · L11-L13 (3 LOC)
src/main/java/com/slow/excel_tools_backend/ExcelToolsBackendApplication.java
    public static void main(String[] args) {
        SpringApplication.run(ExcelToolsBackendApplication.class, args);
    }
ParseServiceImpl class · java · L14-L86 (73 LOC)
src/main/java/com/slow/excel_tools_backend/service/impl/ParseServiceImpl.java
public class ParseServiceImpl implements ParseService {

    @Override
    public Task parseText(String text) {
        if (text == null || text.trim().isEmpty()) {
            throw new IllegalArgumentException("文本内容不能为空");
        }

        String[] lines = text.split("\n");
        List<String[]> parsedLines = new ArrayList<>();
        int maxCols = 0;

        for (String line : lines) {
            line = line.trim();
            if (line.isEmpty()) {
                continue;
            }
            String[] cols = splitLine(line);
            if (cols.length > maxCols) {
                maxCols = cols.length;
            }
            parsedLines.add(cols);
        }

        if (parsedLines.isEmpty()) {
            throw new IllegalArgumentException("未解析到有效数据");
        }

        List<ColumnDefine> columns = new ArrayList<>();
        if (maxCols == 1) {
            ColumnDefine col = new ColumnDefine();
            col.setName("姓名");
            col.setType("text");
     
parseText method · java · L17-L72 (56 LOC)
src/main/java/com/slow/excel_tools_backend/service/impl/ParseServiceImpl.java
    public Task parseText(String text) {
        if (text == null || text.trim().isEmpty()) {
            throw new IllegalArgumentException("文本内容不能为空");
        }

        String[] lines = text.split("\n");
        List<String[]> parsedLines = new ArrayList<>();
        int maxCols = 0;

        for (String line : lines) {
            line = line.trim();
            if (line.isEmpty()) {
                continue;
            }
            String[] cols = splitLine(line);
            if (cols.length > maxCols) {
                maxCols = cols.length;
            }
            parsedLines.add(cols);
        }

        if (parsedLines.isEmpty()) {
            throw new IllegalArgumentException("未解析到有效数据");
        }

        List<ColumnDefine> columns = new ArrayList<>();
        if (maxCols == 1) {
            ColumnDefine col = new ColumnDefine();
            col.setName("姓名");
            col.setType("text");
            columns.add(col);
        } else {
            String[] headerLi
splitLine method · java · L74-L85 (12 LOC)
src/main/java/com/slow/excel_tools_backend/service/impl/ParseServiceImpl.java
    private String[] splitLine(String line) {
        if (line.contains("\t")) {
            return line.split("\t");
        }
        if (line.contains(",")) {
            return line.split(",");
        }
        if (line.contains("  ")) {
            return line.split("\\s{2,}");
        }
        return line.split("\\s+");
    }
TaskServiceImpl class · java · L23-L122 (100 LOC)
src/main/java/com/slow/excel_tools_backend/service/impl/TaskServiceImpl.java
public class TaskServiceImpl implements TaskService {

    private final TaskMapper taskMapper;

    @Override
    public List<Task> listByUserId(Long userId) {
        LambdaQueryWrapper<Task> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(Task::getUserId, userId)
               .orderByDesc(Task::getCreatedAt);
        return taskMapper.selectList(wrapper);
    }

    @Override
    public Task getById(Long id, Long userId) {
        Task task = taskMapper.selectById(id);
        if (task == null || !task.getUserId().equals(userId)) {
            throw new IllegalArgumentException("任务不存在或无权访问");
        }
        return task;
    }

    @Override
    public Task create(Task task) {
        taskMapper.insert(task);
        return task;
    }

    @Override
    public Task update(Long id, Long userId, Task update) {
        Task existing = getById(id, userId);
        existing.setTitle(update.getTitle());
        existing.setColumns(update.getColumns());
        existing.setRo
listByUserId method · java · L28-L33 (6 LOC)
src/main/java/com/slow/excel_tools_backend/service/impl/TaskServiceImpl.java
    public List<Task> listByUserId(Long userId) {
        LambdaQueryWrapper<Task> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(Task::getUserId, userId)
               .orderByDesc(Task::getCreatedAt);
        return taskMapper.selectList(wrapper);
    }
getById method · java · L36-L42 (7 LOC)
src/main/java/com/slow/excel_tools_backend/service/impl/TaskServiceImpl.java
    public Task getById(Long id, Long userId) {
        Task task = taskMapper.selectById(id);
        if (task == null || !task.getUserId().equals(userId)) {
            throw new IllegalArgumentException("任务不存在或无权访问");
        }
        return task;
    }
create method · java · L45-L48 (4 LOC)
src/main/java/com/slow/excel_tools_backend/service/impl/TaskServiceImpl.java
    public Task create(Task task) {
        taskMapper.insert(task);
        return task;
    }
Repobility · code-quality intelligence platform · https://repobility.com
update method · java · L51-L58 (8 LOC)
src/main/java/com/slow/excel_tools_backend/service/impl/TaskServiceImpl.java
    public Task update(Long id, Long userId, Task update) {
        Task existing = getById(id, userId);
        existing.setTitle(update.getTitle());
        existing.setColumns(update.getColumns());
        existing.setRows(update.getRows());
        taskMapper.updateById(existing);
        return existing;
    }
delete method · java · L61-L64 (4 LOC)
src/main/java/com/slow/excel_tools_backend/service/impl/TaskServiceImpl.java
    public void delete(Long id, Long userId) {
        Task existing = getById(id, userId);
        taskMapper.deleteById(existing.getId());
    }
stats method · java · L67-L84 (18 LOC)
src/main/java/com/slow/excel_tools_backend/service/impl/TaskServiceImpl.java
    public Map<String, Object> stats(Long id, Long userId) {
        Task task = getById(id, userId);
        Map<String, Object> result = new LinkedHashMap<>();
        result.put("total", task.getRows() != null ? task.getRows().size() : 0);

        if (task.getColumns() != null && task.getRows() != null) {
            for (ColumnDefine col : task.getColumns()) {
                Map<String, Integer> countMap = new LinkedHashMap<>();
                for (Map<String, Object> row : task.getRows()) {
                    Object val = row.get(col.getName());
                    String key = val != null ? val.toString() : "空";
                    countMap.merge(key, 1, Integer::sum);
                }
                result.put(col.getName(), countMap);
            }
        }
        return result;
    }
exportExcel method · java · L87-L121 (35 LOC)
src/main/java/com/slow/excel_tools_backend/service/impl/TaskServiceImpl.java
    public void exportExcel(Long id, Long userId, HttpServletResponse response) throws IOException {
        Task task = getById(id, userId);

        String fileName = (task.getTitle() != null ? task.getTitle() : "export") + ".xlsx";
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setHeader("Content-Disposition",
                "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));

        List<String> headers = new ArrayList<>();
        if (task.getColumns() != null) {
            for (ColumnDefine col : task.getColumns()) {
                headers.add(col.getName());
            }
        }

        List<List<Object>> dataList = new ArrayList<>();
        if (task.getRows() != null) {
            for (Map<String, Object> row : task.getRows()) {
                List<Object> rowData = new ArrayList<>();
                for (String header : headers) {
                    rowData.add(row.getOrDefault(head
UserServiceImpl class · java · L12-L33 (22 LOC)
src/main/java/com/slow/excel_tools_backend/service/impl/UserServiceImpl.java
public class UserServiceImpl implements UserService {

    private final UserMapper userMapper;

    @Override
    public User loginOrRegister(String openid) {
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(User::getOpenid, openid);
        User user = userMapper.selectOne(wrapper);
        if (user == null) {
            user = new User();
            user.setOpenid(openid);
            userMapper.insert(user);
        }
        return user;
    }

    @Override
    public User getById(Long id) {
        return userMapper.selectById(id);
    }
}
loginOrRegister method · java · L17-L27 (11 LOC)
src/main/java/com/slow/excel_tools_backend/service/impl/UserServiceImpl.java
    public User loginOrRegister(String openid) {
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(User::getOpenid, openid);
        User user = userMapper.selectOne(wrapper);
        if (user == null) {
            user = new User();
            user.setOpenid(openid);
            userMapper.insert(user);
        }
        return user;
    }
getById method · java · L30-L32 (3 LOC)
src/main/java/com/slow/excel_tools_backend/service/impl/UserServiceImpl.java
    public User getById(Long id) {
        return userMapper.selectById(id);
    }