<?php // +---------------------------------------------------------------------- // | likeshop开源商城系统 // +---------------------------------------------------------------------- // | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力 // | gitee下载:https://gitee.com/likeshop_gitee // | github下载:https://github.com/likeshop-github // | 访问官网:https://www.likeshop.cn // | 访问社区:https://home.likeshop.cn // | 访问手册:http://doc.likeshop.cn // | 微信公众号:likeshop技术社区 // | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识 // | likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识 // | 禁止对系统程序代码以任何目的,任何形式的再发布 // | likeshop团队版权所有并拥有最终解释权 // +---------------------------------------------------------------------- // | author: likeshop.cn.team // +---------------------------------------------------------------------- namespace app\shop\logic; use app\common\basics\Logic; use app\common\model\Admin; use app\common\model\shop\ShopAdmin; use app\common\model\shop\ShopRole; class AdminLogic extends Logic { /** * Notes: 列表 * @param $get * @author 段誉(2021/4/10 11:05) * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public static function lists($get, $shop_id) { $roleModel = new ShopRole(); $adminModel = new ShopAdmin(); $role_column = $roleModel->getNameColumn(); $where[] = ['del', '=', 0]; $where[] = ['shop_id', '=', $shop_id]; if (isset($get['role_id']) && $get['role_id']) { $where[] = ['role_id', '=', $get['role_id']]; } if (isset($get['name']) && $get['name']) { $where[] = ['name', 'like', "%{$get['name']}%"]; } if (isset($get['account']) && $get['account']) { $where[] = ['account', 'like', "%{$get['account']}%"]; } $result = $adminModel->where($where) ->hidden(['password', 'salt']) ->paginate([ 'list_rows'=> $get['limit'], 'page'=> $get['page'] ]); foreach ($result as $k => $item) { if ($item['root'] == 1) { $role = '超级管理员'; } else { $role = $role_column[$item['role_id']] ?? ''; } $result[$k]['role'] = $role; } return ['count' => $result->total(), 'lists' => $result->getCollection()]; } /** * Notes: 添加管理员 * @param $post * @author 段誉(2021/4/10 16:14) * @return Admin|\think\Model */ public static function addAdmin($shop_id, $post) { $time = time(); $salt = substr(md5($time . $post['name']), 0, 4);//随机4位密码盐 $password = generatePassword($post['password'], $salt);//生成密码 return ShopAdmin::create([ 'name' => $post['name'], 'shop_id' => $shop_id, 'root' => 0, 'account' => $post['account'], 'password' => $password, 'salt' => $salt, 'role_id' => $post['role_id'], 'disable' => $post['disable'] ]); } /** * Notes: 更新管理员 * @param $post * @author 段誉(2021/4/10 17:11) * @return bool * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public static function editAdmin($shop_id, $post) { $admin = ShopAdmin::where('shop_id', $shop_id)->find($post['id']); if(empty($admin)) { self::$error = '未找到相关管理员'; return false; } $data = [ 'name' => $post['name'], 'account' => $post['account'], 'role_id' => $post['role_id'], 'update_time' => time(), 'disable' => $post['disable'] ]; //生成密码 if ($post['password']) { $data['password'] = generatePassword($post['password'], $admin['salt']); } //TODO 禁用管理员并强制下线 if (1 == $post['disable'] || $admin['role_id'] != $post['role_id']) { } return $admin->save($data); } /** * Notes: 删除 * @param $shop_id * @param $id * @author 段誉(2021/5/7 11:11) * @return ShopAdmin */ public static function delAdmin($shop_id, $id) { return ShopAdmin::update([ 'account' => time() . '_' . $id, 'del' => 1, 'shop_id' => $shop_id ], ['id' => $id]); } /** * Notes: 修改密码 * @param $password * @param $admin_id * @param $shop_id * @author 段誉(2021/5/7 11:15) * @return bool */ public static function updatePassword($password, $admin_id, $shop_id) { try { $admin = ShopAdmin::where(['id' => $admin_id, 'shop_id' => $shop_id])->find(); $admin->password = generatePassword($password, $admin['salt']); $admin->save(); return true; } catch (\Exception $e) { self::$error = $e->getMessage(); return false; } } }