| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445 |
- <?php
- namespace bizGhs\admin\classes;
- use bizHd\user\classes\UserClass;
- use bizGhs\shop\classes\ShopAdminClass;
- use biz\shop\classes\ShopClass;
- use common\components\dict;
- use common\components\imgUtil;
- use common\components\sms;
- use common\components\stringUtil;
- use common\components\util;
- use common\services\ImageService;
- use Yii;
- use bizGhs\base\classes\BaseClass;
- class AdminClass extends BaseClass
- {
- public static $baseFile = '\bizGhs\admin\models\Admin';
- //未知身份
- CONST IDENTITY_UNKNOWN = 0;
- //客户,花店
- const IDENTITY_CUSTOM = 1;
- //供货商员工
- const IDENTITY_STAFF = 2;
- public static function getRecentShop($admin)
- {
- $recent = $admin['recentShop'];
- $arr = [];
- if (!empty($recent)) {
- $ids = json_decode($recent, true);
- $list = ShopClass::getShopByIds($ids);
- if (!empty($list)) {
- foreach ($list as $key => $val) {
- $arr[] = [
- 'shopId' => $val['id'],
- 'shopName' => $val['shopName'],
- 'shopImg' => $val['avatar'],
- ];
- }
- }
- }
- return $arr;
- }
- //最近访问的门店 ssh 2021.3.1
- public static function addRecentShop($lookShopId, $admin)
- {
- if (empty($lookShopId)) {
- return false;
- }
- $hasRecentShop = $admin['recentShop'];
- $adminId = $admin['id'];
- $newShopIds = [];
- if (!empty($hasRecentShop)) {
- $newShopIds = json_decode($hasRecentShop, true);
- }
- $newShopIds = array_merge($newShopIds, [$lookShopId]);
- $newShopIds = array_unique(array_filter($newShopIds));
- self::updateById($adminId, ['recentShop' => json_encode($newShopIds)]);
- }
- //开店时初始化员工和角色
- public static function initAdmin($initData, $mainId, $shop)
- {
- $shopId = $shop->id ?? 0;
- $mobile = $initData['mobile'] ?? 0;
- $adminId = $initData['adminId'] ?? 0;
- AdminRoleClass::addAdminRole(['roleName' => '员工', 'mainId' => $mainId, 'auth' => '']);
- $roleReturn = AdminRoleClass::addAdminRole(['roleName' => '店长', 'num' => 1, 'mainId' => $mainId, 'auth' => '*']);
- $roleId = $roleReturn['id'];
- $admin = \biz\admin\classes\AdminClass::getById($adminId, true);
- if (empty($admin)) {
- util::fail('没有找到管理员信息');
- }
- if ($admin->openGhsShop == 1 || empty($admin->currentGhsShopId)) {
- //只有申请开店时添加门店时才绑定关系
- $admin->openGhsShop = 3;
- $admin->currentGhsShopId = $shopId;
- $admin->save();
- }
- //避免出现同样的员工
- $staff = ShopAdminClass::getByCondition(['mainId' => $mainId, 'adminId' => $adminId], true);
- if (empty($staff)) {
- $avatar = $admin->avatar;
- $name = $admin->name;
- $shopData = [
- 'adminId' => $adminId,
- 'mainId' => $mainId,
- 'remind' => 1,
- 'roleId' => $roleId,
- 'default' => 1,
- 'avatar' => $avatar,
- 'name' => $name,
- 'super' => 1,
- 'founder' => 2,
- 'mobile' => $mobile,
- ];
- ShopAdminClass::add($shopData);
- }
- }
- //组合员工基本信息 ssh 2019.12.9
- public static function groupAdminBaseInfo($list)
- {
- foreach ($list as $key => $val) {
- $list[$key]['roleName'] = '';
- $list[$key]['avatar'] = imgUtil::groupImg($val['avatar']);
- $list[$key]['addDate'] = date("Y-m-d H:i", $val['addTime']);
- $list[$key]['lastLoginTime'] = date("Y-m-d H:i", $val['loginTime']);
- $list[$key]['openId'] = isset($val['openId']) && !empty($val['openId']) ? 'secret' : '';
- $list[$key]['password'] = isset($val['password']) && !empty($val['password']) ? 'secret' : '';
- $list[$key]['payPassword'] = isset($val['payPassword']) && !empty($val['payPassword']) ? 'secret' : '';
- }
- return $list;
- }
- //取单个员工详情 ssh 2019.12.9
- public static function getAdminById($id)
- {
- $detail = AdminClass::getById($id);
- if (empty($detail)) {
- util::fail('没有找到员工信息!');
- }
- $list = self::groupAdminBaseInfo([$detail]);
- return current($list);
- }
- //取多个员工信息 ssh 2021.1.19
- public static function getAdminByIds($ids)
- {
- $adminList = self::getByIds($ids, null, 'id');
- if (empty($adminList)) {
- return [];
- }
- $adminList = self::groupAdminBaseInfo($adminList);
- return $adminList;
- }
- //添加员工 ssh 2019.12.9
- public static function addAdmin($data)
- {
- $sjId = $data['sjId'];
- //验证角色
- $roleId = $data['roleId'];
- $role = AdminRoleClass::getById($roleId);
- AdminRoleClass::valid($role, $sjId);
- //验证关联的微信
- $adminId = $data['admin'];
- $admin = self::getById($adminId);
- if (empty($admin)) {
- util::fail('没有找到管理员信息');
- }
- $data['password'] = password_hash($data['password'], PASSWORD_BCRYPT);
- $respond = self::add($data);
- return $respond;
- }
- //获取商家的所有员工 ssh 2019.12.9
- public static function getAdminList($sjId)
- {
- return self::getAllByCondition(['sjId' => $sjId, 'delStatus' => 0, 'status' => 1], null, '*');
- }
- //获取商家所有员工的名字 ssh 2019.12.9
- public static function getAdminNameList($sjId)
- {
- $list = self::getAdminList($sjId);
- return !empty($list) ? array_column($list, 'name') : [];
- }
- //获取商家所有员工已经关联微信的userId
- public static function getShopAdminUserId($sjId)
- {
- $list = self::getAdminList($sjId);
- return !empty($list) ? array_column($list, 'userId') : [];
- }
- //验证权限
- public static function valid($admin, $sjId)
- {
- if (empty($admin)) {
- util::fail('员工信息无效');
- }
- $adminId = $admin['id'] ?? 0;
- $staff = ShopAdminClass::getByCondition(['sjId' => $sjId, 'adminId' => $adminId]);
- if (empty($staff)) {
- util::fail('您没有权限操作');
- }
- }
- //删除员工,需要考虑权限 ssh 2019.12.9
- public static function deleteAdmin($admin, $adminId)
- {
- $id = $admin['id'];
- if ($admin['super'] == 1) {
- util::fail('超级管理员不能删除');
- }
- if ($id == $adminId) {
- util::fail('不能删除自己');
- }
- self::updateById($id, ['delStatus' => 1]);
- }
- public static function getByMiniOpenId($miniOpenId)
- {
- return self::getByCondition(['miniOpenId' => $miniOpenId]);
- }
- public static function getByUnionId($unionId)
- {
- return self::getByCondition(['unionId' => $unionId]);
- }
- //创建以及更新用户 ssh 2020.2.7
- public static function replaceAdmin($wxInfo, $source)
- {
- if ($source == dict::getDict('userSourceGetId', 'app', 'id')) {
- $mobile = $wxInfo['mobile'] ?? '';
- $admin = \biz\admin\classes\AdminClass::getByCondition(['mobile' => $mobile]);
- if (empty($admin)) {
- $admin = self::generateAdmin($wxInfo);
- }
- } else {
- //非app来源
- $wxInfo = self::switchAdminInfo($wxInfo, $source);
- $unionId = isset($wxInfo['unionId']) && !empty($wxInfo['unionId']) ? $wxInfo['unionId'] : '';
- $admin = \biz\admin\classes\AdminClass::getByCondition(['unionId' => $unionId]);
- if (empty($admin)) {
- if (isset($wxInfo['mobile']) == false || empty($wxInfo['mobile'])) {
- util::fail('请通过手机号创建管理员哦');
- }
- $admin = self::generateAdmin($wxInfo);
- } else {
- $admin = self::updateAdmin($admin, $wxInfo);
- }
- }
- return $admin;
- }
- //更新员工信息 ssh 2020.5.30
- public static function updateAdmin($original, $adminData)
- {
- $data = [];
- $adminId = $original['id'];
- //替换掉微信不支持的图片
- $nickName = isset($adminData['nickName']) ? preg_replace('/[\x{10000}-\x{10FFFF}]/u', '', $adminData['nickName']) : '';
- if (!empty($nickName)) {
- $data['name'] = $nickName;
- }
- if (isset($adminData['openId']) && !empty($adminData['openId'])) {
- $openId = $adminData['openId'];
- $data['openId'] = $openId;
- }
- if (isset($adminData['miniOpenId']) && !empty($adminData['miniOpenId'])) {
- $data['miniOpenId'] = $adminData['miniOpenId'];
- }
- if (isset($adminData['ghsMiniOpenId']) && !empty($adminData['ghsMiniOpenId'])) {
- $data['ghsMiniOpenId'] = $adminData['ghsMiniOpenId'];
- }
- if (isset($adminData['currentShopId']) && !empty($adminData['currentShopId'])) {
- $data['currentShopId'] = $adminData['currentShopId'];
- }
- if (isset($adminData['currentGhsShopId']) && !empty($adminData['currentGhsShopId'])) {
- $data['currentGhsShopId'] = $adminData['currentGhsShopId'];
- }
- if (isset($adminData['unionId']) && !empty($adminData['unionId'])) {
- $data['unionId'] = $adminData['unionId'];
- }
- if (isset($adminData['sex'])) {
- $data['sex'] = $adminData['sex'];
- }
- if (isset($adminData['subscribe'])) {
- $data['subscribe'] = $adminData['subscribe'];
- }
- if (isset($adminData['subscribeTime'])) {
- $data['subscribeTime'] = $adminData['subscribeTime'];
- }
- if (isset($adminData['isFull'])) {
- $data['isFull'] = $adminData['isFull'];
- }
- if (isset($adminData['headImgUrl']) && !empty($adminData['headImgUrl'])) {
- $data['isFull'] = 1;
- }
- //更新头像
- $sjId = 0;
- if (isset($original['avatar']) == false || empty($original['avatar'])) {
- if (isset($adminData['headImgUrl']) && !empty($adminData['headImgUrl'])) {
- $imgUrl = $adminData['headImgUrl'];
- $name = ImageService::generateAvatar($sjId, $imgUrl);
- if (!empty($name)) {
- $data['avatar'] = $name;
- }
- }
- }
- self::updateById($adminId, $data);
- $admin = self::getById($adminId);
- return $admin;
- }
- public static function generateAdmin($adminData)
- {
- $time = time();
- //替换掉微信名称不支持的图片
- $nickName = isset($adminData['nickName']) ? preg_replace('/[\x{10000}-\x{10FFFF}]/u', '', $adminData['nickName']) : '';
- if (empty($nickName)) {
- $nickName = $adminData['name'] ?? '';
- }
- if (empty($nickName)) {
- if (isset($adminData['mobile']) && !empty($adminData['mobile'])) {
- $nickName = $adminData['mobile'];
- }
- }
- $mobile = isset($adminData['mobile']) ? $adminData['mobile'] : '';
- $randPwd = (string)stringUtil::charsShuffleLowerCase(3) . rand(111, 999);
- $password = password_hash($randPwd, PASSWORD_BCRYPT);
- $adminData['name'] = $nickName;
- $subscribe = isset($adminData['subscribe']) ? $adminData['subscribe'] : 0;
- $adminData['subscribe'] = $subscribe;
- $adminData['avatar'] = '';
- $adminData['miniOpenId'] = $adminData['miniOpenId'] ?? '';
- $adminData['password'] = $password;
- $adminData['payPassword'] = '';
- $adminData['mobile'] = $mobile;
- $adminData['addTime'] = $time;
- $adminData['source'] = isset($adminData['source']) ? $adminData['source'] : 0;
- $adminData['hasSubscribe'] = 0;
- $adminData['currentShopId'] = $adminData['currentShopId'] ?? 0;
- $adminData['openShop'] = $adminData['openShop'] ?? \biz\admin\classes\AdminClass::OPEN_SHOP_NO;
- $adminData['currentGhsShopId'] = $adminData['currentGhsShopId'] ?? 0;
- $adminData['openGhsShop'] = $adminData['openGhsShop'] ?? \biz\admin\classes\AdminClass::OPEN_SHOP_NO;
- $adminData['super'] = $adminData['super'] ?? \biz\admin\classes\AdminClass::SUPER_NO;
- $adminData['delStatus'] = 0;
- $adminData['openShop'] = $adminData['openShop'] ?? \biz\admin\classes\AdminClass::OPEN_SHOP_NO;
- if (isset($adminData['headImgUrl']) && !empty($adminData['headImgUrl'])) {
- $imgUrl = $adminData['headImgUrl'];
- $name = ImageService::generateAvatar(0, $imgUrl);
- if (!empty($name)) {
- $adminData['avatar'] = $name;
- }
- }
- $admin = self::add($adminData);
- // if (!empty($mobile)) {
- // sms::freeSend($mobile . ',' . $mobile . ',' . $randPwd, '您的管理帐号:{$var} 密码:{$var},开通后登录APP点右下角菜单 我的-修改密码 进行密码修改');
- // }
- return $admin;
- }
- //找出相同unionId的用户
- public static function getSameUnionId($unionId)
- {
- return self::getAllByCondition(['unionId' => $unionId], 'addTime desc', '*');
- }
- public static function getByOpenId($openId)
- {
- return self::getByCondition(['openId' => $openId]);
- }
- //将微信和小程序获取的用户信息转成可以保存的用户信息
- public static function switchAdminInfo($info, $source)
- {
- $openId = '';
- if (isset($info['openid']) && !empty($info['openid'])) {
- $openId = $info['openid'];
- unset($info['openId']);
- }
- if (isset($info['openId']) && !empty($info['openId'])) {
- $openId = $info['openId'];
- unset($info['openId']);
- }
- if (!empty($openId)) {
- $adminSource = UserClass::$userSourceId;
- switch ($source) {
- case $adminSource['mini']['name']:
- $info['miniOpenId'] = $openId;
- break;
- case $adminSource['official']['name']:
- $info['openId'] = $openId;
- break;
- default:
- }
- }
- if (isset($info['nickName'])) {
- $info['name'] = $info['nickName'];
- }
- if (isset($info['nickname'])) {
- $info['name'] = $info['nickname'];
- }
- if (isset($info['unionid'])) {
- $info['unionId'] = $info['unionid'];
- }
- if (isset($info['unionId'])) {
- $info['unionId'] = $info['unionId'];
- }
- if (isset($info['headimgurl'])) {
- $info['headImgUrl'] = $info['headimgurl'];
- }
- if (isset($info['avatarUrl'])) {
- $info['headImgUrl'] = $info['avatarUrl'];
- }
- if (isset($info['subscribe_time'])) {
- $info['subscribeTime'] = $info['subscribe_time'];
- }
- if (isset($info['subscribe'])) {
- $info['subscribe'] = $info['subscribe'];
- }
- return $info;
- }
- //取消关注 ssh 2020.4.19
- public static function unFocus($adminId)
- {
- self::updateById($adminId, ['subscribe' => 0, 'hasSubscribe' => 1]);
- }
- //切换门店 lqh 2021.1.31
- public static function toggleShop($admin, $newShop, $sjId, $originShopAdmin)
- {
- $right = \biz\shop\classes\ShopAdminClass::hasSwitchShopRight($originShopAdmin);
- if (empty($right)) {
- util::fail("没有权限");
- }
- $newShopId = $newShop->id ?? 0;
- $lsShopId = $newShop->lsShopId ?? 0;
- $sjShopList = ShopClass::getSjShopList($sjId);
- $sjShopIds = array_column($sjShopList, 'id');
- if (in_array($newShopId, $sjShopIds) == false) {
- util::fail('不是您的门店');
- }
- $shopAdmin = \biz\shop\classes\ShopAdminClass::changeShopAddRelate($originShopAdmin, $newShop);
- $admin->currentGhsShopId = $newShopId;
- $admin->currentShopId = $lsShopId;
- $admin->save();
- return $shopAdmin;
- }
- }
|