Files
hospital-applets-api/app/Services/MessageNoticeService.php
T
2023-04-01 11:07:44 +08:00

326 lines
11 KiB
PHP

<?php
namespace App\Services;
use App\Model\MessageNotice;
/**
* 通知消息
* 不区分各端
*/
class MessageNoticeService extends BaseService
{
/**
* 获取医生服务消息列表-分页
* @return array
*/
public function getDoctorMessageService(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$page = $this->request->input('page', 1);
$per_page = $this->request->input('per_page', 10);
$params = array();
$params['user_id'] = $user_info['user_id'];
$params['user_type'] = 2;
$params['notice_type'] = 1; // 消息类型(1:医生服务通知 2:医生系统公告 3:患者系统消息
$params['send_status'] = 1;
$fields = [
'notice_id',
'read_status',
'inquiry_type',
'from_name',
'notice_brief_title',
'notice_title',
'notice_send_time',
'notice_content',
'button_type',
'link_type',
'link_params',
'show_type',
'show_params',
];
$result = MessageNotice::getMessageNoticePage($params, $fields, $page, $per_page);
if (!empty($result['data'])) {
foreach ($result['data'] as &$item) {
if (!empty($item['link_params'])) {
$item['link_params'] = json_decode($item['link_params']);
}
if (!empty($item['show_params'])) {
$item['show_params'] = json_decode($item['show_params']);
}
if (!empty($item['notice_send_time'])) {
$item['notice_send_time'] = date('Y-m-d H:i',strtotime($item['notice_send_time']));
}
}
}
return success($result);
}
/**
* 获取医生系统公告列表-分页
* @return array
*/
public function getDoctorMessageSystem(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$page = $this->request->input('page', 1);
$per_page = $this->request->input('per_page', 10);
$params = array();
$params['user_id'] = $user_info['user_id'];
$params['user_type'] = 2;
$params['notice_type'] = 2; // 消息类型(1:医生服务通知 2:医生系统公告 3:患者系统消息
$params['send_status'] = 1;
$fields = [
'notice_id',
'read_status',
'from_name',
'notice_brief_title',
'notice_title',
'notice_send_time',
'notice_content',
'button_type',
'link_type',
'link_params',
'show_type',
'show_params',
];
$result = MessageNotice::getMessageNoticePage($params, $fields, $page, $per_page);
if (!empty($result['data'])) {
foreach ($result['data'] as &$item) {
if (!empty($item['link_params'])) {
$item['link_params'] = json_decode($item['link_params'], true);
}
if (!empty($item['show_params'])) {
$item['show_params'] = json_decode($item['show_params'], true);
}
if (!empty($item['notice_send_time'])) {
$item['notice_send_time'] = date('Y-m-d H:i',strtotime($item['notice_send_time']));
}
}
}
return success($result);
}
/**
* 获取医生系统公告详情
* @return array
*/
public function getDoctorMessageSystemInfo(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$notice_id = $this->request->route('notice_id');
$params = array();
$params['notice_id'] = $notice_id;
$params['user_id'] = $user_info['user_id'];
$params['notice_type'] = 2; // 消息类型(1:医生服务通知 2:医生系统公告 3:患者系统消息)
$params['send_status'] = 1;
$message_notice = MessageNotice::getOne($params);
if (empty($message_notice)){
return fail();
}
if (!empty($message_notice['link_params'])) {
$message_notice['link_params'] = json_decode($message_notice['link_params'], true);
}
if (!empty($message_notice['show_params'])) {
$message_notice['show_params'] = json_decode($message_notice['show_params'], true);
}
if (!empty($message_notice['notice_send_time'])) {
$message_notice['notice_send_time'] = date('Y-m-d H:i',strtotime($message_notice['notice_send_time']));
}
return success($message_notice->toArray());
}
/**
* 消息已读
* @return array
*/
public function putMessageReadId(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$notice_id = $this->request->route('notice_id');
$params = array();
$params['notice_id'] = $notice_id;
$params['user_id'] = $user_info['user_id'];
$message_notice = MessageNotice::getExists($params);
if (empty($message_notice)){
return success();
}
$data = array();
$data['read_status'] = 1;
$params = array();
$params['notice_id'] = $notice_id;
MessageNotice::edit($params,$data);
return success();
}
/**
* 一键消息已读
* @return array
*/
public function putMessageRead(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$notice_type = $this->request->input('notice_type');
$data = array();
$data['read_status'] = 1;
$params = array();
$params['user_id'] = $user_info['user_id'];
$params['user_type'] = $user_info['user_type'];
$params['notice_type'] = $notice_type;
$params['send_status'] = 1;
MessageNotice::edit($params,$data);
return success();
}
/**
* 获取患者系统消息通知列表
* @return array
*/
public function getPatientMessageServiceListLast(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$result = array();
// 服务消息
$params = array();
$params['user_id'] = $user_info['user_id'];
$params['user_type'] = 1;
$params['notice_type'] = 3; // 消息类型(1:医生服务通知 2:医生系统公告 3:患者系统消息
$params['notice_system_type'] = 1; // 系统消息类型(患者端系统消息存在 1:服务消息 2:福利消息 3:退款消息 4:物流消息)
$params['send_status'] = 1;
$result['service']['info'] = MessageNotice::getOrderOne($params,'notice_send_time',['*']);
$params['read_status'] = 0;
$result['service']['count'] = MessageNotice::getCount($params);
// 福利消息
$params = array();
$params['user_id'] = $user_info['user_id'];
$params['user_type'] = 1;
$params['notice_type'] = 3; // 消息类型(1:医生服务通知 2:医生系统公告 3:患者系统消息
$params['notice_system_type'] = 2; // 系统消息类型(患者端系统消息存在 1:服务消息 2:福利消息 3:退款消息 4:物流消息)
$params['send_status'] = 1;
$result['benefit']['info'] = MessageNotice::getOrderOne($params,'notice_send_time',['*']);
$params['read_status'] = 0;
$result['benefit']['count'] = MessageNotice::getCount($params);
// 退款消息
$params = array();
$params['user_id'] = $user_info['user_id'];
$params['user_type'] = 1;
$params['notice_type'] = 3; // 消息类型(1:医生服务通知 2:医生系统公告 3:患者系统消息
$params['notice_system_type'] = 3; // 系统消息类型(患者端系统消息存在 1:服务消息 2:福利消息 3:退款消息 4:物流消息)
$params['send_status'] = 1;
$result['refund']['info'] = MessageNotice::getOrderOne($params,'notice_send_time',['*']);
$params['read_status'] = 0;
$result['refund']['count'] = MessageNotice::getCount($params);
// 物流消息
$params = array();
$params['user_id'] = $user_info['user_id'];
$params['user_type'] = 1;
$params['notice_type'] = 3; // 消息类型(1:医生服务通知 2:医生系统公告 3:患者系统消息
$params['notice_system_type'] = 4; // 系统消息类型(患者端系统消息存在 1:服务消息 2:福利消息 3:退款消息 4:物流消息)
$params['send_status'] = 1;
$result['logistics']['info'] = MessageNotice::getOrderOne($params,'notice_send_time',['*']);
$params['read_status'] = 0;
$result['logistics']['count'] = MessageNotice::getCount($params);
return success($result);
}
/**
* 获取患者服务、福利、退款、物流消息通知列表-分页
* @return array
*/
public function getPatientMessageSystem(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$notice_system_type = $this->request->input('notice_system_type');
$page = $this->request->input('page', 1);
$per_page = $this->request->input('per_page', 10);
$params = array();
$params['user_id'] = $user_info['user_id'];
$params['user_type'] = 1;
$params['notice_type'] = 3; // 消息类型(1:医生服务通知 2:医生系统公告 3:患者系统消息
$params['notice_system_type'] = $notice_system_type; // 系统消息类型(患者端系统消息存在 1:服务消息 2:福利消息 3:退款消息 4:物流消息)
$params['send_status'] = 1;
$result = MessageNotice::getMessageNoticePage($params, ['*'], $page, $per_page);
if (!empty($result['data'])) {
foreach ($result['data'] as &$item) {
if (!empty($item['link_params'])) {
$item['link_params'] = json_decode($item['link_params']);
}
if (!empty($item['show_params'])) {
$item['show_params'] = json_decode($item['show_params']);
}
if (!empty($item['notice_send_time'])) {
$item['notice_send_time'] = date('Y-m-d H:i',strtotime($item['notice_send_time']));
}
}
}
return success($result);
}
/**
* 获取患者系统消息通知最后一条消息
* @return array
*/
public function getPatientMessageServiceLast(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$result = array();
// 服务消息
$params = array();
$params['user_id'] = $user_info['user_id'];
$params['user_type'] = 1;
$params['notice_type'] = 3; // 消息类型(1:医生服务通知 2:医生系统公告 3:患者系统消息
$params['send_status'] = 1;
$result['info'] = MessageNotice::getOrderOne($params,'notice_send_time',['*']);
$params['read_status'] = 0;
$result['count'] = MessageNotice::getCount($params);
return success($result);
}
}