新增处方详情接口
This commit is contained in:
parent
523242ff4c
commit
80b63cd73d
@ -227,9 +227,14 @@ class UserDoctorController extends AbstractController
|
||||
/**
|
||||
* 获取处方详情
|
||||
* @return ResponseInterface
|
||||
* @throws ContainerExceptionInterface
|
||||
* @throws NotFoundExceptionInterface
|
||||
*/
|
||||
public function getPrescriptionInfo(): ResponseInterface
|
||||
{
|
||||
$request = $this->container->get(UserDoctorRequest::class);
|
||||
$request->scene('getPrescriptionInfo')->validateResolved();
|
||||
|
||||
$UserDoctorService = new UserDoctorService();
|
||||
$data = $UserDoctorService->getPrescriptionInfo();
|
||||
return $this->response->json($data);
|
||||
|
||||
@ -7,6 +7,7 @@ namespace App\Model;
|
||||
|
||||
|
||||
use Hyperf\Contract\LengthAwarePaginatorInterface;
|
||||
use Hyperf\Database\Model\Collection;
|
||||
use Hyperf\Database\Model\Relations\HasMany;
|
||||
use Hyperf\Database\Model\Relations\HasOne;
|
||||
use Hyperf\Snowflake\Concern\Snowflake;
|
||||
@ -28,8 +29,10 @@ use Hyperf\Snowflake\Concern\Snowflake;
|
||||
* @property int $patient_sex 患者性别-就诊人(1:男 2:女)
|
||||
* @property int $patient_age 患者年龄-就诊人
|
||||
* @property string $prescription_img 处方图片
|
||||
* @property string $doctor_advice 医嘱
|
||||
* @property \Carbon\Carbon $created_at 创建时间
|
||||
* @property \Carbon\Carbon $updated_at 修改时间
|
||||
* @property-read \Hyperf\Database\Model\Collection|OrderPrescriptionIcd[] $OrderPrescriptionIcd
|
||||
*/
|
||||
class OrderPrescription extends Model
|
||||
{
|
||||
@ -43,7 +46,7 @@ class OrderPrescription extends Model
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected array $fillable = ['order_prescription_id', 'order_inquiry_id', 'doctor_id', 'pharmacist_id', 'prescription_status', 'pharmacist_audit_status', 'pharmacist_fail_reason', 'platform_audit_status', 'platform_fail_reason', 'is_delete', 'prescription_code', 'doctor_name', 'patient_name', 'patient_sex', 'patient_age', 'prescription_img', 'created_at', 'updated_at'];
|
||||
protected array $fillable = ['order_prescription_id', 'order_inquiry_id', 'doctor_id', 'pharmacist_id', 'prescription_status', 'pharmacist_audit_status', 'pharmacist_fail_reason', 'platform_audit_status', 'platform_fail_reason', 'is_delete', 'prescription_code', 'doctor_name', 'patient_name', 'patient_sex', 'patient_age', 'prescription_img', 'doctor_advice', 'created_at', 'updated_at'];
|
||||
|
||||
protected string $primaryKey = "order_prescription_id";
|
||||
|
||||
@ -55,6 +58,28 @@ class OrderPrescription extends Model
|
||||
return $this->HasMany(OrderPrescriptionIcd::class, 'order_prescription_id','order_prescription_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取信息-单条
|
||||
* @param array $params
|
||||
* @param array $fields
|
||||
* @return object|null
|
||||
*/
|
||||
public static function getOne(array $params, array $fields = ['*']): object|null
|
||||
{
|
||||
return self::where($params)->first($fields);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据-多
|
||||
* @param array $params
|
||||
* @param array $fields
|
||||
* @return Collection|array
|
||||
*/
|
||||
public static function getList(array $params = [], array $fields = ['*']): Collection|array
|
||||
{
|
||||
return self::where($params)->get($fields);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取是否存在
|
||||
* @param array $params
|
||||
|
||||
93
app/Model/OrderProduct.php
Normal file
93
app/Model/OrderProduct.php
Normal file
@ -0,0 +1,93 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Model;
|
||||
|
||||
|
||||
|
||||
use Hyperf\Database\Model\Collection;
|
||||
use Hyperf\Snowflake\Concern\Snowflake;
|
||||
|
||||
/**
|
||||
* @property int $order_product_id 主键id
|
||||
* @property int $order_inquiry_id 订单-问诊id
|
||||
* @property int $order_prescription_id 订单-处方id
|
||||
* @property int $doctor_id 医生id
|
||||
* @property string $order_product_no 订单编号
|
||||
* @property string $escrow_trade_no 第三方支付流水号
|
||||
* @property int $order_product_status 订单状态(1:待支付 2:待发货 3:已发货 4:已签收 5:已完成 6:已取消)
|
||||
* @property int $pay_channel 支付渠道(1:小程序支付 2:微信扫码支付)
|
||||
* @property int $pay_status 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款)
|
||||
* @property int $cancel_reason 订单取消原因(1:主动取消 2:复核失败/库存不足 3:支付超时)
|
||||
* @property string $amount_total 订单金额
|
||||
* @property string $payment_amount_total 实际付款金额
|
||||
* @property string $logistics_fee 运费金额
|
||||
* @property string $logistics_no 物流编号
|
||||
* @property string $pay_time 支付时间
|
||||
* @property string $remarks 订单备注
|
||||
* @property int $refund_status 商品订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭)
|
||||
* @property string $cancel_remarks 订单取消备注(自动添加)
|
||||
* @property int $province_id 省份id
|
||||
* @property string $province 省份
|
||||
* @property int $city_id 城市id
|
||||
* @property string $city 城市
|
||||
* @property int $county_id 区县id
|
||||
* @property string $county 区县
|
||||
* @property string $address 详细地址
|
||||
* @property string $address_mask 详细地址(掩码)
|
||||
* @property string $consignee_name 收货人姓名
|
||||
* @property string $consignee_name_mask 收货人姓名(掩码)
|
||||
* @property string $consignee_tel 收货人电话
|
||||
* @property string $consignee_tel_mask 收货人电话(掩码)
|
||||
* @property \Carbon\Carbon $created_at 创建时间
|
||||
* @property \Carbon\Carbon $updated_at 修改时间
|
||||
*/
|
||||
class OrderProduct extends Model
|
||||
{
|
||||
use Snowflake;
|
||||
|
||||
/**
|
||||
* The table associated with the model.
|
||||
*/
|
||||
protected ?string $table = 'order_product';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected array $fillable = ['order_product_id', 'order_inquiry_id', 'order_prescription_id', 'doctor_id', 'order_product_no', 'escrow_trade_no', 'order_product_status', 'pay_channel', 'pay_status', 'cancel_reason', 'amount_total', 'payment_amount_total', 'logistics_fee', 'logistics_no', 'pay_time', 'remarks', 'refund_status', 'cancel_remarks', 'province_id', 'province', 'city_id', 'city', 'county_id', 'county', 'address', 'address_mask', 'consignee_name', 'consignee_name_mask', 'consignee_tel', 'consignee_tel_mask', 'created_at', 'updated_at'];
|
||||
|
||||
protected string $primaryKey = "order_product_id";
|
||||
|
||||
/**
|
||||
* 获取信息-单条
|
||||
* @param array $params
|
||||
* @param array $fields
|
||||
* @return object|null
|
||||
*/
|
||||
public static function getOne(array $params, array $fields = ['*']): object|null
|
||||
{
|
||||
return self::where($params)->first($fields);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据-多
|
||||
* @param array $params
|
||||
* @param array $fields
|
||||
* @return Collection|array
|
||||
*/
|
||||
public static function getList(array $params = [], array $fields = ['*']): Collection|array
|
||||
{
|
||||
return self::where($params)->get($fields);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取是否存在
|
||||
* @param array $params
|
||||
* @return bool
|
||||
*/
|
||||
public static function getExists(array $params): bool
|
||||
{
|
||||
return self::where($params)->exists();
|
||||
}
|
||||
}
|
||||
99
app/Model/OrderProductItem.php
Normal file
99
app/Model/OrderProductItem.php
Normal file
@ -0,0 +1,99 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Model;
|
||||
|
||||
|
||||
|
||||
use Hyperf\Database\Model\Collection;
|
||||
use Hyperf\Database\Model\Relations\HasOne;
|
||||
use Hyperf\Snowflake\Concern\Snowflake;
|
||||
|
||||
/**
|
||||
* @property int $product_item_id 主键id
|
||||
* @property int $order_product_id 订单-商品订单id
|
||||
* @property int $order_inquiry_id 订单-问诊id
|
||||
* @property int $order_prescription_id 订单-处方id
|
||||
* @property int $product_id 商品id
|
||||
* @property string $product_name 商品名称
|
||||
* @property string $product_price 商品价格
|
||||
* @property string $product_platform_code 商品处方平台编码
|
||||
* @property int $amount 数量
|
||||
* @property string $manufacturer 生产厂家
|
||||
* @property string $product_cover_img 商品封面图
|
||||
* @property string $product_spec 商品规格
|
||||
* @property \Carbon\Carbon $created_at 创建时间
|
||||
* @property \Carbon\Carbon $updated_at 修改时间
|
||||
*/
|
||||
class OrderProductItem extends Model
|
||||
{
|
||||
use Snowflake;
|
||||
|
||||
/**
|
||||
* The table associated with the model.
|
||||
*/
|
||||
protected ?string $table = 'order_product_item';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected array $fillable = ['product_item_id', 'order_product_id', 'order_inquiry_id', 'order_prescription_id', 'product_id', 'product_name', 'product_price', 'product_platform_code', 'amount', 'manufacturer', 'product_cover_img', 'product_spec', 'created_at', 'updated_at'];
|
||||
|
||||
protected string $primaryKey = "product_item_id";
|
||||
|
||||
/**
|
||||
* 关联商品表
|
||||
*/
|
||||
public function Product(): HasOne
|
||||
{
|
||||
return $this->hasOne(Product::class, 'product_id', 'product_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取信息-单条
|
||||
* @param array $params
|
||||
* @param array $fields
|
||||
* @return object|null
|
||||
*/
|
||||
public static function getOne(array $params, array $fields = ['*']): object|null
|
||||
{
|
||||
return self::where($params)->first($fields);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据-多
|
||||
* @param array $params
|
||||
* @param array $fields
|
||||
* @return Collection|array
|
||||
*/
|
||||
public static function getList(array $params = [], array $fields = ['*']): Collection|array
|
||||
{
|
||||
return self::where($params)->get($fields);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取是否存在
|
||||
* @param array $params
|
||||
* @return bool
|
||||
*/
|
||||
public static function getExists(array $params): bool
|
||||
{
|
||||
return self::where($params)->exists();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据-关联商品表
|
||||
* @param array $params
|
||||
* @param array $fields
|
||||
* @return Collection|array
|
||||
*/
|
||||
public static function getWithProductList(array $params = [], array $fields = ['*']): Collection|array
|
||||
{
|
||||
return self::with([
|
||||
"Product"
|
||||
])
|
||||
->where($params)
|
||||
->get($fields);
|
||||
}
|
||||
}
|
||||
@ -54,6 +54,10 @@ class UserDoctorRequest extends FormRequest
|
||||
'doctor_id',
|
||||
'evaluation_type',
|
||||
],
|
||||
'getPrescriptionInfo' => [ // 获取处方详情
|
||||
'order_inquiry_id',
|
||||
'order_prescription_id', // 处方id(非必须)
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
@ -85,6 +89,7 @@ class UserDoctorRequest extends FormRequest
|
||||
'words' => 'required',
|
||||
'doctor_id' => 'required',
|
||||
'evaluation_type' => 'required|integer|min:1|max:3',
|
||||
'order_inquiry_id' => 'required',
|
||||
];
|
||||
}
|
||||
|
||||
@ -134,6 +139,7 @@ class UserDoctorRequest extends FormRequest
|
||||
'evaluation_type.integer' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||
'evaluation_type.min' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||
'evaluation_type.max' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||
'order_inquiry_id.required' => HttpEnumCode::getMessage(HttpEnumCode::CLIENT_HTTP_ERROR),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
51
app/Services/CaseService.php
Normal file
51
app/Services/CaseService.php
Normal file
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Model\InquiryCaseProduct;
|
||||
|
||||
/**
|
||||
* 病例
|
||||
*/
|
||||
class CaseService extends BaseService
|
||||
{
|
||||
/**
|
||||
* 获取病例商品列表
|
||||
* @param string|int $inquiry_case_id
|
||||
* @return array
|
||||
*/
|
||||
public function getCaseProductlist(string|int $inquiry_case_id): array
|
||||
{
|
||||
if (empty($inquiry_case_id)){
|
||||
return [];
|
||||
}
|
||||
|
||||
$params = array();
|
||||
$params['inquiry_case_id'] = $inquiry_case_id;
|
||||
$inquiry_case_products = InquiryCaseProduct::getWithProductList($params);
|
||||
if (empty($inquiry_case_products)){
|
||||
return [];
|
||||
}
|
||||
|
||||
$result = [];
|
||||
foreach ($inquiry_case_products as $inquiry_case_product){
|
||||
if (!empty($inquiry_case_product['Product'])){
|
||||
$data = array();
|
||||
$data['product_id'] = $inquiry_case_product['product_id'];
|
||||
$data['case_product_num'] = $inquiry_case_product['case_product_num'];
|
||||
$data['product_name'] = $inquiry_case_product['Product']['product_name'];
|
||||
$data['product_price'] = $inquiry_case_product['Product']['product_price'];
|
||||
$data['product_type'] = $inquiry_case_product['Product']['product_type'];
|
||||
$data['product_cover_img'] = addAliyunOssWebsite($inquiry_case_product['Product']['product_cover_img']);
|
||||
$data['product_spec'] = $inquiry_case_product['Product']['product_spec'];
|
||||
$data['license_number'] = $inquiry_case_product['Product']['license_number'];
|
||||
$data['manufacturer'] = $inquiry_case_product['Product']['manufacturer'];
|
||||
$data['packaging_unit'] = $inquiry_case_product['Product']['packaging_unit'];
|
||||
|
||||
$result[] = $data;
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@ -3,6 +3,7 @@
|
||||
namespace App\Services;
|
||||
|
||||
use App\Model\OrderPrescription;
|
||||
use App\Model\OrderProductItem;
|
||||
use Hyperf\Contract\LengthAwarePaginatorInterface;
|
||||
|
||||
class OrderPrescriptionService extends BaseService
|
||||
@ -57,4 +58,40 @@ class OrderPrescriptionService extends BaseService
|
||||
return OrderPrescription::getPage($params, $fields);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取处方订单中开方商品数据
|
||||
* @param string|int $order_inquiry_id
|
||||
* @param string|int $order_prescription_id
|
||||
* @return array
|
||||
*/
|
||||
public function getproductList(string|int $order_inquiry_id ,string|int $order_prescription_id): array
|
||||
{
|
||||
$params = array();
|
||||
$params['order_inquiry_id'] = $order_inquiry_id;
|
||||
$params['order_prescription_id'] = $order_prescription_id;
|
||||
$order_product_items = OrderProductItem::getWithProductList($params);
|
||||
if(empty($order_product_items)){
|
||||
return [];
|
||||
}
|
||||
|
||||
$result = [];
|
||||
|
||||
foreach ($order_product_items as $order_product_item){
|
||||
$data = array();
|
||||
$data['product_item_id'] = $order_product_item['product_item_id'];
|
||||
$data['product_id'] = $order_product_item['product_id'];
|
||||
$data['amount'] = $order_product_item['amount'];
|
||||
$data['product_cover_img'] = addAliyunOssWebsite($order_product_item['product_cover_img']);
|
||||
$data['single_unit'] = $order_product_item['Product']['single_unit'];
|
||||
$data['single_use'] = $order_product_item['Product']['single_use'];
|
||||
$data['packaging_unit'] = $order_product_item['Product']['packaging_unit'];
|
||||
$data['frequency_use'] = $order_product_item['Product']['frequency_use'];
|
||||
|
||||
$result[] = $data;
|
||||
}
|
||||
|
||||
unset($order_product_items);
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@ -44,25 +44,8 @@ class PatientCaseService extends BaseService
|
||||
if (!empty($order_inquiry_case['order_inquiry'])){
|
||||
if ($order_inquiry_case['order_inquiry']['inquiry_type'] == 4){
|
||||
// 问诊购药存在用药意向
|
||||
$params = array();
|
||||
$params['inquiry_case_id'] = $order_inquiry_case['inquiry_case_id'];
|
||||
$inquiry_case_product = InquiryCaseProduct::getWithProductList($params);
|
||||
if (!empty($inquiry_case_product)){
|
||||
foreach ($inquiry_case_product as &$item){
|
||||
if (!empty($item['Product'])){
|
||||
$item['product_name'] = $item['Product']['product_name'];
|
||||
$item['product_price'] = $item['Product']['product_price'];
|
||||
$item['product_type'] = $item['Product']['product_type'];
|
||||
$item['product_cover_img'] = addAliyunOssWebsite($item['Product']['product_cover_img']);
|
||||
$item['product_spec'] = $item['Product']['product_spec'];
|
||||
$item['license_number'] = $item['Product']['license_number'];
|
||||
$item['manufacturer'] = $item['Product']['manufacturer'];
|
||||
$item['packaging_unit'] = $item['Product']['packaging_unit'];
|
||||
|
||||
unset($item['Product']);
|
||||
}
|
||||
}
|
||||
}
|
||||
$CaseService = new CaseService();
|
||||
$inquiry_case_product = $CaseService->getCaseProductlist($order_inquiry_case['inquiry_case_id']);
|
||||
}
|
||||
unset($order_inquiry_case['order_inquiry']);
|
||||
}
|
||||
|
||||
@ -13,10 +13,12 @@ use App\Model\DoctorBankCard;
|
||||
use App\Model\DoctorExpertise;
|
||||
use App\Model\DoctorInquiryConfig;
|
||||
use App\Model\DoctorWord;
|
||||
use App\Model\InquiryCaseProduct;
|
||||
use App\Model\OrderEvaluation;
|
||||
use App\Model\OrderInquiry;
|
||||
use App\Model\OrderInquiryCase;
|
||||
use App\Model\OrderPrescription;
|
||||
use App\Model\OrderProductItem;
|
||||
use App\Model\User;
|
||||
use App\Model\UserDoctor;
|
||||
use App\Model\UserDoctorInfo;
|
||||
@ -791,17 +793,82 @@ class UserDoctorService extends BaseService
|
||||
{
|
||||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||||
|
||||
$order_prescription_id = $this->request->route('order_prescription_id');
|
||||
$order_inquiry_id = $this->request->input('order_inquiry_id');
|
||||
$order_prescription_id = $this->request->input('order_prescription_id');
|
||||
|
||||
// 获取医生信息
|
||||
$params = array();
|
||||
$params['doctor_id'] = $user_info['client_user_id'];
|
||||
|
||||
$fields = [
|
||||
'doctor_id',
|
||||
'iden_auth_status',
|
||||
'idcard_status',
|
||||
'multi_point_status',
|
||||
];
|
||||
$user_doctor = UserDoctor::getOne($params, $fields);
|
||||
if (empty($user_doctor)) {
|
||||
return fail(HttpEnumCode::HTTP_ERROR, "非法医生");
|
||||
}
|
||||
|
||||
$res = $this->checkDoctorAuth($user_doctor);
|
||||
if ($res !== true) {
|
||||
return fail(HttpEnumCode::HTTP_ERROR, $res);
|
||||
}
|
||||
|
||||
// 获取患者病例表
|
||||
$fields = [
|
||||
'inquiry_case_id',
|
||||
'name',
|
||||
'sex',
|
||||
'age',
|
||||
'disease_desc',
|
||||
];
|
||||
|
||||
$params = array();
|
||||
$params['order_inquiry_id'] = $order_inquiry_id;
|
||||
$params['status'] = 1;
|
||||
$order_inquiry_case = OrderInquiryCase::getOne($params,$fields);
|
||||
if (empty($order_inquiry_case)){
|
||||
return fail(HttpEnumCode::HTTP_ERROR,"患者病例信息错误");
|
||||
}
|
||||
|
||||
// 获取用药意向
|
||||
$CaseService = new CaseService();
|
||||
$inquiry_case_product = $CaseService->getCaseProductlist($order_inquiry_case['inquiry_case_id']);
|
||||
|
||||
if (!empty($order_prescription_id)){
|
||||
// 获取处方数据
|
||||
$params = array();
|
||||
$params['order_prescription_id'] = $order_prescription_id;
|
||||
$order_prescription = OrderPrescription::getOne($params);
|
||||
if (empty($order_prescription)){
|
||||
return fail();
|
||||
}
|
||||
|
||||
// 订单-商品订单列表
|
||||
$OrderPrescriptionService = new OrderPrescriptionService();
|
||||
$order_product_items = $OrderPrescriptionService->getproductList($order_inquiry_id,$order_prescription_id);
|
||||
}
|
||||
|
||||
$result = array();
|
||||
$result['inquiry_case_product'] = $inquiry_case_product;// 用药意向
|
||||
$result['order_product_items'] = $order_product_items ?? [];// 开方药品
|
||||
$result['case'] = $order_inquiry_case;// 病例数据
|
||||
$result['prescription']['doctor_advice'] = $order_prescription['doctor_advice'] ?? "";// 医嘱
|
||||
|
||||
return success($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测医生身份认证
|
||||
* @param object|array $user_doctor 医生表数据
|
||||
* @param bool $is_iden_auth 是否检测身份认证
|
||||
* @param bool $is_idcard 是否检测实名认证
|
||||
* @param bool $is_multi_point 是否检测多点执业认证
|
||||
* @return bool|string string:错误信息 bool:通过
|
||||
*/
|
||||
public function checkDoctorAuth(object|array $user_doctor): bool|string
|
||||
public function checkDoctorAuth(object|array $user_doctor,bool $is_iden_auth = true,bool $is_idcard = true,bool $is_multi_point = true): bool|string
|
||||
{
|
||||
if (empty($user_doctor)){
|
||||
throw new BusinessException();
|
||||
|
||||
@ -134,7 +134,7 @@ Router::addGroup('/doctor', function () {
|
||||
Router::get('', [UserDoctorController::class, 'getPrescriptionList']);
|
||||
|
||||
// 获取处方详情
|
||||
Router::get('/{order_prescription_id:\d+}', [UserDoctorController::class, 'getPrescriptionInfo']);
|
||||
Router::get('/info', [UserDoctorController::class, 'getPrescriptionInfo']);
|
||||
});
|
||||
|
||||
// 常用语
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user