123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- <?php
- /**
- * Author: luzheng.liu
- * Time: 2020/12/5 19:52
- */
- namespace app\api\model;
- use app\common\until\Until;
- use think\Db;
- use think\Model;
- class AdminModel extends BaseModel {
- protected $table = 'admin';
- public function getAdminList() {
- $countModel = $this->alias('a')
- ->join('role r','a.role_id = r.id')
- ->join('store_role sr','sr.admin_id = a.id','left')
- ->join('store st','st.id = sr.store_id','left')
- ->join('group_role gr','gr.admin_id = a.id','left')
- ->join('group g','g.id = gr.group_id','left')
- ->group('a.id');
- $selectModel = $this->alias('a')
- ->field('a.*,r.auth_name,GROUP_CONCAT(DISTINCT st.store_name) as storeName,
- GROUP_CONCAT(DISTINCT st.id) as storeIds,
- GROUP_CONCAT(DISTINCT g.id) as groupIds,
- GROUP_CONCAT(DISTINCT g.group_name) as groupName')
- ->join('role r','a.role_id = r.id')
- ->join('store_role sr','sr.admin_id = a.id','left')
- ->join('store st','st.id = sr.store_id','left')
- ->join('group_role gr','gr.admin_id = a.id','left')
- ->join('group g','g.id = gr.group_id','left')
- ->order('a.id desc')
- ->group('a.id');
- return $this->joinModelPageList($countModel, $selectModel);
- }
- public function saveStoreRole(string $storeIds, int $id,$isUpdate = false) {
- $storeIdArr = explode(',', $storeIds);
- $storeData = [];
- foreach ($storeIdArr as $storeId) {
- $storeData[] = [
- 'store_id' => (int)$storeId,
- 'admin_id' => $id
- ];
- }
- if ($isUpdate) {
- Db::table('store_role')->where([['admin_id','=',$id]])->delete(true);
- }
- Db::table('store_role')->insertAll($storeData);
- }
- public function saveGroupRole($groupIds, $id, $isUpdate = false) {
- $idArr = explode(',', $groupIds);
- $groupData = [];
- foreach ($idArr as $subId) {
- $groupData[] = [
- 'group_id' => (int)$subId,
- 'admin_id' => $id
- ];
- }
- if ($isUpdate) {
- Db::table('group_role')->where([['admin_id','=',$id]])->delete(true);
- }
- Db::table('group_role')->insertAll($groupData);
- }
- public function getAdminInfo() {
- $selectModel = $this->alias('a')
- ->field('a.id,a.account,a.name,a.mobile,a.last_login_time,a.status,a.role_id,a.admin_code,
- r.auth_name,
- GROUP_CONCAT(DISTINCT st.id) as storeIds,
- GROUP_CONCAT(DISTINCT g.id) as groupIds,
- GROUP_CONCAT(DISTINCT st.store_name) as storeName,
- GROUP_CONCAT(DISTINCT g.group_name) as groupName')
- ->join('role r', 'a.role_id = r.id')
- ->join('store_role sr', 'sr.admin_id = a.id', 'left')
- ->join('store st', 'st.id = sr.store_id', 'left')
- ->join('group_role gr', 'gr.admin_id = a.id', 'left')
- ->join('group g', 'g.id = gr.group_id', 'left')
- ->where($this->getWhere())
- ->group('a.id')
- ->find();
- return Until::modelToArray($selectModel);
- }
- public function getStoreList() {
- $selectModel = $this->alias('a')
- ->field('st.id,st.store_name')
- ->join('role r', 'a.role_id = r.id')
- ->join('store_role sr', 'sr.admin_id = a.id', 'left')
- ->join('store st', 'st.id = sr.store_id', 'left')
- ->where($this->getWhere())
- ->select();
- return Until::modelToArray($selectModel);
- }
- public function getMenuList($adminId) {
- $rs = $this->alias('a')
- ->field('a.role_id,r.unique_key')
- ->join('role r','r.id = a.role_id')
- ->where(['a.id' => $adminId])
- ->find();
-
- if ($rs['unique_key'] === 'admin') {
- $menuList = Db::table('menu')->select();
- return Until::modelToArray($menuList);
- }
- $menuList = Db::table('menu')->alias('m')
- ->join('menu_role mr', 'mr.menu_id = m.id')
- ->where(['mr.role_id' => $rs['role_id']])
- ->select();
- return Until::modelToArray($menuList);
- }
- }
|