<?php
|
|
namespace app\api\model\plus\release;
|
|
use app\common\model\plus\release\Evaluate as EvaluateModel;
|
use app\common\model\user\User as UserModel;
|
use app\common\model\user\PointsLog as PointsLogModel;
|
use app\api\model\plus\release\Setting;
|
use app\common\model\plus\release\Project as ProjectModel;
|
use app\common\model\plus\release\Grade as GradeModel;
|
|
/**
|
* 模型
|
*/
|
class Evaluate extends EvaluateModel
|
{
|
|
/**
|
* 获取指定评论列表
|
*/
|
public function getEvaluateList($project_id, $scoreType = -1, $limit = 15)
|
{
|
// 筛选条件
|
$filter = [
|
'project_id' => $project_id,
|
];
|
// 评分
|
$scoreType > 0 && $filter['score'] = $scoreType;
|
return $this->with(['user'])
|
->where($filter)
|
->order(['create_time' => 'desc'])
|
->paginate($limit);
|
}
|
|
/**
|
* 获取指定评分总数
|
*/
|
public function getTotal($project_id)
|
{
|
return $this->field([
|
'count(id) AS `all`',
|
'count(score = 10 OR NULL) AS `praise`',
|
'count(score = 20 OR NULL) AS `review`',
|
'count(score = 30 OR NULL) AS `negative`',
|
])->where([
|
'project_id' => $project_id,
|
])->find();
|
}
|
/**
|
* 添加评论
|
*/
|
public function evaluate($params)
|
{
|
//判断重复评论
|
$result = $this->where('user_id','=',$params["user_id"])->where('project_id','=',$params["project_id"])->find();
|
if(!empty($result)){
|
$this->error = '请勿重复评论';
|
return false;
|
}
|
|
//获取奖励的连盟币
|
$setting = Setting::getAll();
|
$setting = $setting['settlement']['values'];
|
$money = empty($setting['eve_money']) ? 0 : $setting['eve_money'];
|
|
return $this->transaction(function () use ($params,$money) {
|
//奖励连盟币
|
if($money>0){
|
(new UserModel())->where('user_id', '=', $params['user_id'])->inc('points',$money)->update();
|
PointsLogModel::add([
|
'user_id' => $params['user_id'],
|
'value' => $money,
|
'describe' => "评论奖励连盟币",
|
'app_id' => self::$app_id,
|
]);
|
}
|
|
$project = ProjectModel::detail($params["project_id"]);
|
|
$data["user_id"] = $params["user_id"];
|
$data["project_user_id"] = $project["user_id"];
|
$data["project_id"] = $params["project_id"];
|
$data["evaluate_content"] = $params["evaluate_content"];
|
//$data["server_score"] = $params["server_score"];
|
$data["score"] = empty($params["score"]) ? 10 : $params["score"];
|
$data["image_list"] = json_encode($params["image_list"]);
|
$data["app_id"] = self::$app_id;
|
$this->save($data);
|
|
//好评判断升级等级
|
if($params["score"] == 10){
|
(new GradeModel())->setUserGrade($project["user_id"],$project["project_type"]);
|
}
|
|
return true;
|
});
|
}
|
}
|