完善投票接口
parent
1dcb385280
commit
4f9630b001
|
@ -185,7 +185,7 @@ class TalkMessageController extends CController
|
||||||
'receiver_id' => 'required|integer|min:1',
|
'receiver_id' => 'required|integer|min:1',
|
||||||
'mode' => 'required|integer|in:0,1',
|
'mode' => 'required|integer|in:0,1',
|
||||||
'title' => 'required',
|
'title' => 'required',
|
||||||
'options' => 'required|array|max:6',
|
'options' => 'required|array',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$user_id = $this->uid();
|
$user_id = $this->uid();
|
||||||
|
@ -198,10 +198,10 @@ class TalkMessageController extends CController
|
||||||
'user_id' => $user_id,
|
'user_id' => $user_id,
|
||||||
'receiver_id' => $params['receiver_id'],
|
'receiver_id' => $params['receiver_id'],
|
||||||
], [
|
], [
|
||||||
'user_id' => $user_id,
|
'user_id' => $user_id,
|
||||||
'mode' => $params['mode'],
|
'title' => $params['title'],
|
||||||
'title' => $params['title'],
|
'answer_mode' => $params['mode'],
|
||||||
'options' => $params['options'],
|
'answer_option' => $params['options'],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (!$isTrue) return $this->response->fail('发起投票失败!');
|
if (!$isTrue) return $this->response->fail('发起投票失败!');
|
||||||
|
@ -218,7 +218,7 @@ class TalkMessageController extends CController
|
||||||
$params = $this->request->inputs(['record_id', 'options']);
|
$params = $this->request->inputs(['record_id', 'options']);
|
||||||
$this->validate($params, [
|
$this->validate($params, [
|
||||||
'record_id' => 'required|integer|min:1',
|
'record_id' => 'required|integer|min:1',
|
||||||
'options' => 'required|array',
|
'options' => 'required',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$isTrue = $this->talkMessageService->handleVote($this->uid(), $params);
|
$isTrue = $this->talkMessageService->handleVote($this->uid(), $params);
|
||||||
|
|
|
@ -40,11 +40,12 @@ class TalkRecordsVote extends BaseModel
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $casts = [
|
protected $casts = [
|
||||||
'record_id' => 'integer',
|
'record_id' => 'integer',
|
||||||
'user_id' => 'integer',
|
'user_id' => 'integer',
|
||||||
'answer_mode' => 'integer',
|
'answer_mode' => 'integer',
|
||||||
'answer_num' => 'integer',
|
'answer_num' => 'integer',
|
||||||
'answered_num' => 'integer',
|
'answered_num' => 'integer',
|
||||||
'status' => 'integer'
|
'status' => 'integer',
|
||||||
|
'answer_option' => 'array',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@ class FormatMessageService
|
||||||
{
|
{
|
||||||
if (empty($rows)) return [];
|
if (empty($rows)) return [];
|
||||||
|
|
||||||
$files = $codes = $forwards = $invites = [];
|
$files = $codes = $forwards = $invites = $votes = [];
|
||||||
foreach ($rows as $value) {
|
foreach ($rows as $value) {
|
||||||
switch ($value['msg_type']) {
|
switch ($value['msg_type']) {
|
||||||
case TalkMessageType::FILE_MESSAGE:
|
case TalkMessageType::FILE_MESSAGE:
|
||||||
|
@ -75,6 +75,10 @@ class FormatMessageService
|
||||||
case TalkMessageType::CODE_MESSAGE:
|
case TalkMessageType::CODE_MESSAGE:
|
||||||
$codes[] = $value['id'];
|
$codes[] = $value['id'];
|
||||||
break;
|
break;
|
||||||
|
case TalkMessageType::VOTE_MESSAGE:
|
||||||
|
$votes[] = $value['id'];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -127,27 +127,25 @@ class TalkMessageService
|
||||||
|
|
||||||
Db::beginTransaction();
|
Db::beginTransaction();
|
||||||
try {
|
try {
|
||||||
$message['msg_type'] = TalkMessageType::FILE_MESSAGE;
|
$message['msg_type'] = TalkMessageType::VOTE_MESSAGE;
|
||||||
$message['created_at'] = date('Y-m-d H:i:s');
|
$message['created_at'] = date('Y-m-d H:i:s');
|
||||||
$message['updated_at'] = date('Y-m-d H:i:s');
|
$message['updated_at'] = date('Y-m-d H:i:s');
|
||||||
|
|
||||||
$insert = TalkRecords::create($message);
|
$insert = TalkRecords::create($message);
|
||||||
|
|
||||||
$options = [];
|
$options = [];
|
||||||
foreach ($vote['options'] as $k => $option) {
|
foreach ($vote['answer_option'] as $k => $option) {
|
||||||
$options[chr(65 + $k)] = $option;
|
$options[chr(65 + $k)] = $option;
|
||||||
}
|
}
|
||||||
|
|
||||||
$vote['record_id'] = $insert->id;
|
$vote['record_id'] = $insert->id;
|
||||||
$vote['user_id'] = $options;
|
$vote['answer_option'] = $options;
|
||||||
$vote['options'] = $options;
|
$vote['answer_num'] = $answer_num;
|
||||||
$vote['answer_num'] = $answer_num;
|
$vote['created_at'] = date('Y-m-d H:i:s');
|
||||||
$vote['created_at'] = date('Y-m-d H:i:s');
|
$vote['updated_at'] = $vote['created_at'];
|
||||||
$vote['updated_at'] = $vote['created_at'];
|
|
||||||
if (!TalkRecordsVote::create($vote)) {
|
if (!TalkRecordsVote::create($vote)) {
|
||||||
throw new Exception('插入聊天记录(投票消息)失败...');
|
throw new Exception('插入聊天记录(投票消息)失败...');
|
||||||
}
|
}
|
||||||
|
|
||||||
Db::commit();
|
Db::commit();
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
Db::rollBack();
|
Db::rollBack();
|
||||||
|
@ -181,8 +179,11 @@ class TalkMessageService
|
||||||
{
|
{
|
||||||
$record = TalkRecords::join('talk_records_vote as vote', 'vote.record_id', '=', 'talk_records.id')
|
$record = TalkRecords::join('talk_records_vote as vote', 'vote.record_id', '=', 'talk_records.id')
|
||||||
->where('talk_records.id', $params['record_id'])
|
->where('talk_records.id', $params['record_id'])
|
||||||
|
->withCasts([
|
||||||
|
'answer_option' => 'array'
|
||||||
|
])
|
||||||
->first([
|
->first([
|
||||||
'talk_records.id', 'talk_records.receiver_id', 'talk_records.talk_type',
|
'talk_records.id', 'talk_records.receiver_id', 'talk_records.talk_type', 'talk_records.msg_type',
|
||||||
'vote.id as vote_id', 'vote.answer_mode', 'vote.answer_option', 'vote.answer_num', 'vote.status as vote_status'
|
'vote.id as vote_id', 'vote.answer_mode', 'vote.answer_option', 'vote.answer_num', 'vote.status as vote_status'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -203,9 +204,8 @@ class TalkMessageService
|
||||||
|
|
||||||
sort($options);
|
sort($options);
|
||||||
|
|
||||||
$answerOption = json_decode($record->answer_option, true);
|
|
||||||
foreach ($options as $value) {
|
foreach ($options as $value) {
|
||||||
if (!isset($answerOption[$value])) return false;
|
if (!isset($record->answer_option[$value])) return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 单选模式取第一个
|
// 单选模式取第一个
|
||||||
|
@ -231,7 +231,6 @@ class TalkMessageService
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
logger()->error($e->getMessage());
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue