AdminModel.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. /**
  3. * Author: luzheng.liu
  4. * Time: 2020/12/5 19:52
  5. */
  6. namespace app\api\model;
  7. use app\common\until\Until;
  8. use think\Db;
  9. use think\Model;
  10. class AdminModel extends BaseModel {
  11. protected $table = 'admin';
  12. public function getAdminList() {
  13. $countModel = $this->alias('a')
  14. ->join('role r','a.role_id = r.id')
  15. ->join('store_role sr','sr.admin_id = a.id','left')
  16. ->join('store st','st.id = sr.store_id','left')
  17. ->join('group_role gr','gr.admin_id = a.id','left')
  18. ->join('group g','g.id = gr.group_id','left')
  19. ->group('a.id');
  20. $selectModel = $this->alias('a')
  21. ->field('a.*,r.auth_name,GROUP_CONCAT(DISTINCT st.store_name) as storeName,
  22. GROUP_CONCAT(DISTINCT st.id) as storeIds,
  23. GROUP_CONCAT(DISTINCT g.id) as groupIds,
  24. GROUP_CONCAT(DISTINCT g.group_name) as groupName')
  25. ->join('role r','a.role_id = r.id')
  26. ->join('store_role sr','sr.admin_id = a.id','left')
  27. ->join('store st','st.id = sr.store_id','left')
  28. ->join('group_role gr','gr.admin_id = a.id','left')
  29. ->join('group g','g.id = gr.group_id','left')
  30. ->order('a.id desc')
  31. ->group('a.id');
  32. return $this->joinModelPageList($countModel, $selectModel);
  33. }
  34. public function saveStoreRole(string $storeIds, int $id,$isUpdate = false) {
  35. $storeIdArr = explode(',', $storeIds);
  36. $storeData = [];
  37. foreach ($storeIdArr as $storeId) {
  38. $storeData[] = [
  39. 'store_id' => (int)$storeId,
  40. 'admin_id' => $id
  41. ];
  42. }
  43. if ($isUpdate) {
  44. Db::table('store_role')->where([['admin_id','=',$id]])->delete(true);
  45. }
  46. Db::table('store_role')->insertAll($storeData);
  47. }
  48. public function saveGroupRole($groupIds, $id, $isUpdate = false) {
  49. $idArr = explode(',', $groupIds);
  50. $groupData = [];
  51. foreach ($idArr as $subId) {
  52. $groupData[] = [
  53. 'group_id' => (int)$subId,
  54. 'admin_id' => $id
  55. ];
  56. }
  57. if ($isUpdate) {
  58. Db::table('group_role')->where([['admin_id','=',$id]])->delete(true);
  59. }
  60. Db::table('group_role')->insertAll($groupData);
  61. }
  62. public function getAdminInfo() {
  63. $selectModel = $this->alias('a')
  64. ->field('a.id,a.account,a.name,a.mobile,a.last_login_time,a.status,a.role_id,a.admin_code,
  65. r.auth_name,
  66. GROUP_CONCAT(DISTINCT st.id) as storeIds,
  67. GROUP_CONCAT(DISTINCT g.id) as groupIds,
  68. GROUP_CONCAT(DISTINCT st.store_name) as storeName,
  69. GROUP_CONCAT(DISTINCT g.group_name) as groupName')
  70. ->join('role r', 'a.role_id = r.id')
  71. ->join('store_role sr', 'sr.admin_id = a.id', 'left')
  72. ->join('store st', 'st.id = sr.store_id', 'left')
  73. ->join('group_role gr', 'gr.admin_id = a.id', 'left')
  74. ->join('group g', 'g.id = gr.group_id', 'left')
  75. ->where($this->getWhere())
  76. ->group('a.id')
  77. ->find();
  78. return Until::modelToArray($selectModel);
  79. }
  80. public function getStoreList() {
  81. $selectModel = $this->alias('a')
  82. ->field('st.id,st.store_name')
  83. ->join('role r', 'a.role_id = r.id')
  84. ->join('store_role sr', 'sr.admin_id = a.id', 'left')
  85. ->join('store st', 'st.id = sr.store_id', 'left')
  86. ->where($this->getWhere())
  87. ->select();
  88. return Until::modelToArray($selectModel);
  89. }
  90. public function getMenuList($adminId) {
  91. $rs = $this->alias('a')
  92. ->field('a.role_id,r.unique_key')
  93. ->join('role r','r.id = a.role_id')
  94. ->where(['a.id' => $adminId])
  95. ->find();
  96. if ($rs['unique_key'] === 'admin') {
  97. $menuList = Db::table('menu')->select();
  98. return Until::modelToArray($menuList);
  99. }
  100. $menuList = Db::table('menu')->alias('m')
  101. ->join('menu_role mr', 'mr.menu_id = m.id')
  102. ->where(['mr.role_id' => $rs['role_id']])
  103. ->select();
  104. return Until::modelToArray($menuList);
  105. }
  106. }