Files
2024-09-27 01:32:49 +08:00

201 lines
6.5 KiB
PHP

<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2020/4/13
* Time: 15:27
*/
namespace app\api\model;
use think\Db;
use think\Log;
use think\Model;
class User extends Model
{
protected $table = 'users';
/*
* 用户登录并返回信息
* @param $data array 插入用户信息,并返回用户信息
* */
public static function addUserInfo($data){
$array = array();
$array['phone'] = $data['phone'];
$array['wenli'] = $data['subType'];
$array['chooseLevel'] = $data['chooseLevel'];
$array['mykemu'] = sortStr($data['mySub']);
$array['score'] = $data['score'];
$array['province'] = $data['province']*10000;
$array['add_time'] = time();
//默认普通高考,检测并返回高考类型
if($array['province']){
$array['provinceType'] = 3;
$proSubArr = config('setsub.diffProTest');
$provinceID = config('province.province')[$array['province']]['code'];
if(in_array($provinceID,$proSubArr[1])){
$array['provinceType'] = 1;
}elseif(in_array($provinceID,$proSubArr[2])){
$array['provinceType'] = 2;
}
}
//科目中文取
$array['subName'] = empty(($array['mykemu']))?'':changeSubString($array['mykemu']);
//手机号16进制转62进制并加随机两位数据生成昵称
$array['user_name'] = from10_to62($data['phone']).getRandChar(2);
unset($data['code']);
$resInfo = self::insertGetId($array);
if($resInfo){
//省份配置表
$proConfig = config('province.province');
$array['uid'] = $resInfo;
$array['phone'] = substr_replace($array['phone'],'****',3,4);
unset($array['add_time']);
unset($array['last_edit_gaokao']);
//文理科文字返回
if($array['wenli']){
$array['subTypeName'] = $array['wenli'] == 1 ? '文科' : '理科';
unset($array['subName']);
}
//省份code和文字获取
if($array['province']){
$array['proName'] = $proConfig[$array['province']]['title'];
$array['userPro'] = $proConfig[$array['province']]['code'];
}
return $array;
}else{
return api_return("操作失败");
}
}
/*
* 通过手机号查询用户信息
* */
public static function getUserInfoByPhone($telnum){
$result = self::field('id as uid,phone,user_name,score,wenli,province,mykemu,chooseLevel,subName,provinceType')->where('phone','=',$telnum)->find();
if($result){
$proConfig = config('province.province');
//文理科文字返回
if($result['wenli']){
$result['subTypeName'] = $result['wenli'] == 1 ? '文科' : '理科';
unset($result['subName']);
}
//省份code和文字获取
if($result['province']){
$result['proName'] = $proConfig[$result['province']]['title'];
$result['userPro'] = $proConfig[$result['province']]['code'];
}
}
return $result;
}
/*
*通过手机号查询用户是否存在
* */
public static function checkUserByTelnum($telnum){
$count = self::where('phone','=',$telnum)->count();
return $count;
}
/*
* 修改用户信息
* */
public static function editUserInfo($data){
$array = array();
$array['wenli'] = $data['subType'];
$array['chooseLevel'] = $data['chooseLevel'];
$array['mykemu'] = sortStr($data['mySub']);
$array['province'] = $data['province']*10000;
$array['score'] = $data['score'];
$array['last_edit_gaokao'] = time();
//默认普通高考,检测并返回高考类型
$array['provinceType'] = 3;
$proSubArr = config('setsub.diffProTest');
$provinceID = config('province.province')[$array['province']]['code'];
if(in_array($provinceID,$proSubArr[1])){
$array['provinceType'] = 1;
}elseif(in_array($provinceID,$proSubArr[2])){
$array['provinceType'] = 2;
}
//科目中文取
$array['subName'] = empty(($array['mykemu']))?'':changeSubString($array['mykemu']);
$result = self::where('id','=',$data['user_id'])->update($array);
//返回数据给前端
if($result){
$resUser = self::field('id as uid,phone,user_name,score,wenli,province,mykemu,chooseLevel,subName,provinceType')->where('id','=',$data['user_id'])->find();
$proConfig = config('province.province');
$resUser['phone'] = substr_replace($resUser['phone'],'****',3,4);
$resUser['token'] = $data['token'];
//文理科文字返回
if($resUser['wenli']){
$resUser['subTypeName'] = $resUser['wenli']== 1 ? '文科' : '理科';
unset($resUser['subName']);
}
//省份code和文字获取
if($resUser['province']){
$resUser['proName'] = $proConfig[$resUser['province']]['title'];
$resUser['userPro'] = $proConfig[$resUser['province']]['code'];
}
}else{
$resUser = $result;
}
return $resUser;
}
/*
* 查看用户是否具有查询权限
* @param $type 权限类型
* */
public static function checkUserAuthByUserID($userID,$type,$province,$score,$subType = 0,$mySub = 0){
$result = Db::table('orders')->field('vip')->where([['user_id','=',$userID],['stu_yzy_province','=',$province],['score','=',$score],['status','=',1],
['wenli','=',$subType],['mykemu','=',$mySub],['vip','in',('1,2,3')]])
->select();
$resVip = array_column($result, 'vip');
$tips = 0;
switch ($type){
case 1:
if(!in_array($type,$resVip)){
$tips = 1;
}
break;
case 2:
if(!in_array(1,$resVip)){
$tips = 1;
}elseif(!in_array($type,$resVip)){
$tips = 2;
}
break;
case 3:
if(!in_array(1,$resVip)){
$tips = 1;
}elseif(!in_array($type,$resVip)){
$tips = 3;
}
break;
}
return $tips;
}
}