<?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;

class Card extends Base{
    
    protected $color = ['#FF5656','#FFAB00','#5AD06D','#6492F6','#3967D6'];
    // protected $db_name = ['2'=>'app_card_body_data','6'=>'app_card_skip_data'];
    // protected $db_content = [
    //     '2'=>'height as v1,weight as v2,bmi as v3',
    //     '6'=>'jump_num as v1,jump_time as v2,jump_kcal as v3'
    // ];
    protected $age_limit = 16;
    protected $unit_symbol = ['score'=>'分','height'=>'CM','weight'=>'公斤','bmi'=>'','fat_r'=>'%','fat_w'=>'kg','muscle'=>'%','muscleval'=>'kg','water'=>'kg','bone'=>'kg','protein'=>'%','proteinval'=>'kg','kcal'=>'kcal','visceral'=>'','sfr'=>'%',];
    protected $unit_name = ['score'=>'身体得分','height'=>'身高','weight'=>'体重','bmi'=>'BMI','fat_r'=>'脂肪率','fat_w'=>'脂肪量','muscle'=>'肌肉率','muscleval'=>'肌肉量','water'=>'水分','bone'=>'骨重','protein'=>'蛋白率','proteinval'=>'蛋白量','kcal'=>'基础代谢','visceral'=>'内脏指数','sfr'=>'皮下脂肪','body_level'=>'肥胖等级','body_type'=>'身体类型'];
    protected $bhw_list = [
        'bmi'=>[
            ['min_val'=>'0','max_val'=>'','text'=>'消瘦','color'=>'#ffda69'],
            ['min_val'=>'','max_val'=>'','text'=>'正常','color'=>'#5ad06d'],
            ['min_val'=>'','max_val'=>'','text'=>'偏重','color'=>'#ffab00'],
            ['min_val'=>'','max_val'=>'50','text'=>'肥胖','color'=>'#ff5656'],
        ],
        'height'=>[
            ['min_val'=>'0','max_val'=>'','text'=>'矮','color'=>'#ff5656'],
            ['min_val'=>'','max_val'=>'','text'=>'偏矮','color'=>'#ffab00'],
            ['min_val'=>'','max_val'=>'','text'=>'标准','color'=>'#5ad06d'],
            ['min_val'=>'','max_val'=>'','text'=>'偏高','color'=>'#6492f6'],
            ['min_val'=>'','max_val'=>'','text'=>'高','color'=>'#3967d6'],
        ],
        'weight'=>[
            ['min_val'=>'0','max_val'=>'','text'=>'低','color'=>'#ff5656'],
            ['min_val'=>'','max_val'=>'','text'=>'偏低','color'=>'#ffab00'],
            ['min_val'=>'','max_val'=>'','text'=>'标准','color'=>'#5ad06d'],
            ['min_val'=>'','max_val'=>'','text'=>'偏高','color'=>'#ffab00'],
            ['min_val'=>'','max_val'=>'','text'=>'高','color'=>'#ff5656'],
        ]
    ];
    protected $standard_color = [
        'fat_r'=>['偏低'=>'#FFAB00','标准'=>'#5AD06D','偏高'=>'#6492F6','高'=>'#3967D6'],
        'fat_w'=>['偏低'=>'#FFAB00','标准'=>'#5AD06D','偏高'=>'#6492F6','高'=>'#3967D6'],
        'muscle'=>['不足'=>'#FF5656','标准'=>'#5AD06D','优'=>'#3967D6'],
        'muscleval'=>['不足'=>'#FF5656','标准'=>'#5AD06D','优'=>'#3967D6'],
        'water'=>['不足'=>'#FF5656','标准'=>'#5AD06D','优'=>'#3967D6'],
        'proteinval'=>['不足'=>'#FF5656','标准'=>'#5AD06D','优'=>'#3967D6'],
        'bone'=>['不足'=>'#FF5656','标准'=>'#5AD06D','优'=>'#3967D6'],
        'protein'=>['不足'=>'#FF5656','标准'=>'#5AD06D','优'=>'#3967D6'],
        'kcal'=>['偏低'=>'#FF5656','优'=>'#3967D6'],
        'visceral'=>['标准'=>'#5AD06D','警惕'=>'#FFAB00','危险'=>'#FF5656'],
        'sfr'=>['不足'=>'#FF5656','标准'=>'#5AD06D','偏高'=>'#6492F6'],
    ];
    protected $result_end_data_mould = [
        'name'=>'',
        'value'=>'',
        'unit'=>'',
        'standard'=>'',
        'color'=>'',
        'list'=>[]
    ];
    protected $card_body_curve_arr = ['weight','bmi','muscle','fat_r'];
    protected $card_body_curve_arr2 = ['体重','BMI','肌肉率','脂肪率'];
    protected $card_body_curve_arr3 = ['#fb7b92','#6bb0fe','#ff9f40','#3fcba7'];
    

    

    ################################################################接口################################################################
    ################################################################接口################################################################
    ################################################################接口################################################################


    // 详细卡片信息
    // $data = ['id'=>'2']
    public function card_data_detailed($data=['aud_id'=>'26','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
        if(count(input('post.')) > 0){
            $data = input('post.');
        }
        
        if(!array_key_exists('aud_id', $data) || !array_key_exists('token', $data)){
            return $this->msg(10001);
        }
        if($this->token_time_validate($data['token']) === false){
            return $this->msg(20001);
        }
        // die;
        unset($data['token']);

        return $this->get_user_body_data($data);
        
    }

    // 曲线页面-曲线接口
    public function card_curve_chart($data = ['aud_id'=>'25','s_time'=>'2024-04-01','e_time'=>'2024-07-30','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
        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']);
        // $data['s_time'] = $data['s_time'].' 00:00:00';
        // $data['e_time'] = $data['e_time'].' 23:59:59';
        return $this->curve_chart_action($data);
    }
    
    // 手动记录
    // $data = ['id'=>'2','time'=>'1991-04-20 10:10:10','height'=>'15.1','weight'=>'75.1']
    public function card_manual_recording($data = ['aud_id'=>'25','time'=>'2024-04-11 10:10:15','height'=>'175.6','weight'=>'70.2','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
        if(count(input('post.')) > 0){
            $data = input('post.');
        }else{
            $data['time'] = date('Y-m-d H:i:s');
        }
        // dump($data);
        // die;
        if(!array_key_exists('aud_id', $data) || !array_key_exists('time', $data) || !array_key_exists('height', $data) || !array_key_exists('weight', $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']);
        $data['acd_id'] = '2';
        return $this->set_user_body_data($data);
    }

    // 修改初始体重/目标体重
    public function card_modify_weight($data = ['aud_id'=>'25','weight'=>'25','type'=>1,'time'=>'','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
        if(count(input('post.')) > 0){
            $data = input('post.');
        }
        if(!is_array($data)){
            return $this->msg(10005);
        }
        if(!array_key_exists('aud_id', $data) || !array_key_exists('weight', $data) || !array_key_exists('type', $data) || !array_key_exists('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']);
        
        return $this->modify_weight_action($data);
    }
    // 删除历史数据
    public function card_del_record_data($data = ['id'=>'16','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
        if(count(input('post.')) > 0){
            $data = input('post.');
        }
        if(!array_key_exists('id', $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']);
        $user_data = Db::table('app_card_body_data')->where(['id'=>$data['id']])->update(['is_del'=>1]);
        if($user_data){
            return $this->msg([]);
        }else{
            return $this->msg(10002);
        }
    }

    // // 数据对比
    // public function card_data_contrast($data = ['before_id'=>'24','after_id'=>'25','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
    //     if(count(input('post.')) > 0){
    //         $data = input('post.');
    //     }
    //     if(!array_key_exists('before_id', $data) || !array_key_exists('after_id', $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']);
    //     // $data = explode(',',$data['id_arr']);
    //     // dump($data);
    //     // die;
    //     return $this->body_data_contrast($data);
    // }
    
    ################################################################业务接口################################################################
    ################################################################业务接口################################################################

    ################################################card_data_detailed
     // 用户身体数据卡片获取
     public function get_user_body_data($data){
        // $result = Db::table('app_card_body_data')
        // ->alias('acbd')
        // ->join('app_user_data aud','acbd.aud_id = aud.id','LEFT')
        // ->where(['acbd.aud_id'=>$data['aud_id']])
        // ->order('acbd.record_time desc')
        // ->field('acbd.*,aud.birthday,aud.gender,aud.target_weight,aud.initial_weight,aud.initial_date')
        // ->find();
        // dump($data);
        $result = Db::query("
            select 
            Top 1
            acbd.id,
            acbd.acd_id,
            acbd.create_time,
            acbd.last_update_time,
            acbd.score,
            acbd.fat_r,
            acbd.fat_w,
            acbd.muscle,
            acbd.muscleval,
            acbd.water,
            acbd.proteinval,
            acbd.bone,
            acbd.protein,
            acbd.kcal,
            acbd.visceral,
            acbd.sfr,
            acbd.body_level,
            acbd.aud_id,
            acbd.record_time,
            acbd.body_type,
            acbd.age,
            acbd.is_del,
            acbd.height,
            acbd.weight,
            acbd.bmi,
            acbd.body_age,
            aud.birthday,aud.gender,aud.target_weight,aud.initial_weight,aud.initial_date
            from app_card_body_data as acbd
            left join app_user_data as aud on acbd.aud_id=aud.id
            where acbd.aud_id='".$data['aud_id']."'
            order by acbd.record_time desc
        ");
        // dump($result);
        // die;
        if(!$result){
            return $this->msg(10004);
        }else{
            // $curve_bottom = $this->card_curve_target_action($result);
            $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_end);
            // die;
            return $this->msg($result_end);
        }
    }
    // 返回数据处理
    public function processing_return_data_new($data){
        // dump($data);
        $result_end_data = [];
        $month_num = $this->calculateAgeInMonthsWithPrecision($data['birthday'])*100;
        $gender_val = $data['gender'];
        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'){

                // 设置单个数据格式
                $result_end_data[$key] = $this->result_end_data_mould;
                if(array_key_exists($key, $this->unit_name)){
                    $result_end_data[$key]['name'] = $this->unit_name[$key];
                }
                if(array_key_exists($key, $this->unit_symbol)){
                    $result_end_data[$key]['unit'] = $this->unit_symbol[$key];
                }
                $result_end_data[$key]['value'] = explode(',',$value)[0];
                if(strpos($value, ',')){
                    $result_end_data[$key]['standard'] = explode(',',$value)[1];
                }
                if(array_key_exists($key, $this->standard_color)){
                    $result_end_data[$key]['color'] = $this->standard_color[$key][$result_end_data[$key]['standard']];
                }
                // 如果小于16岁（儿童）
                if($data['age'] < $this->age_limit){
                    if(array_key_exists($key, $this->bhw_list)){
                        $result_end_data[$key]['list'] = $this->bhw_list[$key];
                        if($key == 'bmi'){
                            // dump($month_num);
                            $bhw_date = Db::table('pc_bmistand2')->where("month >= $month_num and sex = '$gender_val'")->order('month')->limit(1)->select();
                            // dump($bhw_date);
                            if($bhw_date){
                                $result_end_data[$key]['list'][0]['max_val'] = $bhw_date[0]['f1sd'];
                                $result_end_data[$key]['list'][1]['min_val'] = $bhw_date[0]['f1sd'];
                                $result_end_data[$key]['list'][1]['max_val'] = $bhw_date[0]['z1sd'];
                                $result_end_data[$key]['list'][2]['min_val'] = $bhw_date[0]['z1sd'];
                                $result_end_data[$key]['list'][2]['max_val'] = $bhw_date[0]['z2sd'];
                                $result_end_data[$key]['list'][3]['min_val'] = $bhw_date[0]['z2sd'];
                            }
                        }else if($key == 'height'){
                            $bhw_date = Db::table('pc_heightstand2')->where("month >= $month_num and sex = '$gender_val'")->order('month')->limit(1)->select();
                            if($bhw_date){
                                $result_end_data[$key]['list'][0]['max_val'] = $bhw_date[0]['f2sd'];
                                $result_end_data[$key]['list'][1]['min_val'] = $bhw_date[0]['f2sd'];
                                $result_end_data[$key]['list'][1]['max_val'] = $bhw_date[0]['f1sd'];
                                $result_end_data[$key]['list'][2]['min_val'] = $bhw_date[0]['f1sd'];
                                $result_end_data[$key]['list'][2]['max_val'] = $bhw_date[0]['z1sd'];
                                $result_end_data[$key]['list'][3]['min_val'] = $bhw_date[0]['z1sd'];
                                $result_end_data[$key]['list'][3]['max_val'] = $bhw_date[0]['z2sd'];
                                $result_end_data[$key]['list'][4]['min_val'] = $bhw_date[0]['z2sd'];
                                $result_end_data[$key]['list'][4]['max_val'] = $bhw_date[0]['z3sd'];
                            }
                        }else if($key == 'weight'){
                            $bhw_date = Db::table('pc_weightstand2')->where("month >= $month_num and sex = '$gender_val'")->order('month')->limit(1)->select();
                            // dump($value);
                            // dump($bhw_date);/
                            if($bhw_date){
                                $result_end_data[$key]['list'][0]['max_val'] = $bhw_date[0]['f2sd'];
                                $result_end_data[$key]['list'][1]['min_val'] = $bhw_date[0]['f2sd'];
                                $result_end_data[$key]['list'][1]['max_val'] = $bhw_date[0]['f1sd'];
                                $result_end_data[$key]['list'][2]['min_val'] = $bhw_date[0]['f1sd'];
                                $result_end_data[$key]['list'][2]['max_val'] = $bhw_date[0]['z1sd'];
                                $result_end_data[$key]['list'][3]['min_val'] = $bhw_date[0]['z1sd'];
                                $result_end_data[$key]['list'][3]['max_val'] = $bhw_date[0]['z2sd'];
                                $result_end_data[$key]['list'][4]['min_val'] = $bhw_date[0]['z2sd'];
                                $result_end_data[$key]['list'][4]['max_val'] = $bhw_date[0]['z3sd'];
                            }
                        }
                    }
                }
            }
        }
        // $result_end_data['age'] = $data['age'];
        // dump($data['age']);
        // dump($result_end_data);
        // die;
        return $result_end_data;
    }

    ########################################################card_curve_chart

    // 曲线图动作函数
    public function curve_chart_action($data){
        $card_body_curve_arr = implode(',',$this->card_body_curve_arr);
        // $user_data_list = Db::query("
        //     select 
        //     record_time,
        //     $card_body_curve_arr 
        //     from app_card_body_data 
        //     where aud_id='".$data['aud_id']."'
        //     and record_time between '".$data['s_time']."' 
        //     and '".$data['e_time']."' 
        //     order by record_time desc
        // ");
        // dump($card_body_curve_arr);
        // dump($this->card_body_curve_arr);
        $user_data_list = Db::table('app_card_body_data')  
        ->where('aud_id', $data['aud_id'])  
        ->whereTime('record_time', 'between', [$data['s_time'], $data['e_time']])  
        ->field("record_time,REPLACE(CONVERT(varchar(10), record_time, 23), '-', '/') AS b_time,$card_body_curve_arr")
        ->order('record_time desc')  
        ->select();
        
        $data_arr = [];
        $record_arr1 = [];
        $record_arr2 = [];
        // 如果有数据
        if(count($user_data_list)>0){
            // 循环数据
            foreach ($user_data_list as $key => $value) {
                // 如果数据中的时间不存在临时数组中
                if(!in_array($value['b_time'],$record_arr1)){
                    array_push($record_arr1,$value['b_time']);
                    foreach ($this->card_body_curve_arr as $k => $v) {
                        $user_data_list[$key][$v] = explode(',',$user_data_list[$key][$v])[0];
                    }
                    array_push($record_arr2,$user_data_list[$key]);
                }
            }
            // dump($record_arr2);
            // die;
            foreach ($this->card_body_curve_arr as $key => $value) {
                $temporary_arr = [];
                $temporary_arr['title'] = $this->card_body_curve_arr2[$key];
                $temporary_arr['key'] = $value;
                $temporary_arr['line']['categories'] = [];
                $temporary_arr['line']['series'][0]['color'] = $this->card_body_curve_arr3[$key];
                $temporary_arr['line']['series'][0]['data'] = [];
                foreach ($record_arr2 as $k => $v) {
                    array_push($temporary_arr['line']['categories'],$record_arr2[$k]['b_time']);
                    array_push($temporary_arr['line']['series'][0]['data'],$record_arr2[$k][$value]);
                }
                array_push($data_arr,$temporary_arr);
            }
        }
        return $this->msg($data_arr);
    }

    ################################################card_manual_recording
    // 用户身体数据卡片记录
    public function set_user_body_data($data){
        
        $data['type'] = 1;
        $user_data = Db::table('app_user_data')->where(['id'=>$data['aud_id']])->field('birthday,gender,target_weight,initial_weight,initial_date')->find();
        if(!$user_data){
            return $this->msg(10003);
        }
        if($user_data['initial_date'] == null){
            Db::table('app_user_data')->where(['id'=>$data['aud_id']])->update(['initial_weight'=>$data['weight'],'initial_date'=>$data['time']]);
            $target_current = $this->base_target_initial_cumulative_weight([
                'weight'=>$data['weight'],
                'target_weight'=>$user_data['target_weight'],
                'initial_weight'=>$data['weight'],
                'initial_date'=>$data['time'],
            ]);
        }else{
            $target_current = $this->base_target_initial_cumulative_weight([
                'weight'=>$data['weight'],
                'target_weight'=>$user_data['target_weight'],
                'initial_weight'=>$user_data['initial_weight'],
                'initial_date'=>$user_data['initial_date'],
            ]);
        }
        $result_data['height'] = $data['height'];
        $result_data['weight'] = $data['weight'];
        $result_data['age'] = $this->calculate_age($user_data['birthday']);
        $result_data['gender'] = $user_data['gender'];
        $result_data['adc'] = array_key_exists('impedance', $data)?$data['impedance']:550;
        $calculate_body_formula = new Calculatebody();
        $get_body_value = $calculate_body_formula->calculate_body_data_result($result_data);
        $get_body_value['gender'] = $user_data['gender'];
        $get_body_value['birthday'] = $user_data['birthday'];
        $get_body_value = $this->hwb_standard($get_body_value);
        // dump($get_body_value);
        // dump($get_body_value['脂肪率']);
        // dump(implode(',',$get_body_value['脂肪率']));
        // die;
        $set_user_data = Db::table('app_card_body_data')->insert([
            'acd_id'=>$data['acd_id'],
            'aud_id'=>$data['aud_id'],
            'record_time'=>$data['time'],
            'create_time'=>date('Y-m-d H:i:s'),
            'last_update_time'=>date('Y-m-d H:i:s'),
            'age'=>$get_body_value['age'],
            'height'=>$get_body_value['身高2'],
            'height_data'=>$get_body_value['身高'],
            'weight'=>$get_body_value['体重2'],
            'weight_data'=>$get_body_value['体重'],
            'bmi'=>$get_body_value['BMI2'],
            'bmi_data'=>$get_body_value['BMI'],
            'score'=>$get_body_value['身体得分'],
            'fat_r'=> implode(',',$get_body_value['脂肪率']),
            'fat_w'=>implode(',',$get_body_value['脂肪量']),
            'muscle'=>implode(',',$get_body_value['肌肉率']),
            'muscleval'=>implode(',',$get_body_value['肌肉量']),
            'water'=>implode(',',$get_body_value['水分']),
            'proteinval'=>implode(',',$get_body_value['蛋白量']),
            'bone'=>implode(',',$get_body_value['骨重']),
            'protein'=>implode(',',$get_body_value['蛋白率']),
            'kcal'=>implode(',',$get_body_value['基础代谢']),
            'visceral'=>implode(',',$get_body_value['内脏指数']),
            'sfr'=>implode(',',$get_body_value['皮下脂肪']),
            'body_level'=>$get_body_value['肥胖等级'],
            'body_type'=>$get_body_value['身体类型'],
            'body_age'=>$get_body_value['身体年龄']
        ]);
        if($set_user_data){
            // 返回简要数据
            if($data['type'] == 1){
                return $this->msg([
                    'acd_id'=>2,
                    'height'=>$get_body_value['身高'].',CM',
                    'weight'=>$get_body_value['体重'].',公斤',
                    'bmi'=>$get_body_value['BMI'],
                    'target_current'=>$target_current,
                ]);
            }
            
        }else{
            return $this->msg(10002);
        }
    }

    // 添加身高体重bmi的标准
    public function hwb_standard($data){
        
        $linshi_data = [];
        $month_num = $this->calculateAgeInMonthsWithPrecision($data['birthday'])*100;
        $gender_val = $data['gender'];
        if($data['age'] < $this->age_limit){
            foreach ($data as $key => $value) {
                if($key =='身高'){
                    $linshi_data['身高'] = $this->bhw_list['height'];
                    $bhw_date = Db::table('pc_heightstand2')->where("month >= $month_num and sex = '$gender_val'")->order('month')->limit(1)->select();
                    if($bhw_date){
                        $linshi_data['身高'][0]['max_val'] = $bhw_date[0]['f2sd'];
                        $linshi_data['身高'][1]['min_val'] = $bhw_date[0]['f2sd'];
                        $linshi_data['身高'][1]['max_val'] = $bhw_date[0]['f1sd'];
                        $linshi_data['身高'][2]['min_val'] = $bhw_date[0]['f1sd'];
                        $linshi_data['身高'][2]['max_val'] = $bhw_date[0]['z1sd'];
                        $linshi_data['身高'][3]['min_val'] = $bhw_date[0]['z1sd'];
                        $linshi_data['身高'][3]['max_val'] = $bhw_date[0]['z2sd'];
                        $linshi_data['身高'][4]['min_val'] = $bhw_date[0]['z2sd'];
                        $linshi_data['身高'][4]['max_val'] = $bhw_date[0]['z3sd'];
                    }
                }else if($key =='体重'){
                    $linshi_data['体重'] = $this->bhw_list['weight'];
                    $bhw_date = Db::table('pc_weightstand2')->where("month >= $month_num and sex = '$gender_val'")->order('month')->limit(1)->select();
                    if($bhw_date){
                        $linshi_data['体重'][0]['max_val'] = $bhw_date[0]['f2sd'];
                        $linshi_data['体重'][1]['min_val'] = $bhw_date[0]['f2sd'];
                        $linshi_data['体重'][1]['max_val'] = $bhw_date[0]['f1sd'];
                        $linshi_data['体重'][2]['min_val'] = $bhw_date[0]['f1sd'];
                        $linshi_data['体重'][2]['max_val'] = $bhw_date[0]['z1sd'];
                        $linshi_data['体重'][3]['min_val'] = $bhw_date[0]['z1sd'];
                        $linshi_data['体重'][3]['max_val'] = $bhw_date[0]['z2sd'];
                        $linshi_data['体重'][4]['min_val'] = $bhw_date[0]['z2sd'];
                        $linshi_data['体重'][4]['max_val'] = $bhw_date[0]['z3sd'];
                    }
                }else if($key =='BMI'){
                    $linshi_data['BMI'] = $this->bhw_list['bmi'];
                    $bhw_date = Db::table('pc_bmistand2')->where("month >= $month_num and sex = '$gender_val'")->order('month')->limit(1)->select();
                    // dump($bhw_date);
                    if($bhw_date){
                        $linshi_data['BMI'][0]['max_val'] = $bhw_date[0]['f1sd'];
                        $linshi_data['BMI'][1]['min_val'] = $bhw_date[0]['f1sd'];
                        $linshi_data['BMI'][1]['max_val'] = $bhw_date[0]['z1sd'];
                        $linshi_data['BMI'][2]['min_val'] = $bhw_date[0]['z1sd'];
                        $linshi_data['BMI'][2]['max_val'] = $bhw_date[0]['z2sd'];
                        $linshi_data['BMI'][3]['min_val'] = $bhw_date[0]['z2sd'];
                    }
                }
            }
            // dump($linshi_data);
            // die;
            foreach ($linshi_data as $key => $value) {
                // dump($value);
                foreach ($value as $k => $v) {
                    if($data[$key] >= $v['min_val'] && $data[$key] < $v['max_val']){
                        // 如果落在区间内
                        $data[$key.'2'] = $data[$key].','.$v['text'].','.$v['color'];
                    }
                }
                if($data[$key] < $value[0]['min_val']){
                    // 如果小于最小值
                    $data[$key.'2'] = $data[$key].','.$value[0]['text'].','.$value[0]['color'];
                }else if($data[$key] >= $value[count($value)-1]['max_val']){
                    // 如果大于最大值
                    $data[$key.'2'] = $data[$key].','.$value[count($value)-1]['text'].','.$value[count($value)-1]['color'];
                }
            }
            // die;
        }else{
            $data['身高2'] =  $data['身高'].',无,无';
            $data['体重2'] =  $data['身高'].',无,无';
            $data['BMI2'] =  $data['身高'].',无,无';
        }
        // dump($data);
        return $data;
        // dump($data);
    }

    
    ################################################card_modify_weight
    public function modify_weight_action($data){
        // $data['aud_id'] = 26;
        // $data['weight'] = 60;
        // dump($data);
        // die;
        
        $result = Db::query("
            select
            TOP 1
            acbd.weight,
            aud.target_weight,
            aud.initial_weight,
            aud.initial_date
            from app_card_body_data as acbd
            left join app_user_data as aud on acbd.aud_id = aud.id
            where acbd.aud_id = ".$data['aud_id']."
            order by acbd.record_time desc
        ");
        if($data['type'] == 1){
            // 修改目标体重
            $bhw_date = ['target_weight'=>$data['weight']];
        }else if($data['type'] == 2){
            // 修改原始体重
            $bhw_date = ['initial_weight'=>$data['weight'],'initial_date' => $data['time']];
        }else{
            return $this->msg(10005);
        }
        $result_update = Db::table('app_user_data')->where(['id'=>$data['aud_id']])->update($bhw_date);
        // dump($result_update);
        // dump($result[0]['weight']);
        // dump($result);
        
        if($result_update){
            $target_current = $this->base_target_initial_cumulative_weight([
                'weight'=>$result[0]['weight'],
                'target_weight'=>$data['type'] == 1?$data['weight']:$result[0]['target_weight'],
                'initial_weight'=>$data['type'] == 1?$result[0]['initial_weight']:$data['weight'],
                'initial_date'=>$data['type'] == 1?$result[0]['initial_date']:$data['time'],
            ]);
            // die;
            // dump($target_current);
            return $this->msg($target_current);
        }else{
            return $this->msg(10002);
        }
        
    }

    ################################################card_record_detailed_information


    ################################################################其他接口################################################################
    ################################################################其他接口################################################################


    
    
    

    
    

    



}