68 lines
2.4 KiB
PHP
68 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace app\api\controller;
|
|
|
|
use app\api\controller\Base;
|
|
use think\Db;
|
|
use app\common\Reviewer;
|
|
/**
|
|
* @title 推荐投稿人
|
|
* @description
|
|
*/
|
|
class Recommend extends Base
|
|
{
|
|
|
|
|
|
|
|
public function __construct(\think\Request $request = null) {
|
|
|
|
parent::__construct($request);
|
|
}
|
|
|
|
/**
|
|
* 自动推荐审稿人
|
|
* @param $messages 内容
|
|
* @param article_id 文章ID
|
|
* @param
|
|
*/
|
|
public function lists($aParam = []){
|
|
|
|
//获取参数
|
|
$aParam = empty($aParam) ? $this->request->post() : $aParam;
|
|
|
|
$iArticleId = empty($aParam['article_id']) ? 0 : $aParam['article_id'];
|
|
if(empty($iArticleId)){
|
|
return json_encode(['status' => 2,'msg' => 'Please select the article to query']);
|
|
}
|
|
//查询数据
|
|
// $aParam['order'] = 't_user.major_times desc,t_user.right_rate desc,t_user.review_num asc';//排序字段
|
|
$aParam['select'] = 't_user.user_id,t_user.account,t_user.email,t_user.realname,t_user.rs_num,t_user.rd_num,t_user.right_times,t_user.error_times,t_user.right_rate,t_user.error_rate,t_user.review_num,t_user.major_times,t_user.major_rate';
|
|
//获取审稿人信息
|
|
$oReviewer = new Reviewer;
|
|
$aResult = json_decode($oReviewer->get($aParam),true);
|
|
$aUser = empty($aResult['data']['lists']) ? [] : $aResult['data']['lists'];
|
|
if(empty($aUser)){
|
|
return json_encode($aResult);
|
|
}
|
|
|
|
//查询审稿人详细信息
|
|
$aUserId = array_column($aUser, 'user_id');
|
|
$aReviewerInfo = Db::name('user_reviewer_info')->field('reviewer_id,technical,country,introduction,company,field')->whereIn('reviewer_id',$aUserId)->select();
|
|
$aInfo = empty($aReviewerInfo) ? [] : array_column($aReviewerInfo, null,'reviewer_id');
|
|
if(empty($aReviewerInfo)){
|
|
return json_encode($aResult);
|
|
}
|
|
//数据处理
|
|
foreach ($aUser as $key => $value) {
|
|
$value += empty($aReviewerInfo[$value['user_id']]) ? [] : $aReviewerInfo[$value['user_id']];
|
|
$value['right_rate'] = intval($value['right_rate']*100);
|
|
$value['error_rate'] = intval($value['error_rate']*100);
|
|
$value['major_rate'] = intval($value['major_rate']*100);
|
|
$aUser[$key] = $value;
|
|
}
|
|
$aResult['data']['lists'] = $aUser;
|
|
return json_encode($aResult);
|
|
}
|
|
|
|
}
|