SystemMember.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2017 https://www.sapixx.com All rights reserved.
  4. * @license Licensed (http://www.apache.org/licenses/LICENSE-2.0).
  5. * @author pillar<ltmn@qq.com>
  6. *
  7. * 用户管理
  8. */
  9. namespace app\common\model;
  10. use app\common\model\SystemMemberMiniapp;
  11. use app\common\facade\Alisms;
  12. use think\Model;
  13. class SystemMember extends Model{
  14. protected $pk = 'id';
  15. /**
  16. * 用户信息关联
  17. * @return void
  18. */
  19. public function miniapp(){
  20. return $this->hasOne('SystemMemberMiniapp','id','bind_member_miniapp_id');
  21. }
  22. /**
  23. * 添加编辑
  24. * @param array $param 数组
  25. */
  26. public static function edit(array $param){
  27. $data['phone_id'] = $param['phone_id'];
  28. $data['username'] = $param['username'];
  29. $data['lock_config'] = $param['lock_config'];
  30. $data['login_ip'] = request()->ip();
  31. $data['login_time'] = time();
  32. $data['update_time'] = time();
  33. if(!empty($param['login_password'])){
  34. $data['password'] = password_hash(md5($param['login_password']),PASSWORD_DEFAULT);
  35. }
  36. if(!empty($param['safe_password'])){
  37. $data['safe_password'] = password_hash(md5($param['safe_password']),PASSWORD_DEFAULT);
  38. }
  39. if(isset($param['id']) && $param['id'] > 0){
  40. return self::where('id',$param['id'])->update($data);
  41. }else{
  42. $data['create_time'] = time();
  43. $data['parent_id'] = 0;
  44. return self::insert($data);
  45. }
  46. }
  47. /**
  48. * 添加编辑
  49. * @param array $param 数组
  50. */
  51. public static function bindEdit(array $param){
  52. $data['id'] = !empty($param['id']) ? $param['id'] : 0 ;
  53. $data['phone_id'] = $param['phone_id'];
  54. $data['username'] = $param['username'];
  55. $data['password'] = password_hash(md5($param['login_password']), PASSWORD_DEFAULT);
  56. $data['auth'] = intval($param['auth']);
  57. $data['bind_member_miniapp_id'] = $param['miniapp_id'];
  58. if(isset($param['id']) && $param['id'] > 0){
  59. return self::update($data);
  60. }else{
  61. $data['parent_id'] = $param['user_id'];
  62. $data['login_ip'] = request()->ip();
  63. $data['login_time'] = time();
  64. $data['update_time'] = time();
  65. $data['create_time'] = time();
  66. return self::create($data);
  67. }
  68. }
  69. /**
  70. * 更新用户新的手机号
  71. * @param array $param 数组
  72. */
  73. public static function editPhone(array $param){
  74. $data['phone_id'] = $param['phone_id'];
  75. $data['update_time'] = time();
  76. return self::where('id',$param['id'])->update($data);
  77. }
  78. /**
  79. * 用户注册
  80. * @param array $param 参数
  81. */
  82. public static function reg(array $param){
  83. //判断验证码
  84. if(!Alisms::isSms($param['phone_id'],$param['sms_code'])){
  85. return ['code'=>0,'message'=>"验证码错误"];
  86. }
  87. //判断手机号是否重复
  88. $info = self::where(['phone_id'=>$param['phone_id']])->find();
  89. if(isset($info)){
  90. return ['code'=>0,'message'=>'帐号已被注册'];
  91. }
  92. //验证码通过
  93. $data['phone_id'] = $param['phone_id'];
  94. $data['username'] = $param['username'];
  95. $data['password'] = password_hash(md5($param['login_password']),PASSWORD_DEFAULT);
  96. $data['safe_password'] = password_hash(md5('123456'),PASSWORD_DEFAULT); //设置初始安全密码
  97. $data['login_time'] = time();
  98. $data['login_ip'] = request()->ip();
  99. $data['update_time'] = time();
  100. $data['create_time'] = time();
  101. $last_id = self::insertGetId($data);
  102. if($last_id){
  103. return ['code'=>200,'message'=>'注册成功','data' => ['id' => $last_id]];
  104. }
  105. return ['code'=>0,'message'=>'帐号登录失败'];
  106. }
  107. /**
  108. * 修改我的密码
  109. * @access public
  110. */
  111. public static function upDatePasspowrd(int $uid,string $safepassword){
  112. $data['id'] = $uid;
  113. $data['password'] = password_hash(md5($safepassword),PASSWORD_DEFAULT);
  114. return self::update($data);
  115. }
  116. /**
  117. * 登录用户
  118. * @param array $param 更新的用户信息
  119. */
  120. public static function login(array $param){
  121. $condition['phone_id'] = $param['login_id'];
  122. $condition['is_lock'] = 0;
  123. $result = self::where($condition)->find();
  124. if($result){
  125. if(!password_verify(md5($param['login_password']),$result->getAttr('password'))) {
  126. return FALSE;
  127. }
  128. self::updateLogin($result->getAttr('id'));
  129. return $result;
  130. }
  131. return FALSE;
  132. }
  133. /**
  134. * 用户找回密码
  135. * @param array $param 更新的用户信息
  136. */
  137. public static function getPasspord(array $param){
  138. $condition['phone_id'] = $param['phone_id'];
  139. $condition['is_lock'] = 0;
  140. $info = self::where($condition)->find();
  141. if($info){
  142. $result = self::updateLogin($info->getAttr('id'),$param['login_password']);
  143. return isset($result) ? $info : false;
  144. }
  145. return false;
  146. }
  147. /**
  148. * 验证安全密码
  149. * @param int $user_id 用户ID
  150. * @param string $safepassword 验证的安全密码
  151. */
  152. public static function checkSafePasspord(int $uid,string $safepassword){
  153. $info = self::where(['id' => $uid])->find();
  154. if(password_verify(md5($safepassword),$info->getAttr('safe_password'))) {
  155. return true;
  156. }
  157. return false;
  158. }
  159. /**
  160. * 验证登录密码
  161. * @param int $user_id 用户ID
  162. * @param string $password 验证的安全密码
  163. */
  164. public static function checkPasspord(int $uid,string $password){
  165. $info = self::where(['id' => $uid])->find();
  166. if(password_verify(md5($password),$info->getAttr('password'))) {
  167. return true;
  168. }
  169. return false;
  170. }
  171. /**
  172. * 更新安全密码
  173. * @param array $param 更新的用户信息
  174. */
  175. public static function updateSafePasspord(int $uid,string $safepassword){
  176. $data['id'] = $uid;
  177. $data['safe_password'] = password_hash(md5($safepassword),PASSWORD_DEFAULT);
  178. return self::update($data);
  179. }
  180. /**
  181. * 更新用户登录信息
  182. * @param integer $uid 用户ID
  183. */
  184. protected static function updateLogin($uid,$passpord = null){
  185. $data = [
  186. 'id' => $uid,
  187. 'login_time' => time(),
  188. 'login_ip' => request()->ip()
  189. ];
  190. if(!empty($passpord)){
  191. $data['password'] = password_hash(md5($passpord),PASSWORD_DEFAULT);
  192. }
  193. return self::update($data);
  194. }
  195. /**
  196. * 锁定用户
  197. * @param integer $id
  198. */
  199. public static function lock(int $id){
  200. $result = self::where(['id' => $id])->find();
  201. $result->is_lock = $result->is_lock ? 0 : 1;
  202. if($result->is_lock){
  203. SystemMemberMiniapp::where(['member_id' => $id])->update(['is_lock' => 1]);
  204. }
  205. return $result->save();
  206. }
  207. }