You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
300 lines
10 KiB
300 lines
10 KiB
<?php
|
|
|
|
// +----------------------------------------------------------------------
|
|
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ]
|
|
// +----------------------------------------------------------------------
|
|
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved.
|
|
// +----------------------------------------------------------------------
|
|
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权
|
|
// +----------------------------------------------------------------------
|
|
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397
|
|
// +----------------------------------------------------------------------
|
|
|
|
namespace app\agent\model\merchant;
|
|
|
|
|
|
use app\merchant\model\merchant\Merchant as MerchantModel;
|
|
use behavior\system\SystemBehavior;
|
|
use think\Request;
|
|
use traits\ModelTrait;
|
|
use basic\ModelBasic;
|
|
use service\HookService;
|
|
use think\Db;
|
|
use think\Session;
|
|
|
|
/**
|
|
* Class MerchantAdmin
|
|
* @package app\merchant\model\merchant
|
|
*/
|
|
class MerchantAdmin extends ModelBasic
|
|
{
|
|
use ModelTrait;
|
|
|
|
protected $insert = ['add_time'];
|
|
|
|
public static function setAddTimeAttr($value)
|
|
{
|
|
return time();
|
|
}
|
|
|
|
public static function setRolesAttr($value)
|
|
{
|
|
return is_array($value) ? implode(',', $value) : $value;
|
|
}
|
|
|
|
|
|
/**
|
|
* 用户登陆
|
|
* @param string $account 账号
|
|
* @param string $pwd 密码
|
|
* @param string $verify 验证码
|
|
* @return bool 登陆成功失败
|
|
*/
|
|
public static function login($account, $pwd)
|
|
{
|
|
$adminInfo = self::where(['account' => $account, 'status' => 1, 'is_del' => 0])->find();
|
|
if (!$adminInfo) {
|
|
$adminList = self::where(['status' => 1, 'is_del' => 0])->select();
|
|
foreach ($adminList as $k => $v) {
|
|
$arr = explode('@', $v['account']);
|
|
if (count($arr) <= 1) continue;
|
|
if ($account != $arr[1]) continue;
|
|
$adminInfo = self::where('id', $v['id'])->find();
|
|
break;
|
|
}
|
|
}
|
|
if (!$adminInfo) return self::setErrorInfo('账号不存在!');
|
|
if ($adminInfo['pwd'] != $pwd) return self::setErrorInfo('账号或密码错误,请重新输入');
|
|
if (!$adminInfo['status']) return self::setErrorInfo('该账号已被关闭!');
|
|
$merchantInfo = MerchantModel::get($adminInfo['mer_id']);
|
|
if (!$merchantInfo) return self::setErrorInfo('该商户不存在!');
|
|
if (!$merchantInfo['status']) return self::setErrorInfo('该商户已被关闭!');
|
|
if ($merchantInfo['is_del']) return self::setErrorInfo('该商户已被删除!');
|
|
self::setLoginInfo($adminInfo->toArray());
|
|
self::setMerchantInfo($merchantInfo->toArray());
|
|
$adminInfo['last_ip'] = Request::instance()->ip();
|
|
$adminInfo['last_time'] = time();
|
|
$adminInfo['login_count'] += 1;
|
|
$adminInfo->save();
|
|
HookService::afterListen('merchant_admin_login', $adminInfo, $merchantInfo, false, SystemBehavior::class);
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* 用户登陆
|
|
* @param string $account 账号
|
|
* @param string $pwd 密码
|
|
* @param string $verify 验证码
|
|
* @return bool 登陆成功失败
|
|
*/
|
|
public static function adminMerLogin($account)
|
|
{
|
|
$adminInfo = self::where(['account' => $account, 'status' => 1, 'is_del' => 0])->find();
|
|
if (!$adminInfo) {
|
|
$adminList = self::where(['status' => 1, 'is_del' => 0])->select();
|
|
foreach ($adminList as $k => $v) {
|
|
$arr = explode('@', $v['account']);
|
|
if (count($arr) <= 1) continue;
|
|
if ($account != $arr[1]) continue;
|
|
$adminInfo = self::where('id', $v['id'])->find();
|
|
break;
|
|
}
|
|
}
|
|
if (!$adminInfo) return self::setErrorInfo('账号不存在!');
|
|
if (!$adminInfo['status']) return self::setErrorInfo('该账号已被关闭!');
|
|
$merchantInfo = MerchantModel::get($adminInfo['mer_id']);
|
|
if (!$merchantInfo) return self::setErrorInfo('该商户不存在!');
|
|
if (!$merchantInfo['status']) return self::setErrorInfo('该商户已被关闭!');
|
|
if ($merchantInfo['is_del']) return self::setErrorInfo('该商户已被删除!');
|
|
self::setLoginInfo($adminInfo->toArray());
|
|
self::setMerchantInfo($merchantInfo->toArray());
|
|
$adminInfo['last_ip'] = Request::instance()->ip();
|
|
$adminInfo['last_time'] = time();
|
|
$adminInfo['login_count'] += 1;
|
|
$adminInfo->save();
|
|
HookService::afterListen('merchant_admin_login', $adminInfo, $merchantInfo, false, SystemBehavior::class);
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* 保存当前登陆用户信息
|
|
*/
|
|
public static function setLoginInfo($adminInfo)
|
|
{
|
|
Session::set('merAdminId', $adminInfo['id'], 'merchant');
|
|
Session::set('merAdminInfo', $adminInfo, 'merchant');
|
|
}
|
|
|
|
/**
|
|
* 保存当前登陆用户信息商户
|
|
* @param $merchantInfo
|
|
*/
|
|
public static function setMerchantInfo($merchantInfo)
|
|
{
|
|
Session::set('merchantInfo', $merchantInfo, 'merchant');
|
|
Session::set('merchantId', $merchantInfo['id'], 'merchant');
|
|
}
|
|
|
|
/**
|
|
* 清空当前登陆用户信息
|
|
*/
|
|
public static function clearLoginInfo()
|
|
{
|
|
Session::delete('merAdminInfo', 'merchant');
|
|
Session::delete('merAdminId', 'merchant');
|
|
Session::delete('merchantInfo', 'merchant');
|
|
Session::delete('merchantId', 'merchant');
|
|
Session::clear('merchant');
|
|
}
|
|
|
|
/**
|
|
* 检查用户登陆状态
|
|
* @return bool
|
|
*/
|
|
public static function hasActiveAdmin()
|
|
{
|
|
return Session::has('merAdminInfo', 'merchant') && Session::has('merAdminId', 'merchant');
|
|
}
|
|
|
|
/**
|
|
* 获得登陆用户信息
|
|
* @return mixed
|
|
*/
|
|
public static function activeAdminInfoOrFail()
|
|
{
|
|
$adminInfo = Session::get('merAdminInfo', 'merchant');
|
|
$adminInfo['entry_type'] = Db::name('lecturer')->where('mer_id',$adminInfo['mer_id'])->value('entry_type');
|
|
if (!$adminInfo) exception('请登陆');
|
|
if (!$adminInfo['status']) exception('该账号已被关闭!');
|
|
return $adminInfo;
|
|
}
|
|
|
|
/**
|
|
* 获得登陆用户Id 如果没有直接抛出错误
|
|
* @return mixed
|
|
*/
|
|
public static function activeAdminIdOrFail()
|
|
{
|
|
$adminId = Session::get('merAdminInfo', 'merchant');
|
|
if (!$adminId) exception('访问用户为登陆登陆!');
|
|
return $adminId;
|
|
}
|
|
|
|
public static function activeMerchantInfoOrFail()
|
|
{
|
|
$merchantInfo = Session::get('merchantInfo', 'merchant');
|
|
if (!$merchantInfo) exception('访问用户为登陆登陆!');
|
|
return $merchantInfo;
|
|
}
|
|
|
|
public static function activeMerchantIdOrFail()
|
|
{
|
|
$merchantId = Session::get('merchantId', 'merchant');
|
|
if (!$merchantId) exception('访问用户为登陆登陆!');
|
|
return $merchantId;
|
|
}
|
|
|
|
/**获取讲师权限
|
|
* @return array
|
|
*/
|
|
public static function activeAdminAuthOrFail()
|
|
{
|
|
$adminInfo = self::activeAdminIdOrFail();
|
|
$adminInfo['entry_type'] = Db::name('lecturer')->where('mer_id',$adminInfo['mer_id'])->value('entry_type');
|
|
if($adminInfo['entry_type'] == 1){
|
|
return MerchantMenus::rulesByAuth($adminInfo['rules']);
|
|
}else{
|
|
return InstitutionMenus::rulesByAuth($adminInfo['rules']);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获得有效管理员信息
|
|
* @param $id
|
|
* @return
|
|
*/
|
|
public static function getValidAdminInfoOrFail($id)
|
|
{
|
|
$adminInfo = self::where(compact('id'))->find();
|
|
if (!$adminInfo) exception('用户不能存在!');
|
|
if (!$adminInfo['status']) exception('该账号已被关闭!');
|
|
return $adminInfo;
|
|
}
|
|
|
|
/**
|
|
* @param $field
|
|
* @return false|\PDOStatement|string|\think\Collection
|
|
*/
|
|
public static function getOrdAdmin($field = 'real_name,id')
|
|
{
|
|
return self::where('level', '>', 0)->field($field)->select();
|
|
}
|
|
|
|
/**
|
|
* 管理员操作记录
|
|
* @param string $field
|
|
* @param $level
|
|
* @return false|\PDOStatement|string|\think\Collection
|
|
*/
|
|
public static function getAdminLog($field = 'real_name,id', $level)
|
|
{
|
|
return self::where('level', '>=', $level)->field($field)->select();
|
|
}
|
|
|
|
public static function getTopAdmin($field = 'real_name,id')
|
|
{
|
|
return self::where('level', 0)->field($field)->select();
|
|
}
|
|
|
|
/**
|
|
* @param $where
|
|
* @return array
|
|
*/
|
|
public static function systemPage($where, $level = 0)
|
|
{
|
|
$model = new self;
|
|
if ($where['name'] != '') {
|
|
$model = $model->where('account|real_name', 'LIKE', "%$where[name]%");
|
|
}
|
|
$merchant = self::activeMerchantInfoOrFail();
|
|
$model = $model->where('mer_id', $merchant['id']);
|
|
$model = $model->where('level', '>', $level);
|
|
$model = $model->where('is_del', 0);
|
|
return self::page($model, $where);
|
|
}
|
|
|
|
/**
|
|
* 获取可用权限
|
|
* @param $merId '当前登录的id'
|
|
* @return array
|
|
*/
|
|
public static function getRule($rules)
|
|
{
|
|
$adminInfo = self::activeAdminIdOrFail();
|
|
$adminInfo['entry_type'] = Db::name('lecturer')->where('mer_id',$adminInfo['mer_id'])->value('entry_type');
|
|
if($adminInfo['entry_type'] == 1){
|
|
$ruleList = MerchantMenus::where('id', 'IN', $rules)->whereOr('pid', 0)->order('sort DESC')->select();
|
|
return MerchantMenus::tidyMenuTier(false, $ruleList);
|
|
}else{
|
|
$ruleList = InstitutionMenus::where('id', 'IN', $rules)->whereOr('pid', 0)->order('sort DESC')->select();
|
|
return InstitutionMenus::tidyMenuTier(false, $ruleList);
|
|
}
|
|
|
|
}
|
|
|
|
public static function getAccount($account)
|
|
{
|
|
$merchant = self::activeMerchantInfoOrFail();
|
|
$merchant_account = self::where('mer_id', $merchant['id'])->where('level', 0)->value('account');
|
|
$account_vif = $merchant_account . '@' . $account;
|
|
return self::where('mer_id', $merchant['id'])->where('account', $account_vif)->count();
|
|
}
|
|
|
|
/**
|
|
* 获取商户管理员
|
|
*/
|
|
public static function getMerchantAdmin($mer_id)
|
|
{
|
|
if ($mer_id) return self::where('mer_id', $mer_id)->field('account,id')->select()->toArray();
|
|
}
|
|
}
|
|
|