self::STEP_TWO_INFO, // self::LANGUAGE_EN => self::STEP_TWO_EN_INFO, // self::LANGUAGE_TW => self::STEP_TWO_TW_INFO, // ]; // const STEP_THREE_CONFIG = [ // self::LANGUAGE_CH => self::STEP_THREE_INFO, // self::LANGUAGE_EN => self::STEP_THREE_EN_INFO, // self::LANGUAGE_TW => self::STEP_THREE_TW_INFO, // ]; const STEP_TWO_INFO = [ "step_two_info" => [ 'stomach' => [ 'title' => '肠胃不适反应有哪些(必选)', 'isMultiple' => 1, 'must' => 1, 'ch_config' => [ ['key' => 'key1', 'name' => '没有不适', 'isDesc' => 0], ['key' => 'key2', 'name' => '恶心', 'isDesc' => 0], ['key' => 'key3', 'name' => '胃部反酸', 'isDesc' => 0], ['key' => 'key4', 'name' => '胃部疼痛', 'isDesc' => 0], ['key' => 'key5', 'name' => '便秘', 'isDesc' => 0], ['key' => 'key6', 'name' => '腹胀', 'isDesc' => 0], ['key' => 'key7', 'name' => '大便带血', 'isDesc' => 0], ['key' => 'key8', 'name' => '腹泻', 'isDesc' => 0], ['key' => 'key9', 'name' => '其他', 'isDesc' => 1], ], 'tw_config' => [ ['key' => 'key1', 'name' => '沒有不適', 'isDesc' => 0], ['key' => 'key2', 'name' => '惡心', 'isDesc' => 0], ['key' => 'key3', 'name' => '胃部反酸', 'isDesc' => 0], ['key' => 'key4', 'name' => '胃部疼痛', 'isDesc' => 0], ['key' => 'key5', 'name' => '便秘', 'isDesc' => 0], ['key' => 'key6', 'name' => '腹脹', 'isDesc' => 0], ['key' => 'key7', 'name' => '大便帶血', 'isDesc' => 0], ['key' => 'key8', 'name' => '腹瀉', 'isDesc' => 0], ['key' => 'key9', 'name' => '其他', 'isDesc' => 1], ], 'en_config' => [ ['key' => 'key1', 'name' => 'No discomfort', 'isDesc' => 0], ['key' => 'key2', 'name' => 'Nausea', 'isDesc' => 0], ['key' => 'key3', 'name' => 'Gastric acid reflux', 'isDesc' => 0], ['key' => 'key4', 'name' => 'Stomach pain', 'isDesc' => 0], ['key' => 'key5', 'name' => 'Constipation', 'isDesc' => 0], ['key' => 'key6', 'name' => 'Abdominal bloating', 'isDesc' => 0], ['key' => 'key7', 'name' => 'Blood in stool', 'isDesc' => 0], ['key' => 'key8', 'name' => 'Diarrhea', 'isDesc' => 0], ['key' => 'key9', 'name' => 'Others', 'isDesc' => 1], ], ], 'heart' => [ 'title' => '心脏不适有哪些(必选)', 'isMultiple' => 1, 'must' => 1, 'ch_config' => [ ['key' => 'key1', 'name' => '没有不适', 'isDesc' => 0], ['key' => 'key2', 'name' => '心慌,心悸', 'isDesc' => 0], ['key' => 'key3', 'name' => '心率异常', 'isDesc' => 0], ['key' => 'key4', 'name' => '胸闷', 'isDesc' => 0], ['key' => 'key5', 'name' => '呼吸急促', 'isDesc' => 0], ['key' => 'key6', 'name' => '头晕', 'isDesc' => 0], ['key' => 'key7', 'name' => '打鼾', 'isDesc' => 0], ['key' => 'key8', 'name' => '其他', 'isDesc' => 1], ], 'tw_config' => [ ['key' => 'key1', 'name' => '沒有不適', 'isDesc' => 0], ['key' => 'key2', 'name' => '心慌,心悸', 'isDesc' => 0], ['key' => 'key3', 'name' => '心率異常', 'isDesc' => 0], ['key' => 'key4', 'name' => '胸悶', 'isDesc' => 0], ['key' => 'key5', 'name' => '呼吸急促', 'isDesc' => 0], ['key' => 'key6', 'name' => '頭暈', 'isDesc' => 0], ['key' => 'key7', 'name' => '打鼾', 'isDesc' => 0], ['key' => 'key8', 'name' => '其他', 'isDesc' => 1], ], 'en_config' => [ ['key' => 'key1', 'name' => 'No discomfort', 'isDesc' => 0], ['key' => 'key2', 'name' => 'Palpitations', 'isDesc' => 0], ['key' => 'key3', 'name' => 'Irregular heart rate', 'isDesc' => 0], ['key' => 'key4', 'name' => 'Chest tightness', 'isDesc' => 0], ['key' => 'key5', 'name' => 'Shortness of breath', 'isDesc' => 0], ['key' => 'key6', 'name' => 'Dizziness', 'isDesc' => 0], ['key' => 'key7', 'name' => 'Snoring', 'isDesc' => 0], ['key' => 'key8', 'name' => 'Others', 'isDesc' => 1], ], ], 'sleep' => [ 'title' => '睡眠相关不适反应有哪些(必选)', 'isMultiple' => 1, 'must' => 1, 'ch_config' => [ ['key' => 'key1', 'name' => '没有不适', 'isDesc' => 0], ['key' => 'key2', 'name' => '失眠', 'isDesc' => 0], ['key' => 'key3', 'name' => '入睡困难', 'isDesc' => 0], ['key' => 'key4', 'name' => '浅度睡眠', 'isDesc' => 0], ['key' => 'key5', 'name' => '视觉疲劳', 'isDesc' => 0], ['key' => 'key6', 'name' => '反应迟钝', 'isDesc' => 0], ['key' => 'key7', 'name' => '记忆力衰退', 'isDesc' => 0], ['key' => 'key8', 'name' => '焦虑', 'isDesc' => 0], ['key' => 'key9', 'name' => '困倦疲惫', 'isDesc' => 0], ['key' => 'key10', 'name' => '其他', 'isDesc' => 1], ], 'tw_config' => [ ['key' => 'key1', 'name' => '沒有不適', 'isDesc' => 0], ['key' => 'key2', 'name' => '失眠', 'isDesc' => 0], ['key' => 'key3', 'name' => '入睡困難', 'isDesc' => 0], ['key' => 'key4', 'name' => '淺度睡眠', 'isDesc' => 0], ['key' => 'key5', 'name' => '視覺疲勞', 'isDesc' => 0], ['key' => 'key6', 'name' => '反應遲鈍', 'isDesc' => 0], ['key' => 'key7', 'name' => '記憶力衰退', 'isDesc' => 0], ['key' => 'key8', 'name' => '焦慮', 'isDesc' => 0], ['key' => 'key9', 'name' => '困倦疲憊', 'isDesc' => 0], ['key' => 'key10', 'name' => '其他', 'isDesc' => 1], ], 'en_config' => [ ['key' => 'key1', 'name' => 'No discomfort', 'isDesc' => 0], ['key' => 'key2', 'name' => 'Insomnia', 'isDesc' => 0], ['key' => 'key3', 'name' => 'Difficulty falling asleep', 'isDesc' => 0], ['key' => 'key4', 'name' => 'Shallow sleep', 'isDesc' => 0], ['key' => 'key5', 'name' => 'Visual fatigue', 'isDesc' => 0], ['key' => 'key6', 'name' => 'Delayed reaction', 'isDesc' => 0], ['key' => 'key7', 'name' => 'Memory decline', 'isDesc' => 0], ['key' => 'key8', 'name' => 'Anxiety', 'isDesc' => 0], ['key' => 'key9', 'name' => 'Fatigue', 'isDesc' => 0], ['key' => 'key10', 'name' => 'Others', 'isDesc' => 1], ], ], 'man' => [ 'title' => '目前男科问题有哪些(必选)', 'isMultiple' => 1, 'must' => 1, 'ch_config' => [ ['key' => 'key1', 'name' => '没有不适', 'isDesc' => 0], ['key' => 'key2', 'name' => '不孕不育', 'isDesc' => 0], ['key' => 'key3', 'name' => '尿频尿急', 'isDesc' => 0], ['key' => 'key4', 'name' => '小腹胀痛', 'isDesc' => 0], ['key' => 'key5', 'name' => '其他', 'isDesc' => 1], ], 'tw_config' => [ ['key' => 'key1', 'name' => '沒有不適', 'isDesc' => 0], ['key' => 'key2', 'name' => '不孕不育', 'isDesc' => 0], ['key' => 'key3', 'name' => '尿頻尿急', 'isDesc' => 0], ['key' => 'key4', 'name' => '小腹脹痛', 'isDesc' => 0], ['key' => 'key5', 'name' => '其他', 'isDesc' => 1], ], 'en_config' => [ ['key' => 'key1', 'name' => 'No discomfort', 'isDesc' => 0], ['key' => 'key2', 'name' => 'Infertility', 'isDesc' => 0], ['key' => 'key3', 'name' => 'Frequent urination', 'isDesc' => 0], ['key' => 'key4', 'name' => 'Lower abdominal pain', 'isDesc' => 0], ['key' => 'key5', 'name' => 'Others', 'isDesc' => 1], ], ], 'other' => [ 'title' => '其他不适有哪些(必选)', 'isMultiple' => 1, 'must' => 1, 'ch_config' => [ ['key' => 'key1', 'name' => '没有不适', 'isDesc' => 0], ['key' => 'key2', 'name' => '呼吸系统不好', 'isDesc' => 0], ['key' => 'key3', 'name' => '鼻炎', 'isDesc' => 0], ['key' => 'key4', 'name' => '腰酸背痛', 'isDesc' => 0], ['key' => 'key5', 'name' => '肌肉酸痛', 'isDesc' => 0], ['key' => 'key6', 'name' => '容易感冒', 'isDesc' => 0], ['key' => 'key7', 'name' => '虚弱无力', 'isDesc' => 0], ['key' => 'key8', 'name' => '无食欲', 'isDesc' => 0], ['key' => 'key9', 'name' => '容易感染', 'isDesc' => 0], ['key' => 'key10', 'name' => '皮肤问题', 'isDesc' => 0], ['key' => 'key11', 'name' => '哮踹', 'isDesc' => 0], ['key' => 'key12', 'name' => '耳鸣', 'isDesc' => 0], ['key' => 'key13', 'name' => '咳嗽', 'isDesc' => 0], ['key' => 'key14', 'name' => '水肿', 'isDesc' => 0], ['key' => 'key15', 'name' => '反应迟钝', 'isDesc' => 0], ['key' => 'key16', 'name' => '其他', 'isDesc' => 1], ], 'tw_config' => [ ['key' => 'key1', 'name' => '沒有不適', 'isDesc' => 0], ['key' => 'key2', 'name' => '呼吸系統不好', 'isDesc' => 0], ['key' => 'key3', 'name' => '鼻炎', 'isDesc' => 0], ['key' => 'key4', 'name' => '腰酸背痛', 'isDesc' => 0], ['key' => 'key5', 'name' => '肌肉酸痛', 'isDesc' => 0], ['key' => 'key6', 'name' => '容易感冒', 'isDesc' => 0], ['key' => 'key7', 'name' => '虛弱無力', 'isDesc' => 0], ['key' => 'key8', 'name' => '無食慾', 'isDesc' => 0], ['key' => 'key9', 'name' => '容易感染', 'isDesc' => 0], ['key' => 'key10', 'name' => '皮膚問題', 'isDesc' => 0], ['key' => 'key11', 'name' => '哮踹', 'isDesc' => 0], ['key' => 'key12', 'name' => '耳鳴', 'isDesc' => 0], ['key' => 'key13', 'name' => '咳嗽', 'isDesc' => 0], ['key' => 'key14', 'name' => '水腫', 'isDesc' => 0], ['key' => 'key15', 'name' => '反應遲鈍', 'isDesc' => 0], ['key' => 'key16', 'name' => '其他', 'isDesc' => 1], ], 'en_config' => [ ['key' => 'key1', 'name' => 'No discomfort', 'isDesc' => 0], ['key' => 'key2', 'name' => 'Poor respiratory system', 'isDesc' => 0], ['key' => 'key3', 'name' => 'Rhinitis', 'isDesc' => 0], ['key' => 'key4', 'name' => 'Lower back pain', 'isDesc' => 0], ['key' => 'key5', 'name' => 'Muscle soreness', 'isDesc' => 0], ['key' => 'key6', 'name' => 'Frequent colds', 'isDesc' => 0], ['key' => 'key7', 'name' => 'Weakness and fatigue', 'isDesc' => 0], ['key' => 'key8', 'name' => 'Loss of appetite', 'isDesc' => 0], ['key' => 'key9', 'name' => 'Susceptibility to infections', 'isDesc' => 0], ['key' => 'key10', 'name' => 'Skin problems', 'isDesc' => 0], ['key' => 'key11', 'name' => 'Asthma', 'isDesc' => 0], ['key' => 'key12', 'name' => 'Tinnitus', 'isDesc' => 0], ['key' => 'key13', 'name' => 'Cough', 'isDesc' => 0], ['key' => 'key14', 'name' => 'Edema', 'isDesc' => 0], ['key' => 'key15', 'name' => 'Delayed reaction', 'isDesc' => 0], ['key' => 'key16', 'name' => 'Others', 'isDesc' => 1], ], ], 'dietary' => [ 'title' => '您的饮食习惯(必选)', 'isMultiple' => 1, 'must' => 1, 'ch_config' => [ ['key' => 'key1', 'name' => '一日三餐规律饮食', 'isDesc' => 0], ['key' => 'key2', 'name' => '饿了就吃', 'isDesc' => 0], ['key' => 'key3', 'name' => '偏好主食', 'isDesc' => 0], ['key' => 'key4', 'name' => '偏好蔬菜水果', 'isDesc' => 0], ['key' => 'key5', 'name' => '偏好肉类', 'isDesc' => 0], ['key' => 'key6', 'name' => '偏好甜食', 'isDesc' => 0], ['key' => 'key7', 'name' => '高盐高油', 'isDesc' => 0], ['key' => 'key8', 'name' => '其他', 'isDesc' => 1], ], 'tw_config' => [ ['key' => 'key1', 'name' => '一日三餐規律飲食', 'isDesc' => 0], ['key' => 'key2', 'name' => '餓了就吃', 'isDesc' => 0], ['key' => 'key3', 'name' => '偏好主食', 'isDesc' => 0], ['key' => 'key4', 'name' => '偏好蔬菜水果', 'isDesc' => 0], ['key' => 'key5', 'name' => '偏好肉類', 'isDesc' => 0], ['key' => 'key6', 'name' => '偏好甜食', 'isDesc' => 0], ['key' => 'key7', 'name' => '高鹽高油', 'isDesc' => 0], ['key' => 'key8', 'name' => '其他', 'isDesc' => 1], ], 'en_config' => [ ['key' => 'key1', 'name' => 'Regular three meals a day', 'isDesc' => 0], ['key' => 'key2', 'name' => 'Eat when hungry', 'isDesc' => 0], ['key' => 'key3', 'name' => 'Preference for staple foods', 'isDesc' => 0], ['key' => 'key4', 'name' => 'Preference for vegetables and fruits', 'isDesc' => 0], ['key' => 'key5', 'name' => 'Preference for meat', 'isDesc' => 0], ['key' => 'key6', 'name' => 'Preference for sweets', 'isDesc' => 0], ['key' => 'key7', 'name' => 'High salt and oil intake', 'isDesc' => 0], ['key' => 'key8', 'name' => 'Others', 'isDesc' => 1], ], ], 'living' => [ 'title' => '您的生活习惯(必选)', 'isMultiple' => 1, 'must' => 1, 'ch_config' => [ ['key' => 'key1', 'name' => '抽烟', 'isDesc' => 0], ['key' => 'key2', 'name' => '喝酒', 'isDesc' => 0], ['key' => 'key3', 'name' => '规律睡眠', 'isDesc' => 0], ['key' => 'key4', 'name' => '经常熬夜', 'isDesc' => 0], ['key' => 'key5', 'name' => '经常运动', 'isDesc' => 0], ['key' => 'key6', 'name' => '偶尔运动', 'isDesc' => 0], ['key' => 'key7', 'name' => '几乎不运动', 'isDesc' => 0], ['key' => 'key8', 'name' => '其他', 'isDesc' => 1], ], 'tw_config' => [ ['key' => 'key1', 'name' => '抽煙', 'isDesc' => 0], ['key' => 'key2', 'name' => '喝酒', 'isDesc' => 0], ['key' => 'key3', 'name' => '規律睡眠', 'isDesc' => 0], ['key' => 'key4', 'name' => '經常熬夜', 'isDesc' => 0], ['key' => 'key5', 'name' => '經常運動', 'isDesc' => 0], ['key' => 'key6', 'name' => '偶爾運動', 'isDesc' => 0], ['key' => 'key7', 'name' => '幾乎不運動', 'isDesc' => 0], ['key' => 'key8', 'name' => '其他', 'isDesc' => 1], ], 'en_config' => [ ['key' => 'key1', 'name' => 'Smoking', 'isDesc' => 0], ['key' => 'key2', 'name' => 'Drinking', 'isDesc' => 0], ['key' => 'key3', 'name' => 'Regular sleep', 'isDesc' => 0], ['key' => 'key4', 'name' => 'Frequent staying up late', 'isDesc' => 0], ['key' => 'key5', 'name' => 'Regular exercise', 'isDesc' => 0], ['key' => 'key6', 'name' => 'Occasional exercise', 'isDesc' => 0], ['key' => 'key7', 'name' => 'Rarely exercise', 'isDesc' => 0], ['key' => 'key8', 'name' => 'Others', 'isDesc' => 1], ], ], 'mental' => [ 'title' => '您目前精神心理状态有哪些(必选)', 'isMultiple' => 1, 'must' => 1, 'ch_config' => [ ['key' => 'key1', 'name' => '经常感到职场压力', 'isDesc' => 0], ['key' => 'key2', 'name' => '经常感到夫妻关系压力', 'isDesc' => 0], ['key' => 'key3', 'name' => '经常感到父母关系压力', 'isDesc' => 0], ['key' => 'key4', 'name' => '经常感到亲子关系压力', 'isDesc' => 0], ['key' => 'key5', 'name' => '经常感到焦虑', 'isDesc' => 0], ['key' => 'key6', 'name' => '经常无故冲动', 'isDesc' => 0], ['key' => 'key7', 'name' => '经常处于心平气和的状态', 'isDesc' => 0], ['key' => 'key8', 'name' => '面对问题,能够快速的找到解决的办法', 'isDesc' => 0], ['key' => 'key9', 'name' => '开心愉悦', 'isDesc' => 0], ['key' => 'key10', 'name' => '其他', 'isDesc' => 1], ], 'tw_config' => [ ['key' => 'key1', 'name' => '經常感到職場壓力', 'isDesc' => 0], ['key' => 'key2', 'name' => '經常感到夫妻關係壓力', 'isDesc' => 0], ['key' => 'key3', 'name' => '經常感到父母關係壓力', 'isDesc' => 0], ['key' => 'key4', 'name' => '經常感到親子關係壓力', 'isDesc' => 0], ['key' => 'key5', 'name' => '經常感到焦慮', 'isDesc' => 0], ['key' => 'key6', 'name' => '經常無故衝動', 'isDesc' => 0], ['key' => 'key7', 'name' => '經常處於心平氣和的狀態', 'isDesc' => 0], ['key' => 'key8', 'name' => '面對問題,能夠快速的找到解決的辦法', 'isDesc' => 0], ['key' => 'key9', 'name' => '開心愉悅', 'isDesc' => 0], ['key' => 'key10', 'name' => '其他', 'isDesc' => 1], ], 'en_config' => [ ['key' => 'key1', 'name' => 'Frequent workplace stress', 'isDesc' => 0], ['key' => 'key2', 'name' => 'Frequent marital stress', 'isDesc' => 0], ['key' => 'key3', 'name' => 'Frequent parental stress', 'isDesc' => 0], ['key' => 'key4', 'name' => 'Frequent parent-child relationship stress', 'isDesc' => 0], ['key' => 'key5', 'name' => 'Frequent anxiety', 'isDesc' => 0], ['key' => 'key6', 'name' => 'Frequent impulsive behavior', 'isDesc' => 0], ['key' => 'key7', 'name' => 'Often in a calm state', 'isDesc' => 0], ['key' => 'key8', 'name' => 'Able to quickly find solutions to problems', 'isDesc' => 0], ['key' => 'key9', 'name' => 'Happy and content', 'isDesc' => 0], ['key' => 'key10', 'name' => 'Others', 'isDesc' => 1], ], ], 'family' => [ 'title' => '您目前家庭关系有哪些(必选)', 'isMultiple' => 1, 'must' => 1, 'ch_config' => [ ['key' => 'key1', 'name' => '夫妻关系和睦', 'isDesc' => 0], ['key' => 'key2', 'name' => '亲子关系和睦', 'isDesc' => 0], ['key' => 'key3', 'name' => '我与父母关系和睦', 'isDesc' => 0], ['key' => 'key4', 'name' => '夫妻关系不和睦', 'isDesc' => 0], ['key' => 'key5', 'name' => '亲子关系不和睦', 'isDesc' => 0], ['key' => 'key6', 'name' => '我与父母关系不和睦', 'isDesc' => 0], ['key' => 'key7', 'name' => '其他', 'isDesc' => 1], ], 'tw_config' => [ ['key' => 'key1', 'name' => '夫妻關係和睦', 'isDesc' => 0], ['key' => 'key2', 'name' => '親子關係和睦', 'isDesc' => 0], ['key' => 'key3', 'name' => '我與父母關係和睦', 'isDesc' => 0], ['key' => 'key4', 'name' => '夫妻關係不和睦', 'isDesc' => 0], ['key' => 'key5', 'name' => '親子關係不和睦', 'isDesc' => 0], ['key' => 'key6', 'name' => '我與父母關係不和睦', 'isDesc' => 0], ['key' => 'key7', 'name' => '其他', 'isDesc' => 1], ], 'en_config' => [ ['key' => 'key1', 'name' => 'Harmonious marital relationship', 'isDesc' => 0], ['key' => 'key2', 'name' => 'Harmonious parent-child relationship', 'isDesc' => 0], ['key' => 'key3', 'name' => 'Harmonious relationship with parents', 'isDesc' => 0], ['key' => 'key4', 'name' => 'Unharmonious marital relationship', 'isDesc' => 0], ['key' => 'key5', 'name' => 'Unharmonious parent-child relationship', 'isDesc' => 0], ['key' => 'key6', 'name' => 'Unharmonious relationship with parents', 'isDesc' => 0], ['key' => 'key7', 'name' => 'Others', 'isDesc' => 1], ], ], 'family_member' => [ 'title' => '您家庭成员有哪些(必选)', 'isMultiple' => 1, 'must' => 1, 'ch_config' => [ ['key' => 'key1', 'name' => '一个孩子', 'isDesc' => 0], ['key' => 'key2', 'name' => '两个孩子', 'isDesc' => 0], ['key' => 'key3', 'name' => '三个孩子及以上', 'isDesc' => 0], ['key' => 'key4', 'name' => '父亲', 'isDesc' => 0], ['key' => 'key5', 'name' => '母亲', 'isDesc' => 0], ['key' => 'key6', 'name' => '丈夫', 'isDesc' => 0], ['key' => 'key7', 'name' => '妻子', 'isDesc' => 0], ['key' => 'key8', 'name' => '其他', 'isDesc' => 1], ], 'tw_config' => [ ['key' => 'key1', 'name' => '一個孩子', 'isDesc' => 0], ['key' => 'key2', 'name' => '兩個孩子', 'isDesc' => 0], ['key' => 'key3', 'name' => '三個孩子及以上', 'isDesc' => 0], ['key' => 'key4', 'name' => '父親', 'isDesc' => 0], ['key' => 'key5', 'name' => '母親', 'isDesc' => 0], ['key' => 'key6', 'name' => '丈夫', 'isDesc' => 0], ['key' => 'key7', 'name' => '妻子', 'isDesc' => 0], ['key' => 'key8', 'name' => '其他', 'isDesc' => 1], ], 'en_config' => [ ['key' => 'key1', 'name' => 'One child', 'isDesc' => 0], ['key' => 'key2', 'name' => 'Two children', 'isDesc' => 0], ['key' => 'key3', 'name' => 'Three or more children', 'isDesc' => 0], ['key' => 'key4', 'name' => 'Father', 'isDesc' => 0], ['key' => 'key5', 'name' => 'Mother', 'isDesc' => 0], ['key' => 'key6', 'name' => 'Husband', 'isDesc' => 0], ['key' => 'key7', 'name' => 'Wife', 'isDesc' => 0], ['key' => 'key8', 'name' => 'Others', 'isDesc' => 1], ], ], 'personal' => [ 'title' => '个人情况(必选)', 'isMultiple' => 1, 'must' => 1, 'ch_config' => [ ['key' => 'key1', 'name' => '已婚', 'isDesc' => 0], ['key' => 'key2', 'name' => '未婚', 'isDesc' => 0], ['key' => 'key3', 'name' => '离异', 'isDesc' => 0], ['key' => 'key4', 'name' => '丧偶', 'isDesc' => 0], ['key' => 'key5', 'name' => '财务方面压力较大', 'isDesc' => 0], ['key' => 'key6', 'name' => '财务方面压力较小', 'isDesc' => 0], ['key' => 'key7', 'name' => '财务方面毫无压力', 'isDesc' => 0], ['key' => 'key8', 'name' => '其他', 'isDesc' => 1], ], 'tw_config' => [ ['key' => 'key1', 'name' => '已婚', 'isDesc' => 0], ['key' => 'key2', 'name' => '未婚', 'isDesc' => 0], ['key' => 'key3', 'name' => '離異', 'isDesc' => 0], ['key' => 'key4', 'name' => '喪偶', 'isDesc' => 0], ['key' => 'key5', 'name' => '財務方面壓力較大', 'isDesc' => 0], ['key' => 'key6', 'name' => '財務方面壓力較小', 'isDesc' => 0], ['key' => 'key7', 'name' => '財務方面毫無壓力', 'isDesc' => 0], ['key' => 'key8', 'name' => '其他', 'isDesc' => 1], ], 'en_config' => [ ['key' => 'key1', 'name' => 'Married', 'isDesc' => 0], ['key' => 'key2', 'name' => 'Unmarried', 'isDesc' => 0], ['key' => 'key3', 'name' => 'Divorced', 'isDesc' => 0], ['key' => 'key4', 'name' => 'Widowed', 'isDesc' => 0], ['key' => 'key5', 'name' => 'High financial pressure', 'isDesc' => 0], ['key' => 'key6', 'name' => 'Low financial pressure', 'isDesc' => 0], ['key' => 'key7', 'name' => 'No financial pressure', 'isDesc' => 0], ['key' => 'key8', 'name' => 'Others', 'isDesc' => 1], ], ], 'woman' => [ 'title' => '目前妇科问题有哪些(必选)', 'isMultiple' => 1, 'must' => 1, 'ch_config' => [ ['key' => 'key1', 'name' => '没有不适', 'isDesc' => 0], ['key' => 'key2', 'name' => '月经不规律', 'isDesc' => 0], ['key' => 'key3', 'name' => '月经紊乱', 'isDesc' => 0], ['key' => 'key4', 'name' => '已绝经', 'isDesc' => 0], ['key' => 'key5', 'name' => '白带增多异常', 'isDesc' => 0], ['key' => 'key6', 'name' => '尿频尿急', 'isDesc' => 0], ['key' => 'key7', 'name' => '不孕不育', 'isDesc' => 0], ['key' => 'key8', 'name' => '小腹胀痛', 'isDesc' => 0], ['key' => 'key9', 'name' => '子宫肌瘤', 'isDesc' => 0], ['key' => 'key10', 'name' => '其他', 'isDesc' => 1], ], 'tw_config' => [ ['key' => 'key1', 'name' => '沒有不適', 'isDesc' => 0], ['key' => 'key2', 'name' => '月經不規律', 'isDesc' => 0], ['key' => 'key3', 'name' => '月經紊亂', 'isDesc' => 0], ['key' => 'key4', 'name' => '已絕經', 'isDesc' => 0], ['key' => 'key5', 'name' => '白帶增多異常', 'isDesc' => 0], ['key' => 'key6', 'name' => '尿頻尿急', 'isDesc' => 0], ['key' => 'key7', 'name' => '不孕不育', 'isDesc' => 0], ['key' => 'key8', 'name' => '小腹脹痛', 'isDesc' => 0], ['key' => 'key9', 'name' => '子宮肌瘤', 'isDesc' => 0], ['key' => 'key10', 'name' => '其他', 'isDesc' => 1], ], 'en_config' => [ ['key' => 'key1', 'name' => 'No discomfort', 'isDesc' => 0], ['key' => 'key2', 'name' => 'Irregular menstruation', 'isDesc' => 0], ['key' => 'key3', 'name' => 'Menstrual disorder', 'isDesc' => 0], ['key' => 'key4', 'name' => 'Menopause', 'isDesc' => 0], ['key' => 'key5', 'name' => 'Increased abnormal vaginal discharge', 'isDesc' => 0], ['key' => 'key6', 'name' => 'Frequent urination', 'isDesc' => 0], ['key' => 'key7', 'name' => 'Infertility', 'isDesc' => 0], ['key' => 'key8', 'name' => 'Lower abdominal pain', 'isDesc' => 0], ['key' => 'key9', 'name' => 'Uterine fibroids', 'isDesc' => 0], ['key' => 'key10', 'name' => 'Others', 'isDesc' => 1], ], ], 'know' => [ 'title' => '目前妇科问题有哪些(必选)', 'isMultiple' => 1, 'must' => 1, 'ch_config' => [ ['key' => 'key1', 'name' => '完全知悉', 'isDesc' => 0], ['key' => 'key2', 'name' => '不知悉、不理解', 'isDesc' => 0], ], ], 'understand' => [ 'title' => '目前妇科问题有哪些(必选)', 'isMultiple' => 1, 'must' => 1, 'ch_config' => [ ['key' => 'key1', 'name' => '充分理解', 'isDesc' => 0], ['key' => 'key2', 'name' => '不理解', 'isDesc' => 0], ], ], 'really' => [ 'title' => '目前妇科问题有哪些(必选)', 'isMultiple' => 1, 'must' => 1, 'ch_config' => [ ['key' => 'key1', 'name' => '是', 'isDesc' => 0], ['key' => 'key2', 'name' => '否', 'isDesc' => 0], ], ], 'duty' => [ 'title' => '目前妇科问题有哪些(必选)', 'isMultiple' => 1, 'must' => 1, 'ch_config' => [ ['key' => 'key1', 'name' => '是', 'isDesc' => 0], ['key' => 'key2', 'name' => '否', 'isDesc' => 0], ], ], ], 'step_three_info' => [ 'blood_pressure' => [ 'title' => '血压', 'isMultiple' => 1, 'must' => 0, 'ch_config' => [ ['key' => 'sbp', 'name' => '收缩压', 'isDesc' => 0], ['key' => 'dbp', 'name' => '舒张压', 'isDesc' => 0], ], 'tw_config' => [ ['key' => 'sbp', 'name' => '收縮壓', 'isDesc' => 0], ['key' => 'dbp', 'name' => '舒張壓', 'isDesc' => 0], ], 'en_config' => [ ['key' => 'sbp', 'name' => 'Systolic blood pressure', 'isDesc' => 0], ['key' => 'dbp', 'name' => 'Diastolic pressure', 'isDesc' => 0], ], ], 'blood_sugar' => [ 'title' => '糖检测', 'isMultiple' => 1, 'must' => 0, 'ch_config' => [ ['key' => 'fbg', 'name' => '空腹血糖', 'isDesc' => 0], ], 'tw_config' => [ ['key' => 'fbg', 'name' => '空腹血糖', 'isDesc' => 0], ], 'en_config' => [ ['key' => 'fbg', 'name' => 'Fasting blood sugar', 'isDesc' => 0], ], ], 'urinalysis' => [ 'title' => '肾功能检测', 'isMultiple' => 1, 'must' => 0, 'ch_config' => [ ['key' => 'urea', 'name' => '尿素', 'isDesc' => 0], ['key' => 'cre', 'name' => '肌酐', 'isDesc' => 0], ['key' => 'ua', 'name' => '尿酸', 'isDesc' => 0], ['key' => 'cvsc', 'name' => '胱抑素C', 'isDesc' => 0], ], 'tw_config' => [ ['key' => 'urea', 'name' => '尿素', 'isDesc' => 0], ['key' => 'cre', 'name' => '肌酐', 'isDesc' => 0], ['key' => 'ua', 'name' => '尿酸', 'isDesc' => 0], ['key' => 'cvsc', 'name' => '胱抑素C', 'isDesc' => 0], ], 'en_config' => [ ['key' => 'urea', 'name' => 'Urea', 'isDesc' => 0], ['key' => 'cre', 'name' => 'Creatinine', 'isDesc' => 0], ['key' => 'ua', 'name' => 'Uric acid', 'isDesc' => 0], ['key' => 'cvsc', 'name' => 'Cystatin C', 'isDesc' => 0], ], ], 'blood_fat' => [ 'title' => '血脂四项检查', 'isMultiple' => 1, 'must' => 0, 'ch_config' => [ ['key' => 'tc', 'name' => '总胆固醇', 'isDesc' => 0], ['key' => 'tg', 'name' => '甘油三酯', 'isDesc' => 0], ['key' => 'hdl', 'name' => '高密度脂蛋白', 'isDesc' => 0], ['key' => 'ldl', 'name' => '低密度脂蛋白', 'isDesc' => 0], ], 'tw_config' => [ ['key' => 'tc', 'name' => '總膽固醇', 'isDesc' => 0], ['key' => 'tg', 'name' => '甘油三酯', 'isDesc' => 0], ['key' => 'hdl', 'name' => '高密度脂蛋白', 'isDesc' => 0], ['key' => 'ldl', 'name' => '低密度脂蛋白', 'isDesc' => 0], ], 'en_config' => [ ['key' => 'tc', 'name' => 'Total cholesterol', 'isDesc' => 0], ['key' => 'tg', 'name' => 'Triglycerides', 'isDesc' => 0], ['key' => 'hdl', 'name' => 'HDL', 'isDesc' => 0], ['key' => 'ldl', 'name' => 'LDL', 'isDesc' => 0], ], ], 'blood_routine' => [ 'title' => '血常规/分类', 'isMultiple' => 1, 'must' => 0, 'ch_config' => [ ['key' => 'wbc', 'name' => '白细胞计数', 'isDesc' => 0], ['key' => 'mch', 'name' => '平均RBC血红蛋白', 'isDesc' => 0], ['key' => 'rbc', 'name' => '红细胞计数', 'isDesc' => 0], ['key' => 'rdw', 'name' => 'RBC分布宽度标准差', 'isDesc' => 0], ['key' => 'hct', 'name' => '红细胞比积', 'isDesc' => 0], ['key' => 'mchc', 'name' => '平均RBC血红蛋白浓度', 'isDesc' => 0], ['key' => 'plt', 'name' => '血小板计数', 'isDesc' => 0], ['key' => 'rdwcv', 'name' => 'RBC分布宽度变异系数', 'isDesc' => 0], ['key' => 'pct', 'name' => '血小板比积', 'isDesc' => 0], ['key' => 'pdw', 'name' => '血小板体积分布宽带', 'isDesc' => 0], ['key' => 'ly', 'name' => '淋巴细胞计数', 'isDesc' => 0], ['key' => 'eos', 'name' => '嗜酸粒细胞计数', 'isDesc' => 0], ['key' => 'plcr', 'name' => '大血小板比率', 'isDesc' => 0], ['key' => 'eos_p', 'name' => '嗜酸睡粒细胞比值', 'isDesc' => 0], ['key' => 'mono', 'name' => '单核细胞计数', 'isDesc' => 0], ['key' => 'gr', 'name' => '中性粒细胞计数', 'isDesc' => 0], ['key' => 'mono_p', 'name' => '单核细胞比值', 'isDesc' => 0], ['key' => 'gr_p', 'name' => '中性粒细胞比值', 'isDesc' => 0], ['key' => 'ly_p', 'name' => '淋巴细胞比值', 'isDesc' => 0], ['key' => 'baso', 'name' => '嗜碱性粒细胞计数', 'isDesc' => 0], ['key' => 'mcv', 'name' => '平均RBC体积', 'isDesc' => 0], ['key' => 'baso_p', 'name' => '嗜碱性粒细胞比值', 'isDesc' => 0], ['key' => 'hgb', 'name' => '血红蛋白', 'isDesc' => 0], ['key' => 'mpv', 'name' => '平均血小板体积', 'isDesc' => 0], ], 'tw_config' => [ ['key' => 'wbc', 'name' => '白細胞計數', 'isDesc' => 0], ['key' => 'mch', 'name' => '平均RBC血紅蛋白', 'isDesc' => 0], ['key' => 'rbc', 'name' => '紅細胞計數', 'isDesc' => 0], ['key' => 'rdw', 'name' => 'RBC分佈寬度標準差', 'isDesc' => 0], ['key' => 'hct', 'name' => '紅細胞比積', 'isDesc' => 0], ['key' => 'mchc', 'name' => '平均RBC血紅蛋白濃度', 'isDesc' => 0], ['key' => 'plt', 'name' => '血小板計數', 'isDesc' => 0], ['key' => 'rdwcv', 'name' => 'RBC分佈寬度變異係數', 'isDesc' => 0], ['key' => 'pct', 'name' => '血小板比積', 'isDesc' => 0], ['key' => 'pdw', 'name' => '血小板體積分佈寬帶', 'isDesc' => 0], ['key' => 'ly', 'name' => '淋巴細胞計數', 'isDesc' => 0], ['key' => 'eos', 'name' => '嗜酸粒細胞計數', 'isDesc' => 0], ['key' => 'plcr', 'name' => '大血小板比率', 'isDesc' => 0], ['key' => 'eos_p', 'name' => '嗜酸睡粒細胞比值', 'isDesc' => 0], ['key' => 'mono', 'name' => '單核細胞計數', 'isDesc' => 0], ['key' => 'gr', 'name' => '中性粒細胞計數', 'isDesc' => 0], ['key' => 'mono_p', 'name' => '單核細胞比值', 'isDesc' => 0], ['key' => 'gr_p', 'name' => '中性粒細胞比值', 'isDesc' => 0], ['key' => 'ly_p', 'name' => '淋巴細胞比值', 'isDesc' => 0], ['key' => 'baso', 'name' => '嗜鹼性粒細胞計數', 'isDesc' => 0], ['key' => 'mcv', 'name' => '平均RBC體積', 'isDesc' => 0], ['key' => 'baso_p', 'name' => '嗜鹼性粒細胞比值', 'isDesc' => 0], ['key' => 'hgb', 'name' => '血紅蛋白', 'isDesc' => 0], ['key' => 'mpv', 'name' => '平均血小板體積', 'isDesc' => 0], ], 'en_config' => [ ['key' => 'wbc', 'name' => 'White blood cell count', 'isDesc' => 0], ['key' => 'mch', 'name' => 'Average RBC hemoglobin volume', 'isDesc' => 0], ['key' => 'rbc', 'name' => 'Red blood cell count', 'isDesc' => 0], ['key' => 'rdw', 'name' => 'RBC distribution width standard deviation', 'isDesc' => 0], ['key' => 'hct', 'name' => 'Hematocrit', 'isDesc' => 0], ['key' => 'mchc', 'name' => 'Average RBC hemoglobin concentration', 'isDesc' => 0], ['key' => 'plt', 'name' => 'Platelet count', 'isDesc' => 0], ['key' => 'rdwcv', 'name' => 'RBC distribution width coefficient of variation', 'isDesc' => 0], ['key' => 'pct', 'name' => 'Platelet specific product', 'isDesc' => 0], ['key' => 'pdw', 'name' => 'Broadband of platelet', 'isDesc' => 0], ['key' => 'ly', 'name' => 'Lymphocyte count', 'isDesc' => 0], ['key' => 'eos', 'name' => 'Eosinophil count', 'isDesc' => 0], ['key' => 'plcr', 'name' => 'Large platelet ratio', 'isDesc' => 0], ['key' => 'eos_p', 'name' => 'Eosinophilic sleeping granulocyte ratio', 'isDesc' => 0], ['key' => 'mono', 'name' => 'Monocyte count', 'isDesc' => 0], ['key' => 'gr', 'name' => 'Neutrophil count', 'isDesc' => 0], ['key' => 'mono_p', 'name' => 'Monocyte ratio', 'isDesc' => 0], ['key' => 'gr_p', 'name' => 'Neutrophil ratio', 'isDesc' => 0], ['key' => 'ly_p', 'name' => 'Lymphocyte ratio', 'isDesc' => 0], ['key' => 'baso', 'name' => 'Basophil count', 'isDesc' => 0], ['key' => 'mcv', 'name' => 'Average RBC volume', 'isDesc' => 0], ['key' => 'baso_p', 'name' => 'Basophil ratio', 'isDesc' => 0], ['key' => 'hgb', 'name' => 'Hemoglobin', 'isDesc' => 0], ['key' => 'mpv', 'name' => 'Mean platelet volume', 'isDesc' => 0], ], ], ], ]; const STEP_CONFIG_KEY = [ 'stomach', 'heart', 'sleep', 'man', 'other', 'dietary', 'living', 'mental', 'family', 'family_member', 'personal', 'woman', 'know', 'understand', 'really', 'duty', ]; const AGENT_SHOP = ['ratio' => 6, 'sku_id' => 1, 'agent_sku_id' => 1, 'shop_id' => 8220]; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = ['name', 'mobile', 'email', 'password', 'avatar', 'sex', 'birthday', 'stature', 'body_images', "after_body_images", 'unit', 'is_subscribe', 'api_token', 'expire_at', 'fat_device', 'source', 'ip', 'area_code', 'open_id', "account_id"]; protected $guarded = []; /** * The attributes that should be hidden for serialization. * * @var array */ protected $hidden = [ // 'mobile', 'password', 'api_token', ]; protected $casts = [ 'created_at' => 'datetime:Y-m-d H:i:s', 'updated_at' => 'datetime:Y-m-d H:i:s', ]; // Accessor for created_at attribute public function getCreatedAtAttribute($value) { return (new \DateTime($value))->setTimezone(new \DateTimeZone('Asia/Shanghai'))->format('Y-m-d H:i:s'); } // Accessor for updated_at attribute public function getUpdatedAtAttribute($value) { return (new \DateTime($value))->setTimezone(new \DateTimeZone('Asia/Shanghai'))->format('Y-m-d H:i:s'); } public function getMobileAttribute($value) { $res = aesDecryptCBC($value); if (empty($res)) return $value; return $res; } // public function needsCommentApproval($model): bool { return false; } protected function isSubscribe(): Attribute { return Attribute::make( get: fn($value) => ($value) ? 1 : 0, ); } public function damServiceUserRole() { return $this->hasMany(DmaServiceUserRole::class, "user_id", "id"); } public function wechat() { return $this->hasOne(Wechat::class, 'user_id', 'id')->where('type', 'mp')->select("id", 'user_id', 'openid', 'unionid'); } public function workWechat() { return $this->hasOne(Wechat::class, 'user_id', 'id')->where('type', 'work')->select("id", 'user_id', 'openid', 'unionid'); } public function officialWechat() { return $this->hasOne(Wechat::class, 'user_id', 'id')->where('type', 'official')->select("id", 'user_id', 'openid', 'unionid'); } public function payOrders() { return $this->hasMany(Order::class, 'user_id', 'id')->where('pay_status', 'PAID'); } public function dmaOrder() { return $this->hasMany(Order::class, 'user_id', 'id')->where('pay_status', 'PAID')->whereNotIn("price", [0.01, 5800]); } public function baseUserInfo() { $array = ['name', 'sex', 'birthday', 'stature']; foreach ($array as $arr) { if (empty($this->$arr)) return false; } return true; } public function userInfo() { return $this->hasOne(UserInfo::class, 'user_id', 'id'); } public function healthLogs() { return $this->hasMany(HealthLog::class, 'user_id', 'id'); } public function serviceUser() { return $this->hasOne(ServiceUser::class, 'user_id', 'id'); } public function medicalReports() { return $this->hasMany(MedicalReport::class, 'user_id', 'id'); } public function bp() { return $this->hasOne(S2Bp::class, 'user_id', "id"); } public function otherHealthFile() { return $this->hasMany(OtherHealthFile::class, 'user_id', 'id'); } public function accounts() { return $this->hasMany(PartnerAccount::class, 'user_id', 'id'); } public function withdrawals() { return $this->hasMany(PartnerWithdrawal::class, 'user_id', 'id'); } public function commission() { return $this->hasMany(PartnerCommission::class, 'user_id', 'id'); } public function wallets() { return $this->hasOne(PartnerWallet::class, 'user_id', 'id'); } public function partner() { return $this->hasOne(Partner::class, 'user_id', 'id'); } public function coach() { return $this->hasOneThrough(Coach::class, Wechat::class, 'user_id', 'openid', 'id', 'openid'); } public function coaches() { return $this->hasOneThrough(Coach::class, Wechat::class, 'user_id', 'openid', 'id', 'openid'); } public function main_coaches() { return $this->hasOneThrough(MainCoach::class, Wechat::class, 'user_id', 'openid', 'id', 'openid'); } public function customer_service_user() { return $this->hasOneThrough(CustomerServiceUser::class, Wechat::class, 'user_id', 'openid', 'id', 'openid'); } public function chef_user() { return $this->hasOneThrough(ChefUser::class, Wechat::class, 'user_id', 'openid', 'id', 'openid'); } public function service_roles() { return $this->belongsToMany(ServiceRole::class, 'service_role_users', 'user_id', 'role_id')->withTimestamps(); } public function collaborator() { return $this->hasOne(Collaborator::class, 'user_id', 'id'); } public function moderator() { return $this->hasOne(Moderator::class, 'user_id', 'id'); } public function station() { return $this->hasOne(Station::class, 'user_id', 'id'); } public function office() { return $this->hasOneThrough(Office::class, Station::class, "user_id", "id", "id", "office_id"); } public function isModerator() { $res = ($this->moderator && $this->moderator->status == 1) ? 1 : 0; unset($this->moderator); return $res; } public function isCompleteInfo() { } public function imUser() { return $this->hasOne(WangYiYun::class); } //介绍人 用户购买活动票记录 public function recommendUserLog() { return $this->hasOne(RecommendUser::class, 'user_id', 'id'); } //介绍人 public function recommendUser() { return $this->hasOneThrough(User::class, RecommendUser::class, 'user_id', 'id', 'id', 'recommend_user_id'); } //分享人 第一次注册记录 public function shareUserLog() { return $this->hasOne(ShareUser::class, 'user_id', 'id'); } //分享人 第一次注册记录 public function shareUser() { return $this->hasOneThrough(User::class, ShareUser::class, 'user_id', 'id', 'id', 'share_user_id'); } public static function downloadQrcode($device = null) { $ios = "https://ufutx-health.oss-cn-hangzhou.aliyuncs.com/202312/13/health_ios.png"; $android = "https://image.fulllinkai.com/202303/15/f893b3511507c0616d2a6d855cb86279.png"; switch ($device) { case "IOS": $qrcode = $ios; break; case "ANDROID": $qrcode = $ios; break; default: $qrcode = [$ios, $android]; } return $qrcode; } public static function sameDataToUser($old_user_id, $new_user_id) { DB::beginTransaction(); //更新partner表数据 $old_partner = Partner::where('user_id', $old_user_id)->first(); if ($old_partner) { $old_partner->user_id = $new_user_id; $old_partner->save(); } //更新wechat表数据 $old_wechat_user = Wechat::where('user_id', $old_user_id)->where('type', 'official')->first(); if ($old_wechat_user) { // $old_wechat_user->user_id = $new_user_id; // $old_wechat_user->save(); Wechat::where('user_id', $old_user_id)->update(['user_id' => $new_user_id]); } //更新合作伙伴表数据 $old_collaborator = Collaborator::where('user_id', $old_user_id)->first(); if ($old_collaborator) { $old_collaborator->user_id = $new_user_id; $old_collaborator->save(); } //更新service 表数据 $old_service_user = ServiceUser::where('user_id', $old_user_id)->first(); if ($old_service_user) { $old_service_user->user_id = $new_user_id; $old_service_user->save(); } $old_restaurant = Restaurant::where('user_id', $old_user_id)->first(); if ($old_restaurant) { Restaurant::where('user_id', $old_user_id)->update(['user_id' => $new_user_id]); } $old_restaurant_order = RestaurantOrder::where('user_id', $old_user_id)->first(); if ($old_restaurant_order) { RestaurantOrder::where('user_id', $old_user_id)->update(['user_id' => $new_user_id]); } $old_restaurant_order_refund = RestaurantOrderRefund::where('user_id', $old_user_id)->first(); if ($old_restaurant_order_refund) { RestaurantOrderRefund::where('user_id', $old_user_id)->update(['user_id' => $new_user_id]); } //更新绑定角色表 $old_role = ServiceRoleUser::where('user_id', $old_user_id)->first(); if ($old_role) { ServiceRoleUser::where('user_id', $old_user_id)->update(['user_id' => $new_user_id]); } //更新绑定角色表 $old_order_role = ServiceRoleOrder::where('user_id', $old_user_id)->first(); if ($old_order_role) { ServiceRoleOrder::where('user_id', $old_user_id)->update(['user_id' => $new_user_id]); } //更新绑定的群角色表数据 $old_bind_role = ServiceUserBindRole::where('user_id', $old_user_id)->first(); if ($old_bind_role) { ServiceUserBindRole::where('user_id', $old_user_id)->update(['user_id' => $new_user_id]); } //更新工位 $old_station = Station::where('user_id', $old_user_id)->first(); if ($old_station) { Station::where('user_id', $old_user_id)->update(['user_id' => $new_user_id]); } //更新批发商 $old_agent_user = AgentUser::where('user_id', $old_user_id)->first(); if ($old_agent_user) { AgentUser::where('user_id', $old_user_id)->update(['user_id' => $new_user_id]); } UpdateUserLog::create(['old_user_id' => $old_user_id, 'new_user_id' => $new_user_id]); DB::commit(); } public function accid() { return self::SAAS_PREFIX . $this->id; } public static function userAccid($user_id) { return self::SAAS_PREFIX . $user_id; } public function shopAgentQrcodes() { return $this->hasMany(ShopAgentQrcode::class, 'user_id', 'id'); } public function getShopAgentQrcode($shop_id = null, $type = "MP") { $log = $this->shopAgentQrcodes()->where('shop_id', $shop_id)->where('type', $type)->first(); if (empty($log)) { if ($type == "MP") { if ($shop_id) { $page = "pages/sub_mall/mallDetail"; $scene = "id=$shop_id&userId=" . $this->id . "&agent=1"; } else { $page = "pages/tabBar/serve"; $scene = "userId=" . $this->id . "&agent=1"; } $qrcode = WechatService::getMPQrcode($scene, $page); } else { $url = config('app.url') . "/h5/#/mallDetail?id={$shop_id}&agent_id={$this->id}&from_user_id={$this->id}&from_type=wine"; $qrcode = CommonService::makeQrcode($url); } $log = $this->shopAgentQrcodes()->create(['shop_id' => $shop_id, 'qrcode' => $qrcode, 'type' => $type]); } return $log->qrcode; } public function isAgent() { // $param = request()->all(); // $param['accid'] = $this->accid(); // $param = http_build_query($param); // $url = config('app.shop_url')."is/agent?$param"; // $res = HttpService::getData($url); // if ($res['code'] == 1) throw new \Exception("获取经销商信息失败"); // $data = $res['data']; $agent_user = $this->agentUser; if (empty($agent_user)) { $data['agent_register'] = 0; $data['is_agent'] = 0; $data['can_restaurant'] = 0; } else { $data['agent_register'] = 1; $data['is_agent'] = $agent_user->level; $data['can_restaurant'] = $agent_user->can_restaurant; } return $data; } public function isVip() { $exists = Collaborator::where('user_id', $this->id)->where('type', 2)->where("status", 1)->exists(); return $exists ? 1 : 0; } public static function bodyImages($bodyImages) { if (!empty($bodyImages)) { $bodyImages = json_decode($bodyImages); } return [ "bodyFront" => $bodyImages->bodyFront ?? '', "bodyProfile" => $bodyImages->bodyProfile ?? '', "bigHead" => $bodyImages->bigHead ?? '', "leftPalm" => $bodyImages->leftPalm ?? '', "rightPalm" => $bodyImages->rightPalm ?? '', "tongue" => $bodyImages->tongue ?? '', "other_img" => $bodyImages->other_img ?? [], ]; } /** * 用户介绍人 */ public function introduceUser() { return $this->hasOneThrough(User::class, UserIntroduceLog::class, 'user_id', 'id', 'id', 'introduce_user_id'); } public function activityQrcodes() { return $this->hasMany(ActivityQrcode::class, 'user_id', 'id'); } public function activityOrders() { return $this->hasMany(ActivityOrder::class, 'user_id', 'id')->paid(); } public function introduceActivityOrders() { return $this->hasMany(ActivityOrder::class, 'introduce_user_id', 'id')->paid(); } public function introduceAgentOrders() { return $this->hasMany(AgentOrder::class, 'from_user_id', 'id')->paid(); } /** * 根据代理商级别,计算优惠价格 * @param $price * @param bool $valid * @return string */ public function calAgentPrice($price, $valid = true) { if (!$valid) return $price; if ($price == 0) return number_format($price, 2, '.', ''); //是否批发商 $level = $this->agentUser ? $this->agentUser->level : 0; if ($level == 1) return number_format($price / 2, '.', ''); return number_format($price, 2, '.', ''); } public function agentUser() { return $this->hasOne(AgentUser::class, 'user_id', 'id'); } public function agentOrders() { return $this->hasMany(AgentOrder::class, 'user_id', 'id'); } public function earning() { //收益金额 $total_amount = $this->agentEarnings()->sum('amount'); //已提现金额 $withdraw_amount = $this->agentWithdraws()->where('status', '<>', 'REFUSE')->sum('amount'); $amount = number_format($total_amount - $withdraw_amount, 2, '.', ''); return $amount; } public function agentEarnings() { return $this->hasMany(AgentEarning::class, 'user_id', 'id'); } public function agentWithdraws() { return $this->hasMany(AgentWithdraw::class, 'user_id', 'id'); } public function updateInfo($data) { $user = $this; if (isset($data['mobile'])) { $mobile_user = self::with('officialWechat')->where("mobile", $data['mobile'])->first(); if ($mobile_user->id != $user->id && !$mobile_user->officialWechat) {//非公众号用户占用 $user = $mobile_user; $this->officialWechat()->update(['user_id' => $mobile_user->id]); } } if (isset($data['name'])) { $user->name = $data['name']; } $user->save(); return $user; } /** * 获取小程序或者app用户 * @param $mobile * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model|object|null */ public static function getMpUser($mobile) { // $user = User::with('wechat')->whereHas('wechat', function ($sql) { // $sql->where('type', 'mp'); // })->where('mobile', $mobile)->first(); // if (empty($user)) { // $user = User::leftJoin('wechats', 'users.id', '=', 'wechats.user_id') // ->whereNull('wechats.user_id') // 只选择wechat表中user_id为空的记录 // ->where('users.mobile', $mobile) // ->select('users.*')->first(); // } $user = User::where('mobile', $mobile)->whereIn('source', self::APP_USER_SOURCE)->first(); return $user; } public static function getOfficialUser($mobile) { $collaborator = Collaborator::where('mobile', $mobile)->where('status', 1)->first(); return $collaborator; } /** * 审核服务人员,同步已存在的app服务人员信息 * @param $mobile * @param $uid */ public static function updateServerUser($mobile, $uid) { //查看是否注册app服务人员端,如果存在,则同步审核信息 $app_server_user = User::where('mobile', $mobile)->where('source', self::SOURCE_APP_SERVER)->first(); if ($app_server_user) { DB::beginTransaction(); //同步wechat表 $wechat = Wechat::where('user_id', $uid)->where('type', 'official')->first(); if ($wechat) { $wechat->user_id = $app_server_user->id; $wechat->save(); } $collaborator = Collaborator::where('user_id', $uid)->first(); if ($collaborator) { $collaborator->user_id = $app_server_user->id; $collaborator->save(); } UpdateUserLog::create(['old_user_id' => $uid, 'new_user_id' => $app_server_user->id]); DB::commit(); } } /** * 小程序更新手机号,如果先存在app用户,则把小程序用户同步给app用户 */ public static function updateAppUser($mobile, $uid) { $app_user = User::where('mobile', $mobile)->where('source', User::SOURCE_APP)->first(); if ($app_user && $app_user->id != $uid) { DB::beginTransaction(); //同步wechat表 $wechat = Wechat::where('user_id', $uid)->where('type', 'mp')->first(); if ($wechat) { $wechat->user_id = $app_user->id; $wechat->save(); } UpdateUserLog::create(['old_user_id' => $uid, 'new_user_id' => $app_user->id]); DB::commit(); } return $app_user; } public function getGoodsSku($skus, $sku_id = null) { $agent_user = $this->agentUser; foreach ($skus as &$sku) { $sku['origin_price'] = $sku['price']; if ($agent_user && $agent_user->level == AgentUser::AgentLevelBeing) {//批发商 $sku['price'] = $sku['agent_price']; } elseif ($agent_user && $agent_user->level == AgentUser::AgentLevelReady) {//准批发商 $sku['price'] = $sku['ready_agent_price']; } elseif ($agent_user && $agent_user->level == AgentUser::AgentStaff) { $sku['price'] = $sku['staff_price']; } elseif ($agent_user && $agent_user->level == AgentUser::AgentVIP) { $sku['price'] = $sku['vip_price']; } if ($sku_id && $sku['sku_id'] == $sku_id) return $sku; } return $skus; } public function isBan() { $ban = Banlist::where(function ($sql) { $sql->where(["type" => "user", "value" => $this->id])->where(function ($query) { $now = date("Y-m-d H:i:s"); $query->whereNull('expired_at')->orWhere("expired_at", ">", $now); }); })->first(); if ($ban) return true; return false; } // protected function mobile(): Attribute // { // return Attribute::make( // get: fn ($value) => aesDecryptCBC($value), // ); // } }