This commit is contained in:
2023-03-27 13:31:49 +08:00
parent 426988d8d3
commit d2825476d5
5 changed files with 210 additions and 6 deletions
@@ -2,7 +2,10 @@
namespace App\Controller;
use App\Request\MessageNoticeRequest;
use App\Services\MessageNoticeService;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Psr\Http\Message\ResponseInterface;
/**
@@ -54,4 +57,31 @@ class MessageNoticeController extends AbstractController
$data = $MessageNoticeService->putMessageReadId();
return $this->response->json($data);
}
/**
* 一键消息已读
* @return ResponseInterface
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function putMessageRead(): ResponseInterface
{
$request = $this->container->get(MessageNoticeRequest::class);
$request->scene('putMessageRead')->validateResolved();
$MessageNoticeService = new MessageNoticeService();
$data = $MessageNoticeService->putMessageRead();
return $this->response->json($data);
}
/**
* 获取患者系统消息通知最后一条消息列表
* @return ResponseInterface
*/
public function getPatientMessageServiceLast(): ResponseInterface
{
$MessageNoticeService = new MessageNoticeService();
$data = $MessageNoticeService->getPatientMessageServiceLast();
return $this->response->json($data);
}
}
+25 -1
View File
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace App\Model;
use Hyperf\Database\Model\Builder;
use Hyperf\Database\Model\Collection;
use Hyperf\Snowflake\Concern\Snowflake;
@@ -15,6 +16,7 @@ use Hyperf\Snowflake\Concern\Snowflake;
* @property int $notice_type 消息类型(1:医生服务通知 2:医生系统公告 3:患者系统消息)
* @property int $notice_system_type 系统消息类型(患者端系统消息存在 1:服务消息 2:福利消息 3:退款消息 4:物流消息)
* @property int $read_status 读取状态(0:未读 1:已读)
* @property int $inquiry_type 问诊类型(医生端服务通知存在 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药)
* @property string $from_name 发送人姓名
* @property string $notice_title 消息标题
* @property string $notice_send_time 发送时间
@@ -41,7 +43,7 @@ class MessageNotice extends Model
/**
* The attributes that are mass assignable.
*/
protected array $fillable = ['notice_id', 'user_id', 'user_type', 'notice_type', 'notice_system_type', 'read_status', 'from_name', 'notice_title', 'notice_send_time', 'notice_content', 'send_status', 'send_fail_reason', 'button_type', 'link_type', 'link_params', 'show_type', 'show_params', 'created_at', 'updated_at'];
protected array $fillable = ['notice_id', 'user_id', 'user_type', 'notice_type', 'notice_system_type', 'read_status', 'inquiry_type', 'from_name', 'notice_title', 'notice_send_time', 'notice_content', 'send_status', 'send_fail_reason', 'button_type', 'link_type', 'link_params', 'show_type', 'show_params', 'created_at', 'updated_at'];
protected string $primaryKey = "message_id";
@@ -121,4 +123,26 @@ class MessageNotice extends Model
{
return self::where($params)->update($data);
}
/**
* 获取单条
* @param array $params
* @param string $order_field
* @param array $fields
* @return object|null
*/
public static function getOrderOne(array $params, string $order_field,array $fields = ['*']): object|null
{
return self::where($params)->orderBy($order_field,'desc')->first($fields);
}
/**
* 获取数量
* @param array $params
* @return int
*/
public static function getCount(array $params): int
{
return self::where($params)->count();
}
}
+54
View File
@@ -0,0 +1,54 @@
<?php
declare(strict_types=1);
namespace App\Request;
use App\Constants\HttpEnumCode;
use Hyperf\Validation\Request\FormRequest;
class MessageNoticeRequest extends FormRequest
{
protected array $scenes = [
'putMessageRead' => [
'notice_type',
'notice_system_type',
],
];
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'notice_type' => 'required|integer|min:1|max:3',
'notice_system_type' => 'required|integer|min:0|max:4',
];
}
/**
* 获取已定义验证规则的错误消息.
*/
public function messages(): array
{
return [
'notice_type.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
'notice_type.integer' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
'notice_type.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
'notice_type.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
'notice_system_type.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
'notice_system_type.integer' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
'notice_system_type.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
'notice_system_type.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
];
}
}
+81
View File
@@ -30,6 +30,7 @@ class MessageNoticeService extends BaseService
$fields = [
'notice_id',
'read_status',
'inquiry_type',
'from_name',
'notice_title',
'notice_send_time',
@@ -160,4 +161,84 @@ class MessageNoticeService extends BaseService
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 getPatientMessageServiceLast(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$result = array();
// 服务消息
$params = array();
$params['user_id'] = $user_info['user_id'];
$params['user_id'] = 1;
$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',['*']);
$result['service']['count'] = MessageNotice::getCount($params);
// 福利消息
$params = array();
$params['user_id'] = $user_info['user_id'];
$params['user_id'] = 1;
$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',['*']);
$result['benefit']['count'] = MessageNotice::getCount($params);
// 退款消息
$params = array();
$params['user_id'] = $user_info['user_id'];
$params['user_id'] = 1;
$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',['*']);
$result['refund']['count'] = MessageNotice::getCount($params);
// 物流消息
$params = array();
$params['user_id'] = $user_info['user_id'];
$params['user_id'] = 1;
$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',['*']);
$result['logistics']['count'] = MessageNotice::getCount($params);
return success($result);
}
}