SchoolPhysicalExamination/application/app/controller/Index.php

1163 lines
57 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\app\controller;
use think\Db;
use \think\Validate;
use app\app\controller\Language;
// use ip2region\Ip2Region;
class Index extends Base{
protected $moren_gufen_diqu = '北京,北京';
protected $db_name = ['2'=>'app_card_body_data','6'=>'app_card_skip_data','8'=>'app_card_vitalcapacity_data','10'=>'app_card_data_sub_item_data'];
protected $index_use_db_name = [
'1'=>'app_version_log',
'2'=>'app_user_data',
'3'=>'app_card_body_data',
'4'=>'app_device_code_data',
'5'=>'app_device_data',
'6'=>'app_card_data',
'7'=>'app_account_number',
'8'=>'app_card_data_sub_item',
'9'=>'app_card_data_sub_item_data',
'10'=>'admin_estimate'
];
// protected $card_key = ['2'=>'body','6'=>'skip','8'=>'vitalcapacity'];
protected $default_card = ['2','6','8'];
protected $card_data = [
'2'=>['身体数据','body',['height'=>['身高','cm','-'],'weight'=>['体重','公斤','-'],'bmi'=>['BMI','无','-']]],
// '6'=>['跳绳数据','skip',['jump_time'=>['用时','无','--:--:--'],'jump_num'=>['本次次数','次','-'],'average_num'=>['平均成绩','个','-'],'jump_kcal'=>['卡路里','kcal','-']]],
'6'=>['跳绳数据','skip',['jump_time'=>['用时','无','--:--:--'],'jump_num'=>['本次次数','次','-'],'jump_kcal'=>['卡路里','kcal','-']]],
'8'=>['肺活量','vitalcapacity',['average'=>['平均成绩','ml','-']]],
];
protected $data_name_unit = [
'height'=>['身高','cm','pc_heightstand2'],
'weight'=>['体重','公斤','pc_weightstand2'],
'bmi'=>['BMI','','pc_bmistand2'],
'average'=>['肺活量','ml','pc_vitalcapacity_standard']
];
protected $identity_list = ['P0'=>'陌生人','P1'=>'爸爸','P2'=>'妈妈','P3'=>'大宝','P4'=>'二宝','P5'=>'三宝','P6'=>'四宝','P7'=>'爷爷','P8'=>'奶奶'];
// protected $nickname_data2 = ['爸爸','妈妈','大宝','二宝','爷爷','奶奶','外公','外婆'];
protected $grade_list = [
['id'=>'nothing','name'=>'无'],
['id'=>'grade_s_1','name'=>'小学一年级'],
['id'=>'grade_s_2','name'=>'小学二年级'],
['id'=>'grade_s_3','name'=>'小学三年级'],
['id'=>'grade_s_4','name'=>'小学四年级'],
['id'=>'grade_s_5','name'=>'小学五年级'],
['id'=>'grade_s_6','name'=>'小学六年级'],
['id'=>'grade_m_1','name'=>'初中一年级'],
['id'=>'grade_m_2','name'=>'初中二年级'],
['id'=>'grade_m_3','name'=>'初中三年级'],
['id'=>'grade_h_1','name'=>'高中一年级'],
['id'=>'grade_h_2','name'=>'高中二年级'],
['id'=>'grade_h_3','name'=>'高中三年级'],
['id'=>'grade_u_12','name'=>'大学一、二年级'],
['id'=>'grade_u_34','name'=>'大学三、四年级']
];
// 阶段性称谓
protected $stage_appellation = [
['min'=>'0','max'=>'3','value'=>'婴儿'],
['min'=>'3','max'=>'16','value'=>'儿童'],
['min'=>'16','max'=>'500','value'=>'成人']
];
protected $language_country = [
'en' => 'English', // 英语(通用)★
'zh-Hans' => '中文', // 中文(简体)★
// 'es' => 'Español', // 西班牙语(西班牙)★
// 'fr' => 'Français', // 法语(法国)★
// 'pt' => 'Português', // 葡萄牙语(巴西)★
// 'ar' => 'العربية', // 阿拉伯语(标准)★
// 'ru' => 'Русский', // 俄语(俄罗斯)★
// 'de' => 'Deutsch', // 德语(德国)★
// 'ja' => '日本語', // 日语
// 'ko' => '한국어', // 韩语
// 'it' => 'Italiano', // 意大利语
// 'nl' => 'Nederlands', // 荷兰语
// 'hi' => 'हिन्दी', // 印地语
// 'tr' => 'Türkçe', // 土耳其语
// 'vi' => 'Tiếng Việt', // 越南语
// 'th' => 'ไทย', // 泰语
// 'pl' => 'Polski', // 波兰语
// 'sv' => 'Svenska', // 瑞典语
// 'fi' => 'Suomi', // 芬兰语
// 'da' => 'Dansk', // 丹麦语
// 'no' => 'Norsk', // 挪威语
// 'he' => 'עברית', // 希伯来语
// 'id' => 'Bahasa Indonesia', // 印尼语
// 'ms' => 'Bahasa Melayu', // 马来语
// 'cs' => 'Čeština', // 捷克语
// 'hu' => 'Magyar', // 匈牙利语
// 'el' => 'Ελληνικά', // 希腊语
// 'ro' => 'Română', // 罗马尼亚语
// 'sk' => 'Slovenčina', // 斯洛伐克语
// 'uk' => 'Українська', // 乌克兰语
];
################################################################个人资料卡################################################################
################################################################个人资料卡################################################################
################################################################个人资料卡################################################################
// 检测版本及判断是否登录失效
public function login_invalid_version($data = ['token'=>'2d4ea9b3f44b169ddf64b2f3d2725ceb']){
try {
// 获取客户端IP
$ip = request()->ip();
// 调用IP识别方法
$region = $this->getIpInfo($ip);
// 解析地区信息
$regionParts = explode('|', $region);
$country = $regionParts[0] ?? '';
// 判断国家是否在支持的语言列表中
$language = '';
if ($country && $country !== '0') {
$languageMap = [
'中国' => 'zh-Hans',
'美国' => 'en',
'英国' => 'en',
'西班牙' => 'es',
'法国' => 'fr',
'葡萄牙' => 'pt',
'阿拉伯联合酋长国' => 'ar',
'俄罗斯' => 'ru',
'德国' => 'de'
];
$language = $languageMap[$country] ?? '';
}
// 检查语言是否在支持列表中
$language_all = new Language();
$isSupportedLanguage = array_key_exists($language, $language_all->getSupportedLanguages());
// 你的业务逻辑
if(count(input('post.')) > 0){
$data = input('post.');
}
if(!array_key_exists('token', $data)){
return $this->msg(10001);
}
$result = Db::table($this->index_use_db_name['1'])->order('is_del,id desc')->find();
if($result){
$version = $result['version_num_original'];
$url = $result['download_url'];
}else{
$version = '';
$url = '';
}
$user_token_state = $this->token_time_validate($data['token']);
$language_data = $this->pd_language($user_token_state['language'],$isSupportedLanguage,$language);
if($user_token_state['state'] === false){
return $this->msg(-1,'未登录',['version'=>$version,'url'=>$url,'language'=>$language_data,'language_arr'=>$this->language_country]);
}else{
return $this->msg(['version'=>$version,'url'=>$url,'language'=>$language_data,'language_arr'=>$this->language_country]);
}
} catch (\Exception $e) {
// 捕获异常
$logContent["flie"] = $e->getFile();
$logContent["line"] = $e->getLine();
$logContent['all_content'] = "异常信息:\n";
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
$logContent['all_content'] .= "方法: " . __METHOD__ . "\n";
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
$this->record_api_log($data, $logContent, null);
return $this->msg(99999);
}
}
// 添加IP信息获取方法
protected function getIpInfo($ip) {
// 默认IP
$ip = $ip ?: request()->ip();
try {
$ip2region = new \Ip2Region();
$info = $ip2region->memorySearch($ip);
// 返回国家信息
return $info['region'] ?: '未知';
} catch (\Exception $e) {
return '未知';
}
}
public function set_language_country($data = ['token'=>'caadd1be045a65f30b92aa805f1de54a','language'=>'zh']){
try {
// 你的业务逻辑
if(count(input('post.')) > 0){
$data = input('post.');
}
if(!array_key_exists('token', $data) || !array_key_exists('language', $data)){
return $this->msg(10001);
}
if(!array_key_exists($data['language'],$this->language_country)){
return $this->msg(10007);
}
$result = Db::table($this->index_use_db_name['7'])->where(['token'=>$data['token']])->update(['language'=>$data['language']]);
if($result){
return $this->msg([]);
}else{
return $this->msg(10002);
}
} catch (\Exception $e) {
$logContent["flie"] = $e->getFile();
$logContent["line"] = $e->getLine();
$logContent['all_content'] = "异常信息:\n";
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
$logContent['all_content'] .= "方法: " . __METHOD__ . "\n";
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
$this->record_api_log($data, $logContent, null);
return $this->msg(99999);
}
}
// 创建用户
public function create_user_data($data = ['aan_id'=>1,'height'=>'152.3','weight'=>'35.4','nickname'=>'钮祜禄测试1','birthday'=>'2019-04-20','gender'=>1,'grade'=>'grade_s_3','identity_id'=>'P3','identity_name'=>'大宝','address'=>'河南,郑州','token'=>'57bd45e3a963b372ea2d873e4bd8d1f8']){
try {
// 你的业务逻辑
if(count(input('post.')) > 0){
$data = input('post.');
}
if(!array_key_exists('token', $data) || !array_key_exists('measure_model', $data)){
return $this->msg(10001);
}
if($data['measure_model'] != '1' && $data['measure_model'] != '2'){
return $this->msg(10001);
}
unset($data['token']);
$verify_result = $this->verify_parameters($data,'register');
if(!is_array($verify_result)){
return $this->msg(10001,$verify_result);
}
$result = Db::table($this->index_use_db_name['2'])->insertGetId($verify_result);
if($result){
$this->record_api_log($data, null, ['code'=>0,'msg'=>'success',['aud_id'=>$result]]);
return $this->msg(['aud_id'=>$result]);
}else{
$this->record_api_log($data, null, ['code'=>10002,'msg'=>'',[]]);
return $this->msg(10002);
}
} catch (\Exception $e) {
$logContent["flie"] = $e->getFile();
$logContent["line"] = $e->getLine();
$logContent['all_content'] = "异常信息:\n";
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
$logContent['all_content'] .= "方法: " . __METHOD__ . "\n";
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
$this->record_api_log($data, $logContent, null);
return $this->msg(99999);
}
}
// 修改用户
public function update_user_data($data = ['id'=>66,'nickname'=>'王小二','birthday'=>'2019-01-01','gender'=>1,'grade'=>'二年级','identity_id'=>'P3','identity_name'=>'大宝','address'=>'河南,郑州','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
try {
// 你的业务逻辑
if(count(input('post.')) > 0){
$data = input('post.');
}
if(!array_key_exists('token', $data)){
return $this->msg(10001);
}
unset($data['token']);
$verify_result = $this->verify_parameters2($data,'update');
if(!is_array($verify_result)){
return $this->msg(10001,$verify_result);
}
$id_val = $verify_result['id'];
unset($verify_result['id']);
$result = Db::table($this->index_use_db_name['2'])->where(['id'=>$id_val])->update($verify_result);
if($result){
// 成功
$this->record_api_log($data, null, ['code'=>0,'msg'=>'success',[]]);
return $this->msg([]);
}else{
// 失败
$this->record_api_log($data, null, ['code'=>10002,'msg'=>'',[]]);
return $this->msg(10002);
}
} catch (\Exception $e) {
$logContent["flie"] = $e->getFile();
$logContent["line"] = $e->getLine();
$logContent['all_content'] = "异常信息:\n";
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
$logContent['all_content'] .= "方法: " . __METHOD__ . "\n";
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
$this->record_api_log($data, $logContent, null);
return $this->msg(99999);
}
}
// 删除用户
public function del_user_data($data = ['id'=>'26','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
try {
// 你的业务逻辑
if(count(input('post.')) > 0){
$data = input('post.');
}
if(!array_key_exists('id', $data) || !array_key_exists('token', $data)){
return $this->msg(10001);
}
if(!$this->verify_data_is_ok($data['id'],'intnum')){
return $this->msg(10005);
}
unset($data['token']);
$result = Db::table($this->index_use_db_name['2'])->where(['id'=>$data['id']])->update(['is_del'=>1]);
if($result){
// 成功
$this->record_api_log($data, null, ['code'=>0,'msg'=>'success',[]]);
return $this->msg([]);
}else{
// 失败
$this->record_api_log($data, null, ['code'=>10002,'msg'=>'',[]]);
return $this->msg(10002);
}
} catch (\Exception $e) {
// 捕获异常
$logContent["flie"] = $e->getFile();
$logContent["line"] = $e->getLine();
$logContent['all_content'] = "异常信息:\n";
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
$logContent['all_content'] .= "方法: " . __METHOD__ . "\n";
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
$this->record_api_log($data, $logContent, null);
return $this->msg(99999);
}
}
// 获取账号下用户列表
// $type 1获取列表2获取详细信息
public function get_user_card_list($data = ['aan_id'=>4,'type'=>2,'token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
try {
// 你的业务逻辑
if(count(input('post.')) > 0){
$data = input('post.');
}
if(!array_key_exists('token', $data) || !array_key_exists('aan_id', $data) || !array_key_exists('type', $data)){
// 失败
$this->record_api_log($data, null, ['code'=>10001,'msg'=>'',[]]);
return $this->msg(10001);
}
if(!$this->verify_data_is_ok($data['aan_id'],'intnum')){
return $this->msg(10005);
}
if(!$this->verify_data_is_ok($data['type'],'intnum')){
return $this->msg(10005);
}
unset($data['token']);
$result = Db::table($this->index_use_db_name['2'])
->where(['aan_id'=>$data['aan_id'],'is_del'=>0])
->field('id,aan_id,nickname,birthday,gender,card_order,target_weight,initial_weight,initial_date,grade,head_pic,weight,height,identity_name,address,identity_id,measure_model')
->select();
$temporary_data = [];
if($data['type'] == 1){
for ($i=0; $i < count($result); $i++) {
array_push($temporary_data,[
'id'=>$result[$i]['id'],
'nickname'=>$result[$i]['nickname'],
'identity_name'=>$result[$i]['identity_name'],
'identity_id'=>$result[$i]['identity_id'],
]);
}
}else{
for ($i=0; $i < count($result); $i++) {
$result[$i]['age'] = $this->calculate_age($result[$i]['birthday']);
// 添加阶段称谓、婴儿、儿童、成人
foreach ($this->stage_appellation as $key => $value) {
if($result[$i]['age'] >= $value['min'] && $result[$i]['age'] < $value['max']){
$result[$i]['stage'] = $value['value'];
}
}
}
$temporary_data = $result;
}
// 成功
$this->record_api_log($data, null, ['code'=>0,'msg'=>'success',$temporary_data]);
return $this->msg($temporary_data);
} catch (\Exception $e) {
// 捕获异常
$logContent["flie"] = $e->getFile();
$logContent["line"] = $e->getLine();
$logContent['all_content'] = "异常信息:\n";
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
$logContent['all_content'] .= "方法: " . __METHOD__ . "\n";
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
$this->record_api_log($data, $logContent, null);
return $this->msg(99999);
}
}
// 获取指定用户详细信息
public function get_user_data_information($data = ['aud_id'=>61]){
// try {
// 你的业务逻辑
if(count(input('post.')) > 0){
$data = input('post.');
}
if(!array_key_exists('aud_id', $data)){
// 失败
$this->record_api_log($data, null, ['code'=>10001,'msg'=>'',[]]);
return $this->msg(10001);
}
if(!$this->verify_data_is_ok($data['aud_id'],'intnum')){
return $this->msg(10005);
}
// 获取用户信息
$result = Db::table($this->index_use_db_name['2'])->where(['id'=>$data['aud_id'],'is_del'=>0])->field('id,aan_id,nickname,head_pic,birthday,gender,card_order,target_weight,initial_weight,initial_date,height,weight,address,identity_id,measure_model,head_data')->find();
if(!$result){
return $this->msg(10004);
}
$result['age'] = $this->calculate_age($result['birthday']);
foreach ($this->stage_appellation as $key => $value) {
if($result['age'] >= $value['min'] && $result['age'] < $value['max']){
$result['stage'] = $value['value'];
}
}
// 从这里开始进入体脂还是体测的判断
$result['card_order'] = $result['card_order'] == ""?[]:explode(',',$result['card_order']);
if($result['measure_model'] == 1){// 这里是体测
$calculation_results = $this->get_user_card_data_list($result,$result['id']);
$result['card_data_list'] = $calculation_results[0];
$result['card_order'] = $calculation_results[1];
}else if($result['measure_model'] == 2){// 这里是体脂
$result['card_data_list'] = [];
$result['card_order'] = [];
}else{
$this->record_api_log($data, null, ['code'=>10001,'msg'=>'measure_model数据不是1或者2',[]]);
return $this->msg(10004);
}
// // 获取设备信息进入卡片 start
// $likePattern = '%' . $result['aan_id'] . '%';
// $result_device = Db::table($this->index_use_db_name['4'])
// ->alias('adcd')
// ->join(''.$this->index_use_db_name['5'].' add','adcd.add_id = add.id','LEFT')
// ->where("adcd.bind_account_id LIKE ?", [$likePattern])
// ->field('adcd.id,add.acd_id')
// ->select();
// $device_arr = [];
// foreach ($result_device as $key => $value) {
// if(!in_array($value['acd_id'],$device_arr)){
// array_push($device_arr,$value['acd_id']);
// }
// }
// foreach ($result['card_data_list'] as $key => $value) {
// if(in_array($value['acd_id'],$device_arr)){
// $result['card_data_list'][$key]['device_determine'] = true;
// }else{
// $result['card_data_list'][$key]['device_determine'] = false;
// }
// }
// // 获取设备信息进入卡片 end
if($result['address'] == ''){
$result['address'] = $this->moren_gufen_diqu;
}
if($result['head_data'] == null){
$result['head_data'] = 0;
}
$this->record_api_log($data, null, ['code'=>0,'msg'=>'success',$result]);
return $this->msg($result);
// } catch (\Exception $e) {
// // 捕获异常
// $logContent["flie"] = $e->getFile();
// $logContent["line"] = $e->getLine();
// $logContent['all_content'] = "异常信息:\n";
// $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
// $logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
// $logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
// $logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
// $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
// $this->record_api_log($data, $logContent, null);
// return $this->msg(99999);
// }
}
// 获取所有卡片列表信息
public function get_card_all_list($data = ['aud_id'=>11,'token'=>'57bd45e3a963b372ea2d873e4bd8d1f8']){
try {
// 你的业务逻辑
if(count(input('post.')) > 0){
$data = input('post.');
}
if(!array_key_exists('token', $data)){
// 失败
$this->record_api_log($data, null, ['code'=>10001,'msg'=>'',[]]);
return $this->msg(10001);
}
if(!$this->verify_data_is_ok($data['aud_id'],'intnum')){
return $this->msg(10005);
}
unset($data['token']);
$user_card_list = Db::table($this->index_use_db_name['2'])->where(['id'=>$data['aud_id'],'is_del'=>0])->field('id,card_order')->find();
if(!$user_card_list){
// 失败
$this->record_api_log($data, null, ['code'=>10003,'msg'=>'',[]]);
return $this->msg(10003);
}
unset($user_card_list['ROW_NUMBER']);
$user_card_list['card_order'] = explode(',',$user_card_list['card_order']);
foreach ($user_card_list['card_order'] as $key => $value) {
if(in_array($value,$this->default_card)){
unset($user_card_list['card_order'][$key]);
}
}
$user_card_list['card_order'] = array_values($user_card_list['card_order']);
$all_card_list = Db::table($this->index_use_db_name['6'])->where(['is_del'=>0])->field('id,name,pic')->select();
// die;
$result = ['user'=>[],'all'=>[]];
foreach ($all_card_list as $key => $value) {
if(in_array($value['id'],$user_card_list['card_order'])){
$result['user'][array_search($value['id'], $user_card_list['card_order'])] = ['id'=>$value['id'],'name'=>$value['name'],'pic'=>$value['pic']];
}else{
array_push($result['all'],['id'=>$value['id'],'name'=>$value['name'],'pic'=>$value['pic']]);
}
}
ksort($result['user']);
// 成功
$this->record_api_log($data, null, ['code'=>0,'msg'=>'success',$result]);
return $this->msg($result);
} catch (\Exception $e) {
// 捕获异常
$logContent["flie"] = $e->getFile();
$logContent["line"] = $e->getLine();
$logContent['all_content'] = "异常信息:\n";
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
$logContent['all_content'] .= "方法: " . __METHOD__ . "\n";
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
$this->record_api_log($data, $logContent, null);
return $this->msg(99999);
}
}
// 保存用户的卡片排序
public function save_user_card_order($data=['aud_id'=>11,'card_order'=>'2,6,10,12,13,8,14,16,15','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
try {
// 你的业务逻辑
if(count(input('post.')) > 0){
$data = input('post.');
}
if(!array_key_exists('aud_id', $data) || !array_key_exists('card_order', $data) || !array_key_exists('token', $data)){
// 失败
$this->record_api_log($data, null, ['code'=>10001,'msg'=>'',[]]);
return $this->msg(10001);
}
if(!$this->verify_data_is_ok($data['aud_id'],'intnum')){
return $this->msg(10005);
}
unset($data['token']);
if(!$this->is_num_array(explode(',',$data['card_order']))){
// 失败
$this->record_api_log($data, null, ['code'=>10001,'msg'=>'数据内参数格式或值错误',[]]);
return $this->msg(10005,'数据内参数格式或值错误');
}
$result = Db::table($this->index_use_db_name['2'])->where(['id'=>$data['aud_id']])->update(['card_order'=>$data['card_order']]);
if($result){
// 成功
$this->record_api_log($data, null, ['code'=>0,'msg'=>'success',[]]);
return $this->msg([]);
}else{
// 失败
$this->record_api_log($data, null, ['code'=>10002,'msg'=>'',[]]);
return $this->msg(10002);
}
} catch (\Exception $e) {
// 捕获异常
$logContent["flie"] = $e->getFile();
$logContent["line"] = $e->getLine();
$logContent['all_content'] = "异常信息:\n";
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
$logContent['all_content'] .= "方法: " . __METHOD__ . "\n";
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
$this->record_api_log($data, $logContent, null);
return $this->msg(99999);
}
}
// 获取年级key列表
public function get_grade_list($data=['token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
try {
if(count(input('post.')) > 0){
$data = input('post.');
}
// if(!array_key_exists('token', $data)){
// $this->record_api_log($data, null, ['code'=>10001,'msg'=>'',[]]);
// return $this->msg(10001);
// }
$address_data = Db::table($this->base_use_db_name['5'])->where(['type' => '2'])->cache(3600)->field('id,content,city,area')->find();
$return_data['area_list'] = json_decode($address_data['content'],true);
$return_data['identity_list'] = [];
foreach ($this->identity_list as $key => $value) {
array_push($return_data['identity_list'],['id'=>$key,'name'=>$value]);
}
$return_data['grade_list'] = $this->grade_list;
$this->record_api_log($data, null, ['code'=>0,'msg'=>'success',[]]);
return $this->msg($return_data);
} catch (\Exception $e) {
// 捕获异常
$logContent["flie"] = $e->getFile();
$logContent["line"] = $e->getLine();
$logContent['all_content'] = "异常信息:\n";
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
$logContent['all_content'] .= "方法: " . __METHOD__ . "\n";
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
$this->record_api_log($data, $logContent, null);
return $this->msg(99999);
}
}
// 修改用户所属区域
public function update_user_address($data=['aud_id'=>'1','address_data'=>'上海,上海']){
try {
if(count(input('post.')) > 0){
$data = input('post.');
}
if(!array_key_exists('aud_id', $data) || !array_key_exists('address_data', $data)){
$this->record_api_log($data, null, ['code'=>10001,'msg'=>'',[]]);
return $this->msg(10001);
}
if(!$this->verify_data_is_ok($data['aud_id'],'intnum')){
return $this->msg(10005);
}
$user_data = Db::table($this->base_use_db_name['2'])->where(['id' => $data['aud_id']])->count();
if($user_data<=0){
$this->record_api_log($data, null, ['code'=>10003,'msg'=>'',[]]);
return $this->msg(10003);
}
$address_data = explode(',',$data['address_data']);
$address_result = Db::table($this->base_use_db_name['10'])->where(['province' => $address_data[0]])->cache(3600)->field('id,recommend_cards')->find();
if(!$address_result){
$this->record_api_log($data, null, ['code'=>10003,'msg'=>'',[]]);
return $this->msg(10003);
}
$user_result = Db::table($this->base_use_db_name['2'])->where(['id' => $data['aud_id']])->update(['card_order'=>$address_result['recommend_cards']]);
if($user_result){
$this->record_api_log($data, null, ['code'=>0,'msg'=>'success',[]]);
return $this->msg([]);
}else{
$this->record_api_log($data, null, ['code'=>10002,'msg'=>'',[]]);
return $this->msg(10002);
}
} catch (\Exception $e) {
// 捕获异常
$logContent["flie"] = $e->getFile();
$logContent["line"] = $e->getLine();
$logContent['all_content'] = "异常信息:\n";
$logContent['all_content'] .= "消息: " . $e->getMessage() . "\n";
$logContent['all_content'] .= "代码: " . $e->getCode() . "\n";
$logContent['all_content'] .= "文件: " . $e->getFile() . "\n";
$logContent['all_content'] .= "方法: " . __METHOD__ . "\n";
$logContent['all_content'] .= "行号: " . $e->getLine() . "\n";
$logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n";
$this->record_api_log($data, $logContent, null);
return $this->msg(99999);
}
}
################################获取账号下信息操作################################
// 获取账号下首页卡片的基础数据
public function get_user_card_data_list($data,$aud_id){
$result = [];
$db_arr = [];
foreach ($data['card_order'] as $key => $value) {
if(in_array($value,$this->default_card)){
// 过滤掉老版本的268选项卡
unset($data['card_order'][$key]);
continue;
}else{
// 公共卡牌
$db_arr[$value] = Db::table($this->index_use_db_name['9'])->where(['aud_id'=>$aud_id,'acd_id'=>$value,'is_del'=>'0'])->order('record_time desc')->limit(1)->select();
if(count($db_arr[$value]) > 0){
$temporary_data = Db::table($this->index_use_db_name['8'])->where(['id'=>$db_arr[$value][0]['acdsi_id']])->field('id,name')->find();
$db_arr[$value][0]['acdsi_name'] = $temporary_data['name'];
}
if(count($db_arr[$value]) > 0){
$db_arr[$value] = $db_arr[$value][0];
}else{
unset($db_arr[$value]);
}
}
}
$data['card_order'] = array_values($data['card_order']);
// 获取卡片背景图,及背景色信息及其他信息
$card_all_data = Db::table($this->index_use_db_name['6'])->where(['is_del'=>0])->field('id,name,page_url_record,page_url_report,page_url_bluetooth,key_word,background_color,background_pic')->select();
$card_all_data_result = [];
foreach ($card_all_data as $key => $value) {
$card_all_data_result[$value['id']] = $value;
}
// 获取卡片路径及卡片数组处理end
// // 添加目标体重于当前体重差数据
// if(array_key_exists('2', $db_arr)){
// $target_current = $this->base_target_initial_cumulative_weight([
// 'weight'=>$db_arr['2']['weight']>0?$db_arr['2']['weight']:0,
// 'target_weight'=>$data['target_weight']>0?$data['target_weight']:0,
// 'initial_weight'=>$data['initial_weight']>0?$data['initial_weight']:0,
// 'initial_date'=>$data['initial_date']!=null?$data['initial_date']:0,
// ]);
// }else{
// $target_current = $this->base_target_initial_cumulative_weight([
// 'weight'=>0,
// 'target_weight'=>$data['target_weight']>0?$data['target_weight']:0,
// 'initial_weight'=>$data['initial_weight']>0?$data['initial_weight']:0,
// 'initial_date'=>$data['initial_date']!=null?$data['initial_date']:0,
// ]);
// }
if(count($db_arr) <= 0){
// 没有数据,传递一个空的卡片
foreach ($data['card_order'] as $key => $value) {
$temporary_arr = [];
$temporary_arr['id'] = '';
$temporary_arr['acd_id'] = $value;
$temporary_arr['record_time'] = '';
$temporary_arr['card_name'] = $card_all_data_result[$value]['name'];
$temporary_arr['card_key'] = $card_all_data_result[$value]['key_word'];
$temporary_arr['page_url_record'] = $card_all_data_result[$value]['page_url_record'];
$temporary_arr['page_url_report'] = $card_all_data_result[$value]['page_url_report'];
$temporary_arr['page_url_bluetooth'] = $card_all_data_result[$value]['page_url_bluetooth'];
$temporary_arr['background_color'] = $card_all_data_result[$value]['background_color'];
$temporary_arr['background_pic'] = $card_all_data_result[$value]['background_pic'];
$temporary_arr['inside_data'] = [];
array_push($temporary_arr['inside_data'],[
'key'=>'last_time',
'name'=>'最近一次',
'value'=>"--",
'unit'=>'',
'standard'=>'*分',
'color'=>''
]);
array_push($result,$temporary_arr);
}
}else{
foreach ($data['card_order'] as $key => $value) {
$temporary_arr = [];
$temporary_arr['acd_id'] = $value;
$temporary_arr['card_name'] = $card_all_data_result[$value]['name'];
$temporary_arr['card_key'] = $card_all_data_result[$value]['key_word'];
$temporary_arr['page_url_record'] = $card_all_data_result[$value]['page_url_record'];
$temporary_arr['page_url_report'] = $card_all_data_result[$value]['page_url_report'];
$temporary_arr['page_url_bluetooth'] = $card_all_data_result[$value]['page_url_bluetooth'];
$temporary_arr['background_color'] = $card_all_data_result[$value]['background_color'];
$temporary_arr['background_pic'] = $card_all_data_result[$value]['background_pic'];
$temporary_arr['inside_data'] = [];
if(array_key_exists($value,$db_arr)){
// 公共卡片内容
$temporary_arr['id'] = $db_arr[$value]['id'];
$temporary_arr['record_time'] = $db_arr[$value]['record_time'];
array_push($temporary_arr['inside_data'],[
'key'=>'last_time',
// 'name'=>'最近一次',
'name'=>"项目名称",
'value'=>$db_arr[$value]['acdsi_name'],
'unit'=>'',
'standard'=>'',
'color'=>''
]);
array_push($temporary_arr['inside_data'],[
'key'=>'last_time',
// 'name'=>'最近一次',
'name'=>"成绩",
'value'=>$db_arr[$value]['achievement'],
'unit'=>$db_arr[$value]['unit'],
'standard'=>'',
'color'=>''
]);
array_push($temporary_arr['inside_data'],[
'key'=>'last_time',
// 'name'=>'最近一次',
'name'=>'得分',
// 'value'=>$db_arr[$value]['score'],
'value'=>$this->convertStringToNumber($db_arr[$value]['score']),
'unit'=>'分',
'standard'=>"",
'color'=>''
]);
}else{
$temporary_arr['id'] = '';
$temporary_arr['record_time'] = '';
array_push($temporary_arr['inside_data'],[
'key'=>'last_time',
'name'=>'最近一次',
'value'=>"--",
'unit'=>'',
'standard'=>'*分',
'color'=>''
]);
}
array_push($result,$temporary_arr);
}
}
return [$result,$data['card_order']];
}
################################################################other################################################################
################################################################other################################################################
################################################################other################################################################
public function verify_parameters($data,$type){
// 设置验证
if($data['measure_model'] == 1){
$rule = [
'aan_id' => 'require|number',
'nickname' => 'require|chsAlphaNum',
'birthday' => 'require|date',
'gender' => 'require|number|in:0,1,2',
'grade' => 'require',
'height' => 'require|number',
'weight' => 'require|number',
'measure_model' => 'require|in:1,2',
'identity_id' => 'require',
'identity_name' => 'require',
'address' => 'require',
];
$msg = [
'aan_id.require' => '账号信息缺失',
'nickname.require' => '昵称缺失',
'birthday.require' => '生日缺失',
'gender.require' => '性别缺失',
'grade.require' => '年级缺失',
'height.require' => '身高缺失',
'weight.require' => '体重缺失',
'measure_model.require' => '测量模式缺失',
'identity_id.require' => '身份缺失',
'identity_name.require' => '身份缺失',
'address.require' => '区域缺失',
'aan_id.number' => '账号信息格式错误',
'nickname.chsAlphaNum' => '昵称只能是只能是汉字、字母和数字',
'birthday.date' => '生日信息格式错误',
'gender.number' => '性别格式错误',
'gender.in' => '性别信息错误',
'measure_model.number' => '测量模式错误',
'measure_model.in' => '测量模式信息错误',
'height.number' => '身高必须为数字',
'weight.number' => '体重必须为数字',
];
$validate = new Validate($rule,$msg);
$result = $validate->check($data);
if(!$result){
return $validate->getError();
}
$parameter['aan_id'] = $data['aan_id'];
$parameter['nickname'] = $data['nickname'];
$parameter['birthday'] = $data['birthday'];
$parameter['gender'] = $data['gender'];
$parameter['card_order'] = '';
$parameter['height'] = $data['height'];
$parameter['weight'] = $data['weight'];
$parameter['head_pic'] = $data['gender'] == 2?'http://tc.pcxbc.com/tsf/2.png':'http://tc.pcxbc.com/tsf/1.png';
$parameter['create_time'] = date('Y-m-d H:i:s');
$parameter['last_update_time'] = date('Y-m-d H:i:s');
$parameter['measure_model'] = $data['measure_model'];
$parameter['grade'] = $data['grade'];
$parameter['identity_id'] = $data['identity_id'];
$parameter['identity_name'] = $data['identity_name'];
$parameter['address'] = $data['address'];
if(!array_key_exists($parameter['identity_id'],$this->identity_list)){
return '身份信息错误';
}else{
if($parameter['identity_id'] != 'P0'){
$parameter['identity_name'] = $this->identity_list[$data['identity_id']];
$result = Db::table($this->index_use_db_name['2'])->where(['identity_id'=>$parameter['identity_id'],'aan_id'=>$parameter['aan_id'],'is_del'=>0])->count();
if($result>0){
return '该身份已存在';
}
}
}
$address_data = Db::table($this->index_use_db_name['10'])->where(['province'=>explode(',',$parameter['address'])[0],'is_del'=>0])->field('id,recommend_cards')->find();
$parameter['card_order'] = $address_data['recommend_cards'];
}else{
$rule = [
'aan_id' => 'require|number',
'nickname' => 'require|chsAlphaNum',
'birthday' => 'require|date',
'gender' => 'require|number|in:0,1,2',
// 'grade' => 'require',
'height' => 'require|number',
'weight' => 'require|number',
'measure_model' => 'require|in:1,2',
// 'identity_id' => 'require',
// 'identity_name' => 'require',
// 'address' => 'require',
];
$msg = [
'aan_id.require' => '账号信息缺失',
'nickname.require' => '昵称缺失',
'birthday.require' => '生日缺失',
'gender.require' => '性别缺失',
// 'grade.require' => '年级缺失',
'height.require' => '身高缺失',
'weight.require' => '体重缺失',
'measure_model.require' => '测量模式缺失',
// 'identity_id.require' => '身份缺失',
// 'identity_name.require' => '身份缺失',
// 'address.require' => '区域缺失',
'aan_id.number' => '账号信息格式错误',
'nickname.chsAlphaNum' => '昵称只能是只能是汉字、字母和数字',
'birthday.date' => '生日信息格式错误',
'gender.number' => '性别格式错误',
'gender.in' => '性别信息错误',
'measure_model.number' => '测量模式错误',
'measure_model.in' => '测量模式信息错误',
'height.number' => '身高必须为数字',
'weight.number' => '体重必须为数字',
];
$validate = new Validate($rule,$msg);
$result = $validate->check($data);
if(!$result){
return $validate->getError();
}
$parameter['aan_id'] = $data['aan_id'];
$parameter['nickname'] = $data['nickname'];
$parameter['birthday'] = $data['birthday'];
$parameter['gender'] = $data['gender'];
$parameter['card_order'] = '2';
$parameter['height'] = $data['height'];
$parameter['weight'] = $data['weight'];
$parameter['head_pic'] = $data['gender'] == 2?'http://tc.pcxbc.com/tsf/2.png':'http://tc.pcxbc.com/tsf/1.png';
$parameter['create_time'] = date('Y-m-d H:i:s');
$parameter['last_update_time'] = date('Y-m-d H:i:s');
$parameter['measure_model'] = $data['measure_model'];
$parameter['grade'] = "nothing";
$parameter['identity_id'] = "P0";
$parameter['identity_name'] = "陌生人";
$parameter['address'] = '';
$parameter_pd = Db::table($this->index_use_db_name['7'])->where(['id'=>$parameter['aan_id']])->count();
if($parameter_pd <= 0){
return '该账户不存在';
}
$result = Db::table($this->index_use_db_name['2'])->where(['nickname'=>$parameter['nickname'],'aan_id'=>$parameter['aan_id'],'is_del'=>0])->count();
if($result>0){
return '该成员已存在';
}
}
return $parameter;
}
public function verify_parameters2($data,$type){
if($data['measure_model'] == 1){
$rule = [
'id' => 'require|number',
'nickname' => 'require|chsAlphaNum',
'birthday' => 'require|date',
'gender' => 'require|number|in:0,1,2',
'grade' => 'require',
'height' => 'require|number',
'weight' => 'require|number',
'measure_model' => 'require|in:1,2',
'identity_id' => 'require',
'identity_name' => 'require',
'address' => 'require',
];
$msg = [
'id.require' => '账号信息缺失',
'nickname.require' => '昵称缺失',
'birthday.require' => '生日缺失',
'gender.require' => '性别缺失',
'grade.require' => '年级缺失',
'height.require' => '身高缺失',
'weight.require' => '体重缺失',
'measure_model.require' => '测量模式缺失',
'identity_id.require' => '身份缺失',
'identity_name.require' => '身份缺失',
'address.require' => '区域缺失',
'id.number' => '账号信息格式错误',
'nickname.chsAlphaNum' => '昵称只能是只能是汉字、字母和数字',
'birthday.date' => '生日信息格式错误',
'gender.number' => '性别格式错误',
'gender.in' => '性别信息错误',
'measure_model.number' => '测量模式错误',
'measure_model.in' => '测量模式信息错误',
'height.number' => '身高必须为数字',
'weight.number' => '体重必须为数字',
];
$validate = new Validate($rule,$msg);
$result = $validate->check($data);
if(!$result){
return $validate->getError();
}
$parameter['id'] = $data['id'];
$parameter['nickname'] = $data['nickname'];
$parameter['birthday'] = $data['birthday'];
$parameter['gender'] = $data['gender'];
$parameter['card_order'] = '2';
$parameter['height'] = $data['height'];
$parameter['weight'] = $data['weight'];
$parameter['head_pic'] = $data['gender'] == 2?'http://tc.pcxbc.com/tsf/2.png':'http://tc.pcxbc.com/tsf/1.png';
$parameter['create_time'] = date('Y-m-d H:i:s');
$parameter['last_update_time'] = date('Y-m-d H:i:s');
$parameter['measure_model'] = $data['measure_model'];
$parameter['grade'] = $data['grade'];
$parameter['identity_id'] = $data['identity_id'];
$parameter['identity_name'] = $data['identity_name'];
$parameter['address'] = $data['address'];
$aan_id = $data['aan_id'];
if(!array_key_exists($parameter['identity_id'],$this->identity_list)){
return '身份信息错误';
}else{
if($parameter['identity_id'] != 'P0'){
$parameter['identity_name'] = $this->identity_list[$data['identity_id']];
$result = Db::table($this->index_use_db_name['2'])
// ->where(['identity_id'=>$parameter['identity_id'],'aan_id'=>$aan_id,'is_del'=>0])
->where("identity_id = '".$parameter['identity_id']."' and aan_id = '".$aan_id."' and is_del = 0 and id <> ".$parameter['id']."")
->field('id,identity_id')
->find();
if($result && $parameter['id'] != $result['id']){
return '该身份已存在';
}
}
}
$address_data = Db::table($this->index_use_db_name['10'])->where(['province'=>explode(',',$parameter['address'])[0],'is_del'=>0])->field('id,recommend_cards')->find();
$parameter['card_order'] = $address_data['recommend_cards'];
}else{
$rule = [
'aan_id' => 'require|number',
'nickname' => 'require|chsAlphaNum',
'birthday' => 'require|date',
'gender' => 'require|number|in:0,1,2',
// 'grade' => 'require',
'height' => 'require|number',
'weight' => 'require|number',
'measure_model' => 'require|in:1,2',
// 'identity_id' => 'require',
// 'identity_name' => 'require',
// 'address' => 'require',
];
$msg = [
'aan_id.require' => '账号信息缺失',
'nickname.require' => '昵称缺失',
'birthday.require' => '生日缺失',
'gender.require' => '性别缺失',
// 'grade.require' => '年级缺失',
'height.require' => '身高缺失',
'weight.require' => '体重缺失',
'measure_model.require' => '测量模式缺失',
// 'identity_id.require' => '身份缺失',
// 'identity_name.require' => '身份缺失',
// 'address.require' => '区域缺失',
'aan_id.number' => '账号信息格式错误',
'nickname.chsAlphaNum' => '昵称只能是只能是汉字、字母和数字',
'birthday.date' => '生日信息格式错误',
'gender.number' => '性别格式错误',
'gender.in' => '性别信息错误',
'measure_model.number' => '测量模式错误',
'measure_model.in' => '测量模式信息错误',
'height.number' => '身高必须为数字',
'weight.number' => '体重必须为数字',
];
$validate = new Validate($rule,$msg);
$result = $validate->check($data);
if(!$result){
return $validate->getError();
}
$parameter['id'] = $data['id'];
$parameter['aan_id'] = $data['aan_id'];
$parameter['nickname'] = $data['nickname'];
$parameter['birthday'] = $data['birthday'];
$parameter['gender'] = $data['gender'];
// $parameter['card_order'] = '2';
$parameter['height'] = $data['height'];
$parameter['weight'] = $data['weight'];
$parameter['head_pic'] = $data['gender'] == 2?'http://tc.pcxbc.com/tsf/2.png':'http://tc.pcxbc.com/tsf/1.png';
$parameter['create_time'] = date('Y-m-d H:i:s');
$parameter['last_update_time'] = date('Y-m-d H:i:s');
$parameter['measure_model'] = $data['measure_model'];
$parameter_pd = Db::table($this->index_use_db_name['7'])->where(['id'=>$parameter['aan_id']])->count();
if($parameter_pd <= 0){
return '该账户不存在';
}
$result = Db::table($this->index_use_db_name['2'])
// ->where(['nickname'=>$parameter['nickname'],'aan_id'=>$parameter['aan_id'],'is_del'=>0])
->where("nickname = '".$parameter['nickname']."' and aan_id = '".$parameter['aan_id']."' and is_del = 0 and id <> ".$parameter['id']."")
->count();
if($result>0){
return '该成员已存在';
}
unset($parameter['aan_id']);
}
return $parameter;
}
public function pd_language($user_language,$isSupportedLanguage,$language){
if(!$user_language){
if($isSupportedLanguage){
$result = $language;
}else{
$result = 'zh-Hans'; // 默认语言为中文
}
}else{
$result = $user_language;
}
return $result;
}
}