Search in sources :

Example 1 with Page

use of cn.hutool.db.Page in project Jpom by dromara.

the class BaseDbService method autoLoopClear.

/**
 * 自动清理数据接口
 *
 * @param timeClo  时间字段
 * @param maxCount 最大数量
 * @param consumer 查询出超过范围的时间回调
 */
protected void autoLoopClear(String timeClo, int maxCount, Consumer<Entity> whereCon, Consumer<T> consumer) {
    if (maxCount <= 0) {
        return;
    }
    ThreadUtil.execute(() -> {
        Entity entity = Entity.create(super.getTableName());
        long timeValue = this.getLastTimeValue(timeClo, maxCount, whereCon);
        if (timeValue <= 0) {
            return;
        }
        if (whereCon != null) {
            // 条件
            whereCon.accept(entity);
        }
        entity.set(timeClo, "< " + timeValue);
        while (true) {
            Page page = new Page(1, 50);
            page.addOrder(new Order(timeClo, Direction.DESC));
            PageResultDto<T> pageResult = super.listPage(entity, page);
            if (pageResult.isEmpty()) {
                return;
            }
            pageResult.each(consumer);
            List<String> ids = pageResult.getResult().stream().map(BaseDbModel::getId).collect(Collectors.toList());
            super.delByKey(ids, null);
        }
    });
}
Also used : Order(cn.hutool.db.sql.Order) Entity(cn.hutool.db.Entity) Page(cn.hutool.db.Page)

Example 2 with Page

use of cn.hutool.db.Page in project Jpom by dromara.

the class RepositoryController method giteeRepos.

/**
 * gitee 仓库
 *
 * @param token 个人令牌
 * @param page  分页
 * @return page
 */
private PageResultDto<JSONObject> giteeRepos(String token, Page page) {
    // 
    HttpResponse userResponse = HttpUtil.createGet("https://gitee.com/api/v5/user").form("access_token", token).execute();
    Assert.state(userResponse.isOk(), "令牌不正确:" + userResponse.body());
    JSONObject userBody = JSONObject.parseObject(userResponse.body());
    String username = userBody.getString("login");
    // 拉取仓库信息
    HttpResponse reposResponse = HttpUtil.createGet("https://gitee.com/api/v5/user/repos").form("access_token", token).form("sort", "pushed").form("page", page.getPageNumber()).form("per_page", page.getPageSize()).execute();
    String body = reposResponse.body();
    Assert.state(userResponse.isOk(), "拉取仓库信息错误:" + body);
    String totalCountStr = reposResponse.header("total_count");
    int totalCount = Convert.toInt(totalCountStr, 0);
    // String totalPage = reposResponse.header("total_page");
    JSONArray jsonArray = JSONArray.parseArray(body);
    List<JSONObject> objects = jsonArray.stream().map(o -> {
        JSONObject repo = (JSONObject) o;
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name", repo.getString("name"));
        String htmlUrl = repo.getString("html_url");
        jsonObject.put("url", htmlUrl);
        jsonObject.put("full_name", repo.getString("full_name"));
        jsonObject.put("private", repo.getBooleanValue("private"));
        jsonObject.put("description", repo.getString("description"));
        // 
        jsonObject.put("username", username);
        jsonObject.put("exists", RepositoryController.this.checkRepositoryUrl(null, htmlUrl));
        return jsonObject;
    }).collect(Collectors.toList());
    // 
    PageResultDto<JSONObject> pageResultDto = new PageResultDto<>(page.getPageNumber(), page.getPageSize(), totalCount);
    pageResultDto.setResult(objects);
    return pageResultDto;
}
Also used : PageResultDto(io.jpom.model.PageResultDto) BuildUtil(io.jpom.build.BuildUtil) DefaultSystemLog(cn.jiangzeyin.common.DefaultSystemLog) io.jpom.plugin(io.jpom.plugin) Page(cn.hutool.db.Page) Feature(io.jpom.permission.Feature) ServletUtil(cn.hutool.extra.servlet.ServletUtil) JpomRuntimeException(io.jpom.system.JpomRuntimeException) JsonMessage(cn.jiangzeyin.common.JsonMessage) JSONArray(com.alibaba.fastjson.JSONArray) HttpServletRequest(javax.servlet.http.HttpServletRequest) HttpUtil(cn.hutool.http.HttpUtil) HttpResponse(cn.hutool.http.HttpResponse) Map(java.util.Map) GetMapping(org.springframework.web.bind.annotation.GetMapping) URLUtil(cn.hutool.core.util.URLUtil) MethodFeature(io.jpom.permission.MethodFeature) HttpRequest(cn.hutool.http.HttpRequest) PostMapping(org.springframework.web.bind.annotation.PostMapping) RepositoryService(io.jpom.service.dblog.RepositoryService) ClassFeature(io.jpom.permission.ClassFeature) RestController(org.springframework.web.bind.annotation.RestController) Collectors(java.util.stream.Collectors) File(java.io.File) HttpStatus(org.springframework.http.HttpStatus) Tuple(cn.hutool.core.lang.Tuple) StrUtil(cn.hutool.core.util.StrUtil) List(java.util.List) ValidatorItem(cn.jiangzeyin.common.validator.ValidatorItem) RepositoryModel(io.jpom.model.data.RepositoryModel) Const(io.jpom.common.Const) BuildInfoService(io.jpom.service.dblog.BuildInfoService) Convert(cn.hutool.core.convert.Convert) FileUtil(cn.hutool.core.io.FileUtil) JSONObject(com.alibaba.fastjson.JSONObject) Entity(cn.hutool.db.Entity) GitProtocolEnum(io.jpom.model.enums.GitProtocolEnum) BaseServerController(io.jpom.common.BaseServerController) Validator(cn.hutool.core.lang.Validator) Assert(org.springframework.util.Assert) JSONObject(com.alibaba.fastjson.JSONObject) JSONArray(com.alibaba.fastjson.JSONArray) HttpResponse(cn.hutool.http.HttpResponse) PageResultDto(io.jpom.model.PageResultDto)

Example 3 with Page

use of cn.hutool.db.Page in project Jpom by dromara.

the class RepositoryController method gitlabRepos.

/**
 * gitlab 仓库
 * <p>
 * https://docs.gitlab.com/ee/api/projects.html#list-all-projects
 *
 * @param token 个人令牌
 * @param page  分页
 * @return page
 */
private PageResultDto<JSONObject> gitlabRepos(String token, Page page) {
    // 
    HttpResponse userResponse = HttpUtil.createGet("https://gitlab.com/api/v4/user").form("access_token", token).execute();
    Assert.state(userResponse.isOk(), "令牌不正确:" + userResponse.body());
    JSONObject userBody = JSONObject.parseObject(userResponse.body());
    String username = userBody.getString("username");
    // 拉取仓库信息
    HttpResponse reposResponse = HttpUtil.createGet("https://gitlab.com/api/v4/projects").form("private_token", token).form("membership", true).form("simple", true).form("order_by", "updated_at").form("page", page.getPageNumber()).form("per_page", Math.max(page.getPageSize(), 15)).execute();
    String body = reposResponse.body();
    Assert.state(userResponse.isOk(), "拉取仓库信息错误:" + body);
    String totalCountStr = reposResponse.header("X-Total");
    int totalCount = Convert.toInt(totalCountStr, 0);
    // String totalPage = reposResponse.header("total_page");
    JSONArray jsonArray = JSONArray.parseArray(body);
    List<JSONObject> objects = jsonArray.stream().map(o -> {
        JSONObject repo = (JSONObject) o;
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name", repo.getString("name"));
        String htmlUrl = repo.getString("http_url_to_repo");
        jsonObject.put("url", htmlUrl);
        jsonObject.put("full_name", repo.getString("path_with_namespace"));
        jsonObject.put("private", StrUtil.equalsIgnoreCase("private", repo.getString("visibility")));
        jsonObject.put("description", repo.getString("description"));
        // 
        jsonObject.put("username", username);
        jsonObject.put("exists", RepositoryController.this.checkRepositoryUrl(null, htmlUrl));
        return jsonObject;
    }).collect(Collectors.toList());
    // 
    PageResultDto<JSONObject> pageResultDto = new PageResultDto<>(page.getPageNumber(), page.getPageSize(), totalCount);
    pageResultDto.setResult(objects);
    return pageResultDto;
}
Also used : PageResultDto(io.jpom.model.PageResultDto) BuildUtil(io.jpom.build.BuildUtil) DefaultSystemLog(cn.jiangzeyin.common.DefaultSystemLog) io.jpom.plugin(io.jpom.plugin) Page(cn.hutool.db.Page) Feature(io.jpom.permission.Feature) ServletUtil(cn.hutool.extra.servlet.ServletUtil) JpomRuntimeException(io.jpom.system.JpomRuntimeException) JsonMessage(cn.jiangzeyin.common.JsonMessage) JSONArray(com.alibaba.fastjson.JSONArray) HttpServletRequest(javax.servlet.http.HttpServletRequest) HttpUtil(cn.hutool.http.HttpUtil) HttpResponse(cn.hutool.http.HttpResponse) Map(java.util.Map) GetMapping(org.springframework.web.bind.annotation.GetMapping) URLUtil(cn.hutool.core.util.URLUtil) MethodFeature(io.jpom.permission.MethodFeature) HttpRequest(cn.hutool.http.HttpRequest) PostMapping(org.springframework.web.bind.annotation.PostMapping) RepositoryService(io.jpom.service.dblog.RepositoryService) ClassFeature(io.jpom.permission.ClassFeature) RestController(org.springframework.web.bind.annotation.RestController) Collectors(java.util.stream.Collectors) File(java.io.File) HttpStatus(org.springframework.http.HttpStatus) Tuple(cn.hutool.core.lang.Tuple) StrUtil(cn.hutool.core.util.StrUtil) List(java.util.List) ValidatorItem(cn.jiangzeyin.common.validator.ValidatorItem) RepositoryModel(io.jpom.model.data.RepositoryModel) Const(io.jpom.common.Const) BuildInfoService(io.jpom.service.dblog.BuildInfoService) Convert(cn.hutool.core.convert.Convert) FileUtil(cn.hutool.core.io.FileUtil) JSONObject(com.alibaba.fastjson.JSONObject) Entity(cn.hutool.db.Entity) GitProtocolEnum(io.jpom.model.enums.GitProtocolEnum) BaseServerController(io.jpom.common.BaseServerController) Validator(cn.hutool.core.lang.Validator) Assert(org.springframework.util.Assert) JSONObject(com.alibaba.fastjson.JSONObject) JSONArray(com.alibaba.fastjson.JSONArray) HttpResponse(cn.hutool.http.HttpResponse) PageResultDto(io.jpom.model.PageResultDto)

Example 4 with Page

use of cn.hutool.db.Page in project Jpom by dromara.

the class RepositoryController method authorizeRepos.

@GetMapping(value = "/build/repository/authorize_repos")
@Feature(method = MethodFeature.LIST)
public Object authorizeRepos() {
    // 获取分页信息
    HttpServletRequest request = getRequest();
    Map<String, String> paramMap = ServletUtil.getParamMap(request);
    Page page = repositoryService.parsePage(paramMap);
    String token = paramMap.get("token");
    Assert.hasText(token, "请填写个人令牌");
    // 
    String type = paramMap.get("type");
    PageResultDto<JSONObject> pageResultDto;
    switch(type) {
        case "gitee":
            pageResultDto = this.giteeRepos(token, page);
            break;
        case "github":
            pageResultDto = this.githubRepos(token, page);
            break;
        case "gitlab":
            pageResultDto = this.gitlabRepos(token, page);
            break;
        default:
            throw new IllegalArgumentException("不支持的类型");
    }
    return JsonMessage.toJson(HttpStatus.OK.value(), HttpStatus.OK.name(), pageResultDto);
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) JSONObject(com.alibaba.fastjson.JSONObject) Page(cn.hutool.db.Page) GetMapping(org.springframework.web.bind.annotation.GetMapping) Feature(io.jpom.permission.Feature) MethodFeature(io.jpom.permission.MethodFeature) ClassFeature(io.jpom.permission.ClassFeature)

Example 5 with Page

use of cn.hutool.db.Page in project Jpom by dromara.

the class RepositoryController method githubRepos.

/**
 * github 仓库
 *
 * @param token 个人令牌
 * @param page  分页
 * @return page
 */
private PageResultDto<JSONObject> githubRepos(String token, Page page) {
    String accept = "application/vnd.github.v3+json";
    HttpRequest request = HttpUtil.createGet("https://api.github.com/user");
    request.header("Authorization", StrUtil.format("token {}", token));
    request.header("Accept", accept);
    HttpResponse httpResponse = request.execute();
    String body = httpResponse.body();
    Assert.state(httpResponse.isOk(), "令牌信息错误:" + body);
    JSONObject userBody = JSONObject.parseObject(body);
    String username = userBody.getString("login");
    // 拉取仓库信息
    HttpRequest httpRequestRepos = HttpUtil.createGet("https://api.github.com/user/repos");
    httpRequestRepos.header("Authorization", StrUtil.format("token {}", token));
    httpRequestRepos.header("Accept", accept);
    HttpResponse reposResponse = httpRequestRepos.form("access_token", token).form("sort", "pushed").form("page", page.getPageNumber()).form("per_page", page.getPageSize()).execute();
    body = reposResponse.body();
    Assert.state(reposResponse.isOk(), "拉取仓库信息错误:" + body);
    JSONArray jsonArray = JSONArray.parseArray(body);
    List<JSONObject> objects = jsonArray.stream().map(o -> {
        JSONObject repo = (JSONObject) o;
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name", repo.getString("name"));
        String cloneUrl = repo.getString("clone_url");
        jsonObject.put("url", cloneUrl);
        jsonObject.put("full_name", repo.getString("full_name"));
        jsonObject.put("description", repo.getString("description"));
        jsonObject.put("private", repo.getBooleanValue("private"));
        // 
        jsonObject.put("username", username);
        jsonObject.put("exists", RepositoryController.this.checkRepositoryUrl(null, cloneUrl));
        return jsonObject;
    }).collect(Collectors.toList());
    // 
    PageResultDto<JSONObject> pageResultDto = new PageResultDto<>(page.getPageNumber(), page.getPageSize(), 1000);
    pageResultDto.setResult(objects);
    return pageResultDto;
}
Also used : HttpRequest(cn.hutool.http.HttpRequest) PageResultDto(io.jpom.model.PageResultDto) BuildUtil(io.jpom.build.BuildUtil) DefaultSystemLog(cn.jiangzeyin.common.DefaultSystemLog) io.jpom.plugin(io.jpom.plugin) Page(cn.hutool.db.Page) Feature(io.jpom.permission.Feature) ServletUtil(cn.hutool.extra.servlet.ServletUtil) JpomRuntimeException(io.jpom.system.JpomRuntimeException) JsonMessage(cn.jiangzeyin.common.JsonMessage) JSONArray(com.alibaba.fastjson.JSONArray) HttpServletRequest(javax.servlet.http.HttpServletRequest) HttpUtil(cn.hutool.http.HttpUtil) HttpResponse(cn.hutool.http.HttpResponse) Map(java.util.Map) GetMapping(org.springframework.web.bind.annotation.GetMapping) URLUtil(cn.hutool.core.util.URLUtil) MethodFeature(io.jpom.permission.MethodFeature) HttpRequest(cn.hutool.http.HttpRequest) PostMapping(org.springframework.web.bind.annotation.PostMapping) RepositoryService(io.jpom.service.dblog.RepositoryService) ClassFeature(io.jpom.permission.ClassFeature) RestController(org.springframework.web.bind.annotation.RestController) Collectors(java.util.stream.Collectors) File(java.io.File) HttpStatus(org.springframework.http.HttpStatus) Tuple(cn.hutool.core.lang.Tuple) StrUtil(cn.hutool.core.util.StrUtil) List(java.util.List) ValidatorItem(cn.jiangzeyin.common.validator.ValidatorItem) RepositoryModel(io.jpom.model.data.RepositoryModel) Const(io.jpom.common.Const) BuildInfoService(io.jpom.service.dblog.BuildInfoService) Convert(cn.hutool.core.convert.Convert) FileUtil(cn.hutool.core.io.FileUtil) JSONObject(com.alibaba.fastjson.JSONObject) Entity(cn.hutool.db.Entity) GitProtocolEnum(io.jpom.model.enums.GitProtocolEnum) BaseServerController(io.jpom.common.BaseServerController) Validator(cn.hutool.core.lang.Validator) Assert(org.springframework.util.Assert) JSONObject(com.alibaba.fastjson.JSONObject) JSONArray(com.alibaba.fastjson.JSONArray) HttpResponse(cn.hutool.http.HttpResponse) PageResultDto(io.jpom.model.PageResultDto)

Aggregations

Page (cn.hutool.db.Page)10 Entity (cn.hutool.db.Entity)9 Map (java.util.Map)5 StrUtil (cn.hutool.core.util.StrUtil)4 Order (cn.hutool.db.sql.Order)4 JSONObject (com.alibaba.fastjson.JSONObject)4 PageResultDto (io.jpom.model.PageResultDto)4 ClassFeature (io.jpom.permission.ClassFeature)4 Feature (io.jpom.permission.Feature)4 MethodFeature (io.jpom.permission.MethodFeature)4 JpomRuntimeException (io.jpom.system.JpomRuntimeException)4 List (java.util.List)4 Collectors (java.util.stream.Collectors)4 HttpServletRequest (javax.servlet.http.HttpServletRequest)4 Assert (org.springframework.util.Assert)4 GetMapping (org.springframework.web.bind.annotation.GetMapping)4 Convert (cn.hutool.core.convert.Convert)3 FileUtil (cn.hutool.core.io.FileUtil)3 Tuple (cn.hutool.core.lang.Tuple)3 Validator (cn.hutool.core.lang.Validator)3