| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 | <?php/** *  用户操作 *  @author  Mike <m@9026.com> *  @version    1.0 *  @date 2015年11月13日 * */namespace App\Services\Admin;use App\Models\AdminUserModel;use Hash;use App\Services\Base\BaseProcess;class AdminUser extends BaseProcess{    /**     * 模型     *     * @var object     *     */    private $objModel;    /**     * 初始化     */    public function __construct()    {        if( !$this->objModel) $this->objModel = new AdminUserModel();    }    public function model()    {        $this->setSucessCode();        return $this->objModel;    }    /**     * 搜索     * @param $search     * @param $pagesize     */    public function search($search, $orderby = array(), $pagesize = PAGE_NUMS)    {        $currentQuery = $this->objModel;        if(isset($search['keyword']) && !empty($search['keyword'])) {            $keywords = '%' . $search['keyword'] . '%';            $currentQuery = $currentQuery->where(function ($query) use ($keywords) {                $query->where('name'  , 'like', $keywords)                    ->orwhere('email', 'like', $keywords)                    ->orwhere('mobile', 'like', $keywords);            });        }        if(isset($search['resetPwd']) && $search['resetPwd']) {            $currentQuery = $currentQuery->where('reset_password', '<>', '');        }        if($orderby && is_array($orderby)){            foreach ($orderby AS $field => $value){                $currentQuery = $currentQuery -> orderBy($field, $value);            }        }else{            $currentQuery = $currentQuery->orderBy('id', 'DESC');        }        $currentQuery = $currentQuery->paginate($pagesize);        return $currentQuery;    }    /**     * 添加     * @param $data     */    public function create($data)    {        // 判断是否唯一        if($this->objModel->where('name', '=', $data['name'])->count()){            $this->setMsg("已经存在【{$data['name']}】用户!");            return false;        }        $data['name'] = isset($data['name']) ? $data['name'] : "";        $data['email'] = isset($data['email']) ? $data['email'] : "";        $data['mobile'] = isset($data['mobile']) ? $data['mobile'] : "";        $data['real_name'] = isset($data['real_name']) ? $data['real_name'] : "";        if($data['name']== "" && $data['email']=="" && $data['mobile']=="") {            $this->setMsg("至少有一个登陆凭证");            return false;        }        if(isset($data['name']) && $data['name']) {            if(is_numeric($data['name'])) {                $this->setMsg("用户名不能是全数字!");                return false;            }            if(strpos($data['name'],"@")) {                $this->setMsg("用户名不能有@符号!");                return false;            }            if($this->objModel->where('name', '=', $data['name'])->count()){                $this->setMsg("已经存在的用户名!");                return false;            }        }        if(isset($data['email']) && $data['email']) {            if($this->objModel->where('email', '=', $data['email'])->count()){                $this->setMsg("已经存在的邮箱!");                return false;            }        }        if(isset($data['mobile']) && $data['mobile']) {            if($this->objModel->where('mobile', '=', $data['mobile'])->count()){                $this->setMsg("已经存在的手机号!");                return false;            }        }        if(isset($data['password']) && $data['password']){            $data['password'] = bcrypt($data['password']);        }        return $this->objModel->create($data);    }    /**     * 更新     * @param $id     * @param $data     */    public function update($id, $data)    {        $obj = $this->objModel->find($id);        if(!$obj) {            return false;        }        if(isset($data['real_name']) && $data['real_name']){            $data['real_name'] = $data['real_name'];        }        if(isset($data['password']) && $data['password']){            $data['password'] = bcrypt($data['password']);        }        if(isset($data['name']) && $data['name']) {            if(is_numeric($data['name'])) {                $this->setMsg("用户名不能是全数字!");                return false;            }            if(strpos($data['name'],"@")) {                $this->setMsg("用户名不能有@符号!");                return false;            }            if($this->objModel->where('name', '=', $data['name'])->where('id',"<>",$id)->count()){                $this->setMsg("已经存在的用户名!");                return false;            }        }        if(isset($data['email']) && $data['email']) {            if($this->objModel->where('email', '=', $data['email'])->where('id',"<>",$id)->count()){                $this->setMsg("已经存在的邮箱!");                return false;            }        }        if(isset($data['mobile']) && $data['mobile']) {            if($this->objModel->where('mobile', '=', $data['mobile'])->where('id',"<>",$id)->count()){                $this->setMsg("已经存在的手机号!");                return false;            }        }        $ok = $obj->update($data);        return $ok;    }    /**     * 更新状态     * @param $id     * @param $status     */    public function updateStatus($id, $status)    {        $data = $this->objModel->find($id);        //禁用        $mobile = $data->mobile;        $data->status = $status;        return $data->save();    }    /**     * 删除     * @param $id     */    public function destroy($id)    {        return $this->objModel->destroy($id);    }    /**     * 获取一行数据     * @param $where     * @return     */    public function find($id)    {        return $this->objModel->find($id);    }    public function login($login,$password) {        if(is_numeric($login)) {            $loginField = "mobile";        }elseif(strpos($login,"@")) {            $loginField = "email";        }else{            $loginField = "name";        }        if (\Auth::guard('admin')->attempt(array($loginField => $login, 'password' =>$password)))        {            $data =  \Auth::guard('admin')->user();            if($data->status==0) {                $this->setMsg('账号正在努力审核中...');                return false;            }            if(!$data->status) {                $this->setMsg('账号被禁用');                return false;            }            $role = [];            if($data->is_root) {                $aclObj = new Acl();                $data =  $aclObj->getRootFunc();                $role['role'] =$data['func'];                $role['menus'] =$data['menus'];            }elseif($data->admin_role_id) {                $aclObj = new Acl();                $data =  $aclObj->getRoleFunc($data->admin_role_id);                $role['role'] =$data['func'];                $role['menus'] =$data['menus'];            }            session()->put(LOGIN_MARK_SESSION_KEY, $role);            session()->save();            return true;        }else{            $this->setMsg('用户密码错误');            return false;        }    }    /**     * 重设密码     * @param $loginName     * @param $data     */    public function resetPwd($loginName,$data) {        if(is_numeric($loginName)) {            $loginField = "mobile";        }elseif(strpos($loginName,"@")) {            $loginField = "email";        }else{            $loginField = "username";        }        $user = $this->objModel->where($loginField,$loginName)->first();        if(!$user) {            $this->setMsg('没有找到用户');            return false;        }        $user->reset_password = bcrypt($data['reset_password']);        $user->reset_password_img = $data['reset_password_img'];        $ok = $user->save();        if(!$ok) {            $this->setMsg('操作失败');            return false;        }        return true;    }    /**     * 查询多条数据     */    public function get($pagesize = PAGE_NUMS) {        return $this->objModel->take($pagesize)->orderBy('id', 'DESC')->get();    }    /**     * 查询多条数据并分页     */    public function getPage($pagesize = PAGE_NUMS) {        return $this->objModel->orderBy('id', 'DESC')->paginate($pagesize);    }}
 |