<?php
/**
 * 营养品管理
 * author:wangshuo
 * date:2021/5/18
 *
 */
namespace app\m\logic;
use app\model\Nutrition as modelNutrition;
use app\model\NutritionSet as modelNutritionSet;
use app\model\NutritionTime as modelNutritionTime;
use app\model\NutritionCategory as modelNutritionCategory;
use app\model\TrainPhase as TrainPhaseModel;
use app\model\Sport as SportModel;
use think\Db;
use think\Exception;
class Nutrition{

    protected $model;
    protected $articleCateModel;
    protected $modelNutritionTime;
    protected $modelNutritionCategory;
    protected $TrainPhaseModel;
    protected $sportModel;
    public function __construct() {
        $this->model = new modelNutrition();
        $this->modelSet = new modelNutritionSet();
        $this->modelNutritionTime = new modelNutritionTime();
        $this->modelNutritionCategory = new modelNutritionCategory();
        $this->TrainPhaseModel = new TrainPhaseModel();
        $this->sportModel = new SportModel();
    }


    
    /**
     * 添加文营养品
     * @return array
     */
    public function add($params) {
        try{
            $params['uuid'] = guid();
            $params['create_time'] = date('Y-m-d H:i:s');
            $json_data = json_decode($params['recommend_nutrition'],true);
            if (is_array($json_data)){
                $params['nutrition_count'] = count($json_data);
            }
            $res = Db::name('nutrition_app')->insertGetId($params);
            if (!$res){
                throw new Exception('方案保存失败');
            }
        } catch (Exception $e) {
            return ['code' => 1, 'message' => $e->getMessage(), 'data' =>[]];
        }
        return ['code' => 0, 'message' => '操作成功', 'data' =>[]];
    }
    // 方案制定删除
    public function del($uuid)
    {
        try {
            $info = Db::name('nutrition_app')->where(['uuid' => $uuid])->find();
            if (empty($info)){
                throw new Exception('方案不存在');
            }
            $del = Db::name('nutrition_app')->where(['uuid' => $uuid])->delete();
            if ($del === false){
                throw new Exception('方案删除失败');
            }
        }catch (Exception $e){
            return ['code' => 1, 'message' => $e->getMessage(), 'data' =>[]];
        }
        return ['code' => 0, 'message' => '操作成功', 'data' =>[]];
    }
    // 类别1青少，2成年，3老将
    protected $staff_category = [
        1 => '青少年运动员',
        2 => '成年运动员',
        3 => '老将',
    ];
    public function programmeLists($page, $pageSize, $order,$where){
        $result = Db::name('nutrition_app')
                        ->where($where)
                        ->order($order)
                        ->field('id,uuid,sport_uuid,train,staff_category,nutrition_count,create_time,create_by')
                        ->page($page,$pageSize)
                        ->select();
        $sport_names = $this->sportModel->inquiryColumn(['puuid' => 0],'name','uuid');
        $stage = \think\Config::get("stage");
        $train_names = array_column($stage,'name','uuid');
        foreach ($result as $key => $value){
            $result[$key]['sport_name'] = isset($sport_names[$value['sport_uuid']]) ? $sport_names[$value['sport_uuid']] : '';
            $result[$key]['tarin_name'] = isset($train_names[$value['train']]) ? $train_names[$value['train']] : '';
            $result[$key]['create_time'] = date('Y-m-d',strtotime($value['create_time']));
            $result[$key]['staff_category_name'] = isset($this->staff_category[$value['staff_category']]) ? $this->staff_category[$value['staff_category']] : '';
        }
        $data['rows'] = $result;
        $data['total'] = Db::name('nutrition_app')->where($where)->count();
        return ['code' => 0, 'message' => '获取成功', 'data' => $data];
    }

    public function programmeDetail($uuid)
    {
        try {
            $info = Db::name('nutrition_app')->where(['uuid' => $uuid])->find();
            $sport_names = $this->sportModel->inquiryColumn(['puuid' => 0],'name','uuid');
            $stage = \think\Config::get("stage");
            $train_names = array_column($stage,'name','uuid');
            if (!empty($info)){
                $info['sport_name'] = isset($sport_names[$info['sport_uuid']]) ? $sport_names[$info['sport_uuid']] : '';
                $info['tarin_name'] = isset($train_names[$info['train']]) ? $train_names[$info['train']] : '';
                $info['create_time'] = date('Y-m-d H:i',strtotime($info['create_time']));
                $info['staff_category_name'] = isset($this->staff_category[$info['staff_category']]) ? $this->staff_category[$info['staff_category']] : '';
                $info['recommend_nutrition'] = json_decode($info['recommend_nutrition'],true);
                $info['sport_event_names'] = '';
                if (!empty($info['sport_event_uuid'])){
                    $sport_event_names = [];
                    if (isset($this->sport_event_uuids[$info['sport_uuid']])) {
                        $sport_event_infos = array_column($this->sport_event_uuids[$info['sport_uuid']], 'name', 'uuid');
                        $sport_event_uuids = explode(',', $info['sport_event_uuid']);
                        foreach ($sport_event_uuids as $sport_event_uuid) {
                            $sport_event_names[] = isset($sport_event_infos[$sport_event_uuid]) ? $sport_event_infos[$sport_event_uuid] : '';
                        }
                        $info['sport_event_names'] = implode(',', $sport_event_names);
                    }
                }
            }
        }catch (Exception $e){
            return ['code' => 1, 'message' => $e->getMessage(), 'data' =>[]];
        }
        return ['code' => 0, 'message' => '获取成功', 'data' =>$info];
    }
    /**
     *  获取营养品列表
     * @return array
     */
    public function lists($where, $page, $pageSize, $orderBy, $field) {
        $data['total'] = $this->model->inquiryCount($where);
        if(isset($where['name|synopsis'])){
            $where['a.name|synopsis'] = $where['name|synopsis'];
            unset($where['name|synopsis']);
        }
        if(isset($where['status'])){
            $where['a.status'] = $where['status'];
            unset($where['status']);
        }
        $where['a.is_del'] = 1;
        unset($where['is_del']);
        $nutrition = $this->model->inquiryNutrition($where, $page, 9999, $orderBy, $field);
        if (empty($nutrition)){
            return ['code' => 0, 'message' => '获取成功', 'data' =>['rows' => [], 'nutrition_sum' => 0]];
        }
        $rand_data = [];
        if (count($nutrition) < 2){
            $rand_data = $nutrition;
        }else{
            $rand_key = array_rand($nutrition, $pageSize);
            if (!empty($rand_key)){
                foreach ($rand_key as $v){
                    $rand_data[] = $nutrition[$v];
                }
            }
        }
        if (!empty($rand_data)) {
            foreach ($rand_data as $key => $value) {
                if ($field === ['a.*','b.name as set_name']) {
                    $value = \app\common\service\NutritionFloat82Write::physicalForModel($value, 'nutrition', $this->model);
                }
                $rand_data[$key] = $this->normalizeDictionaryCreateTime($value);
                $rand_data[$key]['img_path'] = getImgFullPath($value['img_path']);
                $rand_data[$key]['source_img_path'] = getImgFullPath($value['source_img_path']);
            }
        }
        $data['rows'] = $rand_data;
        $data['nutrition_sum'] = $this->model->inquiryCount(['is_del'=>1]);
        return ['code' => 0, 'message' => '获取成功', 'data' =>$data];
    }

    public function product($where, $page, $pageSize, $order)
    {
        $field = 'a.id,a.uuid,a.name,a.img_path,a.specifications,a.manufacturer,a.supplier,a.function,a.synopsis,a.app_img,
        a.nutrition_category_uuid,b.name as set_name,c.name as category_name,c.demo';
        $res = Db::name('nutrition')
                        ->alias('a')
                        ->join('nutrition_set b','a.set_uuid = b.uuid')
                        ->join('nutrition_category c','a.nutrition_category_uuid = c.uuid')
                        ->where($where)
                        ->order($order)
                        ->field($field)
                        ->page($page,$pageSize)
                        ->select();
        $rows = [];
        foreach ($res as $v){
            $v['img_path'] = getImgFullPath($v['img_path']);
            $v['app_img'] = getImgFullPath($v['app_img']);
            $rows[$v['nutrition_category_uuid']]['category_name'] = $v['category_name'];
            $rows[$v['nutrition_category_uuid']]['demo'] = $v['demo'];
            $rows[$v['nutrition_category_uuid']]['list'][] = $v;
        }
        $data['rows'] = array_values($rows);
        $data['total'] = Db::name('nutrition')
                                ->alias('a')
                                ->join('nutrition_set b','a.set_uuid = b.uuid')
                                ->join('nutrition_category c','a.nutrition_category_uuid = c.uuid')
                                ->where($where)
                                ->field($field)
                                ->count();
        return ['code' => 0, 'message' => '获取成功', 'data' =>$data];
    }

    public function getCheckedNutrition($where = [], $user)
    {
        $nutrition_uuids = Db::name('nutrition_user')->where(['user_uuid'=>$user['uuid']])->column('nutrition_uuid');
        $where['a.uuid'] = ['in',$nutrition_uuids];
        $field = "a.id,a.uuid,a.name,a.use_time,a.img_path,a.specifications,a.manufacturer,a.supplier,a.function,a.synopsis,a.app_img,
        a.nutrition_category_uuid,b.name as set_name,c.name as category_name,c.demo,a.nutrition_category_uuid,a.status";
        $rows = Db::name('nutrition')
            ->alias('a')
            ->join('nutrition_set b','a.set_uuid = b.uuid')
            ->join('nutrition_category c','a.nutrition_category_uuid = c.uuid')
            ->where($where)
            ->field($field)
            ->select();
        $use_time_names = Db::name('nutrition_time')->where(['del_flag' => 0])->column('name','uuid');
        $total_diff = 0;
        foreach ($rows as $key => $argv){
            $rows[$key]['checkend'] = false;
            $rows[$key]['flag'] = 1;
            $rows[$key]['img_path'] = getImgFullPath($argv['img_path']);
            $use_time_arr = [];
            $use_times = explode(',',$argv['use_time']);
            if ($argv['status'] == 0 && !in_array($argv['uuid'],$nutrition_uuids)){
                unset($rows[$key]);
                $total_diff++;
                continue;
            }
            foreach ($use_times as $use_time){
                $use_time_arr[] = $use_time_names[$use_time];
            }
            $rows[$key]['use_time_name'] = implode(',',$use_time_arr);

        }
        $data['check_count'] = count($nutrition_uuids);
        $data['rows'] = $rows;
        $data['total'] = Db::name('nutrition')
                                    ->alias('a')
                                    ->join('nutrition_set b','a.set_uuid = b.uuid')
                                    ->join('nutrition_category c','a.nutrition_category_uuid = c.uuid')
                                    ->field($field)
                                    ->where($where)
                                    ->count();
        if ($total_diff != 0){
            $data['total'] = $data['total'] - $total_diff;
        }
        return ['code' => 0, 'message' => '获取成功', 'data' =>$data];
    }
    public function getByCategoryLists($where, $page, $pageSize,$user)
    {
        try {
            $field = "a.id,a.uuid,a.name,a.use_time,a.img_path,a.specifications,a.manufacturer,a.supplier,a.function,a.synopsis,a.app_img,
        a.nutrition_category_uuid,b.name as set_name,c.name as category_name,c.demo,a.nutrition_category_uuid,a.status";
            $rows = Db::name('nutrition')
                ->alias('a')
                ->join('nutrition_set b','a.set_uuid = b.uuid')
                ->join('nutrition_category c','a.nutrition_category_uuid = c.uuid')
                ->where($where)
                ->field($field)
                ->page($page,$pageSize)
                ->select();
            $nutrition_uuids = Db::name('nutrition_user')->where(['user_uuid'=>$user['uuid']])->column('nutrition_uuid');
            $use_time_names = Db::name('nutrition_time')->where(['del_flag' => 0])->column('name','uuid');
            $number = 0;
            $total_diff = 0;
            foreach ($rows as $key => $argv){
                $rows[$key]['img_path'] = getImgFullPath($argv['img_path']);
                $rows[$key]['checkend'] = false;
                $rows[$key]['flag'] = 0;
                if (in_array($argv['uuid'],$nutrition_uuids)){
                    $rows[$key]['checkend'] = true;
                    $rows[$key]['flag'] = 1;
                    $number++;
                }
                /*if ($argv['status'] == 0 && !in_array($argv['uuid'],$nutrition_uuids)){
                    unset($rows[$key]);
                    $total_diff++;
                    continue;
                }*/
                $use_time_arr = [];
                $use_times = explode(',',$argv['use_time']);
                foreach ($use_times as $use_time){
                    $use_time_arr[] = $use_time_names[$use_time];
                }
                $rows[$key]['use_time_name'] = implode(',',$use_time_arr);
            }
            $check_count = Db::name('nutrition')->where(['is_del' => 1,'is_own' => 1,'status' => 1,'uuid' => ['in',$nutrition_uuids]])->count();
            $data['number'] = $number;
            $data['check_count'] = $check_count;
            $data['rows'] = array_values($rows);
            $data['total'] = Db::name('nutrition')
                                ->alias('a')
                                ->join('nutrition_set b','a.set_uuid = b.uuid')
                                ->join('nutrition_category c','a.nutrition_category_uuid = c.uuid')
                                ->where($where)
                                ->field($field)
                                ->count();
            if ($total_diff != 0){
                $data['total'] = $data['total'] - $total_diff;
            }
        }catch (Exception $e){
            return ['code' => 1, 'message' => $e->getMessage(), 'data' =>[]];
        }
        return ['code' => 0, 'message' => '获取成功', 'data' =>$data];
    }

    public function NutritionUseTimeGroup($uuids)
    {
        try {
            $uuids = explode(',',$uuids);
            $field = "a.id,a.uuid,a.name,a.sodium,a.fat,a.protein,a.carbohydrate,a.power,a.use_weight,
            a.use_number_unit,a.use_weight_unit,a.use_method,a.employ,a.use_number,a.use_number_unit,b.use_time,a.img_path,
            a.specifications,a.manufacturer,a.supplier,a.function,a.synopsis,a.app_img,a.nutrition_category_uuid,
            b.name as set_name,c.name as category_name,c.demo";
            $rows = Db::name('nutrition')
                ->alias('a')
                ->join('nutrition_set b','a.set_uuid = b.uuid')
                ->join('nutrition_category c','a.nutrition_category_uuid = c.uuid')
                ->where(['a.uuid' => ['in',$uuids]])
                ->field($field)
                ->select();
            $data = [];
            //营养品的服用单位中文
            $use_number_unit = array_column(config("use_number_unit"), "item", "id");
            $use_time_names = Db::name('nutrition_time')->where(['del_flag' => 0])->column('name','uuid');
            foreach ($rows as $key => $argv){
                $argv = \app\common\service\NutritionFloat82Write::physicalForModel($argv, 'nutrition', $this->model);
                $argv['img_path'] = getImgFullPath($argv['img_path']);
                $use_times = explode(',',$argv['use_time']);
                $argv['use_weight_unit_cn'] = isset($use_number_unit[$argv['use_weight_unit']])?$use_number_unit[$argv['use_weight_unit']]:'';
                $argv['use_number_unit_cn'] = isset($use_number_unit[$argv['use_number_unit']])?$use_number_unit[$argv['use_number_unit']]:'';
                foreach ($use_times as $use_time){
                    if ($argv['employ'] <= 1){
                        $argv['use_time_name'] = $use_time_names[$use_time];
                        $argv['use_time'] = $use_time;
                        $data[] = $argv;
                    }elseif ($argv['employ'] == 2 && in_array($use_time,['54112F69-513C-439B-A2F5-A376755D4AB7','3759D174-A4FB-AA74-6F35-EA0C27C926B1'])){
                        $argv['use_time_name'] = $use_time_names[$use_time];
                        $argv['use_time'] = $use_time;
                        $data[] = $argv;
                    }elseif ($argv['employ'] == 3){
                        $argv['use_time_name'] = $use_time_names[$use_time];
                        $argv['use_time'] = $use_time;
                        $data[] = $argv;
                    }
                }
            }
        }catch (Exception $e){
            return ['code' => 1, 'message' => $e->getMessage(), 'data' =>[]];
        }
        return ['code' => 0, 'message' => '获取成功', 'data' =>$data];
    }
    public function addNutritionUser($uuid,$flag,$user)
    {
        try {
            if(empty($user['uuid'])){
                throw new Exception('请先登录');
            }
            $uuids = explode(',',$uuid);
            if (empty($uuids)){
                throw new Exception('请选择营养品');
            }
            Db::startTrans();
            $res = Db::name('nutrition_user')->where(['user_uuid'=>$user['uuid'],'nutrition_uuid'=>['in', $uuids]])->delete();
            if ($res === false){
                throw new Exception('操作失败');
            }
            if ($flag == 1){
                $params = [];
                foreach ($uuids as $val){
                    $params[] = [
                        'uuid' => guid(),
                        'user_uuid'=>$user['uuid'],
                        'nutrition_uuid'=>$val,
                        'create_time' => date('Y-m-d H:i:s'),
                        'create_by' => $user['name']
                    ];
                }
                if (empty($params)){
                    throw new Exception('请选择营养品');
                }
                $add_add = Db::name('nutrition_user')->insertAll($params);
                if (!$add_add){
                    throw new Exception('操作失败');
                }
            }
            Db::commit();
        }catch (Exception $e){
            Db::rollback();
            return ['code' => 1, 'message' => $e->getMessage(), 'data' =>[]];
        }
        return ['code' => 0, 'message' => '操作成功', 'data' =>[]];
    }
    protected $sportValidate = [
        '2276A121-7186-7E46-A76E-FAD1283F9680' => [
            '499868AC-7641-6BE3-DBA6-ACCB259673F4' => 1,
            'D5697B89-0EF2-5CC7-60E2-A1E49C5520AD' => 2,
            '7895C238-4D7F-6194-74F6-598ACBEFC4FD' => 8,
            '43395645-966E-8214-4C01-D34601B62F03' => 3,
        ], // 田径
        'BC787DBA-D2C9-86DC-90FD-D264AF703A67' => [
            'E4334775-31A5-D89C-B463-5426D62CF71E' => 1,
            '95C44EFE-D19E-9F45-04D0-E4086F8DED1B' => 2,
            'CABD2B8F-1916-1B9E-027F-429ECAE9E0BE' => 8,
        ], // 游泳
        '371F9D01-D401-B033-907C-973598395E14' => [
            'AB158290-E224-B58D-EC04-DDC28AFA1AC9' => 9,
            '59401208-0FC0-D968-64ED-350A06A1EFA2' => 10,
            'B30F6850-125C-D137-632E-C360F74AB0FA' => 11,
            '7C4A0F6E-43BD-CEEB-3DEA-6C6D8E66FAAB' => 12,
        ], // 自行车
    ];
    protected $sport_event_uuids = [
        '2276A121-7186-7E46-A76E-FAD1283F9680' => [ // 田径
            ['uuid' => '499868AC-7641-6BE3-DBA6-ACCB259673F4','value'=>'499868AC-7641-6BE3-DBA6-ACCB259673F4','name' => '短距离','puuid' => '2276A121-7186-7E46-A76E-FAD1283F9680','checked' => false],
            ['uuid' => 'D5697B89-0EF2-5CC7-60E2-A1E49C5520AD','value'=>'D5697B89-0EF2-5CC7-60E2-A1E49C5520AD','name' => '中距离','puuid' => '2276A121-7186-7E46-A76E-FAD1283F9680','checked' => false],
            ['uuid' => '7895C238-4D7F-6194-74F6-598ACBEFC4FD','value'=>'7895C238-4D7F-6194-74F6-598ACBEFC4FD','name' => '长距离','puuid' => '2276A121-7186-7E46-A76E-FAD1283F9680','checked' => false],
            ['uuid' => '43395645-966E-8214-4C01-D34601B62F03','value'=>'43395645-966E-8214-4C01-D34601B62F03','name' => '跳投类','puuid' => '2276A121-7186-7E46-A76E-FAD1283F9680','checked' => false],
        ],
        'BC787DBA-D2C9-86DC-90FD-D264AF703A67' => [ // 游泳
            ['uuid' => 'E4334775-31A5-D89C-B463-5426D62CF71E','value'=>'E4334775-31A5-D89C-B463-5426D62CF71E','name' => '短距离','puuid' => 'BC787DBA-D2C9-86DC-90FD-D264AF703A67','checked' => false],
            ['uuid' => '95C44EFE-D19E-9F45-04D0-E4086F8DED1B','value' => '95C44EFE-D19E-9F45-04D0-E4086F8DED1B','name' => '中距离','puuid' => 'BC787DBA-D2C9-86DC-90FD-D264AF703A67','checked' => false],
            ['uuid' => 'CABD2B8F-1916-1B9E-027F-429ECAE9E0BE','value' => 'CABD2B8F-1916-1B9E-027F-429ECAE9E0BE','name' => '长距离','puuid' => 'BC787DBA-D2C9-86DC-90FD-D264AF703A67','checked' => false],
        ],
        '371F9D01-D401-B033-907C-973598395E14' => [ // 自行车
            ['uuid' => 'AB158290-E224-B58D-EC04-DDC28AFA1AC9','value' => 'AB158290-E224-B58D-EC04-DDC28AFA1AC9','name' => '场地','puuid' => '371F9D01-D401-B033-907C-973598395E14','checked' => false],
            ['uuid' => '59401208-0FC0-D968-64ED-350A06A1EFA2','value' => '59401208-0FC0-D968-64ED-350A06A1EFA2','name' => '公路','puuid' => '371F9D01-D401-B033-907C-973598395E14','checked' => false],
            ['uuid' => 'B30F6850-125C-D137-632E-C360F74AB0FA','value' => 'B30F6850-125C-D137-632E-C360F74AB0FA','name' => '山地','puuid' => '371F9D01-D401-B033-907C-973598395E14','checked' => false],
            ['uuid' => '7C4A0F6E-43BD-CEEB-3DEA-6C6D8E66FAAB','value' => '7C4A0F6E-43BD-CEEB-3DEA-6C6D8E66FAAB','name' => '小轮车','puuid' => '371F9D01-D401-B033-907C-973598395E14','checked' => false],
        ]
    ];
    private $train_problem = array('0'=>'补充能量','1'=>'预防抽筋','2'=>'恢复肌肉疲劳','3'=>'补充肌酸','4'=>'消除乳酸','5'=>'提高血红蛋白','6'=>'提高睾酮','7'=>'提高神经兴奋'
    ,'8'=>'改善睡眠','9'=>'保护关节软骨','10'=>'减控体重','11'=>'增肌增重','12'=>'降肌酸激酶防损伤','13'=>'降血尿素促恢复','14'=>'免疫与抗氧化');
    public function planFormulation($params,$user)
    {
        try {
            $target = $this->getTarget($params,$user);
        }catch (Exception $e){
            return ['code' => 1, 'message' => $e->getMessage(), 'data' =>[]];
        }
        return ['code' => 0, 'message' => '操作成功', 'data' =>$target['data']];
    }
    public function getNutritionTime($nutrition_uuid,$staff_category = '')
    {
        try {
            $recommend_nutrition_array = array();
            $add_select_phase = array();
            $select_phase = array();
            $recommend_nutrition = $this->model->nutritionSet(['a.uuid' => ['in', $nutrition_uuid],'a.status'=>1,'a.is_del'=>1,'a.is_own' => 1], ['a.uuid,a.function,a.set_uuid,a.name,a.synopsis,a.img_path,a.employ,a.use_method,b.id,b.use_time,a.power,a.carbohydrate,a.protein,a.fat,a.sodium,a.use_weight,a.use_weight_unit,a.use_number,a.use_number_unit']);
            foreach ($recommend_nutrition as &$physicalNutritionRow) {
                $physicalNutritionRow = \app\common\service\NutritionFloat82Write::physicalForModel($physicalNutritionRow, 'nutrition', $this->model);
            }
            unset($physicalNutritionRow);
            if ($staff_category == 1){ // 人员类别是青少年时，以下产品不应该出现也不应该被选中
                foreach ($recommend_nutrition as $key => $value){
                    if (strstr($value['name'],"含谷氨酰胺")){
                        unset($recommend_nutrition[$key]);
                    }
                    if (strstr($value['name'],"威能®能量饮耐力运动营养饮料")){
                        unset($recommend_nutrition[$key]);
                    }
                    if (strstr($value['name'],"摘金速度力量运动营养粉")){
                        unset($recommend_nutrition[$key]);
                    }
                    if (strstr($value['name'],"能量胶")){
                        unset($recommend_nutrition[$key]);
                    }
                    if ($value['set_uuid'] == '961C377F-FFE9-D8AA-E7EE-22D46C7BB313'){ // 睾酮改善类
                        unset($recommend_nutrition[$key]);
                    }
                    if ($value['set_uuid'] == '99C13A56-9511-709A-41F5-868C28EF5F1E'){ // 改善睡眠类
                        unset($recommend_nutrition[$key]);
                    }
                }
            }
            foreach($recommend_nutrition as $list)
            {
                if($list['use_time'])
                {
                    $morning = FALSE;
                    $noon = FALSE;
                    $night = FALSE;
                    $with_meal = FALSE;
                    $use_time_array = explode(',', $list['use_time']);
                    if(in_array("EE709CE0-937F-F1D0-39A7-BCF815276010", $use_time_array))
                        $morning = TRUE;
                    if(in_array("54112F69-513C-439B-A2F5-A376755D4AB7", $use_time_array))
                        $noon = TRUE;
                    if(in_array("3759D174-A4FB-AA74-6F35-EA0C27C926B1", $use_time_array))
                        $night = TRUE;

                    if($morning&&$noon&&$night)
                    {
                        $with_meal = TRUE;
                        $use_time_array = array_flip($use_time_array);
                        unset($use_time_array["EE709CE0-937F-F1D0-39A7-BCF815276010"]);
                        unset($use_time_array["54112F69-513C-439B-A2F5-A376755D4AB7"]);
                        unset($use_time_array["3759D174-A4FB-AA74-6F35-EA0C27C926B1"]);
                        $use_time_array = array_flip($use_time_array);
                    }
                }
                else
                    break;
                if($with_meal)
                {
                    if($list['employ']<=1)
                    {
                        $list['use_time'] = '54112F69-513C-439B-A2F5-A376755D4AB7';
                        $recommend_nutrition_array[] = $list;
                    }
                    elseif($list['employ']==2)
                    {
                        $list['use_time'] = '54112F69-513C-439B-A2F5-A376755D4AB7';
                        $recommend_nutrition_array[] = $list;
                        $list['use_time'] = '3759D174-A4FB-AA74-6F35-EA0C27C926B1';
                        $recommend_nutrition_array[] = $list;
                    }
                    elseif($list['employ']>=3)
                    {
                        $list['use_time'] = 'EE709CE0-937F-F1D0-39A7-BCF815276010';
                        $recommend_nutrition_array[] = $list;
                        $list['use_time'] = '54112F69-513C-439B-A2F5-A376755D4AB7';
                        $recommend_nutrition_array[] = $list;
                        $list['use_time'] = '3759D174-A4FB-AA74-6F35-EA0C27C926B1';
                        $recommend_nutrition_array[] = $list;
                    }
                }
                foreach($use_time_array as $use_time)
                {
                    $list['use_time'] = $use_time;
                    //摘金速度力量运动营养粉，简称摘金，强制训练出现（20210909李阳修改）
                    if($list['name'] == '摘金速度力量运动营养粉')
                        $list['use_time'] = 'FBF385F6-32DB-0767-1BF7-BEBA00BEDD9C';

                    $recommend_nutrition_array[] = $list;
                }
                if($list['id']==2)
                    $add_select_phase = array(1);
                elseif($list['id']==3)
                    $add_select_phase = array(0,2,11,13);
                elseif($list['id']==4)
                    $add_select_phase = array(2,5,6,10,11,12,13,14);
                elseif($list['id']==5)
                    $add_select_phase = array(3,11);
                elseif($list['id']==6)
                    $add_select_phase = array();
                elseif($list['id']==7)
                    $add_select_phase = array(5,6,11);
                elseif($list['id']==8)
                    $add_select_phase = array(4);
                elseif($list['id']==9)
                    $add_select_phase = array(0,2,13);
                elseif($list['id']==10)
                    $add_select_phase = array(7);
                elseif($list['id']==11)
                    $add_select_phase = array(14);
                elseif($list['id']==12)
                    $add_select_phase = array(5,14);
                elseif($list['id']==13)
                    $add_select_phase = array(10);
                elseif($list['id']==14)
                    $add_select_phase = array(9);
                elseif($list['id']==15)
                    $add_select_phase = array(12);
                elseif($list['id']==16)
                    $add_select_phase = array(8);
                elseif($list['id']==21)
                    $add_select_phase = array(5);

                if(count($select_phase) == 0)
                    $select_phase = $add_select_phase;
                else
                    $select_phase = array_merge ($select_phase,$add_select_phase);
            }
            //营养品的服用单位中文
            $use_number_unit = array_column(config("use_number_unit"), "item", "id");
//            var_dump($recommend_nutrition);exit();
            foreach ($recommend_nutrition_array as &$value){
                $value['use_number_unit_cn'] = isset($use_number_unit[$value['use_number_unit']])?$use_number_unit[$value['use_number_unit']]:'';
                $value['img_path'] = getImgFullPath($value['img_path']);
            }
            $select_phase = array_unique($select_phase);
            $data['add_select_phase'] = array_flip($select_phase);
            $data['nutrition_array'] = $recommend_nutrition_array;
        }
        catch (Exception $e) {
            return array('code' => 1, 'message' => $e->getMessage());
        }
        return array('code' => 0, 'message' => '成功', 'data' => $data);
    }
    // 根据条件获取重点关注目标
    public function getTarget($params,$user)
    {
        try {
            // 获取对应的特点
            $sport_traints = [];
            if (array_key_exists($params['sport_uuid'],$this->sportValidate)){
                if (empty($params['sport_event_uuid'])){
                    throw new Exception('请选择专项');
                }
                $sport_event_uuids = explode(',',$params['sport_event_uuid']);
                foreach ($sport_event_uuids as $sport_event_uuid){
                    $sport_traints[] = $this->sportValidate[$params['sport_uuid']][$sport_event_uuid];
                }
            }else{
                $sport_traints = $this->sportModel->inquiryColumn(['uuid' => $params['sport_uuid']], 'trait');
            }
            $where['nutrition_time_uuid'] = $params['train'];
            // 春训、常规需要把抗氧化类剔除
            if ($params['train'] == '62788BFC-B347-196C-833A-291C9EDDD092' || $params['train'] == '62788BFC-B347-196C-833A-291C9EDDD091'){
                $where['proble_id'] = ['<>','15'];
            }elseif ($params['train'] == '45F20243-6088-F088-42DC-1213B966D6D2'){
                $proble_id = [0,2,6,7,8,12];
                $where['proble_id'] = ['in',$proble_id];
            }elseif ($params['train'] == 'DCB3ADF7-C753-5079-8729-F07042C7EF54'){
                $proble_id = [0,2,7,8];
                $where['proble_id'] = ['in',$proble_id];
            }
            //获取训练阶段对应问题 train_problem
            $train_phase = $this->TrainPhaseModel->where($where)->select()->toArray();
            //获取营养品对应的分类，用于区分那些问题可以被选中
            $can_select = array();
            //推荐营养品数组
            $recommend_nutrition_array = array();
            $data['can_select'] = array();
            // 根据人员获取选择的营养品
            $nutrition_uuids = Db::name('nutrition_user')->where(['user_uuid' => $user['uuid']])->column('nutrition_uuid');
            $set_uuids = [];
            if (isset($params['add_nutritions']) && !empty($params['add_nutritions'])){
                $set_uuids = Db::name('nutrition')->where(['uuid' => ['in', $params['add_nutritions']]])->column('set_uuid');
            }
            if (!empty($params['nutritions'])){
                $nutritions_merge = explode(',',$params['nutritions']);
                if ($params['train_flag'] != 1){
                    $nutrition_uuids = array_merge($nutrition_uuids,$nutritions_merge);
                }else{
                    $nutrition_uuids = $nutritions_merge;
                }
            }

            if ($nutrition_uuids) {
                $nutrition_set_list = $this->model->nutritionSet(['a.uuid' => ['in', $nutrition_uuids],'a.status'=>1,'a.is_del'=>1,'a.is_own' => 1], ['a.uuid,a.name,a.function,a.set_uuid,a.img_path,a.employ,a.use_method,b.id,b.use_time,a.power,a.carbohydrate,a.protein,a.fat,a.sodium,a.use_weight,a.use_weight_unit,a.use_number,a.use_number_unit']);
                foreach ($nutrition_set_list as &$physicalNutritionRow) {
                    $physicalNutritionRow = \app\common\service\NutritionFloat82Write::physicalForModel($physicalNutritionRow, 'nutrition', $this->model);
                }
                unset($physicalNutritionRow);
                $get_can_select = $this->getNutritionTime($nutrition_uuids,$params['staff_category']);
                foreach ($nutrition_set_list as $list) {
                    $recommend_nutrition_array[$list['id']][] = $list;
                }
                $data['can_select'] = $get_can_select['data']['add_select_phase'];
            }
            $keynote_phase = array(); //重点关注问题分组
            foreach ($train_phase as $phase) {
                //重点关注问题
                if ($phase['type'] == 1) {
                    $keynote_phase[$phase['proble_id']] = $this->train_problem[$phase['proble_id']];
                    unset($this->train_problem[$phase['proble_id']]);
                }
            }

            //获取对应的特点
            //根据所选阶段与运动项，判断重点关注问题
            switch ($params['train']) { // 训练周期
                case '62788BFC-B347-196C-833A-291C9EDDD092': // 春训
                    foreach ($sport_traints as $sport_traint) {
                        if (in_array($sport_traint, array(1,3,6)) && isset($this->train_problem[3])) { // 短距离、跳投类、重竞技->补充肌酸
                            $keynote_phase[3] = $this->train_problem[3];
                            unset($this->train_problem[3]);
                        }
                        elseif ($sport_traint == 2) { // 中距离->消除乳酸
                            $keynote_phase[4] = $this->train_problem[4];
                            unset($this->train_problem[4]);
                        }
                        elseif (in_array($sport_traint, array(4,5))) { // 球类及需要保护关节项目-->保护关节软骨
                            $keynote_phase[9] = $this->train_problem[9];
                            unset($this->train_problem[9]);
                        }
                    }
                    break;
                case 'B6B54AE6-1426-C816-CAD0-47538222B2CF': // 夏训
                    foreach ($sport_traints as $sport_traint) {
                        if (in_array($sport_traint, array(1, 3, 6))  && isset($this->train_problem[3]) ) {
                            $keynote_phase[3] = $this->train_problem[3];
                            unset($this->train_problem[3]);
                        }
                        elseif ($sport_traint == 2) {
                            $keynote_phase[4] = $this->train_problem[4];
                            unset($this->train_problem[4]);
                        }
                        elseif (in_array($sport_traint, array(4,5))) {
                            $keynote_phase[9] = $this->train_problem[9];
                            unset($this->train_problem[9]);
                        }
                    }
                    break;
                case 'A941CC36-12A5-171D-9774-9732188C06E1': // 冬训
                    foreach ($sport_traints as $sport_traint) {
                        if (in_array($sport_traint, array(1, 3, 6)) && isset($this->train_problem[3]) ) {
                            $keynote_phase[3] = $this->train_problem[3];
                            unset($this->train_problem[3]);
                        }
                        elseif ($sport_traint == 2) {
                            $keynote_phase[4] = $this->train_problem[4];
                            unset($this->train_problem[4]);
                        }
                        elseif (in_array($sport_traint, array(4,5))) {
                            $keynote_phase[9] = $this->train_problem[9];
                            unset($this->train_problem[9]);
                        }
                    }
                    break;
                case '45F20243-6088-F088-42DC-1213B966D6D2':
                    foreach ($sport_traints as $sport_traint) {
                        if (in_array($sport_traint, array(1, 3, 6)) && isset($this->train_problem[3]) ) {
                            $keynote_phase[3] = $this->train_problem[3];
                            unset($this->train_problem[3]);
                        }
                        elseif ($sport_traint == 2) {
                            $keynote_phase[4] = $this->train_problem[4];
                            unset($this->train_problem[4]);
                        }
                        elseif (in_array($sport_traint, array(4,5))) {
                            $keynote_phase[9] = $this->train_problem[9];
                            unset($this->train_problem[9]);
                        }
                    }
                    break;
                //特点 1：短距离竞速 2：中距离耐力 3：跳投类 4：球类项目 5：需要保护关节软骨类产品 6：重竞技项目 7：冬季滑雪项目 8长距离，9场地，10公路，11山地，12小轮车
                case 'DCB3ADF7-C753-5079-8729-F07042C7EF54': // 赛内
                    foreach ($sport_traints as $sport_traint){
                        if (in_array($sport_traint, array(2, 6))) {
                            $keynote_phase[4] = $this->train_problem[4];
                            unset($this->train_problem[4]);
                        }
                    }
                    break;
                case '62788BFC-B347-196C-833A-291C9EDDD091':
                    foreach ($sport_traints as $sport_traint) {
                        if (in_array($sport_traint, array(1, 3, 6))  && isset($this->train_problem[3]) ) {
                            $keynote_phase[3] = $this->train_problem[3];
                            unset($this->train_problem[3]);
                        }
                        elseif ($sport_traint == 2) {
                            $keynote_phase[4] = $this->train_problem[4];
                            unset($this->train_problem[4]);
                        }
                        elseif (in_array($sport_traint, array(4,5))) {
                            $keynote_phase[9] = $this->train_problem[9];
                            unset($this->train_problem[9]);
                        }
                    }
                    break;
            }
            if ($params['staff_category'] == 1){
                unset($keynote_phase[8]);
                unset($keynote_phase[6]);
                foreach ($recommend_nutrition_array as $key => $value){
                    foreach ($value as $k => $v){
                        if (strstr($v['name'],"含谷氨酰胺")){
                            unset($recommend_nutrition_array[$key][$k]);
                        }
                        if (strstr($v['name'],"威能®能量饮耐力运动营养饮料")){
                            unset($recommend_nutrition_array[$key][$k]);
                        }
                        if (strstr($v['name'],"摘金速度力量运动营养粉")){
                            unset($recommend_nutrition_array[$key][$k]);
                        }
                        if (strstr($v['name'],"能量胶")){
                            unset($recommend_nutrition_array[$key][$k]);
                        }
                    }
                }
            }

            if (!empty($set_uuids)){
                foreach ($set_uuids as $set_uuid){
                    switch ($set_uuid){
                        case '077C7A9D-E877-CD81-F325-D34CE3D179BD': // 维矿补充类
                            if (!isset($keynote_phase[1])){
                                $keynote_phase[1] = $this->train_problem[1];
                                unset($this->train_problem[1]);
                            }
                            break;
                            case '077C7A9D-E877-CD81-F325-D34CE3D179BC': // 补充能量
                                if (!isset($keynote_phase[0])){
                                    $keynote_phase[0] = $this->train_problem[0];
                                    unset($this->train_problem[0]);
                                }
                                break;
                            case '679064E9-AD7A-198D-8338-6292FBA48890': // 蛋白补充
                                if (!isset($keynote_phase[2])){
                                    $keynote_phase[2] = $this->train_problem[2];
                                    unset($this->train_problem[2]);
                                }
                                break;
                            case '766EB07E-4A78-46CB-237C-650111E98609': // 肌酸补充
                                if (!isset($keynote_phase[3])){
                                    $keynote_phase[3] = $this->train_problem[3];
                                    unset($this->train_problem[3]);
                                }
                                break;
                        case '961C377F-FFE9-D8AA-E7EE-22D46C7BB313': // 睾酮补充
                            if (!isset($keynote_phase[6])){
                                $keynote_phase[6] = $this->train_problem[6];
                                unset($this->train_problem[6]);
                            }
                            break;
                        case 'AE5AC985-2413-1E9C-8A9F-96AC2339B0E0': // 乳酸消除
                            if (!isset($keynote_phase[4])){
                                $keynote_phase[4] = $this->train_problem[4];
                                unset($this->train_problem[4]);
                            }
                            break;
                        case 'BBEAC27E-D123-DE85-34B5-2C1C68B320D7': // 糖原恢复
                            if (!isset($keynote_phase[13])){
                                $keynote_phase[13] = $this->train_problem[13];
                                unset($this->train_problem[13]);
                            }
                            break;
                        case '075A177F-1E61-F3BE-BF4B-2C439CD374BB': // 提高兴奋神经
                            if (!isset($keynote_phase[7])){
                                $keynote_phase[7] = $this->train_problem[7];
                                unset($this->train_problem[7]);
                            }
                            break;
                        case 'FF8C150B-9BBC-E91B-0CC5-17FD3D3E3853': // 免疫调节
                            if (!isset($keynote_phase[14])){
                                $keynote_phase[14] = $this->train_problem[14];
                                unset($this->train_problem[14]);
                            }
                            break;
                        case 'AF4CA3BE-C357-96DC-200F-0EF683B815D9': // 抗氧化
                            if (!isset($keynote_phase[14])){
                                $keynote_phase[14] = $this->train_problem[14];
                                unset($this->train_problem[14]);
                            }
                            break;
                        case 'B276DE24-F489-70EE-1E48-FBD7A800244D': // 体重减控类
                            if (!isset($keynote_phase[10])){
                                $keynote_phase[10] = $this->train_problem[10];
                                unset($this->train_problem[10]);
                            }
                            break;
                        case '93A0E50C-5D68-FCB4-8029-6AED3FD36D36': // 关节软骨
                            if (!isset($keynote_phase[9])){
                                $keynote_phase[9] = $this->train_problem[9];
                                unset($this->train_problem[9]);
                            }
                            break;
                        case '99C13A56-9511-709A-41F5-868C28EF5F1E': // 睡眠改善
                            if (!isset($keynote_phase[8])){
                                $keynote_phase[8] = $this->train_problem[8];
                                unset($this->train_problem[8]);
                            }
                            break;
                        case '94A4BB75-2ECE-87F6-EDCA-767F2304FA1A': // 铁剂补充
                            if (!isset($keynote_phase[5])){
                                $keynote_phase[5] = $this->train_problem[5];
                                unset($this->train_problem[5]);
                            }
                            break;
                    }
                }
            }
            if (!empty($set_uuids)){
                foreach ($set_uuids as $set_uuid){
                    switch ($set_uuid){
                        case '077C7A9D-E877-CD81-F325-D34CE3D179BD': // 维矿补充类
                            if (!isset($keynote_phase[1])){
                                $keynote_phase[1] = $this->train_problem[1];
                                unset($this->train_problem[1]);
                            }
                            break;
                            case '077C7A9D-E877-CD81-F325-D34CE3D179BC': // 补充能量
                                if (!isset($keynote_phase[0])){
                                    $keynote_phase[0] = $this->train_problem[0];
                                    unset($this->train_problem[0]);
                                }
                                break;
                            case '679064E9-AD7A-198D-8338-6292FBA48890': // 蛋白补充
                                if (!isset($keynote_phase[2])){
                                    $keynote_phase[2] = $this->train_problem[2];
                                    unset($this->train_problem[2]);
                                }
                                break;
                            case '766EB07E-4A78-46CB-237C-650111E98609': // 肌酸补充
                                if (!isset($keynote_phase[3])){
                                    $keynote_phase[3] = $this->train_problem[3];
                                    unset($this->train_problem[3]);
                                }
                                break;
                        case '961C377F-FFE9-D8AA-E7EE-22D46C7BB313': // 睾酮补充
                            if (!isset($keynote_phase[6])){
                                $keynote_phase[6] = $this->train_problem[6];
                                unset($this->train_problem[6]);
                            }
                            break;
                        case 'AE5AC985-2413-1E9C-8A9F-96AC2339B0E0': // 乳酸消除
                            if (!isset($keynote_phase[4])){
                                $keynote_phase[4] = $this->train_problem[4];
                                unset($this->train_problem[4]);
                            }
                            break;
                        case 'BBEAC27E-D123-DE85-34B5-2C1C68B320D7': // 糖原恢复
                            if (!isset($keynote_phase[13])){
                                $keynote_phase[13] = $this->train_problem[13];
                                unset($this->train_problem[13]);
                            }
                            break;
                        case '075A177F-1E61-F3BE-BF4B-2C439CD374BB': // 提高兴奋神经
                            if (!isset($keynote_phase[7])){
                                $keynote_phase[7] = $this->train_problem[7];
                                unset($this->train_problem[7]);
                            }
                            break;
                        case 'FF8C150B-9BBC-E91B-0CC5-17FD3D3E3853': // 免疫调节
                            if (!isset($keynote_phase[14])){
                                $keynote_phase[14] = $this->train_problem[14];
                                unset($this->train_problem[14]);
                            }
                            break;
                        case 'AF4CA3BE-C357-96DC-200F-0EF683B815D9': // 抗氧化
                            if (!isset($keynote_phase[14])){
                                $keynote_phase[14] = $this->train_problem[14];
                                unset($this->train_problem[14]);
                            }
                            break;
                        case 'B276DE24-F489-70EE-1E48-FBD7A800244D': // 体重减控类
                            if (!isset($keynote_phase[10])){
                                $keynote_phase[10] = $this->train_problem[10];
                                unset($this->train_problem[10]);
                            }
                            break;
                        case '93A0E50C-5D68-FCB4-8029-6AED3FD36D36': // 关节软骨
                            if (!isset($keynote_phase[9])){
                                $keynote_phase[9] = $this->train_problem[9];
                                unset($this->train_problem[9]);
                            }
                            break;
                        case '99C13A56-9511-709A-41F5-868C28EF5F1E': // 睡眠改善
                            if (!isset($keynote_phase[8])){
                                $keynote_phase[8] = $this->train_problem[8];
                                unset($this->train_problem[8]);
                            }
                            break;
                        case '94A4BB75-2ECE-87F6-EDCA-767F2304FA1A': // 铁剂补充
                            if (!isset($keynote_phase[5])){
                                $keynote_phase[5] = $this->train_problem[5];
                                unset($this->train_problem[5]);
                            }
                            break;
                    }
                }
            }
            if ($params['staff_category'] == 3){
                $keynote_phase[9] = isset($keynote_phase[9]) ? $keynote_phase[9] : '保护关节软骨';
//                $keynote_phase[9] = '保护关节软骨';
            }
//            var_dump($keynote_phase);exit();
//            var_dump($data['can_select']);exit();
            //获取营养品方案
            //获取重点关注已被选中的问题
            if($params['train_phase'] === ''){
                $select_keynote_phases = array_intersect(array_flip($data['can_select']), array_keys($keynote_phase));
            }else{
                if (!empty($params['nutritions'])){
                    $select_keynote_phases = array_intersect(array_flip($data['can_select']), array_keys($keynote_phase));
                }else{
                    $select_keynote_phases = explode(',', $params['train_phase']);
                }
            }
            $recommend_nutritions = array();
            //初始化定义
            $power = 0; //能量
            $tangyuan = 0; //糖原恢复
            $protien = 0; //蛋白补充
            $jisuan = 0; //肌酸补充
            $gaotong = 0; //改善睾酮
            $yanghua = 0; //抗氧化
//            var_dump($select_keynote_phases);exit();
            foreach ($select_keynote_phases as $select_keynote_phase) {
                switch ($select_keynote_phase) {
                    //key为产品分类id,可从问题对应表中获取
                    case 0:
                        if (isset($recommend_nutrition_array[3]) && !empty($recommend_nutrition_array[3])) {
                            // 自行车项目 、铁人三项、田径长距离优选能量胶
                            if ($params['train'] == 'DCB3ADF7-C753-5079-8729-F07042C7EF54' && ($params['sport_uuid'] == '371F9D01-D401-B033-907C-973598395E14' || $params['sport_event_uuid'] == '7895C238-4D7F-6194-74F6-598ACBEFC4FD')){
                                foreach($recommend_nutrition_array[3] as $power_key=>$power_nutrition)
                                {
                                    if(strstr($power_nutrition['name'],'能量胶'))
                                    {
                                        //$recommend_nutrition_array[3][$power_key]['use_time'] = 'FBF385F6-32DB-0767-1BF7-BEBA00BEDD9C';
                                        $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[3][$power_key]['uuid']);

                                        foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                                        {
                                            $recommend_nutritions[] = $recommend_nutrition_list;
                                        }
                                        unset($recommend_nutrition_array[3][$power_key]);
                                    }
                                }
                                if (!empty($recommend_nutritions)){
                                    $power = 1;
                                    break;
                                }
                            }elseif ($params['train'] == 'DCB3ADF7-C753-5079-8729-F07042C7EF54'){
                                $get_list_recommend = [];
                                foreach($recommend_nutrition_array[3] as $power_key=>$power_nutrition)
                                {
                                    if(strstr($power_nutrition['name'],'冲刺能量泵'))
                                    {
                                        $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[3][$power_key]['uuid']);
                                    }elseif (strstr($power_nutrition['name'],'威能运动能量饮料')){
                                        $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[3][$power_key]['uuid']);
                                    }
                                    if (!empty($get_list_recommend)){
                                        foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                                        {
                                            $recommend_nutritions[] = $recommend_nutrition_list;
                                        }
                                        unset($recommend_nutrition_array[3][$power_key]);
                                    }
                                    if (!empty($recommend_nutritions)){
                                        $power = 1;
                                        break;
                                    }
                                }
                            }else{
                                if (isset($params['flag']) && $params['flag'] == 1){
                                    $rand_key = array_rand($recommend_nutrition_array[3], 1);
                                }else{
                                    $arr_keys = array_keys($recommend_nutrition_array[3]);
                                    $rand_key = $arr_keys[0];
                                }
                                $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[3][$rand_key]['uuid']);
                                foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                                {
                                    $recommend_nutritions[] = $recommend_nutrition_list;
                                }
                                unset($recommend_nutrition_array[3][$rand_key]);
                                $power = 1;
                            }

                        }elseif (isset($recommend_nutrition_array[9]) && !empty($recommend_nutrition_array[9])) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[9], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[9]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[9][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[9][$rand_key]);
                            $tangyuan = 1;
                        }
                        break;
                    case 1:
                        if (isset($recommend_nutrition_array[2]) && !empty($recommend_nutrition_array[2])) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[2], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[2]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[2][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[2][$rand_key]);
                        }
                        break;
                    case 2:
                        if ((isset($recommend_nutrition_array[9]) && !empty($recommend_nutrition_array[9])) && !$tangyuan) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[9], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[9]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[9][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[9][$rand_key]);
                            $tangyuan = 1;
                        } elseif ((isset($recommend_nutrition_array[3]) && !empty($recommend_nutrition_array[3])) && !$power) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[3], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[3]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[3][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[3][$rand_key]);
                            $power = 1;
                        }

                        if (isset($recommend_nutrition_array[4]) && !empty($recommend_nutrition_array[4])) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[4], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[4]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[4][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[4][$rand_key]);
                            $protien = 1;
                        }
                        break;
                    case 3:
                        if (isset($recommend_nutrition_array[5]) && !empty($recommend_nutrition_array[5])) {
                            if (isset($params['flag']) && $params['flag'] == 1) {
                                $rand_key = array_rand($recommend_nutrition_array[5], 1);
                            }else{
                                // 获取指定数组的第一个下标
                                $arr_keys = array_keys($recommend_nutrition_array[5]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[5][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[5][$rand_key]);
                            $jisuan = 1;
                        }
                        break;

                    case 4:
                        if (isset($recommend_nutrition_array[8]) && !empty($recommend_nutrition_array[8])) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[8], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[8]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[8][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[8][$rand_key]);
                        }
                        break;

                    case 5:
                        if (isset($recommend_nutrition_array[21]) && !empty($recommend_nutrition_array[21])) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[21], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[21]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[21][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[21][$rand_key]);
                        }
                        if ((isset($recommend_nutrition_array[4]) && !empty($recommend_nutrition_array[4])) && !$protien) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[4], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[4]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[4][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[4][$rand_key]);
                            $protien = 1;
                        }

                        if ((isset($recommend_nutrition_array[7]) && !empty($recommend_nutrition_array[7])) && !$gaotong) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[7], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[7]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[7][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[7][$rand_key]);
                            $gaotong = 1;
                        }
                        if (isset($recommend_nutrition_array[12]) && !empty($recommend_nutrition_array[12])) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[12], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[12]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[12][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[12][$rand_key]);
                            $yanghua = 1;
                        }

                        break;

                    case 6:
                        if ((isset($recommend_nutrition_array[7]) && !empty($recommend_nutrition_array[7])) && !$gaotong) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[7], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[7]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[7][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[7][$rand_key]);
                            $gaotong = 1;
                        }
                        if ((isset($recommend_nutrition_array[4])  && !empty($recommend_nutrition_array[4])) && !$protien) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[4], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[4]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[4][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[4][$rand_key]);
                            $protien = 1;
                        }
                        break;

                    case 7:
                        if (isset($recommend_nutrition_array[10]) && !empty($recommend_nutrition_array[10])) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[10], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[10]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[10][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[10][$rand_key]);
                        }
                        break;

                    case 8:
                        if (isset($recommend_nutrition_array[16]) && !empty($recommend_nutrition_array[16])) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[16], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[16]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[16][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[16][$rand_key]);
                        }
                        break;

                    case 9:
                        if (isset($recommend_nutrition_array[14]) && !empty($recommend_nutrition_array[14])) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[14], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[14]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[14][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[14][$rand_key]);
                        }
                        break;

                    case 10:
                        if (count($recommend_nutrition_array[4]) > 0) {
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[4][0]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
//                            $recommend_nutrition_array[4][0]['use_time'] = '01EA0854-7A1C-BAA4-C66F-DB6D0743F1AC';
//                            $recommend_nutritions[] = $recommend_nutrition_array[4][0];
                            unset($recommend_nutrition_array[4][0]);
                            $protien = 1;
                        }
                        if (count($recommend_nutrition_array[13]) > 0) {
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[13][0]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
//                            $recommend_nutrition_array[13][0]['use_time'] = 'FBF385F6-32DB-0767-1BF7-BEBA00BEDD9C';
//                            $recommend_nutritions[] = $recommend_nutrition_array[13][0];
                            unset($recommend_nutrition_array[13][0]);
                        }
                        break;

                    case 11:
                        /*  11 的问题这一版本没有
                         * $nutrition_zj = $this->nutritionModel->nutritionSet(['a.uuid' => ['in', $nutritions], 'a.name' => '摘金果粒复合蛋白粉速度力量运动营养粉','a.status'=>1,'a.is_del'=>1], ['a.uuid,a.name,a.img_path,a.employ,a.use_method,b.id,b.use_time,a.power,a.carbohydrate,a.protein,a.fat,a.sodium,a.use_weight,a.use_weight_unit,a.use_number']);
                        if (count($nutrition_zj) > 0) {
                            $has_protein_goods = 0;
                            foreach ($recommend_nutritions as $recommend_key => $recommend_nutrition) {
                                if ($recommend_nutrition['id'] == 4 && $recommend_nutrition['name'] != '摘金果粒复合蛋白粉速度力量运动营养粉') {
                                    $get_list_recommend = $this->getNutritionTime($nutrition_zj[0]['uuid']);
                                    foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                                    {
                                        $recommend_nutritions[] = $recommend_nutrition_list;
                                    }
                                    //$nutrition_zj[0]['use_time'] = '01EA0854-7A1C-BAA4-C66F-DB6D0743F1AC';
                                    $has_protein_goods = 1;
                                    //$recommend_nutritions[$recommend_key] = $nutrition_zj[0];
                                }
                            }

                            if (!$has_protein_goods) {
                                $get_list_recommend = $this->getNutritionTime($nutrition_zj[0]['uuid']);
                                foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                                {
                                    $recommend_nutritions[] = $recommend_nutrition_list;
                                }
//                                $nutrition_zj[0]['use_time'] = '01EA0854-7A1C-BAA4-C66F-DB6D0743F1AC';
//                                $recommend_nutritions[] = $nutrition_zj[0];
                            }
                        }
                        else {
                            if (count($recommend_nutrition_array[3]) > 0) {
                                if(count($recommend_nutrition_array[3]) > 1)
                                {
                                    $has_gn = 0;
                                    foreach($recommend_nutrition_array[3] as $power_key=>$power_nutrition)
                                    {
                                        if(strstr($power_nutrition['name'],'高能'))
                                        {
                                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[3][0]['uuid']);
                                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                                            {
                                                $recommend_nutritions[] = $recommend_nutrition_list;
                                            }
//                                          $recommend_nutrition_array[3][0]['use_time'] = 'FBF385F6-32DB-0767-1BF7-BEBA00BEDD9C';
//                                          $recommend_nutritions[] = $recommend_nutrition_array[3][$power_key];
                                            unset($recommend_nutrition_array[3][$power_key]);
                                            $has_gn = 1;
                                            break;
                                        }
                                    }
                                    if(!$has_gn)
                                    {
                                        $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[3][0]['uuid']);
                                        foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                                        {
                                            $recommend_nutritions[] = $recommend_nutrition_list;
                                        }
//                                      $recommend_nutrition_array[3][0]['use_time'] = 'FBF385F6-32DB-0767-1BF7-BEBA00BEDD9C';
//                                      $recommend_nutritions[] = $recommend_nutrition_array[3][0];
                                        unset($recommend_nutrition_array[3][0]);
                                    }
                                }
                                else {
                                    $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[3][0]['uuid']);
                                    foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                                    {
                                        $recommend_nutritions[] = $recommend_nutrition_list;
                                    }
//                                  $recommend_nutrition_array[3][0]['use_time'] = 'FBF385F6-32DB-0767-1BF7-BEBA00BEDD9C';
//                                  $recommend_nutritions[] = $recommend_nutrition_array[3][0];
                                    unset($recommend_nutrition_array[3][0]);
                                }
                                $power = 1;
                            }
                            elseif (count($recommend_nutrition_array[9]) > 0) {
                                $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[9][0]['uuid']);
                                foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                                {
                                    $recommend_nutritions[] = $recommend_nutrition_list;
                                }
//                                $recommend_nutrition_array[9][0]['use_time'] = '01EA0854-7A1C-BAA4-C66F-DB6D0743F1AC';
//                                $recommend_nutritions[] = $recommend_nutrition_array[9][0];
                                unset($recommend_nutrition_array[9][0]);
                                $tangyuan = 1;
                            }
                            if (count($recommend_nutrition_array[4]) > 0 && !$protien) {
                                $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[4][0]['uuid']);
                                foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                                {
                                    $recommend_nutritions[] = $recommend_nutrition_list;
                                }
                                unset($recommend_nutrition_array[4][0]);
                                $protien = 1;
                            }
                            if (count($recommend_nutrition_array[5]) > 0 && !$jisuan) {
                                $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[5][0]['uuid']);
                                foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                                {
                                    $recommend_nutritions[] = $recommend_nutrition_list;
                                }
//                                $recommend_nutrition_array[5][0]['use_time'] = '01EA0854-7A1C-BAA4-C66F-DB6D0743F1AC';
//                                $recommend_nutritions[] = $recommend_nutrition_array[5][0];
                                unset($recommend_nutrition_array[5][0]);
                                $jisuan = 1;
                            }
                            if (count($recommend_nutrition_array[7]) > 0 && !$gaotong) {
                                $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[7][0]['uuid']);
                                foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                                {
                                    $recommend_nutritions[] = $recommend_nutrition_list;
                                }
//                                $recommend_nutrition_array[7][0]['use_time'] = '9F43A429-61F5-6E50-847E-096A296BC80E';
//                                $recommend_nutritions[] = $recommend_nutrition_array[7][0];
                                unset($recommend_nutrition_array[7][0]);
                                $gaotong = 1;
                            }
                        }*/
                        break;

                    case 12:
                        if (isset($recommend_nutrition_array[15]) && !empty($recommend_nutrition_array[15])) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[15], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[15]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[15][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[15][$rand_key]);
                        }
                        if ((isset($recommend_nutrition_array[4]) && !empty($recommend_nutrition_array[4])) && !$protien) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[4], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[4]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[4][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[4][$rand_key]);
                            $protien = 1;
                        }
                        break;

                    case 13:
                        if ((isset($recommend_nutrition_array[4]) && !empty($recommend_nutrition_array[4])) && !$protien) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[4], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[4]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[4][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[4][$rand_key]);
                            $protien = 1;
                        }

                        if ((isset($recommend_nutrition_array[3]) && !empty($recommend_nutrition_array[3])) && !$power) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[3], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[3]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[3][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[3][$rand_key]);
                            $power = 1;
                        }
                        if ((isset($recommend_nutrition_array[9]) && !empty($recommend_nutrition_array[9])) && !$tangyuan) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[9], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[9]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[9][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[9][$rand_key]);
                            $tangyuan = 1;
                        }
                        break;
                    case 14:
                        if (isset($recommend_nutrition_array[11]) && !empty($recommend_nutrition_array[11])) {
                            if (isset($params['flag']) && $params['flag'] == 1){
                                $rand_key = array_rand($recommend_nutrition_array[11], 1);
                            }else{
                                $arr_keys = array_keys($recommend_nutrition_array[11]);
                                $rand_key = $arr_keys[0];
                            }
                            $get_list_recommend = $this->getNutritionTime($recommend_nutrition_array[11][$rand_key]['uuid']);
                            foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                            {
                                $recommend_nutritions[] = $recommend_nutrition_list;
                            }
                            unset($recommend_nutrition_array[11][$rand_key]);
                        }
                        if ($params['sport_uuid'] == '67C24A62-4554-C898-D771-0B5BDA197A95'){ // 雪上项目额外增加抗氧化
                            if (isset($recommend_nutrition_array[12]) && !empty($recommend_nutrition_array[12])) {
                                if (isset($params['flag']) && $params['flag'] == 1){
                                    $rand_key = array_rand($recommend_nutrition_array[12], 1);
                                }else{
                                    $arr_keys = array_keys($recommend_nutrition_array[12]);
                                    $rand_key = $arr_keys[0];
                                }
                                $get_list_recommend = $this->$this->getNutritionTime($recommend_nutrition_array[12][$rand_key]['uuid']);
                                foreach($get_list_recommend['data']['nutrition_array'] as $recommend_nutrition_list)
                                {
                                    $recommend_nutritions[] = $recommend_nutrition_list;
                                }
                                unset($recommend_nutrition_array[12][$rand_key]);
                            }
                        }
                        break;

                    case 15:

                        break;
                }
            }
            // 排序，按照晨起、随早餐、训练期....进行排序
            $order_array = [
                '96F8EA36-5FBF-F5AB-C86E-5F8495C70B32' => '晨起',// 晨起
                'EE709CE0-937F-F1D0-39A7-BCF815276010' => '随早餐',//随早餐
                'FBF385F6-32DB-0767-1BF7-BEBA00BEDD9C' => '训练期', // 训练期
                '01EA0854-7A1C-BAA4-C66F-DB6D0743F1AC' => '训练后',//训练后
                '54112F69-513C-439B-A2F5-A376755D4AB7' => '随午餐',// 随午餐
                '3759D174-A4FB-AA74-6F35-EA0C27C926B1' => '随晚餐',// 随晚餐
                '9F43A429-61F5-6E50-847E-096A296BC80E' => '睡前',// 睡前
            ];

            foreach ($keynote_phase as $kk => $vv){
                if (!in_array($kk,$select_keynote_phases)){
                    unset($keynote_phase[$kk]);
                }
            }

            if ($params['train_flag'] == 1 && empty($params['nutritions'])){
                $select_keynote_phases = [];
                $recommend_nutritions = [];
            }

            $data['select_keynote_phases'] = $select_keynote_phases;
            $data['keynote_phase'] = $keynote_phase;
            $data['other_phase'] = $this->train_problem;
            //营养品的服用单位中文
            $use_number_unit = array_column(config("use_number_unit"), "item", "id");
            foreach ($recommend_nutritions as $key => $value){
                $recommend_nutritions[$key]['use_weight_unit_cn'] = isset($use_number_unit[$value['use_weight_unit']])?$use_number_unit[$value['use_weight_unit']]:'';
                $recommend_nutritions[$key]['use_time_name'] = isset($order_array[$value['use_time']])?$order_array[$value['use_time']]:'';
                $recommend_nutritions[$key]['use_number_unit_cn'] = isset($use_number_unit[$value['use_number_unit']])?$use_number_unit[$value['use_number_unit']]:'';
            }
            $sort_data = [];
            foreach ($order_array as $key =>$value){
                foreach ($recommend_nutritions as $k => $v){
                    if (isset($v['use_time'])){
                        if ($key == $v['use_time']){
                            $sort_data[] = $v;
                            unset($recommend_nutritions[$k]);
                        }
                    }
                }
            }
            $data['recommend_nutritions'] = $sort_data;
        } catch (Exception $e) {
            return array('code' => 1, 'message' => $e->getMessage());
        }
        return array('code' => 0, 'message' => '成功', 'data' => $data);
    }

    /**
     * 读取营养品
     * @param type $uuid
     * @return type
     */
    public function info($uuid) {
        $nutrition = $this->model->read($uuid);
        if (is_array($nutrition)) {
            $nutrition = \app\common\service\NutritionFloat82Write::physicalForModel($nutrition, 'nutrition', $this->model);
            $nutrition = $this->normalizeDictionaryCreateTime($nutrition);
        }
        if($nutrition['employ'] == 0){
            $nutrition['employ'] = '';
        }
        if(!$nutrition){
            return ['code' => 1, 'message' => '获取失败', 'data' =>''];
        }
        $nutrition['specifications'] = $nutrition['specifications'] ? $nutrition['specifications'] : '';
        $nutrition['img_path'] = getImgFullPath($nutrition['img_path']);
        $nutrition['source_img_path'] = getImgFullPath($nutrition['source_img_path']);
        $nutrition['app_img'] = getImgFullPath($nutrition['app_img']);
        return ['code' => 0, 'message' => '获取成功', 'data' =>$nutrition];
    }

    /**
     *  编辑
     * @return array
     */
    public function update($params) {
       try{
           $uuid = $params['uuid'];
           unset($params['uuid']);
           $nutrition = $this->model->read($uuid);
           if (!$nutrition) {
               throw  new Exception('参数未查询出数据');
           }
           //查找供货商是否为”康比特“相关
           $is_exist = strpos($params['supplier'],'康比特');
           $params['is_own'] = $is_exist === false ? 0 : 1;
           $res = $this->model->modify($uuid, \app\common\service\NutritionFloat82Write::forModel($params, 'nutrition', $this->model));
           if ($res === false) {
               throw  new Exception('修改失败');
           }
           //营养品的分类更改
           if($nutrition['set_uuid'] != $params['set_uuid']){
               //更新原来旧分类的数据
               $resSet = $this->updateSetNum(null,$nutrition['set_uuid']);
               if ($resSet['code'] == 1) {
                   throw new Exception($resSet['message']);
               }
               //更新新分类的数据
               $resSet = $this->updateSetNum($uuid);
               if ($resSet['code'] == 1) {
                   throw new Exception($resSet['message']);
               }
           }
       } catch (Exception $e) {
           return ['code' => 1, 'message' => $e->getMessage(), 'data' =>[]];
       }
       return ['code' => 0, 'message' => '修改成功', 'data' =>[]];
    }

    /**
     * 隐藏/显示
     * @return array
     */
    public function able($uuid, $status) {
        try{
            $article = $this->model->read($uuid);
            if(!$article) {
                throw new Exception("营养品不存在");
            }
            $ret = $this->model->modify($uuid, ['status'=>$status]);
            if (!$ret) {
                throw new Exception("状态修改失败");
            }
        }catch(Exception $e) {
            return ['code'=>1, 'message'=>$e->getMessage(), 'data'=>[]];
        }
        return ['code'=>0, 'message'=>'状态修改成功', 'data'=>[]];
    }

    /**
     *  删除
     * @return array
     */
    public function delete($uuid) {
       $del_arr = explode(',', $uuid);
       $data = $this->model->delMore($del_arr);
       if (!$data){
          return ['code' => 1, 'message' => '删除失败', 'data' =>[]];
       }
        $resSet = $this->updateSetNum($uuid);
        if ($resSet['code'] == 1) {
            throw new Exception($resSet['message']);
        }
       return ['code' => 0, 'message' => '删除成功', 'data' =>$data];
    }

    /**
     *  获取文章
     * $param key_name
     * @return array
     */
    public function listSet($where, $page, $pageSize, $orderBy, $field) {
//        $nutritionSet = $this->modelSet->inquiry($where, $page, $pageSize, $orderBy, $field);
        $nutritionSet = $this->modelSet->field($field)->where($where)->order($orderBy)->page($page, $pageSize)->select()->toArray();
        //使用时间汉字查询
        $use_time_arr = $this->modelNutritionTime->inquiryColumn([],['uuid','name']);
        foreach ($nutritionSet as &$value){
            $flag = 1;
            $wheres['is_del'] = 1;
            $wheres['set_uuid'] = $value['uuid'];
            $is_exist = Db::name('nutrition')
                ->where($wheres)
                ->count();
            if($is_exist){
                $flag = 0;
            }
            $value['delete_able'] = $flag;
            $take_time = '';
            if($value['use_time']){
                foreach (explode(',',$value['use_time']) as $use_time_uuid){
                    if(isset($use_time_arr[$use_time_uuid])){
                        if($take_time){
                            $take_time = $take_time . ',' . $use_time_arr[$use_time_uuid];
                        }else{
                            $take_time = $use_time_arr[$use_time_uuid];
                        }
                    }
                }
            }
            $value['take_time'] = $take_time;
        }
        $data['rows'] = $nutritionSet;
        $data['total'] = $this->modelSet->alias("a")->where($where)->count();
        return ['code' => 0, 'message' => '获取成功', 'data' =>$data];
    }

    /**
     *  获取
     * @param type_id
     * $param key_name
     * @return array
     */
    public function listsALL($where,$orderBy, $field) {
//        $data= $this->modelSet->inquiryAll($where, $orderBy, $field);
        $data = $this->modelSet->inquiryAllCount($where, $orderBy, $field);
        return ['code' => 0, 'message' => '获取成功', 'data' =>$data];
    }

    /**
     *  获取文章
     * @param type_id
     * $param key_name
     * @return array
     */
    public function listsAllSet($where,$orderBy, $field) {
        $data = $this->modelSet->inquiryAll($where, $orderBy, $field);
        return $data;
    }

    /**
     *  获取
     * $param key_name
     * @return array
     */
    public function supplierList($where) {

        $data = $this->model->where($where)
            ->group('supplier')
            ->field(['supplier'])
            ->select();
        $res = array();
        $else = 0;
        foreach ($data as $k => $value) {
            if($value['supplier']){
                $where_supplier = $where;
                $where_supplier['supplier'] = $value['supplier'];
                $number = $this->model->where($where_supplier)->count();
                $res[] = ['name'=>$value['supplier'],'number'=>$number];
            }else{
                $else = 1;
            }
        }
        if($else){
            $where['supplier'] = ['exp',Db::raw('IS NULL OR supplier= " " ')];
            $number =  $this->model
                ->where($where)
                ->count();
            $res[] = ['name'=>'其他','number'=>$number];
        }
        return ['code' => 0, 'message' => '获取成功', 'data' =>$res];
    }

    /**
     *  添加营养品分类
     * @return array
     */
    public function addSet($params) {
        try{
            $params['uuid']  = guid();
            $title = $this->modelSet->where(['name'=>$params['name'],'is_del'=>1])->find();
            if ($title) {
                throw new Exception('营养品分类已存在');
            }
            $params['create_time'] = date('Y-m-d H:i:s');
            $res = $this->modelSet->add($params);
            if (!$res) {
                throw new Exception('添加营养品分类');
            }
        } catch (Exception $e) {
            return ['code' => 1, 'message' => $e->getMessage(), 'data' =>[]];
        }
        return ['code' => 0, 'message' => '添加营养品分类成功', 'data' =>[]];
    }

    /**
     * 读取文章
     * @param type $uuid
     * @return type
     */
    public function infoSet($uuid) {
        $article = $this->modelSet->read($uuid);
        return ['code' => 0, 'message' => '获取成功', 'data' =>$article];
    }

    /**
     *  编辑营养品分类
     * @return array
     */
    public function updateSet($params) {
        try{
            $uuid = $params['uuid'];
            unset($params['uuid']);
            $nutrition = $this->modelSet->read($uuid);
            if (!$nutrition) {
                throw  new Exception('不存在该分类');
            }
            $where['name'] = $params['name'];
            $where['uuid'] = ['neq',$uuid];
            $where['is_del'] = 1;
            $title = $this->modelSet->where($where)->find();
            if ($title) {
                throw new Exception('营养品分类已存在');
            }
            $res = $this->modelSet->modify($uuid, $params);
            if ($res === false) {
                throw  new Exception('修改失败');
            }
        } catch (Exception $e) {
            return ['code' => 1, 'message' => $e->getMessage(), 'data' =>[]];
        }
        return ['code' => 0, 'message' => '修改成功', 'data' =>[]];
    }

    /**
     * 隐藏/显示
     * @return array
     */
    public function ableSet($uuid, $status) {
        try{
            $nutrition = $this->modelSet->read($uuid);
            if(!$nutrition) {
                throw new Exception("分类不存在");
            }
//            $where['is_del'] = 1;
//            $where['set_uuid'] = $uuid;
//            $is_exist = Db::name('nutrition')
//                ->where($where)
//                ->count();
//            if($is_exist){
//                throw new Exception("此分类已被应用，不能改变状态");
//            }
            $ret = $this->modelSet->modify($uuid, ['status'=>$status]);
            if (!$ret) {
                throw new Exception("修改失败");
            }
        }catch(Exception $e) {
            return ['code'=>1, 'message'=>$e->getMessage(), 'data'=>[]];
        }
        return ['code'=>0, 'message'=>'修改成功', 'data'=>[]];
    }

    /**
     *  删除
     * @return array
     */
    public function deleteSet($uuid) {
        try{
            $del_arr = explode(',', $uuid);
            //判断分类下有无关联营养品
            foreach ($del_arr as $key => $set_uuid){
                $is_used = $this->model->inquiryCount(['set_uuid'=>$set_uuid,'is_del'=>1]);
                if($is_used){
                    $set_name = $this->modelSet->inquiryColumn(['uuid'=>$set_uuid],['name']);
                    $set_name = isset($set_name[0]) ? $set_name[0] : $set_name;
                    throw new Exception($set_name . "分类下包含营养品，不能删除");
                }
            }
            $data = $this->modelSet->delMore($del_arr);
            if (!$data){
                return ['code' => 1, 'message' => '删除失败', 'data' =>[]];
            }
        }catch(Exception $e) {
            return ['code'=>1, 'message'=>$e->getMessage(), 'data'=>[]];
        }
        return ['code'=>0, 'message'=>'删除成功', 'data'=>[]];
    }

    /**
     *  编辑营养品分类
     * @return array
     */
    public function updateSetNum($uuid_str=null,$set_uuid_str=null) {
        try{
            DB::startTrans();
            if($uuid_str){
                $where['uuid'] = ['in',$uuid_str];
                $get_set_uuid = $this->model->inquiryColumn($where,'set_uuid');
                if(!is_array($get_set_uuid)){
                    throw new Exception("此营养品不属于任何分类");
                }
                $set_uuid_str = implode(',',$get_set_uuid);
            }
            if($set_uuid_str){
                $set_uuid_arr = explode(',',$set_uuid_str);
                foreach ($set_uuid_arr as $set_uuid){
                    $nutritionNum = $this->model->inquiryCount(['set_uuid'=>$set_uuid,'is_del'=>1]);
                    $data['number'] = $nutritionNum;
                    $setRes = $this->modelSet->modifyByWhere(['uuid'=>$set_uuid],$data);
                    if($setRes === false){
                        throw new Exception("分类涉及营养品数更新失败");
                    }
                }
            }
            DB::commit();
        } catch (Exception $e) {
            DB::rollback();
            return  $res = ['code'=>1, 'message'=>$e->getMessage(), 'data'=>[]];
        }
        return $res = ['code'=>0, 'message'=>'', 'data'=> ''];
    }

    public function getSport()
    {
        $puuid = 0;
        $res = Db::name('sport')->where(['puuid' => $puuid])->field('uuid,puuid,name')->select();
        foreach ($res as $k => $v){
            $res[$k]['children'] = [];
            if (array_key_exists($v['uuid'],$this->sport_event_uuids)){
                $res[$k]['children'] = $this->sport_event_uuids[$v['uuid']];
            }
        }
        return ['code' => 0, 'message' => '获取成功', 'data' =>$res];
    }
    private function normalizeDictionaryCreateTime(array $row): array
    {
        if (ltrim((string)config('database.type'), '\\') !== \app\cores\database\Dm::class) {
            return $row;
        }
        $value = $row['create_time'] ?? null;
        if (is_string($value)
            && preg_match('/^((\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2}))\.0{1,6}$/D', $value, $match)
            && (int)$match[2] >= 1000 && checkdate((int)$match[3], (int)$match[4], (int)$match[2])
            && (int)$match[5] <= 23 && (int)$match[6] <= 59 && (int)$match[7] <= 59) {
            $row['create_time'] = $match[1];
        }
        return $row;
    }


}
