123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- <?php
- /**
- * @copyright Copyright (c) 2017 https://www.sapixx.com All rights reserved.
- * @license Licensed (http://www.apache.org/licenses/LICENSE-2.0).
- * @author pillar<ltmn@qq.com>
- *
- * 用户管理 Table<ai_member>
- */
- namespace app\common\model;
- use app\common\model\MemberMiniapp;
- use think\Model;
- class Member extends Model{
- protected $pk = 'id';
- /**
- * 用户信息关联
- * @return void
- */
- public function miniapp(){
- return $this->hasOne('MemberMiniapp','id','bind_member_miniapp_id');
- }
- /**
- * 添加编辑
- * @param array $param 数组
- */
- public static function edit(array $param){
- $data['phone_id'] = $param['phone_id'];
- $data['username'] = $param['username'];
- $data['lock_config'] = $param['lock_config'];
- $data['login_ip'] = request()->ip();
- $data['login_time'] = time();
- $data['update_time'] = time();
- if(!empty($param['login_password'])){
- $data['password'] = password_hash(md5($param['login_password']),PASSWORD_DEFAULT);
- }
- if(!empty($param['safe_password'])){
- $data['safe_password'] = password_hash(md5($param['safe_password']),PASSWORD_DEFAULT);
- }
- if(isset($param['id']) && $param['id'] > 0){
- return self::where('id',$param['id'])->update($data);
- }else{
- $data['create_time'] = time();
- $data['parent_id'] = 0;
- return self::insert($data);
- }
- }
- /**
- * 添加编辑
- * @param array $param 数组
- */
- public static function bindEdit(array $param){
- $data['phone_id'] = $param['phone_id'];
- $data['username'] = $param['username'];
- $data['password'] = password_hash(md5($param['login_password']),PASSWORD_DEFAULT);
- $data['bind_member_miniapp_id'] = $param['miniapp_id'];
- if(isset($param['id']) && $param['id'] > 0){
- return self::where('id',$param['id'])->update($data);
- }else{
- $data['parent_id'] = $param['user_id'];
- $data['login_ip'] = request()->ip();
- $data['login_time'] = time();
- $data['update_time'] = time();
- $data['create_time'] = time();
- return self::insert($data);
- }
- }
- /**
- * 更新用户新的手机号
- * @param array $param 数组
- */
- public static function editPhone(array $param){
- $data['phone_id'] = $param['phone_id'];
- $data['update_time'] = time();
- return self::where('id',$param['id'])->update($data);
- }
- /**
- * 用户注册
- * @param array $param 参数
- */
- public static function reg(array $param){
- //判断验证码
- $sms['phone_id'] = $param['phone_id'];
- $sms['sms_code'] = $param['sms_code'];
- $is_sms = widget('common/alisms/isSms',$sms);
- if(!$is_sms){
- return ['code'=>0,'message'=>"验证码错误"];
- }
- //判断手机号是否重复
- $info = self::where(['phone_id'=>$param['phone_id']])->find();
- if(isset($info)){
- return ['code'=>0,'message'=>'帐号已被注册'];
- }
- //验证码通过
- $data['phone_id'] = $param['phone_id'];
- $data['username'] = $param['username'];
- $data['password'] = password_hash(md5($param['login_password']),PASSWORD_DEFAULT);
- $data['safe_password'] = password_hash(md5('123456'),PASSWORD_DEFAULT); //设置初始安全密码
- $data['login_time'] = time();
- $data['login_ip'] = request()->ip();
- $data['update_time'] = time();
- $data['create_time'] = time();
- $last_id = self::insertGetId($data);
- if($last_id){
- return ['code'=>200,'message'=>'注册成功','data' => ['id' => $last_id]];
- }
- return ['code'=>0,'message'=>'帐号登录失败'];
- }
- /**
- * 修改我的密码
- * @access public
- */
- public static function upDatePasspowrd(int $uid,string $safepassword){
- $data['id'] = $uid;
- $data['password'] = password_hash(md5($safepassword),PASSWORD_DEFAULT);
- return self::update($data);
- }
-
- /**
- * 登录用户
- * @param array $param 更新的用户信息
- */
- public static function login(array $param){
- $condition['phone_id'] = $param['login_id'];
- $condition['is_lock'] = 0;
- $result = self::where($condition)->find();
- if($result){
- if(!password_verify(md5($param['login_password']),$result->getAttr('password'))) {
- return FALSE;
- }
- self::updateLogin($result->getAttr('id'));
- return $result;
- }
- return FALSE;
- }
- /**
- * 用户找回密码
- * @param array $param 更新的用户信息
- */
- public static function getPasspord(array $param){
- $condition['phone_id'] = $param['phone_id'];
- $condition['is_lock'] = 0;
- $info = self::where($condition)->find();
- if($info){
- $result = self::updateLogin($info->getAttr('id'),$param['login_password']);
- return isset($result) ? $info : false;
- }
- return false;
- }
- /**
- * 验证安全密码
- * @param int $user_id 用户ID
- * @param string $safepassword 验证的安全密码
- */
- public static function checkSafePasspord(int $uid,string $safepassword){
- $info = self::where(['id' => $uid])->find();
- if(password_verify(md5($safepassword),$info->getAttr('safe_password'))) {
- return true;
- }
- return false;
- }
- /**
- * 验证登录密码
- * @param int $user_id 用户ID
- * @param string $password 验证的安全密码
- */
- public static function checkPasspord(int $uid,string $password){
- $info = self::where(['id' => $uid])->find();
- if(password_verify(md5($password),$info->getAttr('password'))) {
- return true;
- }
- return false;
- }
- /**
- * 更新安全密码
- * @param array $param 更新的用户信息
- */
- public static function updateSafePasspord(int $uid,string $safepassword){
- $data['id'] = $uid;
- $data['safe_password'] = password_hash(md5($safepassword),PASSWORD_DEFAULT);
- return self::update($data);
- }
-
- /**
- * 更新用户登录信息
- * @param integer $uid 用户ID
- */
- protected static function updateLogin($uid,$passpord = null){
- $data = [
- 'id' => $uid,
- 'login_time' => time(),
- 'login_ip' => request()->ip()
- ];
- if(!empty($passpord)){
- $data['password'] = password_hash(md5($passpord),PASSWORD_DEFAULT);
- }
- return self::update($data);
- }
- /**
- * 锁定用户
- * @param integer $id
- */
- public static function lock(int $id){
- $result = self::where(['id' => $id])->find();
- $result->is_lock = $result->is_lock ? 0 : 1;
- if($result->is_lock){
- MemberMiniapp::where(['member_id' => $id])->update(['is_lock' => 1]);
- }
- return $result->save();
- }
- }
|