Commit 44a5c681 authored by wangzhengwen's avatar wangzhengwen

5.30

parent 51ebe32a
...@@ -7,6 +7,8 @@ use app\api\validate\CourseValidate; ...@@ -7,6 +7,8 @@ use app\api\validate\CourseValidate;
use app\BaseController; use app\BaseController;
use think\facade\Request; use think\facade\Request;
use app\model\CourseComment as courseCommentModel; use app\model\CourseComment as courseCommentModel;
use app\model\CourseCommentLike;
use app\model\CourseCommentReport;
class CourseComment extends BaseController class CourseComment extends BaseController
{ {
...@@ -96,4 +98,78 @@ class CourseComment extends BaseController ...@@ -96,4 +98,78 @@ class CourseComment extends BaseController
} }
//点赞评论
public function like()
{
$vo = (new CourseValidate())->goCheck(['comment_id']);
if ($vo !== true) {
return $vo;
}
$userId = $this->request->userId;
$commentId = Request::param('comment_id/d', 0);
// 检查评论是否存在
$comment = courseCommentModel::where('id', $commentId)->find();
if (!$comment) {
return $this->returnMsg('评论不存在');
}
// 检查是否已经点赞
$like = CourseCommentLike::where('comment_id', $commentId)
->where('user_id', $userId)
->find();
if ($like) {
// 如果已经点赞,则取消点赞
$like->delete();
return $this->returnMsg('取消点赞成功', 1);
} else {
// 如果未点赞,则添加点赞
CourseCommentLike::create([
'comment_id' => $commentId,
'user_id' => $userId
]);
return $this->returnMsg('点赞成功', 1);
}
}
// 举报评论
public function report()
{
$vo = (new CourseValidate())->goCheck(['comment_id', 'reason']);
if ($vo !== true) {
return $vo;
}
$userId = $this->request->userId;
$commentId = Request::param('comment_id/d', 0);
$reason = Request::param('reason/s', '');
// 检查评论是否存在
$comment = courseCommentModel::where('id', $commentId)->find();
if (!$comment) {
return $this->returnMsg('评论不存在');
}
// 检查是否已经举报过
$existReport = CourseCommentReport::where('comment_id', $commentId)
->where('user_id', $userId)
->find();
if ($existReport) {
return $this->returnMsg('您已经举报过该评论');
}
// 创建举报
CourseCommentReport::create([
'comment_id' => $commentId,
'user_id' => $userId,
'reason' => $reason,
'status' => 0
]);
return $this->returnMsg('举报成功', 1);
}
} }
\ No newline at end of file
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
namespace app\api\service; namespace app\api\service;
use app\model\CourseClass;
use app\model\Payment; use app\model\Payment;
use think\facade\Cache; use think\facade\Cache;
...@@ -110,6 +111,21 @@ class UtilService ...@@ -110,6 +111,21 @@ class UtilService
*/ */
public static function checkPurchase($userId, $productId, $orderType) public static function checkPurchase($userId, $productId, $orderType)
{ {
//如果是课程课时存在试看的情况下
if($productId==1)
{
$course_class_id = input('course_class');
if ($course_class_id)
{
$is_sk = CourseClass::where(['course_id'=>$productId,'id'=>$course_class_id])->value('is_sk');
if ($is_sk)
{
return true;
}
}
}
return Payment::where([ return Payment::where([
'user_id' => $userId, 'user_id' => $userId,
'order_type' => $orderType, 'order_type' => $orderType,
......
...@@ -2,27 +2,46 @@ ...@@ -2,27 +2,46 @@
namespace app\api\validate; namespace app\api\validate;
use think\Validate;
class CourseValidate extends BaseValidate class CourseValidate extends BaseValidate
{ {
protected $rule = [ protected $rule = [
'searchKeyWords'=>'require', 'searchKeyWords' => 'require',
'category_id'=>'require|number', 'category_id' => 'require|number',
'course_id'=>'require|number', 'course_id' => 'require|number',
'class_id'=>'require|number', 'class_id' => 'require|number',
'current_time'=>'require|number', 'current_time' => 'require|number',
'attachment_ids'=>'require', 'attachment_ids' => 'require',
'work_id'=>'require|number', 'work_id' => 'require|number',
'content'=>'require', 'content' => 'require',
'comment_id' => 'require|number',
'reason' => 'require|length:1,255'
];
protected $message = [
'name.require' => '名称必须',
'mobile.require' => '手机号不能为空',
'mobile.mobile' => '手机号格式不正确',
'password.require' => '密码必须',
'code.require' => '验证码必须',
'token.require' => 'token必须',
'str.require' => '必填项不能为空',
'confirm_password.checkPasswordEqual' => '两次输入的密码不一致',
'reason.require' => '举报原因不能为空',
'reason.length' => '举报原因长度必须在1-255个字符之间'
]; ];
// protected $message = [ protected $scene = [
// 'name.require' => '名称必须', 'searchKeyWords' => ['searchKeyWords'],
// 'mobile.require' => '手机号不能为空', 'category_id' => ['category_id'],
// 'mobile.mobile' => '手机号格式不正确', 'course_id' => ['course_id'],
// 'password.require' => '密码必须', 'class_id' => ['class_id'],
// 'code.require' => '验证码必须', 'current_time' => ['current_time'],
// 'token.require' => 'token必须', 'attachment_ids' => ['attachment_ids'],
// 'str.require' => '必填项不能为空', 'work_id' => ['work_id'],
// 'confirm_password.checkPasswordEqual' => '两次输入的密码不一致' 'content' => ['content'],
// ]; 'comment_id' => ['comment_id'],
'reason' => ['reason']
];
} }
\ No newline at end of file
...@@ -113,7 +113,7 @@ class Course extends Model ...@@ -113,7 +113,7 @@ class Course extends Model
} }
$detail = self::where($where) $detail = self::where($where)
->with(['getTeacher']) ->with(['getTeacher'=>['thumb']])
->field('id,thumb,title,createtime,description,price,content,teacher_id,tvclick,click') ->field('id,thumb,title,createtime,description,price,content,teacher_id,tvclick,click')
->find(); ->find();
$detail['is_learned'] = 0; //是否学习 $detail['is_learned'] = 0; //是否学习
......
...@@ -17,10 +17,12 @@ class CourseComment extends Model ...@@ -17,10 +17,12 @@ class CourseComment extends Model
protected $createTime = 'createtime'; protected $createTime = 'createtime';
protected $updateTime = 'updatetime'; protected $updateTime = 'updatetime';
// 指定软删除字段 // 指定软删除字段
protected $deleteTime = 'deletetime'; protected $deleteTime = 'deletetime';
// 追加字段
protected $append = ['user_like', 'likes_count'];
// 用户关联 // 用户关联
public function user() public function user()
{ {
...@@ -36,13 +38,37 @@ class CourseComment extends Model ...@@ -36,13 +38,37 @@ class CourseComment extends Model
->order('createtime', 'asc'); ->order('createtime', 'asc');
} }
// 获取课程评论列表 // 点赞关联
public function likes()
{
return $this->hasMany(CourseCommentLike::class, 'comment_id', 'id');
}
// 获取用户是否点赞
public function getUserLikeAttr($value, $data)
{
$userId = request()->userId ?? 0;
return CourseCommentLike::where('comment_id', $data['id'])
->where('user_id', $userId)
->count() > 0;
}
// 获取点赞数
public function getLikesCountAttr($value, $data)
{
return CourseCommentLike::where('comment_id', $data['id'])->count();
}
// 获取评论列表
public static function getCommentList($courseId, $page = 1, $pageSize = 10) public static function getCommentList($courseId, $page = 1, $pageSize = 10)
{ {
return self::with(['user'=>['headico'], 'replies']) return self::with(['user', 'replies' => function($query) {
$query->with(['user'])->append(['user_like', 'likes_count']);
}])
->where('course_id', $courseId) ->where('course_id', $courseId)
->where('parent_id', 0) ->where('parent_id', 0)
->order('createtime', 'desc') ->order('createtime', 'desc')
->append(['user_like', 'likes_count'])
->paginate([ ->paginate([
'page' => $page, 'page' => $page,
'list_rows' => $pageSize 'list_rows' => $pageSize
......
<?php
namespace app\model;
use think\Model;
class CourseCommentLike extends Model
{
// 设置表名
protected $name = 'course_comment_likes';
// 设置时间字段
protected $autoWriteTimestamp = true;
protected $createTime = 'createtime';
protected $updateTime = false;
// 设置字段
protected $schema = [
'id' => 'int',
'comment_id' => 'int',
'user_id' => 'int',
'createtime' => 'int',
];
}
\ No newline at end of file
<?php
namespace app\model;
use think\Model;
class CourseCommentReport extends Model
{
// 设置表名
protected $table = 'fj_course_comment_reports';
// 设置时间字段
protected $autoWriteTimestamp = true;
protected $createTime = 'createtime';
protected $updateTime = 'updatetime';
// 设置字段
protected $schema = [
'id' => 'int',
'comment_id' => 'int',
'user_id' => 'int',
'reason' => 'string',
'status' => 'int',
'createtime' => 'int',
'updatetime' => 'int'
];
// 关联评论
public function comment()
{
return $this->belongsTo(CourseComment::class, 'comment_id', 'id');
}
// 关联用户
public function user()
{
return $this->belongsTo(User::class, 'user_id', 'id');
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment