📖 File Reader
<?php
namespace app\api\common;
use app\BaseController;
use app\common\Common_time;
use think\facade\Db;
use think\facade\Session;
use think\facade\View;
/**
* 会员信息
*/
class Common_user extends BaseController
{
/**
* 会员信息
* @param $user_miyao 会员秘钥
*/
static public function user_info($user_miyao)
{
$user_info = db::name("user")->where("user_miyao = '$user_miyao'")->field("user_id,superior_id,rank_id,rank_id_priority,user_miyao,head,nickname,user_name,identity_z,identity_f,name,identity,bank,bank_card,mobile,motto,invitation_code,add_time,freeze_money,integral,pay_password,priority_rank_id_time,open_id,is_deliver,region_id")->find();
if (!empty($user_info)){
$user_info["money"] = Common_user::user_money($user_info["user_id"]);
}
return $user_info;
}
/**
* 实名认证检测
* @param int $user_id 会员信息检测
*/
static function user_detection($user_id=0)
{
$user_info = db::name("user")->alias("a")
->join("user_detail b","a.user_id = b.user_id","LEFT")
->field("a.*,b.motorcycle_type,b.plate_number,b.motorcycle_expire_time")
->where("a.user_id = $user_id")
->find();
if ($user_info["name"] == '' || $user_info["identity"] == '' || $user_info["mobile"] == ''){
$data = [
'code'=>400,
'msg'=>'请先完善会员信息',
];
return $data;
}
$data = [
'code'=>200,
'msg'=>'检测通过',
];
return $data;
}
/**
* 生日检测(今天是否过生日)
* @param string $idcard 生日
*/
static function user_birthday($idcard='')
{
$shengri = Common_user::get_birthday($idcard);
$shengri = strstr ($shengri,"-");
$shengri = substr($shengri, 1);//根据身份证号获取的生日日期
//今日日期
$time_y = preg_replace('/^0*/', '', date("m",time()));
$time_r = preg_replace('/^0*/', '', date("d",time()));
$time = $time_y.'-'.$time_r;
$is_celebrate = 0;
if ($shengri == $time){
$is_celebrate = 1;//今日过生日
}
return $is_celebrate;
}
/**
* 根据身份证号码获取生日
* author:xiaochuan
* @param string $idcard 身份证号码
* @return $birthday
*/
static function get_birthday($idcard) {
if(empty($idcard)) return null;
$bir = substr($idcard, 6, 8);
$year = (int) substr($bir, 0, 4);
$month = (int) substr($bir, 4, 2);
$day = (int) substr($bir, 6, 2);
return $year . "-" . $month . "-" . $day;
}
/**
* 姓名加密
* @param string $name 姓名
* @return string
*/
static function encryptName($name='') {
$encrypt_name = '';
//判断是否包含中文字符
if(preg_match("/[\x{4e00}-\x{9fa5}]+/u", $name)) {
//按照中文字符计算长度
$len = mb_strlen($name, 'UTF-8');
//echo '中文';
if($len >= 3){
//三个字符或三个字符以上掐头取尾,中间用*代替
$encrypt_name = mb_substr($name, 0, 1, 'UTF-8') .str_repeat('*',$len-2). mb_substr($name, -1, 1, 'UTF-8');
} elseif($len === 2) {
//两个字符
$encrypt_name = mb_substr($name, 0, 1, 'UTF-8') . '*';
}
} else {
//按照英文字串计算长度
$len = strlen($name);
//echo 'English';
if($len >= 3) {
//三个字符或三个字符以上掐头取尾,中间用*代替
$encrypt_name = substr($name, 0, 1) .str_repeat('*',$len-2). substr($name, -1);
} elseif($len === 2) {
//两个字符
$encrypt_name = substr($name, 0, 1) . '*';
}
}
return $encrypt_name;
}
/**
* 手机号加密
* @param $phoneNumber 手机号
* @param $start 从第几位开始
* @param $length 加密位数
* @return array|string|string[]
*/
static function encryptPhoneNumber($phoneNumber, $start = 3, $length = 4) {
return substr_replace($phoneNumber, str_repeat('*', $length), $start, $length);
}
/**
* 会员可用余额
* @param $user_id 会员id
*/
static function user_money($user_id)
{
$user = db::name("user")->where("user_id = $user_id")->field("money,freeze_money")->find();
$money = $user["money"] - $user["freeze_money"];
if ($money <= 0){
$money = 0;
}
return sprintf("%.2f",$money);
}
/**
* 查询冻结余额
*/
static function freeze_money($user_id)
{
$freeze_money = db::name("user")->where("user_id = $user_id")->value("freeze_money");
return $freeze_money;
}
/**
* 会员级别
* @param $user_id 会员id
*/
static function user_rank($user_id)
{
$time_info = Common_time::time_info();
//上个月最后升级记录
$up_user_rank = db::name("user_rank_upgrade_log")->alias("a")
->join("user_rank b","a.rank_id = b.rank_id")
->field("b.rank_id,b.name as rank_name")
->where("a.add_time >= $time_info[b_time] and a.add_time <= $time_info[e_time]")
->order("a.id desc")
->find();
if (empty($up_user_rank)){
$arr["up_rank_id"] = 0;
$arr["up_rank_name"] = '';
}else{
$arr["up_rank_id"] = $up_user_rank["rank_id"];
$arr["up_rank_name"] = $up_user_rank["rank_name"];
}
//当前会员等级
$user_info = db::name("user")->alias("a")
->join("user_rank b","a.rank_id = b.rank_id","LEFT")
->join("user_rank c","a.rank_id_priority = c.rank_id","LEFT")
->field("a.user_id,a.priority_rank_id_time,a.rank_id,b.name as rank_name,a.rank_id_priority,c.name as rank_name_priority")
->where("a.user_id = $user_id")
->find();
if ($user_info["priority_rank_id_time"] >= time()){
$arr["rank_id"] = $user_info["rank_id_priority"];
$arr["rank_name"] = $user_info["rank_name_priority"];
}else{
$arr["rank_id"] = $user_info["rank_id"];
$arr["rank_name"] = $user_info["rank_name"];
}
return $arr;
}
/**
* 支付密码验证
* @param $user_miyao 会员秘钥
* @param $pay_password 支付密码
*/
static function pay_password_verify($user_miyao,$pay_password)
{
$user_info = Common_user::user_info($user_miyao);
if (empty($user_info["pay_password"])){
$data = [
'code' => 302,
'msg'=>'请先设置支付密码',
];
return $data;
}else{
if (empty($pay_password)){
$data = [
'code' => 400,
'msg'=>'请输入支付密码',
];
return $data;
}else{
if ($user_info["pay_password"] != md5($pay_password)){
$data = [
'code' => 400,
'msg'=>'支付密码错误',
];
return $data;
}
}
}
$data = [
'code' => 200,
'msg'=>'ok',
];
return $data;
}
/**
* 创建会员秘钥
*/
static function user_miyao_add($num)
{
$suijishu = Common_user::suijishu($num);
while (!empty(db::name("user")->where("user_miyao = '$suijishu'")->count())){
$suijishu = Common_user::suijishu($num);
}
return $suijishu;
}
/**
* 创建会员邀请码
* @param $num 位数
*/
static function user_invitation_code_add($num)
{
$suijishu = Common_user::suijishu($num);
while (!empty(db::name("user")->where("invitation_code = '$suijishu'")->count())){
$suijishu = Common_user::suijishu($num);
}
return $suijishu;
}
/**
* 随机数
* @param $len 生成位数
* @param $type 默认字母数组混合
*/
static function suijishu($len,$type=0){
if ($type == 0){
$chars_array = array(
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
"S", "T", "U", "V", "W", "X", "Y", "Z",
);
}else{
$chars_array = array(
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
);
}
$charsLen = count($chars_array) - 1;
$outputstr = "";
for ($i=0; $i<$len; $i++)
{
$outputstr .= $chars_array[mt_rand(0, $charsLen)];
}
return $outputstr;
}
/**
* 获取自己这条线的全部上级(默认包含自己)
* @param int $user_id 会员id
* @param int $type 是否包含自己:1是 0否
*/
static function user_wire($user_id=0,$type=1)
{
if (empty($type)) {
$user_str_id = '';
} else {
$user_str_id = $user_id . ',';
}
while (!empty($user_id)) {
$superior_id = db::name("user")->where("user_id = $user_id")->value('superior_id');
if (!empty($superior_id)) {
$user_str_id .= $superior_id . ',';
}
//重新定义
$user_id = $superior_id;
}
return substr($user_str_id, 0, strlen($user_str_id) - 1);
}
/**
* 获取所有直推下级(默认包含自己)
* @param int $user_id 会员id
* @param int $type 类型:1包含自己 0不包含
*/
static function subordinate_id($user_id=0,$type=1)
{
$user_list_id = db::name("user")->where("superior_id = $user_id")->field("user_id")->select();
$id = $type==1?$user_id.',':'';
foreach ($user_list_id as $k => $v){
$id .= $v["user_id"].",";
}
$id = substr($id,0,strlen($id)-1);
return $id;
}
/**
* 获取无限层团队下级(默认包含自己)
* @param $user_id 会员id
* @param int $type 类型:1包含自己 0不包含
*/
static function team_subordinate_id($user_id=0,$type=1)
{
$team_id = $user_id;
$team_user_id = $type==1?$user_id.',':'';
while ($team_id){
$user_list_id = db::name("user")->where("superior_id in($team_id)")->field("user_id")->select();
$id = '';
foreach ($user_list_id as $k => $v){
$id .= $v["user_id"].',';
}
$id = substr($id,0,strlen($id)-1);
if (!empty($id)){
$team_user_id .= $id.',';
}
//重新定义
$team_id = $id;
}
return substr($team_user_id,0,strlen($team_user_id)-1);
}
/**
* 数组重装(根据父级重装)
* @param array $arr 全部数组
* @param int $superior_id
* @return array
*/
public function array_reinstallation($arr=[],$superior_id=0)
{
$arr_list = $arr;
$arr_xin = [];
foreach ($arr as $v){
$v_superior_id = $v["superior_id"];
/*筛选上级是否存在,不存在重置上级id*/
$is_cunzai = 0;
foreach ($arr_list as $v2){
if ($v_superior_id == $v2["id"]){
$is_cunzai = 1;
}
}
$v_superior_id = $is_cunzai==0?0:$v_superior_id;
if ($v_superior_id == $superior_id){
$list = $this->array_reinstallation($arr_list,$v["id"]);
$v["order_sublevel"] = $list;
$arr_xin[] = $v;
}
}
return $arr_xin;
}
}