You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
5.3 KiB
160 lines
5.3 KiB
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | Niucloud-admin 企业快速开发的多应用管理平台
|
|
// +----------------------------------------------------------------------
|
|
// | 官方网址:https://www.niucloud.com
|
|
// +----------------------------------------------------------------------
|
|
// | niucloud团队 版权所有 开源版本可自由商用
|
|
// +----------------------------------------------------------------------
|
|
// | Author: Niucloud Team
|
|
// +----------------------------------------------------------------------
|
|
|
|
namespace app\service\api\apiService;
|
|
|
|
use app\model\service_logs\ServiceLogs;
|
|
use core\base\BaseApiService;
|
|
|
|
/**
|
|
* 服务API服务层
|
|
* Class ServiceService
|
|
* @package app\service\api\apiService
|
|
*/
|
|
class ServiceService extends BaseApiService
|
|
{
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->model = new ServiceLogs();
|
|
}
|
|
|
|
/**
|
|
* 获取员工服务记录列表
|
|
* @param array $where
|
|
* @return array
|
|
*/
|
|
public function getMyServiceLogs(array $where = [])
|
|
{
|
|
// 获取当前登录的员工ID
|
|
$staffId = $this->uid;
|
|
|
|
$field = 'id,service_id,staff_id,status,service_remark,feedback,score,created_at,updated_at';
|
|
$order = 'created_at desc';
|
|
|
|
$search_model = $this->model
|
|
->withSearch(["staff_id"], ['staff_id' => $staffId])
|
|
->with(['service', 'staff'])
|
|
->field($field)
|
|
->order($order);
|
|
|
|
$list = $this->pageQuery($search_model);
|
|
|
|
// 如果没有数据,为演示目的返回一些测试数据
|
|
if (empty($list['data']) && isset($where['demo'])) {
|
|
$list = [
|
|
'data' => [
|
|
[
|
|
'id' => 1,
|
|
'service_id' => 1,
|
|
'staff_id' => $staffId,
|
|
'status' => 0,
|
|
'service_remark' => '',
|
|
'feedback' => '',
|
|
'score' => null,
|
|
'created_at' => time(),
|
|
'updated_at' => time(),
|
|
'service_name' => '体能训练指导服务',
|
|
'preview_image_url' => '',
|
|
'description' => '专业的体能训练指导,帮助学员提升身体素质',
|
|
'service_type' => '训练指导'
|
|
],
|
|
[
|
|
'id' => 2,
|
|
'service_id' => 2,
|
|
'staff_id' => $staffId,
|
|
'status' => 1,
|
|
'service_remark' => '学员表现**优秀**,完成了所有训练项目\n• 力量训练:90%完成度\n• 耐力训练:85%完成度\n• 柔韧性训练:95%完成度',
|
|
'feedback' => '孩子很喜欢这次训练,教练很专业',
|
|
'score' => 95,
|
|
'created_at' => time() - 86400,
|
|
'updated_at' => time() - 3600,
|
|
'service_name' => '技能训练服务',
|
|
'preview_image_url' => '',
|
|
'description' => '专项技能训练,提升运动技巧',
|
|
'service_type' => '技能培训'
|
|
]
|
|
],
|
|
'current_page' => 1,
|
|
'last_page' => 1,
|
|
'per_page' => 10,
|
|
'total' => 2
|
|
];
|
|
}
|
|
|
|
return $list;
|
|
}
|
|
|
|
/**
|
|
* 获取服务记录详情
|
|
* @param int $id
|
|
* @return array
|
|
*/
|
|
public function getServiceLogDetail(int $id)
|
|
{
|
|
// 获取当前登录的员工ID
|
|
$staffId = $this->uid;
|
|
|
|
$field = 'id,service_id,staff_id,status,service_remark,feedback,score,created_at,updated_at';
|
|
|
|
$info = $this->model
|
|
->with(['service', 'staff'])
|
|
->field($field)
|
|
->where([
|
|
['id', "=", $id],
|
|
['staff_id', "=", $staffId]
|
|
])
|
|
->findOrEmpty()
|
|
->toArray();
|
|
|
|
return $info;
|
|
}
|
|
|
|
/**
|
|
* 更新服务结果
|
|
* @param int $id
|
|
* @param string $serviceRemark
|
|
* @return array
|
|
*/
|
|
public function updateServiceRemark(int $id, string $serviceRemark)
|
|
{
|
|
// 获取当前登录的员工ID
|
|
$staffId = $this->uid;
|
|
|
|
// 查找对应的服务记录
|
|
$serviceLog = $this->model
|
|
->where([
|
|
['id', '=', $id],
|
|
['staff_id', '=', $staffId]
|
|
])
|
|
->find();
|
|
|
|
if (!$serviceLog) {
|
|
return ['code' => 0, 'msg' => '服务记录不存在'];
|
|
}
|
|
|
|
// 检查状态,只有非完成状态才能修改
|
|
if ($serviceLog->status == 1) {
|
|
return ['code' => 0, 'msg' => '服务已完成,无法修改'];
|
|
}
|
|
|
|
try {
|
|
// 更新服务结果
|
|
$serviceLog->service_remark = $serviceRemark;
|
|
$serviceLog->updated_at = time();
|
|
$serviceLog->save();
|
|
|
|
return ['code' => 1, 'msg' => '更新成功'];
|
|
} catch (\Exception $e) {
|
|
return ['code' => 0, 'msg' => '更新失败:' . $e->getMessage()];
|
|
}
|
|
}
|
|
}
|