AdminUser.php 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  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(), $store_id, $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 ($store_id != 0) {
  51. $currentQuery = $currentQuery->where('store_id', $store_id);
  52. }
  53. if(isset($search['resetPwd']) && $search['resetPwd']) {
  54. $currentQuery = $currentQuery->where('reset_password', '<>', '');
  55. }
  56. if($orderby && is_array($orderby)){
  57. foreach ($orderby AS $field => $value){
  58. $currentQuery = $currentQuery -> orderBy($field, $value);
  59. }
  60. }else{
  61. $currentQuery = $currentQuery->orderBy('id', 'DESC');
  62. }
  63. $currentQuery = $currentQuery->paginate($pagesize);
  64. return $currentQuery;
  65. }
  66. /**
  67. * 添加
  68. * @param $data
  69. */
  70. public function create($data)
  71. {
  72. // 判断是否唯一
  73. if($this->objModel->where('name', '=', $data['name'])->count()){
  74. $this->setMsg("已经存在【{$data['name']}】用户!");
  75. return false;
  76. }
  77. $data['name'] = isset($data['name']) ? $data['name'] : "";
  78. $data['email'] = isset($data['email']) ? $data['email'] : "";
  79. $data['mobile'] = isset($data['mobile']) ? $data['mobile'] : "";
  80. $data['real_name'] = isset($data['real_name']) ? $data['real_name'] : "";
  81. if($data['name']== "" && $data['email']=="" && $data['mobile']=="") {
  82. $this->setMsg("至少有一个登陆凭证");
  83. return false;
  84. }
  85. if(isset($data['name']) && $data['name']) {
  86. if(is_numeric($data['name'])) {
  87. $this->setMsg("用户名不能是全数字!");
  88. return false;
  89. }
  90. if(strpos($data['name'],"@")) {
  91. $this->setMsg("用户名不能有@符号!");
  92. return false;
  93. }
  94. if($this->objModel->where('name', '=', $data['name'])->count()){
  95. $this->setMsg("已经存在的用户名!");
  96. return false;
  97. }
  98. }
  99. if(isset($data['email']) && $data['email']) {
  100. if($this->objModel->where('email', '=', $data['email'])->count()){
  101. $this->setMsg("已经存在的邮箱!");
  102. return false;
  103. }
  104. }
  105. if(isset($data['mobile']) && $data['mobile']) {
  106. if($this->objModel->where('mobile', '=', $data['mobile'])->count()){
  107. $this->setMsg("已经存在的手机号!");
  108. return false;
  109. }
  110. }
  111. if(isset($data['password']) && $data['password']){
  112. $data['password'] = bcrypt($data['password']);
  113. }
  114. return $this->objModel->create($data);
  115. }
  116. /**
  117. * 更新
  118. * @param $id
  119. * @param $data
  120. */
  121. public function update($id, $data)
  122. {
  123. $obj = $this->objModel->find($id);
  124. if(!$obj) {
  125. return false;
  126. }
  127. if(isset($data['real_name']) && $data['real_name']){
  128. $data['real_name'] = $data['real_name'];
  129. }
  130. if(isset($data['password']) && $data['password']){
  131. $data['password'] = bcrypt($data['password']);
  132. }
  133. if(isset($data['name']) && $data['name']) {
  134. if(is_numeric($data['name'])) {
  135. $this->setMsg("用户名不能是全数字!");
  136. return false;
  137. }
  138. if(strpos($data['name'],"@")) {
  139. $this->setMsg("用户名不能有@符号!");
  140. return false;
  141. }
  142. if($this->objModel->where('name', '=', $data['name'])->where('id',"<>",$id)->count()){
  143. $this->setMsg("已经存在的用户名!");
  144. return false;
  145. }
  146. }
  147. if(isset($data['email']) && $data['email']) {
  148. if($this->objModel->where('email', '=', $data['email'])->where('id',"<>",$id)->count()){
  149. $this->setMsg("已经存在的邮箱!");
  150. return false;
  151. }
  152. }
  153. if(isset($data['mobile']) && $data['mobile']) {
  154. if($this->objModel->where('mobile', '=', $data['mobile'])->where('id',"<>",$id)->count()){
  155. $this->setMsg("已经存在的手机号!");
  156. return false;
  157. }
  158. }
  159. $ok = $obj->update($data);
  160. return $ok;
  161. }
  162. /**
  163. * 更新状态
  164. * @param $id
  165. * @param $status
  166. */
  167. public function updateStatus($id, $status)
  168. {
  169. $data = $this->objModel->find($id);
  170. //禁用
  171. $mobile = $data->mobile;
  172. $data->status = $status;
  173. return $data->save();
  174. }
  175. /**
  176. * 删除
  177. * @param $id
  178. */
  179. public function destroy($id)
  180. {
  181. return $this->objModel->destroy($id);
  182. }
  183. /**
  184. * 获取一行数据
  185. * @param $where
  186. * @return
  187. */
  188. public function find($id)
  189. {
  190. return $this->objModel->find($id);
  191. }
  192. public function login($login,$password) {
  193. if(is_numeric($login)) {
  194. $loginField = "mobile";
  195. }elseif(strpos($login,"@")) {
  196. $loginField = "email";
  197. }else{
  198. $loginField = "name";
  199. }
  200. if (\Auth::guard('admin')->attempt(array($loginField => $login, 'password' =>$password)))
  201. {
  202. $data = \Auth::guard('admin')->user();
  203. if($data->status==0) {
  204. $this->setMsg('账号正在努力审核中...');
  205. return false;
  206. }
  207. if(!$data->status) {
  208. $this->setMsg('账号被禁用');
  209. return false;
  210. }
  211. $role = [];
  212. session()->put('store_id', $data->store_id);
  213. if($data->is_root) {
  214. $aclObj = new Acl();
  215. $data = $aclObj->getRootFunc();
  216. $role['role'] =$data['func'];
  217. $role['menus'] =$data['menus'];
  218. }elseif($data->admin_role_id) {
  219. $aclObj = new Acl();
  220. $data = $aclObj->getRoleFunc($data->admin_role_id);
  221. $role['role'] =$data['func'];
  222. $role['menus'] =$data['menus'];
  223. }
  224. session()->put(LOGIN_MARK_SESSION_KEY, $role);
  225. session()->save();
  226. return true;
  227. }else{
  228. $this->setMsg('用户密码错误');
  229. return false;
  230. }
  231. }
  232. /**
  233. * 重设密码
  234. * @param $loginName
  235. * @param $data
  236. */
  237. public function resetPwd($loginName,$data) {
  238. if(is_numeric($loginName)) {
  239. $loginField = "mobile";
  240. }elseif(strpos($loginName,"@")) {
  241. $loginField = "email";
  242. }else{
  243. $loginField = "username";
  244. }
  245. $user = $this->objModel->where($loginField,$loginName)->first();
  246. if(!$user) {
  247. $this->setMsg('没有找到用户');
  248. return false;
  249. }
  250. $user->reset_password = bcrypt($data['reset_password']);
  251. $user->reset_password_img = $data['reset_password_img'];
  252. $ok = $user->save();
  253. if(!$ok) {
  254. $this->setMsg('操作失败');
  255. return false;
  256. }
  257. return true;
  258. }
  259. /**
  260. * 查询多条数据
  261. */
  262. public function get($pagesize = PAGE_NUMS) {
  263. return $this->objModel->take($pagesize)->orderBy('id', 'DESC')->get();
  264. }
  265. /**
  266. * 查询多条数据并分页
  267. */
  268. public function getPage($pagesize = PAGE_NUMS) {
  269. return $this->objModel->orderBy('id', 'DESC')->paginate($pagesize);
  270. }
  271. }