新增通用卡片:存储数据、标签列表拉取、详情拉取接口
This commit is contained in:
parent
f2124fe291
commit
a3fc9812eb
|
|
@ -0,0 +1,412 @@
|
|||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use think\Db;
|
||||
use think\Log;
|
||||
use PHPExcel;
|
||||
use PHPExcel_Cell_DataType;
|
||||
use PHPExcel_IOFactory;
|
||||
use PHPExcel_Style_NumberFormat;
|
||||
|
||||
|
||||
class Demo extends Base{
|
||||
|
||||
public function get_class_xuesheng(){
|
||||
// dump('0932');
|
||||
// die;
|
||||
// 图片文件所在的目录
|
||||
// $imageDir = ROOT_PATH . 'public' . DS . 'tsf' . DS . 'demo' . DS . 'class1'; // 假设图片在public/uploads/images目录下
|
||||
// $imageDir = ROOT_PATH . 'public' . DS . 'tsf' . DS . 'demo' . DS . 'class2'; // 假设图片在public/uploads/images目录下
|
||||
$imageDir = ROOT_PATH . 'public' . DS . 'tsf' . DS . 'demo' . DS . 'class3'; // 假设图片在public/uploads/images目录下
|
||||
vendor('PHPExcel.PHPExcel');
|
||||
|
||||
// 创建PHPExcel对象
|
||||
$objPHPExcel = new PHPExcel();
|
||||
// 设置活动的工作表
|
||||
$sheet = $objPHPExcel->getActiveSheet();
|
||||
// 设置表头
|
||||
$sheet->setCellValue('A1', '原文件名');
|
||||
$sheet->setCellValue('B1', '新序号');
|
||||
$sheet->setCellValue('C1', '电话');
|
||||
$sheet->setCellValue('D1', '姓名');
|
||||
|
||||
// 序号起始值
|
||||
// $startNumber = 24101;
|
||||
// $startNumber = 24201;
|
||||
$startNumber = 24301;
|
||||
$row = 2; // 从第二行开始写入数据
|
||||
$mingzi_str = '';
|
||||
// 遍历目录中的图片文件
|
||||
if ($handle = opendir($imageDir)) {
|
||||
while (false !== ($entry = readdir($handle))) {
|
||||
if ($entry != "." && $entry != ".." && preg_match('/\.(jpg|jpeg|png|gif)$/i', $entry)) {
|
||||
|
||||
// dump($entry);
|
||||
$mingzi_str = $this->str_jiequ($entry);
|
||||
// dump($mingzi_str);
|
||||
// dump($mingzi_str);
|
||||
|
||||
// 写入原文件名
|
||||
$sheet->setCellValue('A' . $row, $entry);
|
||||
|
||||
// 生成新序号(注意:这里的序号示例是连续的,如果需要跳号,请调整逻辑)
|
||||
$newNumber = $startNumber + ($row - 2);
|
||||
$sheet->setCellValue('B' . $row, $newNumber);
|
||||
|
||||
|
||||
if($mingzi_str != false){
|
||||
$sheet->setCellValue('C' . $row, $mingzi_str[0]);
|
||||
$sheet->setCellValue('D' . $row, $mingzi_str[1]);
|
||||
}
|
||||
|
||||
|
||||
// 实际文件路径和新文件名
|
||||
$oldFilePath = $imageDir . DS . $entry;
|
||||
$newFilePath = $imageDir . DS . $newNumber . '.' . pathinfo($entry, PATHINFO_EXTENSION);
|
||||
|
||||
// 重命名图片文件
|
||||
if (rename($oldFilePath, $newFilePath)) {
|
||||
// 重命名成功
|
||||
} else {
|
||||
// 重命名失败,记录错误或抛出异常
|
||||
throw new \Exception("Failed to rename file: " . $entry);
|
||||
}
|
||||
|
||||
$row++;
|
||||
}
|
||||
}
|
||||
closedir($handle);
|
||||
}
|
||||
// die;
|
||||
// 写入Excel文件到服务器
|
||||
$fileName = 'image_rename_log_' . date('YmdHis') . '.xlsx';
|
||||
$filePath = $imageDir . DS . $fileName;
|
||||
// 使用PHPExcel_IOFactory保存Excel文件
|
||||
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
|
||||
$objWriter->save($filePath);
|
||||
|
||||
dump('完事');
|
||||
}
|
||||
|
||||
// 截取字符串
|
||||
public function str_jiequ($str){
|
||||
// $str = "余航13838799761.jpg";
|
||||
|
||||
$banPos = strpos($str, '班');
|
||||
$banPos = $banPos + 3;
|
||||
// $str = substr($str, $banPos+1);
|
||||
$str = substr($str, $banPos);
|
||||
// dump($banPos);
|
||||
// dump($str);
|
||||
// 查找“.jpg”的位置
|
||||
$dotPos = strpos($str, '.jpg');
|
||||
if ($dotPos !== false) {
|
||||
// 去除“.jpg”扩展名
|
||||
$strWithoutExt = substr($str, 0, $dotPos);
|
||||
|
||||
// 假设电话号码是11位数字
|
||||
$phoneLength = 11;
|
||||
|
||||
// 检查电话号码长度是否合法
|
||||
if (strlen($strWithoutExt) >= $phoneLength && ctype_digit(substr($strWithoutExt, -$phoneLength))) {
|
||||
// 提取电话号码
|
||||
$phone = substr($strWithoutExt, -$phoneLength);
|
||||
|
||||
// 提取中文名字(即去掉电话号码和“.jpg”之前的部分)
|
||||
$name = substr($strWithoutExt, 0, strlen($strWithoutExt) - $phoneLength);
|
||||
|
||||
// echo "名字: $name\n";
|
||||
// echo "电话号码: $phone\n";
|
||||
return [$name,$phone];
|
||||
} else {
|
||||
return false;
|
||||
// echo "字符串格式不正确,无法提取名字和电话号码。\n";
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
// echo "字符串中未找到“.jpg”扩展名。\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
################################################################业务接口################################################################
|
||||
################################################################业务接口################################################################
|
||||
|
||||
################################################获取execl中数组
|
||||
public function submit_rule(){
|
||||
// $file = request()->file('file');
|
||||
$file = request()->file('execl');
|
||||
$name = request()->param();
|
||||
$address_data = explode(',',$name['address']);
|
||||
// dump($name);
|
||||
// die;
|
||||
if($name['type'] == 'create'){
|
||||
$rule_is_true = Db::table('admin_estimate')->where(['province'=>$address_data[0],'city'=>$address_data[1]==''?'无':$address_data[1]])->count();
|
||||
if($rule_is_true > 0){
|
||||
return $this->msg(10007);
|
||||
}
|
||||
}
|
||||
if($file){
|
||||
// 移动到框架应用根目录/public/uploads/ 目录下
|
||||
$file_name_new = date('YmdHis').'_ceshi.xlsx';
|
||||
$info = $file->validate(['size' => 2048000, 'ext' => 'xlsx'])->move(ROOT_PATH . 'public' . DS . 'estimate',$file_name_new);
|
||||
if($info){
|
||||
$original_data = $this->excelToArray(ROOT_PATH . 'public' . DS . 'estimate' . DS . $info->getSaveName());
|
||||
$handle_data = $this->transformation_data($original_data,$address_data,$name['type']);
|
||||
// die;
|
||||
// dump($handle_data);
|
||||
// die;
|
||||
if($name['type'] == 'create'){
|
||||
$result = Db::table('admin_estimate')->insert($handle_data);
|
||||
}else{
|
||||
$result = Db::table('admin_estimate')->where(['id'=>$name['update_id']])->update($handle_data);
|
||||
}
|
||||
|
||||
// return $this->msg(10002);
|
||||
// 成功上传后 获取上传信息
|
||||
// 输出 jpg
|
||||
// echo $info->getExtension();
|
||||
// // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
|
||||
// echo $info->getSaveName();
|
||||
// // 输出 42a79759f284b767dfcb2a0197904287.jpg
|
||||
// echo $info->getFilename();
|
||||
if($result){
|
||||
return $this->msg([]);
|
||||
}else{
|
||||
return $this->msg(10002);
|
||||
}
|
||||
|
||||
}else{
|
||||
// 上传失败获取错误信息
|
||||
return $this->msg(10001, $file->getError());
|
||||
// echo $file->getError();
|
||||
}
|
||||
}else{
|
||||
return $this->msg(10001, '文件缺失');
|
||||
}
|
||||
}
|
||||
// 读取execl文件数据
|
||||
private function excelToArray($filename){
|
||||
vendor('PHPExcel.PHPExcel');
|
||||
$objPHPExcelReader = \PHPExcel_IOFactory::load($filename);
|
||||
|
||||
$sheet = $objPHPExcelReader->getSheet(0); // 读取第一个工作表(编号从 0 开始)
|
||||
$highestRow = $sheet->getHighestRow(); // 取得总行数
|
||||
$highestColumn = \PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn()); // 取得总列数
|
||||
|
||||
// 一次读取一列
|
||||
$res_arr = array();
|
||||
for ($row = 2; $row <= $highestRow; $row++) {
|
||||
$row_arr = array();
|
||||
for ($column = 0; $column < $highestColumn; $column++) {
|
||||
//判断单元格是否包含公式
|
||||
if ($sheet->getCellByColumnAndRow($column, $row)->isFormula()) {
|
||||
$val = $sheet->getCellByColumnAndRow($column, $row)->getFormattedValue();
|
||||
} else {
|
||||
$val = $sheet->getCellByColumnAndRow($column, $row)->getValue();
|
||||
}
|
||||
$row_arr[] = $val;
|
||||
}
|
||||
|
||||
if (count($row_arr) > 0) {
|
||||
$res_arr[] = $row_arr;
|
||||
}
|
||||
}
|
||||
|
||||
return $res_arr;
|
||||
}
|
||||
|
||||
//处理估分数据格式
|
||||
private function transformation_data($data,$daaress,$type='create'){
|
||||
// dump($daaress);
|
||||
$temporary_daaress = $daaress;
|
||||
// dump($temporary_daaress);
|
||||
// die;
|
||||
if($type == 'create'){
|
||||
$return_result = [
|
||||
'province'=>$temporary_daaress[0] == ''?'无':$temporary_daaress[0],
|
||||
'city'=>$temporary_daaress[1] == ''?'无':$temporary_daaress[1],
|
||||
'area'=>'无',
|
||||
'create_time'=>date('Y-m-d H:i:s'),
|
||||
'update_time'=>date('Y-m-d H:i:s'),
|
||||
'content'=>[]
|
||||
];
|
||||
}else{
|
||||
$return_result = [
|
||||
'update_time'=>date('Y-m-d H:i:s'),
|
||||
'content'=>[]
|
||||
];
|
||||
}
|
||||
$temporary_array = [];
|
||||
|
||||
|
||||
$gender = [];
|
||||
$rule_c = [];
|
||||
foreach ($data as $key => $value) {
|
||||
$gender = explode(',',$value[5]);
|
||||
if($value[6] == '无' || $value[7] == '无' || $value[8] == '无'){
|
||||
$rule_c = [];
|
||||
}else{
|
||||
$rule_c = [[$value[6],$value[7],$value[8]]];
|
||||
}
|
||||
foreach ($gender as $gk => $gv) {
|
||||
if(!array_key_exists($gv,$temporary_array)){
|
||||
// 如果性别不存在
|
||||
// $temporary_array[$gv][$value[0]][$value[1]]['score'] = $value[2];
|
||||
$temporary_array[$gv][$value[0]][$value[1]]['choose_num'] = $value[9];
|
||||
$temporary_array[$gv][$value[0]][$value[1]]['list'][$value[3]] = [
|
||||
'unit_data'=>$value[4],
|
||||
'proportion'=>$value[10],
|
||||
'value'=>$value[11],
|
||||
'type'=>$value[12],
|
||||
'describe'=>$value[13],
|
||||
'score'=>$value[2],
|
||||
];
|
||||
$temporary_array[$gv][$value[0]][$value[1]]['list'][$value[3]]['content'] = $rule_c;
|
||||
// if($value[6] == null){
|
||||
// $temporary_array[$gv][$value[0]][$value[1]]['list'][$value[3]]['content'] = [];
|
||||
// }else{
|
||||
// $temporary_array[$gv][$value[0]][$value[1]]['list'][$value[3]]['content'] = [[$value[6],$value[7],$value[8]]];
|
||||
// }
|
||||
}else{
|
||||
// 如果性别已经存在
|
||||
if(!array_key_exists($value[0],$temporary_array[$gv])){
|
||||
// 如果第一分类不存在
|
||||
// $temporary_array[$gv][$value[0]][$value[1]]['score'] = $value[2];
|
||||
$temporary_array[$gv][$value[0]][$value[1]]['choose_num'] = $value[9];
|
||||
$temporary_array[$gv][$value[0]][$value[1]]['list'][$value[3]] = [
|
||||
'unit_data'=>$value[4],
|
||||
'proportion'=>$value[10],
|
||||
'value'=>$value[11],
|
||||
'type'=>$value[12],
|
||||
'describe'=>$value[13],
|
||||
'score'=>$value[2],
|
||||
];
|
||||
$temporary_array[$gv][$value[0]][$value[1]]['list'][$value[3]]['content'] = $rule_c;
|
||||
// if($value[6] == null){
|
||||
// $temporary_array[$gv][$value[0]][$value[1]]['list'][$value[3]]['content'] = [];
|
||||
// }else{
|
||||
// $temporary_array[$gv][$value[0]][$value[1]]['list'][$value[3]]['content'] = [[$value[6],$value[7],$value[8]]];
|
||||
// }
|
||||
}else{
|
||||
// 第一分类存在
|
||||
if(!array_key_exists($value[1],$temporary_array[$gv][$value[0]])){
|
||||
// 如果第二分类不存在
|
||||
// array_push($temporary_array[$value[0]]);
|
||||
// $temporary_array[$gv][$value[0]][$value[1]]['score'] = $value[2];
|
||||
$temporary_array[$gv][$value[0]][$value[1]]['choose_num'] = $value[9];
|
||||
$temporary_array[$gv][$value[0]][$value[1]]['list'][$value[3]] = [
|
||||
'unit_data'=>$value[4],
|
||||
'proportion'=>$value[10],
|
||||
'value'=>$value[11],
|
||||
'type'=>$value[12],
|
||||
'describe'=>$value[13],
|
||||
'score'=>$value[2],
|
||||
];
|
||||
$temporary_array[$gv][$value[0]][$value[1]]['list'][$value[3]]['content'] = $rule_c;
|
||||
// if($value[6] == null){
|
||||
// $temporary_array[$gv][$value[0]][$value[1]]['list'][$value[3]]['content'] = [];
|
||||
// }else{
|
||||
// $temporary_array[$gv][$value[0]][$value[1]]['list'][$value[3]]['content'] = [[$value[6],$value[7],$value[8]]];
|
||||
// }
|
||||
}else{
|
||||
// 第二分类存在
|
||||
|
||||
if(!array_key_exists($value[3],$temporary_array[$gv][$value[0]][$value[1]]['list'])){
|
||||
// 如果项目名不存在
|
||||
// $temporary_array[$gv][$value[0]][$value[1]]['score'] = $value[2];
|
||||
$temporary_array[$gv][$value[0]][$value[1]]['choose_num'] = $value[9];
|
||||
$temporary_array[$gv][$value[0]][$value[1]]['list'][$value[3]] = [
|
||||
'unit_data'=>$value[4],
|
||||
'proportion'=>$value[10],
|
||||
'value'=>$value[11],
|
||||
'type'=>$value[12],
|
||||
'describe'=>$value[13],
|
||||
'score'=>$value[2],
|
||||
];
|
||||
$temporary_array[$gv][$value[0]][$value[1]]['list'][$value[3]]['content'] = $rule_c;
|
||||
// if($value[6] == null){
|
||||
// $temporary_array[$gv][$value[0]][$value[1]]['list'][$value[3]]['content'] = [];
|
||||
// }else{
|
||||
// $temporary_array[$gv][$value[0]][$value[1]]['list'][$value[3]]['content'] = [[$value[6],$value[7],$value[8]]];
|
||||
// }
|
||||
}else{
|
||||
array_push($temporary_array[$gv][$value[0]][$value[1]]['list'][$value[3]]['content'],[$value[6],$value[7],$value[8]]);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// return $temporary_array;
|
||||
$temporary_array = json_encode($temporary_array);
|
||||
$return_result['content'] = $temporary_array;
|
||||
return $return_result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
################################################################其他接口################################################################
|
||||
################################################################其他接口################################################################
|
||||
|
||||
|
||||
// 查看所有地市卡片项目种类
|
||||
public function cards_select_all(){
|
||||
$data = Db::table('admin_estimate')->where(['type'=>1])->field('id,province,city,area,content')->select();
|
||||
$card_arr = [];
|
||||
$exception_arr = ['7年级','8年级','9年级','七年级','八年级','九年级','七年级下学期','八年级上学期','八年级下学期','九年级上学期','BMI','肺活量','机考','体质健康达标','体育课','《国家学生体质健康标准》','体育综合知识测试成绩','体育课考评','一小时阳光体育活动',''];
|
||||
foreach ($data as $key => $value) {
|
||||
$data[$key]['content'] = json_decode($value['content'],true);
|
||||
// dump($data[$key]['city']);
|
||||
if(!array_key_exists($data[$key]['city'], $card_arr)){
|
||||
$card_arr[$data[$key]['city']] = [];
|
||||
}
|
||||
// 开始遍历内容
|
||||
foreach ($data[$key]['content'] as $k1 => $v1) {
|
||||
// 遍历男女
|
||||
foreach ($v1 as $k2 => $v2) {
|
||||
// 遍历现场还是日常
|
||||
foreach ($v2 as $k3 => $v3) {
|
||||
// 遍历大分支(第一类目)
|
||||
foreach ($v3['list'] as $k4 => $v4) {
|
||||
// 遍历项目名
|
||||
// dump($k4);
|
||||
// dump($v4);
|
||||
// if($k4 == '轮滑过桩'){
|
||||
// dump($data[$key]['province']);
|
||||
// dump($data[$key]['city']);
|
||||
// }
|
||||
if(!in_array($k4, $exception_arr)){
|
||||
if(!in_array($k4.'-----------'.$v4['unit_data'], $card_arr[$data[$key]['city']])){
|
||||
// if(!in_array($k4, $card_arr[$data[$key]['city']])){
|
||||
|
||||
// array_push($card_arr[$data[$key]['city']],$k4.'-------'.($k1 == 1?'男':'女').'-----------'.$v4['unit_data']);
|
||||
array_push($card_arr[$data[$key]['city']],$k4.'-----------'.$v4['unit_data']);
|
||||
// array_push($card_arr[$data[$key]['city']],$k4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
dump($card_arr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -365,7 +365,50 @@ class Estimate extends Base{
|
|||
################################################################其他接口################################################################
|
||||
|
||||
|
||||
|
||||
// 查看所有地市卡片项目种类
|
||||
public function cards_select_all(){
|
||||
$data = Db::table('admin_estimate')->where(['type'=>1])->field('id,province,city,area,content')->select();
|
||||
$card_arr = [];
|
||||
$exception_arr = ['7年级','8年级','9年级','七年级','八年级','九年级','七年级下学期','八年级上学期','八年级下学期','九年级上学期','BMI','肺活量','机考','体质健康达标','体育课','《国家学生体质健康标准》','体育综合知识测试成绩','体育课考评','一小时阳光体育活动',''];
|
||||
foreach ($data as $key => $value) {
|
||||
$data[$key]['content'] = json_decode($value['content'],true);
|
||||
// dump($data[$key]['city']);
|
||||
if(!array_key_exists($data[$key]['city'], $card_arr)){
|
||||
$card_arr[$data[$key]['city']] = [];
|
||||
}
|
||||
// 开始遍历内容
|
||||
foreach ($data[$key]['content'] as $k1 => $v1) {
|
||||
// 遍历男女
|
||||
foreach ($v1 as $k2 => $v2) {
|
||||
// 遍历现场还是日常
|
||||
foreach ($v2 as $k3 => $v3) {
|
||||
// 遍历大分支(第一类目)
|
||||
foreach ($v3['list'] as $k4 => $v4) {
|
||||
// 遍历项目名
|
||||
// dump($k4);
|
||||
// dump($v4);
|
||||
// if($k4 == '轮滑过桩'){
|
||||
// dump($data[$key]['province']);
|
||||
// dump($data[$key]['city']);
|
||||
// }
|
||||
if(!in_array($k4, $exception_arr)){
|
||||
if(!in_array($k4.'-----------'.$v4['unit_data'], $card_arr[$data[$key]['city']])){
|
||||
// if(!in_array($k4, $card_arr[$data[$key]['city']])){
|
||||
|
||||
// array_push($card_arr[$data[$key]['city']],$k4.'-------'.($k1 == 1?'男':'女').'-----------'.$v4['unit_data']);
|
||||
array_push($card_arr[$data[$key]['city']],$k4.'-----------'.$v4['unit_data']);
|
||||
// array_push($card_arr[$data[$key]['city']],$k4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
dump($card_arr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
<link rel="stylesheet" href="/x_admin/css/font.css">
|
||||
<link rel="stylesheet" href="/x_admin/css/login.css">
|
||||
<link rel="stylesheet" href="/x_admin/css/xadmin.css">
|
||||
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="/x_admin/js/jq.js"></script>
|
||||
<script src="/x_admin/lib/layui/layui.js" charset="utf-8"></script>
|
||||
|
||||
</head>
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
|
||||
<body id="box_k">
|
||||
<div class="big_box">
|
||||
<div class="title">青测隐私协议</div>
|
||||
<div class="title">Reedaw隐私协议</div>
|
||||
<div class="content">
|
||||
<div class="font_1">一、前言</div>
|
||||
<div class="font_2">感谢您选择使用我们的中学生身体数据健康评估APP(以下简称“本应用”)。我们深知您的个人信息安全至关重要,在您使用本应用后我们郑重承诺,将严格遵守相关法律法规,采取合理有效的措施保护您的个人隐私。本隐私协议旨在明确我们在采集、使用、存储、共享及保护您的个人信息的责任、义务。请您在使用本应用前,仔细阅读并理解本协议内容,一旦您开始使用本应用,即视为您同意我们使用您的个人信息,接受本协议的全部条款。</div>
|
||||
|
|
|
|||
|
|
@ -210,6 +210,10 @@ class Base extends Controller{
|
|||
return false;
|
||||
}
|
||||
|
||||
// 判断一个字符串是否为两位以内小数
|
||||
public function isTwoDecimalOrLess($str) {
|
||||
return preg_match('/^\d*(\.\d{1,2})?$/', $str) === 1;
|
||||
}
|
||||
|
||||
// 获取用户肺活量的标准值
|
||||
public function get_vitalcapacity_data($id){
|
||||
|
|
@ -280,7 +284,14 @@ class Base extends Controller{
|
|||
return $dateTime->format('Y-m-d H:i:s');
|
||||
}
|
||||
|
||||
|
||||
// 处理分秒变秒
|
||||
function convertMinutesSecondsToStringSeconds($timeString) {
|
||||
// 分割字符串获取分钟和秒
|
||||
list($minutes, $seconds) = explode(':', $timeString);
|
||||
// 将分钟和秒转换为秒
|
||||
$totalSeconds = ($minutes * 60) + intval($seconds); // 确保秒是整数
|
||||
return $totalSeconds;
|
||||
}
|
||||
|
||||
// 时间加一或者减一
|
||||
public function adjustDateTime($datetimeStr, $type) {
|
||||
|
|
@ -388,6 +399,12 @@ class Base extends Controller{
|
|||
|
||||
|
||||
public function ceshiyong(){
|
||||
|
||||
phpinfo();
|
||||
$token = '2d4ea9b3f44b169ddf64b2f3d2725ceb';
|
||||
$time = cache($token);
|
||||
dump($time);
|
||||
die;
|
||||
$aa = 15;
|
||||
$a = 1;
|
||||
for ($i=0; $i < 100; $i++) {
|
||||
|
|
|
|||
|
|
@ -108,73 +108,157 @@ class Calculatebody extends Base{
|
|||
// 身体得分修改end
|
||||
|
||||
$return_data['脂肪量'][0] = $result['fat_w'];
|
||||
|
||||
$return_data['脂肪率'][0] = $result['fat_r'];
|
||||
if(($data['gender']==1 && $data['age']<30 && $result['fat_r']<10) || ($data['gender']==1 && $data['age']>=30 && $result['fat_r']<11) || ($data['gender']==2 && $data['age']<30 && $result['fat_r']<20) || ($data['gender']==2 && $data['age']>=30 && $result['fat_r']<21)){
|
||||
if(
|
||||
($data['gender']==1 && $data['age']<30 && $result['fat_r']<10) ||
|
||||
($data['gender']==1 && $data['age']>=30 && $result['fat_r']<11) ||
|
||||
($data['gender']==2 && $data['age']<30 && $result['fat_r']<20) ||
|
||||
($data['gender']==2 && $data['age']>=30 && $result['fat_r']<21)){
|
||||
$return_data['脂肪率'][1] = '偏低';
|
||||
$return_data['脂肪量'][1] = '偏低';
|
||||
}else if(($data['gender']==1 && $data['age']<30 && $result['fat_r']>=10 && $result['fat_r']<21) || ($data['gender']==1 && $data['age']>=30 && $result['fat_r']>=11 && $result['fat_r']<22) || ($data['gender']==2 && $data['age']<30 && $result['fat_r']>=20 && $result['fat_r']<31) || ($data['gender']==2 && $data['age']>=30 && $result['fat_r']>=21 && $result['fat_r']<32)){
|
||||
}else if(
|
||||
($data['gender']==1 && $data['age']<30 && $result['fat_r']>=10 && $result['fat_r']<21) ||
|
||||
($data['gender']==1 && $data['age']>=30 && $result['fat_r']>=11 && $result['fat_r']<22) ||
|
||||
($data['gender']==2 && $data['age']<30 && $result['fat_r']>=20 && $result['fat_r']<31) ||
|
||||
($data['gender']==2 && $data['age']>=30 && $result['fat_r']>=21 && $result['fat_r']<32)){
|
||||
$return_data['脂肪率'][1] = '标准';
|
||||
$return_data['脂肪量'][1] = '标准';
|
||||
}else if(($data['gender']==1 && $data['age']<30 && $result['fat_r']>=21 && $result['fat_r']<26) || ($data['gender']==1 && $data['age']>=30 && $result['fat_r']>=22 && $result['fat_r']<27) || ($data['gender']==2 && $data['age']<30 && $result['fat_r']>=31 && $result['fat_r']<38) || ($data['gender']==2 && $data['age']>=30 && $result['fat_r']>=32 && $result['fat_r']<39)){
|
||||
}else if(
|
||||
($data['gender']==1 && $data['age']<30 && $result['fat_r']>=21 && $result['fat_r']<26) ||
|
||||
($data['gender']==1 && $data['age']>=30 && $result['fat_r']>=22 && $result['fat_r']<27) ||
|
||||
($data['gender']==2 && $data['age']<30 && $result['fat_r']>=31 && $result['fat_r']<38) ||
|
||||
($data['gender']==2 && $data['age']>=30 && $result['fat_r']>=32 && $result['fat_r']<39)){
|
||||
$return_data['脂肪率'][1] = '偏高';
|
||||
$return_data['脂肪量'][1] = '偏高';
|
||||
}else if(($data['gender']==1 && $data['age']<30 && $result['fat_r']>=26) || ($data['gender']==1 && $data['age']>=30 && $result['fat_r']>=27) || ($data['gender']==2 && $data['age']<30 && $result['fat_r']<38) || ($data['gender']==2 && $data['age']>=30 && $result['fat_r']<39)){
|
||||
}else if(
|
||||
($data['gender']==1 && $data['age']<30 && $result['fat_r']>=26) ||
|
||||
($data['gender']==1 && $data['age']>=30 && $result['fat_r']>=27) ||
|
||||
($data['gender']==2 && $data['age']<30 && $result['fat_r']<38) ||
|
||||
($data['gender']==2 && $data['age']>=30 && $result['fat_r']<39)){
|
||||
$return_data['脂肪率'][1] = '高';
|
||||
$return_data['脂肪量'][1] = '高';
|
||||
}else{
|
||||
$return_data['脂肪率'][1] = '异常';
|
||||
$return_data['脂肪量'][1] = '异常';
|
||||
}
|
||||
|
||||
$return_data['肌肉量'][0] = $result['muscleval'];
|
||||
|
||||
$return_data['肌肉率'][0] = $result['muscle'];
|
||||
if(($data['gender']==1 && $result['muscle']<40) || ($data['gender']==2 && $result['muscle']<30)){
|
||||
if(
|
||||
($data['gender']==1 && $result['muscle']<40) ||
|
||||
($data['gender']==2 && $result['muscle']<30)){
|
||||
$return_data['肌肉量'][1] = '不足';
|
||||
$return_data['肌肉率'][1] = '不足';
|
||||
}else if(($data['gender']==1 && $result['muscle']>=40 && $result['muscle']<60) || ($data['gender']==2 && $result['muscle']>=30 && $result['muscle']<50)){
|
||||
}else if(
|
||||
($data['gender']==1 && $result['muscle']>=40 && $result['muscle']<60) ||
|
||||
($data['gender']==2 && $result['muscle']>=30 && $result['muscle']<50)){
|
||||
$return_data['肌肉量'][1] = '标准';
|
||||
$return_data['肌肉率'][1] = '标准';
|
||||
}else if(($data['gender']==1 && $result['muscle']>=60) || ($data['gender']==2 && $result['muscle']>=50)){
|
||||
}else if(
|
||||
($data['gender']==1 && $result['muscle']>=60) ||
|
||||
($data['gender']==2 && $result['muscle']>=50)){
|
||||
$return_data['肌肉量'][1] = '优';
|
||||
$return_data['肌肉率'][1] = '优';
|
||||
}else{
|
||||
$return_data['肌肉量'][1] = '异常';
|
||||
$return_data['肌肉率'][1] = '异常';
|
||||
}
|
||||
|
||||
$return_data['水分'][0] = $result['water'];
|
||||
if(($data['gender']==1 && $result['water']<55) || ($data['gender']==2 && $result['water']<45)){
|
||||
if(
|
||||
($data['gender']==1 && $result['water']<55) ||
|
||||
($data['gender']==2 && $result['water']<45)){
|
||||
$return_data['水分'][1] = '不足';
|
||||
}else if(($data['gender']==1 && $result['water']>=55 && $result['water']<65) || ($data['gender']==2 && $result['water']>=45 && $result['water']<60)){
|
||||
}else if(
|
||||
($data['gender']==1 && $result['water']>=55 && $result['water']<65) ||
|
||||
($data['gender']==2 && $result['water']>=45 && $result['water']<60)){
|
||||
$return_data['水分'][1] = '标准';
|
||||
}else if(($data['gender']==1 && $result['water']>65) || ($data['gender']==2 && $result['water']>60)){
|
||||
}else if(
|
||||
($data['gender']==1 && $result['water']>65) ||
|
||||
($data['gender']==2 && $result['water']>60)){
|
||||
$return_data['水分'][1] = '优';
|
||||
}else{
|
||||
$return_data['水分'][1] = '异常';
|
||||
}
|
||||
|
||||
$return_data['蛋白量'][0] = $result['proteinval'];
|
||||
|
||||
$return_data['蛋白率'][0] = $result['protein'];
|
||||
if(($data['gender']==1 && $result['protein']<16) || ($data['gender']==2 && $result['protein']<14)){
|
||||
if(
|
||||
($data['gender']==1 && $result['protein']<16) ||
|
||||
($data['gender']==2 && $result['protein']<14)){
|
||||
$return_data['蛋白量'][1] = '不足';
|
||||
$return_data['蛋白率'][1] = '不足';
|
||||
}else if(($data['gender']==1 && $result['protein']>=16 && $result['protein']<18) || ($data['gender']==2 && $result['protein']>=14 && $result['protein']<16)){
|
||||
}else if(
|
||||
($data['gender']==1 && $result['protein']>=16 && $result['protein']<18) ||
|
||||
($data['gender']==2 && $result['protein']>=14 && $result['protein']<16)){
|
||||
$return_data['蛋白量'][1] = '标准';
|
||||
$return_data['蛋白率'][1] = '标准';
|
||||
}else if(($data['gender']==1 && $result['protein']>18) || ($data['gender']==2 && $result['protein']>16)){
|
||||
}else if(
|
||||
($data['gender']==1 && $result['protein']>18) ||
|
||||
($data['gender']==2 && $result['protein']>16)){
|
||||
$return_data['蛋白量'][1] = '优';
|
||||
$return_data['蛋白率'][1] = '优';
|
||||
}else{
|
||||
$return_data['蛋白量'][1] = '异常';
|
||||
$return_data['蛋白率'][1] = '异常';
|
||||
}
|
||||
|
||||
$return_data['骨重'][0] = $result['bone'];
|
||||
if(($data['gender']==1 && $data['weight']<60 && $result['bone']<2.4) || ($data['gender']==1 && $data['weight']>=60 && $data['weight']<75 && $result['bone']<2.8) || ($data['gender']==1 && $data['weight']>=75 && $result['bone']<3.1) || ($data['gender']==2 && $data['weight']<45 && $result['bone']<1.7) || ($data['gender']==2 && $data['weight']>=45 && $data['weight']<60 && $result['bone']<2.1) || ($data['gender']==2 && $data['weight']>=60 && $result['bone']<2.4)){
|
||||
if(
|
||||
($data['gender']==1 && $data['weight']<60 && $result['bone']<2.4) ||
|
||||
($data['gender']==1 && $data['weight']>=60 && $data['weight']<75 && $result['bone']<2.8) ||
|
||||
($data['gender']==1 && $data['weight']>=75 && $result['bone']<3.1) ||
|
||||
($data['gender']==2 && $data['weight']<45 && $result['bone']<1.7) ||
|
||||
($data['gender']==2 && $data['weight']>=45 && $data['weight']<60 && $result['bone']<2.1) ||
|
||||
($data['gender']==2 && $data['weight']>=60 && $result['bone']<2.4)){
|
||||
$return_data['骨重'][1] = '不足';
|
||||
}else if(($data['gender']==1 && $data['weight']<60 && $result['bone']>=2.4 && $result['bone']<=2.6) || ($data['gender']==1 && $data['weight']>=60 && $data['weight']<75 && $result['bone']>=2.8 && $result['bone']<=3) || ($data['gender']==1 && $data['weight']>=75 && $result['bone']>=3.1 && $result['bone']<=3.3) || ($data['gender']==2 && $data['weight']<45 && $result['bone']>=1.7 && $result['bone']<=1.9) || ($data['gender']==2 && $data['weight']>=45 && $data['weight']<60 && $result['bone']>=2.1 && $result['bone']<=2.3) || ($data['gender']==2 && $data['weight']>=60 && $result['bone']>=2.4 && $result['bone']<=2.6)){
|
||||
}else if(
|
||||
($data['gender']==1 && $data['weight']<60 && $result['bone']>=2.4 && $result['bone']<=2.6) ||
|
||||
($data['gender']==1 && $data['weight']>=60 && $data['weight']<75 && $result['bone']>=2.8 && $result['bone']<=3) ||
|
||||
($data['gender']==1 && $data['weight']>=75 && $result['bone']>=3.1 && $result['bone']<=3.3) ||
|
||||
($data['gender']==2 && $data['weight']<45 && $result['bone']>=1.7 && $result['bone']<=1.9) ||
|
||||
($data['gender']==2 && $data['weight']>=45 && $data['weight']<60 && $result['bone']>=2.1 && $result['bone']<=2.3) ||
|
||||
($data['gender']==2 && $data['weight']>=60 && $result['bone']>=2.4 && $result['bone']<=2.6)){
|
||||
$return_data['骨重'][1] = '标准';
|
||||
}else if(($data['gender']==1 && $data['weight']<60 && $result['bone']>2.6) || ($data['gender']==1 && $data['weight']>=60 && $data['weight']<75 && $result['bone']>3) || ($data['gender']==1 && $data['weight']>=75 && $result['bone']<3.3) || ($data['gender']==2 && $data['weight']<45 && $result['bone']>1.9) || ($data['gender']==2 && $data['weight']>=45 && $data['weight']<60 && $result['bone']>2.3) || ($data['gender']==2 && $data['weight']>=60 && $result['bone']>2.6)){
|
||||
}else if(
|
||||
($data['gender']==1 && $data['weight']<60 && $result['bone']>2.6) ||
|
||||
($data['gender']==1 && $data['weight']>=60 && $data['weight']<75 && $result['bone']>3) ||
|
||||
($data['gender']==1 && $data['weight']>=75 && $result['bone']<3.3) ||
|
||||
($data['gender']==2 && $data['weight']<45 && $result['bone']>1.9) ||
|
||||
($data['gender']==2 && $data['weight']>=45 && $data['weight']<60 && $result['bone']>2.3) ||
|
||||
($data['gender']==2 && $data['weight']>=60 && $result['bone']>2.6)){
|
||||
$return_data['骨重'][1] = '优';
|
||||
}else{
|
||||
$return_data['骨重'][1] = '异常';
|
||||
}
|
||||
|
||||
$return_data['基础代谢'][0] = $result['kcal'];
|
||||
if(($data['gender']==1 && $data['age']>0 && $data['age']<3 && (60.9*$data['weight']-54)>$result['kcal']) || ($data['gender']==1 && $data['age']>=3 && $data['age']<10 && (22.7*$data['weight']+495)>$result['kcal']) || ($data['gender']==1 && $data['age']>=10 && $data['age']<18 && (17.5*$data['weight']+651)>$result['kcal']) || ($data['gender']==1 && $data['age']>=18 && $data['age']<30 && (15.3*$data['weight']+679)>$result['kcal']) || ($data['gender']==1 && $data['age']>=30 && (11.6*$data['weight']+879)>$result['kcal']) || ($data['gender']==2 && $data['age']>0 && $data['age']<3 && (61*$data['weight']-51)>$result['kcal']) || ($data['gender']==2 && $data['age']>=3 && $data['age']<10 && (22.5*$data['weight']+499)>$result['kcal']) || ($data['gender']==2 && $data['age']>=10 && $data['age']<18 && (12.2*$data['weight']+746)>$result['kcal']) || ($data['gender']==2 && $data['age']>=18 && $data['age']<30 && (14.7*$data['weight']+496)>$result['kcal']) || ($data['gender']==2 && $data['age']>=30 && (8.7*$data['weight']+820)>$result['kcal'])){
|
||||
if(
|
||||
($data['gender']==1 && $data['age']>0 && $data['age']<3 && (60.9*$data['weight']-54)>$result['kcal']) ||
|
||||
($data['gender']==1 && $data['age']>=3 && $data['age']<10 && (22.7*$data['weight']+495)>$result['kcal']) ||
|
||||
($data['gender']==1 && $data['age']>=10 && $data['age']<18 && (17.5*$data['weight']+651)>$result['kcal']) ||
|
||||
($data['gender']==1 && $data['age']>=18 && $data['age']<30 && (15.3*$data['weight']+679)>$result['kcal']) ||
|
||||
($data['gender']==1 && $data['age']>=30 && (11.6*$data['weight']+879)>$result['kcal']) ||
|
||||
($data['gender']==2 && $data['age']>0 && $data['age']<3 && (61*$data['weight']-51)>$result['kcal']) ||
|
||||
($data['gender']==2 && $data['age']>=3 && $data['age']<10 && (22.5*$data['weight']+499)>$result['kcal']) ||
|
||||
($data['gender']==2 && $data['age']>=10 && $data['age']<18 && (12.2*$data['weight']+746)>$result['kcal']) ||
|
||||
($data['gender']==2 && $data['age']>=18 && $data['age']<30 && (14.7*$data['weight']+496)>$result['kcal']) ||
|
||||
($data['gender']==2 && $data['age']>=30 && (8.7*$data['weight']+820)>$result['kcal'])){
|
||||
$return_data['基础代谢'][1] = '偏低';
|
||||
}else if(($data['gender']==1 && $data['age']>0 && $data['age']<3 && (60.9*$data['weight']-54)<=$result['kcal']) || ($data['gender']==1 && $data['age']>=3 && $data['age']<10 && (22.7*$data['weight']+495)<=$result['kcal']) || ($data['gender']==1 && $data['age']>=10 && $data['age']<18 && (17.5*$data['weight']+651)<=$result['kcal']) || ($data['gender']==1 && $data['age']>=18 && $data['age']<30 && (15.3*$data['weight']+679)<=$result['kcal']) || ($data['gender']==1 && $data['age']>=30 && (11.6*$data['weight']+879)<=$result['kcal']) || ($data['gender']==2 && $data['age']>0 && $data['age']<3 && (61*$data['weight']-51)<=$result['kcal']) || ($data['gender']==2 && $data['age']>=3 && $data['age']<10 && (22.5*$data['weight']+499)<=$result['kcal']) || ($data['gender']==2 && $data['age']>=10 && $data['age']<18 && (12.2*$data['weight']+746)<=$result['kcal']) || ($data['gender']==2 && $data['age']>=18 && $data['age']<30 && (14.7*$data['weight']+496)<=$result['kcal']) || ($data['gender']==2 && $data['age']>=30 && (8.7*$data['weight']+820)<=$result['kcal'])){
|
||||
}else if(
|
||||
($data['gender']==1 && $data['age']>0 && $data['age']<3 && (60.9*$data['weight']-54)<=$result['kcal']) ||
|
||||
($data['gender']==1 && $data['age']>=3 && $data['age']<10 && (22.7*$data['weight']+495)<=$result['kcal']) ||
|
||||
($data['gender']==1 && $data['age']>=10 && $data['age']<18 && (17.5*$data['weight']+651)<=$result['kcal']) ||
|
||||
($data['gender']==1 && $data['age']>=18 && $data['age']<30 && (15.3*$data['weight']+679)<=$result['kcal']) ||
|
||||
($data['gender']==1 && $data['age']>=30 && (11.6*$data['weight']+879)<=$result['kcal']) ||
|
||||
($data['gender']==2 && $data['age']>0 && $data['age']<3 && (61*$data['weight']-51)<=$result['kcal']) ||
|
||||
($data['gender']==2 && $data['age']>=3 && $data['age']<10 && (22.5*$data['weight']+499)<=$result['kcal']) ||
|
||||
($data['gender']==2 && $data['age']>=10 && $data['age']<18 && (12.2*$data['weight']+746)<=$result['kcal']) ||
|
||||
($data['gender']==2 && $data['age']>=18 && $data['age']<30 && (14.7*$data['weight']+496)<=$result['kcal']) ||
|
||||
($data['gender']==2 && $data['age']>=30 && (8.7*$data['weight']+820)<=$result['kcal'])){
|
||||
$return_data['基础代谢'][1] = '优';
|
||||
}else{
|
||||
$return_data['基础代谢'][1] = '异常';
|
||||
}
|
||||
|
||||
$return_data['内脏指数'][0] = $result['visceral'];
|
||||
|
|
@ -184,18 +268,26 @@ class Calculatebody extends Base{
|
|||
$return_data['内脏指数'][1] = '警惕';
|
||||
}else if($result['visceral']>=14){
|
||||
$return_data['内脏指数'][1] = '危险';
|
||||
}else{
|
||||
$return_data['内脏指数'][1] = '异常';
|
||||
}
|
||||
|
||||
$return_data['皮下脂肪'][0] = $result['sfr'];
|
||||
if(($data['gender']==1 && $result['sfr']<7) || ($data['gender']==2 && $result['sfr']<11)){
|
||||
if(
|
||||
($data['gender']==1 && $result['sfr']<7) ||
|
||||
($data['gender']==2 && $result['sfr']<11)){
|
||||
$return_data['皮下脂肪'][1] = '不足';
|
||||
}else if(($data['gender']==1 && $result['sfr']>=7 && $result['sfr']<15) || ($data['gender']==2 && $result['sfr']>=11 && $result['sfr']<17)){
|
||||
}else if(
|
||||
($data['gender']==1 && $result['sfr']>=7 && $result['sfr']<15) ||
|
||||
($data['gender']==2 && $result['sfr']>=11 && $result['sfr']<17)){
|
||||
$return_data['皮下脂肪'][1] = '标准';
|
||||
}else if(($data['gender']==1 && $result['sfr']>=15) || ($data['gender']==2 && $result['sfr']>=17)){
|
||||
}else if(
|
||||
($data['gender']==1 && $result['sfr']>=15) ||
|
||||
($data['gender']==2 && $result['sfr']>=17)){
|
||||
$return_data['皮下脂肪'][1] = '偏高';
|
||||
}else{
|
||||
$return_data['皮下脂肪'][1] = '异常';
|
||||
}
|
||||
|
||||
|
||||
// 脂肪率:偏低 标准 偏高 高
|
||||
// 肌肉率:不足 标准 优
|
||||
|
||||
|
|
@ -286,7 +378,7 @@ class Calculatebody extends Base{
|
|||
// 除 bcdiv(,,20)
|
||||
|
||||
// 计算身体数据,BMI、脂肪率、脂肪量、肌肉率、肌肉量....
|
||||
function calculate_body_data($height,$weight,$age,$gender,$impedance){
|
||||
public function calculate_body_data($height,$weight,$age,$gender,$impedance){
|
||||
|
||||
$result_data = [];
|
||||
$mheight = bcdiv($height, '100', 20); // 假设我们保留20位小数
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ class Card extends Base{
|
|||
|
||||
// 详细卡片信息
|
||||
// $data = ['id'=>'2']
|
||||
public function card_data_detailed($data=['aud_id'=>'83','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
|
||||
public function card_data_detailed($data=['aud_id'=>'61','token'=>'caadd1be045a65f30b92aa805f1de54a']){
|
||||
if(count(input('post.')) > 0){
|
||||
$data = input('post.');
|
||||
}
|
||||
|
|
@ -273,12 +273,14 @@ class Card extends Base{
|
|||
$result_end = $this->processing_return_data_new($result[0]);
|
||||
$cardparts = new Cardparts;
|
||||
// dump($result_end);
|
||||
// die;
|
||||
$result_end['gender'] = $result[0]['gender'];
|
||||
$result_end['record_time'] = $result[0]['record_time'];
|
||||
$result_end['score'] = $result_end['score'];
|
||||
$result_end['body_type'] = $result_end['body_type'];
|
||||
$result_end = $cardparts->conversion_interval($result_end);
|
||||
// dump($result);
|
||||
// dump($result_end);
|
||||
// die;
|
||||
$result_end['cplist'] = $this->grow_up_recommendation([
|
||||
'birthday'=>$result[0]['birthday'],
|
||||
'body'=>[
|
||||
|
|
@ -287,12 +289,17 @@ class Card extends Base{
|
|||
'bmi'=>$result[0]['bmi']
|
||||
],
|
||||
]);
|
||||
$result_end['literature'] = [
|
||||
'《中华人民共和国卫生行业标准WS 423-2013》',
|
||||
'《中华人民共和国卫生行业标准WS/T 612-2018》',
|
||||
'《中华人民共和国卫生行业标准WS/T1586-2018》',
|
||||
'《WHO 5~19岁身高/体重判定标准》',
|
||||
];
|
||||
if(count($result_end['cplist']['nutritionlist']) <= 0){
|
||||
// $result_end['cplist'] = [];
|
||||
$result_end['literature'] = [];
|
||||
}else{
|
||||
$result_end['literature'] = [
|
||||
'《中华人民共和国卫生行业标准WS 423-2013》',
|
||||
'《中华人民共和国卫生行业标准WS/T 612-2018》',
|
||||
'《中华人民共和国卫生行业标准WS/T1586-2018》',
|
||||
'《WHO 5~19岁身高/体重判定标准》',
|
||||
];
|
||||
}
|
||||
return $this->msg($result_end);
|
||||
}
|
||||
}
|
||||
|
|
@ -302,9 +309,12 @@ class Card extends Base{
|
|||
$result_end_data = [];
|
||||
$month_num = $this->calculateAgeInMonthsWithPrecision($data['birthday']);
|
||||
$gender_val = $data['gender'];
|
||||
// dump($data);
|
||||
// dump($this->result_end_data_mould);
|
||||
// die;
|
||||
foreach ($data as $key => $value) {
|
||||
if($key != 'aud_id' && $key != 'id' && $key != 'create_time' && $key != 'last_update_time' && $key != 'acd_id' && $key != 'ROW_NUMBER' && $key != 'record_time' && $key != 'gender' && $key != 'birthday'){
|
||||
|
||||
// dump($key);
|
||||
// 设置单个数据格式
|
||||
$result_end_data[$key] = $this->result_end_data_mould;
|
||||
if(array_key_exists($key, $this->unit_name)){
|
||||
|
|
@ -317,8 +327,14 @@ class Card extends Base{
|
|||
if(strpos($value, ',')){
|
||||
$result_end_data[$key]['standard'] = explode(',',$value)[1];
|
||||
}
|
||||
// dump($result_end_data[$key]);
|
||||
if(array_key_exists($key, $this->standard_color)){
|
||||
$result_end_data[$key]['color'] = $this->standard_color[$key][$result_end_data[$key]['standard']];
|
||||
// dump($key);
|
||||
// dump($result_end_data[$key]);
|
||||
// dump($this->standard_color[$key]);
|
||||
if($result_end_data[$key]['standard'] != '异常'){
|
||||
$result_end_data[$key]['color'] = $this->standard_color[$key][$result_end_data[$key]['standard']];
|
||||
}
|
||||
}
|
||||
// 如果小于16岁(儿童)
|
||||
if($data['age'] < $this->age_limit){
|
||||
|
|
@ -391,8 +407,18 @@ class Card extends Base{
|
|||
'sleeplist'=>[],//睡眠
|
||||
'moodlist'=>[],//情绪
|
||||
];
|
||||
|
||||
$temporary_arr = [];
|
||||
foreach ($data['body'] as $key => $value) {
|
||||
if(explode(',',$value)[1] == '无'){
|
||||
$result = [
|
||||
'nutritionlist'=>[],//营养
|
||||
'sportlist'=>[],//运动
|
||||
'sleeplist'=>[],//睡眠
|
||||
'moodlist'=>[],//情绪
|
||||
];
|
||||
return $result;
|
||||
}
|
||||
$temporary_arr[$key] = $this->card_body_level[$key]['list'][explode(',',$value)[1]];
|
||||
}
|
||||
$min_value = min($temporary_arr);
|
||||
|
|
|
|||
|
|
@ -242,6 +242,10 @@ class Cardparts extends Base{
|
|||
}else{
|
||||
$temporary_arr['bottom_list'][$key]['list'] = $this->fat_r_w[$gender]['30'];
|
||||
}
|
||||
// 处理异常
|
||||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||||
}
|
||||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||||
}
|
||||
// 脂肪量
|
||||
|
|
@ -252,12 +256,20 @@ class Cardparts extends Base{
|
|||
$temporary_arr['bottom_list'][$key]['list'] = $this->fat_r_w[$gender]['30'];
|
||||
}
|
||||
$temporary_arr['bottom_list'][$key]['list'] = $this->calculate_new_standard($temporary_arr['bottom_list'][$key]['list'],$weight,$value['key_name']);
|
||||
// 处理异常
|
||||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||||
}
|
||||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||||
}
|
||||
// 肌肉率
|
||||
else if($value['key_name'] == 'muscle'){
|
||||
// dump('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%');
|
||||
$temporary_arr['bottom_list'][$key]['list'] = $this->muscle_muscleval[$gender];
|
||||
// 处理异常
|
||||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||||
}
|
||||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||||
// dump($temporary_arr['bottom_list'][$key]);
|
||||
}
|
||||
|
|
@ -266,18 +278,30 @@ class Cardparts extends Base{
|
|||
// dump('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%');
|
||||
$temporary_arr['bottom_list'][$key]['list'] = $this->muscle_muscleval[$gender];
|
||||
$temporary_arr['bottom_list'][$key]['list'] = $this->calculate_new_standard($temporary_arr['bottom_list'][$key]['list'],$weight,$value['key_name']);
|
||||
// 处理异常
|
||||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||||
}
|
||||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||||
// dump($temporary_arr['bottom_list'][$key]);
|
||||
}
|
||||
// 水分
|
||||
else if($value['key_name'] == 'water'){
|
||||
$temporary_arr['bottom_list'][$key]['list'] = $this->water[$gender];
|
||||
// 处理异常
|
||||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||||
}
|
||||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||||
}
|
||||
// 蛋白量
|
||||
else if($value['key_name'] == 'proteinval'){
|
||||
$temporary_arr['bottom_list'][$key]['list'] = $this->proteinval_protein[$gender];
|
||||
$temporary_arr['bottom_list'][$key]['list'] = $this->calculate_new_standard($temporary_arr['bottom_list'][$key]['list'],$weight,$value['key_name']);
|
||||
// 处理异常
|
||||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||||
}
|
||||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||||
}
|
||||
// 骨重
|
||||
|
|
@ -299,26 +323,47 @@ class Cardparts extends Base{
|
|||
$temporary_arr['bottom_list'][$key]['list'] = $this->bone[$gender]['60'];
|
||||
}
|
||||
}
|
||||
// dump($temporary_arr['bottom_list'][$key]);
|
||||
// 处理异常
|
||||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||||
}
|
||||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||||
}
|
||||
// 蛋白率
|
||||
else if($value['key_name'] == 'protein'){
|
||||
$temporary_arr['bottom_list'][$key]['list'] = $this->proteinval_protein[$gender];
|
||||
// 处理异常
|
||||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||||
}
|
||||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||||
}
|
||||
// 基础代谢
|
||||
else if($value['key_name'] == 'kcal'){
|
||||
$temporary_arr['bottom_list'][$key]['list'] = $this->calculate_new_standard($this->kcal,$weight,$value['key_name'],$age,$gender);
|
||||
// 处理异常
|
||||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||||
}
|
||||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||||
}
|
||||
// 内脏指数
|
||||
else if($value['key_name'] == 'visceral'){
|
||||
$temporary_arr['bottom_list'][$key]['list'] = $this->visceral[$gender];
|
||||
// 处理异常
|
||||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||||
}
|
||||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||||
}
|
||||
// 皮下脂肪
|
||||
else if($value['key_name'] == 'sfr'){
|
||||
$temporary_arr['bottom_list'][$key]['list'] = $this->sfr[$gender];
|
||||
// 处理异常
|
||||
if($temporary_arr['bottom_list'][$key]['standard'] == '异常'){
|
||||
$temporary_arr['bottom_list'][$key] = $this->handling_exceptions($temporary_arr['bottom_list'][$key]);
|
||||
}
|
||||
$temporary_arr['bottom_list'][$key]['offset'] = $this->calculate_landing_point($temporary_arr['bottom_list'][$key]['list'],$temporary_arr['bottom_list'][$key]['value'],$temporary_arr['bottom_list'][$key]['standard']);
|
||||
}
|
||||
}
|
||||
|
|
@ -419,5 +464,18 @@ class Cardparts extends Base{
|
|||
// dump($w);
|
||||
// dump($k);
|
||||
}
|
||||
|
||||
|
||||
// 处理异常
|
||||
public function handling_exceptions($data){
|
||||
if($data['value'] <= $data['list'][0]['max_val']){
|
||||
$data['standard'] = $data['list'][0]['text'];
|
||||
$data['color'] = $data['list'][0]['color'];
|
||||
}else if($data['value'] >= $data['list'][count($data['list'])-1]['min_val']){
|
||||
$data['standard'] = $data['list'][count($data['list'])-1]['text'];
|
||||
$data['color'] = $data['list'][count($data['list'])-1]['color'];
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,452 @@
|
|||
<?php
|
||||
|
||||
namespace app\app\controller;
|
||||
|
||||
use think\Controller;
|
||||
use think\Db;
|
||||
use app\bj\controller\Common;
|
||||
use think\Log;
|
||||
use \think\Validate;
|
||||
use app\app\controller\Calculatebody;
|
||||
use app\app\controller\Cardparts;
|
||||
use app\app\controller\Skip;
|
||||
use Exception;
|
||||
|
||||
class Cardpublic extends Base{
|
||||
|
||||
protected $level_data = [
|
||||
['min_val'=>'0','max_val'=>'59','text'=>'不及格','color'=>'#FB5755'],
|
||||
['min_val'=>'60','max_val'=>'79','text'=>'及格','color'=>'#FCAE00'],
|
||||
['min_val'=>'80','max_val'=>'89','text'=>'良好','color'=>'#58CF67'],
|
||||
['min_val'=>'90','max_val'=>'150','text'=>'优秀','color'=>'#6691EF'],
|
||||
];
|
||||
|
||||
// 示意接口
|
||||
public function card_curve_chart($data = ['aud_id'=>'83','s_time'=>'2024-04-01','e_time'=>'2024-07-25','token'=>'caadd1be045a65f30b92aa805f1de54a']){
|
||||
if(count(input('post.')) > 0){
|
||||
$data = input('post.');
|
||||
}
|
||||
if(!array_key_exists('aud_id', $data) || !array_key_exists('s_time', $data) || !array_key_exists('e_time', $data) || !array_key_exists('token', $data)){
|
||||
return $this->msg(10001);
|
||||
}
|
||||
if($this->token_time_validate($data['token']) === false){
|
||||
return $this->msg(20001);
|
||||
}
|
||||
unset($data['token']);
|
||||
}
|
||||
// 获取卡片数据
|
||||
public function get_card_content($data = ['aud_id'=>'83','acd_id'=>'10','token'=>'caadd1be045a65f30b92aa805f1de54a']){
|
||||
if(count(input('post.')) > 0){
|
||||
$data = input('post.');
|
||||
}
|
||||
if(!array_key_exists('aud_id', $data) || !array_key_exists('acd_id', $data) || !array_key_exists('token', $data)){
|
||||
return $this->msg(10001);
|
||||
}
|
||||
if($this->token_time_validate($data['token']) === false){
|
||||
return $this->msg(20001);
|
||||
}
|
||||
// dump(111);
|
||||
// die;
|
||||
return $this->get_card_content_action($data);
|
||||
}
|
||||
|
||||
// 存储信息
|
||||
public function data_save($data = ['aud_id'=>'83','acd_id'=>'10','name'=>'50米','data'=>'10.3','record_time'=>'2024-09-06','token'=>'caadd1be045a65f30b92aa805f1de54a']){
|
||||
if(count(input('post.')) > 0){
|
||||
$data = input('post.');
|
||||
}
|
||||
if(!array_key_exists('aud_id', $data) || !array_key_exists('acd_id', $data) || !array_key_exists('name', $data) || !array_key_exists('data', $data) || !array_key_exists('record_time', $data) || !array_key_exists('token', $data)){
|
||||
return $this->msg(10001);
|
||||
}
|
||||
if($this->token_time_validate($data['token']) === false){
|
||||
return $this->msg(20001);
|
||||
}
|
||||
|
||||
return $this->data_save_action($data);
|
||||
}
|
||||
|
||||
// 获取标签项目信息
|
||||
public function get_label_list($data = ['aud_id'=>'83','acd_id'=>'10','token'=>'caadd1be045a65f30b92aa805f1de54a']){
|
||||
if(count(input('post.')) > 0){
|
||||
$data = input('post.');
|
||||
}
|
||||
if(!array_key_exists('aud_id', $data) || !array_key_exists('acd_id', $data) || !array_key_exists('token', $data)){
|
||||
return $this->msg(10001);
|
||||
}
|
||||
if($this->token_time_validate($data['token']) === false){
|
||||
return $this->msg(20001);
|
||||
}
|
||||
return $this->get_label_list_action($data);
|
||||
}
|
||||
|
||||
|
||||
|
||||
################################################################action################################################################
|
||||
################################################################action################################################################
|
||||
|
||||
##################################################get_card_content##################################################
|
||||
public function get_card_content_action($data){
|
||||
// 查找用户是存在
|
||||
$user_data = Db::table('app_user_data')->where(['id'=>$data['aud_id']])->field('id,gender')->find();
|
||||
if(!$user_data){
|
||||
return $this->msg(10004);
|
||||
}
|
||||
// 卡片是否存在,以及是否含有子项
|
||||
$card_data_sub_item = Db::table('app_card_data_sub_item')->where("acd_id = ".$data['acd_id']." and suit_gender LIKE '%".$user_data['gender']."%'")->field('id,type,name,unit')->select();
|
||||
if(!$card_data_sub_item){
|
||||
return $this->msg(10004);
|
||||
}
|
||||
$return_data = [
|
||||
'icon' => '',
|
||||
'label_list' => [],
|
||||
'line_list' => [],
|
||||
'label_data' => [],
|
||||
|
||||
];
|
||||
$data_this_time = [];
|
||||
$today_time = date('Y-m-d');
|
||||
foreach ($card_data_sub_item as $key => $value) {
|
||||
// 设置单项数据模板
|
||||
$temporary_arr_c = [
|
||||
'project_name' => $value['name'],
|
||||
'score' => '',
|
||||
'max_score' => '',
|
||||
'standard' => '',
|
||||
'this_time_title' => '本次成绩',
|
||||
'this_time_value' => '',
|
||||
'today_time_title' => '今日总计',
|
||||
'today_times' => 0,
|
||||
'today_time_value' => 0,
|
||||
'all_time_title' => '总计平均',
|
||||
'all_times' => 0,
|
||||
'all_time_value' => 0,
|
||||
'describe' => '',
|
||||
'color' => '',
|
||||
'offset' => '',
|
||||
'unit_data' => '',
|
||||
];
|
||||
// 添加标签
|
||||
array_push($return_data['label_list'],$value['name']);
|
||||
// 添加线性轴描述
|
||||
$return_data['line_list'] = $this->level_data;
|
||||
// 查询最后一次成绩
|
||||
$data_this_time = Db::table('app_card_data_sub_item_data')->where(['aud_id'=>$data['aud_id'],'acdsi_id'=>$value['id']])->order('id desc')->field('id,detailed_msg,achievement')->find();
|
||||
// dump($data_this_time);
|
||||
if($data_this_time){
|
||||
$data_this_time['detailed_msg'] = json_decode($data_this_time['detailed_msg'],true);
|
||||
// 设置基础数据
|
||||
$temporary_arr_c['score'] = $data_this_time['detailed_msg']['score'].'分';
|
||||
$temporary_arr_c['max_score'] = $data_this_time['detailed_msg']['max_score'];
|
||||
$temporary_arr_c['standard'] = $data_this_time['detailed_msg']['standard'];
|
||||
$temporary_arr_c['describe'] = $data_this_time['detailed_msg']['describe'];
|
||||
$temporary_arr_c['color'] = $data_this_time['detailed_msg']['color'];
|
||||
$temporary_arr_c['offset'] = $data_this_time['detailed_msg']['offset'];
|
||||
$temporary_arr_c['unit_data'] = $data_this_time['detailed_msg']['unit_data'];
|
||||
// 获取到该项所有数据
|
||||
$all_time_title = Db::table('app_card_data_sub_item_data')->where(['aud_id'=>$data['aud_id'],'acdsi_id'=>$value['id']])->order('id desc')->field('id,achievement,LEFT(record_time,10) AS r_t')->select();
|
||||
// 处理今日,以及总计数据
|
||||
if($data_this_time['detailed_msg']['unit_data'] == '分/秒'){
|
||||
// 如果是分秒形式的数据
|
||||
// 设置今日数据跟总计数据的格式
|
||||
$temporary_arr_c['today_time_value'] = "0:00";
|
||||
$temporary_arr_c['all_time_value'] = "0:00";
|
||||
// 处理本次数据最终格式
|
||||
list($minutes, $seconds) = explode(':', $data_this_time['achievement']);
|
||||
$temporary_arr_c['this_time_value'] = $minutes . '分' . sprintf('%02d', $seconds) . '秒';
|
||||
|
||||
// 计算今日总计&所有平均
|
||||
$temporary_arr_c['all_times'] = count($all_time_title);
|
||||
foreach ($all_time_title as $k1 => $v1) {
|
||||
$temporary_arr_c['all_time_value'] = $this->sumTimes($temporary_arr_c['all_time_value'],$v1['achievement']);
|
||||
if($v1['r_t'] == $today_time){
|
||||
$temporary_arr_c['today_times'] = $temporary_arr_c['today_times']+1;
|
||||
$temporary_arr_c['today_time_value'] = $this->sumTimes($temporary_arr_c['today_time_value'],$v1['achievement']);
|
||||
}
|
||||
}
|
||||
$temporary_arr_c['all_time_value'] = $this->averageTime($temporary_arr_c['all_time_value'],$temporary_arr_c['all_times']);
|
||||
list($minutes, $seconds) = explode(':', $temporary_arr_c['today_time_value']);
|
||||
$temporary_arr_c['today_time_value'] = $minutes . '分' . sprintf('%02d', $seconds) . '秒';
|
||||
|
||||
}else{
|
||||
|
||||
$temporary_arr_c['this_time_value'] = $data_this_time['achievement'].$data_this_time['detailed_msg']['unit_data'];
|
||||
|
||||
$temporary_arr_c['all_times'] = count($all_time_title);
|
||||
foreach ($all_time_title as $k1 => $v1) {
|
||||
$temporary_arr_c['all_time_value'] = $temporary_arr_c['all_time_value']+$v1['achievement'];
|
||||
if($v1['r_t'] == $today_time){
|
||||
$temporary_arr_c['today_times'] = $temporary_arr_c['today_times']+1;
|
||||
$temporary_arr_c['today_time_value'] = $temporary_arr_c['today_time_value']+$v1['achievement'];
|
||||
}
|
||||
}
|
||||
$temporary_arr_c['today_time_value'] = $temporary_arr_c['today_time_value'].$data_this_time['detailed_msg']['unit_data'];
|
||||
|
||||
$temporary_arr_c['all_time_value'] = bcdiv($temporary_arr_c['all_time_value'],$temporary_arr_c['all_times'],1).$data_this_time['detailed_msg']['unit_data'];
|
||||
}
|
||||
$temporary_arr_c['today_times'] = $temporary_arr_c['today_times'].'次';
|
||||
$temporary_arr_c['all_times'] = $temporary_arr_c['all_times'].'次';
|
||||
|
||||
}
|
||||
array_push($return_data['label_data'],$temporary_arr_c);
|
||||
}
|
||||
return $this->msg($return_data);
|
||||
}
|
||||
##################################################data_save##################################################
|
||||
public function data_save_action($data){
|
||||
|
||||
// 查找用户是存在
|
||||
$user_data = Db::table('app_user_data')->where(['id'=>$data['aud_id']])->field('id,gender')->find();
|
||||
if(!$user_data){
|
||||
return $this->msg(10004);
|
||||
}
|
||||
// 查找项目是否存在,以及获取项目信息
|
||||
$card_data_sub_item_data = Db::table('app_card_data_sub_item')->where("name = '".$data['name']."' and suit_gender LIKE '%".$user_data['gender']."%'")->field('id,type,name,unit,acd_id')->find();
|
||||
if(!$card_data_sub_item_data){
|
||||
return $this->msg(10004);
|
||||
}
|
||||
// 如果项目数据类型为分秒格式
|
||||
if($card_data_sub_item_data['type'] == 1){
|
||||
// 判断是否为整型,或者字符串类型的整型数字
|
||||
if(!$this->isValidInteger($data['data'])){
|
||||
return $this->msg(10005);
|
||||
}
|
||||
}else if($card_data_sub_item_data['type'] == 4){
|
||||
// 检查字符串格式是否为“数字”+“:”+“数字”的格式,且冒号后的数字小于等于59
|
||||
if(!$this->isValidFormatWithLimit($data['data'])){
|
||||
return $this->msg(10005);
|
||||
}
|
||||
}else if($card_data_sub_item_data['type'] == 2){
|
||||
// 判断一个字符串是否为两位以内小数
|
||||
// dump($this->isTwoDecimalOrLess($data['data']));
|
||||
if(!$this->isTwoDecimalOrLess($data['data'])){
|
||||
return $this->msg(10005);
|
||||
}
|
||||
}
|
||||
$score_all_data = $this->calculation_score($user_data['gender'],$data,$card_data_sub_item_data['type']);
|
||||
$save_data = [
|
||||
'acd_id' => $card_data_sub_item_data['acd_id'],
|
||||
'acdsi_id' => $card_data_sub_item_data['id'],
|
||||
'aud_id' => $data['aud_id'],
|
||||
'achievement' => $data['data'],
|
||||
'record_time' => $data['record_time'].date(' H:i:s'),
|
||||
'create_time' => date('Y-m-d H:i:s'),
|
||||
'unit' => $card_data_sub_item_data['unit'],
|
||||
'score' => $score_all_data['score'],
|
||||
'detailed_msg' => json_encode($score_all_data),
|
||||
];
|
||||
|
||||
$result = Db::table('app_card_data_sub_item_data')->insert($save_data);
|
||||
// $result = true;
|
||||
if($result){
|
||||
if($save_data['unit'] == '分/秒'){
|
||||
list($minutes, $seconds) = explode(':', $data['data']);
|
||||
$score_all_data['this_time_value'] = $minutes . '分' . sprintf('%02d', $seconds) . '秒';
|
||||
}else{
|
||||
$score_all_data['this_time_value'] = $data['data'].$save_data['unit'];
|
||||
}
|
||||
|
||||
return $this->msg($score_all_data);
|
||||
}else{
|
||||
return $this->msg(10002);
|
||||
}
|
||||
}
|
||||
##################################################get_label_list##################################################
|
||||
public function get_label_list_action($data){
|
||||
// 查找用户是存在
|
||||
$user_data = Db::table('app_user_data')->where(['id'=>$data['aud_id']])->field('id,gender')->find();
|
||||
if(!$user_data){
|
||||
return $this->msg(10004);
|
||||
}
|
||||
$label_data = Db::table('app_card_data_sub_item')->where("acd_id = ".$data['acd_id']." and suit_gender LIKE '%".$user_data['gender']."%'")->field('name,unit,type')->select();
|
||||
if(count($label_data)<=0){
|
||||
return $this->msg(10004);
|
||||
}
|
||||
|
||||
foreach ($label_data as $key => $value) {
|
||||
if($value['type'] == 1){
|
||||
$label_data[$key]['default_value'] = '0';
|
||||
}else if($value['type'] == 2){
|
||||
$label_data[$key]['default_value'] = '0.0';
|
||||
}else if($value['type'] == 4){
|
||||
$label_data[$key]['default_value'] = '0:00';
|
||||
}
|
||||
unset($label_data[$key]['ROW_NUMBER']);
|
||||
}
|
||||
return $this->msg($label_data);
|
||||
}
|
||||
|
||||
|
||||
|
||||
################################################################tool################################################################
|
||||
################################################################tool################################################################
|
||||
|
||||
// 计算得分成绩以及线性进度
|
||||
public function calculation_score($gender,$data,$type){
|
||||
// $card_name['card_name'] = ;
|
||||
$card_name['project_name'] = $data['name'];
|
||||
$card_name['score'] = 0;
|
||||
$card_name['offset'] = 0;
|
||||
$describe_list = $this->level_data;
|
||||
$card_name['rule'] = [];
|
||||
|
||||
// 计算得分
|
||||
// 获取评分细则
|
||||
$estimate = Db::table('admin_estimate')->where(['type'=>3])->find();
|
||||
$estimate = json_decode($estimate['content'],true);
|
||||
|
||||
// 根据男女循环出项目细则
|
||||
foreach ($estimate[$gender]['公共考核标准'] as $key => $value) {
|
||||
if(count($card_name['rule']) > 0){
|
||||
break;
|
||||
}
|
||||
foreach ($value['list'] as $k => $v) {
|
||||
if($k == $data['name']){
|
||||
$card_name['rule'] = $v;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach ($card_name['rule']['content'] as $key => $value) {
|
||||
if($type == '分/秒'){
|
||||
$rule_result = $this->convertMinutesSecondsToStringSeconds($value[0]);
|
||||
$data_result = $this->convertMinutesSecondsToStringSeconds($data['data']);
|
||||
}else{
|
||||
$rule_result = $value[0];
|
||||
$data_result = $data['data'];
|
||||
}
|
||||
switch ($value[1]) {
|
||||
case "<=":
|
||||
$result = $data_result <= $rule_result;
|
||||
break;
|
||||
case ">=":
|
||||
$result = $data_result >= $rule_result;
|
||||
break;
|
||||
case "<":
|
||||
$result = $data_result < $rule_result;
|
||||
break;
|
||||
case ">":
|
||||
$result = $data_result > $rule_result;
|
||||
break;
|
||||
case "==":
|
||||
$result = $data_result == $rule_result;
|
||||
break;
|
||||
case "!=":
|
||||
$result = $data_result != $rule_result;
|
||||
break;
|
||||
default:
|
||||
// 如果比较符号不是上述任何一个,可以抛出一个异常或错误
|
||||
throw new Exception("Unsupported comparison operator: " . $value[1]);
|
||||
}
|
||||
if($result == true){
|
||||
$card_name['score'] = $value[2];
|
||||
if($value[2] < 100){
|
||||
$card_name['offset'] = $value[2];
|
||||
}else{
|
||||
$card_name['offset'] = 100;
|
||||
}
|
||||
|
||||
// $card_name['offset'] = bcdiv($value[2],$card_name['diagram'][count($card_name['diagram'])-1]['max_val'],0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($describe_list as $key => $value) {
|
||||
if($card_name['score'] >= $value['min_val'] && $card_name['score'] <= $value['max_val']){
|
||||
$card_name['standard'] = $value['text'];
|
||||
$card_name['color'] = $value['color'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
$card_name['max_score'] = $card_name['rule']['content'][0][2];
|
||||
$card_name['describe'] = $card_name['rule']['describe'];
|
||||
$card_name['unit_data'] = $card_name['rule']['unit_data'];
|
||||
// $card_name['default_data_format'] = $card_name['rule']['value'];
|
||||
// $card_name['default_data_type'] = $card_name['rule']['type'];
|
||||
// $card_name['list'] = $describe_list;
|
||||
unset($card_name['rule']);
|
||||
return $card_name;
|
||||
}
|
||||
|
||||
|
||||
// 获取标签列表,以及标签列表下数据
|
||||
public function get_other_data(){
|
||||
|
||||
}
|
||||
|
||||
|
||||
################################################################其他################################################################
|
||||
################################################################其他################################################################
|
||||
|
||||
|
||||
// 检查字符串格式是否为“数字”+“:”+“数字”的格式,且冒号后的数字小于等于59
|
||||
public function isValidFormatWithLimit($str){
|
||||
// 使用正则表达式匹配“数字:数字”的格式
|
||||
if (preg_match('/^(\d+):(\d+)$/', $str, $matches)) {
|
||||
// 提取冒号前后的数字
|
||||
$firstNumber = $matches[1];
|
||||
$secondNumber = $matches[2];
|
||||
|
||||
// 检查冒号后的数字是否小于等于60
|
||||
if ($secondNumber <= 59) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// 两个时间相加4:20、5:15
|
||||
function sumTimes($time1, $time2) {
|
||||
// 将时间字符串拆分为分钟和秒
|
||||
list($min1, $sec1) = explode(':', $time1);
|
||||
list($min2, $sec2) = explode(':', $time2);
|
||||
|
||||
// 将分钟和秒转换为整数
|
||||
$totalMin = (int)$min1 + (int)$min2;
|
||||
$totalSec = (int)$sec1 + (int)$sec2;
|
||||
|
||||
// 如果秒数超过或等于60,则进位到分钟
|
||||
if ($totalSec >= 60) {
|
||||
$totalMin += floor($totalSec / 60);
|
||||
$totalSec = $totalSec % 60;
|
||||
}
|
||||
// 格式化总时间为"分:秒"
|
||||
// $totalTime = sprintf('%d分%02d秒', $totalMin, $totalSec);
|
||||
$totalTime = $totalMin.":".$totalSec;
|
||||
// 返回结果
|
||||
return $totalTime;
|
||||
}
|
||||
|
||||
|
||||
// 处理平均时间
|
||||
function averageTime($timeStr, $divisor) {
|
||||
// 步骤1: 拆分时间字符串
|
||||
list($minutes, $seconds) = explode(':', $timeStr);
|
||||
|
||||
// 步骤2: 转换为总秒数
|
||||
$totalSeconds = ($minutes * 60) + $seconds;
|
||||
|
||||
// 步骤3: 除以参数
|
||||
$averageSeconds = $totalSeconds / $divisor;
|
||||
|
||||
// 步骤4: 转换回分钟和秒
|
||||
$averageMinutes = floor($averageSeconds / 60);
|
||||
$remainingSeconds = round($averageSeconds % 60); // 使用round来处理小数秒,如果需要更精确的四舍五入
|
||||
|
||||
// 步骤5: 格式化结果为“分:秒”
|
||||
$formattedTime = sprintf('%d分%02d秒', $averageMinutes, $remainingSeconds);
|
||||
|
||||
return $formattedTime;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -8,9 +8,15 @@ use think\Db;
|
|||
class Download extends Base{
|
||||
public function demo(){
|
||||
|
||||
$num = Db::table('app_version_log')->order('id desc')->find();
|
||||
echo '你好,这里仅仅是个下载展示页面-1';
|
||||
echo '<br><a href="'.$num['download_url'].'">点击下载</a>';
|
||||
// $num = Db::table('app_version_log')->order('id desc')->find();
|
||||
// echo '你好,这里仅仅是个下载展示页面-1';
|
||||
// echo '<br><a href="'.$num['download_url'].'">点击下载</a>';
|
||||
$url = Db::table('app_version_log')->order('id desc')->find();
|
||||
$this->assign([
|
||||
|
||||
'url' => $url['download_url'],
|
||||
]);
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
public function demo2(){
|
||||
|
|
|
|||
|
|
@ -407,7 +407,7 @@ class Login extends Base{
|
|||
// 设置POST数据
|
||||
$postData = array(
|
||||
'phone' => $tel,
|
||||
'content' => '【xxxx】您好,欢迎使用xxx,,您的手机验证码是:'.$code.',验证码一分钟内有效,若非本人操作,请忽略!'
|
||||
'content' => '您好,欢迎使用Reedaw,您的手机验证码是:'.$code.',验证码三分钟内有效,若非本人操作,请忽略!'
|
||||
);
|
||||
$postData = json_encode($postData);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
|
||||
|
|
|
|||
|
|
@ -1058,14 +1058,7 @@ class Sportstesting extends Base{
|
|||
// 比较两个时间(秒)
|
||||
// return $totalSecondsB <= $totalSecondsA;
|
||||
}
|
||||
// 处理分秒变秒
|
||||
function convertMinutesSecondsToStringSeconds($timeString) {
|
||||
// 分割字符串获取分钟和秒
|
||||
list($minutes, $seconds) = explode(':', $timeString);
|
||||
// 将分钟和秒转换为秒
|
||||
$totalSeconds = ($minutes * 60) + intval($seconds); // 确保秒是整数
|
||||
return $totalSeconds;
|
||||
}
|
||||
|
||||
|
||||
// 处理默认规则列表
|
||||
public function handle_default_rule_list($data,$gender){
|
||||
|
|
|
|||
|
|
@ -26,6 +26,13 @@
|
|||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
.content_1{
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-wrap: nowrap;
|
||||
|
|
@ -34,15 +41,131 @@
|
|||
overflow: auto;
|
||||
padding: 10vw;
|
||||
box-sizing: border-box;
|
||||
font-size: 4vw;
|
||||
}
|
||||
.download{
|
||||
width: 40vw;
|
||||
height: 10vw;
|
||||
background-color: darkgray;
|
||||
border-radius: 5vw;
|
||||
text-align: center;
|
||||
line-height: 10vw;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
margin-top: 10vw;
|
||||
}
|
||||
img{
|
||||
width: 25vw;
|
||||
margin-bottom: 20vw;
|
||||
}
|
||||
.jump{
|
||||
width: 40vw;
|
||||
height: 10vw;
|
||||
color: white;
|
||||
background-color: darkgray;
|
||||
border-radius: 5vw;
|
||||
text-align: center;
|
||||
line-height: 10vw;
|
||||
font-weight: bold;
|
||||
margin-bottom: 10vw;
|
||||
}
|
||||
.ts{
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-color: rgba(0, 0, 0, 0.8);
|
||||
}
|
||||
.ts_box{
|
||||
width: 85vw;
|
||||
height: 27vw;
|
||||
position: absolute;
|
||||
top: 20%;
|
||||
left: 12%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-wrap: nowrap;
|
||||
justify-content: space-evenly;
|
||||
align-items: flex-start;
|
||||
font-size: 5vw;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
}
|
||||
.ts_pic{
|
||||
width: 32vw;
|
||||
height: 40vw;
|
||||
position: absolute;
|
||||
top: 0%;
|
||||
right: 0%;
|
||||
background: url(/tsf/registered_arrow.png) no-repeat;
|
||||
background-size: contain;
|
||||
background-position: center;
|
||||
}
|
||||
a{
|
||||
margin-top: 10vw;
|
||||
text-decoration: none;
|
||||
color: blue;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body id="box_k">
|
||||
<div class="big_box">
|
||||
<div>你好,这里仅仅是个下载展示页面-2</div>
|
||||
<a href="{$url}">点击下载</a>
|
||||
<div class="content_1">
|
||||
<img src="http://tc.pcxbc.com/tsf/logo.png" alt="">
|
||||
<div class="jump" onclick="jump()">打开微信小程序</div>
|
||||
<div class="download" onclick="download()">下载</div>
|
||||
<!-- <a href="javascript:;">已安装? 打开Reedaw ></a> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="ts" style="display: none;">
|
||||
<div class="ts_box">
|
||||
<div>1、点击右上角“ ··· ”</div>
|
||||
<div>2、在菜单中选择“在浏览器中打开”</div>
|
||||
</div>
|
||||
<div class="ts_pic"></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<script>
|
||||
var str_url = "{$url}";
|
||||
function isWeixin() {
|
||||
var ua = navigator.userAgent.toLowerCase();
|
||||
return /micromessenger/i.test(ua);
|
||||
}
|
||||
function isIOS() {
|
||||
var userAgent = navigator.userAgent || navigator.vendor || window.opera;
|
||||
return /iPad|iPhone|iPod/.test(userAgent) && !window.MSStream;
|
||||
}
|
||||
|
||||
function jump(){
|
||||
window.location.href = 'weixin://dl/business/?appid=wx3e50e84030fe0d1e&path=pages/index/index';
|
||||
}
|
||||
|
||||
$('.ts').on('click',function(){
|
||||
$(this).hide()
|
||||
})
|
||||
|
||||
function download(){
|
||||
if (isWeixin()) {
|
||||
console.log('当前在微信环境中');
|
||||
$('.ts').show()
|
||||
} else {
|
||||
console.log('当前不在微信环境中');
|
||||
if (isIOS()) {
|
||||
console.log('当前是iOS设备');
|
||||
// 在这里执行iOS设备下的特定代码
|
||||
window.location.href = "https://apps.apple.com/app/reedaw/id6654906497";
|
||||
} else {
|
||||
console.log('当前不是iOS设备');
|
||||
// 在这里执行非iOS设备下的代码
|
||||
window.location.href = str_url;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ use think\Route;
|
|||
Route::any('/download', 'app/download/demo');
|
||||
Route::any('/download2', 'app/download/demo2');
|
||||
Route::any('/ceshi', 'app/download/ceshi');
|
||||
Route::any('/get_class', 'admin/demo/get_class_xuesheng');
|
||||
|
||||
|
||||
// Route::any('/CityList.js', 'tsf/CityList.js');
|
||||
|
|
@ -53,6 +54,9 @@ Route::any('/estimate/estimate_add', 'admin/estimate/estimate_add');
|
|||
Route::any('/estimate/estimate_edit', 'admin/estimate/estimate_edit');
|
||||
Route::any('/estimate/submit_rule', 'admin/estimate/submit_rule');
|
||||
Route::any('/estimate/estimate_content_observe', 'admin/estimate/estimate_content_observe');
|
||||
Route::any('/estimate/cards_select_all', 'admin/estimate/cards_select_all');
|
||||
|
||||
|
||||
// 设备管理
|
||||
Route::any('/device/index', 'admin/device/index');
|
||||
Route::any('/device/device_add', 'admin/device/device_add');
|
||||
|
|
@ -208,6 +212,15 @@ Route::any('/update_my_password', 'app/myinformation/update_my_password');
|
|||
// // 曲线
|
||||
// Route::any('/vitalcapacity_curve_chart', 'app/sportstesting/vitalcapacity_curve_chart');
|
||||
|
||||
// ################################通用卡片接口################################
|
||||
// 报告页详情
|
||||
Route::any('/get_card_content', 'app/cardpublic/get_card_content');
|
||||
// 存储数据
|
||||
Route::any('/public_data_save', 'app/cardpublic/data_save');
|
||||
// 获取标签项目信息
|
||||
Route::any('/get_label_list', 'app/cardpublic/get_label_list');
|
||||
|
||||
|
||||
// // ################################################################其它测试################################################################
|
||||
// // ################################################################其它测试################################################################
|
||||
Route::any('/use_test', 'admin/base/use_test');
|
||||
|
|
|
|||
Loading…
Reference in New Issue