| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656 |
- <?php
- namespace app\admin\model\store;
- use app\common\model\store\Access as AccessModel;
- /**
- * 商家用户权限模型
- * Class Access
- * @package app\admin\model\store
- */
- class Access extends AccessModel
- {
- /**
- * 获取权限列表
- * @throws \think\Exception
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function getList()
- {
- $all = static::getAll();
- return $this->formatTreeData($all);
- }
- /**
- * 新增记录
- * @param $data
- * @return false|int
- */
- public function add($data)
- {
- $data['wxapp_id'] = self::$wxapp_id;
- return $this->allowField(true)->save($data);
- }
- /**
- * 更新记录
- * @param $data
- * @return bool
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function edit($data)
- {
- // 判断上级角色是否为当前子级
- if ($data['parent_id'] > 0) {
- // 获取所有上级id集
- $parentIds = $this->getTopAccessIds($data['parent_id']);
- if (in_array($this['access_id'], $parentIds)) {
- $this->error = '上级权限不允许设置为当前子权限';
- return false;
- }
- }
- return $this->allowField(true)->save($data) !== false;
- }
- /**
- * 删除权限
- * @return bool|int
- * @throws \think\exception\DbException
- */
- public function remove()
- {
- // 判断是否存在下级权限
- if (self::detail(['parent_id' => $this['access_id']])) {
- $this->error = '当前权限下存在子权限,请先删除';
- return false;
- }
- return $this->delete();
- }
- /**
- * 获取所有上级id集
- * @param $access_id
- * @param null $all
- * @return array
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- private function getTopAccessIds($access_id, &$all = null)
- {
- static $ids = [];
- is_null($all) && $all = $this->getAll();
- foreach ($all as $item) {
- if ($item['access_id'] == $access_id && $item['parent_id'] > 0) {
- $ids[] = $item['parent_id'];
- $this->getTopAccessIds($item['parent_id'], $all);
- }
- }
- return $ids;
- }
- /**
- * 获取权限列表
- * @param $all
- * @param int $parent_id
- * @param int $deep
- * @return array
- */
- private function formatTreeData(&$all, $parent_id = 0, $deep = 1)
- {
- static $tempTreeArr = [];
- foreach ($all as $key => $val) {
- if ($val['parent_id'] == $parent_id) {
- // 记录深度
- $val['deep'] = $deep;
- // 根据角色深度处理名称前缀
- $val['name_h1'] = $this->htmlPrefix($deep) . $val['name'];
- $tempTreeArr[] = $val;
- $this->formatTreeData($all, $val['access_id'], $deep + 1);
- }
- }
- return $tempTreeArr;
- }
- private function htmlPrefix($deep)
- {
- // 根据角色深度处理名称前缀
- $prefix = '';
- if ($deep > 1) {
- for ($i = 1; $i <= $deep - 1; $i++) {
- $prefix .= ' ├ ';
- }
- $prefix .= ' ';
- }
- return $prefix;
- }
- /**
- * 新增默认权限
- */
- public function insertDefault()
- {
- $defaultData = $this->defaultData();
- $this->buildData($defaultData);
- }
- /**
- * 生成并写入默认数据
- * @param $defaultData
- * @param int $parent_id
- */
- private function buildData(&$defaultData, $parent_id = 0)
- {
- foreach ($defaultData as $key => $item) {
- // 保存数据
- $model = new static;
- $model->save([
- 'name' => $item['name'],
- 'url' => $item['url'],
- 'parent_id' => $parent_id,
- 'sort' => 100,
- ]);
- if (isset($item['subset']) && !empty($item['subset'])) {
- $this->buildData($item['subset'], $model['access_id']);
- }
- }
- }
- /**
- * 默认权限数据
- * @return array
- */
- private function defaultData()
- {
- return [
- [
- 'name' => '首页',
- 'url' => 'index/index'
- ],
- [
- 'name' => '管理员',
- 'url' => 'store',
- 'subset' => [
- [
- 'name' => '管理员管理',
- 'url' => 'store.user',
- 'subset' => [
- [
- 'name' => '管理员列表',
- 'url' => 'store.user/index'
- ],
- [
- 'name' => '添加管理员',
- 'url' => 'store.user/add'
- ],
- [
- 'name' => '编辑管理员',
- 'url' => 'store.user/edit'
- ],
- [
- 'name' => '删除管理员',
- 'url' => 'store.user/delete'
- ],
- ]
- ],
- [
- 'name' => '角色管理',
- 'url' => 'store.role',
- 'subset' => [
- [
- 'name' => '角色列表',
- 'url' => 'store.role/index'
- ],
- [
- 'name' => '添加角色',
- 'url' => 'store.role/add'
- ],
- [
- 'name' => '编辑角色',
- 'url' => 'store.role/edit'
- ],
- [
- 'name' => '删除角色',
- 'url' => 'store.role/delete'
- ],
- ]
- ],
- [
- 'name' => '权限管理',
- 'url' => 'store.access',
- 'subset' => [
- [
- 'name' => '权限列表',
- 'url' => 'store.access/index'
- ],
- [
- 'name' => '添加权限',
- 'url' => 'store.access/add'
- ],
- [
- 'name' => '编辑权限',
- 'url' => 'store.access/edit'
- ],
- [
- 'name' => '删除权限',
- 'url' => 'store.access/delete'
- ],
- ]
- ],
- ]
- ],
- [
- 'name' => '商品管理',
- 'url' => 'goods',
- 'subset' => [
- [
- 'name' => '商品管理',
- 'url' => 'goods',
- 'subset' => [
- [
- 'name' => '商品列表',
- 'url' => 'goods/index',
- ],
- [
- 'name' => '添加商品',
- 'url' => 'goods/add',
- ],
- [
- 'name' => '编辑商品',
- 'url' => 'goods/edit',
- ],
- [
- 'name' => '复制商品',
- 'url' => 'goods/copy',
- ],
- [
- 'name' => '删除商品',
- 'url' => 'goods/delete',
- ],
- [
- 'name' => '商品上下架',
- 'url' => 'goods/state',
- ],
- ]
- ],
- [
- 'name' => '商品分类',
- 'url' => 'goods.category',
- 'subset' => [
- [
- 'name' => '分类列表',
- 'url' => 'goods.category/index',
- ],
- [
- 'name' => '添加分类',
- 'url' => 'goods.category/add',
- ],
- [
- 'name' => '编辑分类',
- 'url' => 'goods.category/edit',
- ],
- [
- 'name' => '删除分类',
- 'url' => 'goods.category/delete',
- ],
- ],
- ],
- [
- 'name' => '商品评价',
- 'url' => 'goods.comment',
- 'subset' => [
- [
- 'name' => '评价列表',
- 'url' => 'goods.comment/index',
- ],
- [
- 'name' => '评价详情',
- 'url' => 'goods.comment/detail',
- ],
- [
- 'name' => '删除评价',
- 'url' => 'goods.comment/delete',
- ],
- ],
- ],
- ]
- ],
- [
- 'name' => '订单管理',
- 'url' => 'order',
- 'subset' => [
- [
- 'name' => '订单列表',
- 'url' => '',
- 'subset' => [
- [
- 'name' => '待发货',
- 'url' => 'order/delivery_list'
- ],
- [
- 'name' => '待收货',
- 'url' => 'order/receipt_list'
- ],
- [
- 'name' => '待付款',
- 'url' => 'order/pay_list'
- ],
- [
- 'name' => '已完成',
- 'url' => 'order/complete_list'
- ],
- [
- 'name' => '已取消',
- 'url' => 'order/cancel_list'
- ],
- [
- 'name' => '全部订单',
- 'url' => 'order/all_list',
- ],
- ]
- ],
- [
- 'name' => '订单详情',
- 'url' => '',
- 'subset' => [
- [
- 'name' => '详情信息',
- 'url' => 'order/detail',
- ],
- [
- 'name' => '确认发货',
- 'url' => 'order/delivery',
- ],
- [
- 'name' => '修改订单价格',
- 'url' => 'order/updateprice',
- ],
- ]
- ],
- [
- 'name' => '订单导出',
- 'url' => 'order.operate/export',
- ],
- [
- 'name' => '批量发货',
- 'url' => 'order.operate/batchdelivery',
- ],
- ]
- ],
- [
- 'name' => '用户管理',
- 'url' => 'user',
- 'subset' => [
- [
- 'name' => '用户列表',
- 'url' => 'user/index'
- ],
- [
- 'name' => '删除用户',
- 'url' => 'user/delete'
- ],
- ]
- ],
- [
- 'name' => '营销设置',
- 'url' => 'market',
- 'subset' => [
- [
- 'name' => '优惠券',
- 'url' => 'coupon',
- 'subset' => [
- [
- 'name' => '优惠券列表',
- 'url' => 'market.coupon/index',
- ],
- [
- 'name' => '新增优惠券',
- 'url' => 'market.coupon/add',
- ],
- [
- 'name' => '编辑优惠券',
- 'url' => 'market.coupon/edit',
- ],
- [
- 'name' => '删除优惠券',
- 'url' => 'market.coupon/delete',
- ],
- [
- 'name' => '领取记录',
- 'url' => 'market.coupon/receive',
- ]
- ]
- ]
- ]
- ],
- [
- 'name' => '小程序',
- 'url' => 'wxapp',
- 'subset' => [
- [
- 'name' => '小程序设置',
- 'url' => 'wxapp/setting',
- ],
- [
- 'name' => '页面管理',
- 'url' => 'wxapp.page',
- 'subset' => [
- [
- 'name' => '页面设计',
- 'url' => '',
- 'subset' => [
- [
- 'name' => '页面列表',
- 'url' => 'wxapp.page/index',
- ],
- [
- 'name' => '新增页面',
- 'url' => 'wxapp.page/add',
- ],
- [
- 'name' => '编辑页面',
- 'url' => 'wxapp.page/edit',
- ],
- [
- 'name' => '设为首页',
- 'url' => 'wxapp.page/sethome',
- ],
- ]
- ],
- [
- 'name' => '分类页模板',
- 'url' => 'wxapp.page/category',
- ],
- [
- 'name' => '页面链接',
- 'url' => 'wxapp.page/links',
- ],
- ]
- ],
- [
- 'name' => '帮助中心',
- 'url' => 'wxapp.help',
- 'subset' => [
- [
- 'name' => '帮助列表',
- 'url' => 'wxapp.help/index',
- ],
- [
- 'name' => '新增帮助',
- 'url' => 'wxapp.help/add',
- ],
- [
- 'name' => '编辑帮助',
- 'url' => 'wxapp.help/edit',
- ],
- [
- 'name' => '删除帮助',
- 'url' => 'wxapp.help/delete',
- ],
- ]
- ],
- ]
- ],
- [
- 'name' => '应用中心',
- 'url' => 'apps',
- 'subset' => [
- [
- 'name' => '分销中心',
- 'url' => 'apps.dealer',
- 'subset' => [
- [
- 'name' => '入驻申请',
- 'url' => 'apps.dealer.apply',
- 'subset' => [
- [
- 'name' => '申请列表',
- 'url' => 'apps.dealer.apply/index'
- ],
- [
- 'name' => '分销商审核',
- 'url' => 'apps.dealer.apply/submit'
- ]
- ]
- ],
- [
- 'name' => '分销商用户',
- 'url' => 'apps.dealer.user',
- 'subset' => [
- [
- 'name' => '分销商列表',
- 'url' => 'apps.dealer.user/index',
- ],
- [
- 'name' => '删除分销商',
- 'url' => 'apps.dealer.user/delete'
- ],
- [
- 'name' => '分销商二维码',
- 'url' => 'apps.dealer.user/qrcode'
- ]
- ]
- ],
- [
- 'name' => '分销订单',
- 'url' => 'apps.dealer.order/index',
- ],
- [
- 'name' => '提现申请',
- 'url' => 'apps.dealer.withdraw',
- 'subset' => [
- [
- 'name' => '申请列表',
- 'url' => 'apps.dealer.withdraw/index',
- ],
- [
- 'name' => '提现审核',
- 'url' => 'apps.dealer.withdraw/submit'
- ],
- [
- 'name' => '确认打款',
- 'url' => 'apps.dealer.withdraw/money'
- ]
- ]
- ],
- [
- 'name' => '分销设置',
- 'url' => 'apps.dealer.setting/index',
- ],
- [
- 'name' => '分销海报',
- 'url' => 'apps.dealer.setting/qrcode',
- ],
- ]
- ],
- ]
- ],
- [
- 'name' => '设置',
- 'url' => 'setting',
- 'subset' => [
- [
- 'name' => '商城设置',
- 'url' => 'setting/store',
- ],
- [
- 'name' => '交易设置',
- 'url' => 'setting/trade',
- ],
- [
- 'name' => '配送设置',
- 'url' => 'setting.delivery',
- 'subset' => [
- [
- 'name' => '运费模板列表',
- 'url' => 'setting.delivery/index'
- ],
- [
- 'name' => '新增运费模板',
- 'url' => 'setting.delivery/add'
- ],
- [
- 'name' => '编辑运费模板',
- 'url' => 'setting.delivery/edit'
- ],
- [
- 'name' => '删除运费模板',
- 'url' => 'setting.delivery/delete'
- ],
- ]
- ],
- [
- 'name' => '物流公司',
- 'url' => 'setting.express',
- 'subset' => [
- [
- 'name' => '物流公司列表',
- 'url' => 'setting.express/index'
- ],
- [
- 'name' => '新增物流公司',
- 'url' => 'setting.express/add'
- ],
- [
- 'name' => '编辑物流公司',
- 'url' => 'setting.express/edit'
- ],
- [
- 'name' => '删除物流公司',
- 'url' => 'setting.express/delete'
- ],
- ]
- ],
- [
- 'name' => '短信通知',
- 'url' => 'setting/sms',
- ],
- [
- 'name' => '模板消息',
- 'url' => 'setting/tplmsg',
- ],
- [
- 'name' => '上传设置',
- 'url' => 'setting/storage',
- ],
- [
- 'name' => '其他',
- 'url' => '',
- 'subset' => [
- [
- 'name' => '清理缓存',
- 'url' => 'setting.cache/clear',
- ],
- ]
- ]
- ]
- ],
- ];
- }
- }
|