com.blade.mvc.ui.RestResponse.ok() - java examples

Here are the examples of the java api com.blade.mvc.ui.RestResponse.ok() taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

37 Examples 7

19 View Complete Implementation : AdminController.java
Copyright MIT License
Author : biezhi
@PostRoute("black")
@JSON
public RestResponse updateBlackList(@BodyParam InstallParam installParam) {
    installParam.setUpdate(true);
    optionService.updatePayConfig(installParam);
    return RestResponse.ok();
}

19 View Complete Implementation : AdminController.java
Copyright MIT License
Author : biezhi
@PostRoute("theme/:name")
@JSON
public RestResponse updateTheme(@PathParam String name) {
    IndexController.THEME_NAME = name;
    update().from(Option.clreplaced).set(Option::getValue, name).where(Option::getKey, Constant.CURRENT_THEME).execute();
    Bootstrap.refreshConfig();
    return RestResponse.ok();
}

19 View Complete Implementation : AdminController.java
Copyright MIT License
Author : biezhi
/**
 * 修改支付配置
 */
@PostRoute("pay_config")
@JSON
public RestResponse updatePayConfig(@BodyParam InstallParam installParam) {
    installParam.setUpdate(true);
    optionService.updatePayConfig(installParam);
    Bootstrap.payApi = PayApi.getPayApi(installParam.getPlatform());
    Bootstrap.refreshConfig();
    return RestResponse.ok();
}

19 View Complete Implementation : AdminController.java
Copyright MIT License
Author : biezhi
/**
 * 修改通用配置
 */
@PostRoute("common_config")
@JSON
public RestResponse updateOptions(@BodyParam Map<String, String> options) {
    optionService.updateOptions(options);
    Bootstrap.refreshConfig();
    return RestResponse.ok();
}

19 View Complete Implementation : DemoController.java
Copyright Apache License 2.0
Author : lets-blade
@JSON
@PostRoute("api_test/:size")
public RestResponse<Integer> api_portal(@PathParam Integer size) {
    return RestResponse.ok(size);
}

19 View Complete Implementation : DemoController.java
Copyright Apache License 2.0
Author : lets-blade
@PostRoute("save")
@JSON
public RestResponse savePerson(@BodyParam Map<String, Object> person) {
    return RestResponse.ok(person);
}

18 View Complete Implementation : AdminController.java
Copyright MIT License
Author : biezhi
@PostRoute("preplacedword")
@JSON
public RestResponse updatePreplacedword(@Param PreplacedwordParam preplacedwordParam) {
    Option option = select().from(Option.clreplaced).where(Option::getKey, Constant.SAFE_PreplacedWORD).one();
    String base64 = Base64.getEncoder().encodeToString(option.getValue().getBytes());
    boolean success = PreplacedwordKit.checkPreplacedword(preplacedwordParam.getOldPreplaced(), new String(Base64.getDecoder().decode(base64)));
    if (!success) {
        return RestResponse.fail("旧密码输入错误, 无法修改!");
    }
    String preplaced = PreplacedwordKit.hashPreplacedword(preplacedwordParam.getNewPreplaced());
    update().from(Option.clreplaced).set(Option::getValue, preplaced).where(Option::getKey, Constant.SAFE_PreplacedWORD).execute();
    return RestResponse.ok();
}

18 View Complete Implementation : AdminController.java
Copyright MIT License
Author : biezhi
@PostRoute("template")
@JSON
public RestResponse updateTemplate(@BodyParam TemplateParam templateParam) throws IOException {
    java.nio.file.Path file = Paths.get(Utils.CLreplacedPATH + "templates/themes/" + templateParam.getTheme() + "/" + templateParam.getFileName());
    Files.write(file, templateParam.getContent().getBytes());
    return RestResponse.ok();
}

18 View Complete Implementation : AdminController.java
Copyright MIT License
Author : biezhi
@PostRoute("order/delete/:orderNo")
@JSON
public RestResponse orders(@PathParam String orderNo) {
    Anima.deleteById(Order.clreplaced, orderNo);
    return RestResponse.ok();
}

18 View Complete Implementation : AuthController.java
Copyright MIT License
Author : biezhi
@PostRoute("login")
@JSON
public RestResponse doLogin(@BodyParam LoginParam loginParam, Session session) {
    Validator.authParam(loginParam.getUsername(), loginParam.getPreplacedword());
    long username = select().from(Option.clreplaced).where(Option::getKey, Constant.SAFE_USERNAME).and(Option::getValue, loginParam.getUsername()).count();
    if (username == 0) {
        return RestResponse.fail("要饭先把名字输对,O不OK?");
    }
    Option option = select().from(Option.clreplaced).where(Option::getKey, Constant.SAFE_PreplacedWORD).one();
    String base64 = Base64.getEncoder().encodeToString(option.getValue().getBytes());
    boolean success = PreplacedwordKit.checkPreplacedword(loginParam.getPreplacedword(), new String(Base64.getDecoder().decode(base64)));
    if (success) {
        session.attribute(Constant.LOGIN_SESSION_KEY, username);
        return RestResponse.ok();
    }
    return RestResponse.fail("密码都输不对的人没资格要饭 (σ`д′)σ");
}

18 View Complete Implementation : ArticleController.java
Copyright MIT License
Author : tfssweb
/**
 * 删除文章操作
 *
 * @param cid
 * @param request
 * @return
 */
@Route(value = "delete")
@JSON
public RestResponse delete(@Param int cid, Request request) {
    try {
        contentsService.delete(cid);
        siteService.cleanCache(Types.C_STATISTICS);
        new Logs(LogActions.DEL_ARTICLE, cid + "", request.address(), this.getUid()).save();
    } catch (Exception e) {
        String msg = "文章删除失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
    return RestResponse.ok();
}

18 View Complete Implementation : ArticleController.java
Copyright MIT License
Author : tfssweb
/**
 * 修改文章操作
 *
 * @return
 */
@PostRoute(value = "modify")
@JSON
public RestResponse modifyArticle(@Valid Contents contents) {
    try {
        if (null == contents || null == contents.getCid()) {
            return RestResponse.fail("缺少参数,请重试");
        }
        Integer cid = contents.getCid();
        contentsService.updateArticle(contents);
        return RestResponse.ok(cid);
    } catch (Exception e) {
        String msg = "文章编辑失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
}

18 View Complete Implementation : PageController.java
Copyright MIT License
Author : tfssweb
@Route(value = "delete")
@JSON
public RestResponse delete(@Param int cid, Request request) {
    try {
        contentsService.delete(cid);
        siteService.cleanCache(Types.C_STATISTICS);
        new Logs(LogActions.DEL_PAGE, cid + "", request.address(), this.getUid()).save();
    } catch (Exception e) {
        String msg = "页面删除失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
    return RestResponse.ok();
}

18 View Complete Implementation : ThemeController.java
Copyright MIT License
Author : tfssweb
/**
 * 激活主题
 *
 * @param request
 * @param site_theme
 * @return
 */
@PostRoute(value = "active")
@JSON
public RestResponse activeTheme(Request request, @Param String site_theme) {
    try {
        optionsService.saveOption("site_theme", site_theme);
        optionsService.deleteOption("theme_option_");
        TaleConst.OPTIONS.set("site_theme", site_theme);
        BaseController.THEME = "themes/" + site_theme;
        String themePath = "/templates/themes/" + site_theme;
        try {
            TaleLoader.loadTheme(themePath);
        } catch (Exception e) {
        }
        new Logs(LogActions.THEME_SETTING, site_theme, request.address(), this.getUid()).save();
        return RestResponse.ok();
    } catch (Exception e) {
        String msg = "主题启用失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
}

18 View Complete Implementation : ThemeController.java
Copyright MIT License
Author : tfssweb
/**
 * 保存主题配置项
 *
 * @param request
 * @return
 */
@PostRoute(value = "setting")
@JSON
public RestResponse saveSetting(Request request) {
    try {
        Map<String, List<String>> query = request.parameters();
        // theme_milk_options => {  }
        String currentTheme = Commons.site_theme();
        String key = "theme_" + currentTheme + "_options";
        Map<String, String> options = new HashMap<>();
        query.forEach((k, v) -> options.put(k, v.get(0)));
        optionsService.saveOption(key, JsonKit.toString(options));
        TaleConst.OPTIONS = Environment.of(optionsService.getOptions());
        new Logs(LogActions.THEME_SETTING, JsonKit.toString(query), request.address(), this.getUid()).save();
        return RestResponse.ok();
    } catch (Exception e) {
        String msg = "主题设置失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
}

17 View Complete Implementation : IndexController.java
Copyright MIT License
Author : biezhi
/**
 * 创建支付订单
 *
 * @param order
 * @param request
 * @return
 */
@PostRoute("/pay_order")
@JSON
public RestResponse<PayOrderResponse> createOrder(Order order, Request request) {
    try {
        Validator.orderParam(order);
        if (null == request.header("") || null == request.userAgent()) {
            return RestResponse.fail("非法请求");
        }
        return RestResponse.ok(makeMoneyService.createOrder(order));
    } catch (ValidatorException e) {
        return RestResponse.fail(e.getMessage());
    } catch (Exception e) {
        log.error("支付出现异常", e);
        return RestResponse.fail(e.getMessage());
    }
}

17 View Complete Implementation : DemoController.java
Copyright Apache License 2.0
Author : lets-blade
@PostRoute("upload")
@JSON
public RestResponse upload(@MultipartParam FileItem fileItem) throws IOException {
    System.out.println(fileItem);
    fileItem.moveTo(new File(fileItem.getFileName()));
    return RestResponse.ok();
}

17 View Complete Implementation : AttachController.java
Copyright MIT License
Author : tfssweb
@Route(value = "delete")
@JSON
public RestResponse delete(@Param Integer id, Request request) {
    try {
        Attach attach = new Attach().find(id);
        if (null == attach) {
            return RestResponse.fail("不存在该附件");
        }
        String fkey = attach.getFkey();
        siteService.cleanCache(Types.C_STATISTICS);
        String filePath = CLreplacedPATH.substring(0, CLreplacedPATH.length() - 1) + fkey;
        java.nio.file.Path path = Paths.get(filePath);
        log.info("Delete attach: [{}]", filePath);
        if (Files.exists(path)) {
            Files.delete(path);
        }
        attach.delete(id);
        new Logs(LogActions.DEL_ATTACH, fkey, request.address(), this.getUid()).save();
    } catch (Exception e) {
        String msg = "附件删除失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
    return RestResponse.ok();
}

17 View Complete Implementation : CommentController.java
Copyright MIT License
Author : tfssweb
/**
 * 删除一条评论
 *
 * @param coid
 * @return
 */
@PostRoute(value = "delete")
@JSON
public RestResponse delete(@Param Integer coid) {
    try {
        Comments comments = commentsService.byId(coid);
        if (null == comments) {
            return RestResponse.fail("不存在该评论");
        }
        commentsService.delete(coid, comments.getCid());
        siteService.cleanCache(Types.C_STATISTICS);
    } catch (Exception e) {
        String msg = "评论删除失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
    return RestResponse.ok();
}

17 View Complete Implementation : PageController.java
Copyright MIT License
Author : tfssweb
@Route(value = "modify", method = HttpMethod.POST)
@JSON
public RestResponse modifyArticle(@Valid Contents contents) {
    if (null == contents || null == contents.getCid()) {
        return RestResponse.fail("缺少参数,请重试");
    }
    try {
        Integer cid = contents.getCid();
        contents.setType(Types.PAGE);
        contentsService.updateArticle(contents);
        return RestResponse.ok(cid);
    } catch (Exception e) {
        String msg = "页面编辑失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
}

16 View Complete Implementation : ArticleController.java
Copyright MIT License
Author : tfssweb
/**
 * 发布文章操作
 *
 * @return
 */
@PostRoute(value = "publish")
@JSON
public RestResponse publishArticle(@Valid Contents contents) {
    Users users = this.user();
    contents.setType(Types.ARTICLE);
    contents.setAuthorId(users.getUid());
    if (StringKit.isBlank(contents.getCategories())) {
        contents.setCategories("默认");
    }
    try {
        Integer cid = contentsService.publish(contents);
        siteService.cleanCache(Types.C_STATISTICS);
        return RestResponse.ok(cid);
    } catch (Exception e) {
        String msg = "文章发布失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
}

16 View Complete Implementation : AttachController.java
Copyright MIT License
Author : tfssweb
/**
 * 上传文件接口
 * <p>
 * 返回格式
 *
 * @param request
 * @return
 */
@Route(value = "upload", method = HttpMethod.POST)
@JSON
public RestResponse upload(Request request) {
    log.info("UPLOAD DIR = {}", TaleUtils.UP_DIR);
    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.getFileName();
            if ((f.getLength() / 1024) <= TaleConst.MAX_FILE_SIZE) {
                String fkey = TaleUtils.getFileKey(fname);
                String ftype = f.getContentType().contains("image") ? Types.IMAGE : Types.FILE;
                String filePath = TaleUtils.UP_DIR + fkey;
                try {
                    Files.write(Paths.get(filePath), f.getData());
                } catch (IOException e) {
                    log.error("", e);
                }
                Attach attach = new Attach();
                attach.setFname(fname);
                attach.setAuthor_id(uid);
                attach.setFkey(fkey);
                attach.setFtype(ftype);
                attach.setCreated(DateKit.nowUnix());
                attach.save();
                urls.add(attach);
                siteService.cleanCache(Types.C_STATISTICS);
            } else {
                Attach attach = new Attach();
                attach.setFname(fname);
                errorFiles.add(attach);
            }
        });
        if (errorFiles.size() > 0) {
            return RestResponse.builder().success(false).payload(errorFiles).build();
        }
        return RestResponse.ok(urls);
    } catch (Exception e) {
        String msg = "文件上传失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
}

16 View Complete Implementation : CategoryController.java
Copyright MIT License
Author : tfssweb
@Route(value = "delete")
@JSON
public RestResponse delete(@Param int mid) {
    try {
        metreplacedervice.delete(mid);
        siteService.cleanCache(Types.C_STATISTICS);
    } catch (Exception e) {
        String msg = "删除失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
    return RestResponse.ok();
}

16 View Complete Implementation : CommentController.java
Copyright MIT License
Author : tfssweb
@PostRoute(value = "status")
@JSON
public RestResponse delete(@Param Integer coid, @Param String status) {
    try {
        Comments comments = new Comments();
        comments.setCoid(coid);
        comments.setStatus(status);
        comments.update();
        siteService.cleanCache(Types.C_STATISTICS);
    } catch (Exception e) {
        String msg = "操作失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
    return RestResponse.ok();
}

16 View Complete Implementation : CommentController.java
Copyright MIT License
Author : tfssweb
@PostRoute(value = "")
@JSON
public RestResponse reply(@Param Integer coid, @Param 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("[email protected]");
    }
    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 {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
}

16 View Complete Implementation : PageController.java
Copyright MIT License
Author : tfssweb
@Route(value = "publish", method = HttpMethod.POST)
@JSON
public RestResponse publishPage(@Valid Contents contents) {
    Users users = this.user();
    contents.setType(Types.PAGE);
    contents.setAllowPing(true);
    contents.setAuthorId(users.getUid());
    try {
        contentsService.publish(contents);
        siteService.cleanCache(Types.C_STATISTICS);
    } catch (Exception e) {
        String msg = "页面发布失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
    return RestResponse.ok();
}

16 View Complete Implementation : TemplateController.java
Copyright MIT License
Author : tfssweb
@Route(value = "save", method = HttpMethod.POST)
@JSON
public RestResponse saveTpl(@Param String fileName, @Param String content) {
    if (StringKit.isBlank(fileName)) {
        return RestResponse.fail("缺少参数,请重试");
    }
    String themePath = Const.CLreplacedPATH + File.separatorChar + "templates" + File.separatorChar + "themes" + File.separatorChar + Commons.site_theme();
    String filePath = themePath + File.separatorChar + fileName;
    try {
        if (Files.exists(Paths.get(filePath))) {
            byte[] rf_wiki_byte = content.getBytes("UTF-8");
            Files.write(Paths.get(filePath), rf_wiki_byte);
        } else {
            Files.createFile(Paths.get(filePath));
            byte[] rf_wiki_byte = content.getBytes("UTF-8");
            Files.write(Paths.get(filePath), rf_wiki_byte);
        }
        return RestResponse.ok();
    } catch (Exception e) {
        log.error("写入文件失败", e);
        return RestResponse.fail("写入文件失败: " + e.getMessage());
    }
}

15 View Complete Implementation : InstallController.java
Copyright MIT License
Author : biezhi
@PostRoute("install")
@JSON
public RestResponse doInstall(@BodyParam InstallParam installParam) throws IOException {
    if (Utils.isInstall()) {
        return RestResponse.fail("请勿重复安装!");
    }
    log.info("安装参数: {}", installParam);
    Validator.installParam(installParam);
    delete().from(Option.clreplaced).execute();
    optionService.updatePayConfig(installParam);
    optionService.save(Constant.TODAY_COUNT, "0");
    optionService.save(Constant.TOTAL_COUNT, "0");
    optionService.save(Constant.TODAY_AMOUNT, "0");
    optionService.save(Constant.TOTAL_AMOUNT, "0");
    optionService.save(Constant.PAGE_SIZE, "10");
    optionService.save(Constant.COMMENT_MIN_SIZE, "4");
    optionService.save(Constant.COMMENT_MAX_SIZE, "500");
    optionService.save(Constant.AMOUNT_MIN, "0.1");
    optionService.save(Constant.AMOUNT_MAX, "1000");
    Bootstrap.refreshConfig();
    Bootstrap.payApi = PayApi.getPayApi(installParam.getPlatform());
    File lock = new File(Utils.CLreplacedPATH + "install.lock");
    lock.createNewFile();
    return RestResponse.ok();
}

15 View Complete Implementation : AuthController.java
Copyright MIT License
Author : tfssweb
@Route(value = "login", method = HttpMethod.POST)
@JSON
public RestResponse doLogin(LoginParam loginParam, Request request, Session session, Response response) {
    Integer error_count = cache.get("login_error_count");
    try {
        error_count = null == error_count ? 0 : error_count;
        if (null != error_count && error_count > 3) {
            return RestResponse.fail("您输入密码已经错误超过3次,请10分钟后尝试");
        }
        long count = new Users().where("username", loginParam.getUsername()).count();
        if (count < 1) {
            return RestResponse.fail("不存在该用户");
        }
        String pwd = EncryptKit.md5(loginParam.getUsername(), loginParam.getPreplacedword());
        Users user = new Users().where("username", loginParam.getUsername()).and("preplacedword", pwd).find();
        if (null == user) {
            return RestResponse.fail("用户名或密码错误");
        }
        session.attribute(TaleConst.LOGIN_SESSION_KEY, user);
        if (StringKit.isNotBlank(loginParam.getRemeberMe())) {
            TaleUtils.setCookie(response, user.getUid());
        }
        Users temp = new Users();
        temp.setLogged(DateKit.nowUnix());
        temp.update(user.getUid());
        log.info("登录成功:{}", loginParam.getUsername());
        cache.set("login_error_count", 0);
        new Logs(LogActions.LOGIN, loginParam.getUsername(), request.address(), user.getUid()).save();
    } catch (Exception e) {
        error_count += 1;
        cache.set("login_error_count", error_count, 10 * 60);
        String msg = "登录失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
    return RestResponse.ok();
}

15 View Complete Implementation : IndexController.java
Copyright MIT License
Author : tfssweb
/**
 * 系统备份
 *
 * @return
 */
@Route(value = "backup", method = HttpMethod.POST)
@JSON
public RestResponse backup(@Param String bk_type, @Param String bk_path, Request request) {
    if (StringKit.isBlank(bk_type)) {
        return RestResponse.fail("请确认信息输入完整");
    }
    try {
        BackResponse backResponse = siteService.backup(bk_type, bk_path, "yyyyMMddHHmm");
        new Logs(LogActions.SYS_BACKUP, null, request.address(), this.getUid()).save();
        return RestResponse.ok(backResponse);
    } catch (Exception e) {
        String msg = "备份失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
}

15 View Complete Implementation : IndexController.java
Copyright MIT License
Author : tfssweb
/**
 * 保存个人信息
 */
@Route(value = "profile", method = HttpMethod.POST)
@JSON
public RestResponse saveProfile(@Param String screen_name, @Param String email, Request request) {
    Users users = this.user();
    if (StringKit.isNotBlank(screen_name) && StringKit.isNotBlank(email)) {
        Users temp = new Users();
        temp.setScreen_name(screen_name);
        temp.setEmail(email);
        temp.update(users.getUid());
        new Logs(LogActions.UP_INFO, JsonKit.toString(temp), request.address(), this.getUid()).save();
    }
    return RestResponse.ok();
}

15 View Complete Implementation : InstallController.java
Copyright MIT License
Author : tfssweb
@Route(value = "/", method = HttpMethod.POST)
@JSON
public RestResponse doInstall(@Param String site_replacedle, @Param String site_url, @Param String admin_user, @Param String admin_email, @Param String admin_pwd) {
    if (Files.exists(Paths.get(AttachController.CLreplacedPATH + "install.lock")) && TaleConst.OPTIONS.getInt("allow_install", 0) != 1) {
        return RestResponse.fail("请勿重复安装");
    }
    try {
        if (StringKit.isBlank(site_replacedle) || StringKit.isBlank(site_url) || StringKit.isBlank(admin_user) || StringKit.isBlank(admin_pwd)) {
            return RestResponse.fail("请确认网站信息输入完整");
        }
        if (admin_pwd.length() < 6 || admin_pwd.length() > 14) {
            return RestResponse.fail("请输入6-14位密码");
        }
        if (StringKit.isNotBlank(admin_email) && !TaleUtils.isEmail(admin_email)) {
            return RestResponse.fail("邮箱格式不正确");
        }
        Users temp = new Users();
        temp.setUsername(admin_user);
        temp.setPreplacedword(admin_pwd);
        temp.setEmail(admin_email);
        siteService.initSite(temp);
        if (site_url.endsWith("/")) {
            site_url = site_url.substring(0, site_url.length() - 1);
        }
        if (!site_url.startsWith("http")) {
            site_url = "http://".concat(site_url);
        }
        optionsService.saveOption("site_replacedle", site_replacedle);
        optionsService.saveOption("site_url", site_url);
        TaleConst.OPTIONS = Environment.of(optionsService.getOptions());
    } catch (Exception e) {
        String msg = "安装失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
    return RestResponse.ok();
}

14 View Complete Implementation : CategoryController.java
Copyright MIT License
Author : tfssweb
@Route(value = "save", method = HttpMethod.POST)
@JSON
public RestResponse saveCategory(@Param String cname, @Param Integer mid) {
    try {
        metreplacedervice.saveMeta(Types.CATEGORY, cname, mid);
        siteService.cleanCache(Types.C_STATISTICS);
    } catch (Exception e) {
        String msg = "分类保存失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
    return RestResponse.ok();
}

14 View Complete Implementation : IndexController.java
Copyright MIT License
Author : tfssweb
/**
 * 修改密码
 */
@Route(value = "preplacedword", method = HttpMethod.POST)
@JSON
public RestResponse upPwd(@Param String old_preplacedword, @Param String preplacedword, Request request) {
    Users users = this.user();
    if (StringKit.isBlank(old_preplacedword) || StringKit.isBlank(preplacedword)) {
        return RestResponse.fail("请确认信息输入完整");
    }
    if (!users.getPreplacedword().equals(EncryptKit.md5(users.getUsername() + old_preplacedword))) {
        return RestResponse.fail("旧密码错误");
    }
    if (preplacedword.length() < 6 || preplacedword.length() > 14) {
        return RestResponse.fail("请输入6-14位密码");
    }
    try {
        Users temp = new Users();
        String pwd = EncryptKit.md5(users.getUsername() + preplacedword);
        temp.setPreplacedword(pwd);
        temp.update(users.getUid());
        new Logs(LogActions.UP_PWD, null, request.address(), this.getUid()).save();
        return RestResponse.ok();
    } catch (Exception e) {
        String msg = "密码修改失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
}

12 View Complete Implementation : IndexController.java
Copyright MIT License
Author : tfssweb
/**
 * 保存系统设置
 */
@Route(value = "setting", method = HttpMethod.POST)
@JSON
public RestResponse saveSetting(@Param String site_theme, Request request) {
    try {
        Map<String, List<String>> querys = request.parameters();
        optionsService.saveOptions(querys);
        Environment config = Environment.of(optionsService.getOptions());
        TaleConst.OPTIONS = config;
        new Logs(LogActions.SYS_SETTING, JsonKit.toString(querys), request.address(), this.getUid()).save();
        return RestResponse.ok();
    } catch (Exception e) {
        String msg = "保存设置失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
}

12 View Complete Implementation : IndexController.java
Copyright MIT License
Author : tfssweb
/**
 * 保存高级选项设置
 *
 * @return
 */
@Route(value = "advanced", method = HttpMethod.POST)
@JSON
public RestResponse doAdvanced(@Param String cache_key, @Param String block_ips, @Param String plugin_name, @Param String rewrite_url, @Param String allow_install) {
    // 清除缓存
    if (StringKit.isNotBlank(cache_key)) {
        if ("*".equals(cache_key)) {
            cache.clean();
        } else {
            cache.del(cache_key);
        }
    }
    // 要过过滤的黑名单列表
    if (StringKit.isNotBlank(block_ips)) {
        optionsService.saveOption(Types.BLOCK_IPS, block_ips);
        TaleConst.BLOCK_IPS.addAll(Arrays.asList(block_ips.split(",")));
    } else {
        optionsService.saveOption(Types.BLOCK_IPS, "");
        TaleConst.BLOCK_IPS.clear();
    }
    // 处理卸载插件
    if (StringKit.isNotBlank(plugin_name)) {
        String key = "plugin_";
        // 卸载所有插件
        if (!"*".equals(plugin_name)) {
            key = "plugin_" + plugin_name;
        } else {
            optionsService.saveOption(Types.ATTACH_URL, Commons.site_url());
        }
        optionsService.deleteOption(key);
    }
    // 是否允许重新安装
    if (StringKit.isNotBlank(allow_install)) {
        optionsService.saveOption("allow_install", allow_install);
        TaleConst.OPTIONS.toMap().put("allow_install", allow_install);
    }
    return RestResponse.ok();
}

4 View Complete Implementation : IndexController.java
Copyright MIT License
Author : tfssweb
/**
 * 评论操作
 */
@CsrfToken(valid = true)
@PostRoute(value = "comment")
@JSON
public RestResponse comment(Request request, Response response, @HeaderParam String Referer, @Valid Comments comments) {
    if (StringKit.isBlank(Referer)) {
        return RestResponse.fail(ErrorCode.BAD_REQUEST);
    }
    if (!Referer.startsWith(Commons.site_url())) {
        return RestResponse.fail("非法评论来源");
    }
    String val = request.address() + ":" + comments.getCid();
    Integer count = cache.hget(Types.COMMENTS_FREQUENCY, val);
    if (null != count && count > 0) {
        return RestResponse.fail("您发表评论太快了,请过会再试");
    }
    comments.setAuthor(TaleUtils.cleanXSS(comments.getAuthor()));
    comments.setContent(TaleUtils.cleanXSS(comments.getContent()));
    comments.setAuthor(EmojiParser.parseToAliases(comments.getAuthor()));
    comments.setContent(EmojiParser.parseToAliases(comments.getContent()));
    comments.setIp(request.address());
    comments.setParent(comments.getCoid());
    try {
        commentsService.saveComment(comments);
        response.cookie("tale_remember_author", URLEncoder.encode(comments.getAuthor(), "UTF-8"), 7 * 24 * 60 * 60);
        response.cookie("tale_remember_mail", URLEncoder.encode(comments.getMail(), "UTF-8"), 7 * 24 * 60 * 60);
        if (StringKit.isNotBlank(comments.getUrl())) {
            response.cookie("tale_remember_url", URLEncoder.encode(comments.getUrl(), "UTF-8"), 7 * 24 * 60 * 60);
        }
        // 设置对每个文章30秒可以评论一次
        cache.hset(Types.COMMENTS_FREQUENCY, val, 1, 30);
        siteService.cleanCache(Types.C_STATISTICS);
        return RestResponse.ok();
    } catch (Exception e) {
        String msg = "评论发布失败";
        if (e instanceof TipException) {
            msg = e.getMessage();
        } else {
            log.error(msg, e);
        }
        return RestResponse.fail(msg);
    }
}