Search in sources :

Example 11 with Route

use of com.blade.mvc.annotation.Route in project tale by otale.

the class AttachController method upload.

/**
     * 上传文件接口
     *
     *  返回格式
     * @param request
     * @return
     */
@Route(value = "upload", method = HttpMethod.POST)
@JSON
public RestResponse upload(Request request) {
    LOGGER.info("UPLOAD DIR = {}", TaleUtils.upDir);
    Users users = this.user();
    Integer uid = users.getUid();
    Map<String, FileItem> fileItemMap = request.fileItems();
    Collection<FileItem> fileItems = fileItemMap.values();
    List<Attach> errorFiles = new ArrayList<>();
    List<Attach> urls = new ArrayList<>();
    try {
        fileItems.forEach((FileItem f) -> {
            String fname = f.fileName();
            if (f.file().length() / 1024 <= TaleConst.MAX_FILE_SIZE) {
                String fkey = TaleUtils.getFileKey(fname);
                String ftype = TaleUtils.isImage(f.file()) ? Types.IMAGE : Types.FILE;
                String filePath = TaleUtils.upDir + fkey;
                File file = new File(filePath);
                try {
                    Tools.copyFileUsingFileChannels(f.file(), file);
                    f.file().delete();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                Attach attach = attachService.save(fname, fkey, ftype, uid);
                urls.add(attach);
                siteService.cleanCache(Types.C_STATISTICS);
            } else {
                errorFiles.add(new Attach(fname));
            }
        });
        if (errorFiles.size() > 0) {
            RestResponse restResponse = new RestResponse();
            restResponse.setSuccess(false);
            restResponse.setPayload(errorFiles);
            return restResponse;
        }
        return RestResponse.ok(urls);
    } catch (Exception e) {
        String msg = "文件上传失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            LOGGER.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
}
Also used : Attach(com.tale.model.Attach) RestResponse(com.blade.mvc.view.RestResponse) ArrayList(java.util.ArrayList) Users(com.tale.model.Users) IOException(java.io.IOException) TipException(com.tale.exception.TipException) IOException(java.io.IOException) TipException(com.tale.exception.TipException) FileItem(com.blade.mvc.multipart.FileItem) File(java.io.File) JSON(com.blade.mvc.annotation.JSON) Route(com.blade.mvc.annotation.Route)

Example 12 with Route

use of com.blade.mvc.annotation.Route in project tale by otale.

the class CommentController method index.

@Route(value = "", method = HttpMethod.GET)
public String index(@QueryParam(value = "page", defaultValue = "1") int page, @QueryParam(value = "limit", defaultValue = "15") int limit, Request request) {
    Users users = this.user();
    Paginator<Comments> commentsPaginator = commentsService.getComments(new Take(Comments.class).notEq("author_id", users.getUid()).page(page, limit, "coid desc"));
    request.attribute("comments", commentsPaginator);
    return "admin/comment_list";
}
Also used : Take(com.blade.jdbc.core.Take) Comments(com.tale.model.Comments) Users(com.tale.model.Users) Route(com.blade.mvc.annotation.Route)

Example 13 with Route

use of com.blade.mvc.annotation.Route in project tale by otale.

the class CommentController method reply.

@Route(value = "", method = HttpMethod.POST)
@JSON
public RestResponse reply(@QueryParam Integer coid, @QueryParam String content, Request request) {
    if (null == coid || StringKit.isBlank(content)) {
        return RestResponse.fail("请输入完整后评论");
    }
    if (content.length() > 2000) {
        return RestResponse.fail("请输入2000个字符以内的回复");
    }
    Comments c = commentsService.byId(coid);
    if (null == c) {
        return RestResponse.fail("不存在该评论");
    }
    Users users = this.user();
    content = TaleUtils.cleanXSS(content);
    content = EmojiParser.parseToAliases(content);
    Comments comments = new Comments();
    comments.setAuthor(users.getUsername());
    comments.setAuthor_id(users.getUid());
    comments.setCid(c.getCid());
    comments.setIp(request.address());
    comments.setUrl(users.getHome_url());
    comments.setContent(content);
    if (StringKit.isNotBlank(users.getEmail())) {
        comments.setMail(users.getEmail());
    } else {
        comments.setMail("support@tale.me");
    }
    comments.setParent(coid);
    try {
        commentsService.saveComment(comments);
        siteService.cleanCache(Types.C_STATISTICS);
        return RestResponse.ok();
    } catch (Exception e) {
        String msg = "回复失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            LOGGER.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
}
Also used : Comments(com.tale.model.Comments) Users(com.tale.model.Users) TipException(com.tale.exception.TipException) TipException(com.tale.exception.TipException) JSON(com.blade.mvc.annotation.JSON) Route(com.blade.mvc.annotation.Route)

Example 14 with Route

use of com.blade.mvc.annotation.Route in project tale by otale.

the class IndexController method saveSetting.

/**
     * 保存系统设置
     */
@Route(value = "setting", method = HttpMethod.POST)
@JSON
public RestResponse saveSetting(@QueryParam String site_theme, Request request) {
    try {
        Map<String, String> querys = request.querys();
        optionsService.saveOptions(querys);
        Config config = new Config();
        config.addAll(optionsService.getOptions());
        TaleConst.OPTIONS = config;
        logService.save(LogActions.SYS_SETTING, JSONKit.toJSONString(querys), request.address(), this.getUid());
        return RestResponse.ok();
    } catch (Exception e) {
        String msg = "保存设置失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            LOGGER.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
}
Also used : Config(com.blade.kit.base.Config) TipException(com.tale.exception.TipException) TipException(com.tale.exception.TipException) JSON(com.blade.mvc.annotation.JSON) Route(com.blade.mvc.annotation.Route)

Example 15 with Route

use of com.blade.mvc.annotation.Route in project tale by otale.

the class IndexController method saveProfile.

/**
     * 保存个人信息
     */
@Route(value = "profile", method = HttpMethod.POST)
@JSON
public RestResponse saveProfile(@QueryParam String screen_name, @QueryParam String email, Request request) {
    Users users = this.user();
    if (StringKit.isNotBlank(screen_name) && StringKit.isNotBlank(email)) {
        Users temp = new Users();
        temp.setUid(users.getUid());
        temp.setScreen_name(screen_name);
        temp.setEmail(email);
        usersService.update(temp);
        logService.save(LogActions.UP_INFO, JSONKit.toJSONString(temp), request.address(), this.getUid());
    }
    return RestResponse.ok();
}
Also used : Users(com.tale.model.Users) JSON(com.blade.mvc.annotation.JSON) Route(com.blade.mvc.annotation.Route)

Aggregations

Route (com.blade.mvc.annotation.Route)18 TipException (com.tale.exception.TipException)14 JSON (com.blade.mvc.annotation.JSON)13 Users (com.tale.model.Users)7 Comments (com.tale.model.Comments)5 Config (com.blade.kit.base.Config)3 File (java.io.File)3 Attach (com.tale.model.Attach)2 IOException (java.io.IOException)2 ArrayList (java.util.ArrayList)2 Take (com.blade.jdbc.core.Take)1 Controller (com.blade.mvc.annotation.Controller)1 RestController (com.blade.mvc.annotation.RestController)1 HttpMethod (com.blade.mvc.http.HttpMethod)1 FileItem (com.blade.mvc.multipart.FileItem)1 RestResponse (com.blade.mvc.view.RestResponse)1 BackResponse (com.tale.dto.BackResponse)1 Statistics (com.tale.dto.Statistics)1 ThemeDto (com.tale.dto.ThemeDto)1 Contents (com.tale.model.Contents)1