Merge remote-tracking branch 'origin/master'

This commit is contained in:
wangjinlei
2025-07-30 14:35:24 +08:00
21 changed files with 727 additions and 874 deletions

View File

@@ -85,10 +85,8 @@ class Aiarticle extends Base
}
//查询AI内容是否生成
$aAiArticle = json_decode($this->getAiArticle(['article_id' => $iArticleId]),true);
$aAiArticleContent = empty($aAiArticle['data']) ? [] : $aAiArticle['data'];
$aAiArticle = empty($aAiArticleContent['ai_article']) ? [] : $aAiArticleContent['ai_article'];
$aWhere = ['is_delete' => 2,'article_id' => $iArticleId];
$aAiArticle = Db::name('ai_article')->where($aWhere)->find();
$iId = empty($aAiArticle['ai_article_id']) ? 0 : $aAiArticle['ai_article_id'];
if(empty($aAiArticle)){
//插入t_ai_article数据
@@ -100,6 +98,7 @@ class Aiarticle extends Base
}
$aAiArticle = array_merge(['ai_article_id' => $iId,'article_id' => $iArticleId,'is_generate' => 2],$aInsert);
}
//判断是否生成
if(!empty($aAiArticle['is_generate']) && $aAiArticle['is_generate'] == 1){
return json_encode(['status' => 5,'msg' => 'The data has been generated, please proceed with the next steps']);

View File

@@ -2005,6 +2005,21 @@ class Article extends Base
return jsonError("The article can only be added in state with editor at least");
}
//获取审稿人最后一次邀请时间 chengxiaoling 20250724 start
$iUserId = empty($data['uid']) ? 0 : $data['uid'];
if(empty($iUserId)){
return jsonError("Please select the reviewers to invite!");
}
//判断距离上次邀请审稿是否超过10天
$aWhere = ['reviewer_id' => $iUserId];
$iTeenDaysLater = strtotime('-10 days');// 计算10天之前的时间戳
$aUserInfo = Db::name('user_reviewer_info')->field('last_invite_time')->where($aWhere)->where('t_user_reviewer_info.last_invite_time', '<', $iTeenDaysLater)
->whereOr('t_user_reviewer_info.last_invite_time', '=', 0)->find();
if(empty($aUserInfo)){
return jsonError("The time since the last invitation for review by the reviewer has not exceeded 10 days!");
}
//获取审稿人最后一次邀请时间 chengxiaoling 20250724 end
//增加信息到文章审稿表
$insert_data['reviewer_id'] = $data['uid'];
$insert_data['article_id'] = $data['articleId'];
@@ -2013,6 +2028,14 @@ class Article extends Base
$insert_data['state'] = 5;
$res = $this->article_reviewer_obj->insertGetId($insert_data);
//更新审稿人最后一次审稿时间 chengxiaoling 20250724 start
if(!empty($res) && !empty($insert_data['reviewer_id'])){
$aUpdate = ['last_invite_time'=>time()];
$aWhere = ['reviewer_id' => $iUserId];
$updateResult = Db::name('user_reviewer_info')->where($aWhere)->limit(1)->update($aUpdate);
}
//更新审稿人最后一次审稿时间 chengxiaoling 20250724 end
//修改文章状态->审稿中
$this->article_obj->where('article_id', $data['articleId'])->update(['state' => 2]);
@@ -3063,7 +3086,7 @@ class Article extends Base
'journal' => 'require',
'title' => 'require',
'type' => 'require',
'major' => 'require',
// 'major' => 'require',
'abstrart' => 'require'
]);
if (!$rule->check($data)) {
@@ -3114,6 +3137,12 @@ class Article extends Base
$inset_data['ctime'] = time();
$inset_data['state'] = -1;
//新增字段是否使用AI及使用说明 chengxiaoling 20250725 start
$inset_data['is_use_ai'] = empty($data['is_use_ai']) ? 2 : $data['is_use_ai']; //是否使用AI1是2否
$inset_data['use_ai_explain'] = isset($data['use_ai_explain']) ? $data['use_ai_explain'] : '';
//新增字段是否使用AI及使用说明 chengxiaoling 20250725 end
$article_id = $this->article_obj->insertGetId($inset_data);
} else {
@@ -3141,9 +3170,20 @@ class Article extends Base
$up["approval"] = 0;
$up['approval_content'] = isset($data["approval_content"]) ? $data["approval_content"] : '';//trim($data['approval_content']);
}
//新增字段是否使用AI及使用说明 chengxiaoling 20250725 start
$up['is_use_ai'] = empty($data['is_use_ai']) ? 2 : $data['is_use_ai']; //是否使用AI1是2否
$up['use_ai_explain'] = isset($data['use_ai_explain']) ? $data['use_ai_explain'] : '';//使用AI说明
//新增字段是否使用AI及使用说明 chengxiaoling 20250725 end
$this->article_obj->where('article_id', $article_id)->update($up);
}
changeArticleMajor($article_id, $data['major']);
//注释文章筛选领域添加修改为AI推荐领域在第四步可以查看修改 chengxiaoling 20250722
// changeArticleMajor($article_id,$data['major']);
if(!empty($article_id)){//AI推荐领域队列执行
$sQueueId = \think\Queue::push('app\api\job\RecommendArticleField@fire',['article_id' => $article_id], 'RecommendArticleField');
}
//注释文章筛选领域添加修改为AI推荐领域在第四步可以查看修改 chengxiaoling 20250722
return jsonSuccess(['article_id' => $article_id]);
}
@@ -3451,6 +3491,15 @@ class Article extends Base
}
$this->article_obj->where('article_id', $data['article_id'])->update($update_l);
$this->ai_scor($data['article_id']);
//判断是否有文章领域 进行更新操作 chengxiaoling 20250722 start
$sMajorData = empty($data['article_field']) ? '' : $data['article_field'];//文章领域
$iArticleId = empty($data['article_id']) ? 0 : $data['article_id'];//文章ID
if(!empty($sMajorData) && !empty($iArticleId)){
$this->updateArticleField(['article_id' => $iArticleId,'article_field' => $sMajorData]);
}
//判断是否有文章领域 进行更新操作 chengxiaoling 20250722 end
return json(['code' => 0]);
}
@@ -4617,7 +4666,7 @@ class Article extends Base
public function getArticleField($aParam = [])
{
$aParam = empty($aParam) ? $this->request->post() : $this->request->post();
$aParam = empty($aParam) ? $this->request->post() : $aParam;
if (empty($aParam['article_id'])) {
return json_encode(['status' => 2, 'msg' => 'Please select a Article']);
@@ -4646,7 +4695,7 @@ class Article extends Base
public function updateArticleField($aParam = [])
{
$aParam = empty($aParam) ? $this->request->post() : $this->request->post();
$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 a article']);

View File

@@ -33,7 +33,7 @@ class Queueinfo extends Base
$redis->select($config['select']);
// 获取不同队列类型的任务数
$aQueue = empty($aParam['queue_name']) ? ['ArticleAiCreateContent','RecommendReviewer','RelatedArticle','ReviewerScore','RevisionReviewer','SendRelatedArticleEmail','SendReviewEmail','WechatDraft','WechatDraftPublish','WechatMaterial','WechatQueryStatus'] : [$aParam['queue_name']];
$aQueue = empty($aParam['queue_name']) ? ['ArticleAiCreateContent','RecommendReviewer','RelatedArticle','ReviewerScore','RevisionReviewer','SendRelatedArticleEmail','SendReviewEmail','WechatDraft','WechatDraftPublish','WechatMaterial','WechatQueryStatus','createFieldForQueue','RecommendArticleField'] : [$aParam['queue_name']];
foreach ($aQueue as $key => $value) {
$types[$value] = [
'pending' => 'queues:'.$value,
@@ -53,7 +53,8 @@ class Queueinfo extends Base
}
}
// 关闭 Redis 连接(关键步骤)
$redis->close();
echo '<pre>';var_dump($counts);
}
public function removeKey() {
@@ -99,7 +100,8 @@ echo '<pre>';var_dump($counts);
}
}
// 关闭 Redis 连接(关键步骤)
$redis->close();
echo '<pre>';var_dump($counts);
}
// Redis值删除
@@ -142,7 +144,8 @@ echo '<pre>';var_dump($counts);
}
echo '<pre>';var_dump($sQueueInfo,$sKey,$iNum);exit;
// 关闭 Redis 连接(关键步骤)
$redis->close();
}
@@ -171,36 +174,56 @@ echo '<pre>';var_dump($sQueueInfo,$sKey,$iNum);exit;
$sKey = $redis->get($aParam['key_name']);
var_dump($sKey);
// 关闭 Redis 连接(关键步骤)
$redis->close();
}
public function removeKey1(){
// 获取请求参数
$aParam = $this->request->post();
if(empty($aParam['key_name'])){
if (empty($aParam['key_name'])) {
exit('非法操作');
}
// 获取队列配置Redis 配置)
$config = \think\Config::get('queue');
// 队列名称默认值处理
$sQueueName = empty($aParam['queue_name']) ? 'ArticleAiCreateContent' : $aParam['queue_name'];
// 初始化 Redis 连接
$redis = new \Redis();
// 连接 Redis 服务器
$redis->connect($config['host'], $config['port']);
// 若有密码则认证
if (!empty($config['password'])) {
$redis->auth($config['password']);
}
// 选择数据库(默认 0
$redis->select($config['select']);
$sKey = $redis->hGetAll($aParam['key_name']);
// 操作示例:获取哈希表数据
echo '我是HgetAll';
$sKey = $redis->hGetAll($aParam['key_name']);
var_dump($sKey);
// 删除哈希表
$result = $redis->del($aParam['key_name']);
var_dump($result);
// 尝试获取字符串类型的键(验证是否删除)
echo '我是get';
$sKey = $redis->get($aParam['key_name']);
var_dump($sKey);
// 再次删除(确保删除)
$result = $redis->del($aParam['key_name']);
var_dump($result);
// 关闭 Redis 连接(关键步骤)
$redis->close();
}
}

View File

@@ -2182,11 +2182,19 @@ class Reviewer extends Base
if (isset($data['major_id'])&&$data['major_id']!=0){
$where['t_user_reviewer_info.major'] = ['in',$this->majorids($data['major_id'])];
}
// 计算10天之后的时间戳10天 = 10 * 24 * 60 * 60秒
$iTeenDaysLater = strtotime('-10 days');
//获取邀请时间超过10天的 chengxiaoling 20250728 start
//获取总条数
$count = $this->reviewer_to_journal_obj
->join("t_user", "t_user.user_id = t_reviewer_to_journal.reviewer_id", "left")
->join("t_user_reviewer_info", "t_user_reviewer_info.reviewer_id = t_reviewer_to_journal.reviewer_id", "left")
->where($where)
->where($where)->where(function($query) use ($iTeenDaysLater) {
$query->where('t_user_reviewer_info.last_invite_time', '<', $iTeenDaysLater)
->whereOr('t_user_reviewer_info.last_invite_time', '=', 0);
})
->count();
if(empty($count)){
return jsonSuccess(['reviewers' => [],'count' => 0]);
@@ -2197,10 +2205,14 @@ class Reviewer extends Base
->join("t_user", "t_user.user_id = t_reviewer_to_journal.reviewer_id", "left")
->join("t_user_reviewer_info", "t_user_reviewer_info.reviewer_id = t_reviewer_to_journal.reviewer_id", "left")
->field('t_user.account,t_user.email,t_user.realname,t_user_reviewer_info.company,t_user_reviewer_info.field,t_user.user_id,t_user.rs_num')
->where($where)
->where($where)->where(function($query) use ($iTeenDaysLater) {
$query->where('t_user_reviewer_info.last_invite_time', '<', $iTeenDaysLater)
->whereOr('t_user_reviewer_info.last_invite_time', '=', 0);
})
->order('t_user.rs_num desc')
->limit($limit_start, $data['pageSize'])
->select();
//获取邀请时间超过10天的 chengxiaoling 20250728 end
if(!empty($list)){
$aUserId = array_column($list, 'user_id');
$aWhere = ['state' => 0,'reviewer_id' => ['in',$aUserId]];