Browse Source

feat(api): 添加体测报告相关接口

- 新增体测报告列表和详情接口
- 实现体测报告数据的查询和处理
- 添加学生资源一对一关系的方法
- 优化体测报告数据的展示逻辑
master
liutong 10 months ago
parent
commit
c3aa8befee
  1. 24
      niucloud/app/api/controller/apiController/PhysicalTest.php
  2. 5
      niucloud/app/api/route/route.php
  3. 7
      niucloud/app/model/physical_test/PhysicalTest.php
  4. 33
      niucloud/app/service/api/apiService/PhysicalTestService.php

24
niucloud/app/api/controller/apiController/PhysicalTest.php

@ -12,21 +12,37 @@
namespace app\api\controller\apiController; namespace app\api\controller\apiController;
use app\Request; use app\Request;
use app\service\api\apiService\CampusService;
use app\service\api\apiService\ChatService; use app\service\api\apiService\ChatService;
use app\service\api\apiService\CommonService; use app\service\api\apiService\PhysicalTestService;
use core\base\BaseApiService; use core\base\BaseApiService;
/** /**
* 体测报告控制器相关接口 * 体测报告-控制器相关接口
* Class Personnel * Class Personnel
* @package app\api\controller\apiController * @package app\api\controller\apiController
*/ */
class PhysicalTest extends BaseApiService class PhysicalTest extends BaseApiService
{ {
//测试控制器Demo //列表
public function index(Request $request) public function index(Request $request)
{
$resource_id = $request->param('resource_id', '');//学生资源表id
if (empty($resource_id)) {
return fail('缺少参数');
}
$where = [
'resource_id' => $resource_id,
];
$res = (new PhysicalTestService())->getList($where);
return success($res);
}
//详情
public function info(Request $request)
{ {
$personnel_id = $request->param('personnel_id', '');//员工人力资源表id(两个参数2选1) $personnel_id = $request->param('personnel_id', '');//员工人力资源表id(两个参数2选1)
$customer_resources_id = $request->param('customer_resources_id', '');//学生资源表id(两个参数2选1) $customer_resources_id = $request->param('customer_resources_id', '');//学生资源表id(两个参数2选1)

5
niucloud/app/api/route/route.php

@ -347,6 +347,11 @@ Route::group(function () {
//学生端-用户聊天-发送聊天内容 //学生端-用户聊天-发送聊天内容
Route::post('xy/chat/sendChatMessages', 'apiController.Chat/sendChatMessages'); Route::post('xy/chat/sendChatMessages', 'apiController.Chat/sendChatMessages');
//学生端-体测报告-列表
Route::get('xy/physicalTest', 'apiController.PhysicalTest/index');
//学生端-体测报告-详情
Route::get('xy/physicalTest/info', 'apiController.PhysicalTest/info');

7
niucloud/app/model/physical_test/PhysicalTest.php

@ -81,6 +81,13 @@ class PhysicalTest extends BaseModel
return $this->hasOne(CustomerResources::class, 'id', 'resource_id')->joinType('left')->withField('name,id')->bind(['resource_id_name'=>'name']); return $this->hasOne(CustomerResources::class, 'id', 'resource_id')->joinType('left')->withField('name,id')->bind(['resource_id_name'=>'name']);
} }
//获取学生资源一对一
public function customerResourcesHasOne(){
return $this->hasOne(CustomerResources::class, 'id', 'resource_id');
}
public function student(){ public function student(){
return $this->hasOne(Student::class, 'id', 'student_id')->joinType('left')->withField('name,id')->bind(['student_id_name'=>'name']); return $this->hasOne(Student::class, 'id', 'student_id')->joinType('left')->withField('name,id')->bind(['student_id_name'=>'name']);
} }

33
niucloud/app/service/api/apiService/PhysicalTestService.php

@ -14,10 +14,8 @@ namespace app\service\api\apiService;
use app\model\campus\Campus; use app\model\campus\Campus;
use app\model\campus_person_role\CampusPersonRole; use app\model\campus_person_role\CampusPersonRole;
use app\model\chat_friends\ChatFriends; use app\model\chat_friends\ChatFriends;
use app\model\chat_messages\ChatMessages; use app\model\physical_test\PhysicalTest;
use app\model\dict\Dict;
use core\base\BaseApiService; use core\base\BaseApiService;
use think\facade\Db;
/** /**
* 体测报告-控制器服务层 * 体测报告-控制器服务层
@ -32,32 +30,41 @@ class PhysicalTestService extends BaseApiService
} }
//查询列表 //查询列表
public function getTestList(array $where) public function getList(array $where,string $field = '*')
{ {
$page_params = $this->getPageParam();//获取请求参数中的页码+分页数 $page_params = $this->getPageParam();//获取请求参数中的页码+分页数
$page = $page_params['page']; $page = $page_params['page'];
$limit = $page_params['limit']; $limit = $page_params['limit'];
$model = new ChatFriends(); $model = new PhysicalTest();
//判断用没有员工id //判断用没有员工id
if (!empty($where['personnel_id'])) { if (!empty($where['resource_id'])) {
$model = $model->where('personnel_id', $where['personnel_id']); $model = $model->where('resource_id', $where['resource_id']);
}
if (!empty($where['customer_resources_id'])) {
$model = $model->where('customer_resources_id', $where['customer_resources_id']);
} }
$data = $model $data = $model
->field($field)
->order('id','desc')
->append([
'customerResources'
])
->with([ ->with([
'personnel', 'customerResourcesHasOne'
'customer',
]) ])
->paginate([ ->paginate([
'list_rows' => $limit, 'list_rows' => $limit,
'page' => $page, 'page' => $page,
])->toArray(); ])->toArray();
foreach ($data['data'] as &$v) {
$age = $v['customerResourcesHasOne']['age'];//年龄
$gender = $v['customerResourcesHasOne']['gender'] == 'female' ? 2:1 ;//性别( 1:男,2:女)
$height = $v['height'];//身高
$weight = $v['weight'];//体重
$v['calculateChildHealthScore'] = calculateChildHealthScore($age, $gender, $height, $weight);//综合评分
}
return $data; return $data;
} }

Loading…
Cancel
Save