02f26eee创建于 2025年4月23日历史提交
<?php


namespace Module\Blog\Api\Controller;


use Illuminate\Routing\Controller;
use ModStart\Core\Dao\ModelUtil;
use ModStart\Core\Exception\BizException;
use ModStart\Core\Input\InputPackage;
use ModStart\Core\Input\Response;
use ModStart\Core\Util\HtmlUtil;
use Module\Blog\Core\BlogCommentContentVerifyBiz;
use Module\Blog\Model\Blog;
use Module\Blog\Model\BlogComment;
use Module\Blog\Type\BlogCommentStatus;
use Module\Member\Auth\MemberUser;
use Module\Vendor\Provider\Captcha\CaptchaProvider;
use Module\Vendor\Provider\ContentVerify\ContentVerifyJob;

/**
 * @Api 博客系统
 */
class CommentController extends Controller
{
    /**
     * @Api 博客评论-添加
     * @ApiBodyParam blogId int 博客ID
     * @ApiBodyParam username string 用户名
     * @ApiBodyParam content string 内容
     * @ApiBodyParam email string 邮箱
     * @ApiBodyParam url string 网址
     */
    public function add()
    {
        $input = InputPackage::buildFromInput();
        $blogId = $input->getInteger('blogId');
        $blog = ModelUtil::get('blog', $blogId);
        BizException::throwsIfEmpty('博客不存在', $blog);
        $data = [];
        $data['blogId'] = $blogId;
        $data['username'] = $input->getTrimString('username');
        $data['content'] = $input->getTrimString('content');
        $data['email'] = $input->getTrimString('email');
        $data['url'] = $input->getTrimString('url');
        $ret = CaptchaProvider::get(modstart_config('Blog_BlogCaptchaProvider', 'default'))->validate();
        if (Response::isError($ret)) {
            return $ret;
        }
        BizException::throwsIfEmpty('内容为空', $data['content']);
        $data['content'] = HtmlUtil::text2html($data['content']);
        if (modstart_module_enabled('Member')) {
            if (MemberUser::isLogin()) {
                $data['username'] = MemberUser::get('username');
            }
            $data['memberUserId'] = MemberUser::id();
        } else {
            $data['memberUserId'] = 0;
        }
        if (modstart_config('Blog_CommentVerifyEnable', false)) {
            $data['status'] = BlogCommentStatus::WAIT_VERIFY;
        } else {
            $data['status'] = BlogCommentStatus::VERIFY_SUCCESS;
        }
        $data = ModelUtil::insert(BlogComment::class, $data);
        if ($data['status'] == BlogCommentStatus::WAIT_VERIFY) {
            ContentVerifyJob::create(BlogCommentContentVerifyBiz::NAME, [
                'id' => $data['id'],
            ], $data['content']);
        }
        ModelUtil::update(Blog::class, $blogId, [
            'commentCount' => ModelUtil::count('blog_comment', [
                'blogId' => $blogId,
                'status' => BlogCommentStatus::VERIFY_SUCCESS,
            ])
        ]);
        return Response::generate(0, '提交成功,后台审核后将会显示', null, '[reload]');
    }
}