1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?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;
        });
    }
}