AdminUser.php 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. <?php
  2. /**
  3. * 用户操作
  4. * @author Mike <m@9026.com>
  5. * @version 1.0
  6. * @date 2015年11月13日
  7. *
  8. */
  9. namespace App\Services\Admin;
  10. use App\Models\AdminUserModel;
  11. use Hash;
  12. use App\Services\Base\BaseProcess;
  13. class AdminUser extends BaseProcess
  14. {
  15. /**
  16. * 模型
  17. *
  18. * @var object
  19. *
  20. */
  21. private $objModel;
  22. /**
  23. * 初始化
  24. */
  25. public function __construct()
  26. {
  27. if( !$this->objModel) $this->objModel = new AdminUserModel();
  28. }
  29. public function model()
  30. {
  31. $this->setSucessCode();
  32. return $this->objModel;
  33. }
  34. /**
  35. * 搜索
  36. * @param $search
  37. * @param $pagesize
  38. */
  39. public function search($search, $orderby = array(), $pagesize = PAGE_NUMS)
  40. {
  41. $currentQuery = $this->objModel;
  42. if(isset($search['keyword']) && !empty($search['keyword'])) {
  43. $keywords = '%' . $search['keyword'] . '%';
  44. $currentQuery = $currentQuery->where(function ($query) use ($keywords) {
  45. $query->where('name' , 'like', $keywords)
  46. ->orwhere('email', 'like', $keywords)
  47. ->orwhere('mobile', 'like', $keywords);
  48. });
  49. }
  50. if(isset($search['resetPwd']) && $search['resetPwd']) {
  51. $currentQuery = $currentQuery->where('reset_password', '<>', '');
  52. }
  53. if($orderby && is_array($orderby)){
  54. foreach ($orderby AS $field => $value){
  55. $currentQuery = $currentQuery -> orderBy($field, $value);
  56. }
  57. }else{
  58. $currentQuery = $currentQuery->orderBy('id', 'DESC');
  59. }
  60. $currentQuery = $currentQuery->paginate($pagesize);
  61. return $currentQuery;
  62. }
  63. /**
  64. * 添加
  65. * @param $data
  66. */
  67. public function create($data)
  68. {
  69. // 判断是否唯一
  70. /* if($this->objModel->where('name', '=', $data['name'])->count()){
  71. $this->setMsg("已经存在【{$data['name']}】用户!");
  72. return false;
  73. } */
  74. $data['username'] = isset($data['username']) ? $data['username'] : "";
  75. $data['email'] = isset($data['email']) ? $data['email'] : "";
  76. $data['mobile'] = isset($data['mobile']) ? $data['mobile'] : "";
  77. if($data['username']== "" && $data['email']=="" && $data['mobile']=="") {
  78. $this->setMsg("至少有一个登陆凭证");
  79. return false;
  80. }
  81. if(isset($data['username']) && $data['username']) {
  82. if(is_numeric($data['username'])) {
  83. $this->setMsg("用户名不能是全数字!");
  84. return false;
  85. }
  86. if(strpos($data['username'],"@")) {
  87. $this->setMsg("用户名不能有@符号!");
  88. return false;
  89. }
  90. if($this->objModel->where('username', '=', $data['username'])->count()){
  91. $this->setMsg("已经存在的用户名!");
  92. return false;
  93. }
  94. }
  95. if(isset($data['email']) && $data['email']) {
  96. if($this->objModel->where('email', '=', $data['email'])->count()){
  97. $this->setMsg("已经存在的邮箱!");
  98. return false;
  99. }
  100. }
  101. if(isset($data['mobile']) && $data['mobile']) {
  102. if($this->objModel->where('mobile', '=', $data['mobile'])->count()){
  103. $this->setMsg("已经存在的手机号!");
  104. return false;
  105. }
  106. }
  107. if(isset($data['password']) && $data['password']){
  108. $data['password'] = bcrypt($data['password']);
  109. }
  110. return $this->objModel->create($data);
  111. }
  112. /**
  113. * 更新
  114. * @param $id
  115. * @param $data
  116. */
  117. public function update($id, $data)
  118. {
  119. $obj = $this->objModel->find($id);
  120. if(!$obj) {
  121. return false;
  122. }
  123. if(isset($data['password']) && $data['password']){
  124. $data['password'] = bcrypt($data['password']);
  125. }
  126. if(isset($data['username']) && $data['username']) {
  127. if(is_numeric($data['username'])) {
  128. $this->setMsg("用户名不能是全数字!");
  129. return false;
  130. }
  131. if(strpos($data['username'],"@")) {
  132. $this->setMsg("用户名不能有@符号!");
  133. return false;
  134. }
  135. if($this->objModel->where('username', '=', $data['username'])->where('id',"<>",$id)->count()){
  136. $this->setMsg("已经存在的用户名!");
  137. return false;
  138. }
  139. }
  140. if(isset($data['email']) && $data['email']) {
  141. if($this->objModel->where('email', '=', $data['email'])->where('id',"<>",$id)->count()){
  142. $this->setMsg("已经存在的邮箱!");
  143. return false;
  144. }
  145. }
  146. if(isset($data['mobile']) && $data['mobile']) {
  147. if($this->objModel->where('mobile', '=', $data['mobile'])->where('id',"<>",$id)->count()){
  148. $this->setMsg("已经存在的手机号!");
  149. return false;
  150. }
  151. }
  152. $ok = $obj->update($data);
  153. return $ok;
  154. }
  155. /**
  156. * 更新状态
  157. * @param $id
  158. * @param $status
  159. */
  160. public function updateStatus($id, $status)
  161. {
  162. $data = $this->objModel->find($id);
  163. //禁用
  164. $mobile = $data->mobile;
  165. $data->status = $status;
  166. return $data->save();
  167. }
  168. /**
  169. * 删除
  170. * @param $id
  171. */
  172. public function destroy($id)
  173. {
  174. return $this->objModel->destroy($id);
  175. }
  176. /**
  177. * 获取一行数据
  178. * @param $where
  179. * @return
  180. */
  181. public function find($id)
  182. {
  183. return $this->objModel->find($id);
  184. }
  185. public function login($login,$password) {
  186. if(is_numeric($login)) {
  187. $loginField = "mobile";
  188. }elseif(strpos($login,"@")) {
  189. $loginField = "email";
  190. }else{
  191. $loginField = "username";
  192. }
  193. if (\Auth::guard('admin')->attempt(array($loginField => $login, 'password' =>$password)))
  194. {
  195. $data = \Auth::guard('admin')->user();
  196. if($data->status==0) {
  197. $this->setMsg('账号正在努力审核中...');
  198. return false;
  199. }
  200. if(!$data->status) {
  201. $this->setMsg('账号被禁用');
  202. return false;
  203. }
  204. $role = [];
  205. if($data->is_root) {
  206. $aclObj = new Acl();
  207. $data = $aclObj->getRootFunc();
  208. $role['role'] =$data['func'];
  209. $role['menus'] =$data['menus'];
  210. }elseif($data->admin_role_id) {
  211. $aclObj = new Acl();
  212. $data = $aclObj->getRoleFunc($data->admin_role_id);
  213. $role['role'] =$data['func'];
  214. $role['menus'] =$data['menus'];
  215. }
  216. session()->put(LOGIN_MARK_SESSION_KEY, $role);
  217. session()->save();
  218. return true;
  219. }else{
  220. $this->setMsg('用户密码错误');
  221. return false;
  222. }
  223. }
  224. /**
  225. * 重设密码
  226. * @param $loginName
  227. * @param $data
  228. */
  229. public function resetPwd($loginName,$data) {
  230. if(is_numeric($loginName)) {
  231. $loginField = "mobile";
  232. }elseif(strpos($loginName,"@")) {
  233. $loginField = "email";
  234. }else{
  235. $loginField = "username";
  236. }
  237. $user = $this->objModel->where($loginField,$loginName)->first();
  238. if(!$user) {
  239. $this->setMsg('没有找到用户');
  240. return false;
  241. }
  242. $user->reset_password = bcrypt($data['reset_password']);
  243. $user->reset_password_img = $data['reset_password_img'];
  244. $ok = $user->save();
  245. if(!$ok) {
  246. $this->setMsg('操作失败');
  247. return false;
  248. }
  249. return true;
  250. }
  251. /**
  252. * 查询多条数据
  253. */
  254. public function get($pagesize = PAGE_NUMS) {
  255. return $this->objModel->take($pagesize)->orderBy('id', 'DESC')->get();
  256. }
  257. /**
  258. * 查询多条数据并分页
  259. */
  260. public function getPage($pagesize = PAGE_NUMS) {
  261. return $this->objModel->orderBy('id', 'DESC')->paginate($pagesize);
  262. }
  263. }